IP Library Granted Patent US 8,089,904
Granted Patent B2
US 8,089,904 · App. 11/829,925 · Granted Jan 3, 2012

Link inference in large networks based on incomplete data

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 8,089,904
App. No.
11/829,925
Granted
Jan 3, 2012
Kind
B2
Abstract

A network is partitioned into a set of independent partitions, and the topology of each partition is determined, then merged to form a topology of the entire network. Preferably, the partitioning is hierarchical, wherein the network is partitioned to form individual VLAN partitions, and each of the VLAN partitions is further partitioned based on the nodes that are simply connected to each port of one or more selected root switches within the VLAN partition. Simple connections to each port are efficiently determined based on an aggregate address forwarding table associated with each node. Ancillary information, such as spanning tree or CDP data, may be used to facilitate efficient partitioning and/or to validate inferences that are made with incomplete information.

Claims (96)

1. A method comprising:

receiving, at a network analysis machine, a plurality of address forwarding tables that define address sets associated with ports of nodes in a network,

selecting a root node from the nodes of the network,

creating, by the network analysis machine, a partition associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port, based on the address forwarding tables,

if any nodes remain that have not been included in at least one partition, selecting a node from among the remaining nodes as the root node and repeating the creating of partitions associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port, until each node of the network has been included in at least one partition,

determining, by the network analysis machine, a topology of each partition based at least in part on the address forwarding tables, and

merging, by the network analysis machine, the topologies of the partitions to determine a topology of the network.

2. The method of claim 1 , including defining an aggregate forwarding table associated with each node that includes the address sets associated with each of the ports of the node, wherein determining the other nodes of the network that are simply connected to each port of the root node includes identifying a non-null intersection between the aggregate forwarding table of the root node and the aggregate forwarding table of the other node.

3. The method of claim 1 , wherein the network corresponds to a virtual network of a plurality of virtual networks that are included in a larger network, and the method includes:

processing each virtual network as the network of claim 1 to determine a topology of each virtual network, and

merging the topologies of the virtual networks to determine a topology of the larger network.

4. The method of claim 3 , including determining the nodes that are included in each virtual network.

5. The method of claim 4 , including identifying one or more nodes that do not include an explicit identification of an associated virtual network as being included in at least one default virtual network.

6. The method of claim 4 , including defining a plurality of default virtual networks based on a plurality of protocols, and identifying one or more nodes that do not include an explicit identification of an associated virtual network as being included in at least one of the plurality of default virtual networks based on a protocol associated with the node.

7. The method of claim 4 , including defining an aggregate forwarding table associated with each node that includes the address sets associated with each of the ports of the node, wherein determining the other nodes of the network that are simply connected to each port of the root node includes identifying a non-null intersection between the aggregate forwarding table of the root node and the aggregate forwarding table of the other node.

8. The method of claim 1 , including identifying any OSI Level-3 devices that are connected to each port of the root node.

9. The method of claim 1 , wherein:

one or more of the address forwarding tables includes an identification of an aggregate interface that includes a plurality of associated ports, and

determining the topology of each partition includes determining connections of aggregate interfaces within the partition, if any, and identifying a corresponding set of connections for each of the plurality of ports associated with each aggregate interface.

10. The method of claim 1 , wherein determining the topology of each partition includes:

determining a set of second-level root nodes, each second-level root node being directly coupled to a corresponding port of the root node,

creating a set of second-level partitions, each second-level partition being associated with each port of each second level root node and includes each of the other nodes of the network that are simply connected to the port of the second-level root node,

determining a topology of each second-level partition, and

merging the topology of each second-level partition to determine the topology of each partition.

11. The method of claim 1 , wherein determining the topology of one or more partitions includes iteratively determining topologies of lower-level partitions, each lower-level partition including nodes of the network that are simply connected to a port of a root node in a higher-level partition.

12. The method of claim 11 , wherein determining the topology of one or more of the lower-level partitions includes using sources of connectivity information beyond the address forwarding tables.

13. The method of claim 12 , wherein at least one source of connectivity information includes at least one of Cisco Discovery Protocol (CDP) and a spanning-tree routing algorithm.

14. The method of claim 11 , including determining the root node at each level of partitioning by identifying one or more nodes that are likely to be directly connected to each port of a corresponding root node at a next higher level of partitioning.

15. The method of claim 14 , wherein identifying the one or more nodes includes applying an address forwarding table intersection test to eliminate any node whose root port cannot be directly connected to the port of the corresponding root node at the next higher level of partitioning.

16. The method of claim 15 , wherein identifying the one or more nodes includes applying an aggregate address forwarding table intersection test to eliminate any node that has a simple connection on its root port with another remaining node.

