IP Library Granted Patent US 12,379,952
Granted Patent B2
US 12,379,952 · App. 17/860,040 · Granted Aug 5, 2025

High throughput ingress datapath for a virtual machine

Inventors: Peng Li (Fremont, CA); Ronak Doshi (San Jose, CA); Guolin Yang (San Jose, CA); Boon S. Ang (Saratoga, CA)
Assignee: VMware LLC
G06F9/45558G06F2009/45583G06F2009/45595
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 12,379,952
App. No.
17/860,040
Granted
Aug 5, 2025
Kind
B2
Abstract

Some embodiments provide a method of forwarding data messages to a machine that executes on a host computer and has an associated virtual network interface controller (VNIC) also executing on the host computer. The method retrieves data messages from a queue associated with the VNIC and stores these data messages in a first set of buffer data stores associated with the VNIC. When the first buffer set reaches a threshold congestion level, the method stores data messages subsequently retrieved from the VNIC queue in a second set of buffer data stores associated with the VNIC. In some embodiments, a set of one or more processes executing on the machine retrieves the data messages stored in the buffer sets for processing by these processes or other processes.

Claims (47)

1. A method of forwarding data messages to a machine executing on a host computer, the

machine having an associated virtual network interface controller (VNIC), the method comprising:

storing, in a first set of buffer data stores associated with the VNIC, a first plurality of data messages retrieved from a queue of the VNIC associated with the machine; and

after the first set of buffer data stores reaches a threshold congestion level, storing, in a

second set of buffer data stores associated with the VNIC, a second plurality of data messages

retrieved from the VNIC queue,

wherein:

a set of one or more processes executing on the machine retrieves the data messages from the first and second sets of buffer data stores; and

when the first plurality of data messages is stored in the first set of buffer data stores, the

buffer data stores of the first set are designated as active buffer data stores and the buffer data

stores of the second set are designated as standby buffer data stores, and

when the second plurality of data messages is stored in the second set of buffer data stores, the buffer data stores of the second set are designated as active buffer data stores and the buffer data stores of the first set are designated as standby buffer data stores.

2. The method of claim 1 , wherein each set of buffer data stores is implemented by a ring of

storage elements.

3. The method of claim 2 , wherein each set of buffer data stores includes receiving (Rx) buffer data stores.

4. The method of claim 2 , wherein each ring in the ring of storage elements comprises a sequence of locations in a memory to which data messages are sequentially stored with a first storage location in the sequence being a next storage location after each data message is stored in the last location.

5. The method of claim 4 , wherein the memory is one of a volatile memory or a non-volatile storage.

6. The method of claim 1 , wherein the threshold congestion level 1s a first threshold congestion level, the method further comprising:

after the second set of buffer data stores reaches a second threshold congestion level,

storing, in the first set of buffer data stores associated with the VNIC, a third plurality of data

messages retrieved from the VNIC queue,

wherein the buffer data stores of the second set are now designated as standby buffer data stores and the buffer data stores of the first set are now designated as active buffer data stores.

7. The method of claim 6 , wherein the first threshold congestion level and the second threshold congestion level are the same levels of congestion.

8. The method of claim 6 , wherein the first threshold congestion level and the second threshold congestion level are different levels of congestion.

9. The method of claim 1 , wherein the queue is a first queue and the threshold congestion level is a first threshold congestion level, the method further comprising:

storing, in a third set of buffer data stores associated with the VNIC, a third plurality of data messages retrieved from a second queue of the VNIC associated with the machine; and

after the third set of buffer data stores reaches a second threshold congestion level, storing, in a fourth set of buffer data stores associated with the VNIC, a fourth plurality of data messages retrieved from the second VNIC queue,

wherein the set of one or more processes executing on the machine retrieves the data messages from the third and fourth sets of buffer data stores.

10. The method of claim 1 , wherein the queue is a first queue and the third and fourth sets of buffer data stores are associated with a second VNIC queue.

11. The method of claim 1 , wherein the threshold congestion level is a maximum capacity of storage of the first set of buffer data stores.

12. The method of claim 1 , wherein the first and second pluralities of data messages are retrieved from a port of a software switch external to the machine.

13. A non-transitory machine readable medium storing a program for execution by at least one processing unit, the program for forwarding data messages to a machine executing on a host computer, the machine having an associated virtual network interface controller (VNIC), the program comprising sets of instructions for:

storing, in a first set of buffer data stores associated with the VNIC, a first plurality of data messages retrieved from a queue of the VNIC associated with the machine; and

after the first set of buffer data stores reaches a threshold congestion level, storing, in a

second set of buffer data stores associated with the VNIC, a second plurality of data messages

retrieved from the VNIC queue,

wherein:

a set of one or more processes executing on the machine retrieves the data messages from the first and second sets of buffer data stores; and

when the first plurality of data messages is stored in the first set of buffer data stores, the

buffer data stores of the first set are designated as active buffer data stores and the buffer data

stores of the second set are designated as standby buffer data stores, and

when the second plurality of data messages is stored in the second set of buffer data stores, the buffer data stores of the second set are designated as active buffer data stores and the buffer data stores of the first set are designated as standby buffer data stores.

14. The non-transitory machine readable medium of claim 13 , wherein the set of one or more processes comprises a set of one or more applications to process the first and second pluralities of data messages.

15. The non-transitory machine readable medium of claim 13 , wherein the sets of buffer data stores are designated as active or standby by a set of instructions for maintaining a data store.

16. The non-transitory machine readable medium of claim 15 , wherein storing the data messages retrieved from the VNIC queue and maintaining the data store are performed by different modules of a single program.

17. The non-transitory machine readable medium of claim 13 , wherein the first and second sets of buffer data stores use First In, First Out (FIFO) logic.

18. The non-transitory machine readable medium of claim 13 , wherein a first maximum capacity of storage of the first set of buffer data stores and a second maximum capacity of storage of the second set of buffer data stores are small.

Assignments (2)
CHANGE OF NAME Recorded Feb 27, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 066692/0103 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 8, 2023
From: LI, PENG; DOSHI, RONAK; YANG, GUOLIN; ANG, BOON S.
To: VMWARE, INC.
Reel/Frame 062925/0160 →