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