IP Library Granted Patent US 10,382,529
Granted Patent B2
US 10,382,529 · App. 15/011,332 · Granted Aug 13, 2019

Directed graph based span computation and configuration dispatching

Inventors: Da Wan (Beijing, CN); Jianjun Shen (Beijing, CN); Maxim Novikov (Mountain View, CA); Donghai Han (Beijing, CN); Hua Wang (Beijing, CN)
Assignee: NICIRA, INC.
H04L67/10H04L45/02H04L45/64
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,382,529
App. No.
15/011,332
Granted
Aug 13, 2019
Kind
B2
Abstract

A method of determining the span of logical entities in a network is provided. The method generates a directed graph. Each node of the graph corresponds to a logical network entity. Each edge of the graph has one or two directions. A direction from a first node to a second node identifies the first node as the source of span for the second node. The method determines the span of each node based on the direction of the edges of the directed graph. The method groups each set of nodes that are accessible by all other nodes in the set in a strongly connected group (SCC) sub-graph. The method generates a group node in a directed acyclic graph (DAG) to correspond to each SCC sub-graph in the directed graph. The method assigns the span of each SCC to the corresponding group node of the DAG.

Claims (66)

1. A method of determining a span of logical entities in a network comprising a set of logical entities and a set of transport nodes, the span of each logical entity comprising a set of transport nodes requiring configuration data for the logical entity, the method comprising:

generating a directed graph comprising a plurality of entity nodes and a plurality of edges, each entity node corresponding to a logical network entity, each edge between a pair of entity nodes representing a relationship between a pair of logical network entities corresponding to the pair of entity nodes, each edge having one or two directions, wherein a subset of the entity nodes have assigned spans and an edge direction from a first entity node to a second entity node specifies that a span of the second entity node includes a span of the first entity node;

determining a span of each entity node based on the direction of the edges of the directed graph and the assigned spans of the subset of the entity nodes;

based on the determined spans, grouping entity nodes of the directed graph into a plurality of strongly connected group (SCC) sub-graphs such that (i) each entity node in each SCC is accessible from any other entity node in the SCC and (ii) each entity node in each SCC has a same span as each other entity node in the SCC;

mapping the directed graph into a directed acyclic graph (DAG) by (i) generating a group node for each SCC sub-graph in the directed graph, (ii) assigning the span of each SCC to the corresponding group node of the DAG, and (iii) storing the span of each SCC as the span of the SCC's corresponding group node in order to avoid storing multiple copies of a same span record for each individual entity node in each SCC, thereby reducing the number of stored span records; and

dispatching configuration data for each logical entity to the set of transport nodes in the span of the group node associated with the logical entity.

2. The method of claim 1 , wherein a transport node is one of a physical host, a virtualization software executing on a physical host, and a network gateway.

3. The method of claim 1 , wherein the span of each group node of the DAG comprises a set of counter values, wherein each counter value in the set of counter values represents a source for the span.

4. The method of claim 1 further comprising assigning a transport node as the span of a particular entity node of the directed graph that is in the subset of the entity nodes having assigned spans when the particular entity node of the directed graph is connected to another node of the directed graph that corresponds to the transport node, wherein determining the span of each entity node comprises setting the span of each entity node of the directed graph as a union of the spans of all entity nodes of the directed graph that have spans that are included in the span for the particular entity node.

5. The method of claim 1 further comprising:

receiving a network configuration change resulting in an edge to be added between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the added edge;

when the two entity nodes are in two different SCCs of the directed graph, traversing the DAG to determine whether the group nodes corresponding to the two SCCs are to be merged; and

updating the directed graph and the DAG when the two SCCs are determined to be merged.

6. The method of claim 1 further comprising:

receiving a network configuration change resulting in a removal of an edge between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the removed edge;

when the two entity nodes are in a same SCC of the directed graph, traversing only the entity nodes in the SCC that includes the two entity nodes to determine whether the SCC is to be split into a plurality of SCCs; and

updating the directed graph and the DAG when the SCC is determined to be split.

7. The method of claim 1 , wherein at least one entity node in the subset of entity nodes having assigned spans represents a virtual interface (VIF) that attaches to a logical port of a logical switch, wherein determining the span of each entity node comprises determining that (i) the span of an entity node representing logical port includes the span of the entity node representing the VIF and (ii) the span of an entity node representing the logical switch includes the span of the logical port.

