1x3 - Fachgebiet Komplexe und Verteilte IT Systeme

Werbung
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
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
?
● 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
2
Probleme mit DHTs
● 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
Dominic Battré ‐ P2P Netzwerke
3
Skip‐Listen
●
●
●
●
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
11.06.2009
G
I
L
X
Dominic Battré ‐ P2P Netzwerke
4
Skip‐Listen
● Elemente bekommen eine zufällige Höhe
● Zusätzliche Verzeigerung in jeder Höhe
A
I
A
A
D
C
D
11.06.2009
I
G
I
X
L
X
Dominic Battré ‐ P2P Netzwerke
5
Skip‐Listen
●
●
●
●
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
A
I
A
A
11.06.2009
D
C
D
I
G
Dominic Battré ‐ P2P Netzwerke
I
X
L
X
6
Skip‐Listen Æ Skip‐Graphs
● Idee: Durch weitere Verbindungen Zusammenhang stärken
Höhe
A
L
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
Routing
1
2
3
4
5
6
7
8
9
10
11
// 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
Skip‐Net: Num‐ID
0
A
L
0
C
G
0
C
0
A
0
A
11.06.2009
A
1
G
0
C
C
L
D
0
D
1
1
D
0
G
0
D
0
1
1
1
0
1
0
0
0
1
0
0
0
0
1
0
1
A
C
D
G
I
L
X
1
1
A
0
0
1
1
0
G
Dominic Battré ‐ P2P Netzwerke
L
1
L
0
I
0
1
I
1
I
X
L
X
1
X
9
In welche Ringe wird ein Knoten aufgenommen?
● 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
10
Routing nach numID
● A will an 0111 routen
Höhe
A
L
A
L
A
D
L
10
I
1
I
X
L
X
4
000
G
3
00
001
C
010
01
011
D
C
G
A
C
D
G
L
A
C
D
G
I
11
X
2
0
1
0
11.06.2009
Dominic Battré ‐ P2P Netzwerke
11
Routing nach numID
● Statusinformationen:
■ ringLvl (Anfangswert 0)
♦ Auf welchem Level bewegt sich die Nachricht?
■ startNode (Anfangswert nil)
♦ Bei welchem Knoten begann der Durchlauf im aktuellen Ring?
■ bestNode (Anfangswert nil)
♦ Welcher Knoten ist der bisher dichteste?
■ finalDestination (Anfangswert false)
♦ Hat die Nachricht bereits den Zielknoten erreicht?
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
// 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
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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
14
Hinzufügen von Knoten
● Ü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
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
● 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
Stabilisierung des Root‐Rings
● 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
16
Stabilisierung der höheren Ringe
● 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
■ 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
17
Aufwand
● Routing nach name ID:
■ O(log N)
● Routing nach num
g
ID:
■ O(log N)
● Intuition: ■ 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
18
Zusammenfassung
● 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
19
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
● 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
20
P‐Grid
● Grundidee:
■ 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
0
11.06.2009
1
0
0
1
1
0
1
0
1
1
1
0
0
1
0
1
Dominic Battré ‐ P2P Netzwerke
0
0
1
1
0
1
0
1
1
0
1
21
Aufbau von P‐Grid
Buckets mit jeweils gleichen Datenmengen
gleichen Datenmengen
0
0
0
0
1
1
0
1
0
0
Zugeordnete Peers
1
0
1
1
0
1
0
1
1
1
0
11.06.2009
1
Dominic Battré ‐ P2P Netzwerke
22
Routing in P‐Grid
● Die ID eines Peers ist seine eindeutige Kennung im Netz
■ Kennung hat nichts mit der Position im Baum zu tun
●
●
●
●
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
■ 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?
11.06.2009
Dominic Battré ‐ P2P Netzwerke
23
Routing in P‐Grid
Peer‐Identifikation
Datenschlüssel
1
0
: 2 Routing‐Tabelleneintrag
00
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
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
● Präfixrouting wie bei Pastry / Tapestry
● Pfade können aber beliebig lang werden
■ Maximale Routingtabellen‐Größe garantiert nicht mehr g
g
O(log N)
● 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
Dominic Battré ‐ P2P Netzwerke
25
Aufbau von P‐Grid
● Grundidee:
■ Knoten sind über unstrukturiertes Netz verbunden
■ Neuer Index (P‐Grid Struktur) wird über dieses Netz gelegt
● 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:
■ 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
11.06.2009
Dominic Battré ‐ P2P Netzwerke
26
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
● 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
● Kademlia
■ Fehlertollerant, parallele Lookups
● Viceroy, Distance Halving, Koorde
■ Gradoptimierte Netze
■ Interessante Ansätze, aber nicht praxistauglich
■ Wichtige Abfallprodukte
11.06.2009
Dominic Battré ‐ P2P Netzwerke
27
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
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
● Viceroy, Distance Halving, Koorde
■ Gradoptimierte Netze
■ Interessante Ansätze, aber nicht praxistauglich
■ Wichtige Abfallprodukte
Hashingg
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
Herunterladen