Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley Chord: A Scalable Peer-to-peer Lookup Service for Internet.

Slides:



Advertisements
Presentazioni simili
Metodi e Applicazioni numeriche nell’Ingegneria Chimica
Advertisements

Algoritmi e Strutture Dati
Ricorrenze Il metodo di sostituzione Il metodo iterativo
2. Introduzione alla probabilità
di Architetture Peer to Peer per la Gestione di Database Distribuiti
1 2. Introduzione alla probabilità Definizioni preliminari: Prova: è un esperimento il cui esito è aleatorio Spazio degli eventi elementari : è linsieme.
Algoritmi e Strutture Dati
Routing Crediti Parte delle slide seguenti sono adattate dalla versione originale di J.F Kurose and K.W. Ross (© All Rights Reserved)
RB-alberi (Red-Black trees)
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Realizzazione del file system
Alberi binari di ricerca
3. Processi Stocastici Un processo stocastico è una funzione del tempo i cui valori x(t) ad ogni istante di tempo t sono v.a. Notazione: X : insieme di.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie di analisi.
Algoritmi e Strutture Dati
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 29/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmo di Ford-Fulkerson
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 4 Ordinamento:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Capitolo 1 Unintroduzione.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 6 Il problema.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati (Mod. B)
Algoritmi e Strutture Dati (Mod. A)
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e strutture dati
Test di ipotesi X variabile casuale con funzione di densità (probabilità) f(x; q) q Q parametro incognito. Test Statistico: regola che sulla base di un.
Peer To Peer (o quasi) Gennaro Cordasco.
? Peer To Peer (P2P) Kademlia pastry can jxta napster fiorana
Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco Gennaro Cordasco
Algoritmi e Strutture Dati
Lezione 5. Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi Abbiamo detto abbastanza KoordeNeighbor of Neighbor routing (NON)
Ancora esercizi!!! Chernoff Bound allora
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi Abbiamo detto abbastanza KoordeNeighbor of Neighbor routing (NON)
Autori: I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger, M. F
Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi KoordeNeighbor of Neighbor routing (NON)
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Lezione 5 Domande: Laverage path length di Chord con 2^b identificatori e N=2^b nodi è (giustificare la risposta) Laverage path length di Chord con 2^b.
Errata Corrige. DHT Routing (Tapestry) Tabella di routing (base k=4, digit d=4) Consideriamo il nodo x con id (x 1, x 2, x 3, x 4 ): (1+x 1, *, *, *)
Domande Consideriamo un grafo di de bruijn con base k, ed N = k^b nodi, quale delle seguenti affermazioni è vera (giustificare la risposta) Il grado di.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
Modello dati ALBERO Albero: Albero: insieme di punti chiamati NODI e linee chiamate EDGES EDGE: linea che unisce due nodi distinti Radice (root): in una.
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Intelligenza Artificiale Algoritmi Genetici
Intelligenza Artificiale
P2P (o quasi): Peer To Peer (o quasi) Gennaro Cordasco.
Sistemi P2P avanzati Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco – –
Sistemi P2P avanzati Lezione 3 Chord seconda parte.
Sistemi P2P Facciamo un piccolo test Quanti successori ha un nodo nel protocollo Chord? (m) (1) (log N) (nessun prec.) Aumentando il numero di identificatori.
Sistemi P2P avanzati Lezione 4 Consisten Hashing Altri sistemi P2P uniformi F-Chord :-)
Sistemi P2P Facciamo un piccolo test Quanti successori ha un nodo nel protocollo Chord? (m) (1) (log N) (nessun prec.) Aumentando il numero di identificatori.
Sistemi Peer To Peer (P2P)
Presentazione del progetto di: Reti di calcolatori L-S Matteo Corbelli.
Reti L-S 2005 Servizio per la ricerca distribuita basato sul protocollo Rossi Daniele
Elementi di Informatica di base
Radix-Sort(A,d) // A[i] = cd...c2c1
Calcolo Parallelo e Distribuito
PARTE PRIMA: Reti Cablate
1 P2P e DHT - G. Ruffo Peer to Peer Computing e Distributed Hash Table (DHT) Giancarlo Ruffo Dipartimento di Informatica Università di Torino.
David Novak and Pavel Zezula GRUPPO 13 Decorte Andrea Giammarino Giuseppe.
Voronoi-Based K Nearest Neighbor Search for Spatial Network Databases
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Progetto di: Daniele De Angelis Corso di: Reti di Calcolatori LS Un sistema fault tolerance per protocollo Diffie-Hellman.
Overlay network strutturate per applicazioni peer to peer Lorenzo Castelli.
Transcript della presentazione:

Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan MIT and Berkeley Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications

