Inhalte der Vorlesung (vorläufig) Einleitung Vorlesung P2P Netzwerke • 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 3: Verteilte Hash‐ 3: Verteilte Hash Hash‐Tabellen, Tabellen Chord Tabellen, Chord Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de Strukturierte Netze • Verteilte Hash‐Tabellen • Grundlagen • Chord, CAN, Pastry, Kademlia, Papnet • Programmieren von DHTs Programmieren von DHTs • Gradoptimierte Netzwerke • SkipNet, P‐Grid • Lastverteilung in strukturierten Netzen 15.04.2010 Inhalt Dominic Battré ‐ P2P Netzwerke • OceanStore • BabelPeers • Amazon • Multicast 2 Literatur ● Konsistentes Hashing ● Verteilte Hash‐Tabellen ● Chord 15.04.2010 Dominic Battré ‐ P2P Netzwerke Anwendungen ● Ion Stoica, Robert Morris, David Liben‐Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, Hari Balakrishnan: "Chord: A Scalable Peer‐to‐peer Lookup Protocol for Internet Applications", IEEE/ACM Transactions on Networking, Vol. 11, No. 1, pp. 17‐32, February 2003. ● Ion Stoica, Robert Morris, David R. Karger, M. Frans Kaashoek, Hari Balakrishnan: "Chord: A Scalable Peer‐to‐ peer Lookup Service for L k S i f Internet Applications", MIT TR 819. I A li i " MIT TR 819 3 15.04.2010 Dominic Battré ‐ P2P Netzwerke 4 Das „lookup“ Problem Auffinden von Objekten ● Gegeben: ● Zentrales Problem in P2P Netzwerken: ■ Eine Menge von Knoten ■ Eine Menge von Objekten auf jedem Knoten ■ „Ich möchte Ressource X nutzen, welcher Rechner im P2P‐ Netz ist dafür zuständig?“ ● Grundfragen: ■ Wo wird welches Objekt im Netzwerk gespeichert? ■ Wie wird das Objekt gefunden? X? ● Objekte? Was für Objekte? ■ ■ ■ ■ ■ X 15.04.2010 Dominic Battré ‐ P2P Netzwerke 5 15.04.2010 Napster vs. Gnutella 6 ● Benutzen global konsistente Protokolle, die sicherstellen, dass eine Ressource im P2P‐Netz ■ Objekt: Metadaten zu Dateien ■ Speicherung und Suche über zentralen Server S i h d S h üb t l S ■ Æ Probleme: keine Ausfallsicherheit, keine Skalierbarkeit ■ unabhängig von ihrer Popularität ■ effizient g gefunden wird ● Gnutella: ■ Objekt ist die Datei ■ Suche: Breitensuche durch das Netzwerk ■ Æ Probleme: ● Typische Klassifizierungsmerkmale Typische Klassifizierungsmerkmale ■ Knotengrad: Anzahl der bekannten Peers ♦ Entweder: Flooding, d.h. das ganze Netzwerk wird mit Suchanfragen überflutet ♦ Oder: Begrenzung des Suchhorizontes (Time to Live), dann werden nicht alle Treffer gefunden Dominic Battré ‐ P2P Netzwerke Dominic Battré ‐ P2P Netzwerke Strukturierte P2P‐Netzwerke ● Bisher betrachtet: Napster und Gnutella ● Napster: 15.04.2010 Dateien Verweise auf Dateien D t b kt b ll Datenbanktabellen Einträge in Datenbanktabellen Informationen (unterschiedliche Syntax/Semantik) Informationen (unterschiedliche Syntax/Semantik) ♦ Spiegelt sich in Größe der Routingtabelle wieder Spiegelt sich in Größe der Routingtabelle wieder ■ Max. Anzahl Hops bis Ressource gefunden ist ♦ Wie viele Peers müssen maximal kontaktiert werden? Wie viele Peers müssen maximal kontaktiert werden? 7 15.04.2010 Dominic Battré ‐ P2P Netzwerke 8 Napster vs. Gnutella Strukturierte P2P‐Netzwerke ● Frage: Wie funktioniert Abbildung Ressource Î Peer? Kom mmunikattionsaufw wand Flooding ● Ansatz vergleichbar mit klassischen Hashtabellen O(N) ■ Key Î Slot, Slot speichert den zu Key passenden Value ● Analogie im P2P‐Kontext ■ ■ ■ ■ Verteilte Hash‐Tab O(log N) Zentraler Server O(1) O(1) O(log N) Key: Eindeutiger Identifier der Ressource Slot: Peer der für Ressource zuständig ist Value: die Ressource selbst oder ein Link darauf Jeder Peer kennt Hash‐Funktion ● Problem: Umsortierung nach Knotenankunft O(N) Statusinformationen (Nutzdaten + Routing‐Informationen) 15.04.2010 Dominic Battré ‐ P2P Netzwerke 9 15.04.2010 Konsistentes Hashing 15.04.2010 1 2 Dominic Battré ‐ P2P Netzwerke 3 10 Konsistentes Hashing ● Grundidee: Knoten als Zellen in einer Hashtabelle auffassen ● Jedes Objekt hat einen Schlüssel ● Hash Hash‐Funktion Funktion bestimmt, welches Objekt auf welchen bestimmt, welches Objekt auf welchen Knoten kommt ● Problem: Umsortierung Problem: Umsortierung nach Knotenankunft nach Knotenankunft 0 Dominic Battré ‐ P2P Netzwerke 4 11 ● Wie realisiere ich eine Hash‐Funktion, so dass bei Vergrößerung / Verkleinerung der Tabelle möglichst wenig Objekte umsortiert werden müssen? ● Idee: "Zwischenschicht einziehen": ■ Extrem große Hash‐Tabelle, deren Größe nie geändert wird ■ Jeder Zelle der kleinen Tabelle entspricht einer Menge von Zellen in der großen Tabelle ■ Bei Größenänderungen der kleinen Tabelle werden nur wenige Objekte verschoben ■ Größenordnung O(X/N): X Anzahl Objekte, N Anzahl Zellen in der kleinen Tabelle 15.04.2010 Dominic Battré ‐ P2P Netzwerke 12 Verteilte Hashtabellen Verteilte Hashtabellen ● Grundidee: ● Grundidee: ■ Jedes Objekt im Netzwerk (z.B. Datei) bekommt eine ID ■ Jeder Netzknoten ist verantwortlich für einen Bereich von ID‘s ■ Das Netz ist so aufgebaut, dass der für eine ID verantwortliche Knoten schnell aufgefunden werden kann ■ Jedes Objekt im Netzwerk (z.B. Datei) bekommt eine ID ■ Jeder Netzknoten ist verantwortlich für einen Bereich von ID‘s ■ Das Netz ist so aufgebaut, dass der für eine ID verantwortliche Knoten schnell aufgefunden werden kann Objekte Objekte ID‐Raum ID‐Raum Knoten Knoten 15.04.2010 Dominic Battré ‐ P2P Netzwerke 13 15.04.2010 Dominic Battré ‐ P2P Netzwerke Verteilte Hashtabellen Verteilte Hashtabellen ● Wie sieht der ID‐Raum aus? ■ ■ ■ ■ ● Wie sieht der ID‐Raum aus? ■ ■ ■ ■ Typisch: Ganzzahlig Numerisch, z.B. 0 bis 2 i h G hli i h 0 bi 2128‐1 Jeder Knoten hat selbst eine ID aus dem Bereich Jeder Knoten ist verantwortlich für einen Bereich Der Raum ist zirkulär: Typisch: Ganzzahlig Numerisch, z.B. 0 bis 2 i h G hli i h 0 bi 2128‐1 Jeder Knoten hat selbst eine ID aus dem Bereich Jeder Knoten ist verantwortlich für einen Bereich Der Raum ist zirkulär: 0 = 2128 mod 2128 ¾ x 2128 0 = 2128 mod 2128 ¼ x 2128 ¾ x 2128 ½ x 2128 15.04.2010 Dominic Battré ‐ P2P Netzwerke 14 Pastry ¼ x 2128 ½ x 2128 15 15.04.2010 Dominic Battré ‐ P2P Netzwerke 16 Verteilte Hashtabellen Verteilte Hashtabellen ● Wie sieht der ID‐Raum aus? ■ ■ ■ ■ ● Fragen: ■ ID‐Raum ID Raum Typisch: Ganzzahlig Numerisch, z.B. 0 bis 2 i h G hli i h 0 bi 2128‐1 Jeder Knoten hat selbst eine ID aus dem Bereich Jeder Knoten ist verantwortlich für einen Bereich Der Raum ist zirkulär: ♦ Aufbau ♦ Verantwortlichkeit der Knoten ■ Routing ♦ Verbindungsstruktur der Knoten ♦ Wie wird der verantwortliche Knoten gefunden? 0 = 2128 mod 2128 ■ Dynamik y ♦ Integration eines neuen Knotens ♦ Ausfall eines Knotens ¾ x 2128 Chord ● Weitere Fragen: g ■ Lokalität ■ Lastverteilung ¼ x 2128 ♦ Unterschiedliche Performance ● Anwendungs‐Aspekte ■ Was speichere ich? ■ Bestimmung der Objekt‐ID g j ½ x 2128 15.04.2010 Dominic Battré ‐ P2P Netzwerke 17 15.04.2010 Dominic Battré ‐ P2P Netzwerke Anwendungs‐Aspekte Chord ● Speicherung ● Grundidee: ■ Alt Alternativen: Daten oder Index ti D t d I d ■ Daten: ♦ Pro: Schneller Zugriff ♦ Contra: Updates, Speicherverbrauch wegen Redundanz d h b h d d ■ Index: ♦ Pro: Aktualität, Effizientere Verteilung ♦ Contra: Ein Routing‐Schritt mehr ■ Jeder Peer hasht seine derzeitige IP‐Adresse mit SHA1 ♦ Dadurch erhält er eine ID aus [0, 2m‐1] (meist m=128, m=160) ♦ Bildbereich der Hashfunktion wird als Kreis verstanden 0 = 2128 mod 2128 ● Wahl der Objekt‐ID 2127 mod 2128 ■ Anwendungsabhängig g gg ■ So, dass der Suchende die ID bestimmen kann ♦ Z.B. Hash des Objektnamens (Dateiname) ■ Auch mehrere unterschiedliche IDs pro Objekt Auch mehrere unterschiedliche IDs pro Objekt ♦ z.B. Bücher: Titel, Autor, ISBN‐Nummer, Verlag, … ♦ Oder noch feiner: jedes Wort im Titel, weitere Schlagwörter ■ Spielt eine Rolle bei der Lastverteilung Spielt eine Rolle bei der Lastverteilung 121.13.5.101 130.149.73.11 194.25.2.129 15.04.2010 18 Dominic Battré ‐ P2P Netzwerke 19 15.04.2010 15.93.148.53 131.234.12.25 Dominic Battré ‐ P2P Netzwerke 121 13 4 12 121.13.4.12 20 Chord Chord ● Grundidee: ● Ressourcen werden ebenfalls mit SHA1 gehasht ■ Erhalten ebenfalls eindeutige ID zwischen [0, 2m‐1] ■ Jeder Peer hasht seine derzeitige IP‐Adresse mit SHA1 ♦ Dadurch erhält er eine ID aus [0, 2m‐1] (meist m=128, m=160) ♦ Bildbereich der Hashfunktion wird als Kreis verstanden ● Regel: Peer ist für den Bereich vor und inkl. seiner eigenen ID zuständigg 0/32 ● Eigenschaften der Hashfunktion 3 m ■ ID der Peers pseudo‐gleichverteilt im ID‐Raum [0, 2 ‐1] ■ Jeder Peer hat eindeutigen Vorgänger und Nachfolger 128 0 = 2 5 27 7 24 128 mod 2 8 20 11 2127 mod 2128 17 15.04.2010 Dominic Battré ‐ P2P Netzwerke 21 15.04.2010 Routing in Chord 22 ● Zweiter Ansatz für Lookup ■ Solange Anfrage an Nachfolger weiterreichen bis zuständiger Peer erreicht 0/32 27 7 24 8 20 11 Dominic Battré ‐ Übung zu Verteilte Systeme 16 ■ Jeder Peer kennt jeden anderen Peer im P2P‐Netz ● Vorteil ● Jede Anfrage kann mit einem Hop J d A f k i i H beantwortet werden ● Nachteil ● Sehr große Routingtabelle ● Ungeeignet für Netze mit sehr vielen Peers i l P ● Hoher Speicherverbrauch ● Viel Maintenance Viel Maintenance‐Traffic Traffic 3 5 17 15.04.2010 Dominic Battré ‐ Übung zu Verteilte Systeme Routing in Chord ● Erster Ansatz für Lookup ● Vorteil ● Geringe Größe der Routingtabelle G i G öß d R i b ll ● Jeder Peer braucht nur seinen direkten Nachfolger kennen g ● Nachteil ● O(#Peers) Hops bis zum Ziel ● Ineffizient, hohe Antwortzeiten ● Problem bei Knotenausfall 14 16 14 23 15.04.2010 0/32 3 5 27 7 24 8 20 Dominic Battré ‐ Übung zu Verteilte Systeme 11 17 16 14 24 Routing in Chord Beispiel für Finger Tabelle ● Beispiel für Knoten 105: ● Routing in Chord ist Kompromiss aus Ansatz 1 und 2 ■ Jeder Peer kennt seinen Vorgänger und Nachfolger ● Darüberhinaus verwaltet jeder Peer sog. Finger‐Table Offset 1 2 4 8 16 32 64 ID 106 107 109 113 121 9 41 Tats. Knoten 120 120 120 120 18 18 58 0 = 128 ■ O(log O(log #Peers) Einträge für andere Peers in Table #Peers) Einträge für andere Peers in Table ■ Peer i in Finger‐Table hat ca. Abstand 2i zu eigener ID ■ Dank SHA1 Hashfunktion ist mit hoher Wahrscheinlichkeit in Dank SHA1 Hashfunktion ist mit hoher Wahrscheinlichkeit in Peer in diesem Bereich vorhanden ÎDistanz zum Ziel wird mit jedem Hop halbiert j p 120 18 105 96 32 40 ÎO(log #Peers) große Routingtabelle ÎO(log #Peers) Hops bis zum Ziel 76 58 64 15.04.2010 Dominic Battré ‐ P2P Netzwerke 25 15.04.2010 Dominic Battré ‐ P2P Netzwerke Routing in Chord Knotenankunft ● Idee: Suche den Knoten in der Finger‐Table, der am dichtesten an der Zieladresse ist aber nicht dahinter der Zieladresse ist, aber nicht dahinter ● Algorithmen: 1 2 3 4 5 6 7 // ask node n to find the successor of id n.find_successor(id) if id in (n, successor] return successor; else n‘ = closest_preceding_node(id); return n‘.find_successor(id); ( ); 1 2 3 4 5 6 // search the local table for the highest predecessor of id n.closest_preceding_node(id) for i = m downto 1 if finger[i] in (n, id) return finger[i]; return t n; 15.04.2010 Dominic Battré ‐ P2P Netzwerke 26 ● ● ● ● Jeder Knoten hat zusätzlich einen predecessor Zeiger Neuer Knoten muss seinen Identifier n bestimmen Neuer Knoten n muss einen Knoten o im Netz kennen n fragt o nach successor(n) ■ erhält damit seinen eigenen successor n' ● n kontaktiert n', dadurch wird predecessor(n') aktualisiert p 27 15.04.2010 n n' Dominic Battré ‐ P2P Netzwerke 28 Stabilisierungsprotokoll Stabilisierungsprotokoll ● Regelmäßige Kontrolle der successor / predecessor‐Pointer 1 2 3 4 5 6 7 // called periodically. verifies n’s p y f immediate // successor, and tells the successor about n. p.stabilize() n = successor.predecessor; if n in (p, successor) successor = n; successor.notify(p); p 15.04.2010 1 2 3 4 5 6 7 // called periodically. verifies n’s immediate // successor, and tells the successor about n. n.stabilize() x = successor.predecessor; if i ( if x in (n, successor) ) successor = x; successor.notify(n); 1 2 3 4 // n' thinks it might be our predecessor. n.notify(n') if (predecessor is nil or n n' in (predecessor, n)) in (predecessor, n)) predecessor = n'; n n' Dominic Battré ‐ P2P Netzwerke 29 15.04.2010 Stabilisierung der Finger Pointer Finger Pointer 1 2 3 4 5 6 7 Dominic Battré ‐ P2P Netzwerke 30 Routing in Chord // called periodically. refreshes finger table entries. // next stores the index of the next finger to fix. // next stores the index of the next finger to fix n.fix_fingers() next = next + 1; if (next > m) next = 1; finger[next] = find_successor(n + 2^(next‐1) ); 15.04.2010 Dominic Battré ‐ P2P Netzwerke 31 1 2 3 4 5 6 7 // ask node n to find the successor of id n.find_successor(id) if id in (n, successor] Fehlerquelle 1: Veraltete Successor Pointer return successor; else l n‘ = closest_preceding_node(id); return n‘.find_successor(id); 1 2 3 4 5 6 // search the local table for the highest predecessor of id n.closest_preceding_node(id) for i = m downto m downto 1 if finger[i] in (n, id) Fehler quelle 2: Veraltete Finger Pointer return finger[i]; return n; ; 15.04.2010 Dominic Battré ‐ P2P Netzwerke 32 Stabilisierung der Finger Pointer Finger Pointer Stabilisierung der Successor Pointer Neuer Knoten (für k unbekannt) Neuer Knoten (für k unbekannt) Alter Finger Pointer eines Knoten k eines Knoten k Für Distanz 2i p n n' p2 n ' p Ziele, bei denen Finger Pointer p Finger Pointer i genutzt werden k+2 kann hierhin „sollte“ der „ Finger Pointer zeigen Routing fehlerhaft bei inkorrektem Successor Pointer! Ggf. sind Daten noch nicht von n' an n abgegeben worden! n k Routing funktioniert auch mit defekter Finger Tabelle korrekt! Routing funktioniert auch mit defekter Finger‐Tabelle korrekt! 15.04.2010 Dominic Battré ‐ P2P Netzwerke 33 ● Fehler sind nur kurzzeitig, müssen von Application Layer behandelt werden (z.B. wiederholte Anfrage/Einfügen) 15.04.2010 Wie groß werden die Bereiche? ● Was ist "kleine" Wahrscheinlichkeit, was ist eine "hohe"? ● Definition: ■ Geringe Wahrscheinlichkeit: ● Normiere Ringgröße auf 1 ● Æ Ideale Bereichsgröße ist 1/N Ideale Bereichsgröße ist 1/N ● Wahrscheinlichkeit, dass ein Bereich mehr als den Faktor log(N) größer ist oder mehr als den Faktor N kleiner ist ist log(N) größer ist, oder mehr als den Faktor N kleiner ist, ist sehr klein Dominic Battré ‐ P2P Netzwerke 34 Wie groß werden die Bereiche? ● Zufällige Wahl der ID's ● Ideal: bei N Knoten hat jeder Knoten MAXID/N IDs zu verwalten ● Wie sieht es wirklich aus? 15.04.2010 Dominic Battré ‐ P2P Netzwerke 35 ■ Hohe Wahrscheinlichkeit: 1− 1 ,c ≥ 1 Nc 1 ,c ≥ 1 Nc Je größer das Netzwerk, desto dichter ist eine kleine Wahrscheinlichkeit bei 0, und eine hohe Wahrscheinlichkeit bei 1. 15.04.2010 Dominic Battré ‐ P2P Netzwerke 36 Größe eines Intervalls: untere Schranke untere Schranke Wie groß werden die Bereiche? 1. Die Wahrscheinlichkeit, dass ein beliebiges Intervall kleiner ist als Ω(1/N2), ist gering. 2. Die Wahrscheinlichkeit, dass ein beliebiges Intervall größer g g als O(log N/N) ist, ist gering. 1 hi t einem hinter i K t Knoten. N2 Ei : Ereignis, dass Knoten i in dieses Intervall fällt B t ht das Betrachte d Intervall I t ll I der d Größe G öß 1 N2 E : Ereignis, dass irgendein Knoten in I fällt 1 1 N ⇒ P( E ) = P (U Ni=1 Ei ) ≤ ∑i =1 P ( Ei ) = N 2 = N N ⇒ P( Ei ) = 15.04.2010 Dominic Battré ‐ P2P Netzwerke 37 15.04.2010 ● Betrachte wieder auf 1 normierten Ring ● Finger‐Zeiger zeigen auf +½, +¼, +1/8, +1/16, … ● Ab dem Finger dessen Zieldistanz kleiner ist als die Intervallgröße, sind alle Finger identisch (Nachfolger) ● Also suchen wir die Finger für die gilt: 1 log (N ) hinter beliebigem Knoten N E i : Ereignis, dass Knoten i in dieses Intervall fällt Betrachte das Intervall I der Größe 1 log( N ) N E i : Ereignis, dass Knoten i nicht in I fällt ⇒ P ( Ei ) = 1 log( N ) N E :E Ereignis, i i dass d k i Knoten kein K t i I fällt in ⇒ P ( Ei ) = 1 − P ( Ei ) = 1 − 1 1 > 2 x 2 N ⇔ 2x < N 2 ⇔ log2 (2x ) < log2 ( N 2 ) log( N ) N = (1 − 15.04.2010 1 m log( N ) ⎡ 1 ⎤ ) = ⎢ (1 − ) m ⎥ m m ⎦ ⎣ log( N ) 1 log( N ) N log( N ) log( N )) N = (1 − ) N N ⎡1 ⎤ ≤⎢ ⎥ ⎣e⎦ log( N ) 1 = Dominic Battré ‐ P2P Netzwerke e ln( N ) ln(( 2 ) 1 = N 1 ln(( 2 ) 38 Wieviele unterschiedliche Finger‐ Zeiger haben Knoten? Zeiger haben Knoten? Größe eines Intervalls ⇒ P ( E ) = P ( I i =1 E i ) = P ( E1 ) N = (1 − Dominic Battré ‐ P2P Netzwerke ≈ ⇔ x < 2 log2 ( N ) 1 N 1, 44 ● also: O(log N) unterschiedliche Zeiger 39 15.04.2010 Dominic Battré ‐ P2P Netzwerke 40 Wie schnell ist das Routing? Wie schnell ist das Routing? ● O(log N) Schritte mit hoher Wahrscheinlichkeit n p ● O(log N) Schritte mit hoher Wahrscheinlichkeit z n p k ● n möchte an Adresse k senden (zuständig ist ein Knoten z) ● p sei der Vorgänger von k → Wie lange brauchen wir bis p? ● n ≠ p → n sendet an nächsten Vorgänger von k in Finger Tabelle ● Betrachte ein i, sodass p in [n+2i‐1, n+2i) ● Intervall ist nicht leer (enthält p) → n sendet an ersten Knoten in dem Intervall (ist in Fingertabelle) d ll ( b ll ) i‐1 ● D.h.: Überbrückte Distanz ist ≥ 2 15.04.2010 Dominic Battré ‐ P2P Netzwerke ● Betrachte ein i, sodass p in [n+2i‐1, n+2i) ● Intervall ist nicht leer (enthält p) → n sendet an ersten Intervall ist nicht leer (enthält p) → n sendet an ersten Knoten in dem Intervall (ist in Fingertabelle) ● D.h.: Überbrückte Distanz ist ≥ 2 D h : Überbrückte Distanz ist ≥ 2ii‐11 Fortsetzung ● Aktueller Knoten ist in [n+2i‐1, n+2i) und p ebenfalls i 1 → Restdistanz bis p ≤ 2 i‐1 i1 i‐1 ● Länge des Intervalls ist 2 d ll d b ● → Hälfte der Strecke bis p ist überbrückt 41 15.04.2010 Wie schnell ist das Routing? 1 Restdistanz 1/2 2 3 1/22 1/23 … log N log N 2 log N 2 log N … 1/2log N=1/N 1/22log N = 1/N2 Dominic Battré ‐ P2P Netzwerke 42 ● Erwartungswert einfach: ■ Erwartungswert des Ausgangsgrades O(log N) ■ Daher Erwartungswert des Eingangsgrades O(log N) g g gg ( g ) ● Wahrscheinliche obere Schranke??? Wahrscheinliche obere Schranke??? ● Nach Nach 2 log N Schritten ist die Restdistanz 1/N 2 log N Schritten ist die Restdistanz 1/N2 ● Die Wahrscheinlichkeit, dass in einem solchen Intervall mehr als ein Knoten ist ist gering mehr als ein Knoten ist, ist gering ● Î Routing erfolgt in O(log N) Schritten mit hoher Wahrscheinlichkeit 15.04.2010 Dominic Battré ‐ P2P Netzwerke Welche Finger zeigen auf mich? ● In jedem Schritt wird die Restdistanz mind. halbiert ● Startdistanz ist max. 1 (normierter Ring) Schritte z k 43 15.04.2010 Dominic Battré ‐ P2P Netzwerke 44 Welche Finger zeigen auf mich? Welche Finger zeigen auf mich? k p p Position wo Distanz 2i auf k zeigen würde g (für festes i) Für ein Interval der Länge p..k gibt es höchstens p..k Positionen, die g für die Distanz einen Finger Pointer i 2 auf k zeigen lassen würden – egal wie groß 2i ist. wie groß 2 ist 15.04.2010 k (Kann mittels Chernoff Ungleichung g g gezeigt werden, s. Mahlmann 07) Position wo Distanz 2i vor oder hinter k zeigen würde k zeigen würde (für festes i) Dominic Battré ‐ P2P Netzwerke ● Routingtabellen haben höchstens Länge O(log N) (m.h.Wkeit) ● → O(log(N)) * O(log(N)) = O(log2(N)) Knoten können auf k zeigen. 45 15.04.2010 Dominic Battré ‐ P2P Netzwerke Chord: Knotenausfall Knoten bemerkt, dass ein Successor ausgefallen ist Woher bekommt er neuen Successor? Lösung: Liste von x Nachfolgern Lösung: Liste von x Liste wird regelmäßig gegen den Uhrzeigersinn weitergegeben und aktualisiert weitergegeben und aktualisiert ● Wichtig: Routing ist korrekt, auch wenn Finger‐Pointer noch nicht korrigiert! nicht korrigiert! ● Was passiert bei hohem "Churn"? Was passiert bei hohem "Churn"? Dominic Battré ‐ P2P Netzwerke 46 Chord: Hoher Churn ● ● ● ● 15.04.2010 ● Intervall p…k hat höchstens Länge L = O(log(N)/ N) (m.h.Wkeit) ● Anzahl Peers in Intervall der Länge L ist g O( L / (1/N)) = O(log N) (m.h.Wkeit) 47 ● Beispiel: 20 40 30 60 50 1 2 3 4 5 n.stabilize() x = successor predecessor; x = successor.predecessor; if x in (n, successor) successor = x; successor.notify(n); 1 2 3 n.notify(n') if (predecessor is nil or n' in (predecessor, n)) predecessor = n'; 15.04.2010 Dominic Battré ‐ P2P Netzwerke 48 Replika‐Knoten Speichern von Daten ● Nach Knotenausfall wird der Nachfolger verantwortlich für den Bereich des ausgefallenen Knotens ● Daher: Replikation der Daten auf Nachfolger g ● Jeder Knoten hat lokale Daten (z.B. Dateien) ● Er publiziert diese Daten / Indizes im Netzwerk ● Das ganze geht über sog. Das ganze geht über sog. "Soft‐State Soft State Updates Updates" ■ Daten haben auf dem Zielknoten ein Timeout ■ Der Original Der Original‐Knoten Knoten muss sie regelmäßig erneuern muss sie regelmäßig erneuern 0 = 128 120 18 105 96 40 76 58 Knoten Root R1 R2 18 [121,18] [106,120] [77,105] 40 [19,40] [121,18] [106,120] 32 58 [41,58] [19,40] [121,18] 76 [59,76] [41,58] [19,40] 105 [77,105] [59,76] [41,58] 120 [106,120] [77,105] [59,76] ● Wenn ein Knoten ausfällt, verschwinden seine Daten daher nach einiger Zeit nach einiger Zeit ● Der für ein Datum verantwortliche Knoten (Root‐Knoten) verteilt die Daten weiter an die Replika‐Knoten verteilt die Daten weiter an die Replika Knoten 64 15.04.2010 Dominic Battré ‐ P2P Netzwerke 49 15.04.2010 Datenfluss 40 58 76 105 120 Lokal Lokal Lokal Lokal Lokal Lokal Root Root Root Root Root Root Replika Replika Replika Replika Replika Replika Dominic Battré ‐ P2P Netzwerke 50 Knotenankunft 18 15.04.2010 Dominic Battré ‐ P2P Netzwerke ● Problem: Knoten bekommt Verantwortung für einen Bereich ● Er hat aber noch keine Daten für diesen Bereich ● Lösungsmöglichkeiten: ■ Solange Solange bis alle Daten vorhanden sind, werden Anfragen an bis alle Daten vorhanden sind, werden Anfragen an alten Knoten weitergeleitet g ■ Erst ins Netzwerk einhängen, wenn die Daten da sind ■ Problem ignorieren und auf Soft‐State Updates warten 51 15.04.2010 Dominic Battré ‐ P2P Netzwerke 52 Erweiterung: DHash++ Erweiterung: DHash++ ● Frank Dabek, Jinyang Li, Emil Sit, James Robertson, Frans M Kaashoek, Robert Morris: Designing a DHT for Low Latency and High Throughput, NSDI 04, pp. 85‐98 ● Rekursives statt iteratives Routing (geringere Latenz wg. weniger Nachrichten, erlaubt auch effiziente Nutzung von TCP trotz Overhead des Handshakes) Iterativ: 1 15.04.2010 2 4 6 3 4 ● Geringere Latenzen durch lokalitätsbasierte Auswahl der Finger Pointer (wird später in der VL behandelt) Finger Pointer (wird später in der VL behandelt) ● Erasure Codes statt Replikation für geringeren Schreibaufwand (aber langsameres Lesen) Schreibaufwand (aber langsameres Lesen) ? Dominic Battré ‐ P2P Netzwerke Rekursiv: 1 2 ? 5 3 53 15.04.2010 Nachteile von DHTs Dominic Battré ‐ P2P Netzwerke 54 Interfaces zu DHTs ● Ohne explizite Behandlung in der Anwendung: ● Zwei Sichtweisen: ■ Keine Lokalität der Daten: Meier vs. Mayer ■ Un‐exakte Suche unmöglich g ■ Bereichssuche unmöglich ■ Pakete zu einer ID Routen ■ Hashtabelle ● Pakete Routen: ● Verwaltungsaufwand beim Knotenankunft/ Verwaltungsaufwand beim Knotenankunft/‐weggang weggang ■ send(destId, msg) send(destId, msg) ■ msg Å receive() ■ Best Best‐effort effort service ■ Daher schlecht bei hoher Dynamik ("Churn") ● Hashtabelle ■ put(key, value) put(key value) ■ value Å get(key) 15.04.2010 Dominic Battré ‐ P2P Netzwerke 55 15.04.2010 Dominic Battré ‐ P2P Netzwerke 56 Brainstorming P2P Chat Zusammenfassung ● Anforderung ■ Jeder Nutzer hat ein Profil Æ Suche Nutzer mit einem bestimmten Namen, aus einer Stadt, mit einer bestimmten Email‐Adresse, … ■ Nutzer kann sein Profil ändern und wird unter neuen Daten gefunden (auch wenn er offline ist) f d ( h ffli i ) ■ Nutzer sendet einem anderen Nutzer eine Nachricht während er online ist / während er offline ist er online ist / während er offline ist ● DHTs verschieben Daten auf wohldefinierte Knoten ● Dadurch ist effiziente Suche nach Daten möglich ● Zur Zuordnung von Daten zu Knoten wird konsistentes Zur Zuordnung von Daten zu Knoten wird konsistentes Hashing verwendet ● Fragestellungen für DHTs: Fragestellungen für DHTs: ■ ■ ■ ■ Aufbau ID‐Raum Verbindungsstruktur Routing‐Mechanismus Dynamik: Knotenankunft / Knotenausfall Dynamik: Knotenankunft / Knotenausfall ● Interfaces zu DHTs 15.04.2010 Dominic Battré ‐ P2P Netzwerke 57 15.04.2010 Dominic Battré ‐ P2P Netzwerke 58