IP Library Granted Patent US 10,374,977
Granted Patent B2
US 10,374,977 · App. 15/192,774 · Granted Aug 6, 2019

Method and apparatus for stateless transport layer tunneling

Inventors: Jesse E. Gross, IV (San Francisco, CA); W. Andrew Lambeth (San Mateo, CA)
Assignee: NICIRA, INC.
H04L47/825H04L12/4633H04L12/4645H04L47/31H04L47/36H04L69/16H04L69/22
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,374,977
App. No.
15/192,774
Granted
Aug 6, 2019
Kind
B2
Abstract

Some embodiments of the invention provide a method of tunneling a data packet by encapsulating the data packet with a protocol header and specifying information in the fields of the header in a manner that a network switch can offload processing tasks to its network interface controller. The switch on a transmit side sends the processed data packet through the tunnel to another switch on a receive side. The two sides represent the two ends of the tunnel established between the two switches. Each of the transmit and received side switches is controlled by a switch controller, which in some embodiments is implemented as software. The switch controllers and network interface controllers together process the data packet which is being transferred through the tunnel between the switches.

Claims (30)

1. For a software forwarding element implemented on a first device that comprises a hardware network interface controller (NIC), a method of processing packets for tunneling through a network to a second device, the method comprising:

at the software forwarding element, receiving a data packet comprising a header having a first format;

encapsulating the data packet with a second header having a second format that is different from the first format to offload a first set of packet processing operations to the hardware NIC;

performing a second set of packet processing operations on the encapsulated data packet at the software forwarding element; and

wherein the offloading comprises, after performing the second set of packet processing operations,

providing the encapsulated data packet to the hardware NIC for the hardware NIC to (i) perform the first set of packet processing operations on the encapsulated data packet having the second format but not on packets having the first format and (ii) transmit the encapsulated data packet to the second device.

2. The method of claim 1 , wherein the second set of packet processing operations comprises operations that the NIC is not configured to perform on packets having the second format.

3. The method of claim 1 further comprising determining the first set of packet processing operations to offload to the NIC based on information from a driver for the NIC.

4. The method of claim 1 , wherein the first set of packet processing operations offloaded to the NIC comprises segmenting the data packet into a plurality of smaller data packets.

5. The method of claim 4 , wherein the size for each of the smaller data packets is determined based on requirements of the network through which the data packet is tunneled.

6. The method of claim 4 , wherein the first set of processing operations offloaded to the NIC further comprises computing a checksum value for each of the smaller data packets.

7. The method of claim 1 , wherein the first set of packet processing operations offloaded to the MC comprises inserting a virtual local area network (VLAN) tag into the encapsulated data packet.

8. The method of claim 7 further comprising sending the VLAN tag to the NIC from the software forwarding element.

9. The method of claim 1 , wherein encapsulating the data packet with the second header comprises specifying in the second header a length of data encapsulated by the second header and an offset value used by the NIC to segment the data packet into a plurality of smaller data packets.

10. The method of claim 1 , wherein the first format comprises a User Datagram Protocol (UDP) header format and the second format comprises a Transmission Control Protocol (TCP) header format.

11. A non-transitory machine readable medium storing a forwarding element program which when executed by at least one processing unit of a first device tunnels packets through a network to a second device, the first device comprising a hardware network interface controller (NIC), the program comprising sets of instructions for:

receiving a data packet comprising a header having a first format;

encapsulating the data packet with a second header having a second format that is different from the first format in order to offload a first set of packet processing operations to the hardware NIC;

performing a second set of packet processing operations on the encapsulated data packet; and

wherein the offloading comprises, after performing the second set of packet processing operations,

providing the encapsulated data packet to the hardware NIC for the hardware NIC to (i) perform the first set of packet processing operations on the encapsulated data packet having the second format but not on packets having the first format and (ii) transmit the encapsulated data packet to the second device.

12. The non-transitory machine readable medium of claim 11 , wherein the second set of packet processing operations comprises operations that the NIC is not configured to perform on packets having the second format.

13. The non-transitory machine readable medium of claim 11 , wherein the program further comprises a set of instructions for determining the first set of packet processing operations to offload to the NIC based on information from a driver for the NIC.

14. The non-transitory machine readable medium of claim 11 , wherein the first set of packet processing operations offloaded to the NIC comprises segmenting the data packet into a plurality of smaller data packets.

15. The non-transitory machine readable medium of claim 14 , wherein the size for each of the smaller data packets is determined based on requirements of the network through which the data packet is tunneled.

16. The non-transitory machine readable medium of claim 14 , wherein the first set of processing operations offloaded to the NIC further comprises computing a checksum value for each of the smaller data packets.

17. The non-transitory machine readable medium of claim 11 , wherein the first set of packet processing operations offloaded to the NIC comprises inserting a virtual local area network (VLAN) tag into the encapsulated data packet.

18. The non-transitory machine readable medium of claim 17 , wherein the program further comprises a set of instructions for sending the VLAN tag to the NIC.

19. The non-transitory machine readable medium of claim 11 , wherein the set of instructions for encapsulating the data packet with the second header comprises a set of instructions for specifying in the second header a length of data encapsulated by the second header and an offset value used by the NIC to segment the data packet into a plurality of smaller data packets.

20. The non-transitory machine readable medium of claim 11 , wherein the first format comprises a User Datagram Protocol (UDP) header format and the second format comprises a Transmission Control Protocol (TCP) header format.

Assignments (1)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
Continuity (6)
Continuation 14332290 · Jul 15, 2014
Continuation 13181492 · Jul 12, 2011
Provisional Application 61501433 · Jun 27, 2011
Provisional Application 61479680 · Apr 27, 2011
Provisional Application 61471897 · Apr 5, 2011
Related Publication 20160380922A1 · Dec 29, 2016
Cited By (1)
US 12,474,950