Chord. A scalable peer-to-peer look-up protocol for internet applications



Similar documents
Chord - A Distributed Hash Table

Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications

Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications

Load Balancing in Structured Overlay Networks. Tallat M. Shafaat

Async: Secure File Synchronization

New Structured P2P Network with Dynamic Load Balancing Scheme

Acknowledgements. Peer to Peer File Storage Systems. Target Uses. P2P File Systems CS 699. Serving data with inexpensive hosts:

Calto: A Self Sufficient Presence System for Autonomous Networks

Lecture 25: Security Issues in Structured Peer-to-Peer Networks. Lecture Notes on Computer and Network Security. by Avi Kak

New Algorithms for Load Balancing in Peer-to-Peer Systems

LOOKING UP DATA IN P2P SYSTEMS

Peer-to-Peer Replication

P2P Storage Systems. Prof. Chun-Hsin Wu Dept. Computer Science & Info. Eng. National University of Kaohsiung

p2p: systems and applications Internet Avanzado, QoS, Multimedia Carmen Guerrero

An Introduction to Peer-to-Peer Networks

query enabled P2P networks Park, Byunggyu

Using Peer to Peer Dynamic Querying in Grid Information Services

Tornado: A Capability-Aware Peer-to-Peer Storage Network

Architectures and protocols in Peer-to-Peer networks

PEER TO PEER CLOUD FILE STORAGE ---- OPTIMIZATION OF CHORD AND DHASH. COEN283 Term Project Group 1 Name: Ang Cheng Tiong, Qiong Liu

Decentralized supplementary services for Voice-over-IP telephony

Krunal Patel Department of Information Technology A.D.I.T. Engineering College (G.T.U.) India. Fig. 1 P2P Network

GISP: Global Information Sharing Protocol a distributed index for peer-to-peer systems

SCALABLE RANGE QUERY PROCESSING FOR LARGE-SCALE DISTRIBUTED DATABASE APPLICATIONS *

A Load Balancing Method in SiCo Hierarchical DHT-based P2P Network

P2P Networking - Advantages and Disadvantages of Virtualization

Secure Communication in a Distributed System Using Identity Based Encryption

LOAD BALANCING WITH PARTIAL KNOWLEDGE OF SYSTEM

Methods & Tools Peer-to-Peer Jakob Jenkov

Distributed Hash Tables in P2P Systems - A literary survey

Optimizing and Balancing Load in Fully Distributed P2P File Sharing Systems

Quantitative Analysis of 2-tier P2P- SIP Architecture with ID-based Signature

Mobile P2PSIP. Peer-to-Peer SIP Communication in Mobile Communities

A Survey and Comparison of Peer-to-Peer Overlay Network Schemes

A Peer-to-Peer File Sharing System for Wireless Ad-Hoc Networks

1) The postfix expression for the infix expression A+B*(C+D)/F+D*E is ABCD+*F/DE*++

Scalable Prefix Matching for Internet Packet Forwarding

Locality-Aware Randomized Load Balancing Algorithms for DHT Networks

A Survey on Distributed Hash Table (DHT): Theory, Platforms, and Applications. Hao Zhang, Yonggang Wen, Haiyong Xie, and Nenghai Yu

RESEARCH ISSUES IN PEER-TO-PEER DATA MANAGEMENT

Optimizing service availability in VoIP signaling networks, by decoupling query handling in an asynchronous RPC manner

Peer-VM: A Peer-to-Peer Network of Virtual Machines for Grid Computing

A Reputation Management System in Structured Peer-to-Peer Networks

A PROXIMITY-AWARE INTEREST-CLUSTERED P2P FILE SHARING SYSTEM

Varalakshmi.T #1, Arul Murugan.R #2 # Department of Information Technology, Bannari Amman Institute of Technology, Sathyamangalam

Magnus: Peer to Peer Backup System

A P2P SERVICE DISCOVERY STRATEGY BASED ON CONTENT

Identity Theft Protection in Structured Overlays

Heterogeneity and Load Balance in Distributed Hash Tables

T he Electronic Magazine of O riginal Peer-Reviewed Survey Articles ABSTRACT

INTERNATIONAL JOURNAL OF ENGINEERING SCIENCES & RESEARCH TECHNOLOGY

Department of Computer Science Institute for System Architecture, Chair for Computer Networks. File Sharing

A Self-Managing SIP-based IP Telephony System based on a P2P approach using Kademlia

Load Balancing in Structured P2P Systems

A P2PSIP event notification architecture

A Survey of Peer-to-Peer File Sharing Technologies

Evaluating Load Balancing in Peer-to-Peer Resource Sharing Algorithms for Wireless Mesh Networks

P2P File Sharing: BitTorrent in Detail

Plaxton routing. Systems. (Pastry, Tapestry and Kademlia) Pastry: Routing Basics. Pastry: Topology. Pastry: Routing Basics /3

CSE 326, Data Structures. Sample Final Exam. Problem Max Points Score 1 14 (2x7) 2 18 (3x6) Total 92.

Accessing XML Documents using Semantic Meta Data in a P2P Environment

Peer-to-Peer Data Management

Distributed Computing over Communication Networks: Topology. (with an excursion to P2P)

CS5412: TIER 2 OVERLAYS

SOLVING LOAD REBALANCING FOR DISTRIBUTED FILE SYSTEM IN CLOUD

DNS LOOKUP SYSTEM DATA STRUCTURES AND ALGORITHMS PROJECT REPORT

CS435 Introduction to Big Data

International Journal of Scientific & Engineering Research, Volume 4, Issue 11, November ISSN

Load Balancing in Dynamic Structured P2P Systems

A SURVEY OF P2P OVERLAYS IN VARIOUS NETWORKS

