# US 2014/0195666 A1 · System and method for implementing and managing virtual networks

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

- Number: US 2014/0195666 A1
- Document ID: US20140195666A1
- Status: Published application
- Kind: A1
- Application number: 14/236,020
- Filed: 2012-08-06
- Published: 2014-07-10
- Earliest claimed: 2011-08-04
- Assignees: Midokura Sarl
- Applicants: Midokura SARL
- Inventors: Dan Mihai Dumitriu; Romain F.V. Lenglet; Giuseppa De Candia; Jacob L. Mandelson
- Web page: https://patentgrep.com/patent/US20140195666A1

## CPC

- H04L 41/40: using virtualisation of network functions or resources, e.g. SDN or NFV entities
- H04L 43/55: Testing of service level quality, e.g. simulating service usage
- H04L 12/4625: {Single bridge functionality, e.g. connection of two networks over a single bridge}
- H04L 41/145: {involving simulating, designing, planning or modelling of a network}
- H04L 49/70: {Virtual switches}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system and method for implementing and management virtual networks is disclosed. A method includes receiving a network packet arriving at a first network interface of a first node of an underlying network, communicating at least the packet and an identifier of the first network interface to a decision engine, determining how the packet should be processed based on a simulation by the decision engine of a traversal of a virtual network topology including a plurality of virtual network devices, wherein the decision engine communicates with a shared database accessible from the underlying network that stores the virtual network topology and virtual device configurations for the plurality of virtual network devices; and processing the packet based upon the simulation.

## Claims

### Claim 1

A computing method comprising:
receiving a network packet arriving at a first network interface of a first node of an underlying network, the underlying network comprising a plurality of interconnected nodes,
communicating at least the packet and an identifier of the first network interface to a decision engine,
determining how the packet should be processed based on a simulation by the decision engine of a traversal of a virtual network topology including a plurality of virtual network devices, wherein the decision engine communicates with a shared database accessible from the underlying network that stores the virtual network topology and virtual device configurations for the plurality of virtual network devices; and
processing the packet based upon the simulation.

### Claim 2 (depends on 1)

The computing method of claim 1, wherein each node of the underlying network is configured to run the decision engine to perform the simulation to determine how a packet arriving at the node should be processed.

### Claim 3 (depends on 1)

The computing method of claim 1, wherein determining how the packet should be processed includes determining a packet protocol header pattern associated with a result of the simulation by the decision engine for the packet, the method further comprising:
storing the packet protocol header pattern and the result of the simulation for the packet,
receiving a second packet at the first node of the underlying network,
comparing the second packet to the packet protocol header pattern,
if the second packet matches the packet protocol header pattern, determining how the second packet should be processed by retrieving the stored result of the simulation for the packet, and
processing the second packet based on the retrieved result of the simulation by the decision engine for the packet.

### Claim 4 (depends on 3)

The computing method of claim 3, wherein the packet includes a protocol header having a plurality of fields, and wherein determining the packet protocol header pattern includes identifying each of the fields of the protocol header that were read during the simulation by the decision engine of the traversal of the virtual network topology including by the plurality of virtual network devices.

### Claim 5 (depends on 4)

The computing method of claim 4, wherein the packet protocol header includes a wildcard for any field of the protocol header that was not read during the simulation by the decision engine.

### Claim 6 (depends on 1)

The computing method of claim 1, wherein the packet includes a protocol header, wherein the simulation further includes determining modifications to the packet's protocol header as the packet would be emitted by a virtual network device, and wherein processing the packet includes applying the determined modification to the packet's protocol header.

### Claim 7 (depends on 1)

The computing method of claim 1 further comprising:
wherein determining how the packet should be processed includes determining that the packet should be emitted from a second network interface of the first node of the underlying network, and
wherein processing the packet includes emitting the packet from the second network interface.

### Claim 8 (depends on 1)

The computing method of claim 1 further comprising:
wherein determining how the packet should be processed includes determining that the packet should be emitted from a second network interface of a second node of the underlying network, and
wherein processing the packet includes delivering the packet to the second node of the underlying network and emitting the packet from the second network interface.

