# US 10,320,921 B2 · Specializing virtual network device processing to bypass forwarding elements for high packet rate applications

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

- Number: US 10,320,921 B2
- Document ID: US10320921B2
- Status: Granted
- Kind: B2
- Application number: 14/574,336
- Filed: 2014-12-17
- Published: 2016-06-23
- Granted: 2019-06-11
- Earliest claimed: 2014-12-17
- Assignees: VMware, Inc.
- Applicants: VMware, Inc.
- Inventors: Lenin Singaravelu; Jin Heo; Jui-Ting Weng; Ayyappan Veeraiyan; Yong Wang
- Web page: https://patentgrep.com/patent/US10320921B2

## CPC

- H04L 49/70: {Virtual switches}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- G06F 9/45533: {Hypervisors; Virtual machine monitors}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 45/38: {Flow based routing}
- H04L 45/745: Address table lookup; Address filtering
- H04L 47/2483: involving identification of individual flows
- H04L 49/354: for supporting virtual local area networks [VLAN]
- H04L 49/9068: {in the network interface card}
- H04L 69/22: Parsing or analysis of headers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of optimizing network processing in a system comprising a physical host and a set of physical network interface controllers (PNICs) is provided. The physical host includes a forwarding element. The method includes determining that a set of conditions is satisfied to bypass the forwarding element for exchanging packets between a particular data compute node (DCN) and a particular PNIC. The set of conditions includes the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element. The method exchanges packets between the particular DCN and the particular PNIC bypassing the forwarding element. The method determines that at least one condition in said set of conditions is not satisfied. The method utilizes the forwarding element to exchange packets between the particular DCN and the particular PNIC.

## Claims

### Claim 1

A method of optimizing network processing in a system comprising a physical host and a set of physical network interface controllers (PNICs), the physical host comprising a forwarding element, the method comprising:
determining that a set of conditions is satisfied to bypass the forwarding element for exchanging packets between a particular data compute node (DCN) and a particular PNIC, the set of conditions comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element;
exchanging packets between the particular DCN and the particular PNIC bypassing the forwarding element when the set of conditions are satisfied;
determining that at least one condition in said set of conditions is not satisfied, the at least one condition comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element; and
utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC when the at least one condition in said set of conditions is not satisfied.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining that a set of conditions are satisfied further comprises determining that port mirroring is not enabled on the forwarding element.

### Claim 3 (depends on 1)

The method of claim 1, wherein the forwarding element is one of the following: a physical forwarding element or a logical forwarding element.

### Claim 4 (depends on 1)

The method of claim 1, wherein the set of conditions consists of the at least one condition.

### Claim 5 (depends on 1)

The method of claim 1, wherein a DCN is a virtual machine (VM).

### Claim 6 (depends on 1)

The method of claim 1, wherein the physical host comprises virtualization software, wherein bypassing the forwarding element comprises:
setting a flag to indicate the set of conditions to bypass the forwarding element is satisfied; and
bypassing executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 7 (depends on 6)

The method of claim 6, wherein utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises:
setting the flag to indicate the at least one condition in the set of conditions to bypass the forwarding element is not satisfied; and
executing the executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 8 (depends on 1)

The method of claim 1, wherein the PNIC is a single root I/O virtualization (SR-IOV) enabled PNIC comprising a plurality of virtual functions (VFs), wherein utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises connecting the particular DCN to a VF of the SR-IOV enabled PNIC through a virtual network interface (VNIC), wherein bypassing the forwarding element comprises connecting the particular DCN to the VF through the VNIC without utilizing the forwarding element.

### Claim 9

A non-transitory machine readable medium storing a program for optimizing network processing in a system comprising a physical host and a set of physical network interface controllers (PNICs), the physical host comprising a forwarding element, the program executable by at least one processing unit, the program comprising sets of instructions for:
determining that a set of conditions is satisfied to bypass the forwarding element for exchanging packets between a particular data compute node (DCN) and a particular PNIC, the set of conditions comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element;
exchanging packets between the particular DCN and the particular PNIC bypassing the forwarding element when the set of conditions are satisfied;
determining that at least one condition in said set of conditions is not satisfied, the at least one condition comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element; and
utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC when the at least one condition in said set of conditions is not satisfied.

