# US 12,192,116 B2 · Configuring pNIC to perform flow processing offload using virtual port identifiers

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,192,116 B2
- Document ID: US12192116B2
- Status: Granted
- Kind: B2
- Application number: 18/235,860
- Filed: 2023-08-20
- Published: 2023-12-07
- Granted: 2025-01-07
- Earliest claimed: 2020-09-28
- Assignees: VMware, Inc.
- Applicants: VMware LLC
- Inventors: Boon S. Ang; Wenyi Jiang; Guolin Yang; Jin Heo; Srividya Murali
- Web page: https://patentgrep.com/patent/US12192116B2

## CPC

- G06F 15/1735: {Network adapters, e.g. SCI, Myrinet (protocol engines H04L69/12)}
- H04L 45/38: {Flow based routing}
- H04L 45/64: using an overlay routing layer
- H04L 45/74: Address processing for routing
- H04L 45/745: Address table lookup; Address filtering
- H04L 47/125: by balancing the load, e.g. traffic engineering
- H04L 47/781: {Centralised allocation of resources}
- H04L 47/80: Actions related to the user profile or the type of traffic
- H04L 49/109: Integrated on microchip, e.g. switch-on-chip
- H04L 49/3009: {Header conversion, routing tables or routing tags}
- H04L 49/70: {Virtual switches}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Some embodiments of the invention provide a method for configuring a physical network card or physical network controller (pNIC) to provide flow processing offload (FPO) for a host computer connected to the pNIC. The host computers host a set of compute nodes in a virtual network. The set of compute nodes are each associated with a set of interfaces that are each assigned a locally-unique virtual port identifier (VPID) by a flow processing and action generator. The pNIC includes a set of interfaces that are assigned physical port identifiers (PPIDs) by the pNIC. The method includes providing the pNIC with a set of mappings between VPIDs and PPIDs. The method also includes sending updates to the mappings as compute nodes migrate, connect to different interfaces of the pNIC, are assigned different VPIDs, etc. In some embodiments, the flow processing and action generator executes on processing units of the host computer, while in other embodiments, the flow processing and action generator executes on a set of processing units of a pNIC that includes flow processing hardware and a set of programmable processing units.

## Claims

### Claim 1

A physical network interface card (PNIC) of a host computer executing a plurality of machines, the PNIC comprising:
a plurality of interfaces;
a flow processing offload (FPO) comprising:
a mapping table storing a plurality of mappings with each mapping associating a virtual port identifier (VPID) of an interface of one machine executing on the host computer with a physical port identifier (PPID) of an interface of the PNIC;
a flow entry table storing a plurality of flow entries, each flow entry in the plurality of flow entries associating a set of flow attributes with a VPID; and
the FPO, for a received data message, (1) identifying a flow entry that specifies a VPID as a destination of the data message, and (2) using the identified VPID to identify a mapping in the mapping table that associates the identified VPID to a PPID of the PNIC interface that should be used as an egress interface of the PNIC for sending out the received data message.

### Claim 2 (depends on 1)

The PNIC of claim 1, wherein the plurality of mappings between VPIDs and PPIDs is received at the PNIC from a flow processing and action generator that generates the mappings based on configuration data regarding VPIDs and PPIDs received by the flow processing and action generator.

### Claim 3 (depends on 1)

The PNIC of claim 1, wherein the flow entries are received from the flow processing and action generator that processes a first data message in each data message flow to identifies a destination of the first data message, generates a flow entry based on the identified destination, and provides the flow entry for storing in the flow table for the data message flow for use for subsequent data messages of the data message flow.

### Claim 4 (depends on 3)

The PNIC of claim 3, further comprising at least one processing unit for executing the flow processing and action generator.

### Claim 5 (depends on 3)

The PNIC of claim 3, wherein the flow processing and action generator executes on one of said machines that executes on the host computer.

### Claim 6 (depends on 1)

The PNIC of claim 1, wherein the mapping table is stored in a content addressable memory unit.

### Claim 7 (depends on 1)

The PNIC of claim 1, wherein the flow entry is stored in a content addressable memory unit.

### Claim 8 (depends on 1)

The PNIC of claim 1, wherein at least one PNIC interface is a physical function (PF) of a bus that is used to connect the PNIC to the host computer.

### Claim 9 (depends on 8)

The PNIC of claim 8, wherein the PF connects to a software switch executing on the host computer.

### Claim 10 (depends on 1)

The PNIC of claim 1, wherein at least one PNIC interface is a virtual function (VF) associated with a bus that is used to connect the PNIC to the host computer.

### Claim 11 (depends on 10)

The PNIC of claim 10, wherein the VF communicates with an interface of one machine.

### Claim 12 (depends on 11)

The PNIC of claim 11, wherein the VF communicates with the machine interface through a VF driver that executes on the host computer.

### Claim 13

A method for processing flows on a host computer comprising a physical network interface card (PNIC) and a plurality of interfaces, and executing a plurality of machines, the method comprising:
storing, in a mapping table of a flow processing offload (FPO) of the PNIC, a plurality of mappings with each mapping associating a virtual port identifier (VPID) of an interface of one machine executing on the host computer with a physical port identifier (PPID) of an interface of the PNIC;
storing, in a flow entry table of the FPO, storing a plurality of flow entries, each flow entry in the plurality of flow entries associating a set of flow attributes with a VPID; and
configuring the FPO, for a received data message, (1) to identify a flow entry that specifies a VPID as a destination of the data message, and (2) to use the identified VPID to identify a mapping in the mapping table that associates the identified VPID to a PPID of the PNIC interface that should be used as an egress interface of the PNIC for sending out the received data message.

### Claim 14 (depends on 13)

The method of claim 13 further comprising providing the plurality of mappings from a flow processing and action generator that generates the mappings based on configuration data regarding VPIDs and PPIDs received by the flow processing and action generator.

### Claim 15 (depends on 13)

The method of claim 13 further comprising providing the flow entries from the flow processing and action generator that processes a first data message in each data message flow to identifies a destination of the first data message, generates a flow entry based on the identified destination, and provides the flow entry for storing in the flow table for the data message flow for use for subsequent data messages of the data message flow.

### Claim 16 (depends on 15)

The method of claim 15, wherein at least one processing unit of the PNIC executes the flow processing and action generator.

### Claim 17 (depends on 15)

The method of claim 15, wherein at least one processing unit of the host computer executes the flow processing and action generator.

### Claim 18 (depends on 13)

The method of claim 13, wherein the mapping table is stored in a content addressable memory unit.

### Claim 19 (depends on 13)

The method of claim 13, wherein the flow entry is stored in a content addressable memory unit.

### Claim 20 (depends on 13)

The method of claim 13, wherein at least one PNIC interface is a physical function (PF) of a bus that is used to connect the PNIC to the host computer.