Outline o Motivazioni o Consistent hashing o Chord o Valutazione delle prestazioni o Conclusioni e Discussioni

Motivazioni Come trovare dati in un sistema distribuito di File Sharing? o il Lookup è il problema fondamentale Internet Publisher Key=LetItBe Value=MP3 data Lookup(LetItBe) N1N1 N2N2 N3N3 N5N5 N4N4 Client ?

Solutioni Decentralizzate o Routing di messaggi (Freenet, Tapestry, Chord, CAN,…) Internet Publisher Key=LetItBe Value=MP3 data Lookup(LetItBe) N1N1 N2N2 N3N3 N5N5 N4N4 Client o matching esatto !?!?!

Routing o Definire una metrica (utile!!!!) o Mantenere basso il numero di hop o Mantenere bassa la dimensione della tabella di routing o Mantenere le caratteristiche in presenza di una variazione rapida del numero di nodi Per gli autori: o Chord: efficienza e semplicità

Chord Overview o Fornisce un servizio di lookup peer-to-peer: o Lookup(key) Indirizzo IP o Chord non memorizza dati o Come trova un nodo? o Come mantiene le tabelle di routing ? o Come gestisce lingresso e la uscita di nodi?

Caratteristiche di Chord o Efficiente: O(Log N) messaggi per lookup o N è il numero totale di nodi presenti o Scalabile: O(Log N) stati per nodo o Robusto: mantiene le performance anche in presenza di variazioni notevoli del numero di nodi. o Assume che non ci siano partecipanti maliziosi

Identificatori in Chord o spazio degli identificatori a m bit sia per le risorse (Chiavi) che per i nodi o identificatore di Chiave = SHA-1(Chiave) chiave=LetItBe ID=60 SHA-1 IP= ID=123 SHA-1 o identificatore di Nodo = SHA-1(indirizzo IP) o Entrambi sono distribuiti uniformemente o Come si associano gli ID di Chiave agli ID di nodo?

Consistent Hashing [Karger 97] o Una chiave (risorsa) è memorizzata nel primo nodo che segue in senso orario ID a 7-bit 0 IP= Chiave=LetItBe

Consistent Hashing

o Le funzioni Hash mappano chiavi in interi. o Sono utilizzate, ad es, per memorizzare dati in un pool di cache o Con p cache una possibile funzione è x -> ax+b (mod p) Cosa accade se varia p ? Se la usassimo in un sistema P2P ?

Consistent Hashing o In particolare se varia p: o è assicurato un Bilanciamento sul numero di dati per posizione o Molti dati devono cambiare posizione o Il numero di posizioni che un dato può potenzialmente raggiungere non è limitato

Consistent Hashing o Per definizione un Consistent Hashing deve godere di opportune proprietà: o Bilanciamento o Monotonicità o Spread o Carico

Consistent Hashing o Bilanciamento: Per ogni sottoinsieme V di posizioni (nodi) ed n dati, il numero di dati per ogni posizione è O(n/|V|) con alta probabilità. o Monotonicità: Se al variare di p le posizioni (i nodi) disponibili passano da V 1 a V 2 con V 1 V 2, la migrazione dei dati deve avvenire solo verso posizioni appartenenti a V 2, ma non a V 1.

