p2p network structured networks: distributed hash...

39
P2P Network Structured Networks: Distributed Hash Tables Pedro García López Universitat Rovira I Virgili [email protected]

Upload: others

Post on 06-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

P2P NetworkStructured Networks:

Distributed Hash Tables

Pedro García López

Universitat Rovira I Virgili

[email protected]

Page 2: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Index

• Introduction to DHT’s• Origins of structured overlays• Case studies

– Chord– Pastry – CAN

• Conclusions

Page 3: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Introduction to DHT’s:locating contents

• Simple strategy: expanding ring search until content is found

• If r of N nodes have copy, the expected search cost is at least N / r, i.e., O(N)

• Need many copies to keep overhead small

Who has this paper?Who has

this paper?

I have itI have it

I have itI have it

Page 4: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Directed Searches• Idea

– Assign particular nodes to hold particular content (or know where it is)

– When a node wants this content, go to the node that is supposes to hold it (or know where it is)

• Challenges– Avoid bottlenecks: distribute the

responsibilities “evenly” among the existing nodes

– Adaptation to nodes joining or leaving (or failing)

• Give responsibilities to joining nodes• Redistribute responsibilities from leaving

nodes

Page 5: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Idea: Hash Tables

• A hash table associates data with keys– Key is hashed to find

bucket in hash table– Each bucket is

expected to hold #items/#buckets items

• In a Distributed Hash Table (DHT), nodes are the hash buckets– Key is hashed to find

responsible peer node– Data and load are

balanced across nodes

key pos

00

hash functionhash function

1122

N-1N-1

33...

xx

yy zz

lookup (key) → datainsert (key, data)lookuplookup (key) → datainsert (key, data)

““BeattlesBeattles”” 22

hash table

hash bucket

h(key)%Nh(key)%N

0

1

2

...

node

key poshash functionhash function

lookup (key) → datainsert (key, data)lookuplookup (key) → datainsert (key, data)

““BeattlesBeattles”” 22h(key)%Nh(key)%NN-1

Page 6: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHTs: Problems

•• Problem 1 (dynamicity):Problem 1 (dynamicity): adding or removing nodes– With hash mod N, virtually every key will change its

location!h(k) mod m ≠ h(k) mod (m+1) ≠ h(k) mod (m-1)

•• Solution:Solution: use consistent hashing– Define a fixed hash space– All hash values fall within that space and do not

depend on the number of peers (hash bucket) – Each key goes to peer closest to its ID in hash

space (according to some proximity metric)

Page 7: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHTs: Problems (cont’d)

•• Problem 2 (size):Problem 2 (size): all nodes must be known to insert or lookup data– Works with small and static server

populations•• Solution:Solution: each peer knows of only a

few “neighbors”– Messages are routed through neighbors via

multiple hops (overlay routing)

Page 8: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

What Makes a Good DHT Design• For each object, the node(s) responsible for that object

should be reachable via a “short” path (small diametersmall diameter)– The different DHTs differ fundamentally only in the routing

approach• The number of neighbors for each node should remain

“reasonable” (small degreesmall degree)• DHT routing mechanisms should be decentralized (no no

single point of failure or bottlenecksingle point of failure or bottleneck)• Should gracefully handle nodes joining and leavinggracefully handle nodes joining and leaving

– Repartition the affected keys over existing nodes– Reorganize the neighbor sets– Bootstrap mechanisms to connect new nodes into the DHT

• To achieve good performance, DHT must provide low low stretchstretch– Minimize ratio of DHT routing vs. unicast latency

Page 9: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHT Interface

• Minimal interface (data-centric)Lookup(keyLookup(key) ) →→ IP addressIP address

• Supports a wide range of applications, because few restrictions– Keys have no semantic meaning– Value is application dependent

• DHTs do notnot store the data– Data storage can be build on top of DHTs

Lookup(keyLookup(key) ) →→ datadataInsert(keyInsert(key, data), data)

Page 10: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHTs in Context

TransportTransport

DHTDHT

Reliable Block StorageReliable Block Storage

File SystemFile System

Communication

LookupRouting

StorageReplicationCaching

Retrieve and store filesMap files to blocks

CFS

DHash

Chord

TCP/IP

receivesend

lookup

