P2P: Distributed Hash Tables

Slides:



Advertisements
Similar presentations
Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley presented by Daniel Figueiredo Chord: A Scalable Peer-to-peer.
Advertisements

Peer to Peer and Distributed Hash Tables
Kademlia: A Peer-to-peer Information System Based on the XOR Metric.
CHORD – peer to peer lookup protocol Shankar Karthik Vaithianathan & Aravind Sivaraman University of Central Florida.
Chord A Scalable Peer-to-peer Lookup Service for Internet Applications Ion Stoica, Robert MorrisDavid, Liben-Nowell, David R. Karger, M. Frans Kaashoek,
Technische Universität Yimei Liao Chemnitz Kurt Tutschku Vertretung - Professur Rechner- netze und verteilte Systeme Chord - A Distributed Hash Table Yimei.
Technische Universität Chemnitz Kurt Tutschku Vertretung - Professur Rechner- netze und verteilte Systeme Chord - A Distributed Hash Table Yimei Liao.
Chord: A Scalable Peer-to- Peer Lookup Service for Internet Applications Ion StoicaRobert Morris David Liben-NowellDavid R. Karger M. Frans KaashoekFrank.
CHORD: A Peer-to-Peer Lookup Service CHORD: A Peer-to-Peer Lookup Service Ion StoicaRobert Morris David R. Karger M. Frans Kaashoek Hari Balakrishnan Presented.
Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M
Chord: A scalable peer-to- peer lookup service for Internet applications Ion Stoica, Robert Morris, David Karger, M. Frans Kaashock, Hari Balakrishnan.
Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan Presented.
Robert Morris, M. Frans Kaashoek, David Karger, Hari Balakrishnan, Ion Stoica, David Liben-Nowell, Frank Dabek Chord: A scalable peer-to-peer look-up.
Robert Morris, M. Frans Kaashoek, David Karger, Hari Balakrishnan, Ion Stoica, David Liben-Nowell, Frank Dabek Chord: A scalable peer-to-peer look-up protocol.
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Robert Morris Ion Stoica, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT.
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Ion StoicaRobert Morris David Liben-NowellDavid R. Karger M. Frans KaashoekFrank.
Common approach 1. Define space: assign random ID (160-bit) to each node and key 2. Define a metric topology in this space,  that is, the space of keys.
Presented by Elisavet Kozyri. A distributed application architecture that partitions tasks or work loads between peers Main actions: Find the owner of.
The Impact of DHT Routing Geometry on Resilience and Proximity New DHTs constantly proposed –CAN, Chord, Pastry, Tapestry, Plaxton, Viceroy, Kademlia,
1 Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Robert Morris Ion Stoica, David Karger, M. Frans Kaashoek, Hari Balakrishnan.
Topics in Reliable Distributed Systems Lecture 2, Fall Dr. Idit Keidar.
Looking Up Data in P2P Systems Hari Balakrishnan M.Frans Kaashoek David Karger Robert Morris Ion Stoica.
Chord: A Scalable Peer-to-Peer Lookup Protocol for Internet Applications Stoica et al. Presented by Tam Chantem March 30, 2007.
The Impact of DHT Routing Geometry on Resilience and Proximity Krishna Gummadi, Ramakrishna Gummadi, Sylvia Ratnasamy, Steve Gribble, Scott Shenker, Ion.
University of Oregon Slides from Gotz and Wehrle + Chord paper
Idit Keidar, Principles of Reliable Distributed Systems, Technion EE, Spring Principles of Reliable Distributed Systems Lecture 2: Peer-to-Peer.
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek and Hari alakrishnan.
The Impact of DHT Routing Geometry on Resilience and Proximity Krishna Gummadi, Ramakrishna Gummadi, Sylvia Ratnasamy, Steve Gribble, Scott Shenker, Ion.
Structure Overlay Networks and Chord Presentation by Todd Gardner Figures from: Ion Stoica, Robert Morris, David Liben- Nowell, David R. Karger, M. Frans.
Chord-over-Chord Overlay Sudhindra Rao Ph.D Qualifier Exam Department of ECECS.
Topics in Reliable Distributed Systems Fall Dr. Idit Keidar.
1 CS 194: Distributed Systems Distributed Hash Tables Scott Shenker and Ion Stoica Computer Science Division Department of Electrical Engineering and Computer.
Decentralized Location Services CS273 Guest Lecture April 24, 2001 Ben Y. Zhao.
File Sharing : Hash/Lookup Yossi Shasho (HW in last slide) Based on Chord: A Scalable Peer-to-peer Lookup Service for Internet ApplicationsChord: A Scalable.
Structured P2P Network Group14: Qiwei Zhang; Shi Yan; Dawei Ouyang; Boyu Sun.
CSE 461 University of Washington1 Topic Peer-to-peer content delivery – Runs without dedicated infrastructure – BitTorrent as an example Peer.
Distributed Hash Table Systems Hui Zhang University of Southern California.
DHTs and Peer-to-Peer Systems Supplemental Slides Aditya Akella 03/21/2007.
The Impact of DHT Routing Geometry on Resilience and Proximity K. Gummadi, R. Gummadi..,S.Gribble, S. Ratnasamy, S. Shenker, I. Stoica.
1 Reading Report 5 Yin Chen 2 Mar 2004 Reference: Chord: A Scalable Peer-To-Peer Lookup Service for Internet Applications, Ion Stoica, Robert Morris, david.
Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications Xiaozhou Li COS 461: Computer Networks (precept 04/06/12) Princeton University.
Vincent Matossian September 21st 2001 ECE 579 An Overview of Decentralized Discovery mechanisms.
Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley presented by Daniel Figueiredo Chord: A Scalable Peer-to-peer.
Presentation 1 By: Hitesh Chheda 2/2/2010. Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT Laboratory for Computer Science.
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications.
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan Presented.
1 Secure Peer-to-Peer File Sharing Frans Kaashoek, David Karger, Robert Morris, Ion Stoica, Hari Balakrishnan MIT Laboratory.
Algorithms and Techniques in Structured Scalable Peer-to-Peer Networks
LOOKING UP DATA IN P2P SYSTEMS Hari Balakrishnan M. Frans Kaashoek David Karger Robert Morris Ion Stoica MIT LCS.
Two Peer-to-Peer Networking Approaches Ken Calvert Net Seminar, 23 October 2001 Note: Many slides “borrowed” from S. Ratnasamy’s Qualifying Exam talk.
CS 347Notes081 CS 347: Parallel and Distributed Data Management Notes 08: P2P Systems.
1 Secure Peer-to-Peer File Sharing Frans Kaashoek, David Karger, Robert Morris, Ion Stoica, Hari Balakrishnan MIT Laboratory.
Md Tareq Adnan Centralized Approach : Server & Clients Slow content must traverse multiple backbones and long distances Unreliable.
Data Structure of Chord  For each peer -successor link on the ring -predecessor link on the ring -for all i ∈ {0,..,m-1} Finger[i] := the peer following.
CS694 - DHT1 Distributed Hash Table Systems Hui Zhang University of Southern California.
Chord: A Scalable Peer-to-Peer Lookup Service for Internet Applications * CS587x Lecture Department of Computer Science Iowa State University *I. Stoica,
Peer-to-Peer Networks 04: Chord Christian Schindelhauer Technical Faculty Computer-Networks and Telematics University of Freiburg.
Peer-to-Peer Information Systems Week 12: Naming
Ion Stoica, Robert Morris, David Liben-Nowell, David R. Karger, M
Magdalena Balazinska, Hari Balakrishnan, and David Karger
The Chord P2P Network Some slides have been borrowed from the original presentation by the authors.
Distributed Hash Tables
A Scalable Peer-to-peer Lookup Service for Internet Applications
Scott Shenker and Ion Stoica April 11, 2005
DHT Routing Geometries and Chord
P2P Systems and Distributed Hash Tables
Distributed Hash Tables
MIT LCS Proceedings of the 2001 ACM SIGCOMM Conference
Consistent Hashing and Distributed Hash Table
Peer-to-Peer Information Systems Week 12: Naming
Presentation transcript:

P2P: Distributed Hash Tables Chord + Routing Geometries Nirvan Tyagi CS 6410 Fall16

Peer-to-peer (P2P)

Peer-to-peer (P2P) Decentralized! Hard to coordinate with peers joining and leaving

Peer-to-peer (P2P) Napster (1999)

Peer-to-peer (P2P) Napster (1999)

Peer-to-peer (P2P) Napster (1999) Problem - Centralized index server

Peer-to-peer (P2P) Napster (1999) Problem - Centralized index server Solution - Distributed hash table

Distributed Hash Tables (DHT) k0 v0 k1 v1 k2 v2 k3 v3 k4 v4 k5 v5

Distributed Hash Tables (DHT) k0 v0 k1 v1 k0 v0 k2 v2 k1 v1 k3 v3 k4 v4 k4 v4 k5 v5 k5 v5 k2 v2 k3 v3

Distributed Hash Tables (DHT) Desirable Properties Decentralization Load-balancing Scalability Availability k0 v0 k1 v1 k4 v4 k5 v5 k2 v2 k3 v3

Outline Chord Specific DHT protocol for P2P systems Simple, efficient DHT Routing Geometry Effect of different DHT protocols on desirable system properties

A scalable P2P lookup service for internet applications Chord A scalable P2P lookup service for internet applications Ion Stoica, Robert Morris, David Karger Frans Kaashoek, Hari Balakrishnan