Consistent Hashing o Spread: Al variare di p il numero di posizioni che un dato può assumere è limitato. o Carico: Al variare di p il numero di dati che una posizione accoglie è limitato.

Consistent Hashing o Funzioni Hashing Consistenti esistono ? Siano K(x) ed N(x) due funzioni casuali che hanno come codominio lintervallo [0,1). Definiamo la seguente funzione Hash: o Utilizziamo K(x) per mappare le chiavi o Utilizziamo N(x) per mappare i nodi La chiave i viene memorizzata nel nodo j se la differenza |K(i)-N(j)| è la minima su tutti i nodi j.

Consistent Hashing 0 1 o Bilanciamento ? o Monotonicità ? o Spread ? o Carico ?

Lookup o Supponiamo che ogni nodo ha informazioni su tutti gli altri o richiede informazini globali o Tabelle di routing O(N) o la Lookup O(1) Hash(LetItBe) = Dove è LetItBe? 90 ha 60 60

Chord: Lookup di Base Hash(LetItBe) = Dove è LetItBe? 90 ha o Ogni nodo conosce il successore o La Lookup O(N)

Tavola dei Finger o Ogni nodo conosce altri m nodi nellanello o la distanza cresce esponenzialmente

Tavola dei Finger o il Finger i del nodo n punta alla posizione n+2 i-1 o Se non cè, punta al nodo subito successivo

Tavola dei Finger

successor(1)=1 0 successor(2)=3 successor(6)=6 successor(9)=9 successor(10)=13 successor(14)= successor(0)=0

isuccnode isuccnode isuccnode

Algoritmo Lookup

isuccnode isuccnode isuccnode

Lookup o Vale la seguente proprietà: Per il protocollo Chord ad m bit in un qualunque intervallo di ID di ampiezza 2 m /N, il numero di ID di nodi atteso è 1 e O(log N) con alta probabilità

Lookup o E possibile mostrare il seguente teorema: Il numero di nodi che deve essere contattato per trovare un successore in una rete con N nodi è O(log N) con alta probabilità. A partire da questo risultato si può affermare che il numero di Hop necessari per effettuare una query è O(log N)

Lookup Supponiamo che il nodo n debba trovare il successore di k. Sulla dase dellalgoritmo viene prima cercato limmediato predecessore, chiamamolo p, di k e poi viene chiesto a p di cercare il successore di k A tale scopo il nodo n contatta il più vicino predecessore di k a lui noto. Supponiamo il nodo sia f n e sia li-esimo finger per n. Per definizione di finger, f è a distanza almeno 2 i-1 da n. Poichè l(i+1)-esimo finger di n supera k, n è a distanza al più 2 i da p ed f è a distanza al più 2 i-1 da p. La distanza tra il nodo che sta processando la query ed il predecessore p dimezza ad ogni passo.

Lookup o La Lookup impiega O(Log N) hop Lookup(19) 19

Lookup Poichè la distanza iniziale è al più 2 m, in m passi raggiungiamo p In log N passi la distanza tra il nodo che sta processando la chiave ed il nodo p si riduce a 2 m /N. Poichè le chiavi sono distribuite in maniera uniforme, il numero di chiavi in un intervallo di ampiezza 2 m /N è O(log N) con alta probabilità. Sono quindi necessari, con alta probabilità, altri O(log N) passi per raggiungere p e quindi il successore di p

Join o Processo in tre passi: o Inizializza tutti i finger dei nuovi nodi o Aggiorna i finger dei nodi esistenti o Trasferisci le chiavi dal successore ai nuovi nodi o lazy finger update: o Initializza solo i finger al nodo successore o Periodicamente verifica il successore ed il predecessore o Periodicamente rinfresca il contenuto della tavola dei finger

Joining the Ring - Step 1 o Inizializza la nuova tavola dei finger o individua un nodo nella rete o Chiedi al nodo di di cercare i finger del nuovo nodo o Raccogli i risultati Lookup(37,38,40,…,100,164)

