IP Library Granted Patent US 10,652,129
Granted Patent B2
US 10,652,129 · App. 15/640,281 · Granted May 12, 2020

Specializing virtual network device processing to avoid interrupt processing for high packet rate applications

Inventors: Lenin Singaravelu (Sunnyvale, CA); Jin Heo (Mountain View, CA); Jui-Ting Weng (Sunnyvale, CA); Ayyappan Veeraiyan (Cupertino, CA); Yong Wang (Sunnyvale, CA)
Assignee: VMware, Inc.
H04L43/16G06F9/45558H04L43/0894H04L43/103G06F2009/45595H04L47/28
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,652,129
App. No.
15/640,281
Granted
May 12, 2020
Kind
B2
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 (65)

1. A method of high packet rate network processing in a system comprising a physical host and a set of physical network interface controllers (PNICs), the physical host hosting a set of data compute nodes (DCNs) for each of a set of tenants, each DCN comprising a virtual network interface controller (VNIC) for communicating with one or more PNICs to exchange packets, the method comprising:

determining whether a predetermined number of packets have been received at a VNIC from a particular DNC;

when the predetermined number of packets have been received at the VNIC from the particular DNC, generate an interrupt to virtualization software; and

when the predetermined number of packets have not been received at the VNIC from the particular DNC:

determining a rate of packets received from the particular DCN at the VNIC; and

when the rate of packets exceeds the predetermined threshold, performing polling to determine the availability of packets received at the VNIC from the particular DCN; and

when the rate of packets does not exceed the predetermined threshold, utilizing interrupts to determine the availability of packets received at the VNIC from the particular DCN.

2. The method of claim 1 , wherein the physical host comprises virtualization software, wherein performing polling to determine the availability of packets received at the VNIC from the particular DCN comprises:

determining, by the VNIC, that a packet is received from the particular DCN;

storing the packet in a buffer for the virtualization software to pick up; and

updating a number of packets in the buffer.

3. The method of claim 2 , wherein performing polling further comprises:

determining, by the virtualization software, that the VNIC has to be polled; and

determining whether the VNIC has stored any packets in the buffer.

4. The method of claim 3 , further comprising:

picking up packets from the buffer by the virtualization software; and

setting the number of packets in the buffer to zero.

5. The method of claim 4 , further comprising starting a timer by the virtualization software to perform a next poll to determine the availability of packets received from the particular DCN at the VNIC.

6. The method of claim 1 , wherein the physical host comprises the virtualization software.

7. The method of claim 6 , wherein the method further comprises generating the interrupt to the virtualization software to inform the virtualization software that packets have arrived from the particular DCN when a predetermined number of packets have arrived at the VNIC from the particular DCN.

8. A non-transitory machine-readable medium storing a program for of high packet rate network processing in a system comprising a physical host and a set of physical network interface controllers (PNICs), the physical host hosting a set of data compute nodes (DCNs) for each of a set of tenants, each DCN comprising a virtual network interface controller (VNIC) for communicating with one or more PNICs to exchange packets, the program executable by at least one processing unit, the program comprising sets of instructions for:

determining whether a predetermined number of packets have been received at a VNIC from a particular DNC;

when the predetermined number of packets have been received at the VNIC from the particular DNC, generate an interrupt to virtualization software; and

when the predetermined number of packets have not been received at the VNIC from the particular DNC:

determining a rate of packets received from the particular DCN at the VNIC; and

when the rate of packets exceeds the predetermined threshold, performing polling to determine the availability of packets received at the VNIC from the particular DCN; and

when the rate of packets does not exceed the predetermined threshold, utilizing interrupts to determine the availability of packets received at the VNIC from the particular DCN.

9. The non-transitory machine-readable medium of claim 8 , wherein the physical host comprises virtualization software, and wherein the sets of instructions for performing polling to determine the availability of packets received at the VNIC from the particular DCN comprises sets of instructions for:

determining, by the VNIC, that a packet is received from the particular DCN;

storing the packet in a buffer for the virtualization software to pick up; and

updating a number of packets in the buffer.

10. The non-transitory machine-readable medium of claim 9 , wherein the sets of instructions for performing polling further comprises sets of instructions for:

determining, by the virtualization software, that the VNIC has to be polled; and

determining whether the VNIC has stored any packets in the buffer.

11. The non-transitory machine-readable medium of claim 10 , wherein the program further comprises sets of instructions for:

picking up packets from the buffer by the virtualization software; and

setting the number of packets in the buffer to zero.

12. The non-transitory machine-readable medium of claim 11 , wherein the program further comprises sets of instructions for starting a timer by the virtualization software to perform a next poll to determine the availability of packets received from the particular DCN at the VNIC.

13. The non-transitory machine-readable medium of claim 8 , wherein the physical host comprises the virtualization software.

14. The non-transitory machine-readable medium of claim 13 , wherein the program further comprises sets of instructions for:

utilizing interrupts to determine the availability of packets received at the VNIC from the particular DCN; and

generating the interrupt to the virtualization software to inform the virtualization software that packets have arrived from the particular DCN when the predetermined number of packets have arrived at the VNIC from the particular DCN.

15. A physical computing device comprising:

a set of processing units; and

a non-transitory machine-readable medium storing a program for execution by the set of processing units, the physical computing device hosting a set of data compute nodes (DCNs) for each of a set of tenants, each DCN comprising a virtual network interface controller (VNIC) for communicating with one or more PNICs to exchange packets, the sets of instructions for:

determining whether a predetermined number of packets have been received at a VNIC from a particular DNC;

when the predetermined number of packets have been received at the VNIC from the particular DNC, generate an interrupt to virtualization software; and

when the predetermined number of packets have not been received at the VNIC from the particular DNC:

determining a rate of packets received from the particular DCN at the VNIC; and

when the rate of packets exceeds the predetermined threshold, performing polling to determine the availability of packets received at the VNIC from the particular DCN; and

when the rate of packets does not exceed the predetermined threshold, utilizing interrupts to determine the availability of packets received at the VNIC from the particular DCN.

16. The physical computing device of claim 15 , wherein the physical host comprises virtualization software, wherein the set of instructions for performing polling to determine the availability of packets received at the VNIC from the particular DCN comprises sets of instructions for:

determining by the VNIC that a packet is received from the particular DCN;

storing the packet in a buffer for the virtualization software to pick up; and

updating a number of packets in the buffer.

17. The physical computing device of claim 16 , wherein the set of instructions for performing polling further comprises sets of instructions for:

determining, by the virtualization software, that the VNIC has to be polled; and

determining whether the VNIC has stored any packets in the buffer.

18. The physical computing device of claim 17 , wherein the program further comprises sets of instructions for:

picking up packets from the buffer by the virtualization software; and

setting the number of packets in the buffer to zero.

19. The physical computing device of claim 18 , wherein the program further comprises a set of instructions for starting a timer by the virtualization software to perform a next poll to determine an availability of packets received from the particular DCN at the VNIC.

20. The physical computing device of claim 15 , wherein the physical host comprises virtualization software, and wherein the program further comprises a set of instructions for;

utilizing interrupts to determine an availability of packets received at the VNIC from the particular DCN; and

generating an interrupt to the virtualization software to inform the virtualization software that packets have arrived from the particular DCN when the predetermined number of packets have arrived at the VNIC from the particular DCN.

Assignments (1)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
Continuity (2)
Continuation 14574354 · Dec 17, 2014
Related Publication 20170310571A1 · Oct 26, 2017