2x2 - Fachgebiet Komplexe und Verteilte IT Systeme

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