Joining the Ring - Step 2 o Aggiorna i finger dei nodi esistenti o il nuovo nodo chiama una funzione di aggiornamento sui nodi esistenti o I nodi esistenti possono ricorsivamente aggiornare i finger di altri nodi N36 N60 N40 N5 N20 N99 N80

Joining the Ring - Step 3 o Trasferisci le chiavi dal successore al nuovo nodo o Vengono trasferite solo le chiavi nel range Copia le chiavi da 40 to

26.join(friend) -> 26.successor = stabilize -> 32.notify(26) 21.stabilize -> 21.successor=26 -> 26.notify(21) Join di un nodo

Analisi del protocollo Vale il seguente lemma: Se al tempo t esiste un arco tra p ed s, allora per ogni t >t ci sara un arco tra p ed s Per induzione sul tempo. Suppopniamo che dopo t avvenga una join. 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 da s ad a. Questo avviene perch è p ha contattato s ed s gli ha detto di a. Inoltre p<a<s.

Analisi del protocollo s ha saputo di a ad un tempo precedente e questo può essere avvenuto solo perch è s è stato un successore diretto di a. Per ipotesi induttiva se esisteva un arco (il successore) tra a ed s, esiste un arco tra a ed s in tutti gli istanti successivi. In particolare nell istante in cui p cambia il successore. Essendo p<a<s il cambiamento del successore di p non influisce in alcun modo sull arco tra a ed s. Inoltre anche dopo il cambiamento esiste un arco tra p ed s.

Analisi del protocollo Tutti gli archi 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 successare saranno corretti per tutti i nodi

Analisi del protocollo E possibile mostrare il seguente teorema: Se ogni operazione di join e ` 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.

Analisi del protocollo Se due nodi condividono il successore, uno dei due cambierà il puntatore al successore. Il suo nuovo successore sarà più vicino del nodo cui puntava in precedenza. Ogni operazione di stabilizzazione potrebbe richiedere al più n passi. Dopo n 2 passi siamo quindi certi che tutti i nodi puntano al successore ed i puntatori formano un unico ciclo con tutti i nodi.

Join di un nodo o E possibile mostrare il seguente teorema: Se abbiamo una rete stabile con N nodi ed effettuiamo N join alla rete, Se tutti i puntatori ai successori sono corretti, Allora il Lookup di una risorsa avrà necessità di O(log N) hops con alta probabilità.

Join di un nodo 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.

Gestione dei Fallimenti o I fallimenti dei nodi possono causare lookup scorretti Lookup(90) o 80 non conosce il corretto successore e quindi il lookup fallisce

Gestione dei Fallimenti o Usa la lista dei successori o Ciascun nodo conosce r successori o Dopo il fallimento si utilizza il primo successore rimasto o Si correggono i successori per garantire un corretto lookup o La lookup è corretta con alta probabilità o r può essere scelto in modo da rendere la probabilità di fallimento della lookup arbitrariamente piccola.

Valutazione o lookup veloci in sistemi di grandi dimensioni o Variazione contenuta del costo di lookup o Robusto rispetto a molti fallimenti o Gli Esperimenti confermano i risultati teorici

Costo del lookup o il costo è O(Log N) come previsto dalla teoria o la costante è 1/2 Number of Nodes Average Messages per Lookup

Implementazioni attuali o Libreria Chord: 3,000 linee di C++ o Include: o concurrent join/fail o Proximity-based routing o controllo di carico per nodi eterogenei o Resistente a spoofed node IDs

Pro o Based on theoretical work (consistent hashing) o Proven performance in many different aspects o with high probability proofs o Robust (Is it?)

Contro o NON semplice (confrontato con CAN) o join è complicato o richiede molti messaggi ed aggiornamenti o il meccanismo di aggiornamento leggero non è chiaro con che velocità converge o La tabella di Routing cresce con il numero di nodi o Il caso peggiore di lookup può essere molto lento