IP Library Granted Patent US 10,877,822
Granted Patent B1
US 10,877,822 · App. 16/780,870 · Granted Dec 29, 2020

Zero-copy packet transmission between virtualized computing instances

Inventors: Yusheng Wang (Beijing, CN); Miao Yan (Beijing, CN); Dousheng Zhao (Beijing, CN)
Assignee: VMWARE, INC.
G06F9/544G06F9/45545G06F9/542G06F21/52G06F21/64G06F2221/033
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,877,822
App. No.
16/780,870
Granted
Dec 29, 2020
Kind
B1
Abstract

Example methods are provided for a host to perform zero-copy packet transmission. On example method may comprise allocating a transmit (TX) packet buffer to a first virtualized computing instance and a receive (RX) packet buffer to a second virtualized computing instance, wherein the TX packet buffer and the RX packet buffer are both mapped to a shared memory location associated with the host. The method may also comprise: accessing, by the first virtualized computing instance, the TX packet buffer to store a packet in the shared memory location; processing, by the forwarding element, the packet in the shared memory location; and accessing, by the second virtualized computing instance, the RX packet buffer to receive the packet stored in the shared memory location.

Claims (62)

1. A method for a host to perform zero-copy packet transmission, wherein the host supports a forwarding element, a first virtualized computing instance and a second virtualized computing instance, and the method comprises:

allocating a transmit (TX) packet buffer to the first virtualized computing instance and a receive (RX) packet buffer to the second virtualized computing instance, wherein the TX packet buffer and the RX packet buffer are both mapped to a shared memory location associated with the host;

accessing, by the first virtualized computing instance, the TX packet buffer to store a packet in the shared memory location, the packet being addressed from the first virtualized computing instance to the second virtualized computing instance;

processing, by the forwarding element connecting the first virtualized computing instance and the second virtualized computing instance, the packet in the shared memory location; and

accessing, by the second virtualized computing instance, the RX packet buffer to receive the packet stored in the shared memory location.

2. The method of claim 1 , wherein accessing the TX packet buffer comprises:

selecting, from multiple TX packet buffers allocated to the first virtualized computing instance, the TX packet buffer based on destination address information associated with the second virtualized computing instance.

3. The method of claim 2 , wherein accessing the TX packet buffer comprises:

accessing a buffer map storing an association between the TX packet buffer and the destination address information, the packet buffer map being maintained by a network interface controller (NIC) driver supported by a guest operating system associated with the first virtualized computing instance.

4. The method of claim 1 , wherein allocating the TX packet buffer and RX packet buffer comprises:

determining that buffer allocation is required based on one or more of the following: (a) detecting a prior packet that is sent from the first virtualized computing instance to the second virtualized computing instance and (b) detecting that a packet-related metric exceeds a predetermined threshold.

5. The method of claim 1 , wherein processing by the forwarding element comprises:

processing, by the forwarding element, the packet in response to detecting a first notification from the first virtualized computing instance; and

sending a second notification to the second virtualized computing instance to cause the second virtualized computing instance to access the RX packet buffer.

6. The method of claim 5 , wherein processing by the forwarding element comprises:

generating digest information associated with the packet prior to sending the second notification; and

based on the digest information, performing integrity verification to determine whether the packet or the first virtualized computing instance is malicious.

7. The method of claim 1 , wherein processing by the forwarding element comprises:

detecting a third notification indicating that the packet has been received or processed by the second virtualized computing instance; and

generating and sending a fourth notification to cause the first virtualized computing instance to release buffer space storing the packet in the TX packet buffer.

8. A non-transitory computer-readable storage medium that includes a set of instructions which, in response to execution by a processor of a host, cause the processor to perform a method of zero-copy packet transmission, wherein the host supports a forwarding element, a first virtualized computing instance and a second virtualized computing instance, and the method comprises:

allocating a transmit (TX) packet buffer to the first virtualized computing instance and a receive (RX) packet buffer to the second virtualized computing instance, wherein the TX packet buffer and the RX packet buffer are both mapped to a shared memory location associated with the host;

accessing, by the first virtualized computing instance, the TX packet buffer to store a packet in the shared memory location, the packet being addressed from the first virtualized computing instance to the second virtualized computing instance;

processing, by the forwarding element connecting the first virtualized computing instance and the second virtualized computing instance, the packet in the shared memory location; and

accessing, by the second virtualized computing instance, the RX packet buffer to receive the packet stored in the shared memory location.

9. The non-transitory computer-readable storage medium of claim 8 , wherein accessing the TX packet buffer comprises:

