IP Library Granted Patent US 8,667,187
Granted Patent B2
US 8,667,187 · App. 12/211,000 · Granted Mar 4, 2014

System and method for reducing communication overhead between network interface controllers and virtual machines

Inventor: Pankaj Thakkar (Santa Clara, CA)
Assignee: VMware, Inc.
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 8,667,187
App. No.
12/211,000
Granted
Mar 4, 2014
Kind
B2
Abstract

Available buffers in the memory space of a guest operating system of a virtual machine are provided to a network interface controller (NIC) for use during direct memory access (DMA) and the guest operating system is notified accordingly when data is written into such available buffers. These capabilities obviate the requirement of using hypervisor memory as a staging area to determine which virtual machine to forward incoming data.

Claims (48)

1. A method comprising:

receiving data from a physical network by a physical network interface controller (NIC) of a computer system, the data being addressed to a virtual machine running on the computer system;

obtaining, by the NIC, an address of an available buffer in a memory space of a guest operating system of the virtual machine;

causing the NIC to write using direct memory access (DMA) the data received from the physical network into the available buffer in the memory space of the guest operating system of the virtual machine; and

notifying the guest operating system that the data written into the available buffer is ready to be consumed.

2. The method of claim 1 , wherein the notifying step further comprises the steps of:

inserting the address into an address field of a descriptor entry in a descriptor ring;

updating an ownership value of the descriptor entry to reflect ownership by the guest operating system; and

transmitting an interrupt to the guest operating system.

3. The method of claim 1 , further comprising the step of incrementing a counter of buffers that need to be allocated for use by the NIC during DMA.

4. The method of claim 2 , further comprising the step of maintaining a table of addresses of free buffers from the memory space of the guest operating system.

5. The method of claim 4 , further comprising the steps of:

confirming that the descriptor entry is owned by a hypervisor of the computer system; and

inserting a pre-existing buffer address in the address field of the descriptor entry into the table.

6. The method of claim 4 , further comprising the step of adding addresses into the table, wherein the addresses are taken from address fields of descriptor entries in the descriptor ring that are owned by a hypervisor of the computer system.

7. The method of claim 1 , wherein the identifying step further comprises the steps of:

extracting the address from a descriptor entry of a first descriptor ring shared between the guest operating system and a hypervisor of the computer system;

updating an ownership value of the descriptor entry to reflect ownership by the NIC;

adding the address to a descriptor entry of a second descriptor ring shared by a NIC device driver and the NIC; and

informing the NIC device driver.

8. The method of claim 1 , wherein the identifying step further comprises the steps of:

extracting the address from a table of addresses of free buffers from the memory space of the guest operating system;

adding the address to a descriptor entry of a descriptor ring shared by a NIC device driver and the NIC; and

informing the NIC device driver.

9. A non-transitory machine readable medium embodying instructions causing a processor to perform a method, the method comprising:

receiving data from a physical network by a physical network interface controller (NIC) of a computer system, the data being addressed to a virtual machine running on the computer system;

obtaining, by the NIC, an address of an available buffer in a memory space of a guest operating system of the virtual machine;

causing the NIC to write using direct memory access (DMA) the data received from the physical network into the available buffer in the memory space of the guest operating system of the virtual machine; and

notifying the guest operating system that the data written into the available buffer is ready to be consumed.

10. The non-transitory machine readable medium of claim 9 , wherein the notifying step further comprises:

inserting the address into an address field of a descriptor entry in a descriptor ring;

updating an ownership value of the descriptor entry to reflect ownership by the guest operating system; and

transmitting an interrupt to the guest operating system.

11. The non-transitory machine readable medium of claim 9 , wherein the method further comprises incrementing a counter of buffers that need to be allocated for use by the NIC during DMA.

12. The non-transitory machine readable medium of claim 10 , wherein the method further comprising maintaining a table of addresses of free buffers from the memory space of the guest operating system.

13. The non-transitory machine readable medium of claim 12 , wherein the method further comprises:

confirming that the descriptor entry is owned by a hypervisor of the computer system; and

inserting a pre-existing buffer address in the address field of the descriptor entry into the table.

14. The non-transitory machine readable medium of claim 12 , wherein the method further comprises adding addresses into the table, wherein the addresses are taken from address fields of descriptor entries in the descriptor ring that are owned by a hypervisor of the computer system.

15. The non-transitory machine readable medium of claim 9 , wherein the identifying of the address of the available buffer further comprises:

extracting the address from a descriptor entry of a first descriptor ring shared between the guest operating system and a hypervisor of the computer system;

updating an ownership value of the descriptor entry to reflect ownership by the NIC;

adding the address to a descriptor entry of a second descriptor ring shared by a NIC device driver and the NIC; and

informing the NIC device driver.

16. The non-transitory machine readable medium of claim 9 , wherein the identifying of the address of the available buffer further comprises:

extracting the address from a table of addresses of free buffers from the memory space of the guest operating system;

adding the address to a descriptor entry of a descriptor ring shared by a NIC device driver and the NIC; and

informing the NIC device driver.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0395 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2008
From: THAKKAR, PANKAJ
To: VMWARE, INC.
Reel/Frame 021878/0195 →
Continuity (1)
Related Publication 20100070677A1 · Mar 18, 2010