17. The method of claim 16 , wherein identifying the one or more nodes includes applying a heuristic priority scheme to identify ports that are likely to be connected together.

18. The method of claim 17 , wherein applying the heuristic priority scheme for identifying the one or more nodes includes determining whether:

the address forwarding table of the root port of the node includes the root node;

the address forwarding table of the port of the root node includes the node; and

a Through-Set intersection of the root port of the node and the port of the root node is null.

19. A system comprising:

a memory that is configured to store a plurality of address forwarding tables that define address sets associated with ports of nodes in a network,

a network partitioner that is configured to:

select a root node from the nodes of the network,

create a partition associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port based on the address forwarding tables,

select a node from among the remaining nodes as the root node if any nodes remain that have not been included in at least one partition, and repeat the creating of partitions associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port until each node of the network has been included in at least one partition, and

determine a topology of each partition based at least in part on the address forwarding tables, and

a link merger that is configured to merge the topologies of the partitions to determine a topology of the network.

20. The system of claim 19 , wherein the network partitioner is configured to:

define an aggregate forwarding table associated with each node that includes the address sets associated with each of the ports of the node, and

determine the other nodes of the network that are simply connected to each port of the root node by identifying a non-null intersection between the aggregate forwarding table of the root node and the aggregate forwarding table of the other node.

21. The system of claim 19 , wherein the network corresponds to a virtual network of a plurality of virtual networks that are included in a larger network, and the network partitioner is configured to:

process each virtual network as the network of claim 19 to determine a topology of each virtual network, and

merge the topologies of the virtual networks to determine a topology of the larger network.

22. The system of claim 19 , wherein the network partitioner is configured to determine the nodes that are included in each virtual network.

23. The system of claim 22 , wherein the network partitioner is configured to identify one or more nodes that do not include an explicit identification of an associated virtual network as being included in at least one default virtual network.

24. The system of claim 22 , wherein the network partitioner is configured to:

define a plurality of default virtual networks based on a plurality of protocols, and

identify one or more nodes that do not include an explicit identification of an associated virtual network as being included in at least one of the plurality of default virtual networks based on a protocol associated with the node.

25. The system of claim 22 , wherein the network partitioner is configured to:

define an aggregate forwarding table associated with each node that includes the address sets associated with each of the ports of the node, and

determine the other nodes of the network that are simply connected to each port of the root node by identifying a non-null intersection between the aggregate forwarding table of the root node and the aggregate forwarding table of the other node.

26. The system of claim 19 , wherein the network partitioner is configured to identify any OSI Level-3 devices that are connected to each port of the root node.

27. The system of claim 19 , wherein:

one or more of the address forwarding tables includes an identification of an aggregate interface that includes a plurality of associated ports, and

the network partitioner is configured to determine the topology of each partition by determining connections of aggregate interfaces within the partition, if any, and identifying a corresponding set of connections for each of the plurality of ports associated with each aggregate interface.

28. The system of claim 19 , including a root switch finder that is configured to determine a set of second-level root nodes, each second-level root node being directly coupled to a corresponding port of the root node, and wherein the network partitioner is configured to:

create a set of second-level partitions, each second-level partition being associated with each port of each second level root node and includes each of the other nodes of the network that are simply connected to the port of the second-level root node,

determine a topology of each second-level partition, and

merge the topology of each second-level partition to determine the topology of each partition.

29. The system of claim 28 , wherein the root switch finder is configured to determine at least one of the set of second-level root nodes by using sources of connectivity information beyond the address forwarding tables.

30. The system of claim 29 , wherein at least one source of connectivity information includes at least one of Cisco Discovery Protocol (CDP) and a spanning-tree routing algorithm.

31. The system of claim 28 , wherein the root switch finder is configured to determine at least one of the set of second-level root nodes by identifying one or more nodes that likely to be directly connected to each port of a corresponding root node at a next higher level of partitioning.

32. The system of claim 31 , wherein the root switch finder is configured to determine at least one of the set of second-level root nodes by applying an address forwarding table intersection test to eliminate any node whose root port cannot be directly connected to the port of the corresponding root node at the next higher level of partitioning.

33. The system of claim 32 , wherein the root switch finder is configured to determine at least one of the set of second-level root nodes by applying an aggregate address forwarding table intersection test to eliminate any node that has a simple connection on its root port with another remaining node.

34. The system of claim 33 , wherein the root switch finder is configured to determine at least one of the set of second-level root nodes by applying a heuristic priority scheme to identify ports that are likely to be connected together.

35. The system of claim 34 , wherein applying the heuristic priority scheme for identifying the one or more nodes includes determining whether:

the address forwarding table of the root port of the node includes the root node;

the address forwarding table of the port of the root node includes the node; and