8. The method of claim 7 , wherein the logical switch comprises a plurality of logical ports attached to VIFs operating on a plurality of transport nodes, wherein the determined span of the logical switch comprises the plurality of transport nodes.

9. The method of claim 1 , wherein a particular group of entity nodes in a particular SCC comprises (i) an entity node representing a logical router and (ii) a plurality of entity nodes representing a plurality of logical switches that are connected to the logical router.

10. A non-transitory machine readable medium storing a program for determining a span of logical entities in a network comprising a set of logical entities and a set of transport nodes, the span of each logical entity comprising a set of transport nodes requiring configuration data for the logical entity, the program executable by a processing unit, the program comprising sets of instructions for:

generating a directed graph comprising a plurality of entity nodes and a plurality of edges, each entity node corresponding to a logical network entity, each edge between a pair of entity nodes representing a relationship between a pair of logical network entities corresponding to the pair of entity nodes, each edge having one or two directions, wherein a subset of the entity nodes have assigned spans and an edge direction from a first entity node to a second entity node specifies that a span of the second entity node includes a span of the first entity node;

determining a span of each entity node based on the direction of the edges of the directed graph and the assigned spans of the subset of the entity nodes;

based on the determined spans, grouping entity nodes of the directed graph into a plurality of strongly connected group (SCC) sub-graphs such that (i) each entity node in each SCC is accessible from any other entity node in the SCC and (ii) each entity node in each SCC has a same span as each other entity node in the SCC;

mapping the directed graph into a directed acyclic graph (DAG) by (i) generating a group node for each SCC sub-graph in the directed graph, (ii) assigning the span of each SCC to the corresponding group node of the DAG, and (iii) storing the span of each SCC as the span of the SCC's corresponding group node in order to avoid storing multiple copies of a same span record for each individual entity node in a SCC, thereby reducing the number of stored span records; and

dispatching configuration data for each logical entity to the set of transport nodes in the span of the group node associated with the logical entity.

11. The non-transitory machine readable medium of claim 10 , wherein a transport node is one of a physical host, a virtualization software executing on a physical host, and a network gateway.

12. The non-transitory machine readable medium of claim 10 , wherein the span of each group node of the DAG comprises a set of counter values, wherein each counter value in the set of counter values represents a source for the span.

13. The non-transitory machine readable medium of claim 10 , wherein:

the program further comprises a set of instructions for assigning a transport node as the span of a particular entity node of the directed graph that is in the subset of the entity nodes having assigned spans when the particular entity node of the directed graph is connected to another node of the directed graph that corresponds to the transport node; and

the set of instructions for determining the span of each entity node comprises a set of instructions for setting the span of each entity node of the directed graph as a union of the spans of all entity nodes of the directed graph that have spans that are included in the span for the particular entity node.

14. The non-transitory machine readable medium of claim 10 , the program further comprising sets of instructions for:

receiving a network configuration change resulting in an edge to be added between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the added edge;

when the two entity nodes are in two different SCCs of the directed graph, traversing the DAG to determine whether the group nodes corresponding to the two SCCs are to be merged; and

updating the directed graph and the DAG when the two SCCs are determined to be merged.

15. The non-transitory machine readable medium of claim 10 , the program further comprising sets of instructions for:

receiving a network configuration change resulting in a removal of an edge between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the removed edge;

traversing, when the two entity nodes are in a same SCC of the directed graph, only the entity nodes in the SCC that includes the two entity nodes to determine whether the SCC is to be split into a plurality of SCCs; and

updating the directed graph and the DAG when the SCC is determined to be split.

16. A system comprising:

a set of processing units; and

non-transitory machine readable medium storing a program for determining a span of logical entities in a network comprising a set of logical entities and a set of transport nodes, the span of each logical entity comprising a set of transport nodes requiring configuration data for the logical entity, the program executable by a processing unit in the set of processing units, the program comprising sets of instructions for:

generating a directed graph comprising a plurality of entity nodes and a plurality of edges, each entity node corresponding to a logical network entity, each edge between a pair of entity nodes representing a relationship between a pair of logical network entities corresponding to the pair of entity nodes, each edge having one or two directions, wherein a subset of the entity nodes have assigned spans and an edge direction from a first entity node to a second entity node specifies that a span of the second entity node includes a span of the first entity node;

determining a span of each entity node based on the direction of the edges of the directed graph and the assigned spans of the subset of the entity nodes;

