1x2 - Fachgebiet Komplexe und Verteilte IT Systeme

Werbung
Vorlesungg
P2P Netzwerke
6: Kademlia
6: Kademlia
Dr. Dominic Battré
Complex and Distributed IT‐Systems
dominic battre@tu berlin de
dominic.battre@tu‐berlin.de
Inhalte der Vorlesung (vorläufig)
Einleitung
• Was ist P2P?
• Definition
• Einsatzgebiete
U
Unstrukturierte Netze
k i
N
• Napster
• Gnutella
• Super‐Peer Netzwerke
Super Peer Netzwerke
• Small‐World Netzwerke etc.
Fortgeschrittenes
• Sicherheit
Strukturierte Netze
• Verteilte Hash‐Tabellen
• Grundlagen
• Chord, CAN, Pastry, Kademlia
• Programmieren von DHTs
Programmieren von DHTs
• Gradoptimierte Netzwerke
• SkipNet, P‐Grid
• Lastverteilung in strukturierten Netzen
28.05.2009
Dominic Battré ‐ P2P Netzwerke
Anwendungen
• OceanStore
• BabelPeers
• Amazon
• Multicast
2
Kademlia
● Kademlia
■ Petar Maymounkov and David Mazierès: "Kademlia: A Peer‐
to‐peer information System Based on the XOR Metric", 1st International Workshop on Peer‐to‐peer Systems, 2002
28.05.2009
Dominic Battré ‐ P2P Netzwerke
3
Kademlia
● Populäre DHT (muTorrent, Ktorrent, Vuze, BitTorrent, Cspace, eDonkey 2000, MLDonkey, … siehe Wikipedia) ● Geringer Wartungsaufwand für konsistente Routing g
g
g
Tabellen
● Knoten haben genügend Informationen und Flexibilität um g
g
Low‐Latency Pfade zu wählen
● Parallele, asynchrone Anfragen, um Verzögerungen durch , y
g ,
g
g
Timeouts zu umgehen
● Sehr Robust (u.A.
(
ggegen gewisse Denial
g g
of Service Angriffe)
g
)
28.05.2009
Dominic Battré ‐ P2P Netzwerke
4
XOR Metrik
● Distanz d(A, B) = A ⊕ B
0
0
000
1
001
0
1
1
0
0
010
1
0
011
1
1
100
0
101
1
110
111
010
100
110 = 4 + 2 = 6
28.05.2009
Dominic Battré ‐ P2P Netzwerke
5
XOR Metrik
● Eigenschaften:
■ d(X,X) = 0
■ d(X,Y) = 0 → X=Y
■ d(X,Y) = d(Y,X) → Anfragen kommen von Knoten, die in Routing Tabelle d(X Y) d(Y X) → A f
k
K
di i R i T b ll
stehen können (→ Verbessern der Tabellen)
■ d(X,Y) ≤ d(X,Z) + d(Z,Y)
( , ) ( , ) ( , )
■ Zu jedem Knoten gibt es genau einen Knoten mit Distanz d → Routingpfade konvergieren am Ende
→ Caching möglich
→ Caching möglich
0
1
■ Knoten im gleichen Unter‐
baum sind nah beieinander
0
1
0
1
0
000
28.05.2009
1
001
0
010
Dominic Battré ‐ P2P Netzwerke
1
011
0
100
1
101
0
110
1
111
6
Routing Tabelle
000…
1…
28.05.2009
01…
0010…
Q
Quelle: Kademlia: A Peer‐to‐peer
p
Information System Based
f
y
on the XOR Metric
Petar Maymounkov and David Mayières
Dominic Battré ‐ P2P Netzwerke
7
Routing Tabelle
● Jeder Knoten kennt mindestens einen Knoten in jedem Unterbaum, sofern dieser Unterbaum einen Knoten enthält.
● Knoten Id:
● Unterbaum i:
Unterbaum i:
011001010011001
01101
01101…
Präfix der
Länge i
28.05.2009
(i+1)‐tes
Bit geflippt
Dominic Battré ‐ P2P Netzwerke
8
Routing Beispiel
● Routing von 0011… nach 1110… 28.05.2009
Dominic Battré ‐ P2P Netzwerke
9
Routing Tabelle
Q
Quelle: Kademlia: A Peer‐to‐peer
p
Information System Based
f
y
on the XOR Metric
Petar Maymounkov and David Mayières
28.05.2009
Dominic Battré ‐ P2P Netzwerke
10
k‐Buckets
●
●
●
●
Ein k‐Bucket für jede Präfixlänge 0≤i<160
Jeder Bucket enthält bis zu k Knoten (z.B. k=20)
Einträge in Buckets nach „least‐recently seen“ sortiert
Bei Empfang von Nachricht von Peer p
■ Wenn p schon in Bucket: verschiebe an Ende von Bucket
■ Wenn p nicht in Bucket:
Wenn p nicht in Bucket:
♦ Wenn Bucket weniger als k Peers enthält: am Ende aufnehmen
♦ Sonst:
○ wenn erster Peer in Bucket auf Ping reagiert: verschiebe diesen ans Ende des Buckets
,
p
○ Sonst: lösche ersten Peer aus Bucket, nimm p am Ende des Buckets
auf
● LRU‐Verdrängung, aber: aktive Knoten werden nie verdrängt
28.05.2009
Dominic Battré ‐ P2P Netzwerke
11
k‐Buckets
P(bei t + 60 n
noch onlin
ne)
● Bevorzugung alter Knoten verbessert Stabilität
Knoten ist t Minuten online
Q
Quelle: Kademlia: A Peer‐to‐peer
p
Information System Based
f
y
on the XOR Metric
Petar Maymounkov and David Mayières
28.05.2009
Dominic Battré ‐ P2P Netzwerke
12
Nachrichten
● PING
■ Testet ob Knoten online ist
● STORE
■ Speichert Datum bei Knoten
● FIND_NODE(160 Bit ID)
FIND NODE(160 Bit ID)
■ Liefert die k nächstgelegenen bekannten Knoten (
(bezüglich XOR Metrik!)
g
)
■ Aus einem k‐Bucket, wenn dieser voll ist; sonst aus mehreren
● FIND_VALUE
FIND VALUE
■ Wie FIND_NODE, aber liefert den Wert, wenn er bekannt ist
28.05.2009
Dominic Battré ‐ P2P Netzwerke
13
Routing Protokoll – Single‐Threaded
1
2
3
4
5
6
7
8
9
10
11
12
13
p.lookup(T)
l k (T)
N = PriorityQueue(maximale Länge k)
N.add(α nächste Knoten)
solange nicht alle Knoten aus N erfolgreich gefragt:
k = nächster, nicht gefragter Knoten aus N
N' = k.FIND_NODE(T);
wenn N
N' = {}: // Fehler
= {}: // Fehler
lösche k aus N
sonst:
N = k nächste Knoten aus N und N'
N k nächste Knoten aus N und N
wenn N weniger als k Knoten enthält:
markiere alle Knoten als ungefragt, goto 3
liefere nächsten Knoten aus N
28.05.2009
Dominic Battré ‐ P2P Netzwerke
14
Routing Protokoll – Multi‐Threaded
(wie ich es implementieren würde ‐ Paper sehr ungenau)
1
2
3
4
5
6
7
8
9
10
p.lookup(T)
p
p( )
N = PriorityQueue(maximale Länge k)
N.add(α nächste Knoten)
solange nicht alle Knoten aus N erfolgreich gefragt:
warte, bis weniger als α Anfragen ausstehen
p' = nächster, nicht gefragter Knoten aus N
sende FIND_NODE(T) an p'
wenn N weniger als k Knoten enthält:
markiere alle Knoten als ungefragt, goto 3
liefere nächsten Knoten aus N
1
2
On FIND_NODE Time Out (k):
Lösche k aus N
1
2
On FIND_NODE Answer (k, N'):
N = nächste k Knoten aus N und N'
28.05.2009
Dominic Battré ‐ P2P Netzwerke
15
Routing Protokoll – Multi‐Threaded
●
●
●
●
Häufig α = 3 (sozusagen die Anzahl Worker Threads)
Geringere Latenz für höheren Netzwerkverkehr getauscht
Bevorzugt Routing durch Knoten mit geringer Latenz
Bevorzugt Routing durch Knoten mit geringer Latenz
Vermindert Verzögerungen, wenn Knoten offline gegangen sind
● Korrektheit: s. Paper
28.05.2009
Dominic Battré ‐ P2P Netzwerke
16
Datenspeichern
● Store(key, value)
■ Ermittle k nächste Knoten
■ Sende STORE an jeden dieser Knoten
● Softstate
■ Neueinfügen jede Stunde
● Lookup
■ FIND_VALUE statt FIND_NODE
■ Daten werden beim zuletzt gefragten Knoten, der sie nicht d b
l
f
d
h
speicherte, repliziert
■ Lebenszeit des Replikats: exponentiell antiproportional zu Lebenszeit des Replikats: exponentiell antiproportional zu
Anzahl Knoten zwischen aktuellem und zur ID nächsten Knoten
28.05.2009
Dominic Battré ‐ P2P Netzwerke
17
Join
●
●
●
●
Neuer Knoten u kennt Knoten w
u fügt w in entsprechenden k‐Bucket ein
u macht Lookup nach sich selbst und gewinnt neue Knoten
u macht Lookup nach sich selbst und gewinnt neue Knoten
u wählt sich zufällige IDs in leeren k‐Buckets und routet dorthin
● Während dieser Vorgänge fügt sich u automatisch in k‐
Buckets bei anderen Knoten ein.
bei anderen Knoten ein
28.05.2009
Dominic Battré ‐ P2P Netzwerke
18
Implementierungs Details
● Pings werden nicht wirklich wie beschrieben verschickt (es wären zu viele)
■ Pings werden verzögert, bis sinnvolle Nachricht geroutet werden muss
■ Ein Replacement Cache hält Knoten, die ausgefallene Knoten kompensieren können
● Statt Binärbaum: 2b‐ärer Baum, reduziert Tiefe
28.05.2009
Dominic Battré ‐ P2P Netzwerke
19
Zusammenfassung
●
●
●
●
In echten Netzen erprobt
Robust
Logarithmisches Routing
Logarithmisches Routing
Neuer Aspekt: Nebenläufige Anfragen
28.05.2009
Dominic Battré ‐ P2P Netzwerke
20
Ranking nach scholar.google.com
28.05.2009
Netzwerk
Referenzen nach scholar.google.com
Chord (2001+2003)
7606
CAN (2001)
CAN (2001)
5204
Pastry (2001 + 2001)
5338
Tapestry (2001)
1927
Kademlia (2002)
929
Dominic Battré ‐ P2P Netzwerke
21
Herunterladen