Lezione 3
• Chord seconda parte
Sistemi P2P avanzati
Facciamo un piccolo test
• Quanti successori ha un ring nel protocollo Chord?
(m) (1) (log N) (nessun prec.)
• Considerate il protocollo Chord definito con (log
N) predecessori e 1 successore, dimostrare che il
protocollo è tollerante ai fallimenti
• Aumentando il numero di identificatori in un anello,
le performance del protocollo
(+) (-) (=) (nessun prec.)
Sistemi P2P avanzati
Lezione 3
• Dato l’anello in figura mostrare i passi della procedura lookup
da 56 a 38
• Mostrare la tabella dei finger del nodo 48
• Quanti messaggi impiega in genere la procedura lookup?
(2) (O(m)) (log N-1) (nessun prec)
m=6
nodi
Giustificare la risposta
1
8
risorse
56
54
51
48
21
42
Sistemi P2P avanzati
10
38
38
24
28 26
Outline
•
•
•
•
•
Chord Riepilogo
Join and Stabilization,
Failure and Replication (Leave)
Valutazione
Osservazioni e Conclusioni
Sistemi P2P avanzati
Chord: Ricapitolando
• Le chiavi sono mappate su un array circolare costituito da 2m
identificatori;
• Il nodo responsabile di una determinata chiave è il primo nodo che
la succede in senso orario;
• Ogni nodo n di Chord mantiene la connessione con r=log N
successori (successors) del nodo n più il predecessore
• Inoltre, ogni nodo conosce, al più, altri O(log N) w.h.p, nodi nel
sistema (fingers)
• In totale ogni nodo mantiene log N +1 + O(log N)=O(log N)
connessioni (whp)
nodi
1
• Costo lookup O(log N) msg (whp)
risorse
56
54
51
48
m=6
8
21
42
Sistemi P2P avanzati
10
38
38
24
26
32 30
Join e Stabilization
Crea Anello Vuoto
Join
n=N26,
n’=qualunque nodo attivo
Stabilize
n=N26
n=N21
Sistemi P2P avanzati
Join e Stabilization
• Altre operazioni periodiche ma utilizzate con
frequenza minore sono fix.finger e check.predecessor
Sistemi P2P avanzati
Chord: Join
• Abbiamo visto che la procedura join appena definita non
completa l’aggiornamento di tutti i link necessari.
• Al fine di aggiornare tutti i link del nodo sono necessari alcuni
runs di stabilize (che comprende inoltre la notify) e m (log N
whp) runs della procedura fix.finger (sia da parte del nodo che
ha effettuato la join sia da parte di altri nodi che devono
aggiornare uno dei finger al nuovo nodo)
– Chord non è simmetrico (Se un nodo n ha un finger su n’ non è detto
che n’ ha un finger su n)
• Non è possibile avvertire i nodi che devono aggiornare i fingers
• E’ inoltre necessario far migrare le risorse al nuovo
responsabile (il protocollo Chord non gestisce questo
problema e lo rimanda all’applicazione).
Sistemi P2P avanzati
Chord: Join
• La correttezza dei link al successore basta a
garantire la correttezza delle lookup
• Lazy Join
– Inizializza solo il successore
– Periodicamente verifica successore e predecessore
– Periodicamente (ma meno spesso) rinfresca il
contenuto della tavola dei finger
Sistemi P2P avanzati
Chord: Join e Lookup
• Cosa succede alla lookup a seguito di
operazioni di Join?
– L’operazione di Join è completamente terminata ->
nessun problema
– L’operazione di Join è parzialmente terminata -> la
lookup potrebbe essere rallentata
– L’operazione di Join è incompleta (puntatori errati
oppure le risorse si trovano in una posizione
inconsistente rispetto ai link nella rete) -> la
lookup potrebbe fallire
Sistemi P2P avanzati
Chord: Risultati Join
n
Vale il seguente lemma:
x
p
s
y
Se al tempo t esiste una path tra x ed y, allora per ogni
t’>t ci sara’ una path tra x ed y
Per induzione sul tempo.
Supponiamo che dopo t il nodo n effettua una join tra p e s due nodi nella
path da x a y. L’arco tra p ed s non viene toccato dalla join e quindi permane.
Supponiamo avvenga una stabilize.
Consideriamo il momento in cui il nodo p cambia successore (stabilize di p)
da s ad n. Questo avviene perchè p ha contattato s ed s gli ha detto di n.
Inoltre p<n<s.
Sistemi P2P avanzati
Chord: Risultati Join
n
x
p
s
y
s ha saputo di n ad un tempo precedente e questo può essere
avvenuto solo perchè s è stato un successore diretto di n (cioè
dopo la stabilize di n).
Per ipotesi induttiva se esisteva un path tra n ed s, esiste un path
tra n ed s in tutti gli istanti successivi.
In particolare nell’istante in cui p cambia il successore. Essendo
p<n<s il cambiamento del successore di p non influisce in alcun
modo sulla path tra p ed s.
Inoltre anche dopo il cambiamento esiste una path tra p ed s.
Sistemi P2P avanzati
Chord: Risultati Join
Tutti le path tra x ed y, che utilizzavano l’arco tra p ed s, erano
tali che p ed s erano interni ad x y. Ma tutti i nodi aggiunti
all’arco p s sono interni a p s ed a maggior ragione interni ad x
y.
Se un nodo è capace di risolvere una query, sarà sempre capace
di farlo in futuro
Ad un tempo prefissato dopo l’ultima join i puntatori al
successore saranno corretti per tutti i nodi
Sistemi P2P avanzati
Chord: Risultati Join
E’ possibile mostrare il seguente teorema:
Se ogni operazione di join è alternata con quella di
stabilizzazione, allora dopo un fissato tempo dall’ultima join i
puntatori al successore formano un ciclo su tutti i nodi della
rete.
Sistemi P2P avanzati
Chord: Risultati Join
E’ possibile mostrare il seguente teorema:
Se abbiamo una rete stabile con N nodi ed effettuiamo N join
alla rete, e se tutti i puntatori ai successori sono corretti, allora il
Lookup di una risorsa avrà necessità di O(log N) hops con alta
probabilità.
In altre parole se il tempo richiesto per aggiustare tutti i fingers è
minore del tempo richiesto dalla rete per raddoppiare in taglia
allora la lookup non viene asintoticamente rallentata.
Sistemi P2P avanzati
Chord: Risultati Join
Dim
Se utilizziamo i vecchi finger arriviamo in O(log N) hops al
vecchio predecessore della risorsa. Con alta probabilità tra due
vecchi nodi ci saranno al più O(log N) nuovi nodi.
Se i successori dei nuovi nodi sono corretti, in al più O(log N)
passi la risorsa sarà raggiunta.
Sistemi P2P avanzati
Chord: Failure and Replication
• Abbiamo detto che la correttezza del routing è garantita dal
fatto che ogni nodo conosce in ogni istante il proprio
successore
• Tuttavia questa invariante può essere compromessa dal fatto
che i nodi possono “cadere”
• Per migliorare la robustezza del protocollo ogni nodo utilizza
una lista di r successori (di solito r=log N)
• Quando il successore di un nodo n cade, n sostituisce tale
successore con la seconda entry nella tabella dei successori e
successivamente provvede a ricercare il successore r-esimo.
• In particolare, è possibile “rompere” il sistema solo se tutti e r i
successori di un nodo cadono quasi conteporaneamente
Sistemi P2P avanzati
Chord: Failure and Replication
• Assumiamo che r sia la probabilità che un nodo cade
all’istante t. La probabilità che r successori cadono
contemporaneamente è pr
• La presenza della tabella dei successori richiede
alcuni cambiamenti nel protocollo:
– La procedura stabilize si deve preoccupare di mantenere corretta la
tabella dei successori
• Il nodo n copia la tabella dei successori dal suo succesore s ignora
l’ultima entry e aggiunge in testa a tale tabella il proprio successore
s
• Quando qualche successore fallisce il nodo n contatta il primo
successore vivo s’ e successivamente ripristina la tabella dei
successori utilizzando la tabella di s’
Sistemi P2P avanzati
Chord: Failure and Replication
– E possibile inoltre modificare la procedura closest preceding
finger in modo da valutare oltre alla tabella dei fingers anche i
successori. (si ottengono miglioramenti ma il costo della
lookup rimane O(log N))
– Inoltre è necessario modificare la procedura lookup
(findsuccessor) che fallisce se incontra un successore down (la
procedura infatti viene rilanciata dopo un breve intervallo di
tempo, che dovrebbe servire a ripristinare il link al successore)
Sistemi P2P avanzati
Chord: Failure and Replication
Risultati
• Assumiamo che la lista dei successori è lunga
r=(log N)
• Teorema
– In una rete inizialmente stabile, se assumiamo che
ciascun nodo cade con probabilità ½, allora la lookup
sarà corretta
Dim
Affinchè la lookup sia corretta è necessario che l’anello
non sia rotto. L’anello si rompe con probabilità
(1/2)r=1/Nk se r= k log N
Sistemi P2P avanzati
Altamente
improbabil
Chord: Failure and Replication
Risultati
• Assumiamo che la lista dei successori è lunga
r=(log N)
• Teorema
– In una rete inizialmente stabile, se assumiamo che
ciascun nodo cade con probabilità ½, allora la lookup
impiega O(log N) msg
Dim sketch
Se ogni nodo è caduto con probabilità 1/2 , ogni due link ne
funziona almeno 1,
Se il finger di cui abbiamo necessità è caduto possiamo usare un
finger più corto: invece di dimezzare la distanza la riduciamo a
circa ¾ della distanza precedente. Ma log4/3 N = O(log N).
Sistemi P2P avanzati
Chord: Failure and Replication
• Consisten Hashing
– Il fatto che l’assegnazione degli ID avviene utilizzando consistent
hashing, non è possibile per un avversario creare dei nodi in una
posizione prefissata del ring.
• Non è possibile appropriarsi di una risorsa
• Non è possibile rompere l’anello utilizzando r nodi fittizi
• Siccome abbiamo visto che gli r successori di un nodo n cadono
contemporaneamente con bassissima probabilità è naturale pensare
a questi nodi per repliche delle risorse gestite dal nodo n.
– Altre possibilità
• Diverse funzioni hash
• Repliche in posizioni speculari (Es r repliche)
(ID, ID+2m/r mod 2m, ID+2 2m/r mod 2m, , ID+(r-1) 2m/r mod 2m)
Sistemi P2P avanzati
Chord: Leave
• Siccome il protocollo descritto finora è corretto anche in
caso di fallimenti per i nodi potremmo gestire la leave
come un fallimento, tuttavia è preferibile, per migliorare
le prestazioni del sistema, adottare alcuni accorgimenti,
quando un nodo si disconnette volontariamente dalla rete
– Il nodo che lascia la rete
• trasferisce le proprie risorse al suo successore
• Notifica ai propri vicini (predecessore e successore) che sta
uscendo dal sistema. In particolare comunica il predecessore
al suo successore e il successore al suo predecessore, in
questo modo i due vicini possono connettersi senza utilizzare
la stabilize/notify
Sistemi P2P avanzati
Chord: Realistic Analysis
• Il sistema appena descritto è un sistema dinamico
particolarmente difficile da analizzare analiticamente
(senza esemplificazioni). In particolare tutte le
dimostrazioni analizzate partono da una configurazione
stabile, tuttavia:
“a Chord ring will never be in a stable state;
instead, joins and departures will occur continuously,
interleaved with the stabilization algorithm. The ring
will not have time to stabilize before new changes
happen.”
Sistemi P2P avanzati
Chord: Valutazione
• lookup veloci in sistemi di grandi dimensioni
• Variazione contenuta del costo di lookup
• Robusto rispetto a molti fallimenti
• Gli esperimenti confermano i risultati teorici
Sistemi P2P avanzati
Chord: Valutazione
il costo è O(log N) come previsto dalla teoria
Average Messages per Lookup
la costante è 1/2
Sistemi P2P avanzati
Number of Nodes
Chord: Incorporating Geography
• Alcune tecniche:
– Geographic Layout: Usare un algoritmo per attribuire le
chiavi ai nodi in modo che nodi “fisicamente” vicini abbiano
identificatori simili. (Controindicazioni: Bilanciamento del
carico, Routing Hot Spots e Sicurezza);
– PNS(Proximity neighbor selection) La scelta dei vicini non
dipende solo dalla distanza fra i nodi sulla rete di overlay ma
è influenzata anche dalle distanze reali.
– PRS(Proximity routing selection) Durante la ricerca
l’algoritmo di routing non sceglie il successivo step basandosi
solo sulla distanza fra i nodi nella rete di overlay; considera
anche la distanza effettiva fra i nodi (in termini di RTT);
Sistemi P2P avanzati
Chord: Incorporating Geography
• Osservazioni:
– PRS e PNS sono i sistemi più usati,(sembra che PNS offre
prestazioni migliori di PRS);
– PRS e PNS partono dal presupposto che è possibile
conoscere il RTT con ogni altro nodo (non è fattibile, ma è
possibile ottenere delle stime a un costo relativamente basso);
Sistemi P2P avanzati
Incorporating geography: Chord
• Chord e PRS:
000
L’algoritmo di routing non va
semplicemente al nodo più vicino
111rete di110
alla destinazione sulla
overlay, ma
001ad esempio potrebbe
considerare i due nodi più vicini e scegliere quello con RTT
minore;
110
010
Le path-lenght si allungano ma rimangono O(log N);
101 passo la distanza
011
In particolare: ad ogni
fra il nodo destinazione
e il nodo corrente si riduce da
 a 3/4 
