IP Library Granted Patent US 10,382,331
Granted Patent B1
US 10,382,331 · App. 15/583,714 · Granted Aug 13, 2019

Packet segmentation offload for virtual networks

Inventor: Rajagopalan Sivaramakrishnan (Sunnyvale, CA)
Assignee: Juniper Networks, Inc.
H04L45/745G06F9/45558H04L1/0061H04L45/586H04L45/66H04L69/166G06F2009/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 10,382,331
App. No.
15/583,714
Granted
Aug 13, 2019
Kind
B1
Abstract

In one example, a server executes a virtual router configured to receive an inner packet output by a virtual machine associated with a virtual network. The virtual router is further configured to offload, to a physical network interface card of the server that executes the virtual router, segmentation of the inner packet into a plurality of outbound tunnel packets each having a tunnel header for output by the physical network interface card to a physical network underlying the virtual network.

Claims (60)

1. A method comprising:

obtaining, by a virtual router for one or more virtual networks, the virtual router executing by a computing device, an inner packet for a virtual network of the one or more virtual networks;

providing, by the virtual router to a physical network interface card of the computing device, a first segment of a payload of the inner packet and a first tunnel header, wherein the first segment is for segmentation by the physical network interface card into a plurality of outbound tunnel packets each having the first tunnel header, the plurality of outbound tunnel packets for output by the physical network interface card to a physical network underlying the one or more virtual networks; and

providing, by the virtual router to the physical network interface card for output to the physical network, a separate outbound tunnel packet comprising a second segment of the payload of the inner packet and a second tunnel header for the separate outbound tunnel packet comprising the second segment, the second tunnel header different than the first tunnel header.

2. The method of claim 1 ,

generating, by the physical network interface card in response to obtaining the first segment and the first tunnel header from the virtual router, the plurality of outbound tunnel packets, wherein each of the plurality of outbound tunnel packets comprises the first tunnel header and a different portion of the first segment; and

outputting, by the physical network interface card, the plurality of outbound tunnel packets to the physical network.

3. The method of claim 1 , further comprising:

determining, by the virtual router at least in part by using a routing instance associated with the virtual network, the first tunnel header for each of the plurality of outbound tunnel packets; and

determining, by the virtual router at least in part by using the routing instance associated with the virtual network, the second tunnel header for the separate outbound tunnel packet comprising the second segment.

4. The method of claim 1 , wherein providing the first tunnel header for each of the plurality of outbound tunnel packets comprises:

providing, by the virtual router, the first tunnel header to the physical network interface card as a layer 2 (L2) header to cause the physical network interface card to generate and output the plurality of outbound tunnel packets as L2 packets each including the first tunnel header and a different layer 3 (L3) packet having a different portion of the first segment.

5. The method of claim 1 , wherein the first segment of the inner packet has a first segment length that is a multiple of a segment size for each of the plurality of outbound tunnel packets.

6. The method of claim 1 ,

wherein the plurality of outbound tunnel packets each have an identical length and an identical checksum, and

wherein the first tunnel header includes an outer Internet Protocol header having a length value field indicating the identical length and a checksum field having a value set to the identical checksum.

7. The method of claim 1 ,

wherein the plurality of outbound tunnel packets each have an identical length, and

wherein the first tunnel header includes an outer Internet Protocol header having a length value field indicating the identical length.

8. The method of claim 1 ,

wherein the inner packet is associated with a Transmission Control Protocol (TCP) session initiated by a virtual machine executing by the computing device,

wherein the segmentation comprises TCP segmentation offload, and

wherein a segment size for each of the plurality of outbound tunnel packets is a Maximum Segment Size (MSS) for the TCP session.

9. A computing device comprising:

a physical network interface card;

a memory; and

one or more processors operably coupled to the memory, the one or more processors configured to:

obtain, by a virtual router for one or more virtual networks, an inner packet for a virtual network of the one or more virtual networks;

provide, by the virtual router to the physical network interface card, a first segment of a payload of the inner packet and a first tunnel header, wherein the first segment is for segmentation by the physical network interface card into a plurality of outbound tunnel packets each having the first tunnel header, the plurality of outbound tunnel packets for output by the physical network interface card to a physical network underlying the one or more virtual networks; and

