technische universität chemnitz kurt tutschku vertretung - professur rechner- netze und verteilte...

23
Technische Universität Chemnitz Kurt Tutschku Vertretung - Professur Rechner-netze und verteilte Systeme Chord - A Distributed Hash Table Yimei Liao

Upload: eileen-claycomb

Post on 16-Dec-2015

213 views

Category:

Documents


1 download

TRANSCRIPT

Technische Universität Chemnitz

Kurt Tutschku Vertretung - Professur Rechner-netze und verteilte Systeme

Chord - A Distributed Hash Table

Yimei Liao

Hauptseminar „Peer-to-Peer Networks“ 2

Technische Universität

Yimei Liao Chemnitz

Outline

Lookup problem in Peer-to-Peer systems and Solutions Chord Algorithm

– Consistent Hashing

– Scalable Key Location

– Node joins

– Stabilization Summary

Hauptseminar „Peer-to-Peer Networks“ 3

Technische Universität

Yimei Liao Chemnitz

Peer-to-Peer Systems

Peer-to-Peer System: self-organizing system of equal, autononous entities (peers) decentralized resource usage decentraliced self-organization where to store? where to get?

Solutions centralized servers flooding search distributed Hash Tables

Hauptseminar „Peer-to-Peer Networks“ 4

Technische Universität

Yimei Liao Chemnitz

Solutions to lookup problem

centralized servers– Maintain the current location of data items in a central server– Search complexity O(1)– Central server becomes crucial– Best for simple and small applications

flooding search– Broadcast a request for an item among the nodes– No additional routing informations– High bandwidth consumption– Search complexity O(N2)– Results are not guaranteed

Hauptseminar „Peer-to-Peer Networks“ 5

Technische Universität

Yimei Liao Chemnitz

Solutions to lookup problem

distributed hash tables– A global view of data distributed among many nodes. – Mapping nodes and data items into a common address space– Each DHT node manages a small number of references to other

nodes– Queries are routed via a small number of nodes to the target

node– Load for retrieving items should be balanced equally among all

nodes– Robust against random failure and attacks– Provides a definitive answer about results

Hauptseminar „Peer-to-Peer Networks“ 6

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Consistent Hashing

supports just one operation: given a key, it maps the key onto a node.

Consistent Hashing– Assign each node and key an m-bit identifier using a base hash

function such as SHA-1

– Identifiers are ordered in an identifier circle modulo 2m (Chord ring)

– Key k is assigned to the first node whose identifier is equal to or follows k.

Hauptseminar „Peer-to-Peer Networks“ 7

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Consistent Hashing

identifier space : m=3

node key

0

1

3

1

2

6

6

1

2

0

4

26

5

1

3

7

identifiercircle

Hauptseminar „Peer-to-Peer Networks“ 8

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Simple Key Lookup

Simple Key Lookup

1

2

6

0

4

26

5

1

3

7

Queries are passed around the circle via successor pointers

Requires traversing all Nodes to find the appropriate mapping

successor(1) = 3

successor(3) = 6

successor(6) = 0

successor(0) = 1Node 0 sends a query for key 6

Hauptseminar „Peer-to-Peer Networks“ 9

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Scalable Key Location

Finger Table– Each node n maintains a routing table with up to m entries

– The ith entry in the table at node n contains the identifier of the first node s that succeeds n by at least 2i-1 on the identifier circle.(s = successor(n+2i-1)).

– s is called the ith finger of node n.

Definition of variables for node n

Hauptseminar „Peer-to-Peer Networks“ 10

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Scalable Key Location

Finger tablem = 3, each node n maintains at most 3 entries

0

4

26

5

1

3

7

finger table keys

For. start Int. Succ.

0+20

0+21

0+22

124

[1,2) 336

[2,4)[4,0)

finger table keys

For. start Int. Succ.

3+20

3+21

3+22

457

[4,5) 660

[5,7)[7,3)

1

2

finger table keys

For. start Int. Succ.

6+20

6+21

6+22

702

[7,0) 003

[0,2)[2,6)

5

Hauptseminar „Peer-to-Peer Networks“ 11

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Scalable Key Location

Pseudocode to find the successor node of an identifier

Walk clockwise to find the node which precedes id and whose successor succeeds id

Start with the mth finger of node nSee if it comes between node n and the id, if not, check the m-1th

finger until we find one wich does.This is the closest node preceding idamong all the fingers of n

Find id’s successor by finding the immediate predecessor of the id

Hauptseminar „Peer-to-Peer Networks“ 12

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Scalable Key Location

id=5

n=7

0

4

26

5

1

3

7

finger table keys

start Int. Succ.1 [1,2) 32 [2,4) 34 [4,0) 4

finger table keys

start Int. Succ.4 [4,5)5 [5,7)7 [7,3)

1

2

finger table keys

start Int. Succ.0 [0,1) 01 [1,3) 03 [3,7)

6

4

Successor 0Predecessor 4

3Successor 3Predecessor 7

SuccessorPredecessor 0

finger table keys

