190 likes | 340 Views
Plaxton Routing. Introduction. Plaxton routing is a scalable mechanism for accessing nearby copies of objects.
E N D
Introduction Plaxton routing is a scalable mechanism for accessing nearby copies of objects. Plaxton mesh is a data structure that allows messages to locate objects and route to them across an arbitrarily-sized network, while using a small constant-sized routing map at each hop.
Role of each node Each node serves as a server, a client, and a router.
Object and node names In an n-node Plaxton mesh, both objects and nodes have randomly chosen names (better call the them labels) of size log n bits independent of their location and semantic properties
Important issues Routing to a node / object Reading an object Inserting an object Deleting an object Each node has a small routing table and a set of pointers pointing to nodes containing objects
Routing table Each routing table has entries for primary neighbors, secondary neighbors and (3) Back pointers
Routing table (1) 0 1 The primary neighbors in the routing table of node 000000. X means wildcard. However, neighbors with least communication cost are the preferred primary neighbors. Up to a known constant of neighbors in each slot can be secondary neighbors
Routing table (2) 0 1 2 3 Let N be a power of B=2b. The above table is for b=2 and N=64. The routing table will have at most B.logBN entries for the primary neighbors
Routing table (3) From each node x, there is a back pointer to another node y if x is a primary neighbor of y. It simplifies the searching of the root of an object by crawling backwards.
Suffix routing Each node incrementally relays the messages to the destination id digit by digit, like ***1 --> **31 --> *031 --> 2031 Each step picks a neighbor whose suffix has the largest match with that of the destination node, Note that suffix and prefix routing are equivalent
005712 0 1 2 4 5 7 3 6 005712 340880 0 1 2 4 5 7 3 6 340880 943210 943210 0 1 2 4 5 7 3 6 834510 834510 0 1 2 4 5 7 3 6 387510 387510 0 1 2 4 5 7 3 6 727510 727510 0 1 2 4 5 7 3 6 627510 0 1 2 4 5 7 3 6 627510 Another example of routing Example: Octal digits, 218 namespace, 005712 627510
Inserting an object A server S publishes that it has an object Oby routing a message to the “root node” of O The root node is identified by applying a hash function on O. A real node whose id matches with this hash by the maximum number of trailing bits is the root of O. The publishing process consists of sending a message toward the root node. At each hop along the way, the publish message stores location information in the form of a mapping <A=Object-ID(O), y= Server-ID(S), k= Cost of accessing the object from that node.>
Inserting an object Pointer to O Secondary neighbors Object O
Insertion continued Where multiple copies of objects exist, only the reference to the closest object is saved at each hop to the root. The insertion procedure maintains this invariant. This is where the cost component of the pointers comes in.
Inserting an object Copy of O Object O
Deleting an object Steps similar to insertion. The pointers should be updated to reflect access to the closest copy. Copy of O Object O
Read Read tries to locate the root of the object. If a pointer to O is discovered en route, then the object is retrieved following that pointer Read Copy of O Object O
Benefits and Limitations (-) While the intermediate hops are not absolutely necessary, the unique root node serves a critical purpose. The downside of having a unique root is that it becomes a single point of failure. (-) Assumes the network to be static. Does not handle topology changes.
Benefits and limitations + Simple fault handling 1234 --> 1238 --> 1278 --> 1678 --> 5678 3128 --> 3178 --> 3678 + Optimal routing distance of O(log BN) between any pair of nodes