### Claim 10 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the set of instructions for determining that a set of conditions are satisfied further comprises a set of instructions for determining that port mirroring is not enabled on the forwarding element.

### Claim 11 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the forwarding element is a physical forwarding element.

### Claim 12 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the forwarding element is a logical forwarding element.

### Claim 13 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein a DCN is a virtual machine (VM).

### Claim 14 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the physical host comprises virtualization software, wherein the set of instructions for bypassing the forwarding element comprises sets of instructions for:
setting a flag to indicate the set of conditions to bypass the forwarding element is satisfied; and
bypassing executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 15 (depends on 14)

The non-transitory machine readable of claim 14, wherein the set of instructions for utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises sets of instructions for:
setting the flag to indicate the at least one condition in the set of conditions to bypass the forwarding element is not satisfied; and
executing the executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 16 (depends on 9)

The non-transitory machine readable of claim 9, wherein the PNIC is a single root I/O virtualization (SR-IOV) enabled PNIC comprising a plurality of virtual functions (VFs), wherein utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises connecting the particular DCN to a VF of the SR-IOV enabled PNIC through a virtual network interface (VNIC), wherein bypassing the forwarding element comprises connecting the particular DCN to the VF through the VNIC without utilizing the forwarding element.

### Claim 17

A physical computing device comprising:
a set of processing units;
a forwarding element, the forwarding element for exchanging packets between a set of physical network interface controllers (PNICs) and a set of data compute nodes (DCNs); and
a non-transitory machine readable medium storing a program for execution by the set of processing units, the program storing set of instructions for:
determining that a set of conditions is satisfied to bypass the forwarding element for exchanging packets between a particular DCN and a particular PNIC, the set of conditions comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element;
exchanging packets between the particular DCN and the particular PNIC bypassing the forwarding element when the set of conditions are satisfied;
determining that at least one condition in said set of conditions is not satisfied, the at least one condition comprising the particular DCN being the only DCN connected to the forwarding element and the particular PNIC being the only PNIC connected to the forwarding element; and
utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC when the at least one condition in said set of conditions is not satisfied.

### Claim 18 (depends on 17)

The physical computing device of claim 17, wherein the set of instructions for determining that a set of conditions are satisfied further comprises a set of instructions for determining that port mirroring is not enabled on the forwarding element.

### Claim 19 (depends on 17)

The physical computing device of claim 17, wherein the forwarding element is a physical forwarding element.

### Claim 20 (depends on 17)

The physical computing device of claim 17, wherein the forwarding element is a logical forwarding element.

### Claim 21 (depends on 17)

The physical computing device of claim 17, wherein a DCN is a virtual machine (VM).

### Claim 22 (depends on 17)

The physical computing device of claim 17, wherein the physical host comprises virtualization software, wherein the set of instructions for bypassing the forwarding element comprises sets of instructions for:
setting a flag to indicate the set of conditions to bypass the forwarding element is satisfied; and
bypassing executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 23 (depends on 22)

The physical computing device of claim 22, wherein the set of instructions for utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises sets of instructions for:
setting the flag to indicate the at least one condition in the set of conditions to bypass the forwarding element is not satisfied; and
executing the executable code in the virtualization software that performs the forwarding element functionalities for exchanging packets between the particular DCN and the particular PNIC.

### Claim 24 (depends on 17)

The physical computing device of claim 17, wherein the PNIC is a single root I/O virtualization (SR-IOV) enabled PNIC comprising a plurality of virtual functions (VFs), wherein utilizing the forwarding element to exchange packets between the particular DCN and the particular PNIC comprises connecting the particular DCN to a VF of the SR-IOV enabled PNIC through a virtual network interface (VNIC), wherein bypassing the forwarding element comprises connecting the particular DCN to the VF through the VNIC without utilizing the forwarding element.
