# US 10,122,626 B2 · Self-managed overlay networks

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

- Number: US 10,122,626 B2
- Document ID: US10122626B2
- Status: Granted
- Kind: B2
- Application number: 14/838,313
- Filed: 2015-08-27
- Published: 2017-03-02
- Granted: 2018-11-06
- Earliest claimed: 2015-08-27
- Assignees: Nicira, Inc.
- Applicants: Nicira, Inc.
- Inventors: Jeremy Olmsted-Thompson
- Web page: https://patentgrep.com/patent/US10122626B2

## CPC

- H04L 45/64: using an overlay routing layer
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 45/02: Topology update or discovery
- H04L 45/306: {Route determination based on the nature of the carried application}
- H04L 45/586: of virtual routers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Some embodiments provide a method for processing data messages through an overlay network for a cluster of application instances operating on machines located across several datacenters. The method receives a data message, from a first application instance of the cluster operating on a first machine in a first datacenter, destined to a second application instance. When the second application instance operates on a machine in a different, second datacenter, the method (i) encapsulates the data message according to an overlay network defined for the cluster and (ii) forwards the encapsulated data message to a publicly accessible machine of the second datacenter. Only a subset of the application instances operating in the second datacenter operate on publicly accessible machines. When the second application instance operates on a machine in the first datacenter, the method forwards the data message directly to the machine on which the second application instance operates.

## Claims

### Claim 1

A method for processing data messages through an overlay network for a cluster of application instances operating on machines located across a plurality of datacenters, the method comprising:
receiving a data message, from a first application instance of the cluster operating on a first machine in a first datacenter, destined to a second application instance of the cluster;
when the second application instance operates on a machine in a different, second datacenter:
encapsulating the data message according to an overlay network defined for the cluster of application instances; and
forwarding the encapsulated data message to a publicly accessible machine of the second datacenter, wherein only a subset of the application instances operating in the second datacenter operate on publicly accessible machines; and
when the second application instance operates on a machine in the first datacenter, forwarding the data message directly to the machine on which the second application instance operates.

### Claim 2 (depends on 1)

The method of claim 1 further comprising:
maintaining a cluster topology of the cluster of application instances that identifies, for each application instance of the cluster, the datacenter in which the application instance operates; and
updating a set of forwarding tables based on the cluster topology, wherein the set of forwarding tables are used to forward data messages.

### Claim 3 (depends on 1)

The method of claim 1, wherein encapsulating the data message comprises using a tunneling protocol.

### Claim 4 (depends on 1)

The method of claim 1, wherein the encapsulated data message comprises an address associated with the second application instance, wherein when the encapsulated data message is forwarded to a publicly accessible machine of the second datacenter a cluster manager operating on the publicly accessible machine captures the encapsulated data message and forwards the encapsulated data message to the address associated with the second application instance.

### Claim 5 (depends on 4)

The method of claim 4, wherein the address associated with the second application instance is an overlay address assigned to the application instance in the overlay network.

### Claim 6 (depends on 1)

The method of claim 1, wherein the publicly accessible machine of the second datacenter is a first publicly accessible machine, the method further comprising, when the second application instance operates in the second datacenter, receiving a response data message, sent by the second application instance to the first application instance, from a second publicly accessible machine of the first datacenter.

### Claim 7 (depends on 1)

The method of claim 1, wherein the application instances of the cluster form a complete graph in the overlay network, wherein each application instance is connected to every other application instance in the cluster.

### Claim 8 (depends on 1)

The method of claim 1 further comprising:
maintaining a cluster topology that identifies the datacenter m which each application instance of the cluster operates;
receiving a request for at least a portion of the cluster topology from the first application instance; and
providing the requested portion of the cluster topology to the first application instance,
wherein the first application instance generates data messages based on the cluster topology.

### Claim 9 (depends on 1)

The method of claim 1, wherein the cluster of application instances is a first cluster and the overlay network is a first overlay network, the method further comprising:
receiving a data message from a third application instance of a second cluster of application instances destined for a fourth application instance in a third datacenter, the third application instance operating on the first machine;
encapsulating the data message according to a second overlay network defined for the second cluster of application instances; and
forwarding the data message to a publicly accessible machine of the third datacenter.

### Claim 10 (depends on 1)

The method of claim 1, wherein forwarding the encapsulated data message to a publicly accessible machine comprises identifying a particular publicly accessible machine from a plurality of publicly accessible machines in the second datacenter.

### Claim 11 (depends on 10)

The method of claim 10, wherein the encapsulated data message is a part of a group of data messages, wherein forwarding the encapsulated data message further comprises sending each data message of the group of data messages to the particular publicly accessible machine.

### Claim 12 (depends on 10)

The method of claim 10 further comprising forwarding a second data message destined for the second application instance to a different publicly accessible machine of the plurality of publicly accessible machines.

### Claim 13

A non-transitory machine readable medium storing a program which when executed by at least one processing unit processes data messages through an overlay network for a cluster of application instances operating on machines located across a plurality of datacenters, the program comprising sets of instructions for:
receiving a data message, from a first application instance of the cluster operating on a first machine in a first datacenter, destined to a second application instance of the cluster;
when the second application instance operates on a machine in a different, second datacenter:
encapsulating the data message according to an overlay network defined for the cluster of application instances; and
forwarding the encapsulated data message to a publicly accessible machine of the second datacenter, wherein only a subset of the application instances operating in the second datacenter operate on publicly accessible machines; and
when the second application instance operates on a machine in the first datacenter, forwarding the data message directly to the machine on which the second application instance operates.

### Claim 14 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the program further comprises sets of instructions for:
maintaining a cluster topology of the cluster of application instances that identifies, for each application instance of the cluster, the datacenter in which the application instance operates; and
updating a set of forwarding tables based on the cluster topology, wherein the set of forwarding tables are used to forward data messages.

### Claim 15 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the set of instructions for encapsulating the data message comprises a set of instructions for using a tunneling protocol.

### Claim 16 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the encapsulated data message comprises an address associated with the second application instance, wherein when the encapsulated data message is forwarded to a publicly accessible machine of the second datacenter a cluster manager operating on the publicly accessible machine captures the encapsulated data message and forwards the encapsulated data message to the address associated with the second application instance.

### Claim 17 (depends on 16)

The non-transitory machine readable medium of claim 16, wherein the address associated with the second application instance is an overlay address assigned to the application instance in the overlay network.

### Claim 18 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the publicly accessible machine of the second datacenter is a first publicly accessible machine, the program further comprising a set of instructions for, when the second application instance operates in the second datacenter, receiving a response data message, sent by the second application instance to the first application instance, from a second publicly accessible machine of the first datacenter.

### Claim 19 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the cluster of application instances is a first cluster and the overlay network is a first overlay network, the program further comprising sets of instructions for:
receiving a data message from a third application instance of a second cluster of application instances destined for a fourth application instance in a third datacenter, the third application instance operating on the first machine;
encapsulating the data message according to a second overlay network defined for the second cluster of application instances; and
forwarding the data message to a publicly accessible machine of the third datacenter.

### Claim 20 (depends on 13)

The non-transitory machine readable medium of claim 13, wherein the set of instructions for forwarding the encapsulated data message to a publicly accessible machine comprises a set of instructions for identifying a particular publicly accessible machine from a plurality of publicly accessible machines in the second datacenter.

### Claim 21 (depends on 10)

The non-transitory machine readable medium of claim 10, wherein the program further comprises a set of instructions for forwarding a second data message destined for the second application instance to a different publicly accessible machine of the plurality of publicly accessible machines.
