Inhalt ● Vorstellung ● Organisatorisches ● Einführung in P2P Netzwerke Einführung in P2P Netzwerke Vorlesungg P2P Netzwerke 1: Einführung Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de 15.04.2009 Vorstellung Dominic Battré ‐ P2P Netzwerke 2 Organisation ● Webseite ■ http://www.cit.tu‐berlin.de Æ P2P ■ Folien am Tag der Vorlesung morgens online g g g ● /me stellt sich vor ● Vorlesung ● Email: dominic.battre@tu‐berlin.de ■ Donnerstags, Donnerstags, 10:00 10:00 – 12:00, c.t., FR 0513 ( 12:00, c.t., FR 0513 (*)) * nur erste Woche, siehe Ankündigung auf Webseite ● Sprechstunde: Donnerstags 14:00‐15:00 Donnerstags, 14:00 15:00 Raum E‐N 173 (Einsteinufer 17) ● Übung ■ Freitags, 14:00 – 16:00, c.t., FR 1063 ■ Voraussichtlich: 24.4., 8.5., 22.5., 5.6., 19.6., Voraussichtlich: 24 4 8 5 22 5 5 6 19 6 3.7. oder 10.7., 17.7. ● DU 15.04.2009 Dominic Battré - P2P Netzwerke 3 15.04.2009 Dominic Battré - P2P Netzwerke 4 Mailingliste Prüfung ● Die Veranstaltung hat 3 SWS (4 LP) für Studiengänge Informatik D + MSc, sowie Technische Informatik D + MSc ● Schriftliche Prüfung durch Klausur (ca. 60min) ■ nur bei ausreichender Teilnehmerzahl ■ Termine? z.B. 23. Juli 2009 ■ Anmeldung über Sekretariat (Details im späteren Verlauf) ● Diplom: Einbringung in Schwerpunktprüfung (Gebiet BKS) ● Mail an cit‐p2p.ss09‐[email protected]‐berlin.de ■ Subject: egal ■ Inhalt: subscribe ● Zweck ■ Raumänderungen ■ Terminänderungen ■ Bekanntgabe, wenn Übungszettel/Folien verfügbar sind ● Master: Modulprüfung (CIT 8) Info‐Veranstaltung BKS: 17.4.09, 16:00 Uhr, EN‐180 15.04.2009 Dominic Battré - P2P Netzwerke 5 15.04.2009 Übungen Einleitung ■ beginnen am 24. April ■ Besprechung von Übungsblättern, Aufgaben, … p g g g • Was ist P2P? • Definition • Einsatzgebiete ● Übungsblätter wöchentlich freiwillig aber prüfungsrelevant werden korrigiert beliebige Gruppengröße programmieren und theoretisch programmieren und theoretisch wir schreiben einen P2P Chat 15.04.2009 Dominic Battré - P2P Netzwerke 6 Inhalte der Vorlesung (vorläufig) ● Präsenzübungen ■ ■ ■ ■ ■ ■ Dominic Battré - P2P Netzwerke 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 7 15.04.2009 Dominic Battré ‐ P2P Netzwerke Anwendungen • OceanStore • BabelPeers • Amazon • Multicast 8 Ziele der Vorlesung Literatur ● Verstehen, ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ● Bücher zu P2P: … was ein P2P Netzwerk ist … wie es sich von anderen Netzen unterscheidet … wann P2P Netzwerke sinnvoll sind wann P2P Netzwerke sinnvoll sind … wie sie funktionieren … welche Topologien es gibt … welche Topologien es gibt … welche Routing‐Algorithmen es gibt … wie Selbstorganisation funktioniert … wie Daten gespeichert werden … und wie diese Daten gefunden werden … welche Anwendungen für P2P Netze es gibt elche An end ngen für P2P Net e es gibt … wie P2P Netzwerke programmiert werden … wie P2P Netzwerke abgesichert werden … wie P2P Netzwerke abgesichert werden 15.04.2009 ■ Peter Mahlmann, Christian Schindelhauer: P2P Netzwerke, Springer, 2007, 33 € ■ Ralf Steinmetz, Klaus Wehrle: Peer‐to‐Peer Systems and Applications, Springer, 2005, 59 € ■ Andy Oram: Peer‐to‐Peer: Harnessing the Power of Disruptive Technologies, O'Reilly, 2001, 25 € ● Paper zu speziellen Themen ■ wird jeweils beim Thema bekanntgegeben Dominic Battré ‐ P2P Netzwerke 9 15.04.2009 Dominic Battré ‐ P2P Netzwerke Internet Traffic (.de) nach Protokollen 10 P2P Traffic nach Netzen (.de) Quelle: Ipoque 2007, Mahlmann 2008 Gnutella 3,72% Gnutella 3,72% HTTP 10,71% eDonkey 28,59% Streaming 8,26% P2P 73,79% DDL 4,57% VoIP/Skype 0,98% BitTorrent 66,70% FTP 0,53% Mail 0 39% Mail 0,39% Q ll I Quelle: Ipoque 2007 M hl 2007, Mahlmann 2008 15.04.2009 Dominic Battré - P2P Netzwerke NNTP 0,09% Sonst. 0,99% IM 0,34% Tunnel / Encryption 0,34% 11 15.04.2009 Dominic Battré - P2P Netzwerke 12 BitTorrent Traffic nach Content (.de) TV 21,15% P2P Traffic im Internet aBooks 1,41% Musik 7,78% eBook 0,81% P0rn 13,05% Spiele 5,77% Spiele 5,77% Applikationen 4,97% Bilder 0,09% Anime 7,09% Filme 37,24% Musik 0,65% Q ll I Quelle: Ipoque 2007 M hl 2007, Mahlmann 2008 15.04.2009 Dominic Battré - P2P Netzwerke Q ll htt // Quelle: http://www.cachelogic.com/home/pages/studies/2005_07.php h l i /h / / t di /2005 07 h 13 15.04.2009 Dominic Battré - P2P Netzwerke Peer‐2‐Peer: Was ist das? Definitionen ● Wikipedia: ● Peer‐2‐Peer (P2P) ist durch Filesharing bekannt geworden ● Das Konzept ist schon viel älter und hat viel mehr Anwendungen: Das Konzept ist schon viel älter und hat viel mehr Anwendungen: ■ Skype ■ Groove (Kollaborations‐Software) ■ Coral Cache C lC h ■ Datenmangement ■ Bot Netze (z.B. Trojan.Peacomm) ■ Amazon Warenkörbe A W kö b ● Was ist ein Peer? (Merriam‐Websters) ■ "Kommunikation unter Gleichen" " ik i Gl i h " ● Gribble (2001): ■ A A distributed system in which participants rely on one another for distributed system in which participants rely on one another for services [...] Peers in the system can elect to provide services as well as consume them. ● Yang/Garcia Yang/Garcia‐Molina Molina (2002): (2002): ■ Peer‐to‐peer (P2P) systems are distributed systems in which nodes of equal roles and capabilities exchange information and services directly with each other directly with each other 1 : one that is of equal standing with another : EQUAL; especially th t i f l t di ith th EQUAL i ll : one belonging to the same societal group especially based on age, grade, or status 2 archaic : COMPANION 3 a : a member of one of the five ranks (as duke, marquess, earl, viscount, or 3 a a member of one of the five ranks (as duke marquess earl viscount or baron) of the British peerage b : NOBLE 1 ‐ peer adjective 15.04.2009 Dominic Battré ‐ P2P Netzwerke 14 ● Steinmetz/Wehrle (2004): ■ [A Peer‐to‐Peer system is] a self‐organizing system of equal, autonomous entities (peers) [which] aims for the shared ( ) usage of distributed resources in a networked environment avoiding central services. 15 15.04.2009 Dominic Battré ‐ P2P Netzwerke 16 Das P2P Prinzip Vorteile von P2P ● Höhere Verfügbarkeit/Ausfallsicherheit: ● Keine 100% scharfe Definition! ● Ein „Organisationsprinzip“: ■ kein „single k i i l point i off failure“ f il “ ● Aktualität/Einfachheit des „Publizierens“: ■ Jeder Rechner im Netzwerk erfüllt die gleichen Aufgaben ■ Es gibt keine Unterscheidung zwischen Client und Server E ibt k i U t h id i h Cli t d S ■ Zugriff auf unveröffentlichte Daten Zugriff auf unveröffentlichte Daten ■ trotzdem Anonymität ● Kernkonzepte (nicht immer alle erfüllt!) ● ● ● ● ■ Selbstorganisation, kein zentrales Management Selbstorganisation kein zentrales Management ■ Teilen von Ressourcen ♦ Nutzung von Ressourcen am "Rand" des Netzwerkes ■ ■ ■ ■ ■ Die Peers sind alle gleich Typischerweise sehr viele Peers K Knoten kommen und gehen jederzeit k d h j d i Peers sind autonom (eigene Entscheidung über Angebote) Adressierung auf Anwendungsebene Adressierung auf Anwendungsebene 15.04.2009 Dominic Battré ‐ P2P Netzwerke Skalierbarkeit Geteilte Ressourcen (Rechenleistung, Speicherplatz, Bandbreite) Keine Zensur/Manipulation durch zentrale Instanz Nachteile von zentralisierten Systemen: Nachteile von zentralisierten Systemen: ■ ■ ■ ■ 17 15.04.2009 Nachteile von P2P schlechte Abdeckung (‐‐> Akamai u.A. Content Delivery Networks) lange Updatezeiten Kosten für Betrieb des Systems Zentrale Instanz steuert (und manipuliert) die Inhalte Dominic Battré ‐ P2P Netzwerke 18 Code Challenge Competition ● Erhöhter Aufwand: ■ ■ ■ ■ ■ Programmierung Fehlersuche Sicherheit Routing / Suche g/ Replikation ● Keine Verlässlichkeit ( Keine Verlässlichkeit ("nur" nur probabilistische probabilistische Garantien) ● Vertrauenswürdigkeit der Teilnehmer? 15.04.2009 Dominic Battré ‐ P2P Netzwerke 19 15.04.2009 Dominic Battré ‐ P2P Netzwerke 20 Inhalt ● Napster ■ Erstes "P2P" Netzwerk ■ Kein wirkliches P2P ■ Enormes Medienecho Æ Popularität für P2P Vorlesungg P2P Netzwerke ● Gnutella 2: Unstrukturierte 2: Unstrukturierte Netze Netze Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de ■ Erstes "echtes" P2P Netzwerk ■ Interessante Netzwerkeigenschaften Interessante Netzwerkeigenschaften ● Eigenschaften von Gnutella ■ Pareto‐Netzwerke Pareto Netzwerke ■ Small‐World Netzwerke ● Super‐Peer Netzwerke Super Peer Netzwerke 11.04.2009 Inhalte der Vorlesung (vorläufig) Einleitung • Was ist P2P? • Definition • Einsatzgebiete ● The Gnutella Protocol Specification v0.4 ● Mihajlo A. Jovanovic, Fred S. Annexstein, Kenneth A. Berman: h l d h "Scalability Issues in Large Peer‐to‐Peer Networks A Case Study of Gnutella". Technical report, University of Cincinnati, January 2001. ● Albert‐Laszlo Barabasi, Reka Albert: "Emergence of Scaling in Random Networks",, Science, Vol Random Networks Science, Vol 286, 1999. 286, 1999. ● Duncan J. Watts, Steven H. Strogatz: "Collective dynamics of 'small‐world' networks", Nature, Vol 393, 1998. ● Katharina A. Lehmann, Michael Kaufmann: "Random K h i A L h Mi h l K f "R d Graphs, Small‐Worlds and Scale‐Free Networks", Peer‐to‐Peer Systems and Applications ● Réka Albert, Hawoong Jeong, Albert‐László Barbási: "Error and attack tolerance of complex networks", Nature, Vol 406, 2000 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.04.2009 Dominic Battré ‐ P2P Netzwerke 2 Literatur U Unstrukturierte Netze k i N • Napster • Gnutella • Super‐Peer Netzwerke Super Peer Netzwerke • Small‐World Netzwerke etc. Dominic Battré ‐ P2P Netzwerke Anwendungen • OceanStore • BabelPeers • Amazon • Multicast 3 11.04.2009 Dominic Battré ‐ P2P Netzwerke 4 Napster Napster ● Netzwerk zum Tauschen von MP3‐Dateien ● Geschichte: ■ Mai 1999: Shawn Fanning (Northeastern University) gründet "Napster University) gründet Napster Online music Online music service service" ■ Dezember 1999: Erster Rechtsstreit ■ März 2000: University of Wisconsin: 25% des IP Datenaufkommens sind Napster Pakete ■ Dezember 2000: geschätzte 60 Millionen Anwender ■ Februar 2001: US Circuit Court of Februar 2001: US Circuit Court of Appeals: Appeals: Napster weiß dass die Anwender Copyright‐Rechte verletzen: Napster wird geschlossen ■ 2002: Bankrott ■ September 2008: Aufkauf durch Best Buy 11.04.2009 Dominic Battré ‐ P2P Netzwerke ● Fokussiert: Einfache Anwendung (suche nach Musikdateien) ● Suche über zentralen Server ● Datenaustausch dezentral Datenaustausch dezentral Registrierung Suche Registrierung, Suche Datenaustausch Napster Server 5 11.04.2009 Napster 6 Gnutella ● Funktionsweise ■ ■ ■ ■ ■ Dominic Battré ‐ P2P Netzwerke ● Kein zentraler Server mehr ● Peers werden Servents genannt Verbinde mit Napster Server Hochladen der eigenen Dateiliste auf den Server g Suche per Schlüsselwort‐Liste über den Server Wähle beste Antwort aus Direktverbindung mit Ziel‐Peer zum Download ● Nachteile ■ Zentraler Server ♦ Single Point of Single Point of Failure ♦ Skalierbarkeit? ■ Rechtliche Probleme Rechtliche Probleme 11.04.2009 Dominic Battré ‐ P2P Netzwerke 7 11.04.2009 Dominic Battré ‐ P2P Netzwerke 8 Overlay‐Netzwerk Problemstellungen ● Gnutella ist sog. Overlay über dem Internet ● Bootstrapping ■ Woher kenne ich Knoten im Netzwerk? ■ Mit welchen Knoten verbinde ich mich? ● Suche ■ Wie Wie finde ich Knoten, die Datei XYZ.MP3 anbieten? finde ich Knoten, die Datei XYZ.MP3 anbieten? ■ Wie finde ich den besten Knoten, der Datei XYZ.MP3 anbietet? ■ Der beste Knoten? ♦ Verbindung? ♦ Auslastung? ♦ Qualität der Datei? 11.04.2009 Dominic Battré ‐ P2P Netzwerke 9 11.04.2009 Dominic Battré ‐ P2P Netzwerke Lösungen Gnutella Nachrichten ● Bootstrapping ■ Allgemein bekannte Knoten (über Webserver) ■ Liste mit bekannten Knoten von vorheriger Session g ■ Weitere Knoten über die Startknoten kennenlernen ● Suche ■ Flooding: Suche an alle Knoten weiterschicken ■ Knoten merken sich IDs von gesehen Nachrichten, dies Knoten merken sich IDs von gesehen Nachrichten, dies verhindert Schleifen ■ TTL (Time to ( Live) begrenzt die Laufzeit einer Nachricht ) g 11.04.2009 Dominic Battré ‐ P2P Netzwerke 10 Header für alle Nachrichten QUERY (0x80) Descriptor ID 16 Bytes Min Speed 2 Bytes Payload Descr. 1 Byte Search Criteria n Bytes TTL 1 Byte Hops 1 Byte Payload Length 4 Bytes PING (0x00) keine weiteren Felder 1 Byte Port 2 Bytes IP Address 4 Bytes Speed 4 Bytes ‐ File Index 4 Bytes ‐ File Size 4 Bytes 4 Bytes ‐ File Name (+\0\0) n Bytes 4 Bytes ‐ … (weitere Result.) 4 Bytes 4 Bytes Servent Identifier Port 2 Bytes IP Address Nb. of shared Files Nb. of shared KBytes Nb. of 11.04.2009 Nb. of Hits Result Set: PONG (0x01) 11 QUERY HIT (0x81) QUERY HIT (0x81) Dominic Battré ‐ P2P Netzwerke 16 Bytes 16 Bytes 12 Abholen der Dateien Routing in Gnutella Ping / Pong IP Address 4 Bytes Port 2 Bytes 2 Bytes Dominic Battré ‐ P2P Netzwerke 13 11.04.2009 Probleme von Gnutella PUSH QUERY PONG PUSH 4 Bytes PUSH PING 11.04.2009 16 Bytes File Index PING QUERY PUSH (0x40) Servent Identifier QUERY HIT PING Push HIT PING ■ PUSH Nachricht über Gnutella routen Query / Query Hit HIT ● Direkte Verbindung zum Servent ● Transfer durch HTTP ● Wenn Servent Wenn Servent hinter Firewall liegt: hinter Firewall liegt: Push File Dominic Battré ‐ P2P Netzwerke 14 Eigenschaften von Gnutella ● Hohe Netzwerklast ● Flooding ist äußerst unstrukturierte Vorgehensweise: ● ● ● ● ● ■ Ich frage fast jeden, ob er eine Datei liefern kann g j , ■ Begrenzung nur durch TTL ● Durch TTL werden evtl. Dateien nicht gefunden Durch TTL werden evtl Dateien nicht gefunden ● Gnutella‐Topologie hat nichts mit realer Topologie zu tun Was für ein Netzwerk wird aufgebaut? Ist das Netzwerk rein zufällig? Oder hat es bestimmte Eigenschaften? Oder hat es bestimmte Eigenschaften? Woher kommen diese Eigenschaften? Gibt es sog "Emergenz" Gibt es sog. Emergenz bzw. bzw "Selbstorganisation"? Selbstorganisation ? ■ Zig‐Zack Routen Zig Zack Routen ■ Daraus folgen hohe Latenzzeiten 11.04.2009 Dominic Battré ‐ P2P Netzwerke 15 11.04.2009 Dominic Battré ‐ P2P Netzwerke 16 Gradverteilung Gradverteilung Quelle: Jovanovic Annexstein Berman: Quelle: Jovanovic, Annexstein, Berman: Scalability Issues in Large Peer‐to‐Peer Networks – A Case Study of Gnutella ● Allgemein: Power‐Law (Pareto‐Verteilung) Pr( X = x) = C xk Auch geschrieben als Pr( X = x) ∝ x − k ● Bei Gnutella: C=94, k=1.4 ● Was hat man davon? Was hat man davon? ■ Power‐Law Netzwerke sind robust ■ Es gibt viele Knoten mit kleinem Grad, deren Ausfall nicht so Es gibt viele Knoten mit kleinem Grad deren Ausfall nicht so schlimm ist ● Wie kommt das zustande? Wie kommt das zustande? ■ „Preferential Attachement“: die Reichen werden reicher log(Anzahl Peers mit Grad d) = c g( ) – k log(d) g( ) 11.04.2009 Dominic Battré ‐ P2P Netzwerke 17 11.04.2009 Dominic Battré ‐ P2P Netzwerke 18 Modell für Preferential Attachement Robustheit ● Nimm ein Netzwerk mit 10.000 Knoten, 20.000 Kanten (durchsch Grad 4) und entferne zufällig ausgewählte Knoten (durchsch. Grad=4) und entferne zufällig ausgewählte Knoten ● Zufallsnetzwerk G(n, p): ● Barabási‐Albert‐Modell: ■ Starte mit kleinem Netzwerk mit ein paar Kanten und Knoten ■ Pro Schritte füge einen Knoten hinzu g ■ Füge m Kanten vom neuen zu den bestehenden Knoten mit einer Wahrscheinlichkeit hinzu, die Proportional zum Grad des Knoten ist ■ Entferne 5% der Knoten: Größte Komponente hat 9000 Knoten p ■ Entferne 18% der Knoten: Alle Komponenten zwischen 1 und 100 Knoten ■ Entferne 45% der Knoten: Nur Gruppen von 1 oder 2 Knoten Entferne 45% der Knoten: Nur Gruppen von 1 oder 2 Knoten überleben ● Power‐law Netzwerk: ● Effekt: Knoten verbinden sich mit bereits gut verbundenen Knoten mit höherer Wahrscheinlichkeit ■ EEntferne 5% der Knoten: Nur isolierte Knoten brechen weg f 5% d K N i li K b h ■ Entferne 18% der Knoten: Größte Komponente hat 8000 Knoten ■ Entferne 45% der Knoten: Immernoch große Komponenten g p ● Achtung: gilt nur für zufällige Ausfälle! Albert, et al. Error and attack tolerance of complex networks, Nature Vol Albert, et al. Error and networks, Nature Vol 406, 2000 406, 2000 11.04.2009 Dominic Battré ‐ P2P Netzwerke 19 11.04.2009 Dominic Battré ‐ P2P Netzwerke 20 Milgram's Experiment Milgram's Experiment ● Wie sehen "reale" Netzwerke aus? ● Soziales Netzwerk von Menschen: Wer kennt wen? ● Milgram's Experiment (1967): ■ Briefe an einen Freund von Milgram wurden an zufällige Personen in Kansas u. Nebraska verschickt ■ "Routing‐Informationen": "R i I f i " ♦ Name der Zielperson ♦ Ort (Boston) Ort (Boston) ♦ Beruf (Börsenmakler) ■ Anweisung: nur an Du‐Freunde weitergeben g g ● Ergebnis: durchschnittlich 6 Schritte bis zum Ziel! ● (aber nur 3 von 60 Paketen kamen an) Quelle: http://en.wikipedia.org/wiki/File:Map_of_USA_with_state_names.svg 11.04.2009 Dominic Battré ‐ P2P Netzwerke 21 11.04.2009 Milgram's Experiment Dominic Battré ‐ P2P Netzwerke Milgram's Experiment ● Wie ist das möglich? ● These: Soziale Netzwerke haben folgende Eigenschaften: ● Wie ist das möglich? ● These: Soziale Netzwerke haben folgende Eigenschaften: ■ Großer Clustering‐Koeffizient g ■ Kleiner Durchmesser bzw. charakteristische Pfadlänge ■ Großer Clustering‐Koeffizient g ■ Kleiner Durchmesser bzw. charakteristische Pfadlänge ● Clustering Clustering‐Koeffizient Koeffizient eines Knotens: eines Knotens: C (i ) = {( j, k ) ∈ E | j, k ∈ N (i)} d (i )(d (i ) − 1) 22 ● Durchmesser: Durchmesser: ■ Längster kürzester Pfad zwischen zwei Knoten , N (i) = { j | (i, j ) ∈ E}, d (i) = N (i ) ● Charakteristische Pfadlänge: Charakteristische Pfadlänge: ■ Durchschnittlicher kürzester Pfad zwischen zwei Knoten ■ N(i) = Nachbarn von i ■ d(i) = Ausgangsgrad A d ● Clustering‐Koeffizient eines Graphen: avg(C(i)) 11.04.2009 Dominic Battré ‐ P2P Netzwerke 23 11.04.2009 Dominic Battré ‐ P2P Netzwerke 24 Randnotiz: Erdös‐Nummer Eigenschaften von Gnutella ● Untersuchung von 2000: Paul Erdös (1913 – 1996) Berühmter Mathematiker Knoten Kanten Frage: Über wie viele Schritte ist jemand als Co‐Autor mit Paul Erdös verbunden? 11.04.2009 ist Co‐Autor von Gnutella Clustering Koeffizient charakteristische Pfadlänge Gnutella Zufallsgr. Gnutella Zufallsgr. 13.11.2000 992 2465 9 0.0351 0.0078 3.72 4.49 16.11.2000 1008 1782 12 0.0109 0.0056 4.43 5.54 Klaus H. Ecker 20.12.2000 1077 4094 10 0.0652 0.0094 3.31 3.66 1026 3752 8 0.0630 0.0102 3.30 3.71 1125 4080 8 0.0544 0.0090 3.33 3.77 Beispiel: Odej Kao hat Erdös‐Nummer 4: Odej Kao Durch‐ messer Klaus H. Ecker ist Co‐Autor von Helmut Ratschek 27.12.2000 Helmut Ratschek ist Co‐Autor von Egbert Harzheim 28.12.2000 Egbert Harzheim ist Co‐Autor von Paul Erdös Dominic Battré ‐ P2P Netzwerke ● Ergebnis: Clustering‐Koeffizient deutlich größer als beim Zufallsgraph, charakteristische Pfadlänge ähnlich bis kleiner 25 11.04.2009 Dominic Battré ‐ P2P Netzwerke 26 Modell von Watts und Strogatz Watts und Strogatz Watts und Strogatz ● Netzwerk‐Modell von Watts und Strogatz: ■ Starte mit einem Ring, jeder Knoten ist mit m/2 Nachfolgern verbunden ■ Durchlaufe den Ring und ersetze mit Wahrscheinlichkeit p das Ziel einer Kante durch ein zufällig ausgewähltes neues Ziel ■ Modelliert Übergang zwischen Ordnung und Chaos ● Eine kleine Anzahl von zufälligen Links reicht aus, um den Durchmesser zu reduzieren p=0 11.04.2009 Dominic Battré ‐ P2P Netzwerke 27 11.04.2009 Dominic Battré ‐ P2P Netzwerke p=1 28 Übergang bei Watts / Strogatz Netzwerktypen ● Small‐World Networks ■ Hoher Clustering‐Koeffizient ♦ Transitivität: wenn A B kennt und A C kennt, dann kennen sich B und C mit hoher W’keit ♦ Viele kleine (beinahe‐) Cliquen ■ Geringer Durchmesser ● Power‐Law Networks / Scale‐Free Networks ■ Wenige Knoten mit hohem Grad C: Clustering‐Koeffizient g L: Charakteristische Pfadlänge 11.04.2009 Dominic Battré ‐ P2P Netzwerke 29 11.04.2009 Zusammenfassung Gnutella Felix Heine ‐ P2P Netzwerke Super‐Peer Netze ● Gnutella hat: ● Idee: Kern‐Netz aus "Super‐Peers" ● Die "normalen" Knoten sind per Client/Server angebunden: ■ Gradverteilung nach Power‐Law ■ Einen hohen Clustering‐Koeffizienten g ■ Einen kleinen Durchmesser Super Peer Leaf Node Æ Gnutella erzeugt ein Small‐World‐Netzwerk mit Power Law Gradverteilung mit Power‐Law Gradverteilung. Das passiert selbstorganisierend (emergent) 11.04.2009 Dominic Battré ‐ P2P Netzwerke 30 31 11.04.2009 Dominic Battré ‐ P2P Netzwerke 32 Super‐Peer Netze ● Nachteile: ■ Nicht die reine Lehre ■ Super‐Peers müssen hohe Last aushalten p ■ Wer ist Super‐Peer? ♦ Automatische Auswahl vs. Selbstbestimmung ● Vorteile: ■ ■ ■ ■ 11.04.2009 Weniger Fluktuation g Kleineres Netzwerk Effizientere Suche Effizientere Suche Alle P2P‐Mechanismen lassen sich im Super‐Peer Netz anwenden Dominic Battré ‐ P2P Netzwerke 33 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 CAN: Content Addressable Network ● Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, Scott Shenker: "A Scalable Content‐Addressable Network", SIGCOMM’01, 2001. Vorlesung P2P Netzwerke ● Alternativer Ansatz: 4: Content Addressable Network 4: Content Addressable 4: Content ■ Adresse eines Knotens ist eine 2‐dimensionale Koordinate ● Bereiche werden bei Knotenankunft geteilt Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de 06.05.2009 Dominic Battré ‐ P2P Netzwerke CAN (0,1) 06.05.2009 CAN (0,1) (1,1) ((0,0) , ) ((1,0) , ) Dominic Battré ‐ P2P Netzwerke 2 (1,1) ((0,0) , ) 3 06.05.2009 ((1,0) , ) Dominic Battré ‐ P2P Netzwerke 4 CAN (0,1) (0,1) (1,1) ((0,0) , ) 06.05.2009 CAN ((1,0) , ) Dominic Battré ‐ P2P Netzwerke ((0,0) , ) 5 06.05.2009 ((1,0) , ) Dominic Battré ‐ P2P Netzwerke CAN (0,1) (1,1) 6 Verbindungsstruktur (0,1) (1,1) (1,1) Achtung: d‐torus d torus ((0,0) , ) 06.05.2009 ((1,0) , ) Dominic Battré ‐ P2P Netzwerke ((0,0) , ) 7 06.05.2009 ((1,0) , ) Dominic Battré ‐ P2P Netzwerke 8 CAN Analyse ● ID‐Raum ist 2‐Dimensional kontinuierlich [0,1)x[0,1) ● Routing: ● Idealisiert: 2D‐Gitter ● Nötige Routing‐Schritte ■ Wenn Ziel in meine Zone fällt, bin ich fertig , g ■ Sonst: Schicke Nachricht zu einem Nachbarknoten, der eine kleinere (euklidische) Distanz zum Ziel hat ■ O(sqrt(N)) ( q ( )) ● Anzahl Nachbarn ■ 4 Nachbarn, also O(1) 4 Nachbarn also O(1) ● Knotenankunft: ■ ■ ■ ■ ● Vergleiche mit Chord: Wähle zufällige ID aus [0,1)x[0,1) g [ , ) [ , ) Route Nachricht an diesen Punkt Gebiet des Ziel‐Peers Gebiet des Ziel Peers wird geteilt wird geteilt Baue Verbindungen zu allen Nachbarn des alten Peers auf 06.05.2009 Dominic Battré ‐ P2P Netzwerke ■ beides O(log N) beides O(log N) ● Î Routing langsamer, aber viel weniger Verbindungen und damit weniger Verwaltungsaufwand! damit weniger Verwaltungsaufwand! ● Trotzdem robustes Netzwerk 9 06.05.2009 Wie groß werden die Zonen? Dominic Battré ‐ P2P Netzwerke 10 CAN: Ausfall eines Knotens ● Die Nachbarn entdecken, dass der Peer ausgefallen ist ● Ziel: ● Î Übungsaufgabe ■ der Nachbar mit der kleinsten Zone soll den ausgefallenen Peer übernehmen b h ● Daher: ■ JJeder Knoten startet einen Timer d K i Ti proportional zur Größe der i l G öß d eigenen Zone ■ Wenn der Timer Wenn der Timer abgelaufen ist, sendet er eine Nachricht an abgelaufen ist sendet er eine Nachricht an alle anderen Nachbarn ■ Wer die Nachricht empfängt, stoppt seinen Timer ■ Danach übernimmt er die Zone des ausgefallenen Peers ● Kann zu Fragmentierung führen 06.05.2009 Dominic Battré ‐ P2P Netzwerke 11 06.05.2009 Dominic Battré ‐ P2P Netzwerke 12 Fragmentierung Fragmentierung (0,1) (0,1) (1,1) ((0,0) , ) ((1,0) , ) 06.05.2009 Dominic Battré ‐ P2P Netzwerke ((0,0) , ) 13 Dominic Battré ‐ P2P Netzwerke ● Wenn die Nachbarzone aufgeteilt ist: ■ Versuche, kleinste Zone loszuwerden h kl i l d ■ Tiefensuche im Baum, bis zwei benachbarte Blätter gefunden wurden ■ Fasse diese Blätter zusammen ■ der freigewordene Peer übernimmt das Gebiet ● Wenn die Nachbarzone ungeteilt ist (beide Knoten Blätter im Aufteilungsbaum): g ) ■ Übergib die Zone dem Nachbar A A A B A B B C B C C D Dominic Battré ‐ P2P Netzwerke 14 Defragmentierung Teil 2 ● Wenn ein Peer mehr als eine Zone hat: 06.05.2009 ((1,0) , ) 06.05.2009 Defragmentierung Teil 1 D (1,1) C D E 15 06.05.2009 D C E Dominic Battré ‐ P2P Netzwerke C 16 Mehrdimensionales CAN Mehrere Realitäten ● Analoge Konstruktion, aber d‐Dimensionaler Schlüsselraum ● Bewirkt: ■ Kürzere Routing‐Zeiten g ■ Mehr Nachbarn ● Es werden gleichzeitig mehrere CAN Netzwerke aufgebaut ● Jedes heißt Realität d h ß l ● Beim Routing wird zwischen den Realitäten gesprungen (besonders am Anfang) (besonders am Anfang) ● Bewirkt: Schnelleres Routing, Replikation, Robustheit ● Genauer: C ■ O(n1/d) Hops ■ 2d Nachbarn, also O(d) Nachbarn 2d Nachbarn also O(d) Nachbarn A B E G F Dominic Battré ‐ P2P Netzwerke 17 06.05.2009 Dimensionen vs. Realitäten Dominic Battré ‐ P2P Netzwerke G B I J J F A I Dominic Battré ‐ P2P Netzwerke C 18 Dimensionen vs. Realitäten Quelle: Ratnasamy, Francis, Handley, Karp, Shenker: A Scalable Content‐Addressable Network, SIGCOMM’01, 2001 06.05.2009 E D H 06.05.2009 H D Quelle: Ratnasamy, Francis, Handley, Karp, Shenker: A Scalable Content‐Addressable Network, SIGCOMM’01, 2001 19 06.05.2009 Dominic Battré ‐ P2P Netzwerke 20 Mehrfaches Hashing Überladen von Zonen ● ● ● ● ● Daten werden mehrfach abgespeichert ■ indem man k unterschiedliche Hash‐Funktionen nimmt ● Dadurch erhöht sich die Robustheit ● Geringere Entfernungen In jeder Zone werden mehrere Peers platziert Alle Peers einer Zone kennen sich untereinander ll k h d Jeder kennt mindestens einen aus der Nachbarschaft Bewirkt: Routing konstant schneller, Bewirkt: Routing konstant schneller Replikation ■ Lookup nur zu nächster Kopie Lookup nur zu nächster Kopie 06.05.2009 Dominic Battré ‐ P2P Netzwerke 21 06.05.2009 Dominic Battré ‐ P2P Netzwerke Uniform Partitioning Latenzen Berücksichtigen ● Beim Join wird versucht, die Zonengröße besser auszugleichen ● Jeder Peer kennt die Zonen seiner Nachbarn ● Es wird die größte Zone geteilt ● Bisher haben wir Routing‐Performance nur in Hop‐ Distanzen im Overlay‐Netzwerk gemessen ● Wie sieht es tatsächlich aus? ● Beispiel: Routing mit 3 Hops im Overlay Knoten Knoten im P2P Overlay USA, New York 06.05.2009 Dominic Battré ‐ P2P Netzwerke 23 06.05.2009 Logische g Verbindung im Overlay Router im Internet Europa 22 Asien Internet Verbindung Dominic Battré ‐ P2P Netzwerke USA, Boston 24 Latenzen Latenzen ● Die effektive Latenz im Routing hängt also von 2 Faktoren ab: ● In CAN 3 Ansätze: ■ Im Standard‐CAN den nächsten Hop mit bestem Verhältnis ID‐Distanz zu Latenz auswählen (statt maximaler ID‐Distanz) Proximity Route Selection (PRS) ■ Beim Überladen von Zonen Verbindung mit dem "dichtesten" Knoten in der Nachbarzone eingehen Î regelmäßig die anderen Kandidaten prüfen, evtl. wechseln Proximity Neighbor Selection (PNS) ■ ID nicht zufällig wählen, sondern anhand einer Lokalitäts‐ M t ik P iti i N t Metrik Position im Netzwerk wählen k ähl Proximity Neighbor Selection (PNS) ■ Anzahl Hops ■ Internet‐Latenzen der einzelnen Hops ● Es kann also evtl. schneller sein, mehr Hops zu machen, die , p , aber dafür lokaler sind ● Dazu muss das Routing oder die Verbindungsstruktur eine g g gewisse Flexibilität haben ● Bei Chord z.B. sind Struktur und Routen determiniert ● CAN ist hier flexibler 06.05.2009 Dominic Battré ‐ P2P Netzwerke 25 06.05.2009 Dominic Battré ‐ P2P Netzwerke Netzwerk an Internet‐Topologie anpassen ● ● ● ● ● ● CAN: Gesamt‐Evaluation m spezielle Peers dienen als "Landmarken" Latenzzeiten zu diesen Landmarken werden gemessen Liste der Latenzzeiten zu den Landmarken wird sortiert Diese Sortierung bestimmt Position im CAN Dadurch werden nahe Peers auch in CAN nah einsortiert Vorteile: ■ Gute Verringerung der Latenzzeiten ● Probleme ■ Wie wähle ich die Landmarken aus? ■ Lastungleichgewichte ■ Gefahr von Partitionierung 06.05.2009 Dominic Battré ‐ P2P Netzwerke 26 Parameter bare bones CAN knobs on full CAN Dim Dim. 2 10 Realitäten 1 1 Peer / Zone 0 4 Hashfkt. 1 1 Latenz‐Optimiertes Routing Aus An Uniform Partitioning Aus An Peers 0 2,95 Aus IP Latenz 115,9 ms 82,4 ms Pfad Latenz 23,008 sec. 135,29 ms Landmark Orderingg Aus Metrik bare bones knobs on full CAN CAN Pfadlänge 198 5 Grad 4,57 , 27,1 , 218 Knoten, Transit Knoten Transit‐Stub Stub Topologie 27 06.05.2009 Dominic Battré ‐ P2P Netzwerke 28 CAN: Vorteile/Nachteile ● Vorteile ■ ■ ■ ■ ■ Einfaches Verfahren Balanciert die Datenmenge g Kleiner Grad Netzwerk ist stark zusammenhängend, dadurch robust g , Kennt verschiedene Wege zum Ziel und kann dadurch Routen optimieren ● Nachteile ■ Lange Wege (polynomiell g g (p y lang) g) ■ Stabilität durch geringe Nachbarzahl gefährdet 06.05.2009 Dominic Battré ‐ P2P Netzwerke 29 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 5: Pastry 5: Pastry 5: 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 11.05.2009 Anwendungen • OceanStore • BabelPeers • Amazon • Multicast Dominic Battré ‐ P2P Netzwerke Pastry und Tapestry 2 Grundidee: Präfix‐Routing ● Pastry ● ID wird zur Basis 2b dargestellt, ■ 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 ■ z.B. b=4 bedeutet Hexadezimaldarstellung ■ bei 160 Bit sind das 40 Ziffern ● Grundidee: ● Tapestry apest y ■ Kirsten Hildrum, John Kubiatowicz, Satish Rao, Ben Y. Zhao, "Distributed object location in a dynamic network.", SPAA, 2002, pp. 41‐52 Sende die Nachricht an den Knoten aus der Routing‐Tabelle, dessen gemeinsamer Präfix mit g , g der Ziel‐ID maximale Länge hat. ● 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 ● Was für Einträge braucht man in der Routing‐Tabelle? 3 11.05.2009 Dominic Battré ‐ P2P Netzwerke 4 Routing‐Tabelle 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. 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 6 7 66353254 72621233 56433314 57767105 54116142 55103005 53557047 53654314 53740336 53447620 53452243 53467746 53472422 53351527 53435054 5 53411 534117 5341172 11.05.2009 Dominic Battré ‐ P2P Netzwerke 5 11.05.2009 Dominic Battré ‐ P2P Netzwerke Probleme Pastry ● Zuordnung von Bereichen: ● 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 6 ■ 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 7 11.05.2009 Dominic Battré ‐ P2P Netzwerke 8 Vergleich mit Chord Pastry: Routing Algorithmus ● 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 1 2 3 4 5 6 7 8 9 10 11 12 13 9 // 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 Pastry: Performance Dominic Battré ‐ P2P Netzwerke 10 Lokalität ● Anzahl Einträge in der Routing‐Tabelle: O((logg 2b N ) ● 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: ● Routing Routing‐Performance: Performance: O(log 2b N ) ● Wenn Routing‐Tabellen leer: Wenn Routing Tabellen leer: O( N / L) ■ 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 11 11.05.2009 Dominic Battré ‐ P2P Netzwerke 12 Ankunft eines Knoten Varianten beim Einfügen ● Einfache Variante SL (von vorheriger Folie): ● 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: ■ 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 ■ Zeile 0 wird von Knoten A genommen Zeile 0 wird von Knoten A genommen ■ Zeile 1 wird von Knoten B genommen ■… ● 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 ● 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 11.05.2009 Probleme beim Einfügen Dominic Battré ‐ P2P Netzwerke 14 Ausfall eines Knoten ● 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 ● 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 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 11.05.2009 Dominic Battré ‐ P2P Netzwerke 16 Ausfall eines Knotens Messungen ● Hop‐Anzahl: ● 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 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 LeafSet von Knoten 4 Knoten 4 11.05.2009 Dominic Battré ‐ P2P Netzwerke 17 11.05.2009 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 ● Geringe Abweichung von erwarteter Hop‐Distanz Dominic Battré ‐ P2P Netzwerke 18 Messungen ● Abweichung von der Hop‐Distanz: 11.05.2009 Dominic Battré ‐ P2P Netzwerke 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 19 11.05.2009 Dominic Battré ‐ P2P Netzwerke 20 Routing Geschwindigkeit Messungen ● ● ● ● ● ● 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: ● Qualität der Routing‐Tabellen ■ 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 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 21 11.05.2009 Messungen b=4, L=16, 5.000 Knoten Dominic Battré ‐ P2P Netzwerke 22 Vergleich Tapestry/Pastry ● Knotenausfall: von 5000 Knoten fallen 500 aus ● 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 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 ■ 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 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 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 7: Gradoptimierte Netzwerke 7: Gradoptimierte Netzwerke 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 02.06.2009 Inhalt Anwendungen • OceanStore • BabelPeers • Amazon • Multicast Dominic Battré ‐ P2P Netzwerke 2 Grad vs. Durchmesser ● Gradoptimierte Netzwerke (Überblick) ● Bisher meist O(log N) Grad und O(log N) Durchmesser ● Geht der Grad kleiner, ohne den Durchmesser zu erhöhen? ■ Viceroy ■ Distance Halvingg ■ Koorde Grad g , Durchmesser d , Knotenanzahl N Nach x Hops erreiche ich maximal g x Knoten Mit d Hops erreiche ich jeden Knoten im Netz Also : g d = N Nach d aufgelöst : log( g d ) = log( N ), d.h. d = log( N ) log( g ) log(N) log(log(N)) Mit konstantem Grad ist aber ein logarithmi g scher Durchmesser möglich! g Es folgt : mit g = log(N) ist bester Durchmesser d = 02.06.2009 Dominic Battré ‐ P2P Netzwerke 3 02.06.2009 Dominic Battré ‐ P2P Netzwerke 4 Netzwerke mit konstantem Grad Viceroy ● Viceroy: ● Idee: Butterfly‐Graph als Basis für P2P Netzwerke nehmen ■ Dalia Malkhi, Moni Naor and David Ratajczak: "Viceroy: A Scalable and Dynamic Emulation of the Butterfly", ACM Symp. Principles of Distributed Computing, 2002 ■ Resultiert in einem Netz mit konstantem Grad ■ Ist aber ein relativ kompliziertes Verfahren p ● Interessante "Abfallprodukte": ■ Wie schätze ich log(N)? Wie schätze ich log(N)? ■ Wie stelle ich besser verteilte Intervalle her? ♦ Speziell: Speziell: Maximal konstante Abweichung, also z.B. Länge des Maximal konstante Abweichung, also z.B. Länge des größten Intervalls ist max. 4 mal die Länge des kleinsten Intervalls ♦ Î Lösung: Prinzip der mehrfachen Auswahl ? 02.06.2009 Dominic Battré ‐ P2P Netzwerke 5 02.06.2009 Butterfly‐Graphen Dominic Battré ‐ P2P Netzwerke 6 Viceroy Verbindungsstruktur ● Ein Ring mit allen Knoten ■ successor, predecessor Level 3 ● Ein Ring pro Level ■ nextonlevel, prevonlevel t l l l l ● Butterfly‐Kanten Level 2 ■ left: succ(l+1, s) left: succ(l+1 s) ■ right: succ(l+1, s+1/2l) ■ up: succ(l‐1, s) Level 1 Level 1 ● Notation: ■ succ(s) ist Nachfolger von s i ll in allgemeinem Ring i Ri ■ succ(l, s) ist Nachfolger von Quelle: Dalia Malkhi, Moni Naor and David Ratajczak: s auf Level l Ringg "Viceroy: Viceroy: A Scalable A Scalable and Dynamic Emulation of Dynamic Emulation of the Butterfly Butterfly" Level 0 02.06.2009 Dominic Battré ‐ P2P Netzwerke 7 02.06.2009 Dominic Battré ‐ P2P Netzwerke 8 Routing in Viceroy Knotenankunft ● Wähle eine ID s zufällig ● In allgemeinen Ring einfügen ll f ● cur: Aktueller Knoten, x: Ziel ● Routing in 3 Phasen ● Phase 1: Gehe zu Level 1 ■ Suche per Routing succ(s) ■ Passe Zeiger an (succ, pred, succ.pred, pred.succ) Passe Zeiger an (succ, pred, succ.pred, pred.succ) ■ Solange dem up‐Pointer folgen, bis cur.level = 1 ● Levelauswahl ● Phase 2: Nutzung der Butterfly‐Kanten ■ N0 = 1/distanz(s,succ(s)) ‐‐ Schätzung der Anzahl Knoten im Netz ■ Wähle einen Level l aus [1,…,floor(log N0)] uniform zufällig ■ Wenn der right‐Pointer existiert und nicht zu weit zeigt ● In Level‐Ring einfügen ♦ Folge dem right‐Pointer ■ Schrittweise Suche über allgemeinen Ring Schrittweise Suche über allgemeinen Ring ■ Passe Zeiger an (nextonlevel, predonlevel, etc.) ■ Wenn der left‐Pointer d l f existiert ♦ Folge dem left‐Pointer ● Butterfly‐Kanten einfügen ■ Sonst mache mit Phase 3 weiter Sonst mache mit Phase 3 weiter ■ up := succ(l‐1, s) (Single‐Stepping) ■ left := succ(l+1, s) (Single‐Stepping) ■ right ::= succ(l+1, s+(1/2 succ(l+1 s+(1/2l+1) (Lookup, dann Single ) (Lookup dann Single‐Stepping) Stepping) ● Phase 3: Auf dem Ring suchen ■ Folge dem successor‐Pointer, bis Ziel erreicht Folge dem successor Pointer bis Ziel erreicht 02.06.2009 Dominic Battré ‐ P2P Netzwerke 9 02.06.2009 Abschätzung von log(N) ● Problem: wie erreiche ich konstanten Ein‐Grad? ● Dazu müssen die Intervalle besser angepasst sein ● Bisher: Abweichungen sind: ■ um Faktor N kleiner ■ um Faktor log(N) größer ■ 1/N2 ≤ d ≤ log(N)/N mit hoher Wahrscheinlichkeit ● Betrachte ‐log(d): Betrachte ‐log(d): ● Ziel: ■ Wenn d = 1/N2, dann ist ‐log(d) = ‐log(N‐2) = 2log(N) ■ Wenn d = log(N)/N, dann ist ‐log(d) = ‐log(log(N)*N Wenn d = log(N)/N dann ist log(d) = log(log(N)*N‐11) = )= log(N)‐log(log(N)) ■ Kleinstes Intervall ist 1/2N, größtes ist 2/N ■ Also Abweichung um max. Faktor 4 (konstant) ● Lösung: mehrfache Auswahl ● Daher gilt: Daher gilt: ■ Wähle bei der Knotenankunft zufällig ceil(log(N)) IDs ■ Positioniere den Knoten in der Mitte des größten Intervalls ■ 2log(N) ≥ ‐log(d) ≥ log(N) ‐ log(log(N)) ■ Also ist ‐log(d) eine gute Abschätzung für log(N) Also ist log(d) eine gute Abschätzung für log(N) Dominic Battré ‐ P2P Netzwerke 10 Prinzip der mehrfachen Auswahl ● Sei d der Abstand zum Nachbarn ● Wenn d=1/N, gilt log(N)=‐log(d) ● Es gilt aber nur: Es gilt aber nur: 02.06.2009 Dominic Battré ‐ P2P Netzwerke 11 02.06.2009 Dominic Battré ‐ P2P Netzwerke 12 Netzwerke mit konstantem Grad Distance Halving ● Distance Halving: ■ Moni Naor, Udi Wieder: "Novel Architectures for P2P Applications: the Continuous‐Discrete Approach", SPAA 2003 ● ID‐Bereich ist Intervall [0,1) ● Diesmal nicht zyklisch! ● Jeder Knoten bekommt ein Intervall nach dem Prinzip der mehrfachen Auswahl zugewiesen ■ Also hat jeder Knoten ein Intervall der Größe 1/2N ≤ I ≤ 2/N 1/2N I ≤ 2/N ● Sei das Intervall des Knotens [I1, I2) ● Für jedes I aus [I1, I2) hat der Knoten Zeiger auf Für jedes I aus [I1 I2) hat der Knoten Zeiger auf I/2 sowie (1+I)/2 ● Es werden auch die Rückwärtskanten verwaltet! Es werden auch die Rückwärtskanten verwaltet! ● Damit ist sowohl der Ein‐Grad aus auch der Aus‐Grad konstant! 02.06.2009 Dominic Battré ‐ P2P Netzwerke 13 02.06.2009 Distance Halving I2/2 0 2 I2/2 = 0.2 I1/2 = 0.15 0 ● Wie erreiche ich vom Knoten I=[I1, I2) eine ID, die im Intervall von Knoten J=[J1, J2) liegt? ● Verfolge die Links‐Kanten beider Knoten: g (1+I1)/2 = 0.65 ((1+I2)/2 = )/ 0.7 Intervall von Knoten K1 ■ I trifft auf I1, I1/2, I1/4, I1/8, … ■ J trifft auf J1, J1/2, J1/4, J1/8, … , / , / , / , ● Irgendwann liegen beide Zeiger in einem Intervall: K4,K5,K6 O.B.d.A. sei J1 > I1 1 J 1 I1 2 − ≤ (maximale Intervallgröße) 2k 2k N k J −I 2 2 N J −I J −I ⇔ 1 k 1≤ ⇔ ≥ ⇔ 2 k ≥ N 1 1 ⇔ k ≥ log( l (N 1 1 ) 2 N J 1 − I1 2 2 2 Gesucht ist ein k mit : Routing‐Tabelle von K1 enthält Kanten zu jedem R i T b ll K1 häl K j d Peer in den Ziel‐Intervallen, plus die Rückwärts‐ Kanten Dies ergibt einen konstanten Grad! Kanten. Dies ergibt einen konstanten Grad! 02.06.2009 Dominic Battré ‐ P2P Netzwerke 14 Routing in DH I1=0.3 I2=0.4 K2 K3 Dominic Battré ‐ P2P Netzwerke Ab diesem k sind beide Pointer auf dem gleichen Knoten. D.h. es werden max. O (log N ) Schritte benötigt! 15 02.06.2009 Dominic Battré ‐ P2P Netzwerke 16 Routing in DH Start Routing in DH 1 Left‐Routing(Start, Ziel) 2 if Start und Ziel benachbart then 3 Leite Nachricht von Start nach Ziel 4 else Neuer‐Start = Links‐Zeiger(Start) g ( ) 5 6 Neues‐Ziel = Links‐Zeiger(Ziel) 7 Sende Nachricht von Start nach Neuer‐Start 8 Left‐Routing(Neuer‐Start, Neues Ziel) 9 Sende Nachricht von Neues‐Ziel nach Ziel Ziel Dieses Verfahren kann zu Überlast auf den vorderen Knoten führen! Gibt es noch alternative Wege? 02.06.2009 Dominic Battré ‐ P2P Netzwerke 17 02.06.2009 Alternative Routen Dominic Battré ‐ P2P Netzwerke 18 Netzwerke mit konstantem Grad ● Beobachtung: ● Koorde: ■ I/2‐J/2 = (I‐J)/2 ■ (1+I)/2‐(1+J)/2 = (I‐J)/2 ( ) ( ) ( ) ● D.h., egal ob ich einen Doppel‐Sprung nach Links oder nach Rechts mache: ■ M. Frans Kaashoek, David R. Karger: "Koorde: A simple degree‐optimal distributed hash table", Proceedings of the 2nd International Workshop on Peer‐to‐Peer Systems (IPTPS '03), 2003 ■ Die Restdistanz wird immer halbiert ● Daher: ■ Zur Lastbalancierung wird die Reihenfolge zufällig bestimmt ■ z.B.: Recht z B : Recht – Links Links – Links Links – Rechts Rechts – Links etc. Links etc 02.06.2009 Dominic Battré ‐ P2P Netzwerke 19 02.06.2009 Dominic Battré ‐ P2P Netzwerke 20 Koorde Koorde ● Betrachte folgende Operationen auf Bit‐Strings: ■ Shuffle: Bits um eine Stelle zyklisch rotieren ■ Shuffle‐Exchange: Bits um eine Stelle zyklisch rotieren, dabei g y ein Bit invertieren Sh ffl Shuffle 1 0 1 1 0 J d Bitf l kann über Jede Bitfolge k üb Shuffle (‐Exchange) Operationen in jede andere Bitfolge übersetzt werden Sh ffl E h Shuffle‐Exchange 1 0 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 Exchange 0 1 1 0 1 0 1 1 Quelle: Mahlmann, Schindelhauer Peer‐to‐Peer Peer to Peer Netzwerke Netzwerke 02.06.2009 Dominic Battré ‐ P2P Netzwerke 21 02.06.2009 Der DeBruijn Graph 22 DeBruijn Graph als P2P Netz ● Knoten werden auf Ring angeordnet (wie Chord) ● Statt Chord‐Fingerzeigern werden DeBruijn‐Kanten eingesetzt g SE 100 S Dominic Battré ‐ P2P Netzwerke S 000 010 000 SE 001 S SE SE S 011 101 SE 111 S S SE 001 110 110 SE 010 111 Der Graph ist verbunden und hat konstanten Ein‐ und Ausgrad! g 02.06.2009 Dominic Battré ‐ P2P Netzwerke 101 011 100 23 02.06.2009 Dominic Battré ‐ P2P Netzwerke 24 Imaginäre Knoten Wohin zeigen die DeBruijn‐Kanten? ● ● ● ● Peer‐to‐Peer Netzwerke haben selten genau 2m Knoten Im Beispiel m=4 ist Netz schon bei 16 Knoten voll Daher m=128 Daher m 128 oder m oder m=160 160 Sei n tatsächliche Knotenanzahl im Netz, dann gibt es 2m – n virtuelle Knoten n virtuelle Knoten ● Kanten auf virtuelle Peers werden auf vorangehenden echten Knoten umgebogen (dies ist der für den virtuellen echten Knoten umgebogen (dies ist der für den virtuellen Peer verantwortliche Knoten) ● Äquivalent: Jeder Peer ist für die nachfolgenden virtuellen Äquivalent: Jeder Peer ist für die nachfolgenden virtuellen Peers zuständig Shuffle mit führender 0 Shuffle mit führender 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 0 Dominic Battré ‐ P2P Netzwerke 1 1 0 1 0 1 1 1 0 1 0 1 1 ergibt (2*x+1) mod g ( ) 2m ergibt (2*x) ergibt (2 x) SE mit führender 0 0 0 0 1 SE mit führender 1 1 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 ergibt (2*x) mod 2m ergibt (2*x+1) 02.06.2009 0 25 02.06.2009 Dominic Battré ‐ P2P Netzwerke Wohin zeigen die DeBrujin‐Kanten? 26 Routing ● Jeder Knoten p kennt ● Mit hoher Wahrscheinlichkeit zeigen ■ Vorgänger ■ Nachfolger ■ Knoten 2*p mod 2m, bzw. Knoten, der dafür verantwortlich ist 2*x mod 2m und 2*x + 1 mod 2m ● Datenzuordung wie bei Chord (Datum bei Nachfolger von ID gespeichert) i h t) ● Routing zwischen 2m wird auf reale Knoten abgebildet auf den selben realen Knoten. auf den selben realen Knoten ● Daher nur eine DeBrujin Kante pro Knoten ■R Route über DeBrujin t üb D B ji Kanten zu nächstem Knoten K t ä ht K t ■ Erreichen in jedem Schritt Knoten, der für entsprechenden imaginären Knoten zuständig ist oder imaginären Knoten zuständig ist, oder ■ Landen vor Knoten, der für entsprechenden imaginären Knoten zuständig ist, dann auf Ring Nachricht weiterleiten 02.06.2009 Dominic Battré ‐ P2P Netzwerke 27 02.06.2009 Dominic Battré ‐ P2P Netzwerke 28 Routing in Koorde 1 2 3 4 5 Imaginärer Startknoten ● Routing‐Schritte bisher: n.lookup(k, kshift, i) p( , , ) if k in (n, successor] return successor; else if i in (n, successor] then return d.lookup(k, (kshift o 0) mod 2^m, (i o topBit(kshift)) mod 2^m) else return successor.lookup(k, kshift, i) 6 7 Erklärungen: n k successor d i kshift ■ Anzahl Bits im Identifier (m) ■ plus Anzahl successor‐Schritte ● Wie erreiche ich log(N) Routing? Wi i h i h l (N) R ti ? ● In der Wahl des imaginären Startknotens habe ich Freiheiten: ■ die unteren Bits können frei gewählt werden die unteren Bits können frei gewählt werden ■ Ich kann sie an die oberen Bits des Schlüssels anpassen: Aktueller Knoten Key, zu dem geroutet wird Nachfolger von n auf dem Ring V Vorgänger von 2n (DeBruijn‐Kante) ä 2 (D B ij K t ) Imaginärer DeBruijn‐Knoten Anfangs kshift=k, dann immer weiter geshiftet 02.06.2009 Dominic Battré ‐ P2P Netzwerke durch n vorgegeben 29 i 0 0 1 1 0 1 0 1 k 1 0 1 0 1 1 1 0 02.06.2009 Dominic Battré ‐ P2P Netzwerke Koorde 15 0 15 2 13 3 02.06.2009 8 4 5 10 7 Dominic Battré ‐ P2P Netzwerke 3 11 6 9 2 12 5 10 1 13 4 11 0 14 12 30 Koorde 1 14 frei 6 9 31 02.06.2009 8 7 Dominic Battré ‐ P2P Netzwerke 32 Koorde 15 0 Koorde 1 14 15 2 13 12 02.06.2009 Dominic Battré ‐ P2P Netzwerke 33 ● Gradoptimierte Netze: ■ Bei Grad O(1) ist Durchmesser O(log(N)) erreichbar! ● Ansätze: ■ Viceroy: Butterfly‐Graph simulieren Vi B tt fl G h i li ■ Distance Halving: Distanz in jedem Schritt halbieren ■ Koorde: DeBruijn Koorde: DeBruijn‐Graph Graph simulieren simulieren ● Bewertung: ■ Interessante Ansätze, in der Praxis nicht erprobt ■ Stabilisierung, Lokalität etc. schwierig bzw. nicht erforscht ■ Höherer Grad für Zusammenhalt durchaus wünschenswert ● "Abfallprodukte": ■ Schätzung von log(N) ■ Prinzip der mehrfachen Auswahl Prinzip der mehrfachen Auswahl Dominic Battré ‐ P2P Netzwerke 5 6 9 Zusammenfassung 02.06.2009 4 10 7 35 02.06.2009 Quelle kann sein: 1101 (13) 1101 (13) 1110 (14) 3 11 6 8 2 12 5 9 Route von 13 nach 12: oute o 3 ac 13 4 10 1 14 3 11 0 8 7 Dominic Battré ‐ P2P Netzwerke Ziel ist ist 1100 (12) Imaginäre Route: 1110 ‐> (SE) ‐> 1100 14 ‐> 12 Tatsächliche Route: 13 ‐> 9 ‐> 11 (‐> 13) ( ) 34 SkipNet ● Nicholas J.A. Harvey, Michael B. Jones, Stefan Saroiu, Marvin Theimer, Alec Wolman: "SkipNet: A Scalable Overlay Network with Practical Locality Properties", Proceedings of USITS 2003 USITS, 2003 Vorlesungg P2P Netzwerke ? 8: SkipNet, P 8: SkipNet , P‐‐Grid Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de ● James James Aspnes, Gauri Aspnes Gauri Shah: Shah: "Skip Skip Graphs Graphs", Fourteenth Fourteenth Annual ACM‐SIAM Symposium on Discrete Algorithms, 2003, pp. 384–393 , pp ● William Pugh: "Skip Lists", Commun. ACM, 33:6, pp. 668‐ 676, 1990 11.06.2009 Dominic Battré ‐ P2P Netzwerke Probleme mit DHTs Skip‐Listen ● DHTs "zerhacken" die Daten (wie normale Hash‐Tabellen auch) ● Daten "Meyer" und "Meier" landen auf völlig g unterschiedlichen Knoten ● Daher sind keine Bereichsanfragen möglich (z.B.: Alle Daten g g ( die mit "M" beginnen) ● Eine Lösung dafür: SkipNet g p ● SkipNet basiert auf der Idee der Skip‐Graphen, die wiederum auf Skip‐Listen basieren p ● ● ● ● 11.06.2009 11.06.2009 Dominic Battré ‐ P2P Netzwerke 2 3 Ausgangspunkt: Verkettete Liste, aufsteigend sortiert Hier: direkt zu einem Ring verbunden Suche ist in nur in linearer Zeit möglich Suche ist in nur in linearer Zeit möglich Zur Beschleunigung: Weiter entfernte Listenelemente "verzeigern" verzeigern A C D G Dominic Battré ‐ P2P Netzwerke I L X 4 Skip‐Listen Skip‐Listen ● Elemente bekommen eine zufällige Höhe ● Zusätzliche Verzeigerung in jeder Höhe A ● ● ● ● I A D A C 11.06.2009 A I D G I Skip‐Liste als P2P Netzwerk? Jedes Listenelement ist ein Knoten? Wie route ich von C nach X? Wie route ich von C nach X? Probleme: Knotenausfälle, Last L X A X A Dominic Battré ‐ P2P Netzwerke 5 11.06.2009 I D C D I G I X L Dominic Battré ‐ P2P Netzwerke X 6 Routing Skip‐Listen Æ Skip‐Graphs ● Idee: Durch weitere Verbindungen Zusammenhang stärken Höhe A L 1 2 3 4 5 6 7 8 9 10 11 4 3 G C A L D C G A D L I X A C D G L I X A C D G I L X 2 1 0 11.06.2009 Dominic Battré ‐ P2P Netzwerke 7 // route a msg by name ID RouteByNameID(msg) h = localNode.maxHeight while h >= 0 nbr b = localNode.RouteTable[h] l l d bl [h] if nbr.nameID in [localNode.nameID, msg.nameID] SendToNode(msg, nbr) return h = h ‐ 1; // h<0 implies we are the closest node // h<0 implies we are the closest node. DeliverMessage(msg) 11.06.2009 Dominic Battré ‐ P2P Netzwerke 8 In welche Ringe wird ein Knoten aufgenommen? Skip‐Net: Num‐ID 0 A L 0 C G 0 A 1 C 0 G 0 A C A 1 1 11.06.2009 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 A C D G I L X L I 1 G 0 1 G 1 I 0 X 1 I 1 L ● numID eines Knotens bestimmt die Ring‐Teilnahme ● Zufällige Bitfolge (128 Bit) ● Wird beim Start vom Knoten ausgewürfelt Wird beim Start vom Knoten ausgewürfelt ● Wie findet der Knoten die Ringe? Wie findet der Knoten die Ringe? ■ Ein Knoten des Netzwerkes muss bekannt sein ■ Dieser wird kontaktiert Dieser wird kontaktiert ■ Über eine Nachricht wird ein Knoten gesucht, dessen numID möglichst weit mit der des neuen Knotens übereinstimmt möglichst weit mit der des neuen Knotens übereinstimmt ■ Æ Routing nach numID X 0 L 0 D 0 1 D 0 C D 0 D 0 L A 0 0 1 1 X Dominic Battré ‐ P2P Netzwerke 9 11.06.2009 Routing nach numID 10 Routing nach numID ● A will an 0111 routen ● Statusinformationen: Höhe A Dominic Battré ‐ P2P Netzwerke ■ ringLvl (Anfangswert 0) L ♦ Auf welchem Level bewegt sich die Nachricht? 4 000 3 00 G C 001 C G 010 01 A L A D 011 ■ startNode (Anfangswert nil) D ♦ Bei welchem Knoten begann der Durchlauf im aktuellen Ring? L 10 1 I 11 ■ bestNode (Anfangswert nil) X ♦ Welcher Knoten ist der bisher dichteste? 2 ■ finalDestination (Anfangswert false) 0 1 0 11.06.2009 A C D G L A C D G I Dominic Battré ‐ P2P Netzwerke I X L X ♦ Hat die Nachricht bereits den Zielknoten erreicht? 11 11.06.2009 Dominic Battré ‐ P2P Netzwerke 12 Routing nach numID 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 IDs in SkipNet ● Jeder Knoten hat eine Name‐ID und eine Num‐ID ● Die Name‐ID ist frei wählbar, die Num‐ID ist eine gewürfelte Bitfolge g ● Die Name‐ID bestimmt die Reihenfolge im Root‐Ring ● Die Num Die Num‐ID ID bestimmt, in welchen Ringen auf höheren bestimmt, in welchen Ringen auf höheren Ebenen der Knoten partizipiert ● Routing ist über beide IDs möglich Routing ist über beide IDs möglich ● Name‐IDs können ungleich verteilt sein // route msg via numeric ID RouteByNumericID(msg) if msg.numID == localNode.numID || msg.finalDestination DeliverMessage(msg) return if localNode == msg.startNode msg.finalDestination = true SendToNode(msg.bestNode) return h = CommonPrefixLen(msg.numID, localNode.numID) if h > msg.ringLvl g g msg.ringLvl = h msg.startNode = msg.bestNode = localNode else if |localNode.numID‐msg.numID| < |msg.bestNode.numID‐msg.numID| msg.bestNode = localNode nbr = localNode.RouteTable[msg.ringLvl] SendToNode(nbr) 11.06.2009 Dominic Battré ‐ P2P Netzwerke 13 11.06.2009 Hinzufügen von Knoten 14 Stabilisierung des Root‐Rings ● Über bekannten Knoten wird Nachricht an die Num‐ID des neuen Knotens geschickt ● Dieser kennt alle Ringe, in die der neue Knoten eingefügt wird ● Einfügen von Oben nach unten 1 2 3 4 5 6 Dominic Battré ‐ P2P Netzwerke While ( current Level > 0 ) If Name Id between current Node and next on level Insert between; current level = current level – 1; Else Forward to next node on current level ● Im Root‐Ring Liste von x Nachfolgern sammeln (z.B. x=8) ● Wenn der Nachfolger ausfällt, ist der neue Nachfolger bekannt ● Neuer Nachfolger wird über seinen neuen Vorgänger informiert ● Liste der Nachfolger wird jeweils an den Vorgänger weitergegeben g g ● Aber: Die Nachbarn werden zunächst nur aufgesammelt ● Am Ende wird in einer Operation überall der Insert durchgeführt 11.06.2009 Dominic Battré ‐ P2P Netzwerke 15 11.06.2009 Dominic Battré ‐ P2P Netzwerke 16 Stabilisierung der höheren Ringe Aufwand ● In den höheren Ringen ist nur jeweils ein Nachfolger bekannt ● Wenn dieser ausfällt, ist der Ring zunächst defekt g ● Routing ist trotzdem möglich ● Routing nach name ID: ■ O(log N) ● Routing nach num g ID: ■ O(log N) ■ wie? wie? ● Ein höherer Ring wird repariert, indem der neue Nachfolger im niedrigeren Ring gesucht wird im niedrigeren Ring gesucht wird ● D.h., die Ringe werden nacheinander "von unten nach oben" repariert oben repariert ● Alternative: Auch in höheren Ringen mehrere Nachfolger speichern ● Intuition: 11.06.2009 11.06.2009 Dominic Battré ‐ P2P Netzwerke 17 ■ Die Die Zeiger in der Routing‐Tabelle sind exponentiell verteilt, Zeiger in der Routing‐Tabelle sind exponentiell verteilt daher wird in jedem Schritt die Hälfte der restlichen Distanz übersprungen Zusammenfassung Dominic Battré ‐ P2P Netzwerke 18 P‐Grid ● Karl Aberer, Anwitaman Datta, Manfed Hauswirth, Roman Schmidt: "Das P Grid Overlay Netzwerk: Von einem einfachen Schmidt: "Das P‐Grid‐Overlay‐Netzwerk: Von einem einfachen Prinzip zu einem komplexen System", Datenbank‐Spektrum 13, 2005 ● SkipNet: Strukturiertes P2P Netzwerk ohne Hashing ● Daten werden sortiert auf einem Ring abgelegt ● Zur schnelleren Suche wird der Ring rekursiv in Teilringe Zur schnelleren Suche wird der Ring rekursiv in Teilringe aufgeteilt ● Knoten haben eine Name Knoten haben eine Name‐ID ID und eine numerische ID und eine numerische ID ● Suche ist nach beiden IDs möglich ● Name‐ID Suche durchläuft die Ringe von oben nach unten Name ID Suche durchläuft die Ringe von oben nach unten ● Num‐ID Suche durchläuft die Ringe von unten nach oben 11.06.2009 Dominic Battré ‐ P2P Netzwerke ● Karl Aberer: "P‐Grid: A Self‐Organizing g g Access Structure for P2P Information Systems", Sixth International Conference on Cooperative Information Systems (CoopIS 2001), Trento, Italy, Lecture Notes in Computer Science 2172, Springer Verlag, p , p g g, Heidelberg, 2001. ● www.p‐grid.org 19 11.06.2009 Dominic Battré ‐ P2P Netzwerke 20 P‐Grid Aufbau von P‐Grid ● Grundidee: Buckets mit jeweils gleichen Datenmengen gleichen Datenmengen ■ SSchlüssel werden nicht gehasht hlü l d i h h h ■ Schlüssel werden auf binäre Zeichenketten abgebildet (ASCII‐ /Huffman‐Kodierung) ■ Routing erfolgt über einen Binärbaum 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 11.06.2009 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 Dominic Battré ‐ P2P Netzwerke 21 1 1 0 11.06.2009 1 Dominic Battré ‐ P2P Netzwerke 22 Routing in P‐Grid Peer‐Identifikation ■ Kennung hat nichts mit der Position im Baum zu tun Datenschlüssel 1 Die Position wird dynamisch festgelegt und verändert Die Position nennt sich der Pfad des Peers Der Pfad ist eine binäre Zeichenkette beliebiger Länge Für jedes Präfix seines Pfades hat der Peer einen (oder mehrere) Zeiger auf andere Peers mit 0 : 2 Routing‐Tabelleneintrag 00 ■ gleichem Präfix aber dann anderer Fortsetzung (0 → 1, 1 → 0) ■ falls so ein Peer existiert falls so ein Peer existiert ● Woran erinnert das? ● Wie funktioniert das Routing? Wie funktioniert das Routing? Dominic Battré ‐ P2P Netzwerke 1 1 ● Die ID eines Peers ist seine eindeutige Kennung im Netz 11.06.2009 0 1 Routing in P‐Grid ● ● ● ● 1 1 0 0 0 1 0 0 0 Zugeordnete Peers 1 1 00* 1 01 : 2 : 3 7 00* 1 01 : 6 :8 : 8 01 010 4 010* 1 : 2 00 : 7 011 : 3 5 010* 1 : 6 00 : 1 011 : 8 23 11.06.2009 1 2 1* 0 : 1 011 3 011* 6 1* 0 : 3 1 : 6 00 : 1 011 : 4 8 011* 1 : 2 00 : 1 010 : 5 Quelle: K. Aberer, et al.: "Das P‐Grid‐Overlay‐Netzwerk: Von einem einfachen Prinzip zu einem komplexen System" Dominic Battré ‐ P2P Netzwerke 24 Routing in P‐Grid Aufbau von P‐Grid ● Grundidee: ● Präfixrouting wie bei Pastry / Tapestry ● Pfade können aber beliebig lang werden ■ Knoten sind über unstrukturiertes Netz verbunden ■ Neuer Index (P‐Grid Struktur) wird über dieses Netz gelegt ■ Maximale Routingtabellen‐Größe garantiert nicht mehr g g O(log N) ● B Bootstrapping: Baum nur mit Wurzel, alle Peers und alle Daten tt i B it W l ll P d ll D t befinden sich in der Wurzel ● Rekursive Aufteilung: Rekursive Aufteilung: ● Routing ist trotzdem schnell: g ■ Zufällige Knoten werden für Routingtabelleneinträge gewählt ■ Es können häufig mehrere Bits in einem Schritt aufgelöst g g werden ● Bereichsanfragen erlaubt g 11.06.2009 ■ Solange genügend Peers in einem Bucket: ■ Teile Bucket in zwei Hälften (0‐Pfad, 1‐Pfad) ■ Verteile Peers zahlenmäßig entsprechend der Datenmengen ● Dann dynamische Operationen ■ Peers kommen und gehen ■ Daten kommen und gehen ■ hier nicht weiter betrachtet hier nicht weiter betrachtet Dominic Battré ‐ P2P Netzwerke 25 11.06.2009 Zusammenfassung Strukturierte P2P Netze Strukturierte P2P Netze ● Chord ■ log(N)‐Routing bei log(N)‐Grad l (N) R ti b i l (N) G d ■ Intuitiv und einfach, gut zum Einstieg ● CAN ■ Fülle Fülle Interessanter Ideen, aber Interessanter Ideen aber polynomielles Routing ● Pastry, Tapestry ■ Ähnlich zu Chord, berücksichtigen Lokalität k l ■ Pastry: Praktisch gut einsetzbar, Tapestry: Theorie interessant ● Chord ● SkipNet ■ log(N)‐Routing bei log(N)‐Grad l (N) R ti b i l (N) G d ■ Intuitiv und einfach, gut zum Einstieg ■ Interessante Alternative zum Hashing, aber keine Lokalität ● CAN ● P‐Grid ■ Präfix‐Ansatz ohne Hashing, Lokalität könnte berücksichtigt werden ■ Konzept des Bootstrappings eines Netzwerkes Interessanter Ideen aber ■ Fülle Fülle Interessanter Ideen, aber polynomielles Routing ● Pastry, Tapestry ■ Ähnlich zu Chord, berücksichtigen Lokalität k l ■ Pastry: Praktisch gut einsetzbar, Tapestry: Theorie interessant ● Kademlia ■ Fehlertollerant, parallele Lookups ■ Fehlertollerant, parallele Lookups ● Viceroy, Distance Halving, Koorde ● Viceroy, Distance Halving, Koorde ■ Gradoptimierte Netze ■ Interessante Ansätze, aber nicht praxistauglich ■ Wichtige Abfallprodukte Dominic Battré ‐ P2P Netzwerke 26 Zusammenfassung Strukturierte P2P Netze Strukturierte P2P Netze ● Kademlia 11.06.2009 Dominic Battré ‐ P2P Netzwerke ■ Gradoptimierte Netze ■ Interessante Ansätze, aber nicht praxistauglich ■ Wichtige Abfallprodukte Hashingg 27 11.06.2009 ● SkipNet ■ Interessante Alternative zum Hashing, aber keine Lokalität ● P‐Grid ■ Präfix‐Ansatz ohne Hashing, Lokalität könnte berücksichtigt werden ■ Konzept des Bootstrappings eines Netzwerkes Kein Kein Hashingg Dominic Battré ‐ P2P Netzwerke 28 Inhalte der Vorlesung (vorläufig) Einleitung Vorlesungg P2P Netzwerke • Was ist P2P? • Definition • Einsatzgebiete 9: Lastverteilung 9: Lastverteilung 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 Inhalt Lastbalancierung • Sicherheit Anwendungen • OceanStore • BabelPeers • Amazon • Multicast Dominic Battré ‐ P2P Netzwerke 2 ● John Byers, Jeffrey Cosidine, Michael Mitzenmacher: "Simple Load Balancing for Distributed Hash Tables", Second International Workshop on Peer‐to‐Peer Systems, 2003 ● André Höing: "Lastbalancierung von Speicherbedarf und Anfragen in BabelPeers", Diplomarbeit, Universität Paderborn, 2006 ● Prasanna Ganesan, Mayank Bawa, Hector Garcia‐Molina: "Online Balancing of Range‐Partitioned Data with Applications l to Peer‐to‐Peer Systems", Proceedings " d off the h 30th VLDB Conference, 2004 I: Replikation, Bereichsgrenzen ändern II: Power of Two Choices II: Power of III: Virtuelle Peers IV: Relokation IV: Relokation ● Erkennung von Ungleichgewichten ■ Schätzverfahren ● Lastbalancierung in SkipNet Dominic Battré ‐ P2P Netzwerke Fortgeschrittenes Literatur ● Welche Last balancieren? ● Balancierungseigenschaften von DHTs ● Techniken: 16.06.2009 • Napster • Gnutella • Super‐Peer Netzwerke Super Peer Netzwerke • Small‐World Netzwerke etc. Strukturierte Netze 16.06.2009 ■ ■ ■ ■ U Unstrukturierte Netze k i N 3 16.06.2009 Dominic Battré ‐ P2P Netzwerke 4 Lastverteilung Lastverteilung beim Routen ● Welche Ressource ist das Problem? ● Muss jeder Peer in etwa die gleiche Anzahl Nachrichten weiterleiten? ● Normalerweise durch die Symmetrie des Netzwerkaufbaus gegeben ● Probleme evtl. bei: ■ Ressourcen: ♦ Netzwerklast: Bandbreitenverbrauch ♦ Speicherlast: Festplattenverbrauch / Hauptspeicher ♦ Rechenlast: Verbrauch von CPU‐Zyklen ■ Netzwerklast und Rechenlast sind momentbezogen ■ Speicherlast ist dauerhaft ■ Welche Last das Problem ist, ist anwendungsabhängig ■ Viceroy: höheren Schichten evtl. mehr belastet ■ Skip‐Listen als P2P‐Netzwerk (daher Skip‐Graphen) p ( p p ) ■ Super‐Peer Netzwerken ● Was soll erreicht werden? ● Wird Wird von meisten P2P Netzwerken sichergestellt und hier von meisten P2P Netzwerken sichergestellt und hier nicht weiter betrachtet ■ Ist die ideale Lastverteilung die Gleichverteilung? ■ Oder eher angepasst an die Leistungfähigkeit g p g g des Knotens? 16.06.2009 Dominic Battré ‐ P2P Netzwerke 5 16.06.2009 Dominic Battré ‐ P2P Netzwerke Lastbalancierung von DHTs 6 Ungleiche Last ● DHTs haben folgende Annahme: ● Beispiel‐Verteilung: ■ Die Bereiche der Knoten sind ähnlich groß ■ Î Prinzip der mehrfachen Auswahl ■ Die Hashfunktion liefert jede ID mit gleicher Wahrscheinlichkeit ■ Damit sind die Daten Damit sind die Daten "gleichmäßig" gleichmäßig über die Knoten verteilt über die Knoten verteilt Anzahl Elemente bzw. Größe bzw. Abrufe ● Probleme: ■ "gleichmäßig" gleichmäßig heißt nicht, dass alle genau gleich viele Daten heißt nicht dass alle genau gleich viele Daten haben ■ Nicht jeder Knoten kann gleich viel speichern j g p ■ Evtl. sind die Daten nicht gleichverteilt (andere Hashfkt) ■ Hot‐Spots: Schlüssel mit sehr vielen Daten 16.06.2009 Dominic Battré ‐ P2P Netzwerke P1 7 16.06.2009 P2 P3 P4 Dominic Battré ‐ P2P Netzwerke P5 ID‐Raum 8 Ungleiche Last Ungleiche Last ● Ziel ist nicht mehr, dass jeder Knoten einen gleichen Teil vom ID‐ Raum bekommt b k ● Sondern: Gleich viel Last! ● Beispiel‐Verteilung: Anzahl Elemente bzw. Größe bzw. Abrufe ■ d.h.: großer ID‐Raum mit wenig Last d h : großer ID Raum mit wenig Last ■ oder kleiner ID‐Raum mit großer Last ● Problem allerdings: Problem allerdings: ■ Hot‐Spots, d.h. Schlüssel mit sehr viel Last ■ Diese können nicht aufgelöst werden, wenn nur die ID‐Bereiche verschoben werden ● Lösungsansätze P1 P2 16.06.2009 P3 ■ Schlüssel eindeutig machen Æ Schlüssel eindeutig machen Æ Range‐Queries Range Queries ■ Vergleiche mit P‐Grid Lösung, bzw. mit SkipNet ■ Lösungen in der Anwendung: z.B. Datei in Blöcke aufteilen Lösungen in der Anwendung: z.B. Datei in Blöcke aufteilen P5 P4 ID‐Raum Dominic Battré ‐ P2P Netzwerke 9 16.06.2009 Dominic Battré ‐ P2P Netzwerke Techniken I Techniken I ● Bereichsgrenzen anpassen ■ ■ ■ ■ ■ 10 ● Replikation ■ Systemweiter Replikations‐Faktor Besonders belastete Bereiche verkleinern Unausgelastete g Bereiche vergrößern g Kann Hot‐Spots an einer ID nicht ausgleichen Schiebt "Last‐Wellen" um den Ringg Daher: wenig ausgelastete Knoten neu Positionieren ♦ ♦ ♦ ♦ z.B. jedes Datum auf 4 Knoten "Glättet" die Speicherlast, aber erhöht sie wird allerdings sowieso benötigt Wenn bei Abfragen zufällig ein Replika‐Knoten ausgewählt wird, wird auch Bandbreite / CPU balanciert ♦ Allerdings immer nur begrenzt All di i b t Anzahl Elemente bzw. Größe bzw. Abrufe ■ Replikation auf Anfragepfaden bei häufigen Anfragen ♦ hier nicht weiter betrachtet hi i ht it b t ht t P1 16.06.2009 P2 P3 P4 Dominic Battré ‐ P2P Netzwerke P5 ID‐Raum 11 16.06.2009 Dominic Battré ‐ P2P Netzwerke 12 Techniken II: Power of Two Choices Power of Techniken III: Virtuelle Peers Virtuelle Peers ● Idee: Verwende mehrere Hash‐Funktionen h1 bis hd ● Speichern eines Datums mit Schlüssel k: ● Jeder physische Knoten hat mehrere virtuelle Peers ● Naiv: ■ Kontaktiere parallel alle Peers h1(k) bis hd(k) ■ Speichere das Datum auf dem am wenigsten ausgelasteten Peer S i h d D t fd i t l t t P ■ Speichere auf allen anderen Peers Verweise zum Datum ■ Wenn Last zu hoch: Stoppe einige der Peers ■ Wenn Last zu klein: Starte neue Peers W L t kl i St t P ● Gesteuert: freie Knoten suchen sich überlastete Knoten ● Beim Abrufen eines Datums mit Schlüssel k: Beim Abrufen eines Datums mit Schlüssel k: ■ Knoten finden sich durch Random Walk oder Verzeichnisse Knoten finden sich durch Random Walk oder Verzeichnisse ■ Wähle ein i aus [1,d] zufällig ■ Kontaktiere Peer hi(k) ● Vorteile: einfach zu realisieren ● Nachteile: Nachteile: ● Es kann alles balanciert werden: Speicher, CPU, oder Bandbreite ● Alternative: keine Verweise speichern, sondern alle Fragen ● Wichtig: ■ Verwaltungsaufwand beim Starten / Stoppen ■ Netz wird virtuell größer und damit langsamer ■ Der Grad erhöht sich. Bei log(N) virtuellen Peers wird der Grad eines reellen Peer log²(N) ● Auch hier können individuelle Hot‐Spots nicht aufgelöst werden Auch hier können individuelle Hot Spots nicht aufgelöst werden ■ Weiterleitung muss billiger als selber machen sein W it l it billi l lb h i 16.06.2009 Dominic Battré ‐ P2P Netzwerke 13 16.06.2009 Techniken IV: Relokation Dominic Battré ‐ P2P Netzwerke 14 Techniken IV: Relokation Wurzelknoten ≈ 50.000 Daten Wurzelknoten Netzwerk Kind 2 Level 1 Kind 1 Level 1 ≈ 25.000 Daten Kind 1 Level 1 Kind 1 Level 2 Kind 1 Level 2 Kind 2 Level 2 ≈ 12.500 Daten ≈ 12.500 Daten Quelle: André Höing 16.06.2009 Kind 2 Level 1 ≈ 25.000 Daten Dominic Battré ‐ P2P Netzwerke 15 Kind 2 Level 2 Quelle: André Höing 16.06.2009 Dominic Battré ‐ P2P Netzwerke 16 Lasterkennung I Lasterkennung II ● Knoten versenden Lastinformationen an an andere Knoten ● Grundsätzliches Problem: ■ Globale Informationen schätzen, ohne jeden Knoten zu fragen ■ Anzahl Daten ■ Verbrauchte V b ht Bandbr. B db ■ Mittlere Wartezeit ● Woher weiß ein Knoten, ob er Überlast hat? ■ ■ ■ ■ StatusQueue (SS) Gleichverteilung der ID‐Bereiche erkennen: Jeder Peer speichert 50 Keys zufällig im DHT Wer >>50 Keys y erhält, hat einen zu großen Bereich , g Wer <<50 Keys erhält, hat einen zu kleinen Bereich ● SampleSize (SS) ■ Samplegröße ● SampleFactor (SF) ■ Multiplikator ● Überlastet, wenn ■ myLoad y > SF * otherLoad h d 16.06.2009 Dominic Battré ‐ P2P Netzwerke 17 16.06.2009 Lastbalancierung in SkipNet ● Knoten Ni ist für Daten im Bereich [Ri‐1, Ri) verantwortlich ● Die Bereiche haben beliebige Größe ● Wichtig ist, dass die Datenmenge ausgeglichen ist ● Die Bereichsgrenzen Ri werden ständig angepasst 16.06.2009 Quelle: André Höing Dominic Battré ‐ P2P Netzwerke 18 Lastbalancierung in SkipNet ● Operation NeighborAdjust: ● Zwei benachbarte Knoten passen ihre Bereichsgrenzen an Last Last Last N1 N2 N3 N4 N5 N6 N7 N8 N9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 Dominic Battré ‐ P2P Netzwerke 19 N1 N2 N3 N4 N5 N6 N7 N8 N9 N1 N2 N3 N4 N5 N6 N7 N8 N9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 16.06.2009 Dominic Battré ‐ P2P Netzwerke 20 Lastbalancierung in SkipNet Verfahren ● Operation Reorder: ● Ein leerer Knoten sucht sich eine neue Position Last ● Iteratives Vorgehen ● Wir starten mit leerem Netzwerk ● Bei jeder Insert Bei jeder Insert‐ und jeder Delete und jeder Delete‐Operation Operation wird eine wird eine Balancierung ausgeführt ● Betrachte Schwellenwerte: Betrachte Schwellenwerte: Last ■ T1=c, T2=2c, T3=4c, T4=8c, T5=16c, etc. ■ Genau dann, wenn Genau dann wenn die Last einen Knotens über einen die Last einen Knotens über einen Schwellwert kommt, wird Balancierung angestoßen N1 N2 N3 N4 N5 N6 N7 N8 N9 N1 N3 N4 N5 N2 N6 N7 N8 N9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 16.06.2009 Dominic Battré ‐ P2P Netzwerke 21 16.06.2009 Dominic Battré ‐ P2P Netzwerke Algorithmus 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 16 Beispiel // Rufe nach insert eines Datums auf Ni auf AdjustLoad(Node Ni) Sei L(Ni) = x in (Tm, Tm+1] // hier bestimmen wir m (!) Sei Nj der weniger belastete von Ni‐1 und Ni+1 if L(Nj) <= Tm‐1 then NeighborAdjust(Ni ,Nj) AdjustLoad(Nj) AdjustLoad(Ni) else Suche den am wenigsten ausgelasteten Knoten Nk if L(N ( k) ) <= Tmm‐22 then // weniger als ¼ der Last g Transferiere alle Daten von Nk zu N := Nk±1 Reorder(Ni ,Nk) AdjustLoad(N) else // System ist ausreichend balanciert end if end if 16.06.2009 Dominic Battré ‐ P2P Netzwerke 22 Ti=2i‐1, wir führen AdjustLoad wir führen AdjustLoad nur aus, wenn m≥3, damit T nur aus wenn m≥3 damit Tm‐2 definiert ist definiert ist T5 m=4 T4 m=3 T3 T2 T1 0 23 16.06.2009 K0 250 K1 500 K2 Dominic Battré ‐ P2P Netzwerke 750 K3 1000 24 Beispiel Beispiel Einfügen: 9 115 1 11 19 Einfügen: 9, 115, 1, 11, 19 NeighborAdjust T5 T5 m=4 T4 m=4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 250 K1 500 K2 750 K3 1000 m=3 0 K0 19 K1 500 K2 750 K3 1000 Liegen in (Tm, Tm+1] = (T3, T4] → Prüfen ob Nachbar Last ≤ Tm‐1 = T2 hat → Ja → NbrAdjust 16.06.2009 Dominic Battré ‐ P2P Netzwerke 25 16.06.2009 Dominic Battré ‐ P2P Netzwerke Beispiel 26 Beispiel Einfügen: 0 2 Einfügen: 0, 2 NeighborAdjust T5 T5 m=4 T4 T4 m=3 T3 T3 T2 T1 T2 T1 0 16.06.2009 m=4 K0 19 K1 500 K2 Dominic Battré ‐ P2P Netzwerke 750 K3 1000 m=3 0 27 16.06.2009 K0 11 K1 500 K2 Dominic Battré ‐ P2P Netzwerke 750 K3 1000 28 Beispiel Beispiel Einfügen: 281 53 Einfügen: 281, 53 NeighborAdjust T5 T5 m=4 T4 m=4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 11 16.06.2009 K1 500 K2 750 K3 1000 Dominic Battré ‐ P2P Netzwerke m=3 0 29 K0 11 16.06.2009 K1 115 K2 750 K3 1000 Dominic Battré ‐ P2P Netzwerke Beispiel 30 Beispiel Einfügen: 13 432 40 Einfügen: 13, 432, 40 Reorder T5 T5 m=4 T4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 11 K1 115 K2 750 K3 1000 K0 11 K1 115 K3 115 K2 1000 K3 gibt gesamte Last an Nachbarn K2 ab, sortiert sich neben K1, übernimmt Hälfte der Last von K1 g g Hat Knoten mit geringster Last ≤ T m‐2 m 2 = T1 Daten? → Ja Dominic Battré ‐ P2P Netzwerke m=3 0 Liegen in (Tm, Tm+1] = (T3, T4] → Prüfen ob Nachbar Last ≤ Tm‐1 = T2 hat → Nein 16.06.2009 m=4 31 16.06.2009 Dominic Battré ‐ P2P Netzwerke 32 Beispiel Beispiel NeighborAdjust(K2) Einfügen: 137 205 Einfügen: 137, 205 T5 T5 m=4 T4 m=4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 11 16.06.2009 K1 40 K2 115 K3 1000 Dominic Battré ‐ P2P Netzwerke m=3 0 33 K0 11 16.06.2009 K1 40 K2 115 K3 1000 Dominic Battré ‐ P2P Netzwerke Beispiel 34 Beispiel NeighborAdjust Einfügen: 82 130 Einfügen: 82, 130 T5 T5 m=4 T4 T4 m=3 T3 T3 T2 T1 T2 T1 0 16.06.2009 m=4 K0 11 K1 40 K2 Dominic Battré ‐ P2P Netzwerke 137 K3 1000 m=3 0 35 16.06.2009 K0 11 K1 40 K2 Dominic Battré ‐ P2P Netzwerke 137 K3 1000 36 Beispiel Beispiel Keine Balancierung! Keine Balancierung! Einfügen: 26 78 41 110 679 49: Einfügen: 26, 78, 41, 110, 679, 49: T5 T5 m=4 T4 m=4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 11 K1 40 K2 137 K3 1000 m=3 0 K0 11 K1 40 K2 137 K3 1000 Liegen in (Tm, Tm+1] = (T3, T4] → Prüfen ob Nachbar Last ≤ Tm‐1 = T2 hat → Nein g g Hat Knoten mit geringster Last ≤ T m‐2 m 2 = T1 Daten? → Nein 16.06.2009 Dominic Battré ‐ P2P Netzwerke 37 16.06.2009 Dominic Battré ‐ P2P Netzwerke Beispiel 38 Beispiel NeighborAdjust Einfügen: 7, 69, 163, 197, 506, 6, 3, 8, 182, 173, 416, 133, 42, Einfügen: 7 69 163 197 506 6 3 8 182 173 416 133 42 108, 18, 56, 556, 123 T5 T5 m=4 T4 m=4 T4 m=3 T3 T3 T2 T1 T2 T1 0 K0 11 K1 49 K2 137 K3 1000 m=3 0 K0 11 K1 49 K2 137 K3 1000 Je größer die Bereiche, um so seltener Balancierung 16.06.2009 Dominic Battré ‐ P2P Netzwerke 39 16.06.2009 Dominic Battré ‐ P2P Netzwerke 40 Quantifizierung von Last Ungleichgewicht Lastbalancierung in SkipNet ● Durch lokale Entscheidungen wird globale Balancierung erreicht ● Durch Anpassen der Bereichsgrenzen wird neue Last g passend einsortiert ■ Solange das Lastprofil gleich bleibt! Knoten 1 2 3 4 5 6 Schritt 1: ermitteln der Last 3 2 5 3 1 2 Schritt 2: sortieren 1 2 2 3 3 5 Schritt 3: akkumulieren 1 3 5 8 11 16 100% ● Beweisbar gutes Verfahren Last ■ Kosten sind max. O(X) bei X eingefügten Daten ( ) g g ■ Garantiert, dass mini {L(Ni)} ≤ 8 * maxi {L(Ni)} + c0 ● Problem Problem beim P2P beim P2P‐Einsatz: Einsatz: Wie finde ich den am wenigsten Wie finde ich den am wenigsten belasteten Knoten? 0% ■ Lösung: Zweite SkipGraph Lösung: Zweite SkipGraph‐Struktur, Struktur, nach Last sortiert nach Last sortiert 16.06.2009 Dominic Battré ‐ P2P Netzwerke 0% 41 16.06.2009 Quantifizierung von Last Ungleichgewicht Knoten 1 2 3 4 5 6 Schritt 1: ermitteln der Last 3 2 5 3 1 2 Schritt 2: sortieren 1 2 2 3 3 5 Schritt 3: akkumulieren 1 3 5 8 11 16 Last 21.06.2009 K t Knoten Dominic Battré ‐ P2P Netzwerke 100% 100% Dominic Battré ‐ P2P Netzwerke 42 ● Last‐Arten: CPU, Speicher, Bandbreite ● Automatische Balancierung von DHTs ● Techniken: ■ ■ ■ ■ I: Bereichsgrenzen ändern, Replikation II: Power of Two Choices II: Power of III: Virtuelle Peers IV: Relokation IV: Relokation ● Erkennung von Ungleichgewichten ● Lastbalancierung Lastbalancier ng in SkipNet in SkipNet nach Ganesan nach Ganesan et al. et al Gini‐Index = 0% K t Knoten Zusammenfassung 100% 0% Lorenz‐Kurve Fläche unter Dreieck, immer 0.5 43 16.06.2009 Dominic Battré ‐ P2P Netzwerke 44 Inhalt ● ● ● ● Vorlesungg P2P Netzwerke Application‐Layer Multicast Scribe SplitStream BitTorrent 10: Multicast 10: Multicast Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de 20.06.2009 Dominic Battré ‐ P2P Netzwerke Multicast 2 Application‐Layer Multicast ● IP Multicast ist eine tolle Idee, aber ■ kaum unterstützt ■ daher nicht praktisch einsetzbar p ● Alternativen? ● Application Application‐Layer Layer Multicast! Multicast! P1 R1 R2 P2 P1 R1 R2 P2 P4 R4 R3 P3 P4 R4 R3 P3 Max Stress = 1 Avg Stretch = 1 Max Stress = 3 Avg Stretch = 1 P1 R1 R2 P2 P1 R1 R2 P2 P4 R4 R3 P3 P4 R4 R3 P3 Max Stress = 1 Avg Stretch = 2 20.06.2009 Dominic Battré ‐ P2P Netzwerke 3 20.06.2009 Max Stress = 2 Avg Stretch = 1,33 Dominic Battré ‐ P2P Netzwerke 4 Scribe: Literatur Scribe: Basis [1] M. Castro, P. Druschel, A‐M. Kermarrec, A. Rowstron: "SCRIBE: A large‐scale and decentralised application‐level multicast infrastructure", IEEE Journal on Selected Areas in Communications (JSAC) (Special issue on Network Support for Multicast Communications), 2002. [2] M. Castro, P. Druschel, A‐M. Kermarrec, A. Nandi, A. Rowstron, A. Singh: "SplitStream: High‐bandwidth multicast li i in a cooperative i environment", OSP'03,Lake i " OSP'03 L k Bolton, New York, October, 2003. ● ● ● ● ● Baut auf Pastry auf Multicast‐Kommunikation in Gruppen Jede Gruppe hat eine ID grpID Jede Gruppe hat eine ID grpID Der Root‐Knoten für grpID in Pastry verwaltet die Gruppe Join von Knoten n: von Knoten n: ■ ■ ■ ■ Sende Nachricht JOIN an grpID Jeder Knoten auf dem Weg überprüft ob er in der Gruppe ist Jeder Knoten auf dem Weg überprüft, ob er in der Gruppe ist Falls ja: Füge n zur Kinder‐Liste für grpID hinzu N h i ht i d Nachricht wird nur weitergeleitet, wenn der Knoten noch it l it t d K t h nicht in der Gruppe war ● Es wird dadurch ein Baum für jede Gruppe aufgebaut Es wird dadurch ein Baum für jede Gruppe aufgebaut 20.06.2009 Dominic Battré ‐ P2P Netzwerke 5 20.06.2009 Dominic Battré ‐ P2P Netzwerke Scribe und SplitStream Scribe und SplitStream 0100 0100 Subscriber 1111 1111 1100 1100 1101 1101 1001 Root‐Knoten für grpID 1001 0111 Root‐Knoten für grpID S b ib Subscriber Subscriber, auch wenn sie selbst nicht am Topic interessiert sind ("Forwarder") 20.06.2009 6 Dominic Battré ‐ P2P Netzwerke 0111 S b ib Subscriber Subscriber, auch wenn sie selbst nicht am Topic interessiert sind ("Forwarder") Quelle: [1] 7 20.06.2009 Dominic Battré ‐ P2P Netzwerke Quelle: [1] 8 Scribe: Verlassen einer Gruppe Verlassen einer Gruppe Scribe: Senden einer Nachricht Senden einer Nachricht ● Kanonische Lösung: ● Leave von Knoten n aus Gruppe grpID: ■ Nachrichten werden immer zur Wurzel geschickt ■ Dazu wird das NodeHandle gecacht ■ Wenn es falsch oder unbekannt ist, wird per Pastry‐Routing die Wenn es falsch oder unbekannt ist wird per Pastry Routing die Wurzel gesucht ■ Von der Wurzel aus sendet jeder Knoten die Nachricht an seine Kind‐Knoten ■ Wenn Kinder‐Liste leer ist, route Leave‐Message Richtung Root‐Knoten ■ Sonst Markiere Gruppe nur als "verlassen" ● Wenn eine Leave‐Nachricht von einem Kind empfangen wurde: ■ Lösche Kind aus Kinder‐Liste ■ Wenn Kinder‐Liste leer ist, und der Knoten selbst nicht in der Gruppe ist: ♦ Sende Leave‐Nachricht an Parent und lösche die Gruppe lokal 20.06.2009 Dominic Battré ‐ P2P Netzwerke 9 ● Alternative: ■ V Verteilen der Nachricht direkt vom aktuellen Knoten aus t il d N h i ht di kt kt ll K t ■ Jede Nachricht beinhaltet eine Liste von Knoten, die die Nachricht bereits gesehen haben g ■ Die Nachricht wird an den Parent‐Knoten und an alle Kind‐Knoten verschickt 20.06.2009 Dominic Battré ‐ P2P Netzwerke Scribe: Reparatur 10 Scribe ● Die Wurzel sendet regelmäßig "Heartbeat"‐Nachrichten ● Normale Nachrichten sind implizit Heartbeats ● Wenn der Heartbeat Wenn der Heartbeat vom Parent vom Parent‐Knoten Knoten ausbleibt, sendet ausbleibt, sendet er eine neue JOIN‐Nachricht ● Dadurch wird der Baum repariert Dadurch wird der Baum repariert ● Die Wurzel repliziert ihren Zustand (wie gewohnt) über das Leafset ● Ein neuer Root‐Knoten übernimmt direkt nach dem Ausfall der Wurzel das Verteilen und Aussenden der Heartbeats der Wurzel das Verteilen und Aussenden der Heartbeats 0100 1111 1100 1101 1001 0111 Quelle: [1] 20.06.2009 Dominic Battré ‐ P2P Netzwerke 11 20.06.2009 Dominic Battré ‐ P2P Netzwerke 12 Scribe Scribe: Probleme ● Innere Knoten des Baumes müssen weiterleiten ● Blattknoten müssen nur empfangen ● Für Baum mit Fanout f, i inneren Knoten, b Blättern gilt: 0100 1111 ■ (f‐1) ∙ i + 1 = b (f ) b ■ ÎAnteil an inneren Knoten ca. 1/f ● Last der inneren Knoten: Last der inneren Knoten: 1100 ■ Ausgangs‐Bandbreite f‐mal der Datenstrom 1101 1001 0111 ● Î Sehr ungleiche Lastverteilung im Baum Sehr ungleiche Lastverteilung im Baum ● Lösung: SplitStream ● Grundidee: ■ Aufteilen des Datenstroms in mehrere Teilströme ■ Für jeden Teilstrom einen eigenen Baum aufbauen Quelle: [1] 20.06.2009 Dominic Battré ‐ P2P Netzwerke 13 20.06.2009 Dominic Battré ‐ P2P Netzwerke SplitStream SplitStream 1 3 1 5 2 Dominic Battré ‐ P2P Netzwerke 5 2 6 7 20.06.2009 3 8 4 14 8 4 6 7 Q ll [2] Quelle: [2] 15 20.06.2009 Dominic Battré ‐ P2P Netzwerke Q ll [2] Quelle: [2] 16 SplitStream SplitStream ● ● ● ● 1 3 5 Datenstrom mit Bandbreite B wird verteilt Der Datenstrom wird in k Stripes eingeteilt Für jeden Stripe wird ein eigener Baum aufgebaut Für jeden Stripe wird ein eigener Baum aufgebaut Es muss nicht jeder Knoten alle Stripes empfangen ■ Warum macht das Sinn? Warum macht das Sinn? 2 4 6 7 20.06.2009 ● Jeder Knoten kann seine Upload‐ und Download‐Bandbreite in Schritten von B/k kontrollieren in Schritten von B/k kontrollieren ● Dadurch Berücksichtigung von: 8 ■ Knoten mit unterschiedlicher Bandbreite K t it t hi dli h B db it ■ Ungleiche Up‐ und Download‐Bandbreite Q ll [2] Quelle: [2] Dominic Battré ‐ P2P Netzwerke 17 20.06.2009 Dominic Battré ‐ P2P Netzwerke Aufbau der Bäume ● ● ● ● ● ● ● ● ● Aufbau der Bäume Jeder Stripe bekommt eigene ID Die ID's unterscheiden sich in der höchsten Ziffer Jeder Empfänger‐Knoten meldet sich bei allen Stripe‐IDs an Zu jeder ID wird ein eigener Scribe‐Baum aufgebaut Je dichter ein Knoten an der Wurzel ist, desto länger ist der gemeinsame Präfix gemeinsame Präfix Ideal für diese Konstruktion ist: k = 2b Jede Route von einem Knoten zu einer Stripe‐ID Jede Route von einem Knoten zu einer Stripe ID stellt im ersten stellt im ersten Schritt Übereinstimmung in der ersten Stelle sicher Die weitere Route verläuft nur über Knoten mit der gleichen ersten Stelle Alle Bäume haben also disjunkte Mengen innerer Knoten 20.06.2009 Dominic Battré ‐ P2P Netzwerke 18 Peer mit Präfix 0 Peer mit Präfix 0 Peer mit Präfix 1 Peer mit Präfix 1 A A 19 20.06.2009 Dominic Battré ‐ P2P Netzwerke 20 Kontrolle der Bandbreite Kontrolle der Bandbreite ● Die eingehende Bandbreite entspricht der Menge der abonnierten Stripes oder abonnierten Stripes, oder ● max. 1, wenn kein Stripe abonniert wurde, aber der Knoten innerer Knoten eines Stripe‐Baumes ist ● Aber: die ausgehende Bandbreite könnte überschritten werden ● Methode in Scribe zur Kontrolle: ● Jeder Knoten nimmt jedes neue Kind zunächst an ● Wenn seine Bandbreite überschritten wird: ■ Selektiere das Kind mit dem kürzesten gemeinsamen Präfix ■ Hänge diese Kind ab ● Das verwaiste Kind muss sich einen neuen Parent‐Knoten suchen ■ W Wenn ein Knoten einen neuen Kind‐Knoten bekommt, der die i K t i Ki d K t b k t d di Bandbreite überschreitet: ■ Sende dem Knoten bisherige Kind‐Liste ■ Der Knoten versucht sich bei dem Kind mit der geringsten Latenz anzumelden ■ Dies wird rekursiv fortgesetzt g ■ Zunächst rekursiver Versuch, sich bei den anderen Kindern des alten Parent‐Knoten einzuhängen ■ Dabei werden nur Kinder mit zum Stripe D b i d Ki d it St i passenden Präfix genutzt d P äfi tt ■ Sonst nutze die "Spare capacity group" ● Diese Methode führt in SplitStream zu Problemen! (Blatt Knoten kann evtl. kein Kind annehmen, weil er in anderem Baum innerer Knoten und damit ausgelastet ist) Knoten und damit ausgelastet ist) 20.06.2009 Dominic Battré ‐ P2P Netzwerke 21 ● Spare Capacity Spare Capacity Group ■ Scribe‐Gruppe in der alle Knoten mit freien Kapazitäten sind 20.06.2009 Wie verwende ich SplitStream? [1] Bram Cohen: "Incentives Build Robustness in BitTorrent", 2003. [2] Ashwin R. Bharambe, Cormac Herley, Venkata N. Padmanabhan: "Analyzing and Improving BitTorrent Performance", Microsoft Research Technical Report MSR‐ TR‐2005‐03, 2005. ■ Empfang aller k Stripes ist nicht nötig ■ Ausfall einzelner Stripes Ausfall einzelner Stripes kann kann kompensiert werden kompensiert werden Dominic Battré ‐ P2P Netzwerke 22 BitTorrent: Literatur ● Jeder einzelne Stripe könnte "Aussetzer" haben: ● Reparaturzeiten nach Knotenausfall, Umorganisation, etc. ● Daher: Einsatz von fehlertoleranter Kodierung Daher: Einsatz von fehlertoleranter Kodierung 20.06.2009 Dominic Battré ‐ P2P Netzwerke 23 20.06.2009 Dominic Battré ‐ P2P Netzwerke 24 BitTorrent BitTorrent: Funktionsweise ● Ein Peer lädt eine Torrent‐Datei von einem Webserver Seeder Web‐Server mit .torrent‐Datei ■ Dateiinfos: Name, Länge etc. ■ URL des Trackers ■ SHA1‐Werte der Dateiblöcke SHA1 Werte der Dateiblöcke Seeder ● ● ● ● ● Es muss mind. einen Seeder anfänglich geben Ein Peer meldet sich beim Tracker an Ein Peer meldet sich beim Tracker Der Tracker schickt eine zufällige Auswahl an Peers (ca. 40) Der Peer baut Direktverbindungen zu diesen Peers auf Der Peer baut Direktverbindungen zu diesen Peers auf Der Peer lädt jetzt die Datei blockweise von seinen Nachbar‐ Peers runter ● Wenn ein Peer weniger als 20 Nachbarn hat, holt er neue vom Tracker Leecher Leecher Tracker Leecher Seeder Leecher 20.06.2009 Dominic Battré ‐ P2P Netzwerke 25 20.06.2009 BitTorrent: Details ● Datei besteht aus m Teilen ● Jeder Peer hat genau einen zufällig ausgewählten Teil Versendung der Blöcke über TCP‐Verbindungen Jeder Block wird in Sub‐Blöcke aufgeteilt (16 KB) Diese werden im Pipelining‐Verfahren Diese werden im Pipelining Verfahren verschickt verschickt Bevor ein neuer Block angefordert wird, werden erst fehlende Sub‐Blöcke fehlende Sub Blöcke von alten Blöcken angefordert von alten Blöcken angefordert ● Welches Paket wird als nächstes angefordert? ■ Æ Es müssen Ω(m log m) Peers teilnehmen, damit mit ( g ) , konstanter Wahrscheinlichkeit jeder Teil verfügbar ist ● Verteilt man m Teile auf m Peers,, ■ haben 1/e der Peers gar keine Teile ■ einige Peers O(log m) Teile g ( g ) ■ Zufällige Auswahl genügt nicht ■ Î Coupon Collector Problem Dominic Battré ‐ P2P Netzwerke 26 Coupon Collector’s Problem ● ● ● ● 20.06.2009 Dominic Battré ‐ P2P Netzwerke ● Æ Ungleichgewicht 27 20.06.2009 Dominic Battré ‐ P2P Netzwerke 28 BitTorrent: Details BitTorrent: Tit for Tat ● Welches Paket wird als nächstes angefordert? ● Wie verhindere ich, dass jemand nicht weiterverteilt? ● Grundsätzliche Idee: ■ "Random First Piece": Erstes Paket wird zufällig gewählt ♦ Um schnell an Daten zum Weiterverteilen zu kommen ♦ Sobald erstes Paket vollständig, wechsel zu Rarest First ■ Ich schicke nur denen etwas, die auch selbst etwas , weiterverteilen ■ "Rarest First": Paket, welches am wenigsten repliziert ist unter den bekannten Peers ■ "Endgame Mode": Am Ende alles von überall anfordern 20.06.2009 Dominic Battré ‐ P2P Netzwerke ● Probleme: ■ Peers, die noch nichts zum Verteilen haben ■ Peers, die eine schlechte Anbindung haben, und von denen , g , daher niemand etwas runterladen möchte ■ Woher bekomme ich die Informationen? 29 20.06.2009 BitTorrent: Choking ● Problemstellung: Multicast, d.h. Verteilung von Daten an eine große Empfängergruppe ß f ● IP‐Level Multicast wäre optimal ● hat sich aber nicht durchgesetzt hat sich aber nicht d rchgeset t ● Daher: Application‐Level Multicast ● Mit P2P gut zu realisieren Mit P2P gut zu realisieren ● Prinzip: Baumförmige Struktur aufbauen ● Probleme: Fairness sowie gute Ausnutzung der vorhandenen Probleme: Fairness sowie gute Ausnutzung der vorhandenen Kapazitäten ● Lösungen: Daten in mehrere Teile zerhacken, für jeden Teil eigenen Baum aufbauen ● Systeme: Scribe, SplitStream, BitTorrent ■ 20 sec. rollierender Durchschnitt ● Alle 10 sec. werden die aktiven Verbindungen neu gewählt ■ wegen TCP ramp g p up p ● Zusätzlich: Ein "Optimistic Unchoke" ■ Eine zufällige Verbindung wird aktiviert ■ Für neue Peers und solche mit schlechter Upload‐Bandbreite Für neue Peers und solche mit schlechter Upload Bandbreite ■ Rotiert alle 30 sec. ● Wenn keine Pakete mehr ankommen ■ Mehr als ein Optimistic h l Unchoke h k ● Wenn Download komplett ■ Wähle aktive Peers mit höchster erzielbarer Upload‐Rate Dominic Battré ‐ P2P Netzwerke 30 Zusammenfassung ● Eine Verbindung kann aktiv oder passiv sein (choking, keine Anfragen werden beantwortet) werden beantwortet) ● Es sind immer nur 4 Verbindungen aktiv (unchoking) ● 3 werden über die besten Download‐Raten bestimmt 20.06.2009 Dominic Battré ‐ P2P Netzwerke 31 20.06.2009 Dominic Battré ‐ P2P Netzwerke 32 Inhalt ● Sicherheit ■ Grundlagen ■ Modell ■ Ziel Vorlesungg P2P Netzwerke ● Vergabe von Node Vergabe von Node‐ID's ID s ● Sicheres Befüllen von Routing‐Tabellen ● Sicheres Routing Sicheres Routing 11: Sicherheit Dr. Dominic Battré Complex and Distributed IT‐Systems dominic battre@tu berlin de dominic.battre@tu‐berlin.de ■ Fehler‐Test für das Routing ■ Redundantes Routing Redundantes Routing 01.07.2009 Sicherheit: Grundlagen Symmetrische und asymmetrische Kryptographie Public‐Key Verfahren Digitale Unterschriften Zertifikate CA‐Hierarchien ● Es gibt aber zusätzliche Problemen gegenüber Client/Server Systemen y ● Das ist Thema dieser Vorlesung: ■ Spezifische Sicherheitsprobleme von P2P Netzwerken Spezifische Sicherheitsprobleme von P2P Netzwerken 01.07.2009 Dominic Battré ‐ P2P Netzwerke 2 Literatur ● In P2P können alle bekannten Sicherheits‐Technologien zum Einsatz kommen: ■ ■ ■ ■ ■ Dominic Battré ‐ P2P Netzwerke 3 ● Emil Sit and Robert Morris: "Security Considerations for Peer‐to‐Peer Distributed Hash Tables", 1st International Workshop on Peer‐to‐Peer Systems, 2002. ● John R. Douceur: "The Sybil Attack", 1st International J h R D "Th S bil Att k" 1 t I t ti l Workshop on Peer‐to‐Peer Systems, 2002. ● Miguel Castro, Peter Druschel, Ayalvadi Miguel Castro Peter Druschel Ayalvadi Ganesh, Antony Ganesh Antony Rowstron, Dan S. Wallach: "Secure routing for structured p peer‐to‐peer overlay networks", Proc. of the 5th Usenix p y , Symposium on Operating Systems Design and Implementation, 2002. ● Nikita Borisov: "Computational Puzzles as Sybil Defenses", Sixth IEEE International Conference on Peer‐to‐Peer Computing 2006 Computing, 2006. 01.07.2009 Dominic Battré ‐ P2P Netzwerke 4 Modelle Modell ● System mit N Knoten ● Anteil von 0 ≤ f ≤ 1 bösen Knoten ● Böse Knoten verhalten sich beliebig und operieren in Böse Knoten verhalten sich beliebig und operieren in Koalitionen von max. cN Knoten. ● Allgemein: c ≤ f, wenn c Allgemein: c ≤ f, wenn c = f dann sind alle bösen Knoten f dann sind alle bösen Knoten eine große Koalition ● Unterscheide: Böse Gut Server (z.B. für Online‐ Banking) Internet Der eigene Rechner ■ Network‐Level Kommunikation ■ Overlay‐Level Kommunikation Overlay‐Level Kommunikation Client (z.B. das eigene ( B d i Notebook) 01.07.2009 ● Grund‐Absicherung durch Kryptographie Dominic Battré ‐ P2P Netzwerke 5 01.07.2009 ● Ein bösartiger Knoten könnte Daten, für die er verantwortlich ist: ■ Modifizieren, Löschen, alte Kopien ausliefern, etc. ● Sicheres Vergeben von Knoten‐IDs ■ Verhindere, dass ein Angreifer seine Knoten‐ID selbst auswählen kann ● Er könnte geroutete Pakete löschen, ändern, etc. ● Daher: ● Sicheres Bestücken der Routing‐Tabellen ■ Stelle sicher, dass der Anteil von bösartigen Knoten in jeder Routing‐Tabelle nicht größer ist als der Anteil bösartiger Knoten im gesamten Netzwerk Sicheres Routing h ll h d h h d Sicheres Routing stellt sicher, dass eine Nachricht, die ein gutartiger Knoten an den Schlüssel k sendet, mit hoher Wahrscheinlichkeit alle gutartigen Replika‐ hoher Wahrscheinlichkeit alle gutartigen Replika‐ Knoten für k erreicht. Dominic Battré ‐ P2P Netzwerke 6 Schritte zum sicheren Routing sicheren Routing Was soll erreicht werden? 01.07.2009 Dominic Battré ‐ P2P Netzwerke ● Sicheres Weiterleiten von Nachrichten ■ Stelle sicher, dass mindestens eine Kopie einer Nachricht jeden gutartigen Replika‐Knoten für einen Schlüssel erreicht 7 01.07.2009 Dominic Battré ‐ P2P Netzwerke 8 Angriffe I: Besetzen einer ID 01.07.2009 Dominic Battré ‐ P2P Netzwerke Angriffe II: Sybil 9 01.07.2009 Angriffe II: Sybil 10 Node‐ID Vergabe: Angriffe ● Ermöglicht: ■ ■ ■ ■ ■ Dominic Battré ‐ P2P Netzwerke ● Koalition besetzt bestimmtes ID‐Gebiet (inkl. aller Replika‐ Knoten) Zusammenhang des Netzwerkes stören Mehrheitsabstimmungen sabotieren g Anfragen im Netz beobachten Netzwerk absichtlich verlangsamen g DDoS Angriffe ■ Koalition kann dann ein bestimmtes Datenelement kontrollieren ● Koalition aus Knoten versucht, alle Einträge in der Routing‐ Tabelle eines Opfers zu füllen ■ Koalition kontrolliert dann sämtliche ausgehenden Nachrichten des Opfers (Eclipse‐Attacke) ● Sybil Attacken: Einzelner Knoten nimmt über viele virtuelle Knoten unter vielen IDs am Netzwerk teil ■ Gleiche Angriffe wie oben, aber auch ohne Koalition 01.07.2009 Dominic Battré ‐ P2P Netzwerke 11 01.07.2009 Dominic Battré ‐ P2P Netzwerke 12 Sichere Node‐ID Vergabe Abwehr der Sybil‐Attacke ● Externe Infrastruktur mit Certificate Authorities ● CA wählt eine zufällige Knoten‐ID ● Es wird ein Zertifikat erstellt mit: ● Ein Knoten könnte sich immer noch sehr viele Zertifikate mit vielen unterschiedlichen Knoten‐IDs besorgen i l hi dli h b ● Lösung 1: Zertifikate müssen bezahlt werden ● Lösung 2: Zertifikate an Objekte der realen Welt binden (Person, Lös ng 2 Zertifikate an Objekte der realen Welt binden (Person Organisation) ● Lösung 3: (umstritten, aber auch ohne Zertifikat möglich) Lösung 3: (umstritten, aber auch ohne Zertifikat möglich) ■ Öffentlichen Schlüssel des Knotens ■ ID des Knotens ■ IP‐Adresse des Knotens ● Einbindung der IP‐Adresse nötig ■ Sonst könnten Zertifikate zwischen unterschiedlichen Knoten getauscht werden, um sicherzustellen, dass der Knoten überall latenzmäßig lokal erscheint überall latenzmäßig lokal erscheint ■ Bereitet Schwierigkeiten bei DHCP ● Fälschung von IP Fälschung von IP‐Adressen Adressen Î Î Rückweg testen Rückweg testen 01.07.2009 Dominic Battré ‐ P2P Netzwerke 13 ■ ■ ■ ■ ■ ■ 01.07.2009 Computational Puzzles n(1), cn(1) 2 Puzzle: Zu gegebenem Y Zu gegebenem Y berechne X, s.d. H(X || Y) = Z und Z hat p führende Null‐Bits und Z hat p führende Null Bits 7 6 Dominic Battré ‐ P2P Netzwerke 14 Eclipse‐Angriff n(2): Sequenznummer cn(2): Challenge zur Seq.‐Nummer Challenge zur Seq Nummer rn(2): Zufallszahl 1 8 Ausgabe eines Challenge, dessen Beantwortung Rechenzeit kostet Muss regelmäßig wiederholt werden Verschwendet aber CPU‐Zeit Wie berücksichtige ich Heterogenität? Ab H t Aber: Heterogenität führt immer zu Angriffsmöglichkeiten ität füh t i A iff ö li hk it Beispiel: finde x, sodass SHA‐1(SHA‐1(ipaddr, x), nodeId) genau p führende Nullen hat dabei ist: dabei ist: cn(2) = H( 1 || n(1) || cn(1) || 3 || n(3) || cn(3) || rn(2) || c || cn(2)‐1 ) 3 4 n(3), cn(3) Die Challenges g werden periodisch p neu berechnet und ihre Aktualität ist für jeden Knoten nachprüfbar! 5 01.07.2009 Dominic Battré ‐ P2P Netzwerke 15 01.07.2009 Dominic Battré ‐ P2P Netzwerke 16 Routing‐Tabelle: Eclipse Attacke Beispiel ● Immer wieder Suche neuer Nachbarn aus den Nachbarlisten der aktuellen Nachbarn (insgesamt X Knoten) aktuellen Nachbarn (insgesamt X Knoten) ● Anteil böser Knoten ist f, Anteil guter ist g=1‐f ● Böser Knoten schickt nur böse Knoten als potentielle Nachbarn Böser Knoten schickt nur böse Knoten als potentielle Nachbarn ● Guten Knoten mit zufälligen Nachbarn schickt mit W‘keit f einen bösen Knoten und mit W’keit g einen guten Knoten ● Nach einer Runde Updates aller Routingtabelleneinträge enthält N h i R d U d t ll R ti t b ll i tä thält Tabelle eines guten Knoten nur noch Anteil von ● Versuche, die Links eines Peers auf böse Peers umzulegen ● Damit wird das echte Netz vor einem attackierten Peer verborgen, er sieht nur noch böse Peers g ● Das geht um so einfacher, je mehr Freiheiten ein Knoten hat, seine Nachbarn auszuwählen: , ■ Gnutella: Nachbarn können beliebig gewählt werden ■ Pastry: Nachbarn können eingeschränkt gewählt werden y g g ■ Chord: Nachbarn sind vollständig determiniert ■ g*g guter Knoten und ■ f * 1 + g * f = f * (1+g) böser Knoten ● Der Anteil guter Knoten ist also von g auf g² gesunken! ● Î Der Anteil böser Knoten ist jetzt deutlich größer! D A t il bö K t i t j t t d tli h öß ! ● Beispiel: 90% gutartiger Knoten wird zu: ● Dementsprechend ist Gnutella Dementsprechend ist Gnutella am anfälligsten am anfälligsten ■ 81%, 66%, 43%, 19%, 3% 81%, 66%, 43%, 19%, 3% 01.07.2009 Dominic Battré ‐ P2P Netzwerke 17 01.07.2009 ● Je beschränkter die Routing‐Tabelle, desto schwerer der Angriff ● Beispiel: Bei Chord l h d gibt es für jeden Eintrag der Routing‐Tabelle b f d d b ll nur einen passenden Knoten ● Daher ist Chord Daher ist Chord per se gut gewappnet per se gut gewappnet ● Diese Abwehrstrategie verhindert aber PNS ● Lösung: Zwei Routing‐Tabellen ● Einfache, aber teure Methode: ■ Sicheres Routing nutzen, um Einträge neu zu füllen ● Menge von Boot‐Knoten verwenden ■ Groß genug, dass mindestens ein gutartiger Knoten enthalten ist ● Routing‐Tabellen von allen Boot‐Knoten holen ● Jeden Slot mit dem besten Knoten füllen, der die d l d b f ll d d Bedingungen erfüllt ● Von diesen Knoten wiederum die Tabellen holen Von diesen Knoten wiederum die Tabellen holen ● Einträge dann eventuell durch bessere Knoten ersetzen ● Stabilisierung: St bili i ■ Eine beschränkte Tabelle ♦ pro Eintrag nur eine Möglichkeit ♦ In Pastry‐Knoten i, Eintrag auf Ebene l, Ziffer d: y , g , dichtester Knoten zu einer ID p mit p hat gemeinsames Präfix der Länge l mit i p hat Ziffer d an Position l+1 p hat die nächsten Ziffern wieder identisch mit i p hat die nächsten Ziffern wieder identisch mit i ■ Eine unbeschränkte Tabelle ■ Regelmäßige Kommunikation mit den Nachbarn ♦ Ausnutzung von Lokalität Dominic Battré ‐ P2P Netzwerke 18 Befüllen der beschränkten Routing Tabelle Routing‐Tabelle Routing‐Tabelle: Abwehr 01.07.2009 Dominic Battré ‐ P2P Netzwerke 19 01.07.2009 Dominic Battré ‐ P2P Netzwerke 20 Sicheres Routing Sicheres Routing: Lösung ● Die bisherigen Maßnahmen garantieren: ■ Jede beschränkte Routing‐Tabelle beinhaltet nur einen Anteil von f bösartigen Knoten ● Aber: ein bösartiger Knoten auf einer Route ist genug! Aber: ein bösartiger Knoten auf einer Route ist genug! ■ Er könnte behaupten, dass er der Root‐Knoten ist ■ Er könnte die Nachricht stillschweigend löschen Er könnte die Nachricht stillschweigend löschen ■ Er könnte sie an einen anderen (falschen) Knoten weiterleiten ● Wahrscheinlichkeit für erfolgreiches Routing: Wahrscheinlichkeit für erfolgreiches Routing: (1 (1‐f) f)h‐1 ■ h ist dabei die Anzahl Knoten auf dem Pfad ■ Verwende redundantes Routing ■ Es werden mehrere Kopien der Nachricht auf verschiedenen Es werden mehrere Kopien der Nachricht auf verschiedenen Routen an die unterschiedlichen Replika‐Knoten gesendet ■ Dies ist teuer, aber die Erfolgswahrscheinlichkeit ist höher ● Der Root‐Knoten selbst könnte bösartig sein ■ Verwendung von Replika‐Knoten 01.07.2009 Dominic Battré ‐ P2P Netzwerke ● Mit hoher W’keit soll mindestens eine Kopie der Nachricht jeden Replikaknoten des Zieles erreichen ● Zunächst Standard‐Routing nutzen (für Effizienz, d.h. A Ausnutzung von Lokalität) t L k lität) ● Der Root‐Knoten antwortet mit einer Menge von Replika‐ Knoten ● Jetzt wird ein Fehlertest angewendet ● Wenn der Fehlertest anschlägt: Wenn der Fehlertest anschlägt: 21 01.07.2009 Dominic Battré ‐ P2P Netzwerke Fehler‐Test für das Routing 22 Fehler‐Test für das Routing ● Wenn keine Antwort nach einem Timeout zurückkommt, antwortet der Test positiv ● Sonst: Eingabe für den Test ist der Ziel‐Schlüssel plus eine Menge von potentiellen Replika‐Knoten ● Beobachtung: B: Bösartiger Knoten B: Bösartiger Knoten G: Gutartiger Knoten Korrekte Menge von Replika‐Knoten ■ Die durchschnittliche Dichte von Knoten pro ID‐Distanz ist höher als die durchschnittliche Dichte von bösartigen Knoten B G B G GB G GG B G G B G ● Daher wird verglichen: h d l h ■ Dichte der Knoten in der Nachbarschaft des aktuellen Knoten ■ Dichte der Replika‐Knoten Di ht d R lik K t Von bösartigem Knoten zurückgelieferte Menge Di ht i t i l Dichte ist viel geringer i ● Wenn ein Knoten nur bösartige Knoten aus seiner Koalition zurückliefert ist die Dichte geringer als die normale Dichte zurückliefert, ist die Dichte geringer als die normale Dichte 01.07.2009 Dominic Battré ‐ P2P Netzwerke 23 01.07.2009 Dominic Battré ‐ P2P Netzwerke 24 Exkurs: Nonce Redundantes Routing I ● Nonce = Number used once, Schutz vor Replay Attacks Client ● p sendet r Nachrichten über verschiedene Nachbarn an das Ziel x. ● Jede Nachricht beinhaltet ein nonce. ● Es wird nur die beschränkte Tabelle verwendet. ● Wenn ein Knoten die Nachricht erhält, x im LeafSet Wenn ein Knoten die Nachricht erhält, x im LeafSet enthält, enthält, schickt er sein NodeId‐Zertifikat und das nonce, unterschrieben mit seinem Privaten Schlüssel, zurück. , ● Der Original‐Knoten sammelt die zu x dichtesten Node‐ID‐ Zertifikate in einer Liste N, aber nur wenn sie gültig , g g unterschieben sind. Alle stehen zunächst auf "Pending". Server getNonce() nonce login(username, cnonce, hash(cnonce+nonce+password)) token Quelle: Wikipedia 01.07.2009 Dominic Battré ‐ P2P Netzwerke 25 01.07.2009 Redundantes Routing II Dominic Battré ‐ P2P Netzwerke 26 Zusammenfassung ● Nach einem Timeout oder nachdem r Antworten kamen, sendet der Knoten die Liste N an jeden Knoten, der noch auf "Pending" steht und setzt ihn auf "Done". ● Jeder Knoten leitet die Originalnachricht an Nachbarn weiter, die nicht in der Liste stehen. Ansonsten sendet er eine Bestätigung, dass es keine weiteren Knoten gibt. Die neuen Knoten kommen auch auf die Liste. ● Wenn von jedem Knoten eine Bestätigung erhalten wurde, oder 3 Runden vorbei sind, wird aus N die Menge der Replika‐Knoten gebildet. lk b ld ● P2P hat besondere Sicherheitsanforderungen im Vergleich zu Client/Server ● "Standard"‐Sicherheitsmaßnahmen sind notwendig, aber g nicht hinreichend ● Man muss immer mit bösartigen Knoten rechnen g ● Das gesamte Netzwerk soll auch dann noch funktionieren, wenn ein gewisser Anteil der Knoten bösartig ist g g ● Typische Angriffe: ■ Sybil: Viele virtuelle Knoten Sybil: Viele virtuelle Knoten ■ Eclipse: Verdecken des Netzes durch bösartige Knoten ● Abwehrmaßnamen sind möglich, aber teuer Abwehrmaßnamen sind möglich aber teuer 01.07.2009 Dominic Battré ‐ P2P Netzwerke 27 01.07.2009 Dominic Battré ‐ P2P Netzwerke 28