21
1 1 Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The followings slides are borrowed or adapted from talks by Robert Morris (MIT) and Sylvia Ratnasamy (ICSI) 3 Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Robert Morris Ion Stoica, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley SIGCOMM Proceedings, 2001 4 Chord Simplicity Resolution entails participation by O(log(N)) nodes Resolution is efficient when each node enjoys accurate information about O(log(N)) other nodes Resolution is possible when each node enjoys accurate information about 1 other node “Degrades gracefully”

Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

1

1

Distributed Hash Tables (DHTs)Chord & CAN

CS 699/IT 818Sanjeev Setia

2

Acknowledgements

The followings slides are borrowed or adapted from talks by RobertMorris (MIT) and Sylvia Ratnasamy (ICSI)

3

Chord: A Scalable Peer-to-peer Lookup Service for InternetApplications

Robert MorrisIon Stoica, David Karger,

M. Frans Kaashoek, Hari Balakrishnan

MIT and Berkeley

SIGCOMM Proceedings, 20014

Chord Simplicity

Resolution entails participation by O(log(N))nodes

Resolution is efficient when each nodeenjoys accurate information aboutO(log(N)) other nodes

Resolution is possible when each nodeenjoys accurate information about 1 othernode

“Degrades gracefully”

Page 2: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

2

5

Chord Algorithms

Basic LookupNode JoinsStabilizationFailures and Replication

6

Chord Properties

Efficient: O(log(N)) messages per lookup N is the total number of servers

Scalable: O(log(N)) state per node Robust: survives massive failures

Proofs are in paper / tech report Assuming no malicious participants

7

Chord IDs

Key identifier = SHA-1(key) Node identifier = SHA-1(IP address) Both are uniformly distributed Both exist in the same ID space

How to map key IDs to node IDs?

8

Consistent Hashing[Karger 97]

Target: web page caching Like normal hashing, assigns items to

buckets so that each bucket receivesroughly the same number of items

Unlike normal hashing, a small change in thebucket set does not induce a totalremapping of items to buckets

Page 3: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

3

9

Consistent Hashing [Karger 97]

N32

N90

N105

K80

K20

K5

Circular 7-bitID space

Key 5Node 105

A key is stored at its successor:node with next higher ID

10

Basic lookup

N32

N90

N105

N60

N10N120

K80

“Where is key 80?”

“N90 has K80”

11

Simple lookup algorithm

Lookup(my-id, key-id)n = my successorif my-id < n < key-id

call Lookup(id) on node n // next hop

elsereturn my successor // done

Correctness depends only on successors

12

“Finger table” allows log(N)-time lookups

N80

1/21/4

1/8

1/161/321/641/128

Page 4: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

4

13

Finger i points to successor of n+2i-1

N80

1/21/4

1/8

1/161/321/641/128

112

N120

14

Lookup with fingers

Lookup(my-id, key-id)look in local finger table for

highest node n s.t. my-id < n < key-idif n exists

call Lookup(id) on node n // next hop

elsereturn my successor // done

15

Lookups take O(log(N)) hops

N32

N10

N5

N20N110

N99

N80

N60

Lookup(K19)

K19

16

Node Join - Linked List Insert

N36

N40

N25

1. Lookup(36)K30K38

Page 5: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

5

17

Node Join (2)

N36

N40

N25

2. N36 sets its ownsuccessor pointer

K30K38

18

Node Join (3)

N36

N40

N25

3. Copy keys 26..36from N40 to N36

K30K38

K30

19

Node Join (4)

N36

N40

N25

4. Set N25’s successorpointer

Update finger pointers in the backgroundCorrect successors produce correct lookups

K30K38

K30

20

Stabilization

Case 1: finger tables are reasonably fresh Case 2: successor pointers are correct; fingers

are inaccurate Case 3: successor pointers are inaccurate or key

migration is incomplete

Stabilization algorithm periodically verifies andrefreshes node knowledge Successor pointers Predecessor pointers Finger tables

Page 6: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

6

21

Failures and Replication

N120N113

N102

N80

N85

N80 doesn’t know correct successor, so incorrect lookup

N10

Lookup(90)

22

Solution: successor lists

Each node knows r immediate successors After failure, will know first live successor Correct successors guarantee correct lookups

Guarantee is with some probability

23

Choosing the successor list length

Assume 1/2 of nodes fail P(successor list all dead) = (1/2)r

I.e. P(this node breaks the Chord ring) Depends on independent failure