a Through-Set intersection of the root port of the node and the port of the root node is null.

36. The system of claim 19 , wherein the network partitioner is configured to iteratively determine topologies of lower-level partitions, each lower-level partition including nodes of the network that are simply connected to a port of a root node in a higher-level partition.

37. A computer program stored on a non-transient computer readable medium that, when executed, is configured to cause a processor to:

receive a plurality of address forwarding tables that define address sets associated with ports of nodes in a network,

select a root node from the nodes of the network,

create a partition associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port, based on the address forwarding tables,

select a node from among the remaining nodes as the root node if any nodes remain that have not been included in at least one partition, and repeat the creating of partitions associated with each port of the root node that includes each of the other nodes of the network that are simply connected to the port until each node of the network has been included in at least one partition, and

determine a topology of each partition based at least in part on the address forwarding tables, and

merge the topologies of the partitions to determine a topology of the network.

38. The program of claim 37 , wherein the program is configured to cause the processor to:

define an aggregate forwarding table associated with each node that includes the address sets associated with each of the ports of the node, and

determine the other nodes of the network that are simply connected to each port of the root node by identifying a non-null intersection between the aggregate forwarding table of the root node and the aggregate forwarding table of the other node.

39. The program of claim 37 , wherein the program is configured to cause the processor to identify any OSI Level-3 devices that are connected to each port of the root node.

40. The program of claim 37 , wherein:

one or more of the address forwarding tables includes an identification of an aggregate interface that includes a plurality of associated ports, and

the program is configured to cause the processor to determine the topology of each partition by determining connections of aggregate interfaces within the partition, if any, and identifying a corresponding set of connections for each of the plurality of ports associated with each aggregate interface.

41. The program of claim 37 , wherein the program is configured to cause the processor to:

determine a set of second-level root nodes, each second-level root node being directly coupled to a corresponding port of the root node,

create a set of second-level partitions, each second-level partition being associated with each port of each second level root node and includes each of the other nodes of the network that are simply connected to the port of the second-level root node, and

determine a topology of each second-level partition, and

merge the topology of each second-level partition to determine the topology of each partition.

42. The program of claim 37 , wherein the program is configured to cause the processor to iteratively determine topologies of lower-level partitions, each lower-level partition including nodes of the network that are simply connected to a port of a root node in a higher-level partition.

Assignments (21)
RELEASE OF SECURITY INTEREST Recorded Aug 11, 2023
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC; RIVERBED HOLDINGS, INC.
Reel/Frame 064673/0739 →
CHANGE OF NAME Recorded Feb 18, 2022
From: RIVERBED TECHNOLOGY, INC.
To: RIVERBED TECHNOLOGY LLC
Reel/Frame 059232/0551 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0169 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0108 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Dec 27, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 058593/0046 →
SECURITY INTEREST Recorded Dec 10, 2021
From: RIVERBED TECHNOLOGY LLC (FORMERLY RIVERBED TECHNOLOGY, INC.); ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS U.S. COLLATERAL AGENT
Reel/Frame 058486/0216 →
PATENT SECURITY AGREEMENT Recorded Oct 27, 2021
From: RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 057943/0386 →
PATENT SECURITY AGREEMENT SUPPLEMENT - SECOND LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 057810/0559 →
PATENT SECURITY AGREEMENT SUPPLEMENT - FIRST LIEN Recorded Oct 14, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 057810/0502 →
RELEASE OF SECURITY INTEREST IN PATENTS RECORED AT REEL 056397, FRAME 0750 Recorded Oct 13, 2021
From: MACQUARIE CAPITAL FUNDING LLC
To: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
Reel/Frame 057983/0356 →
SECURITY INTEREST Recorded May 26, 2021
From: RIVERBED HOLDINGS, INC.; RIVERBED TECHNOLOGY, INC.; ATERNITY LLC
To: MACQUARIE CAPITAL FUNDING LLC
Reel/Frame 056397/0750 →
PATENT SECURITY AGREEMENT Recorded Mar 5, 2021
From: RIVERBED TECHNOLOGY, INC.
To: ALTER DOMUS (US) LLC, AS COLLATERAL AGENT
Reel/Frame 055514/0249 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
SECURITY INTEREST Recorded May 1, 2015
From: RIVERBED TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 035561/0363 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 21, 2013
From: OPNET TECHNOLOGIES LLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 030459/0372 →
CHANGE OF NAME Recorded May 14, 2013
From: OPNET TECHNOLOGIES, INC.
To: OPNET TECHNOLOGIES LLC
Reel/Frame 030411/0310 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2007
From: BALASUBRAMANIAM, RAJESH; SHAW, JAMES MARK
To: OPNET TECHNOLOGIES, INC
Reel/Frame 019619/0463 →