Claims
- 1. A method for creating an overlay network from a set of networked nodes, the method comprising:
assigning each node a different name; assigning each node a different number, wherein each number is unique over the set of networked nodes and the distribution of numbers over nodes is probabilistically uniform; creating a routing table for each node, wherein each table includes two or more pointers, wherein each pointer points to a particular node that is a different number of positions offset from the current node when the set of networked nodes are ordered lexicographically by name.
- 2. The method of claim 1, wherein nodes that are on the same domain are adjacent to one another when ordered lexicographically by name.
- 3. The method of claim 1, wherein a first pointer in each node's table points to the immediately following node when the nodes are ordered lexicographically by name.
- 4. The method of claim 3, wherein a second pointer in each node's table points to the immediately preceding node when the nodes are ordered lexicographically by name.
- 5. The method of claim 4, wherein a third pointer in each node's table points to a distant node that is K positions ahead when the nodes are ordered lexicographically by name.
- 6. The method of claim 5, wherein a fourth address in each node's table points to a distant node that is K positions behind when the nodes are ordered lexicographically by name.
- 7. The method of claim 1, wherein the pointers are network addresses of nodes.
- 8. The method of claim 7, wherein the network addresses are IP addresses, and wherein the overlay network comprises a subset of the nodes connected to the Internet.
- 9. The method of claim 1, further comprising forming one or more subrings within the overlay network by adding additional addresses to each node's table, wherein the additional addresses identify other nodes belonging to the same subring.
- 10. The method of claim 1, wherein the node names are user email addresses.
- 11. The method of claim 1, wherein the node names are uniform resource locators (URLs).
- 12. The method of claim 1, wherein the node names are DNS (Domain Name Service) names.
- 13. The method of claim 1, further comprising creating a proximity table for each node, wherein the proximity table stores one or more pointers to neighboring nodes based on network location.
- 14. The method of claim 1, further comprising storing two or more leaf set pointers for each node.
- 15. The method of claim 1, further comprising:
hashing a file's name to obtain a globally unique identifier (GUID); finding a node on the overlay network with a closest number to the GUID; and storing the file on that node.
- 16. The method of claim 1, further comprising:
receiving a file name and identifying a node on the overlay network whose name most closely matches the file name; and storing the file associated with the file name on the identified node.
- 17. The method of claim 1, further comprising:
hashing a file's name to obtain a globally unique identifier (GUID), wherein the file's name includes a domain identifier prefix indicating which domain on the overlay network the file should be stored in; finding the node on the overlay network that has the closest number to the GUID of the nodes on the overlay network with node names matching the domain identifier; and storing the file on that node.
- 18. The method of claim 1, further comprising receiving a file to store on the overlay network and performing constrained load balancing.
- 19. A computer program embodied on a computer-readable medium, wherein the computer program is executable to perform the method of any of claims 1 through 18.
- 20. A method for creating an overlay network from a set of networked nodes, wherein each node has an address, the method comprising:
assigning each node a different name; assigning each node a different number; and creating a table for each node, wherein the table has two or more levels having respective level numbers h, wherein the first level has a level number h=0 and includes the address of a lexicographically neighboring node, and wherein subsequent levels of the table respectively include the address of a node that is hk nodes away lexicographically, wherein k is a positive integer, wherein the lexicographical order of the nodes is determined by the nodes' names.
- 21. The method of claim 20, wherein the number associated with the node is used to substantially evenly distribute nodes into subrings, wherein each node belonging to a particular subring has at least a pointer to the immediately neighboring nodes in the subring when the nodes in the subrings are ordered lexicographically according to node name.
- 22. A method for organizing networked nodes in a manner suitable for a peer-to-peer application, the method comprising:
assigning a different lexicographical name to each node; assigning a different number to each node; creating a table for each node; arranging the nodes into a logical ring lexicographically according to each node's name, wherein each node's table stores the address of one or more neighboring nodes on the ring; dividing the nodes into two logical sub-rings, wherein a portion of the nodes are in each sub-ring, wherein each node's table stores the address of one or more nodes on the sub-ring; and repeating said dividing one or more times for each sub-ring having more than one node.
- 23. The method of claim 22, wherein the number assigned to each node is substantially random and unique, wherein the nodes are divided into sub-rings based on the random numbers.
- 24. The method of claim 22, wherein the nodes are ordered lexicographically according to path, wherein each node's path includes at least a domain name and a node name.
- 25. The method of claim 24, wherein at least one node's path includes multiple nested domain names.
- 26. A method for storing a file on an overlay network, the method comprising:
determining whether the file is to be restricted to a set of nodes on the overlay network sharing a common name prefix; hashing the file's filename to produce a globally unique identifier (GUID); searching the overlay network for the best matching node, wherein each node on the overlay network has an associated number, and wherein the best matching node is determined by comparing the GUID and the associated number, wherein only nodes sharing the common name prefix are considered if the file is to be restricted to the set of nodes on the overlay network sharing the common name prefix.
- 27. The method of claim 26, wherein the method is implemented as an application level overlay network.
- 28. A data structure for creating an overlay network having a plurality of nodes, the data structure comprising:
a table of addresses, wherein the table is configured to be stored on a given node of the overlay network, wherein each address identifies a node at a different constant offset from the given node when the nodes are ordered lexicographically based on lexicographical node names.
- 29. The data structure according to claim 28, further comprising a proximity table that optimizes routing in numeric address space.
- 30. The data structure according to claim 28, further comprising a proximity table that optimizes routing in lexicographic address space.
- 31. The data structure according to claim 28, further comprising a proximity table that optimizes routing in numeric address space and a proximity table that optimizes routing in lexicographic address space.
- 32. A method for managing an overlay network when two or more nodes share a single physical location, the method comprising:
assigning each node a different lexicographical name; storing only a partial routing table for some of the nodes; storing a shared proximity table for the nodes, wherein each routing table includes two or more routing pointers, wherein each routing pointer points to a particular node that is a different number of positions offset from the current node when the set of networked nodes are ordered lexicographically by name, wherein each proximity table includes one or more proximity pointers, and wherein each proximity pointer points to a particular node that is a different number of network positions offset from the current node when the set of networked nodes are ordered according to their network distance from each other.
- 33. A method for creating an overlay network for a plurality of nodes, the method comprising:
assigning a different arbitrary string identifier to each node; creating a pointer table for each node, wherein each table includes two or more pointers, wherein each pointer points to a particular node that is a different number of positions offset from the current node when the set of networked nodes are ordered lexicographically according to the arbitrary string identifiers.
- 34. The method of claim 33, further comprising maintaining the pointer tables for each node in the overlay network as nodes join or leave the overlay network.
- 35. The method of claim 1, further comprising:
receiving a file to store on the overlay network; and performing a constrained load balancing to store the file on a node on the overlay network.
- 36. The method of claim 1, further comprising:
establishing intervals of the arbitrary string identifiers; and choosing nodes with desirable properties to fill those intervals.
- 37. The method of claim 36, wherein the desirable property is network proximity.
- 38. The method of claim 1, further comprising using the overlay network to implement a peer-to-peer network.
- 39. The method of claim 35, wherein the peer-to-peer network allows users to store data on a particular node of the overlay network by specifying the particular node using the particular node's string identifier.
- 40. The method of claim 1, wherein a network partition at an organizational boundary within the overlay network results in two disjoint, but internally connected and operational smaller overlay networks.
- 41. The method of claim 40, further comprising updating the pointer table after the network partition is detected such that the local partition forms a complete overlay network.
- 42. The method of claim 40, further comprising updating the pointer table after the network partition is repaired and the individual partitioned overlay networks are rejoined.
- 43. A method for creating an overlay network from a set of networked nodes, the method comprising:
assigning each node a different name; assigning each node a different number, wherein each number is unique over the set of networked nodes and the distribution of numbers over nodes is probabilistically uniform; creating a routing table for each node, wherein each table includes one or more pointers, wherein each pointer points to a particular node that is a different number of positions offset from the current node when the set of networked nodes are ordered lexicographically by name.
- 44. The method of claim 43, in which the nodes' numbers are used to determine the pointers used in the routing table.
- 45. The method of claim 43, in which the nodes' numbers are randomly generated.
- 46. The method of claim 43, in which prefixes of the nodes' numbers are used to determine membership in a ring.
RELATED APPLICATIONS
[0001] This application is related to and claims priority from like-titled U.S. provisional application serial No. 60/409,735 filed on Sep. 11, 2002, having as named inventors Alastair Wolman, Marvin M. Theimer, Michael B. Jones, Nicholas J. A. Harvey, and Stefan Saroiu, which provisional application is incorporated herein by reference in its entirety.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60409735 |
Sep 2002 |
US |