Overlay network with efficient routing and recovery
First Claim
Patent Images
1. A computer-readable memory medium storing program instructions executable to implement a method comprising:
- determining an ordering for a plurality of N nodes such that the nodes are circularly ordered as nodes D0, D1, D2, . . . DN−
1;
each node Di in the plurality of nodes establishing a link to X other nodes chosen as nodes Di+1, Di+2, . . . Di+X, wrapping to D0 if necessary; and
each node Dj in at least a subset of the plurality of nodes establishing a link with one or more additional chosen nodes not in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+x; and
for each node Dj in the at least the subset, each node in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+x establishing a link with the one or more additional nodes chosen by the node Dj.
9 Assignments
0 Petitions
Accused Products
Abstract
A network having a plurality of nodes interconnected by links (virtual communication channels) is disclosed. In one embodiment, the nodes may communicate with each other in a decentralized or peer-to-peer manner. A method for establishing the links among the nodes is disclosed. The links may be established such that the system is able to operate efficiently. In particular, the manner in which the nodes are interconnected by links may enable the system to efficiently route messages and efficiently recover from network failures.
72 Citations
27 Claims
-
1. A computer-readable memory medium storing program instructions executable to implement a method comprising:
-
determining an ordering for a plurality of N nodes such that the nodes are circularly ordered as nodes D0, D1, D2, . . . DN−
1;each node Di in the plurality of nodes establishing a link to X other nodes chosen as nodes Di+1, Di+2, . . . Di+X, wrapping to D0 if necessary; and each node Dj in at least a subset of the plurality of nodes establishing a link with one or more additional chosen nodes not in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+x; andfor each node Dj in the at least the subset, each node in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+x establishing a link with the one or more additional nodes chosen by the node Dj. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer-readable memory medium storing program instructions executable to implement a method comprising:
-
determining an ordering for a plurality of N nodes such that the nodes are circularly ordered as nodes D0, D1, D2 . . . DN−
1;each node Di in the plurality of nodes establishing a link to X other nodes chosen as Di+1, Di+2, . . . Di+X, wrapping to D0 if necessary; and for each node Dj in at least a subset of the plurality of nodes; the node Dj establishing a link with one or more randomly chosen nodes not in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+X;each node in the set Dj−
x, Dj−
X+1 . . . Dj−
1, Dj+1, Dj+2, . . . Dj+X establishing a link with the one or more nodes randomly chosen by the node Dj.
-
-
17. A computer-readable memory medium storing program instructions executable to implement a method comprising:
-
determining an ordering for a plurality of nodes such that the ordering has a first node, a second node, and so on, up to a last node, wherein the ordering is circular so that the first node follows the last node in the ordering; each node establishing one or more links to one or more nodes immediately following the node in the ordering; and for each respective node of at least a subset of the plurality of nodes, the respective node establishing one or more links to one or more randomly chosen nodes and each of the one or more nodes immediately following the respective node also establishing a link to each of the one or more nodes randomly chosen by the respective node.
-
-
18. A system comprising:
-
a plurality of N nodes; wherein each node is operable to determine an ordering for the plurality of N nodes such that the nodes are circularly ordered as nodes D0, D1, D2, . . . DN−
1;wherein each node Di in the plurality of nodes is operable to establish a link to X other nodes chosen as nodes Di+1, Di+2, . . . Di+X, wrapping to D0 if necessary; and wherein each node Dj in at least a subset of the plurality of nodes is operable to establish a link with one or more additional chosen nodes not in the set Dj−
X, Dj−
X+1 . . . Dj−
1, Dj+1, Dj+2, . . . Dj+x; andwherein for each node Dj in the at least the subset each node in the set Dj−
X, Dj−
X+1, . . . Dj−
1, Dj+1, Dj+2, . . . Dj+X is operable to establish a link with the one or more additional nodes chosen by the node Dj.- View Dependent Claims (19, 20, 21, 22, 23, 24, 25, 26, 27)
-
-
20. The system of claim 19,
wherein said each node Dj in the at least the subset establishing a link with one or more randomly chosen nodes comprises each node Dj in the at least the subset establishing a link with exactly one randomly chosen node. -
21. The system of claim 18,
wherein the plurality of nodes are operable to utilize the established links to communicate in a peer-to-peer manner. -
22. The system of claim 18,
wherein the at least the subset includes nodes whose position in the ordering is a multiple of 2X. -
23. The system of claim 18,
wherein X is at least eighty percent smaller than N. -
24. The system of claim 18,
wherein each node in the plurality of nodes has a unique node ID; wherein said determining the ordering comprises determining an ordering based on the node IDs.
-
25. The system of claim 18,
wherein each link: - between two nodes comprises a virtual communication channel between the two nodes.
-
26. The system of claim 18,
wherein the network comprises a local area network (LAN), wherein the LAN interconnects the plurality of nodes. -
27. The system of claim 18,
wherein one or more nodes in the plurality of nodes are operable to establish one or more additional links to one or more other nodes.
Specification