load_blockstore_block

load_filestore_file

User ApplicationUser Application

Page 11: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHTs Support Many Applications

• File sharing [CFS, OceanStore, PAST, …]• Web cache [Squirrel, …]• Censor-resistant stores [Eternity, FreeNet, …]• Application-layer multicast [Narada, …]• Event notification [Scribe]• Naming systems [ChordDNS, INS, …]• Query and indexing [Kademlia, …]• Communication primitives [I3, …]• Backup store [HiveNet]• Web archive [Herodotus]

Page 12: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Origins of Structured overlays

• Accessing Nearby Copies of Replicated Objects in a Distributed Environment“, by Greg Plaxton, Rajmohan Rajaraman, and Andrea Richa, at SPAA 1997

• The paper proposes an efficient search routine (similar to the evangelist papers). In particular search, insert, delete, storage costs are all logarithmic, the base of the logarithm is a parameter.

• Prefix routing, distance and coordinates !

• Theory paper

Page 13: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Evolution

Page 14: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Hypercubic topologies

• Hypercube: – Plaxton, Chord, Kademlia, Pastry, Tapestry

• Butterfly /Benes:– Viceroy, Mariposa

• De Bruijn Graph:– Koorde

• Skip List:– Skip Graph, SkipNet

• Pancake Graph• Cube Connected Cycles

Page 15: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

DHT Case Studies

• Case Studies– Chord– Pastry– CAN

• Questions– How is the hash space divided evenly among

nodes?– How do we locate a node?– How does we maintain routing tables? – How does we cope with (rapid) changes in

membership?

Page 16: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Chord (MIT)• Circular m-bit ID space

for both keys and nodes• Node ID = SHA-1(IP

address)• Key ID = SHA-1(key)• A key is mapped to the

first node whose ID is equal to or follows the key ID– Each node is

responsible for O(K/N)keys

– O(K/N) keys move when a node joins or leaves

N1

N8

N14

N32

N21

N38

N42

N48

N51

N56

m=6m=6

K30

K24

K10

K38

K54

2m-1 0

Page 17: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Chord State and Lookup (1)• Basic Chord: each

node knows only 2 other nodes on the ring– Successor– Predecessor (for

ring management)• Lookup is achieved by

forwarding requests around the ring through successor pointers– Requires O(N) hops

N1

N8

N32

N21

N38

N42

N48

N51

N56

m=6m=6

K54

2m-1 0

lookup(K54)

N14

Page 18: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Chord State and Lookup (2)

• Each node knows mother nodes on the ring– Successors: finger i of

n points to node at n+2i (or successor)

– Predecessor (for ring management)

– O(log N) state per node• Lookup is achieved by

following closest preceding fingers, then successor– O(log N) hops

N1

N8

N32

N21

N14

N38

N42

N48

N51

N56

m=6m=6

K54

2m-1 0

N8+1N8+2N8+4N8+8N8+16N8+32

N14N14N14N21N32N42

Finger table

+32

+16 +8

+4

+2

+1lookup(K54)

Page 19: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Chord Ring Management

• For correctness, Chord needs to maintain the following invariants– For every key k, succ(k) is responsible for k– Successor pointers are correctly maintained

• Finger table are not necessary for correctness– One can always default to successor-based

lookup– Finger table can be updated lazily

Page 20: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Joining the Ring

• Three step process:– Initialize all fingers of new node– Update fingers of existing nodes– Transfer keys from successor to new node

Page 21: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Joining the Ring — Step 1

• Initialize the new node finger table– Locate any node n in the ring– Ask n to lookup the peers at j+20, j+21, j+22…– Use results to populate finger table of j

Page 22: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Joining the Ring — Step 2

N1

N8

N14

N32

N21

N38

N42

N48

N51

N56

m=6m=62m-1 0

N8+1N8+2N8+4N8+8N8+16N8+32

N14N14N14N21N32N42

+16

N28

N28

-16

12

6• Updating fingers of

existing nodes– New node j calls

update function on existing nodes that must point to j

• Nodes in the ranges[j-2i , pred(j)-2i+1]

– O(log N) nodes need to be updated

Page 23: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Joining the Ring — Step 3

• Transfer key responsibility– Connect to successor– Copy keys from successor to new node– Update successor pointer and remove keys

