1x3 - Fachgebiet Komplexe und Verteilte IT Systeme

Werbung
Vorlesung
P2P Netzwerke
7: Gradoptimierte Netzwerke
7: Gradoptimierte Netzwerke
Dr. Dominic Battré
Complex and Distributed IT‐Systems
dominic battre@tu berlin de
dominic.battre@tu‐berlin.de
Inhalte der Vorlesung (vorläufig)
Einleitung
• 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
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
Anwendungen
• OceanStore
• BabelPeers
• Amazon
• Multicast
Dominic Battré ‐ P2P Netzwerke
2
Inhalt
● Gradoptimierte Netzwerke (Überblick)
■ Viceroy
■ Distance Halvingg
■ Koorde
02.06.2009
Dominic Battré ‐ P2P Netzwerke
3
Grad vs. Durchmesser
● Bisher meist O(log N) Grad und O(log N) Durchmesser
● Geht der Grad kleiner, ohne den Durchmesser zu erhöhen?
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
4
Netzwerke mit konstantem Grad
● Viceroy:
■ Dalia Malkhi, Moni Naor and David Ratajczak: "Viceroy: A Scalable and Dynamic Emulation of the Butterfly", ACM Symp. Principles of Distributed Computing, 2002
?
02.06.2009
Dominic Battré ‐ P2P Netzwerke
5
Viceroy
● Idee: Butterfly‐Graph als Basis für P2P Netzwerke nehmen
■ 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
6
Butterfly‐Graphen
Level 3
Level 2
Level 1
Level 1
Level 0
02.06.2009
Dominic Battré ‐ P2P Netzwerke
7
Viceroy Verbindungsstruktur
● Ein Ring mit allen Knoten
■ successor, predecessor
● Ein Ring pro Level
■ nextonlevel, prevonlevel
t l l
l l
● Butterfly‐Kanten
■ left: succ(l+1, s)
left: succ(l+1 s)
■ right: succ(l+1, s+1/2l)
■ up: succ(l‐1, s)
● 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"
02.06.2009
Dominic Battré ‐ P2P Netzwerke
8
Routing in Viceroy
● cur: Aktueller Knoten, x: Ziel
● Routing in 3 Phasen
● Phase 1: Gehe zu Level 1
■ Solange dem up‐Pointer folgen, bis cur.level = 1
● Phase 2: Nutzung der Butterfly‐Kanten
■ Wenn der right‐Pointer existiert und nicht zu weit zeigt
♦ Folge dem right‐Pointer
■ Wenn der left‐Pointer
d l f
existiert
♦ Folge dem left‐Pointer
■ Sonst mache mit Phase 3 weiter
Sonst mache mit Phase 3 weiter
● 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
Knotenankunft
● Wähle eine ID s zufällig
● In allgemeinen Ring einfügen
ll
f
■ Suche per Routing succ(s)
■ Passe Zeiger an (succ, pred, succ.pred, pred.succ)
Passe Zeiger an (succ, pred, succ.pred, pred.succ)
● Levelauswahl
■ 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
● In Level‐Ring einfügen
■ Schrittweise Suche über allgemeinen Ring
Schrittweise Suche über allgemeinen Ring
■ Passe Zeiger an (nextonlevel, predonlevel, etc.)
● Butterfly‐Kanten einfügen
■ 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)
02.06.2009
Dominic Battré ‐ P2P Netzwerke
10
Abschätzung von log(N)
● Sei d der Abstand zum Nachbarn
● Wenn d=1/N, gilt log(N)=‐log(d)
● Es gilt aber nur:
Es gilt aber nur:
■ 1/N2 ≤ d ≤ log(N)/N mit hoher Wahrscheinlichkeit
● Betrachte ‐log(d):
Betrachte ‐log(d):
■ 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))
● Daher gilt:
Daher gilt:
■ 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)
02.06.2009
Dominic Battré ‐ P2P Netzwerke
11
Prinzip der mehrfachen Auswahl
● 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
● Ziel:
■ Kleinstes Intervall ist 1/2N, größtes ist 2/N
■ Also Abweichung um max. Faktor 4 (konstant)
● Lösung: mehrfache Auswahl
■ Wähle bei der Knotenankunft zufällig ceil(log(N)) IDs
■ Positioniere den Knoten in der Mitte des größten Intervalls
02.06.2009
Dominic Battré ‐ P2P Netzwerke
12
Netzwerke mit konstantem Grad
● Distance Halving:
■ Moni Naor, Udi Wieder: "Novel Architectures for P2P Applications: the Continuous‐Discrete Approach", SPAA 2003
02.06.2009
Dominic Battré ‐ P2P Netzwerke
13
Distance Halving
● 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
14
Distance Halving
I2/2 0 2
I2/2 = 0.2
I1/2 = 0.15
0
(1+I1)/2 = 0.65
((1+I2)/2 = )/
0.7
I1=0.3 I2=0.4
K2 K3
Intervall von Knoten K1
K4,K5,K6
1
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
15
Routing in DH
● 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
■ 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:
O.B.d.A. sei J1 > I1
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 :
Ab diesem k sind beide Pointer auf dem gleichen Knoten. D.h. es werden max.
O (log N ) Schritte benötigt!
02.06.2009
Dominic Battré ‐ P2P Netzwerke
16
Routing in DH
Start
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
Routing in DH
1 Left‐Routing(Start, Ziel)
2
if Start und Ziel benachbart then
3
Leite Nachricht von Start nach Ziel
4
else
5
Neuer‐Start = Links‐Zeiger(Start)
g (
)
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
02.06.2009
Dominic Battré ‐ P2P Netzwerke
18
Alternative Routen
● Beobachtung: ■ 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:
■ 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
Netzwerke mit konstantem Grad
● Koorde:
■ 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
02.06.2009
Dominic Battré ‐ P2P Netzwerke
20
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
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
02.06.2009
1
1
0
1
0
1
1
Dominic Battré ‐ P2P Netzwerke
21
Koorde
J d Bitf l kann über
Jede Bitfolge
k
üb
Shuffle (‐Exchange) Operationen
in jede andere Bitfolge übersetzt
werden
Quelle: Mahlmann, Schindelhauer Peer‐to‐Peer
Peer
to Peer Netzwerke
Netzwerke
02.06.2009
Dominic Battré ‐ P2P Netzwerke
22
Der DeBruijn Graph
SE
100
S
S
010
000
001
SE
S
SE
SE
101
S
011
SE
S
S
110
SE
SE
111
Der Graph ist verbunden und hat konstanten Ein‐ und Ausgrad!
g
02.06.2009
Dominic Battré ‐ P2P Netzwerke
23
DeBruijn Graph als P2P Netz
● Knoten werden auf Ring angeordnet (wie Chord)
● Statt Chord‐Fingerzeigern werden DeBruijn‐Kanten eingesetzt
g
000
111
001
110
010
101
011
100
02.06.2009
Dominic Battré ‐ P2P Netzwerke
24
Imaginäre Knoten
●
●
●
●
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
02.06.2009
Dominic Battré ‐ P2P Netzwerke
25
Wohin zeigen die DeBruijn‐Kanten?
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
0
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+1)
02.06.2009
ergibt (2*x) mod 2m
Dominic Battré ‐ P2P Netzwerke
26
Wohin zeigen die DeBrujin‐Kanten?
● Mit hoher Wahrscheinlichkeit zeigen
2*x mod 2m
und
2*x + 1 mod 2m
auf den selben realen Knoten.
auf
den selben realen Knoten
● Daher nur eine DeBrujin Kante pro Knoten
02.06.2009
Dominic Battré ‐ P2P Netzwerke
27
Routing
● Jeder Knoten p kennt
■ Vorgänger
■ Nachfolger
■ Knoten 2*p mod 2m, bzw. Knoten, der dafür verantwortlich ist
● Datenzuordung wie bei Chord (Datum bei Nachfolger von ID gespeichert)
i h t)
● Routing zwischen 2m wird auf reale Knoten abgebildet
■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
28
Routing in Koorde
1
2
3
4
5
6
7
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)
Erklärungen:
n
k
successor
d
i
kshift
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
29
Imaginärer Startknoten
● Routing‐Schritte bisher:
■ 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:
durch n vorgegeben
02.06.2009
frei
i
0
0
1
1
0
1
0
1
k
1
0
1
0
1
1
1
0
Dominic Battré ‐ P2P Netzwerke
30
Koorde
15
0
1
14
2
13
3
12
4
11
5
10
6
9
8
02.06.2009
7
Dominic Battré ‐ P2P Netzwerke
31
Koorde
15
0
1
14
2
13
3
12
4
11
5
10
6
9
8
02.06.2009
7
Dominic Battré ‐ P2P Netzwerke
32
Koorde
15
0
1
14
2
13
3
12
4
11
5
10
6
9
02.06.2009
8
7
Dominic Battré ‐ P2P Netzwerke
33
Koorde
15
0
1
14
Route von 13 nach 12:
oute o 3 ac
2
13
Quelle kann sein:
1101 (13)
1101 (13)
1110 (14)
3
12
4
11
5
10
6
9
7
8
02.06.2009
Ziel ist ist
1100 (12)
Imaginäre Route:
1110 ‐> (SE) ‐> 1100
14 ‐> 12
Tatsächliche Route:
13 ‐> 9 ‐> 11 (‐> 13)
(
)
Dominic Battré ‐ P2P Netzwerke
34
Zusammenfassung
● 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
02.06.2009
Dominic Battré ‐ P2P Netzwerke
35
Herunterladen