Vorlesung P2P Netzwerke - Fachgebiet Komplexe und Verteilte IT

Transcription

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