Vorlesung P2P Netzwerke - Fachgebiet Komplexe und Verteilte IT
Transcription
Vorlesung P2P Netzwerke - Fachgebiet Komplexe und Verteilte IT
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 • Programmieren von DHTs Programmieren von DHTs • Gradoptimierte Netzwerke • SkipNet, P‐Grid • Lastverteilung in strukturierten Netzen 23.04.2009 Inhalt Dominic Battré ‐ P2P Netzwerke • OceanStore • BabelPeers • Amazon • Multicast Dominic Battré ‐ P2P Netzwerke 2 Literatur ● Konsistentes Hashing ● Verteilte Hash‐Tabellen ● Chord 23.04.2009 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 23.04.2009 Dominic Battré ‐ P2P Netzwerke 4 Auffinden von Objekten Napster vs. Gnutella ● Gegeben: ● Bisher betrachtet: Napster und Gnutella ● Napster: ■ Eine Menge von Knoten ■ Eine Menge von Objekten auf jedem Knoten ■ 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 ● Grundfragen: ■ Wo wird welches Objekt im Netzwerk gespeichert? ■ Wie wird das Objekt gefunden? ● Gnutella: ■ Objekt ist die Datei ■ Suche: Breitensuche durch das Netzwerk ■ Æ Probleme: ● Objekte? Was für Objekte? ■ ■ ■ ■ ■ Dateien Verweise auf Dateien D t b kt b ll Datenbanktabellen Einträge in Datenbanktabellen Informationen (unterschiedliche Syntax/Semantik) Informationen (unterschiedliche Syntax/Semantik) 23.04.2009 Dominic Battré ‐ P2P Netzwerke ♦ Entweder: Flooding, d.h. das ganze Netzwerk wird mit Suchanfragen überflutet ♦ Oder: Begrenzung des Suchhorizontes (Time to Live), dann werden nicht alle Treffer gefunden 5 23.04.2009 Dominic Battré ‐ P2P Netzwerke Napster vs. Gnutella 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 Flooding Kom mmunikattionsaufw wand 6 O(N) Verteilte Hash‐Tab O(log N) Zentraler Server O(1) 0 O(1) O(log N) 1 2 3 4 O(N) Statusinformationen 23.04.2009 Dominic Battré ‐ P2P Netzwerke 7 23.04.2009 Dominic Battré ‐ P2P Netzwerke 8 Konsistentes Hashing Verteilte Hashtabellen ● Grundidee: ● 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 23.04.2009 Dominic Battré ‐ P2P Netzwerke 9 ■ 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 ID‐Raum Knoten 23.04.2009 Dominic Battré ‐ P2P Netzwerke Verteilte Hashtabellen 10 Verteilte Hashtabellen ● Wie sieht der ID‐Raum aus? ● 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 ■ ■ ■ ■ 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 Objekte ¾ x 2128 ID‐Raum ¼ x 2128 Knoten ½ x 2128 23.04.2009 Dominic Battré ‐ P2P Netzwerke 11 23.04.2009 Dominic Battré ‐ P2P Netzwerke 12 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 23.04.2009 Dominic Battré ‐ P2P Netzwerke ½ x 2128 13 23.04.2009 Verteilte Hashtabellen Dominic Battré ‐ P2P Netzwerke 14 Anwendungs‐Aspekte ● Speicherung ● Fragen: ■ ID‐Raum ID Raum ■ Alt Alternativen: Daten oder Index ti D t d I d ■ Daten: ♦ Pro: Schneller Zugriff ♦ Contra: Updates, Speicherbrauch wegen Redundanz d h b h d d ■ Index: ♦ Pro: Aktualität, Effizientere Verteilung ♦ Contra: Ein Routing‐Schritt mehr ♦ Aufbau ♦ Verantwortlichkeit der Knoten ■ Routing ♦ Verbindungsstruktur der Knoten ♦ Wie wird der verantwortliche Knoten gefunden? ■ Dynamik y ♦ Integration eines neuen Knotens ♦ Ausfall eines Knotens ● Wahl der Objekt‐ID ● Weitere Fragen: g ■ Lokalität ■ Lastverteilung ■ 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 ♦ Unterschiedliche Performance ● Anwendungs‐Aspekte ■ Was speichere ich? ■ Bestimmung der Objekt‐ID g j 23.04.2009 ¼ x 2128 Dominic Battré ‐ P2P Netzwerke 15 23.04.2009 Dominic Battré ‐ P2P Netzwerke 16 Chord Chord: Routing ● Knoten sind in einem Ring organisiert ● Jeder Knoten ist für den Bereich vor und inkl. seiner eigenen ID zuständig ● Knoten ID wird zufällig ausgewählt ● Erster Ansatz: Successor‐Pointer ● Jeder Knoten kennt seinen Nachfolger im Ring ● Wie funktioniert das Routing? Wie funktioniert das Routing? 0 = 128 0 = 128 120 120 18 105 96 18 105 32 96 32 40 76 40 76 58 58 64 23.04.2009 64 Dominic Battré ‐ P2P Netzwerke 17 23.04.2009 Dominic Battré ‐ P2P Netzwerke Chord Chord: Routing ● ● ● ● ● Vorteil: Minimaler Knotenstatus ● Probleme: ■ Routing in O(N) Schritten g ( ) ■ Netz fällt auseinander, wenn ein Knoten ausfällt Nächster Ansatz: Vollständige Vernetzung Routing in einem Schritt Perfekter Zusammenhalt Aber: Nicht skalierbar! 0 = 128 0 = 128 120 120 18 105 96 18 105 32 96 32 40 76 40 76 58 64 23.04.2009 18 Dominic Battré ‐ P2P Netzwerke 58 64 19 23.04.2009 Dominic Battré ‐ P2P Netzwerke 20 Chord: Routing Finger‐Table Routing ● Was wird gebraucht? ● Jeder Knoten muss eine geringe Anzahl an anderen Knoten kennen ● Z.T. direkt benachbarte Knoten, z.T. weit entfernte Knoten ● Lösung: Jeder Knoten kennt den Knoten im Abstand 1, 2, 4, Lösung: Jeder Knoten kennt den Knoten im Abstand 1, 2, 4, 8, 16, 32, … ● Routing Routing‐Tabelle Tabelle dazu heißt Finger dazu heißt Finger‐Table Table ● Und hat log(maxID) Einträge ● Beispiel für Knoten 105: 0 = 128 120 18 105 96 32 40 76 58 64 23.04.2009 Dominic Battré ‐ P2P Netzwerke 21 23.04.2009 Finger‐Table Routing 1 2 4 8 16 32 64 ID 106 107 109 113 121 9 41 Tats. Knoten 120 120 120 120 18 18 58 ● 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: 0 = 128 120 18 105 96 32 40 76 58 64 23.04.2009 Dominic Battré ‐ P2P Netzwerke 22 Routing in Chord ● Beispiel für Knoten 105: Offset Dominic Battré ‐ P2P Netzwerke 23 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; 23.04.2009 Dominic Battré ‐ P2P Netzwerke 24 Knotenankunft ● ● ● ● Stabilisierungsprotokoll ● Regelmäßige Kontrolle der successor / predecessor‐Pointer 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) 1 2 3 4 5 6 7 ■ erhält damit seinen eigenen successor n' ● n kontaktiert n', dadurch wird predecessor(n') aktualisiert p // 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); n n' p 23.04.2009 Dominic Battré ‐ P2P Netzwerke 25 23.04.2009 // 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'; 23.04.2009 Dominic Battré ‐ P2P Netzwerke n' Dominic Battré ‐ P2P Netzwerke 26 Stabilisierung der Finger Pointer Finger Pointer Stabilisierungsprotokoll 1 2 3 4 5 6 7 n 1 2 3 4 5 6 7 27 // 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) ); 23.04.2009 Dominic Battré ‐ P2P Netzwerke 28 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 n k+2i hierhin „sollte“ der „ Finger Pointer zeigen Ziele, bei denen Finger Pointer p Finger Pointer genutzt würde Routing fehlerhaft bei inkorrektem Successor Pointer! Ggf. sind Daten noch nicht von n' an n abgegeben worden! Routing funktioniert auch mit defekter Finger Tabelle korrekt! Routing funktioniert auch mit defekter Finger‐Tabelle korrekt! 06.05.2009 Dominic Battré ‐ P2P Netzwerke 29 ● Fehler sind nur kurzzeitig, müssen von Application Layer behandelt werden (z.B. wiederholte Anfrage/Einfügen) 23.04.2009 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 30 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? 23.04.2009 Dominic Battré ‐ P2P Netzwerke 31 ■ 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. 23.04.2009 Dominic Battré ‐ P2P Netzwerke 32 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 ) = 23.04.2009 Dominic Battré ‐ P2P Netzwerke 33 23.04.2009 ● Betrachte wieder auf 1 normierten Ring ● Finger‐Zeiger zeigen auf +½, +¼, +1/8, +1/16, … ● Ab dem Finger dessen Ziel kleiner ist als die Intervallgröße, sind alle Finger Identisch (Nachfolger) ● Als 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 − 23.04.2009 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 ) 34 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 35 23.04.2009 Dominic Battré ‐ P2P Netzwerke 36 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 23.04.2009 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 37 23.04.2009 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 38 ● 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 23.04.2009 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 39 23.04.2009 Dominic Battré ‐ P2P Netzwerke 40 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 23.04.2009 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. 41 23.04.2009 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 42 Chord: Hoher Churn ● ● ● ● 23.04.2009 ● 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) 43 ● 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'; 23.04.2009 Dominic Battré ‐ P2P Netzwerke 44 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 23.04.2009 Dominic Battré ‐ P2P Netzwerke 45 23.04.2009 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 46 Knotenankunft 18 23.04.2009 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 47 23.04.2009 Dominic Battré ‐ P2P Netzwerke 48 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 23.04.2009 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 49 23.04.2009 Nachteile von DHTs Dominic Battré ‐ P2P Netzwerke 50 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) 23.04.2009 Dominic Battré ‐ P2P Netzwerke 51 23.04.2009 Dominic Battré ‐ P2P Netzwerke 52 Zusammenfassung ● 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 23.04.2009 Dominic Battré ‐ P2P Netzwerke 53