1x2 - Complex and Distributed IT Systems

Werbung
Vorlesung
P2P Netzwerke
5: Pastry
5: Pastry
5: 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
11.05.2009
Dominic Battré ‐ P2P Netzwerke
Anwendungen
• OceanStore
• BabelPeers
• Amazon
• Multicast
2
Pastry und Tapestry
● Pastry
■ Antony Rowstron and Peter Druschel: "Pastry: Scalable, decentralized object location and routing for large‐scale peer‐
to peer systems
to‐peer
systems", IFIP/ACM International Conference on IFIP/ACM International Conference on
Distributed Systems Platforms (Middleware), 2001
● Tapestry
apest y
■ Kirsten Hildrum, John Kubiatowicz, Satish Rao, Ben Y. Zhao, "Distributed object location in a dynamic network.", SPAA, 2002, pp. 41‐52
● Grundlage: Routing nach Plaxton/Rajaraman/Richa
■C
C. Greg Plaxton, Rajmohan
G
Pl
R j h Rajaraman, A. W. Richa, R j
A W Ri h
"Accessing Nearby Copies of Replicated Objects in a Distributed Environment", SPAA, 1997, pp. 311‐320
,
,
, pp
11.05.2009
Dominic Battré ‐ P2P Netzwerke
3
Grundidee: Präfix‐Routing
● ID wird zur Basis 2b dargestellt, ■ z.B. b=4 bedeutet Hexadezimaldarstellung
■ bei 160 Bit sind das 40 Ziffern
● Grundidee:
Sende die Nachricht an den Knoten aus der Routing‐Tabelle, dessen gemeinsamer Präfix mit g
,
g
der Ziel‐ID maximale Länge hat.
● Was für Einträge braucht man in der Routing‐Tabelle?
11.05.2009
Dominic Battré ‐ P2P Netzwerke
4
Routing‐Tabelle
Knoten 53411721, 10.000 Knoten
,
b=3, d.h. Oktalziffern
ID‐Länge 8 Ziffern, d.h. 3*8 = 24 Bit
Präfix
0
1
2
3
4
‐
05113420
10421650
25661215
33561253
42604240
5
50652006
51615413
52211242
53
53021530
53110517
53242072
534
53403564
5341
53410425
54116142
53351527
53435054
53447620
5
6
7
66353254
72621233
55103005
56433314
57767105
53557047
53654314
53740336
53452243
53467746
53472422
53411
534117
5341172
11.05.2009
Dominic Battré ‐ P2P Netzwerke
5
Routing‐Tabelle
● Beispiel: Graphische Darstellung eines Teils der ll
i
il d
Routing‐Tabelle eines Knotens mit der ID 021xxxx
● Jeweils ein Zeiger in den Sektor 1xxx, 2xxx, 3xxx
● Dann je ein Zeiger in die Sektoren 00xxx, 01xxx, 03xxx
● Dann je ein Zeiger in die Sektoren 020xxx, 022xxx, 023xxx
● etc.
11.05.2009
Dominic Battré ‐ P2P Netzwerke
6
Probleme
● Wie geht das Routing weiter, wenn man auf einen leeren Eintrag in der Routing‐Tabelle trifft?
● Hier unterscheiden sich Pastry und Tapestry
■ Frage: Sind die Routing‐Tabellen konsistent? ■ d.h., gibt es für einen leeren Eintrag niemals einen passenden ,g
g
p
Knoten?
■ Antwort von Pastry: Nicht konsistent
■ Antwort von Tapestry: Konsistent
● Entsprechend dieser Annahme unterscheidet sich das p
weitere Vorgehen
11.05.2009
Dominic Battré ‐ P2P Netzwerke
7
Pastry
● Zuordnung von Bereichen:
■ Root‐Knoten ist der numerisch dichteste
■ Aufpassen: der numerisch dichteste Knoten kann ein ganz anderes Präfix haben!
■ Beispiel: Knoten 2700, Ziel 2777, nächster Knoten 3000 (Oktal)
● Daher:
D h
■ Pastry wechselt am Ende auf ein anderes Routing‐Verfahren
■ Dazu wird ein Leaf‐Set verwendet, das die L dichtesten Knoten Dazu wird ein Leaf Set verwendet das die L dichtesten Knoten
beinhaltet
● Also:
■ Mit Präfix‐Routing wird in die Nähe des Ziels gesprungen
g
gg
■ Die genaue Positionierung geht dann über das Leaf‐Set
11.05.2009
Dominic Battré ‐ P2P Netzwerke
8
Vergleich mit Chord
● In beide Richtungen routen (statt nur im Uhrzeigersinn)
● Restdistanz pro Schritt durch 2b teilen (statt halbieren)
● Routing‐Einträge werden jeweils aus einem Intervall ausgesucht (statt deterministisch einen zu nehmen)
● Verantwortlichkeiten werden anders definiert
11.05.2009
Dominic Battré ‐ P2P Netzwerke
9
Pastry: Routing Algorithmus
1
2
3
4
5
6
7
8
9
10
11
12
13
// Knoten A: Route Schlüssel D
if LeafSet[‐L/2] <= D <= LeafSet[L/2] // im Leafset?
weiterleiten an LeafSet[i] s.d. |D‐LeafSet[i]| minimal
else
l = Länge des gemeins. Präfixes von A und D
if R[l, D[l]] <> nil
weiterleiten an R[l, D[l]]
else
// seltener Fall (Eintrag leer/Knoten nicht erreichbar)
suche Knoten T in R und L so dass
i
‐ Länge des gemeins. Präfixes von T und D >= l
‐ |T‐D| < |A‐D|
weiterleiten
it l it
and T
d T
Solch ein Knoten
existiert zumindest
im Leaf‐Set
11.05.2009
Dominic Battré ‐ P2P Netzwerke
10
Pastry: Performance
● Anzahl Einträge in der Routing‐Tabelle: O((logg 2b N )
● Routing
Routing‐Performance:
Performance: O(log 2b N )
● Wenn
Wenn Routing‐Tabellen leer: Routing Tabellen leer: O( N / L)
11.05.2009
Dominic Battré ‐ P2P Netzwerke
11
Lokalität
● Einträge in der Routing‐Tabelle können frei gewählt werden (entsprechend den Constraints)
● Tabellen werden mit "nahen" Knoten befüllt
● Art der Distanzbestimmung ist dabei offen gelassen
● Anforderung: es muss eine Metrik sein
Anforderung: es muss eine Metrik sein
● Die Befüllung der Routing‐Tabellen mit "nahen" Knoten wird durch den Join‐Algorithmus
wird durch den Join
Algorithmus gewährleistet:
gewährleistet:
■ Annahme dabei: neuer Knoten ist "nahe" zu seinem Bootstrap‐Knoten
Bootstrap
Knoten A
A
■ Also sind die Knoten B, C, … auf dem Pfad auch "nahe"
■ Daher ist die so konstruierte Tabelle schon relativ gut
Daher ist die so konstruierte Tabelle schon relativ gut
11.05.2009
Dominic Battré ‐ P2P Netzwerke
12
Ankunft eines Knoten
● Route Nachricht an eigene ID id über bekannten Knoten A
● Die Nachricht wird über Knoten B, C, … an Knoten Z g
geroutet
● Jeder Knoten auf der Route schickt seine Routing‐Tabelle zurück
● Daraus baue ich meine eigene Tabelle auf:
■ Zeile 0 wird von Knoten A genommen
Zeile 0 wird von Knoten A genommen
■ Zeile 1 wird von Knoten B genommen
■…
● Leaf‐Set wird von Knoten Z genommen
● Alle jetzt bekannten Knoten werden informiert
Alle jetzt bekannten Knoten werden informiert
11.05.2009
Dominic Battré ‐ P2P Netzwerke
13
Varianten beim Einfügen
● Einfache Variante SL (von vorheriger Folie):
■ Jeweils eine Zeile auf dem Weg vom Join‐Knoten zum Ziel nehmen
● Variante WT:
■ Gesamten Status von jedem Knoten auf dem Weg zum Ziel nehmen
● Variante WTF (in FreePastry implementiert):
■ Eine Ebene weiter gehen, von allen so bekannten Knoten den Status holen
● IIn den Varianten WT und WTF wird jeweils die Lokalität geprüft d V i
WT d WTF i d j
il di L k li ä
üf
(RTT‐Messungen)
● Bei mehreren Möglichkeiten, eine Zelle zu füllen, wird jeweils Bei mehreren Möglichkeiten eine Zelle zu füllen wird jeweils
der dichteste Knoten genommen
11.05.2009
Dominic Battré ‐ P2P Netzwerke
14
Probleme beim Einfügen
● Ich bin der erste Peer mit einem bestimmten Präfix
● Dann müssen potentiell alle Knoten im Netz mich kennenlernen
● Es lernen mich aber nur Teile des Netzwerkes kennen
● Der Rest wird über den Reparaturmechanismus erledigt, Der Rest wird über den Reparaturmechanismus erledigt,
korrektes Leaf‐Set erlaubt langsames aber korrektes Routing.
g
Für korrektes Routing wird nur ein korrektes Leaf‐Set benötigt.
Nur beim Leaf‐Set wird aktiv geprüft, ob Peers noch anwesend sind.
11.05.2009
Dominic Battré ‐ P2P Netzwerke
15
Ausfall eines Knoten
● Auffüllen der Routing‐Tabelle:
● Um einen Eintrag R[l, d] zu ersetzen, wird zunächst ein Knoten R[l, i], i != d, gefragt. Wenn dieser einen passenden g
g
Eintrag hat, wird er genommen.
● Wenn nicht, wird ein Knoten R[l+1, i], gefragt, etc.
,
[ , ], g
g,
● Mit hoher Wahrscheinlichkeit wird so ein Knoten gefunden, der die Tabelle auffüllen kann
11.05.2009
Dominic Battré ‐ P2P Netzwerke
16
Ausfall eines Knotens
● Wenn ein toter Knoten im LeafSet bemerkt wird:
● Kontaktiere den äußersten lebendigen Knoten im LeafSet, um das LeafSet wieder aufzufüllen
Dieser Knoten füllt mein
füllt mein LeafSet auf
Mein LeafSet
‐4
‐3
‐2
‐1
0
+1
+2
+3
+4
+5
+6
+7
+8
LeafSet von Knoten 4
Knoten 4
11.05.2009
Dominic Battré ‐ P2P Netzwerke
17
Messungen
● Hop‐Anzahl:
Quelle: Antony Rowstron and Peter Druschel: ● Parameter b=4, L=16 Parameter b=4 L=16
Pastry: Scalable decentralized object location
Pastry: Scalable, decentralized
and routing for large‐scale peer‐to‐peer systems
● also log(N) = log16(N)
● Gute Übereinstimmung Analyse / Messungen
Gute Übereinstimmung Analyse / Messungen
11.05.2009
Dominic Battré ‐ P2P Netzwerke
18
Messungen
● Abweichung von der Hop‐Distanz:
Q
Quelle: Antony Rowstron
y
and Peter Druschel: Pastry: Scalable, decentralized object location and routing for large‐scale peer‐
to‐peer systems
● Geringe Abweichung von erwarteter Hop‐Distanz
11.05.2009
Dominic Battré ‐ P2P Netzwerke
19
Messungen
● Messung des sog. Stretch: Verhältnis zum optimalen Routing
Q
Quelle: Antony Rowstron
y
and Peter Druschel: Pastry: Scalable, decentralized object location and routing for large‐scale peer‐
to‐peer systems
● Latenz nur ca. 40% langsamer als direktes Internet
Latenz nur ca. 40% langsamer als direktes Internet‐Routing
Routing
11.05.2009
Dominic Battré ‐ P2P Netzwerke
20
Routing Geschwindigkeit
●
●
●
●
●
●
Für die Reihe 0 gibt es pro Feld N/2b Möglichkeiten
D.h. die Wahrscheinlichkeit, einen nahen Knoten zu finden, ist hoch
Für Reihe 1 gibt es pro Feld N/22b Möglichkeiten
Für Reihe 2 gibt es pro Feld N/23b Möglichkeiten
Für Reihe 2 gibt es pro Feld N/2
…
g
sehr weit Für den Nachbarn im LeafSet ggibt es nur eine Möglichkeit Æ
entfernt
● Daraus folgt:
■ Die ersten Schritte sind billig
Di
t S h itt i d billi
■ Die letzten Schritte sind teuer
Mehr Schritte sind nicht viel teurer, da die teuren Schritte immer anfallen!
11.05.2009
Dominic Battré ‐ P2P Netzwerke
21
Messungen
● Qualität der Routing‐Tabellen
Quelle: Antony Rowstron and Peter Druschel: Pastry: Scalable, decentralized
y
,
object
j location and routing
g ffor large‐scale
g
peer‐
p
to‐peer systems
11.05.2009
Dominic Battré ‐ P2P Netzwerke
b=4, L=16, 5.000 Knoten
22
Messungen
● Knotenausfall: von 5000 Knoten fallen 500 aus
Quelle: Antony Rowstron and Peter Druschel: Pastry: Scalable, decentralized
y
,
object
j location and routing
g ffor large‐scale
g
peer‐
p
to‐peer systems
11.05.2009
Dominic Battré ‐ P2P Netzwerke
23
Vergleich Tapestry/Pastry
● Basieren beide auf Prefix‐Routing
● Pastry
■ "Lockeres Verfahren": Routing‐Tabellen müssen nicht korrekt g
sein
■ Leaf‐Set reicht zum korrekten Routing
■ Tabellen nur zur Beschleunigung
■ In der Praxis besser einsetzbar
● Tapestry
■ Routing
Routing‐Tabellen
Tabellen werden immer korrekt gehalten
werden immer korrekt gehalten
■ Dadurch beweisbare Eigenschaften
■ Daher theoretisch interessant
Daher theoretisch interessant
11.05.2009
Dominic Battré ‐ P2P Netzwerke
24
Herunterladen