2x2 - Fachgebiet Komplexe und Verteilte IT Systeme

Werbung
Inhalte der Vorlesung (vorläufig)
Einleitung
Vorlesungg
P2P Netzwerke
• Was ist P2P?
• Definition
• Einsatzgebiete
6: Kademlia
6: Kademlia
Dr. Dominic Battré
Complex and Distributed IT‐Systems
dominic battre@tu berlin de
dominic.battre@tu‐berlin.de
• Verteilte Hash‐Tabellen
• Grundlagen
• Chord, CAN, Pastry, Kademlia
• Programmieren von DHTs
Programmieren von DHTs
• Gradoptimierte Netzwerke
• SkipNet, P‐Grid
• Lastverteilung in strukturierten Netzen
Kademlia
Fortgeschrittenes
• Sicherheit
Anwendungen
• OceanStore
• BabelPeers
• Amazon
• Multicast
Dominic Battré ‐ P2P Netzwerke
2
Kademlia
● 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
)
■ 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
Dominic Battré ‐ P2P Netzwerke
• Napster
• Gnutella
• Super‐Peer Netzwerke
Super Peer Netzwerke
• Small‐World Netzwerke etc.
Strukturierte Netze
28.05.2009
28.05.2009
U
Unstrukturierte Netze
k i
N
3
28.05.2009
Dominic Battré ‐ P2P Netzwerke
4
XOR Metrik
XOR Metrik
● Eigenschaften:
● Distanz d(A, B) = A ⊕ B
0
0
000
1
0
1
1
0
0
001
010
1
011
0
1
1
100
■ 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
101
0
110
1
111
010
100
110 = 4 + 2 = 6
28.05.2009
0
000
Dominic Battré ‐ P2P Netzwerke
5
28.05.2009
Routing Tabelle
1
001
0
010
1
011
0
100
Dominic Battré ‐ P2P Netzwerke
1
101
0
110
1
111
6
Routing Tabelle
● Jeder Knoten kennt mindestens einen Knoten in jedem Unterbaum, sofern dieser Unterbaum einen Knoten enthält.
● Knoten Id:
● Unterbaum i:
Unterbaum i:
28.05.2009
01…
01101
01101…
Präfix der
Länge i
000…
1…
011001010011001
(i+1)‐tes
Bit geflippt
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
28.05.2009
Dominic Battré ‐ P2P Netzwerke
8
Routing Beispiel
Routing Tabelle
● Routing von 0011… nach 1110… 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
9
28.05.2009
Dominic Battré ‐ P2P Netzwerke
k‐Buckets
k‐Buckets
● Bevorzugung alter Knoten verbessert Stabilität
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
P(bei t + 60 n
noch onlin
ne)
●
●
●
●
10
■ 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
Knoten ist t Minuten online
● LRU‐Verdrängung, aber: aktive Knoten werden nie verdrängt
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
11
28.05.2009
Dominic Battré ‐ P2P Netzwerke
12
Nachrichten
Routing Protokoll – Single‐Threaded
● 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
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
■ Wie FIND_NODE, aber liefert den Wert, wenn er bekannt ist
28.05.2009
Dominic Battré ‐ P2P Netzwerke
13
28.05.2009
Routing Protokoll – Multi‐Threaded
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
●
●
●
●
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
15
28.05.2009
Dominic Battré ‐ P2P Netzwerke
16
Datenspeichern
Join
● Store(key, value)
●
●
●
●
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
■ 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
28.05.2009
Implementierungs Details
Dominic Battré ‐ P2P Netzwerke
18
Zusammenfassung
● 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
●
●
●
●
In echten Netzen erprobt
Robust
Logarithmisches Routing
Logarithmisches Routing
Neuer Aspekt: Nebenläufige Anfragen
● Statt Binärbaum: 2b‐ärer Baum, reduziert Tiefe
28.05.2009
Dominic Battré ‐ P2P Netzwerke
19
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