IP Library Granted Patent US 11,799,988
Granted Patent B2
US 11,799,988 · App. 17/655,606 · Granted Oct 24, 2023

User datagram protocol segmentation offload for virtual machines

Inventors: Ronak Doshi (San Jose, CA); Peng Li (Sunnyvale, CA); Guolin Yang (San Jose, CA); Boon Seong Ang (Saratoga, CA)
Assignee: VMWARE, INC.
H04L69/16H04L69/22H04L69/325
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 11,799,988
App. No.
17/655,606
Granted
Oct 24, 2023
Kind
B2
Abstract

The disclosure provides an approach for segmenting a user datagram protocol (UDP) packets. A method includes generating the UDP packet, containing UDP data, at a virtual computing instance (VCI) running on a host machine; sending the UDP packet from the VCI to a hypervisor running on the host machine; after sending the UDP packet to the hypervisor, segmenting the UDP packet into a plurality of UDP segments, wherein each of the plurality of UDP segments includes a portion of the UDP data and a UDP header; and transmitting the plurality of UDP segments, over a network, to a destination of the UDP packet.

Claims (50)

1. A method of segmenting a user datagram protocol (UDP) packet, the method comprising:

generating UDP data by an application running in a virtual computing instance (VCI) running on a host machine;

sending, by the application, one or more of a segment size and a maximum number of segments to one or more of a virtual network interface card of the VCI, a hypervisor, an uplink virtual port of the hypervisor, or a physical network interface card of the host machine;

generating the UDP packet, containing the UDP data, at the VCI;

sending the UDP packet from the VCI to a hypervisor running on the host machine;

after sending the UDP packet to the hypervisor, segmenting the UDP packet into a plurality of UDP segments, wherein each of the plurality of UDP segments includes a portion of the UDP data and a UDP header, wherein the segmenting is based on the one or more of the segment size and the maximum number of segments; and

transmitting the plurality of UDP segments, over a network, to a destination of the UDP packet.

2. The method of claim 1 , wherein the UDP data contained in the UDP packet is larger than a maximum transmission unit size.

3. The method of claim 1 , wherein the segmenting the UDP packet is performed at a physical network interface card of the host machine.

4. The method of claim 1 , wherein the segmenting the UDP packet is performed at an uplink virtual port of the host machine.

5. The method of claim 1 , further comprising encapsulating the UDP packet at the hypervisor with a tunnel header, wherein each of the plurality of UDP segments includes the tunnel header.

6. The method of claim 1 , further comprising:

receiving a second plurality of UDP segments at the host machine, from another host machine;

aggregating the plurality of UDP segments into a single UDP packet; and

sending the single UDP packet to a destination VCI on the other host machine.

7. The method of claim 1 , further comprising querying, by a guest operating of the VCI, whether a virtual network interface card (VNIC) of the VCI supports UDP segmentation offload (USO), wherein sending the UDP packet to the hypervisor is based on determining the VNIC support USO.

8. The method of claim 1 , further comprising querying, by the hypervisor, whether a physical network interface card (PNIC) of the host machine supports UDP segmentation offload (USO), wherein segmenting the UDP packet comprises:

segmenting the UDP packet at the hypervisor when the PNIC does not support USO; and

segmenting the UDP at the PNIC when the PNIC supports USO.

9. The method of claim 1 , wherein sending the UDP packet from the VCI to the host machine comprises providing, by the VCI, one or more memory locations of the UDP packet in metadata associated with the UDP packet, wherein the one or more memory locations are in a memory associated with a guest operation system of the VCI.

10. The method of claim 1 , further comprising:

receiving, at the VCI, a negative acknowledgment (NACK) indicating one or more of the plurality of UDP segments were not successfully received at a destination of the UDP packet;

generating, at the VCI, the one or more of the plurality of UDP segments; and

resending the one or more of the plurality of UDP segments.

11. The method of claim 1 , further comprising:

receiving the plurality of UDP segments at a second host machine;

aggregating the plurality of UDP segments into a single UDP packet; and

sending the single UDP packet to the destination.

12. The method of claim 11 , wherein each of the plurality of UDP segments further includes a segment number, and wherein the aggregating is based on the segment numbers in the plurality of UDP segments.

13. A system comprising:

one or more processors; and

at least one memory comprising computer executable instructions, the one or more processors configured to execute the computer executable instructions and cause the system to:

generate user datagram protocol (UDP) data by an application running in a virtual computing instance (VCI) running on a host machine;

send, by the application, one or more of a segment size and a maximum number of segments to one or more of a virtual network interface card of the VCI, a hypervisor, an uplink virtual port of the hypervisor, or a physical network interface card of the host machine;

generate a UDP packet, containing the UDP data, at the VCI;

send the UDP packet from the VCI to a hypervisor running on the host machine;

after sending the UDP packet to the hypervisor, segment the UDP packet into a plurality of UDP segments, wherein each of the plurality of UDP segments includes a portion of the UDP data and a UDP header, wherein the segmenting is based on the one or more of the segment size and the maximum number of segments; and

transmit the plurality of UDP segments, over a network, to a destination of the UDP packet.

14. The system of claim 13 , wherein the UDP data contained in the UDP packet is larger than a maximum transmission unit size.

15. The system of claim 13 , wherein the one or more processors are configured to cause the system to segment the UDP packet at a physical network interface card of the host machine.

16. The system of claim 13 , wherein the one or more processors are configured to cause the system to segment the UDP packet at an uplink virtual port of the host machine.

17. The system of claim 13 , the one or more processors are configured to cause the system further to:

encapsulate the UDP packet at the hypervisor with a tunnel header, wherein each of the plurality of UDP segments includes the tunnel header.

18. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors of a computing system, cause the computing system to perform operations for segmenting a user datagram protocol (UDP) packet, the operations comprising:

generating UDP data by an application running in a virtual computing instance (VCI) running on a host machine;

sending, by the application, one or more of a segment size and a maximum number of segments to one or more of a virtual network interface card of the VCI, ua hypervisor, an uplink virtual port of the hypervisor, or a physical network interface card of the host machine;

generating the UDP packet, containing the UDP data, at the VCI;

sending the UDP packet from the VCI to a hypervisor running on the host machine;

after sending the UDP packet to the hypervisor, segmenting the UDP packet into a plurality of UDP segments, wherein each of the plurality of UDP segments includes a portion of the UDP data and a UDP header, wherein the segmenting is based on the one or more of the segment size and the maximum number of segments; and

transmitting the plurality of UDP segments, over a network, to a destination of the UDP packet.

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 Mar 21, 2022
From: DOSHI, RONAK; LI, PENG; YANG, GUOLIN; ANG, BOON SEONG
To: VMWARE, INC.
Reel/Frame 059323/0671 →
Continuity (1)
Related Publication 20230300224A1 · Sep 21, 2023