selecting, from multiple TX packet buffers allocated to the first virtualized computing instance, the TX packet buffer based on destination address information associated with the second virtualized computing instance.

10. The non-transitory computer-readable storage medium of claim 9 , wherein accessing the TX packet buffer comprises:

accessing a buffer map storing an association between the TX packet buffer and the destination address information, the packet buffer map being maintained by a network interface controller (NIC) driver supported by a guest operating system associated with the first virtualized computing instance.

11. The non-transitory computer-readable storage medium of claim 8 , wherein allocating the TX packet buffer and RX packet buffer comprises:

determining that buffer allocation is required based on one or more of the following: (a) detecting a prior packet that is sent from the first virtualized computing instance to the second virtualized computing instance and (b) detecting that a packet-related metric exceeds a predetermined threshold.

12. The non-transitory computer-readable storage medium of claim 8 , wherein processing by the forwarding element comprises:

processing, by the forwarding element, the packet in response to detecting a first notification from the first virtualized computing instance; and

sending a second notification to the second virtualized computing instance to cause the second virtualized computing instance to access the RX packet buffer.

13. The non-transitory computer-readable storage medium of claim 12 , wherein processing by the forwarding element comprises:

generating digest information associated with the packet prior to sending the second notification; and

based on the digest information, performing integrity verification to determine whether the packet or the first virtualized computing instance is malicious.

14. The non-transitory computer-readable storage medium of claim 8 , wherein processing by the forwarding element comprises:

detecting a third notification indicating that the packet has been received or processed by the second virtualized computing instance; and

generating and sending a fourth notification to cause the first virtualized computing instance to release buffer space storing the packet in the TX packet buffer.

15. A computer system, comprising:

a processor; and

a non-transitory computer-readable medium having stored thereon instructions that, when executed by the processor, cause the processor to:

allocate a transmit (TX) packet buffer to a first virtualized computing instance and a receive (RX) packet buffer to a second virtualized computing instance, wherein the TX packet buffer and the RX packet buffer are both mapped to a shared memory location associated with the computer system;

access, by the first virtualized computing instance, the TX packet buffer to store a packet in the shared memory location, the packet being addressed from the first virtualized computing instance to the second virtualized computing instance;

process, by a forwarding element connecting the first virtualized computing instance and the second virtualized computing instance, the packet in the shared memory location; and

access, by the second virtualized computing instance, the RX packet buffer to receive the packet stored in the shared memory location.

16. The computer system of claim 15 , wherein the instructions for accessing the TX packet buffer cause the processor to:

select, from multiple TX packet buffers allocated to the first virtualized computing instance, the TX packet buffer based on destination address information associated with the second virtualized computing instance.

17. The computer system of claim 16 , wherein the instructions for accessing the TX packet buffer cause the processor to:

access a buffer map storing an association between the TX packet buffer and the destination address information, the packet buffer map being maintained by a network interface controller (NIC) driver supported by a guest operating system associated with the first virtualized computing instance.

18. The computer system of claim 15 , wherein the instructions for allocating the TX packet buffer and RX packet buffer cause the processor to:

determine that buffer allocation is required based on one or more of the following: (a) detecting a prior packet that is sent from the first virtualized computing instance to the second virtualized computing instance and (b) detecting that a packet-related metric exceeds a predetermined threshold.

19. The computer system of claim 15 , wherein the instructions for processing by the forwarding element cause the processor to:

process, by the forwarding element, the packet in response to detecting a first notification from the first virtualized computing instance; and

send a second notification to the second virtualized computing instance to cause the second virtualized computing instance to access the RX packet buffer.

20. The computer system of claim 19 , wherein the instructions for processing by the forwarding element cause the processor to:

generate digest information associated with the packet prior to sending the second notification; and

based on the digest information, performing integrity verification to determine whether the packet or the first virtualized computing instance is malicious.

21. The computer system of claim 15 , wherein the instructions for processing by the forwarding element cause the processor to:

detect a third notification indicating that the packet has been received or processed by the second virtualized computing instance; and

generate and send a fourth notification to cause the first virtualized computing instance to release buffer space storing the packet in the TX packet buffer.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067103/0030 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 3, 2020
From: WANG, YUSHENG; YAN, MIAO; ZHAO, DOUSHENG
To: VMWARE, INC.
Reel/Frame 051706/0014 →
Priority Claims (1)
WO PCT/CN2019/125614 · Dec 16, 2019 · international
Cited By (4)
US 12,210,468 US 12,229,057 US 12,380,041 US 12,413,530