How to assign keys to peers? Chord - Overview How to assign keys to peers? Hash table k0 v0 k1 v1 k0 v0 k2 v2 k1 v1 k3 v3 k4 v4 k4 v4 k5 v5 k5 v5 k2 v2 k3 v3

Chord - Overview Hash table k0 v0 k1 v1 k2 v2 k3 v3 k4 v4 k5 v5

Chord - Overview k5 k4 Hash table k0 v0 k1 v1 k0 k2 v2 k1 k3 v3 k4 v4

Chord - Overview k5 k4 Hash table k0 v0 k1 v1 k0 k2 v2 k1 k3 v3 k4 v4

Chord - Overview 2m-1 1 Identifier ring over hash space 2m 2m-1

Chord - Overview 2m-1 1 = node Identifier ring over hash space 2m 2m-1 1 = node Identifier ring over hash space 2m = key node id = hash( node ) key id = hash( key ) 2m-1

Chord - Overview 2m-1 1 = node Identifier ring over hash space 2m 2m-1 1 = node Identifier ring over hash space 2m = key node id = hash( node ) key id = hash( key ) successor(id) finger table for node at id i finger node id 1 succ(i) 2 succ(i + 2) j succ(i + 2 j - 1 ) 2m-1

Chord - Overview = node Identifier ring = key 12 4 8

Chord - Overview = node Identifier ring = key 12 4 8

Chord - Overview = node Identifier ring = key 12 4 8 finger node id 1 = node Identifier ring = key 12 4 finger node id 1 succ(i) 2 succ(i + 2) 3 succ(i + 22) 4 succ(i + 23) 8

Chord - Overview = node Identifier ring = key 12 4 8 finger node id 1 = node Identifier ring = key 12 4 finger node id 1 succ(4) 2 succ(4 + 2) 3 succ(4 + 22) 4 succ(4 + 23) 8

Chord - Overview = node Identifier ring = key 12 4 8 finger node id 1 = node Identifier ring = key 12 4 finger node id 1 5 2 8 3 8 4 1 8

Chord - Lookup Identifier ring 12 4 8 find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring finger node id 1 5 2 8 12 4 3 8 4 1 finger node id 1 11 8 2 11 3 1 4 1