Bounding Communication Cost in Dynamic Load Balancing of Distributed Hash Tables

ECE 578 Term Paper Network Security through IP packet Filtering

Enhance Load Rebalance Algorithm for Distributed File Systems in Clouds

DG Forwarding Algorithm

Improving Availability with Adaptive Roaming Replicas in Presence of Determined DoS Attacks

Transcription:

Chord A scalable peer-to-peer look-up protocol for internet applications by Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan

Overview Introduction The Chord Algorithm Construction of the Chord ring Localization of nodes Node joins and stabilization Failure of nodes Applications Summary Questions

The lookup problem N 1 N 2 N 3 Key= title Value=MP3 data Publisher Internet N 4 N 5 N 6? Client Lookup( title )

Routed queries (Freenet, Chord, etc.) N 1 N 4 N 6 Client Publisher N 2 Lookup( title ) Key= title Value=MP3 data N 7 N 8 N 3 N 9

What is Chord? Problem addressed: efficient node localization Distributed lookup protocol Simplicity, provable performance, proven correctness Support of just one operation: given a key, Chord maps the key onto a node

Chord software 3000 lines of C++ code Library to be linked with the application provides a lookup(key) function: yields the IP address of the node responsible for the key Notifies the node of changes in the set of keys the node is responsible for

Overview Introduction The Chord Algorithm Construction of the Chord ring Localization of nodes Node joins and Stabilization Failure/Departure of nodes Applications Summary Questions

Construction of the Chord ring use Consistent Hash Function assigns each node and each key an m-bit identifier using SHA 1 (Secure Hash Standard). m = any number big enough to make collisions improbable Key identifier = SHA-1(key) Node identifier = SHA-1(IP address) Both are uniformly distributed Both exist in the same ID space

Construction of the Chord ring identifiers are arranged on a identifier circle m modulo 2 => Chord ring

Construction of the Chord ring a key k is assigned to the node whose identifier is equal to or greater than the key s identifier this node is called successor(k) and is the first node clockwise from k.

Simple node localization // ask node n to find the successor of id n.find_successor(id) if (id (n; successor]) return successor; else // forward the query around the circle return successor.find_successor(id); => Number of messages linear in the number of nodes!

Scalable node localization Additional routing information to accelerate lookups Each node n contains a routing table with up to m entries (m: number of bits of the identifiers) => finger table i th entry in the table at node n contains the i-1 first node s that succeeds n by at least 2 i-1 s = successor (n + 2 ) s is called the i th finger of node n

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Finger table: finger[i] = successor (n + 2 i-1 )

Scalable node localization Important characteristics of this scheme: Each node stores information about only a small number of nodes (m) Each nodes knows more about nodes closely following it than about nodes further away A finger table generally does not contain enough information to directly determine the successor of an arbitrary key k

Scalable node localization Search in finger table for the nodes which most immediately precedes id Invoke find_successor from that node => Number of messages O(log N)!

Scalable node localization Search in finger table for the nodes which most immediately precedes id Invoke find_successor from that node => Number of messages O(log N)!

Node joins and stabilization

Node joins and stabilization

Node joins and stabilization

Node joins and stabilization To ensure correct lookups, all successor pointers must be up to date => stabilization protocol running periodically in the background Updates finger tables and successor pointers

Node joins and stabilization Stabilization protocol: Stabilize(): n asks its successor for its predecessor p and decides whether p should be n s successor instead (this is the case if p recently joined the system). Notify(): notifies n s successor of its existence, so it can change its predecessor to n Fix_fingers(): updates finger tables

Node joins and stabilization

Node joins and stabilization N26 joins the system N26 acquires N32 as its successor N26 notifies N32 N32 acquires N26 as its predecessor

Node joins and stabilization N26 copies keys N21 runs stabilize() and asks its successor N32 for its predecessor which is N26.

Node joins and stabilization N21 acquires N26 as its successor N21 notifies N26 of its existence N26 acquires N21 as predecessor

Impact of node joins on lookups All finger table entries are correct => O(log N) lookups Successor pointers correct, but fingers inaccurate => correct but slower lookups

Impact of node joins on lookups Incorrect successor pointers => lookup might fail, retry after a pause But still correctness!

Impact of node joins on lookups Stabilization completed => no influence on performance Only for the negligible case that a large number of nodes joins between the target s predecessor and the target, the lookup is slightly slower No influence on performance as long as fingers are adjusted faster than the network doubles in size

Failure of nodes Correctness relies on correct successor pointers What happens, if N14, N21, N32 fail simultaneously? How can N8 acquire N38 as successor?

Failure of nodes Correctness relies on correct successor pointers What happens, if N14, N21, N32 fail simultaneously? How can N8 acquire N38 as successor?

Failure of nodes Each node maintains a successor list of size r If the network is initially stable, and every node fails with probability ½, find_successor still finds the closest living successor to the query key and the expected time to execute find_succesor is O(log N) Proofs are in the paper

Failure of nodes Massive failures have little impact Failed Lookups (Percent) 1.5 1.1 0.8 0.4 0 (1/2) 6 is 1.6% 5 10 15 20 25 30 35 40 45 50 Failed Nodes (Percent)

Overview Introduction The Chord Algorithm Construction of the Chord ring Localization of nodes Node joins and stabilization Failure/Departure of nodes Applications Summary Questions

Applications: Chord-based DNS DNS provides a lookup service keys: host names values: IP addresses Chord could hash each host name to a key Chord-based DNS: no special root servers no manual management of routing information no naming structure can find objects not tied to particular machines

Summary Simple, powerful protocol Only operation: map a key to the responsible node Each node maintains information about O(log N) other nodes Lookups via O(log N) messages Scales well with number of nodes Continues to function correctly despite even major changes of the system

Questions?

Thanks!