Peer-to-Peer-Netzwerke Rolf Wanka Sommersemester 2007 10. Vorlesung 28.06.2007
[email protected] basiert auf einer Vorlesung von Christian Schindelhauer an der Uni Freiburg
Peer-to-Peer-Netzwerke
Inhalte • Kurze Geschichte der Peer-to-PeerNetzwerke • Das Internet: Unter dem Overlay • Die ersten Peer-to-Peer-Netzwerke – Napster – Gnutella
• • • •
CAN Chord Pastry Gradoptimierte Netzwerke – Viceroy – Distance-Halving – Koorde
• Netzwerke mit Suchbäumen – Skipnet und Skip-Graphs – P-Grid
• Selbstorganisation – Pareto-Netzwerke – Zufallsnetzwerke
• Sicherheit in Peer-to-PeerNetzwerken • Anonymität • Datenzugriff: Der schnellere Download • Peer-to-Peer-Netzwerke in der Praxis – eDonkey – FastTrack – Bittorrent
• Peer-to-Peer-Verkehr • Juristische Situation Peer-to-Peer-Netzwerke 2
Pastry und PAST • Peter Druschel – Rice University, Houston, Texas
• Antony Rowstron – Microsoft Research, Cambridge, GB
entwickelten in Cambridge bei Microsoft Research: • Pastry: – Scalable, decentralized object location and routing for large scale peer-topeer-network
• PAST: – A large-scale, persistent peer-to-peer storage utility
• Zwei Namen, ein Peer-to-Peer-Netzwerk – PAST ist eine Anwendung auf Pastry – Hier wird einheitlich der Name Pastry verwendet
Peer-to-Peer-Netzwerke 3
Pastry: Überblick • Jeder Peer hat eine128-bit ID: Node-ID – Eindeutig und gleichmäßig verteilt – z.B. durch Hash-Funktion, angewandt auf IP-Adresse
• Routing – Die Schlüssel werden auf {0,1}128 abgebildet – Gemäß einer Metrik werden Nachrichten zum nächstgelegenen Nachbarn weitergereicht
• Routing-Tabelle hat O(2b (log n)/b) + ℓ Einträge – n: Anzahl der Peers – b, ℓ: Konfigurationsparameter, • b: Wortlänge, typisch: b = 4 (Basis 16), also Node-ID 8 „Buchstaben“ • ℓ = 16, Auslieferung ist garantiert, falls nicht mehr als ℓ/2 Knoten ausfallen
• Einfügen von Peers benötigt O((log n)/b) Nachrichten Peer-to-Peer-Netzwerke 4
Pastry: Routing-Tabelle • Node-ID wird zur Basis 2b dargestellt, – z.B. Node-ID: 65a1ba13
• Für jedes Präfix p und jeden Buchstaben y ∈ {0,..,2b-1} von Node-ID wird ein Repräsentant der Form py* eingetragen Beispiel: b=4, damit ist 2b=16 also 15 Einträge für 0*,1*, .. F* 15 Einträge für 60*, 61*,... 6F* ... Existiert kein Repräsentant, wird nichts eingetragen
• Bezüglich einer Metrik wird immer der nächstgelegene Repräsentant gewählt – Die Metrik resultiert auf den wechselseitigen Latenzzeiten zwischen den Knoten
• Zusätzlich werden ℓ Nachbarn gemäß der Node-ID gespeichert (sog. leaf set) – ℓ/2 mit nächst größerer ID und – ℓ/2 mit nächst kleinerer ID
Peer-to-Peer-Netzwerke 5
Pastry: Routing-Tabelle • Beispiel: b=2, ℓ=4, Node-ID=001 • routing table: Für jedes Präfix p und jeden Buchstaben y ∈ {0,..,2b-1} von Node-ID wird ein Repräsentant der Form py* eingetragen • leaf set: Zusätzlich werden ℓ Nachbarn gemäß der Node-ID gespeichert – ℓ/2 mit nächst größerer ID und – ℓ/2 mit nächst kleinerer ID
• Beobachtung: – Schon durch die leaf set werden die Zielknoten immer gefunden
• Lemma Mit hoher Wahrscheinlichkeit sind höchstens O(2b (log n)/b) Einträge in jeder Routing-Table
Peer-to-Peer-Netzwerke 6
Pastry: Routing-Tabelle Lemma Mit hoher Wahrscheinlichkeit sind höchstens O(2b (log n)/b) Einträge in der Routing-Table
Beweis – Die Wahrscheinlichkeit, daß ein Peer ein bestimmtes m-stelliges Präfix bekommt, ist 2-bm
– Mit hoher Wahrscheinlichkeit ist also kein Peer mit dem gleichen Präfix der Länge (c+2)(log n)/b vorhanden – Damit gibt es (c+2)(log n)/b Zeilen mit jeweils 2b-1 Einträgen □
– Die Wahrscheinlichkeit, daß ein bestimmtes m-stelliges Präfix im Netzwerk vorkommt, ist höchstens n 2-bm – Für m=(c+2) (log n)/b ist dies n-c-1
Peer-to-Peer-Netzwerke 7
Routing - im Prinzip • Zuerst wird durch Hash-Funktion die Zieladresse berechnet • Befindet sich die Zieladresse innerhalb der ±ℓ/2 -Nachbarschaft, – wird direkt dorthin ausgeliefert – oder das Fehlen des Ziel-Peers wird festgestellt
• Ansonsten wird in der Routingtabelle die Adresse mit gemeinsamem Präfix gesucht und • dorthin wird die Nachricht weitergeleitet • Zusätzlich wird eine Menge M von nahen Knoten unterhalten, diese werden hinsichtlich der Latenzzeit im Internet optimiert Peer-to-Peer-Netzwerke 8
Pastry: Routing im Detail • L: • R: • M:
ℓ -Nachbarschaft Routing-Table Knoten in der Nähe von D (gemäß Latenzzeit)
• D:
Zieladresse, an der der Schlüssel liegt Node-ID des aktuellen Peers
• A: • Ri ℓ : • Li: • Dℓ : • shl(A):
ℓ-te Zeile und i-te Spalte der Routing-Tabelle Numerierung der ℓ-Nachbarschaft ℓ-te Ziffer von D Länge des gemeinsamen Präfix von A und D in Ziffern
Peer-to-Peer-Netzwerke 9
Pastry: Routing - Diskussion • Falls Routing-Tabelle korrekt ist, – benötigt das Routing im Erwartungswert O((log n)/b) Nachrichten
• Solange leaf set korrekt ist, – benötigt das Routing im worst-case O(n/ℓ) Nachrichten – Tatsächlich ist es aber wesentlich schneller, da selbst eine defekte RoutingTabelle erhebliche Beschleunigung bringt
• Routing berücksichtigt nicht die wahren Abstände – M wird nur benutzt, falls Fehler in der Routing-Tabelle vorliegen – Durch Ausnutzung der Lokalität sind Verbesserungen möglich
• Daher verwendet Pastry Heuristiken zur Verbesserung der Latenzzeit – Diese werden in den besonders teuren letzten Hops angewendet Peer-to-Peer-Netzwerke 10
Pastry: Einfügen eines Peers • Neuer Knoten X sendet Nachricht an Knoten Z mit längstem gemeinsamen Präfix p • X erhält – Routingtabelle von Z – Nachbarschaftsmenge von Z
• Z aktualisiert Nachbarschaftsmenge • X informiert ℓ-Nachbarschaft • X informiert Peers in Routing-Tabelle – mit gleichem Präfix p außerhalb der ℓ-Nachbarschaft (falls ℓ/2 < 2b)
Aufwand für Einfüge-Operation: – ℓ Nachrichten an Nachbarschaft – Erwartet (2b - ℓ/2) Nachrichten an Knoten mit gemeinsamen Präfix – Eine Nachricht an Knoten Z mit Antwort Peer-to-Peer-Netzwerke 11
Pastry: Wenn das Einfügen versagt • Die Übernahme der Nachbarschaftsmenge vom nächstgelegenen Peer reicht im allgemeinen nicht • Beispiel: – Falls kein Peer mit 1* vorhanden ist, müssen alle anderen Peers auf den neuen Knoten zeigen – Einfügen von 11: – 03 kennt aus Routing-Table • 22,33 • 00,01,02
– 02 kennt aus Leaf-Set • 01,02,20,21
• 11 kann nicht alle notwendigen Links veranlassen
Peer-to-Peer-Netzwerke 12
Ende der 10. Vorlesung
Peer-to-Peer-Netzwerke
Peer-to-Peer-Netzwerke