System and method for creating improved overlay network with an efficient distributed data structure
First Claim
Patent Images
1. At least one computer storage medium storing instructions that, when executed on at least one processor, perform a method for creating an overlay network from a set of networked computers, the method comprising:
- assigning each computer a different string name, the string name comprising at least one text string having at least one letter such that the string name can be ordered lexicographically;
assigning each computer a different number, wherein each number is unique over the set of networked computers and the distribution of numbers over computers is probabilistically uniform;
forming at least a base ring, the base ring having the set of networked computers as members, the set of networked computers in the base ring being logically ordered lexicographically by string name;
creating at least one routing table for each computer, wherein the at least one routing table includes two or more pointers, each of the two or more pointers pointing to a respective particular computer that is a different number of positions offset from the computer associated with the respective at least one routing table, a first pointer of the two or more pointers being based, at least in part, on a lexicographical distance between the computer and the respective particular computer to which the at least one pointer points such that the at least one routing table supports routing through a namespace comprising the string names of the set of networked computers;
wherein the first pointer in each computer'"'"'s at least one routing table points to an immediately following computer when the computers are ordered lexicographically by string name;
wherein a second pointer in each computer'"'"'s at least one routing table points to an immediately preceding computer when the computers are ordered lexicographically by string name;
wherein a third pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions ahead when the computers are ordered lexicographically by string name; and
wherein a fourth pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions behind when the computers are ordered lexicographically by string name.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for using skip nets to build and maintain overlay networks for peer-to-peer systems. A skip net is a distributed data structure that can be used to avoid some of the disadvantages of distributed hash tables by organizing data by key ordering. Skip nets can use logarithmic state per node and probabilistically support searches, insertions and deletions in logarithmic time.
86 Citations
32 Claims
-
1. At least one computer storage medium storing instructions that, when executed on at least one processor, perform a method for creating an overlay network from a set of networked computers, the method comprising:
-
assigning each computer a different string name, the string name comprising at least one text string having at least one letter such that the string name can be ordered lexicographically; assigning each computer a different number, wherein each number is unique over the set of networked computers and the distribution of numbers over computers is probabilistically uniform; forming at least a base ring, the base ring having the set of networked computers as members, the set of networked computers in the base ring being logically ordered lexicographically by string name; creating at least one routing table for each computer, wherein the at least one routing table includes two or more pointers, each of the two or more pointers pointing to a respective particular computer that is a different number of positions offset from the computer associated with the respective at least one routing table, a first pointer of the two or more pointers being based, at least in part, on a lexicographical distance between the computer and the respective particular computer to which the at least one pointer points such that the at least one routing table supports routing through a namespace comprising the string names of the set of networked computers; wherein the first pointer in each computer'"'"'s at least one routing table points to an immediately following computer when the computers are ordered lexicographically by string name; wherein a second pointer in each computer'"'"'s at least one routing table points to an immediately preceding computer when the computers are ordered lexicographically by string name; wherein a third pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions ahead when the computers are ordered lexicographically by string name; and wherein a fourth pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions behind when the computers are ordered lexicographically by string name. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. At least one computer storage medium storing instructions that when executed on at least one processor, perform a method for creating an overlay network from a set of networked computers, wherein each computer has an address, the method comprising:
-
assigning each computer a different string name, the string name comprising at least one text string having at least one letter such that the string name can be ordered lexicographically; assigning each computer a different number; and creating a table for each computer, wherein the table has two or more levels having respective level numbers h, wherein a first level has a level number h=0 and includes an address of an immediately following computer when the computers are ordered lexicographically by string name, wherein a second level includes an address of an immediately preceding computer when the computers are ordered lexicographically by string name, wherein a third level includes an address of a distant computer that is K positions ahead when the computers are ordered lexicographically by string name, wherein a fourth level includes an address of a distant computer that is K positions behind when the computers are ordered lexicographically by string name, and wherein subsequent levels of the table respectively include an address of a computer that is hk computers away lexicographically, wherein k is a positive integer, wherein the lexicographical order of the computers is determined by the computers'"'"' string names, and wherein the table supports routing through a namespace comprising the string names of the set of networked computers. - View Dependent Claims (27, 28, 29)
-
-
30. At least one computer storage medium storing instructions that, when executed on at least one processor, perform a method for managing an overlay network when two or more computers share a single physical location, the method comprising:
-
assigning each computer a different string name, the string name comprising at least one text string having at least one letter such that the string name can be ordered lexicographically; storing only a partial routing table for some of the computers; and storing a shared proximity table for the computers, wherein each routing table includes two or more routing pointers, each routing pointer points to a particular computer that is a different number of positions offset from the current computer when the set of networked computers is ordered lexicographically by string name, each proximity table includes one or more proximity pointers, each of the one or more proximity pointers pointing to a particular computer that is a different number of network positions offset from the current computer when the set of networked computers is ordered according to their network distance from each other, wherein the routing table supports routing through a namespace comprising the plurality of computer string names, and wherein a first pointer in each computer'"'"'s at least one routing table points to an immediately following computer when the computers are ordered lexicographically by string name, wherein a second pointer in each computer'"'"'s at least one routing table points to an immediately preceding computer when the computers are ordered lexicographically by string name, wherein a third pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions ahead when the computers are ordered lexicographically by string name, and wherein a fourth pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions behind when the computers are ordered lexicographically by string name.
-
-
31. A system including an overlay network comprising:
-
a plurality of computers interconnected via the overlay network in a plurality of ring levels ordered in a hierarchy, each ring at a successive level in the hierarchy including a subset of the plurality of computers included in a ring at a level higher up in the hierarchy, each of the plurality of computers having a respective string identifier comprising at least one text string having at least one letter such that the string identifier can be ordered lexicographically, the plurality of computers being ordered lexicographically within each of the plurality of ring levels, wherein each of the plurality of computers comprises at least one memory device having stored thereon; a proximity table to store pointers to other nodes connected via the overlay network such that routing may be performed in a namespace formed by the respective string identifiers, the proximity table storing the pointers based, at least in part, on a network distance between the computer associated with the proximity table and respective neighboring computers; a routing table to store pointers to neighboring computers based, at least in part, on ring memberships and on a lexicographical distance between the computer associated with the routing table and respective neighboring computers; wherein a first pointer in each computer'"'"'s at least one routing table points to an immediately following computer when the computers are ordered lexicographically by string name, wherein a second pointer in each computer'"'"'s at least one routing table points to an immediately preceding computer when the computers are ordered lexicographically by string name, wherein a third pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions ahead when the computers are ordered lexicographically by string name, and wherein a fourth pointer in each computer'"'"'s at least one routing table points to a distant computer that is K positions behind when the computers are ordered lexicographically by string name. - View Dependent Claims (32)
-
Specification