based on the determined spans, grouping entity nodes of the directed graph into a plurality of strongly connected group (SCC) sub-graphs such that (i) each entity node in each SCC is accessible from any other entity node in the SCC and (ii) each entity node in each SCC has a same span as each other entity node in the SCC;

mapping the directed graph into a directed acyclic graph (DAG) by (i) generating a group node for each SCC sub-graph in the directed graph, (ii) assigning the span of each SCC to the corresponding group node of the DAG, and (iii) storing the span of each SCC as the span of the SCC's corresponding group node in order to avoid storing multiple copies of a same span record for each individual entity node in each SCC, thereby reducing the number of stored span records; and

dispatching configuration data for each logical entity to the set of transport nodes in the span of the group node associated with the logical entity.

17. The system of claim 16 , wherein a transport node is one of a physical host, a virtualization software executing on a physical host, and a network gateway.

18. The system of claim 16 , wherein the span of each group node of the DAG comprises a set of counter values, wherein each counter value in the set of counter values represents a source for the span.

19. The system of claim 16 , wherein:

the program further comprises a set of instructions for assigning a transport node as the span of a particular entity node of the directed graph that is in the subset of the entity nodes having assigned spans when the particular entity node of the directed graph is connected to another node of the directed graph that corresponds to the transport node; and

the set of instructions for determining the span of each entity node comprises a set of instructions for setting the span of each entity node of the directed graph as a union of the spans of all entity nodes of the directed graph that have spans that are included in the span for the particular entity node.

20. The system of claim 16 , the program further comprising sets of instructions for:

receiving a network configuration change resulting in an edge to be added between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the added edge;

when the two entity nodes are in two different SCCs of the directed graph, traversing the DAG to determine whether the group nodes corresponding to the two SCCs are to be merged; and

updating the directed graph and the DAG when the two SCCs are determined to be merged.

21. The system of claim 16 , the program further comprising sets of instructions for:

receiving a network configuration change resulting in a removal of an edge between two entity nodes of the directed graph;

updating the directed graph and the corresponding DAG based on the removed edge;

traversing, when the two entity nodes are in a same SCC of the directed graph, only the entity nodes in the SCC that includes the two entity nodes to determine whether the SCC is to be split into a plurality of SCCs; and

updating the directed graph and the DAG when the SCC is determined to be split.

Assignments (2)
MERGER Recorded Jan 27, 2025
From: NICIRA, INC.
To: VMWARE LLC
Reel/Frame 070187/0487 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 29, 2016
From: WAN, DA; SHEN, JIANJUN; NOVIKOV, MAXIM; HAN, DONGHAI; WANG, HUA
To: NICIRA, INC.
Reel/Frame 037625/0807 →
Continuity (1)
Related Publication 20170220697A1 · Aug 3, 2017
Cited By (87)
US 12,206,696 US 12,244,621 US 12,267,345 US 12,309,185 US 12,323,449 US 12,335,286 US 12,335,348 US 12,341,797 US 12,348,545 US 12,355,626 US 12,355,787 US 12,355,793 US 12,363,148 US 12,368,745 US 12,368,746 US 12,368,747 US 12,375,573 US 12,379,942 US 12,395,573 US 12,401,669 US 12,405,849 US 12,407,701 US 12,407,702 US 12,418,552 US 12,418,555 US 12,425,428 US 12,425,430 US 12,445,474 US 12,452,279 US 12,457,231 US 12,463,995 US 12,463,996 US 12,463,997 US 12,464,003 US 12,470,577 US 12,470,578 US 12,483,576 US 12,489,770 US 12,495,052 US 12,500,910 US 12,500,911 US 12,500,912 US 12,505,126 US 12,506,762 US 12,513,221 US 12,537,836 US 12,537,837 US 12,537,839 US 12,537,840 US 12,537,884 US 12,549,575 US 12,549,577 US 12,556,548 US 12,556,559 US 12,563,060 US 12,563,064 US 12,563,071 US 12,563,072 US 12,580,934 US 12,580,935 US 12,580,936 US 12,580,937 US 12,587,553 US 12,592,950 US 12,598,205 US 12,613,930 US 12,615,271 US 12,621,324 US 12,621,329 US 12,627,686 US 12,627,687 US 12,627,690 US 12,634,312 US 12,634,376 US 12,652,302 US 12,659,325 US 12,659,326 US 12,659,327 US 12,659,333 US 12,676,874 US 12,689,638 US 12,689,640 US 12,695,768 US 12,706,932 US 12,706,933 US 12,712,897 US 12,719,896