P(no broken nodes) = (1 – (1/2)r)N

r = 2log(N) makes prob. = 1 – 1/N

24

Chord status

Working implementation as part of CFS Chord library: 3,000 lines of C++ Deployed in small Internet testbed Includes:

Correct concurrent join/fail Proximity-based routing for low delay Load control for heterogeneous nodes Resistance to spoofed node IDs

Page 7: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

7

25

Experimental overview

Quick lookup in large systems Low variation in lookup costs Robust despite massive failure See paper for more results

Experiments confirm theoretical results

26

Chord lookup cost is O(log N)

Number of Nodes

Aver

age

Mes

sage

s pe

r Lo

okup

Constant is 1/2

27

Failure experimental setup

Start 1,000 CFS/Chord servers Successor list has 20 entries

Wait until they stabilize Insert 1,000 key/value pairs

Five replicas of each

Stop X% of the servers Immediately perform 1,000 lookups

28

Massive failures have little impact

0

0.2

0.4

0.6

0.8

1

1.2

1.4

5 10 15 20 25 30 35 40 45 50

Faile

d Lo

okup

s (P

erce

nt)

Failed Nodes (Percent)

(1/2)6 is 1.6%

Page 8: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

8

29

Latency Measurements

180 Nodes at 10 sites in US testbed 16 queries per physical site (sic) for random keys Maximum < 600 ms Minimum > 40 ms Median = 285 ms Expected value = 300 ms (5 round trips)

30

Chord Summary

Chord provides peer-to-peer hash lookup Efficient: O(log(n)) messages per lookup Robust as nodes fail and join Good primitive for peer-to-peer systems

http://www.pdos.lcs.mit.edu/chord

31

Sylvia Ratnasamy, Paul Francis, Mark Handley,

Richard Karp, Scott Shenker

A Scalable, Content-Addressable Network

32

Content-Addressable Network (CAN)

CAN: Internet-scale hash table Interface

insert(key,value) value = retrieve(key)

Properties scalable operationally simple good performance

Related systems: Chord/Pastry/Tapestry/Buzz/Plaxton ...

Page 9: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

9

33

Problem Scope

Design a system that provides the interface scalability robustness performance security

Application-specific, higher level primitives keyword searching mutable content anonymity

34

K V

CAN: basic idea

K V

K V

K V

K V

K V

K V

K V

K V

K V

K V

35

CAN: basic idea

insert(K1,V1)

K V

K V

K V

K V

K V

K V

K V

K V

K V

K V

K V

36

CAN: basic idea

insert(K1,V1)

K V

K V

K V

K V

K V

K V

K V

K V

K V

K V

K V

Page 10: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

10

37

CAN: basic idea

(K1,V1)

K V

K VK V

K V

K V

K V

K V

K V

K V

K V

K V

38

CAN: basic idea

retrieve (K1)

K V

K VK V

K V

K V

K V

K V

K V

K V

K V

K V

39

CAN: solution

virtual Cartesian coordinate space

entire space is partitioned amongst all the nodes every node “owns” a zone in the overall space

abstraction can store data at “points” in the space can route from one “point” to another

point = node that owns the enclosing zone

40

CAN: simple example

1

Page 11: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

11

41

CAN: simple example

1 2

42

CAN: simple example

1

2

3

43

CAN: simple example

1

2

3

4

44

CAN: simple example

Page 12: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

12

45

CAN: simple example

I

46

CAN: simple example

node I::insert(K,V)

I

47

(1) a = hx(K)

CAN: simple example

x = a

node I::insert(K,V)

I

48

(1) a = hx(K) b = hy(K)

CAN: simple example

x = a

y = b

node I::insert(K,V)

I

Page 13: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

13

49

(1) a = hx(K) b = hy(K)

CAN: simple example

(2) route(K,V) -> (a,b)

node I::insert(K,V)

I

50

CAN: simple example

(2) route(K,V) -> (a,b)

(3) (a,b) stores (K,V)

(K,V)

node I::insert(K,V)

I(1) a = hx(K) b = hy(K)

51

CAN: simple example

(2) route “retrieve(K)” to (a,b) (K,V)

(1) a = hx(K) b = hy(K)

node J::retrieve(K)

J

52

Data stored in the CAN is addressed byname (i.e. key), not location (i.e. IPaddress)

CAN

Page 14: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

14

53

CAN: routing table

54

CAN: routing