• Only keys in the range are transferred

N32

N21

N28

K30 K24

N32

N21

N28

K24 K24

N32

N21

N28

K24

N32

N21

K24K30 K30 K30

Page 24: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Stabilization

• Case 1: finger tables are reasonably fresh• Case 2: successor pointers are correct, not

fingers• Case 3: successor pointers are inaccurate or key

migration is incomplete — MUST BE AVOIDED!• Stabilization algorithm periodically verifies and

refreshes node pointers (including fingers)– Basic principle (at node n):

x = n.succ.predif x ∈ (n, n.succ)

n = n.succnotify n.succ

– Eventually stabilizes the system when no node joins or fails

N32

N21

N28

Page 25: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Dealing With Failures• Failure of nodes might

cause incorrect lookup– N8 doesn’t know

correct successor, so lookup of K19 fails

• Solution: successor list– Each node n knows r

immediate successors– After failure, n knows

first live successor and updates successor list

– Correct successors guarantee correct lookups

N1

N32

N21

N8

N38

N42

N48

N51

N56

m=6m=62m-1 0

+16 +8

+4

+2

+1

N14

N18K19

lookup(K19) ?

Page 26: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Chord and Network Topology

Nodes numerically-closeare not topologically-close(1M nodes = 10+ hops)

Nodes numerically-closeare not topologically-close(1M nodes = 10+ hops)

Page 27: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Pastry (MSR)

• Circular m-bit ID space for both keys and nodes– Addresses in base 2b

with m / b digits

• Node ID = SHA-1(IP address)

• Key ID = SHA-1(key)• A key is mapped to the

node whose ID is numerically-closestthe key ID

N0002

N0201

N0322

N2001

N1113

N2120

N2222

N3001

N3033

N3200

m=8m=8

K1320

K1201

K0220

K2120

K3122

2m-1 0b=2b=2

Page 28: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Pastry Lookup

• Prefix routing from A to B– At hth hop, arrive at node that shares prefix

with B of length at least h digits– Example: 5324 routes to 0629 via

5324 → 0748 → 0605 → 0620 → 0629– If there is no such node, forward message to

neighbor numerically-closer to destination (successor)5324 → 0748 → 0605 → 0609 → 0620 → 0629

– O(log2b N) hops

Page 29: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Pastry State and Lookup• For each prefix, a node

knows some other node (if any) with same prefix and different next digit

• For instance, N0201N0201:NN--: N1???, N2???, N3???N1???, N2???, N3???N0N0: N00??, N01??, N03??N00??, N01??, N03??N02N02: N021?, N022?, N023?N021?, N022?, N023?N020N020: N0200, N0202, N0203N0200, N0202, N0203

• When multiple nodes, choose topologicallytopologically--closestclosest– Maintain good locality

properties (more on that later)

N0002

N0201

N0322

N2001

N1113

N2120

N2222

N3001

N3033

N3200

m=8m=82m-1 0b=2b=2

N0122

N0212N0221

N0233

Routingtable

K2120

lookup(K2120)

Page 30: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Node ID 10233102Node ID 10233102Leaf setLeaf set

Routing TableRouting Table

Neighborhood setNeighborhood set

A Pastry Routing Table

000221210202212102 11 2230120322301203 3120320331203203

1130123311301233 1223020312230203 1302102213021022221003120310031203 1013210210132102 1032330210323302

3333

10222302102223021020023010200230 10211302102113021023032210230322 1023100010231000 10232121102321211023300110233001

1023312010233120102332321023323211

0022

1302102213021022 1020023010200230 1130123311301233 31301233313012330221210202212102 2230120322301203 3120320331203203 3321332133213321

1023303310233033 1023302110233021 1023312010233120 10233122102331221023300110233001 1023300010233000 1023323010233230 1023323210233232

< SMALLER< SMALLER LARGER >LARGER >

Contains thenodes that are

numericallyclosest to

local nodeMUST BE UP

TO DATE

b=2, so node IDis base 4 (16 bits)

m/b

row

s

Contains thenodes that are

closest tolocal node

according toproximity metric

2b-1 entries per row

Entries in the nth rowshare the first n digitswith current node[ common-prefix next-digit rest ]

nth digit of current node

