High throughput ingress datapath for a virtual machine

US12379952B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-12379952-B2
Application numberUS-202217860040-A
CountryUS
Kind codeB2
Filing dateJul 7, 2022
Priority dateJul 13, 2021
Publication dateAug 5, 2025
Grant dateAug 5, 2025

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

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.

First claim

Opening claim text (preview).

The invention claimed is: 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.

Assignees

Inventors

Classifications

  • Network integration; Enabling network access in virtual machine instances · CPC title

  • Memory management, e.g. access or allocation · CPC title

  • Identifying congestion · CPC title

  • Modifications to standard FIFO or LIFO · CPC title

  • Wraparound memory, e.g. overrun or underrun detection · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US12379952B2 cover?
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 buff…
Who is the assignee on this patent?
VMware LLC
What technology area does this patent fall under?
Primary CPC classification G06F9/45558. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Aug 05 2025 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 11 related publications on this page (citations in our corpus or others sharing the same primary CPC).