(a,b)

(x,y)

55

A node only maintains state for itsimmediate neighboring nodes

CAN: routing

56

CAN: node insertion

1) Discover some node “I” already in CAN

Bootstrap node

new node

Page 15: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

15

57

CAN: node insertion

I

new node1) discover some node “I” already in CAN 58

CAN: node insertion

2) pick random point in space

I

(p,q)

new node

59

CAN: node insertion

(p,q)

3) I routes to (p,q), discovers node J

I

J

new node 60

CAN: node insertion

newJ

4) split J’s zone in half… new owns one half

Page 16: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

16

61

Inserting a new node affects only a singleother node and its immediate neighbors

CAN: node insertion

62

CAN: node failures

Need to repair the space recover database

soft-state updates use replication, rebuild database from replicas

repair routing takeover algorithm

63

CAN: takeover algorithm

Simple failures know your neighbor’s neighbors when a node fails, one of its neighbors takes over

its zone

More complex failure modes simultaneous failure of multiple adjacent nodes scoped flooding to discover neighbors hopefully, a rare event

64

Only the failed node’s immediate neighborsare required for recovery

CAN: node failures

Page 17: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

17

65

Design recap

Basic CAN completely distributed self-organizing nodes only maintain state for their immediate

neighbors Additional design features

multiple, independent spaces (realities) background load balancing algorithm simple heuristics to improve performance

66

Evaluation

Scalability

Low-latency

Load balancing

Robustness

67

CAN: scalability

For a uniformly partitioned space with n nodes and ddimensions per node, number of neighbors is 2d average routing path is (dn1/d)/4 hops simulations show that the above results hold in practice

Can scale the network without increasing per-nodestate

Chord/Plaxton/Tapestry/Buzz log(n) nbrs with log(n) hops

68

CAN: low-latency

Problem latency stretch = (CAN routing delay)

(IP routing delay) application-level routing may lead to high stretch

Solution increase dimensions heuristics

RTT-weighted routing multiple nodes per zone (peer nodes) deterministically replicate entries

Page 18: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

18

69

CAN: low-latency

#nodes

Late

ncy

stre

tch

0

20

40

60

80

100

120

140

160

180

16K 32K 65K 131K

#dimensions = 2

w/o heuristics

w/ heuristics

70

CAN: low-latency

0

2

4

6

8

10

#nodes

Late

ncy

stre

tch

16K 32K 65K 131K

#dimensions = 10

w/o heuristics

w/ heuristics

71

CAN: load balancing

Two pieces Dealing with hot-spots

popular (key,value) pairs nodes cache recently requested entries overloaded node replicates popular entries at neighbors

Uniform coordinate space partitioning uniformly spread (key,value) entries uniformly spread out routing load

72

Uniform Partitioning

Added check at join time, pick a zone check neighboring zones pick the largest zone and split that one

Page 19: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

19

73

Uniform Partitioning

V = total volumen

0

20

40

60

80

100

V 2V 4V 8V

Volume

Percentage of nodes

w/o check

w/ check

V16

V 8

V 4

V 2

65,000 nodes, 3 dimensions

74

CAN: Robustness

Completely distributed no single point of failure

Not exploring database recovery Resilience of routing

can route around trouble

75

Routing resilience

destination

source

76

Routing resilience

Page 20: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

20

77

Routing resilience

destination

78

Routing resilience

79

Node X::route(D)If (X cannot make progress to D)

– check if any neighbor of X can make progress– if yes, forward message to one such nbr

Routing resilience

80

Routing resilience

Page 21: Acknowledgements Distributed Hash Tables (DHTs) Chord & CANsetia/cs699/lecture3.pdf · Distributed Hash Tables (DHTs) Chord & CAN CS 699/IT 818 Sanjeev Setia 2 Acknowledgements The

21

81

Routing resilience

dimensions

0

20

40

60

80

100

2 4 6 8 10

Pr(s

ucce

ssfu

l rou

ting

)

CAN size = 16K nodesPr(node failure) = 0.25

82

Routing resilience

0

20

40

60

80

100

0 0.25 0.5 0.75

CAN size = 16K nodes#dimensions = 10

Pr(node failure)

Pr(s

ucce

ssfu

l rou

ting

)

83

Summary

CAN an Internet-scale hash table

potential building block in Internet applications

Scalability O(d) per-node state

Low-latency routing simple heuristics help a lot

Robust decentralized, can route around trouble