Entries in the mth columnhave m as next digit

Entries with no suitablenode ID are left empty

b=2b=2m=16m=16

Page 31: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Pastry and Network Topology

Expected node distanceincreases with rownumber in routing table

Expected node distanceincreases with rownumber in routing table

Smaller and smallernumerical jumpsBigger and biggertopological jumps

Smaller and smallernumerical jumpsBigger and biggertopological jumps

Page 32: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

X0629X

0629

X joinsX joins

Join message

Joining

A5324A

5324

X knows A(A is “close” to X)

X knows A(A is “close” to X)

C0605C

0605

D0620D

0620

B0748B

0748

Route message to node numericallyclosest to X’s ID

Route message to node numericallyclosest to X’s ID

A’s neighborhood set

D’s leaf set

A0 — ????B1 — 0???C2 — 06??D4 — 062?

0629’s routing table

Page 33: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Locality

• The joining phase preserves the locality property– First: A must be near X– Entries in row zero of A’s routing table are close to A, A is

close to X ⇒ X0 can be A0

– The distance from B to nodes from B1 is much larger than distance from A to B (B is in A0) ⇒ B1 can be reasonable choice for X1, C2 for X2, etc.

– To avoid cascading errors, X requests the state from each of the node in its routing table and updates its own with any closer node

• This scheme works “pretty well” in practice– Minimize the distance of the next routing step with no

sense of global direction– Stretch around 2-3

Page 34: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Node Departure

• Node is considered failed when its immediate neighbors in the node ID space cannot communicate with it– To replace a failed node in the leaf set, the node

contacts the live node with the largest index on the side of failed node, and asks for its leaf set

– To repair a failed routing table entry Rdl, node contacts

first the node referred to by another entry Ril, i≠d of the

same row, and ask for that node’s entry for Rdl

– If a member in the M table, is not responding, node asks other members for their M table, check the distance of each of the newly discovered nodes, and update its own M table

Page 35: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

11 21

2

3

1

4

3

2

CAN (Berkeley)

• Cartesian space (d-dimensional)– Space wraps up: d-

torus

• Incrementally split space between nodes that join

• Node (cell) responsible for key kis determined by hashing k for each dimension

d=2d=2

hx(k)

hy(k)

insert(k,data)insert(k,data)

retrieve(k)retrieve(k)

Page 36: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

CAN State and Lookup• A node A only maintains

state for its immediate neighbors (N, S, E, W)– 2d neighbors per node

• Messages are routed to neighbor that minimizes Cartesian distance– More dimensions means

faster the routing but also more state

– (dN1/d)/4 hops on average

• Multiple choices: we can route around failures

W

N

A

S

E

B

d=2d=2

Page 37: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

CAN Landmark Routing

• CAN nodes do not have a pre-defined ID• Nodes can be placed according to locality

– Use well known set of m landmarklandmark machines (e.g., root DNS servers)

– Each CAN node measures its RTT to each landmark– Orders the landmarks in order of increasing RTT: m!

possible orderings

• CAN construction– Place nodes with same ordering close together in the

CAN– To do so, partition the space into m! zones: m zones on

x, m-1 on y, etc.– A node interprets its ordering as the coordinate of its

zone

Page 38: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

CAN and Network Topology

Use m landmarksto split space inm! zones

Use m landmarksto split space inm! zones

A;C;B

B;A;CB;C;ABA;B;C

A

C

C;B

;A

C;A;B

Nodes get randomzone in their zoneNodes get randomzone in their zone

Topologically-closenodes tend to be inthe same zone

Topologically-closenodes tend to be inthe same zone

Page 39: P2P Network Structured Networks: Distributed Hash Tablesdeim.urv.cat/~pedro.garcia/P2P/ppt/p2pstructured.pdf · Idea: Hash Tables • A hash table associates data with keys – Key

Conclusion

• DHT is a simple, yet powerful abstraction– Building block of many distributed services (file systems,

application-layer multicast, distributed caches, etc.)

• Many DHT designs, with various pros and cons– Balance between state (degree), speed of lookup

(diameter), and ease of management

• System must support rapid changes in membership– Dealing with joins/leaves/failures is not trivial– Dynamics of P2P network is difficult to analyze

• Many open issues worth exploring