# US 10,374,977 B2 · Method and apparatus for stateless transport layer tunneling

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,374,977 B2
- Document ID: US10374977B2
- Status: Granted
- Kind: B2
- Application number: 15/192,774
- Filed: 2016-06-24
- Published: 2016-12-29
- Granted: 2019-08-06
- Earliest claimed: 2011-04-05
- Assignees: Nicira, Inc.
- Applicants: Nicira, Inc.
- Inventors: Jesse E. Gross, IV; W. Andrew Lambeth
- Web page: https://patentgrep.com/patent/US10374977B2

## CPC

- H04L 47/825: {Involving tunnels, e.g. MPLS}
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 12/4645: {Details on frame tagging (routing of packets H04L45/00; support for virtual LAN H04L49/354)}
- H04L 47/31: by tagging of packets, e.g. using discard eligibility [DE] bits
- H04L 47/36: by determining packet size, e.g. maximum transfer unit [MTU]
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L 69/22: Parsing or analysis of headers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 1)

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.

### Claim 5 (depends on 4)

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.

### Claim 6 (depends on 4)

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.

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 7)

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

### Claim 9 (depends on 1)

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.

### Claim 10 (depends on 1)

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.

### Claim 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.

### Claim 12 (depends on 11)

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.

### Claim 13 (depends on 11)

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.

### Claim 14 (depends on 11)

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.

### Claim 15 (depends on 14)

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.

### Claim 16 (depends on 14)

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.

### Claim 17 (depends on 11)

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.

### Claim 18 (depends on 17)

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.

### Claim 19 (depends on 11)

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.

### Claim 20 (depends on 11)

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.
