# US 12,184,546 B2 · Encapsulating data packets using an adaptive tunnelling protocol

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

- Number: US 12,184,546 B2
- Document ID: US12184546B2
- Status: Granted
- Kind: B2
- Application number: 17/694,572
- Filed: 2022-03-14
- Published: 2022-06-30
- Granted: 2024-12-31
- Earliest claimed: 2013-07-08
- Assignees: Nicira, Inc.
- Applicants: Nicira, Inc.
- Inventors: Jesse E. Gross, IV; Teemu Koponen; W. Andrew Lambeth
- Web page: https://patentgrep.com/patent/US12184546B2

## CPC

- H04L 45/74: Address processing for routing
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 69/22: Parsing or analysis of headers
- H04L 69/324: in the data link layer [OSI layer 2], e.g. HDLC
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04L 2212/00: Encapsulation of packets
- 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 novel method of tunneling data packets. The method establishes a tunnel between a first forwarding element and a second forwarding element. For each data packet directed to the second forwarding element from the first forwarding element, the method encapsulates the data packet with a header that includes a tunnel option. The method then sends the data packet from the first forwarding element to the second forwarding element through the established tunnel. In some embodiments, the data packet is encapsulated using a protocol that is adapted to change with different control plane implementations and the implementations' varying needs for metadata.

## Claims

### Claim 1

A method of forwarding packets associated with a particular logical network that is defined over a shared physical network that supports multiple logical networks, the method comprising:
receiving a packet from a first endpoint machine associated with the particular logical network, the particular logical network having a logical network identifier;
encapsulating the packet with an encapsulating header storing the logical network identifier, a set of one or more variable length option headers, and an option length value specifying the length of the variable option headers, a rich logical context data being excluded from the encapsulating based on a determination that performance is critical;
forwarding the encapsulated packet to a second endpoint machine associated with the particular logical network.

### Claim 2 (depends on 1)

The method of claim 1, wherein the encapsulating header comprises a base header, and the LNI is stored in the base header.

### Claim 3 (depends on 2)

The method of claim 2, wherein the option length value is also stored in the base header.

### Claim 4 (depends on 1)

The method of claim 1 further comprising specifying each variable length option header in a type, length, value (TLV) format.

### Claim 5 (depends on 1)

The method of claim 1, wherein the set of one or more variable length option headers allowing the encapsulation to enabling the encapsulating header to store different levels of data.

### Claim 6 (depends on 1)

The method of claim 1, wherein at least one variable option header stores a set of contextual attributes for the particular logical network.

### Claim 7 (depends on 1)

The method of claim 1, wherein each variable length option header comprises a type field that identifies a format of data contained in the option header.

### Claim 8 (depends on 1)

The method of claim 1, wherein each variable length option header comprises a length field that identifies a length of the option header.

### Claim 9 (depends on 1)

The method of claim 1, wherein each variable length option header further comprises variable option data field that stores option data that is interpreted according to a value of the type field of the option header.

### Claim 10 (depends on 1)

The method of claim 1, wherein each variable length option header comprises a critical option field that specifies whether the option header is associated with a critical option.

### Claim 11

A non-transitory machine readable medium storing a program for execution by at least one processing unit to forward packets associated with a particular logical network that is defined over a shared physical network that supports multiple logical networks, the program comprising sets of instructions for:
receiving a packet from a first endpoint machine associated with the particular logical network, the particular logical network having a logical network identifier;
encapsulating the packet with an encapsulating header storing the logical network identifier, a set of one or more variable length option headers, and an option length value specifying the length of the variable option headers, a rich logical context data being excluded from the encapsulating based on a determination that performance is critical;
forwarding the encapsulated packet to a second endpoint machine associated with the particular logical network.

### Claim 12 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the encapsulating header comprises a base header, and the LNI is stored in the base header.

### Claim 13 (depends on 12)

The non-transitory machine readable medium of claim 12, wherein the option length value is also stored in the base header.

### Claim 14 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the program further comprises a set of instructions for specifying each variable length option header in a type, length, value (TLV) format.

### Claim 15 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein the set of one or more variable length option headers allowing the encapsulation to enabling the encapsulating header to store different levels of data.

### Claim 16 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein at least one variable option header stores a set of contextual attributes for the particular logical network.

### Claim 17 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein each variable length option header comprises a type field that identifies a format of data contained in the option header.

### Claim 18 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein each variable length option header comprises a length field that identifies a length of the option header.

### Claim 19 (depends on 11)

The non-transitory machine readable medium of claim 11, wherein each variable length option header further comprises variable option data field that stores option data that is interpreted according to a value of the type field of the option header.

### Claim 20 (depends on 19)

The non-transitory machine readable medium of claim 19, wherein each variable length option header comprises a critical option field that specifies whether the option header is associated with a critical option.
