Vorlesung P2P Netzwerke - cit.tu

Werbung
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
Herunterladen