# US 10,484,282 B2 · Interconnecting multiple separate openflow domains

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

- Number: US 10,484,282 B2
- Document ID: US10484282B2
- Status: Granted
- Kind: B2
- Application number: 14/993,177
- Filed: 2016-01-12
- Published: 2017-07-13
- Granted: 2019-11-19
- Earliest claimed: 2016-01-12
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Venkata Siva N. Amulothu; Ashish Kapur; Vishal Shukla
- Web page: https://patentgrep.com/patent/US10484282B2

## CPC

- H04L 12/4625: {Single bridge functionality, e.g. connection of two networks over a single bridge}
- H04L 45/7453: using hashing
- 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 45/04: {Interdomain routing, e.g. hierarchical routing}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A computer-implemented method comprising: receiving, by a first controller device in a first OpenFlow domain, a packet from an originating endpoint in the first OpenFlow domain destined for a destination endpoint in a second OpenFlow domain that is separate from the first OpenFlow domain; outputting, by the first controller device, a broadcast message identifying the destination endpoint to a plurality of respective controller devices associated with separate OpenFlow domains; receiving, by the first controller device, a response to the broadcast message from the destination endpoint via a second controller device associated with the second OpenFlow domain; updating, by the first controller device, a local flow table identifying a flow for transmitting the packet to the destination endpoint based on information included in the response; and transmitting, by the first controller device, the packet towards the destination endpoint based on updating the local flow table.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, by a first controller device in a first OpenFlow domain, a packet from an originating endpoint in the first OpenFlow domain destined for a destination endpoint in a second OpenFlow domain that is separate from the first OpenFlow domain;
outputting, by the first controller device, a broadcast message including an identifier that identifies the destination endpoint to a plurality of respective controller devices associated with separate OpenFlow domains, wherein the outputting the broadcast message causes each of the respective controller devices to query each of a plurality of endpoint devices within each of the respective separate OpenFlow domains and causes the destination endpoint device that matches the identifier to provide a response to the broadcast message to identify flow information for providing the packet to the destination endpoint;
receiving, by the first controller device, the response to the broadcast message from the destination endpoint via a second controller device associated with the second OpenFlow domain, wherein the response received is from the destination endpoint device that matches the identifier included in the broadcast message;
updating, by the first controller device, a local flow table identifying a flow for transmitting the packet to the destination endpoint based on the flow information included in the response; and
transmitting, by the first controller device, the packet towards the destination endpoint based on updating the local flow table.

### Claim 2 (depends on 1)

The method of claim 1, further comprising installing the flow in an edge device of the first OpenFlow domain based on the flow information included in the response, wherein the transmitting the packet includes transmitting the packet via the edge device.

### Claim 3 (depends on 1)

The method of claim 1, wherein:
outputting the broadcast message includes transmitting the broadcast message via a first edge device of the first OpenFlow domain to a plurality of respective edge devices associated with separate OpenFlow domains; and
the receiving the response includes receiving the response via the first edge device from the second controller device via a second edge device of the second OpenFlow domain.

### Claim 4 (depends on 3)

The method of claim 3, wherein the first edge device encrypts the broadcast message prior to transmitting the broadcast message, and decrypts the response prior to the first controller receiving the response.

### Claim 5 (depends on 1)

The method of claim 1, further comprising periodically communicating with the plurality of respective controller devices to synchronize the local flow table of the first controller with local flow tables of the plurality of respective controller devices.

### Claim 6 (depends on 5)

The method of claim 5, wherein the periodically communicating comprises:
receiving a hash value of a local flow table from a particular controller device of a particular separate OpenFlow domain; and
requesting an updated local flow table from the particular controller device when the hash value does not match a hash value of the local flow table currently stored by the first controller device of the first OpenFlow domain.

### Claim 7 (depends on 5)

The method of claim 5, wherein the periodically communicating comprises outputting a hash value of the local flow table currently stored by the first controller device to the plurality of respective controller devices.

### Claim 8 (depends on 1)

The method of claim 1, wherein the first OpenFlow domain and the separate OpenFlow domains are associated with software defined networks (SDNs).

### Claim 9 (depends on 1)

The method of claim 1, wherein the outputting the broadcast message and the receiving the response to the broadcast message include outputting the broadcast message and receiving the response to the broadcast message via a virtual private network (VPN).

### Claim 10 (depends on 1)

The method of claim 1, wherein a service provider at least one of creates, maintains, deploys and supports the first controller device.

### Claim 11 (depends on 1)

The method of claim 1, wherein steps of claim 1 are provided by a service provider on a subscription, advertising, and/or fee basis.

### Claim 12 (depends on 1)

The method of claim 1, wherein the first controller device includes software provided as a service in a cloud environment.

### Claim 13 (depends on 1)

The method of claim 1, further comprising deploying a computer infrastructure operable to perform the steps of claim 1.

### Claim 14 (depends on 1)

The method of claim 1, wherein the response indicates that the destination endpoint device is a recipient of the packet.

### Claim 15 (depends on 14)

The method of claim 14, further comprising searching, by the first controller device, the local flow table for the destination endpoint, wherein the outputting the broadcast message is based on the searching the local flow table.

### Claim 16 (depends on 15)

The method of claim 15, further comprising determining, by the first controller device, whether the destination endpoint is found in the local flow table, wherein the outputting the broadcast message is further based on determining that the destination endpoint is not found in the local flow table.

### Claim 17 (depends on 16)

The method of claim 16, further comprising installing, by the first controller device, flow information in an edge device when the destination endpoint is found in the local flow table.

### Claim 18

A system comprising:
a plurality of separate OpenFlow domains, each of the plurality of separate OpenFlow domains comprising:
a plurality of endpoint devices;
a controller device; and
a plurality of edge devices;
wherein the plurality of endpoint devices from a first OpenFlow domain of the plurality of separate OpenFlow domains is accessible by the plurality of endpoint devices from a second OpenFlow domain of the plurality of separate OpenFlow domains via respective controller devices associated with the first OpenFlow domain and the second OpenFlow domain, and via respective ones of the plurality of edge devices, by sharing local flow information between the respective ones of the plurality of edge devices via direct communications between the respective controller devices associated with the first OpenFlow domain and the second OpenFlow domain,
wherein the first controller of the first OpenFlow domain includes:
a CPU, a computer readable memory and a computer readable storage medium associated with a computing device;
program instructions to receive a packet from an originating endpoint in the first OpenFlow domain destined for a destination endpoint in the second OpenFlow domain;
program instructions to output a broadcast message including an identifier that identifies the destination endpoint to respective controller devices associated with the separate OpenFlow domains, wherein the outputting the broadcast message causes each of the respective controller devices to query each of a plurality of endpoint devices within each respective separate OpenFlow domain and cause the destination endpoint that matches the identifier to provide a response to the broadcast message to identify flow information for providing the packet to the destination endpoint;
program instructions to receive the response to the broadcast message from the destination endpoint via a controller device associated with the second OpenFlow domain, wherein the response received is from the destination endpoint device that matches the identifier included in the broadcast message;
program instructions to update a local flow table identifying a flow for transmitting the packet to the destination endpoint based on the flow information included in the response; and
program instructions to transmit the packet towards the destination endpoint based on updating the local flow table,
wherein the program instructions are stored on the computer readable storage medium for execution by the CPU via the computer readable memory.