Chord - Lookup Identifier ring 12 4 8 find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring finger node id 1 5 2 8 12 4 3 8 4 1 lookup(10) finger node id 1 11 8 2 11 3 1 4 1

Chord - Lookup Identifier ring 12 4 8 find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring finger node id 1 5 2 8 12 4 3 8 4 1 lookup(10) follow finger 3 to node id 8 finger node id 1 11 8 2 11 3 1 4 1

Chord - Lookup Identifier ring 12 4 8 find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring finger node id 1 5 2 8 12 4 3 8 4 1 lookup(10) follow finger 3 to node id 8 node id 8 identifies as predecessor of id 10 finger node id 1 11 8 2 11 3 1 4 1

Chord - Lookup Identifier ring 12 4 8 find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring finger node id 1 5 2 8 12 4 3 8 4 1 lookup(10) follow finger 3 to node id 8 node id 8 identifies as predecessor of id 10 complete lookup at successor of node id 8 finger node id 1 11 8 2 11 3 1 4 1

Each finger lookup halves distance to key find_successor(id): p = find_predecessor(id) return p.successor find_predecessor(id): n = self while id not between (n, n.successor]: n = n.closest_preceding_finger(id) return n Chord - Lookup Identifier ring Hops? Each finger lookup halves distance to key O(log N) finger node id 1 5 2 8 12 4 3 8 4 1 lookup(10) follow finger 3 to node id 8 node id 8 identifies as predecessor of id 10 complete lookup at successor of node id 8 finger node id 1 11 8 2 11 3 1 4 1

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 8

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 predecessor = 4 successor = 8 predecessor = 5 successor = 11 8

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 predecessor = 4 successor = 8 join(), self = 6 predecessor = 5 successor = 11 predecessor = null successor = 8 8

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 predecessor = 4 successor = 8 stabilize() predecessor = 5 6 successor = 11 predecessor = null successor = 8 8

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 predecessor = 4 successor = 8 6 stabilize() predecessor = 5 6 successor = 11 predecessor = null 5 successor = 8 8

Chord - Joins + Stabilization self.predecessor = null self.successor = find_successor(self) stabilize(): p = self.successor.predecessor if p between (self, self.successor): self.successor = p self.successor.notify(self) notify(n): if self.predecessor == null || n between (self.predecessor, self): self.predecessor = n Identifier ring 12 4 predecessor = 4 successor = 6 Outcomes of incomplete stabilization: Lookup unaffected Fingers out-dated, successors correct -> lookup slow but correct Successors in lookup region still stabilizing -> lookup fails predecessor = 5 successor = 8 predecessor = 6 successor = 11 8

Chord - Failure + Replication Identifier ring Maintain list of k successors Keys replicated on all k successors 12 4 predecessor = [4, 1] successor = [6, 8] predecessor = [5, 4] successor = [8, 11] predecessor = [6, 5] successor = [11, 1] 8

Load balance Failure resilience Lookup path length Lookup latency

Load balance Failure resilience Lookup path length Lookup latency

Load balance Failure resilience Lookup path length Lookup latency

Thoughts on Chord performance? Load balance Failure resilience Thoughts on Chord performance? Lookup path length Lookup latency

Load balance Failure resilience Lookup path length Lookup latency

Improvements to Chord routing and failure resilience in future works Pastry + Bamboo Load balance Failure resilience Lookup path length Lookup latency

The Impact of DHT Routing Geometry on Resilience and Proximity K. Gummadi, R. Gummadi, S. Gribble S. Ratnasamy, S. Shenker, I. Stoica

DHT Routing Geometries Ring (Chord) Tree (Tapestry, PRR) Hypercube (CAN) Butterfly (Viceroy) XOR (Kademlia) Hybrid (Pastry, Bamboo)

Proximity + Resilience Proximity - Pick routes through “physically nearby” peers, reducing latency Resilience - Continue to route requests despite network churn and failure