provide, by the virtual router to the physical network interface card for output to the physical network, a separate outbound tunnel packet comprising a second segment of the payload of the inner packet and a second tunnel header for the separate outbound tunnel packet comprising the second segment, the second tunnel header different than the first tunnel header.

10. The computing device of claim 9 , wherein the physical network interface card is configured to:

generate, in response to obtaining the first segment and the first tunnel header from the virtual router, the plurality of outbound tunnel packets, wherein each of the plurality of outbound tunnel packets comprises the first tunnel header and a different portion of the first segment; and

output the plurality of outbound tunnel packets to the physical network.

11. The computing device of claim 9 , wherein the one or more processors are configured to:

determine, by the virtual router at least in part by using a routing instance associated with the virtual network, the first tunnel header for each of the plurality of outbound tunnel packets; and

determine, by the virtual router at least in part by using the routing instance associated with the virtual network, the second tunnel header for the separate outbound tunnel packet comprising the second segment.

12. The computing device of claim 9 , wherein to provide the first tunnel header for each of the plurality of outbound tunnel packets the one or more processors are configured to:

provide, by the virtual router, the first tunnel header to the physical network interface card as a layer 2 (L2) header to cause the physical network interface card to generate and output the plurality of outbound tunnel packets as L2 packets each including the first tunnel header and a different layer 3 (L3) packet having a different portion of the first segment.

13. The computing device of claim 9 ,

wherein the first segment of the inner packet has a first segment length that is a multiple of a segment size for each of the plurality of outbound tunnel packets.

14. The computing device of claim 9 ,

wherein the plurality of outbound tunnel packets each have an identical length and an identical checksum, and

wherein the first tunnel header includes an outer Internet Protocol header having a length value field indicating the identical length and a checksum field having a value set to the identical checksum.

15. The computing device of claim 9 ,

wherein the plurality of outbound tunnel packets each have an identical length, and wherein the first tunnel header includes an outer Internet Protocol header having a length value field indicating the identical length.

16. The computing device of claim 9 ,

wherein the inner packet is associated with a Transmission Control Protocol (TCP) session initiated by a virtual machine executing by the computing device,

wherein the segmentation comprises TCP segmentation offload, and

wherein a segment size for each of the plurality of outbound tunnel packets is a Maximum Segment Size (MSS) for the TCP session.

17. A non-transitory computer-readable medium comprising instructions for causing one or more programmable processors to:

execute a virtual router for one or more virtual networks;

obtain, by the virtual router, an inner packet for a virtual network of the one or more virtual networks;

provide, by the virtual router to the physical network interface card, a first segment of a payload of the inner packet and a first tunnel header, wherein the first segment is for segmentation by the physical network interface card into a plurality of outbound tunnel packets each having the first tunnel header, the plurality of outbound tunnel packets for output by the physical network interface card to a physical network underlying the one or more virtual networks; and

provide, by the virtual router to the physical network interface card for output to the physical network, a separate outbound tunnel packet comprising a second segment of the payload of the inner packet and a second tunnel header for the separate outbound tunnel packet comprising the second segment, the second tunnel header different than the first tunnel header.

18. The non-transitory computer-readable medium of claim 17 , wherein the instructions cause the one or more programmable processors to:

determine, by the virtual router at least in part by using a routing instance associated with the virtual network, the first tunnel header for each of the plurality of outbound tunnel packets; and

determine, by the virtual router at least in part by using the routing instance associated with the virtual network, the second tunnel header for the separate outbound tunnel packet comprising the second segment.

19. The non-transitory computer-readable medium of claim 17 , wherein to provide the first tunnel header for each of the plurality of outbound tunnel packets the instructions cause the one or more programmable processors to:

provide, by the virtual router, the first tunnel header to the physical network interface card as a layer 2 (L2) header to cause the physical network interface card to generate and output the plurality of outbound tunnel packets as L2 packets each including the first tunnel header and a different layer 3 (L3) packet having a different portion of the first segment.

20. The non-transitory computer-readable medium of claim 17 , wherein the first segment of the inner packet has a first segment length that is a multiple of a segment size for each of the plurality of outbound tunnel packets.

Assignments (1)
NUNC PRO TUNC ASSIGNMENT Recorded May 6, 2026
From: JUNIPER NETWORKS, INC.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 075513/0034 →
Continuity (1)
Continuation 14228844 · Mar 28, 2014
Cited By (2)
US 12,489,688 US 12,574,733