### Claim 9 (depends on 8)

The computing method of claim 8 further comprising:
wherein determining how the packet should be processed includes determining how the packet's protocol headers should be modified before delivery to the second node of the underlying network.

### Claim 10 (depends on 8)

The computing method of claim 8 further comprising:
wherein processing the packet includes forwarding the packet from the first node to the second node as a payload of a tunneling protocol packet having a tunnel key, wherein the tunnel key encodes a global identifier of the second network interface.

### Claim 11 (depends on 10)

The computing method of claim 10 further comprising:
emitting the packet from the second network interface without invoking the decision engine on the second node of the underlying network.

### Claim 12 (depends on 1)

The computing method of claim 1 further comprising:
determining that the packet should be emitted from a set of network interfaces corresponding to an interface set identifier, wherein at least a portion of the network interfaces are located on a second node of the underlying network,
wherein processing the packet includes delivering the packet to each network interface in the set of network interfaces that are local to the first node, and forwarding the packet from the first node to the second node as the payload of a tunneling protocol packet using a tunnel key that encodes the interface set identifier.

### Claim 13 (depends on 10)

The computing method of claim 10, wherein the underlying network supports multicasting, the method further comprising:
mapping each interface set identifier to a multicast address,
maintaining, for each node of the underlying network, a multicast subscription for each of the interface set identifiers to which at least one network interface of the node belongs, and
multicasting the packet as the payload of the tunneling protocol packet to at least the second node, and
for each node, emitting the packet from any network interfaces corresponding to the interface set that are local to that node.

### Claim 14 (depends on 10)

The computing method of claim 10, wherein the underlying network does not support multicasting, the method further comprising:
determining a set of underlying network nodes that have local network interfaces that belong to the set of network interfaces,
forwarding the packet from the first node to each node in the set of underlying network nodes, and
for each node, emitting the packet from any network interfaces corresponding to the interface set that are local to that node.

### Claim at position 15

-70. (canceled)

### Claim 71

A computing system comprising:
a plurality of nodes interconnected by an underlying network, wherein each node includes one or more network interfaces,
a plurality of virtual devices operable on the plurality of nodes, each virtual device having a plurality of virtual ports, wherein each virtual port corresponds to one of an exterior facing port associated with one of the network interfaces of the nodes of the underlying network, or an interior facing port associated with a virtual link between virtual network devices,
a shared database storing a virtual network topology including a configuration of the virtual ports and the virtual devices, and
a decision engine operable to simulate a network packet's traversal of the virtual network topology from a first virtual device to a last virtual device, determine a protocol header modification to be applied to the network packet to match the packet as emitted from the last virtual device, and apply the determined protocol header modifications to subsequent packets matching a packet protocol header pattern associated with the protocol header modifications.

### Claim 72 (depends on 71)

The computing system of claim 71, wherein the decision engine is further operable to simulate a MAC-learning bridge and update a MAC-learning table for each MAC-learning bridge in the shared database.

### Claim 73 (depends on 71)

The computing system of claim 71, wherein the decision engine is further operable to identify IP packets and extract a source IP address and a source MAC address of an encapsulating Ethernet frame, and update an ARP cache of an virtual bridge to associate the identified IP address and MAC address.

### Claim 74 (depends on 71)

The computing system of claim 71, wherein the decision engine is further configured to simulate at least one of an ingress filter and an egress filter of at least one virtual device, wherein each filter includes filtering rules to be applied to packets matching a specified condition.

### Claim 75 (depends on 71)

The computing system of claim 71, wherein the decision engine is further configured to simulate a network address translation for at least one of the virtual devices and store the network address translation of both a forward flow and a reverse flow in the shared database.

### Claim 76 (depends on 71)

The computing system of claim 71, wherein the decision engine is further configured to dynamically assign an IP address from a DHCP resource and store the assigned IP address in the shared database.