Proximity + Resilience Flexibility Proximity - Pick routes through “physically nearby” peers, reducing latency Resilience - Continue to route requests despite network churn and failure Flexibility Neighbor selection - options in selecting which peers to keep in routing table Route selection - options in selecting where to route to given a destination

Proximity + Resilience Flexibility Proximity - Pick routes through “physically nearby” peers, reducing latency Resilience - Continue to route requests despite network churn and failure Flexibility Neighbor selection - options in selecting which peers to keep in routing table Route selection - options in selecting where to route to given a destination Flexibility in neighbor selection -> good proximity Flexibility in route selection -> good resilience

DHT Routing Geometries Ring (Chord) Tree (Tapestry, PRR) Hypercube (CAN) Butterfly (Viceroy) XOR (Kademlia) Hybrid (Pastry, Bamboo)

DHT Routing Geometries - Tree XXX 0XX 00X 000 001 010 011 100 101 110 111

DHT Routing Geometries - Tree Neighbor selection - one neighbor for each prefix in opposite subtree XXX 0XX 00X 000 001 010 011 100 101 110 111

DHT Routing Geometries - Tree Neighbor selection - one neighbor for each prefix in opposite subtree XXX 0XX 00X 000 001 010 011 100 101 110 111

DHT Routing Geometries - Tree Neighbor selection - one neighbor for each prefix in opposite subtree XXX Route selection - route to neighbor in subtree of destination 0XX 00X 000 001 010 011 100 101 110 111

DHT Routing Geometries - Tree Neighbor selection - one neighbor for each prefix in opposite subtree XXX Route selection - route to neighbor in subtree of destination 0XX 00X 000 001 010 011 100 101 110 111

DHT Routing Geometries - Tree Neighbor selection - one neighbor for each prefix in opposite subtree XXX Route selection - route to neighbor in subtree of destination 0XX 00X Good flexibility in neighbor selection Poor flexibility in route selection 000 001 010 011 100 101 110 111

DHT Routing Geometries - Hypercube 110 111 100 101 011 010 000 001

DHT Routing Geometries - Hypercube Neighbor selection - neighbor differs in the bit of one dimension 110 111 100 101 011 010 000 001

DHT Routing Geometries - Hypercube Neighbor selection - neighbor differs in the bit of one dimension 110 111 100 101 011 010 000 001

DHT Routing Geometries - Hypercube Neighbor selection - neighbor differs in the bit of one dimension 110 111 Route selection - route to destination by correcting any differing bit 100 101 011 010 000 001

DHT Routing Geometries - Hypercube Neighbor selection - neighbor differs in the bit of one dimension 110 111 Route selection - route to destination by correcting any differing bit 100 101 011 010 000 001

DHT Routing Geometries - Hypercube Neighbor selection - neighbor differs in the bit of one dimension 110 111 Route selection - route to destination by correcting any differing bit 100 101 Poor flexibility in neighbor selection Good flexibility in route selection 011 010 000 001

DHT Routing Geometries - Ring 000 111 001 110 010 101 011 100

DHT Routing Geometries - Ring 000 Neighbor selection - one neighbor in each finger interval 111 001 110 010 101 011 100

DHT Routing Geometries - Ring 000 Neighbor selection - one neighbor in each finger interval 111 001 110 010 101 011 100

DHT Routing Geometries - Ring 000 Neighbor selection - one neighbor in each finger interval 111 001 Route selection - route to destination by making progress along ring 110 010 101 011 100

DHT Routing Geometries - Ring 000 Neighbor selection - one neighbor in each finger interval 111 001 Route selection - route to destination by making progress along ring 110 010 101 011 100

DHT Routing Geometries - Ring 000 Neighbor selection - one neighbor in each finger interval 111 001 Route selection - route to destination by making progress along ring 110 010 Good flexibility in neighbor selection Good flexibility in route selection 101 011 100

DHT Routing Geometries - Summary Tree Hypercube Ring Neighbor selection (Proximity) Route selection (Resilience)