100
Nel caso peggiore la path lenght è quindi log4/3 2m.
Sistemi P2P avanzati
Incorporating geography: Chord
• Chord e PNS:
000
La finger table viene111
riempita considerando anche il RTT:
001
l’i-esimo finger del nodo n non è semplicemente il
‘‘responsabile’’ della chiave n+2i-1 ma è il nodo più
010chiavi
vicino(RTT) fra110
i nodi ‘‘responsabili’’ delle
nell’intervallo [n+2i-2, n+2i-1 ].
Anche in questo caso
le path-lenght si allungano ma rimangono
101
011
O(log n) (dimostrazione analoga alla precedente).
100
Anche usando simultaneamente PRS e PNS la lunghezza
asintotica delle path non varia;
Sistemi P2P avanzati
Conclusioni
• A differenza dei sistemi precedenti, Chord si adatta ad
ambienti dinamici (tipici dei sistemi P2P)
• Based on theoretical work (Consistent Hashing)
• Proximity-based routing
• Chord è uniforme (routing greedy è ottimale)
• Chord non è simmetrico
– Alcune procedure causano utilizzo di banda anche se non ci
sono cambiamenti nella rete
• La Join costa O(log2 N)
Sistemi P2P avanzati
Fine Lezione 3
Sistemi P2P avanzati
Scarica

Sistemi P2P avanzati