Chord: A Scalable Peer-to-Peer Lookup Protocol for Internet Applications Autori: I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger, M. F. Kaashoek, F. Dabek, H. Balakrishnan MIT and Berkley http://www.pdos.lcs.mit.edu/chord/
Chord: Obiettivi Load Balance Decentralization Scalability Availability Flexibility
Chord: Lookup Come trovare risorse in un sistema completamente decentralizzato? La lookup è semplicemente una operazione, a disposizione di tutti i peer di un sistema P2P, che data una chiave (una risorsa), restituisce il gestore/responsabile della risorsa. Possiamo vedere l’operazione lookup come una funzione (dinamica) che prende in input una chiave (un identificatore a 160 bit) e restituisce un indirizzo IP. Lookup(id)IP address
Chord: Lookup Come trovare risorse in un sistema completamente decentralizzato? N2 N3 N1 Publisher Key=“LetItBe” Value=MP3 data Internet N5 ? N4 Client Lookup(“LetItBe”) il Lookup è il problema fondamentale
Chord: Lookup N2 N3 N1 N5 N4 DHTs (Tapestry, Pastry, Chord, CAN,…) Qual’è il modo migliore di realizzare il servizio di lookup? N2 N3 N1 Publisher Key=“LetItBe” Value=MP3 data Internet N5 N4 Client Lookup(“LetItBe”)
Chord Quale è il miglior modo per costruire le tabelle di routing? Come facciamo a mantenere sempre corrette le tabelle di routing in situazioni “molto” dinamiche? Come gestire l’ingresso (join) e l’uscita (leave) dei nodi? Quale è il miglior algoritimo di routing?
Chord: Consistent Hashing Fondamentalmente, l’architettura di Chord è basata su un ring di 2m identificatori [0, 2m-1] (di solito m = 160) Chord usa Consistent Hashing per assegnare identificatori sia ai nodi/peers sia alle risorse Consistent Hashing permette: bilanciamento del carico sui nodi (con N nodi e K risorse, ogni nodo gestisce circa (1+)K/N chiavi (risorse), dove =O(log N)) basso numero di operazioni di manutenzione a seguito di join/leave dei nodi (quando entra l’N+1th nodo nel sistema circa O(K/N) chiavi (risorse) devono cambiare posizione) Discuteremo in dettaglio Consistent Hashing nelle prossime lezioni
Chord: Overview La tabella di routing relativa alle risorse è distribuita su tutti i nodi attivi del sistema Per risolvere una lookup è necessario che i nodi si scambino informazioni Prestazioni: In una rete “stabile” di N nodi, ogni nodo mantiene informazioni relative a O(log N) vicini e risolve qualsiasi lookup con al più O(log N) messaggi Tuttavia anche se la rete non è “stabile” con poca informazione (1 solo link) il protocollo Chord garantisce la correttezza della lookup
Chord: Identificatori Lo spazio degli identificatori a m bit è utilizzato sia per le risorse che per i nodi identificatore di Chiave = SHA-1(Risorsa) identificatore di Nodo = SHA-1(indirizzo IP) chiave=“LetItBe” ID=60 SHA-1 IP=“198.10.10.1” ID=123 SHA-1
Chord: Identificatori Gli identificatori ottenuti utilizzando Consistent Hashing vengono mappati su un ring circolare modulo 2m 000000 m=6 111000 001000 110000 010000 101000 011000 100000
Chord Il responsabile di una risorsa x con ID k è il primo nodo che si incontra procedendo in senso orario a partire da k. m=6 nodi 1 risorse 8 56 10 54 14 51 48 21 42 38 24 38 30 32
Chord Esempio leave (nodo 14) 1 8 56 10 54 14 51 48 21 42 38 24 38 30 nodi 1 risorse 8 56 10 54 14 51 48 21 42 38 24 38 30 32
Chord Esempio join (nodo 26) 1 8 56 10 54 51 48 21 42 38 24 38 26 30 nodi 1 risorse 8 56 10 54 51 48 21 42 38 24 38 26 30 32
Chord: Lookup Ogni nodo ha informazioni su tutti gli altri Supponiamo che il nodo 8 è interessato alla chiave 54: poiché il nodo 8 conosce tutti i nodi, è in grado di sapere senza fare nessuna richiesta che la chiave 54 è gestita dal nodo 56 Richiede info globali Tabella di routing N Costo lookup O(1) msg Manutenzione: Praticamente ingestibile!!! m=6 nodi 1 risorse 8 56 10 54 51 48 21 42 38 24 38 26 30 32
Chord: Lookup(2) Ogni nodo conosce solo il proprio successore Supponiamo che il nodo 8 è interessato alla chiave 54: ogni nodo conosce solo il proprio successore e quindi la query attraversa l’anello in senso orario finché non raggiunge il predecessore della destinazione Richiede poche info: Tabella di routing 1 entry Costo lookup O(N) msg m=6 nodi 1 risorse 8 56 10 54 51 48 21 42 38 24 38 26 30 32
Simple Key location Il nodo n chiama lookup(id) Il nodo 8 chiama lookup(54)
Chord: Correttezza Routing Ogni nodo n di Chord mantiene log N successori del nodo n più il predecessore Questo insieme di nodi viene usato per dimostrare la correttezza del Routing nodi 1 risorse 8 56 10 54 51 21 38 24 38
Chord: Lookup(3) Ogni nodo conosce, al più, altri m nodi nel sistema (fingers) Mostreremo che w.h.p. il numero di finger è O(log N) La distanza fra i finger cresce esponenzialmente In particolare, il finger i del nodo n connette il nodo al responsabile (successor) della chiave n+2i-1 m=6 nodi 1 risorse 8 56 10 54 51 48 21 42 38 24 38 26 30 32
Chord: Ricapitolando Ogni nodo n di Chord mantiene la connessione con 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 m=6 nodi 1 risorse 8 56 10 54 51 48 21 42 38 24 38 26 30 32
Tavola dei finger m=6 Successors Predecessor Nodo 1 indice Nodo 1 14 2 21 4 32 5 38 6 42 3 24 ID Resp. 8+1=9 14 8+2=11 8+8=16 21 8+16=24 24 8+32=40 42 8+4=12 Predecessor Nodo 1 m=6
successor(0)=0 1 14 successor(1)=1 15 1 successor(14)=15 2 successor(2)=3 14 10 2 13 3 12 4 5 11 6 10 successor(6)=6 successor(10)=13 6 7 9 8 successor(9)=9 9
Qualcuno vuol provare a descrivere la tabella di routing del nodo 9? 1 14 15 1 i succ node 1 2 3 5 6 4 9 2 14 10 i succ node 1 14 15 2 3 4 5 6 2 13 3 Qualcuno vuol provare a descrivere la tabella di routing del nodo 9? 12 4 i succ node 1 10 13 2 11 3 4 5 11 ? ? ? ? 6 10 ? ? ? ? 6 7 9 8 9
Il nodo n chiama lookup(id) Algoritmo Lookup Il nodo n chiama lookup(id)
14 15 1 2 14 i succ node 1 14 15 2 3 4 5 6 i succ node 1 2 3 5 6 4 9 13 3 12 4 i succ node 1 10 13 2 11 3 4 5 11 6 10 7 9 8
n’=qualunque nodo attivo Join e Stabilization Crea Anello Vuoto Join n=N26, n’=qualunque nodo attivo Stabilize n=N26 n=N21
Join e Stabilization Altre operazioni periodiche ma utilizzate con frequenza minore sono fix.finger e check.predecessor
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p.
Chord: Risultati Teorema Il numero dei nodi che deve essere contattato per risolvere una lookup è O(log N) w.h.p., Dim Supponiamo che il nodo n deve risolvere una lookup per l’id k Siano p e s, rispettivamente, il predecessore e il successore dell’ID k Se np e ns, n non è in grado di risolvere da solo la query p n k s
Chord: Risultati Teorema Il numero dei nodi che deve essere contattato per risolvere una lookup è O(log N) w.h.p. Dim … n contatta, quindi, il più vicino predecessore di k a lui noto (il più grande finger che non va oltre k). Sia i tale che p [n+2i-1, n+2i) Poiché tale intervallo contiene almeno un nodo (p) il nodo n contattera l’i-esimo finger f. Ovviamente tale nodo, ha ID minore o uguale di p. Per definizione di finger la distanza fra n e f è almeno 2i-1 f p n id s
Chord: Risultati Teorema Il numero dei nodi che deve essere contattato per risolvere una lookup è O(log N) w.h.p. Dim … Per definizione di finger la distanza fra n e f è almeno 2i-1 Inoltre f e p sono entrambi nell’intervallo [n+2i-1, n+2i), quindi la loro distanza è al più 2i-1 In altre parole, f è più vicino a p che a n, e quindi ad ogni hop la distanza nel caso peggiore si dimezza f p n id s
Chord: Risultati Teorema Il numero dei nodi che deve essere contattato per risolvere una lookup è O(log N) w.h.p. Dim …. Ad ogni hop la distanza nel caso peggiore si dimezza La distanza maggiore fra due ID è 2m-1, poiché tale distanza ad ogni hop si dimezza, in m hop siamo in grado di eseguire qualunque lookup f p n id s
Chord: Risultati Teorema Il numero dei nodi che deve essere contattato per risolvere una lookup è O(log N) w.h.p.. Dim Sappiamo che ad ogni hop la distanza, in termini di id fra sorgente e destinazione si dimezza. Supponiamo di effettuare log N hops, dopo questi passi la distanza dalla destinazione si riduce ad al più 2m / 2 logN = 2m/N. Sappiamo dal lemma precedente che in un tale intervallo ci sono al più O(log N) nodi w.h.p. Quindi effettuando altri O(log N) passi (anche usando solo i successori negli ultimi O(log N) passi) arriviamo alla destinazione. In totale log N + O(log N) = O(log N) passi.
La Lookup impiega O(log N) hop 5 10 110 20 19 99 32 Lookup(19) 80 60
Chord: Risultati Abbiamo detto che i nodi di Chord mantengono O(log N) informazioni relative ad altri nodi, d’altra parte abbiamo detto che un nodo può avere m fingers. In realtà, è possibile mostrare che non tutti gli m i finger sono nodi distinti. Quello che accade è che, w.h.p., i primi m-2logN finger cadono nell’intervallo che va dal nodo al suo successore. Infatti un lemma analogo a quello mostrato in precedenza permette di dimostrare che la distanza minima fra due nodi (w.h.p.) è almeno 2m/N2 Abbiamo detto che il finger i del nodo n cade nel successore dell’ID n+2i-1 Di conseguenza, per ogni i ≤ m - 2log N +1, il responsabile dell’ID n+2i-1 ≤ n+ 2m/N2 cade nel successore di n. In totale il numero dei nodi distinti che bisogna mantenere nella tabella di routing è m – (m - 2log N) = O(log N)
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 ed O(log N) w.h.p. Dim Abbiamo necessita di alcuni risultati intermedi: Disuguaglianza di Marcov Sia X una variabile casuale a valori positivi, allora per ogni a>0: E[X] a Pr[Xa]
Disuguaglianza di Marcov Sia X una variabile casuale a valori positivi, allora per ogni a>0: E[X] a Pr[Xa] Dim Proviamo per una variabile casuale discreta che assume valori da 1 a k (è il nostro caso):
Disuguaglianza di Marcov Sia X una variabile casuale a valori positivi, allora per ogni a>0: E[X] a Pr[Xa] Dim Proviamo per una variabile casuale discreta che assume valori da 1 a k (è il nostro caso):
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim Abbiamo necessita di alcuni risultati intermedi: Disuguaglianza di Marcov Chernoff Bound Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi, Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora
Chernoff Bound per ogni reale positivo t. Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi, Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora Dim per ogni reale positivo t. Se applichiamo la disuguaglianza di Marcov a destra si ottiene exp(x)=ex
Chernoff Bound Chernoff Bound Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi, Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora Dim … Poichè le Xi sono indipendenti, anche le exp(tXi) lo sono.
Chernoff Bound Chernoff Bound Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi, Pr[Xi=0]=1-pi con 0 < pi < 1.. Se allora Dim … La variabile exp(tXi) assume valore et con probabilità pi e 1 con probabilità 1-pi.
Chernoff Bound Chernoff Bound … Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi ,Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora Dim … La variabile exp(tXi) assume valore et con probabilità pi e 1 con probabilità 1-pi.
Chernoff Bound Chernoff Bound Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi, Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora Dim … Poichè 1+x<ex
Chernoff Bound Chernoff Bound Siano X1, X2, …,Xn prove ripetute indipendenti tali che per 1 ≤ i ≤ n, Pr[Xi=1]=pi,Pr[Xi=0]=1-pi con 0 < pi < 1. Se allora Dim … la espressione a destra assume il valore minimo per t=ln(1+δ). Sostituendo otteniamo il Teorema.
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim Abbiamo necessita di alcuni risultati intermedi: Disuguaglianza di Marcov Chernoff Bound Definiamo
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim E quindi per >2e-1,
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim La precedente relazione può essere utilizzata per risolvere il problema: Per quali valori di δ la probabilità che X>(1+δ)μ è trascurabile ?
Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim Modelliamo il nostro esperimento come il lancio di N palline in N contenitori. Sia Yi il numero di palline cadute nell’i-esimo contenitore. Siamo in presenza di prove ripetute indipendenti. La probabilità di successo pi=1/N. La media risulta banalmente 1. 2m/N
Altamente improbabile Chord: Risultati Lemma Dato un qualunque intervallo di ampiezza 2m/N, il numero di ID di nodi atteso in questo intervallo è 1 e O(log N) w.h.p. Dim La probabilità che il numero di palline in un contenitore sia k×log2 N è limitata dalla relazione Con δ = k × log2N -1. Sostituendo otteniamo Altamente improbabile 2m/N