Effizientes Routing in P2P Netzwerken Chord: A Scalable Peer-to- peer Lookup Protocol for Internet Applications Dennis Schade
Outline Short introduction to P2P systems Chord System Model Chord Algorithm Simulation Results Future Work
Introduction to P2P Systems Basic principles sharing ressources decentralization self-organization Main advantages no Single Point of Failure load balancing scalability Main problems load balancing decentralization self-organization availability scalability efficient node localization
Addressing data Data addressed by a Hashtable calculating hashvalues for keys storing reference to data identified by hashvalues In P2P systems the hashtable is partitioned distributed over peers Such a hashtable is called distributed hashtable (DHT)
Chord: A Scalable Peer-to-peer Lookup Protocol Efficient node localization Distributed lookup protocol Only one operation: given a key, Chord maps the key onto a node Simplicity, provable performance, proven correctness
The Chord System Model Every node has an unique identifier Identifiers are arranged on a identifier circle modulo 2 m m is called exponent of the ring Nodes know their successor and predecessor
The Chord System Model key k is assigned to the node whose identifier is equal to or greater than k this node is called successor(k) it is the first node clockwise from k. lookup(k) returns responsible peer
The Chord algorithm - Simple node localization // ask node n to find the successor of id n.lookup(id) if (id (n; successor]) return successor; else // forward query around the circle return successor.lookup(id); Number of messages linear in number of nodes
The Chord algorithm – Scalable node localization Each node holds additional routing information to accelerate lookups nodes have a so called finger table with up to m entries i th finger table entry at node x points to the first node y that succeds x‘s ID by at least 2 i-1 y = lookup(x.ID + 2 i-1 )
Example: Scalable node localization finger[i] = lookup(x.ID + 2 i-1 ) Finger table for N8 (m=6) N8+1K9N14 N8+2K10N14 N8+4K12N14 N8+8K16N21 N8+16K24N32 N8+32K40N42
The Chord algorithm – Scalable node localization search in finger table for the node n which most immediatly precedes key k n.lookup(k) Number of messages: O(log N)
The Chord algorithm – Node joins and stabilization (1)(2)(3) ?
The Chord algorithm – Node joins and stabilization Stabilization protocol for a node x: x.stabilize(): ask successor y for its predecessor p if p (x; y] then p is x‘s new successor x.notify(): notify x‘s successor p of x‘s existence notified node may change predecessor to x
The Chord algorithm – Node joins and stabilization (1)(2)(3)
Implementation Overview N56 clientsserver stabilizerlookupftableupdate fingertable Mediator
Implementation Demonstration
Simulation & test results Test conditions fully populated chord ring of size 8, 16 and 32 correct fingertables no node joins no node departure communication over loopback device
Test results number of forwardings in O(log N) bandwidth usage (TCP) ≤ 1 KB/s bandwidth usage (UDP) ≤ 2.5 KB/s average lookup time is ≤ 50 ms Simulation & test results
Future work Impact on lookups random node joins and departures incorrect finger tables improvements in communication protocol support of node distances S-Chord
Questions & Discussion Thank you for attention! Questions?