start Int. Succ.5 [5,6) 76 [6,0) 70 [0,4) 0

Successor Predecessor 3

74

7

7

successor(5) = 7

4

O(logN)

Hauptseminar „Peer-to-Peer Networks“ 13

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Node joins

Invariants to be preserve Each node’s successor is correctly maintained For every key k, node successor(k) is responsible for k

It is desirable for the finger tables to be correct

Tasks to be performed by Chord Initialize the predecessor and fingers of node n Update the fingers and predecessor of existing nodes to reflect the

addition of n Notify the higher layer software so that it can transfer state associated

with keys that node n is now responsible for

Hauptseminar „Peer-to-Peer Networks“ 14

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Node joins

0

4

26

5

1

3

7

finger table keys

start Int. Succ.1 [1,2) 32 [2,4) 34 [4,0) 7

finger table keys

start Int. Succ.4 [4,5) 75 [5,7) 77 [7,3) 7

1

2

finger table keys

start Int. Succ.0 [0,1) 01 [1,3) 03 [3,7) 3

6

4

Successor 0Predecessor 35

Successor 3Predecessor 6

Successor 6Predecessor 0

finger table keys

start Int. Succ.6 [6,7)7 [7,1)1 [1,5)

773

Successor Predecessor

73

Initializing fingers and predecessor

find_successor(6);

Hauptseminar „Peer-to-Peer Networks“ 15

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Node joins

0

4

26

5

1

3

7

finger table keys

start Int. Succ.1 [1,2)2 [2,4)4 [4,0) 75

finger table keys

start Int. Succ.4 [4,5) 75 [5,7) 77 [7,3) 7

5

1

2

finger table keys

start Int. Succ.0 [0,1) 01 [1,3) 03 [3,7)

6

4

Successor 0Predecessor 35

Successor 3Predecessor 6

Successor 7Predecessor 0

5

finger table keys

start Int. Succ.6 [6,7)7 [7,1)1 [1,5)

773

Successor Predecessor

73

5

Updating fingers of existing nodes

33

P = find_predecessor(n-2i-1)i = 1, P = find_predecessor(4)i = 2, P = find_predecessor(3)i = 3, P = find_predecessor(1)

3

O(log2N)

Hauptseminar „Peer-to-Peer Networks“ 16

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Node joins

0

4

26

5

1

3

7

finger table keys

start Int. Succ.1 [1,2) 32 [2,4) 34 [4,0) 76

finger table keys

start Int. Succ.4 [4,5) 75 [5,7) 77 [7,3) 7

5

1

2

finger table keys

start Int. Succ.0 [0,1) 01 [1,3) 03 [3,7) 3

6

4

Successor 0Predecessor 35

Successor 3Predecessor 6

Successor 6Predecessor 0

5

finger table keys

start Int. Succ.6 [6,7)7 [7,1)1 [1,5)

773

Successor Predecessor

73

5

Transferring Keys

Hauptseminar „Peer-to-Peer Networks“ 17

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – node joins

Pseudocode for the node join operation

Hauptseminar „Peer-to-Peer Networks“ 18

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Stabilization

Stabilization Correctness and performance Keep node‘s successor pointers up to date Use successor pointers to verify correct finger table entries

Hauptseminar „Peer-to-Peer Networks“ 19

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm - Stabilization

Pseudocode for stabilization

Join does not make the rest of the network aware of n

Every node runs stabilizeperiodically, to verify the successor

Use successor pointers toupdate finger tables.

Node n asks its successor forthe successor’s predecessor x.See if x should be n’s successorinstead. (happens if x recently joined the system)

Notify n’s successor of n’sexist. Successor changes its predecessor to n if itknows no closer predecessor than n.

Hauptseminar „Peer-to-Peer Networks“ 20

Technische Universität

Yimei Liao Chemnitz

Chord Algorithm – Node Failure

Node Failure Successor-list If successor fails, replaces it with the first live entry in the list Later run stabilize to correct finger table and successor-list

Hauptseminar „Peer-to-Peer Networks“ 21

Technische Universität

Yimei Liao Chemnitz

Summary

Characteristics of Chord Load balance

distributed hash table Decentralization

fully distributed Scalability

cost of lookup grows logarithmic

Availabilityautomatically adjusts internal tables

Flexible namingno constrains on the structure of the keys

Routing Hops O(logN)

Arrival O(log2N)

Departure O(log2N)

Hauptseminar „Peer-to-Peer Networks“ 22

Technische Universität

Yimei Liao Chemnitz

References

I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan. Chord: A scalable Peer-To-Peer lookup service for internet applications. In Proceedings of the 2001 ACM SIGCOMM Conference, pages 149–160, 2001.

R. Steinmetz, K. Wehrle (Edt.): "Peer-to-Peer Systems and Applications", LNCS 3485, Springer, Chapter 7-8, 2005.

http://www.wikipedia.org

http://www.google.com

Hauptseminar „Peer-to-Peer Networks“ 23

Technische Universität

Yimei Liao Chemnitz

Thank YouQuestions?