1 / 11

EE 122: A Note On Joining Operation in Chord

EE 122: A Note On Joining Operation in Chord. Ion Stoica October 20, 2002. Big Picture. Assume circular identifier space is 0..2 m To each node we associate a unique id in this identifier space Each node is responsible for all identifiers between itself and its predecessor on this circle.

soo
Download Presentation

EE 122: A Note On Joining Operation in Chord

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EE 122: A Note On Joining Operation in Chord Ion Stoica October 20, 2002

  2. Big Picture • Assume circular identifier space is 0..2m • To each node we associate a unique id in this identifier space • Each node is responsible for all identifiers between itself and its predecessor on this circle

  3. Node 8 maps [5,8] Node 15 maps [9,15] Node 20 maps [16, 20] … Node 4 maps [59, 4] Identifier to Node Mapping Example 4 58 8 15 44 20 35 32

  4. Each node maintains its successor Route packet (ID, data) to the node responsible for ID using successor pointers Routing 4 58 send(34,data) 8 15 44 20 35 32

  5. Joining Operation • Each node A periodically sends a stabilize() message to its successor B • Upon receiving a stabilize() message a node B returns its predecessor B’ to A by sending a notify() message • Upon receiving notify() from B, A updates its successor to B’ if B’ is between A and B; otherwise A doesn’t do anything

  6. Joining Operation • Node with id=50 joins the ring • Node 50 needs to know at least one node already in the system • Assume known node is 15 4 58 8 15 50 44 20 35 32

  7. notify(58) join(50) Joining Operation • Node 50 asks node 15 to forward join message • When join(50) reaches the destination (i.e., node 58), node 58 (1) updates its predecessor to 50, and (2) returns a notify message to node 50 • Node 50 updates its successor to 58 pred=50 4 58 8 succ=58 15 50 44 20 35 32

  8. notify(predecessor=50) stabilize() Joining Operation (cont’d) • Node 44 sends a stabilize message to its successor, node 58 • Node 58 reply with a notify message • Node 44 updates its successor to 50 pred=50 4 58 8 succ=58 15 50 44 20 succ=50 35 32

  9. Stabilize() Joining Operation (cont’d) • Node 44 sends a stabilize message to its new successor, node 50 • Node 50 sets its predecessor to node 44 pred=50 4 58 8 succ=58 pred=44 15 50 44 20 succ=50 35 32

  10. Joining Operation (cont’d) • This completes the joining operation! pred=50 4 58 8 succ=58 50 pred=44 15 44 20 succ=50 35 32

  11. Achieving Robustness • To improve robustness each node can maintain the k (> 1) immediate successors instead of only one successor • In the notify() message, node A can send its k-1 successors to its predecessor B • Upon receiving notify() message, B can update its successor list by concatenating the successor list received from A with A itself

More Related