1 / 24

Ricapitolando….

Ricapitolando…. Sistemi P2P puri. Sistemi Uniformi. Sistemi Non uniformi. Koorde. Neighbor of Neighbor routing (NON). Abbiamo detto abbastanza. Koorde. E’ un protocollo chord like ring consistent hashing per mappare le chiavi nei nodi De Bruijn graph diametro log n con grado costante

armen
Télécharger la présentation

Ricapitolando….

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ricapitolando…. Sistemi P2P puri Sistemi Uniformi Sistemi Non uniformi Koorde Neighbor of Neighbor routing (NON) Abbiamo detto abbastanza

  2. Koorde • E’ un protocollo chord like • ring • consistent hashing per mappare le chiavi nei nodi • De Bruijn graph • diametro log n con grado costante • APL O(log n / log(log n)) con grado O(log n)

  3. de Bruijn graph • Un de Bruijn graph ha un nodo per ogni numero binario di b bits • Ogni nodo ha due archi uscenti, in particolare il nodo m ha • un link al nodo 2m mod 2b; • un link al nodo 2m+1 mod 2b; • In altre parole dato un nodo m per ottenere i suoi due vicini basta fare lo shift a sinistra della codifica binaria di m (eliminando il bit più significativo) e poi aggiungere 0 e 1;

  4. de Bruijn graph 000 100 010 101 001 110 011 111 b=3 • Es.: supponiamo di voler conoscere i vicini del nodo 011 allora • facciamo lo shift a sinistra di 011 e otteniamo 0110; • eliminiamo il bit più significativo e otteniamo 110; • i due vicini sono quindi: • 110 + 0 = 110 • 110 + 1 = 111 • Denotiamo con m0 il primo vicino di m m1 il secondo vicino di m

  5. de Bruijn graph 000 100 010 b passi diametro = b = log n 101 001 110 011 111 b=3 • Routing • Supponiamo di voler passare dal nodo s=(s0,s1,…,sb-1) al nodo t=(t0,t1,…,tb-1) • passo 1: s → s1 = st0 s1 =(s1,s2,…,t0) • passo 2: s1→ s2 = s1t1 s2 =(s2,…, t0,t1) • passo 3: s2→ s3 = s2t2 s3 =(…, t0,t1,t2) • passo b: sb-1→ sb = sb-1tb-1 sb =(t0,t1,…, tb-1)=t

  6. de Bruijn graph 000 100 100 010 101 001 110 110 011 011 111 111 b=3 • Routing • Es.: b=3 vogliamo passare dal nodo 011 al nodo 100 • Passo 1: da 011 a 111 • Passo 2: da 111 a 110 • Passo 3: da 110 a 100

  7. de Bruijn graph m nodo sorgente k nodo destinazione La prima chiamata è m.lookup(k,k) 000 100 010 101 001 110 011 111 b=3 m.lookup(k,ks) if k=m return m else t=m  topbit(ks) return t.lookup(k,ks<<1)

  8. de Bruijn graph E’ difficile da guardare figuriamoci da implementare  000 111 001 010 110 011 101 b=3 100 000 100 primo vicino 010 101 001 secondo vicino 110 011 111 b=3

  9. de Bruijn graph 000 E se manca un nodo? E se ne mancano tanti? 111 001 b è di solito 160 (SHA) 2160 Gli indirizzi IP sono 232 010 110 011 101 b=3 100 • La maggior parte delle applicazioni usa un numero di nodi effettivo molto più piccolo di 2b. • Evitare collisioni nell’assegnare chiavi; • In generale il sistema deve poter evolversi (n deve poter variare).

  10. de Bruijn graph: Koorde Consideriamo ora un ring non completo Il nodo m ha due link ai nodi immaginari: 2m mod 2b 2m+1 mod 2b m b=160 • Aggiungiamo due ulteriori link per ogni nodo: • Un link al successore nell’anello • Un link al predecessore di 2m mod 2b Link a nodi effettivi

  11. Koorde 000 100 010 101 001 110 011 111 b=3 b=160 • La nuova procedura di routing, invece di attraversare i nodi del grafo di de Bruijn ne attraversa i predecessori; • 2 fasi • Cerca il predecessore di si • Passa al nuovo nodo si+1

  12. Koorde Abbiamo raggiunto la destinazione? Abbiamo raggiunto il predecessore del nodo immaginario? m.lookup(k,ks,i) if k (m, m.successor] return successor else if i (m, m.successor] return d.lookup(k,ks<<1, itopbit(ks)) else return m.successor.lookup(k,ks,i) d è il link al predecessore di 2m mod 2b m.lookup(k,ks) if k=m return m else t=mtopbit(ks) return t.lookup(k,ks<<1)

  13. Koorde m.lookup(k,ks,i) • if k (m, m.successor] return successor • else if i (m, m.successor] • return d.lookup(k,ks<<1, itopbit(ks)) • else • return m.successor.lookup(k,ks,i) Passiamo al nuovo nodo del grafo di de Bruijn Cerchiamo il predecessore del nodo immaginario? Il passo 3 viene eseguito al massimo b volte Quante volte eseguiamo il passo 5, vale a dire quanto impieghiamo per trovare il predecessore di un nodo immaginario?

  14. Koorde Lemma Il numero medio di passi, durante una operazione di lookup in Koorde è 3b Prova Nel passare dal nodo immaginario i al nodo immaginario itopbit(ks), ci muoviamo dal nodo m=predecessor(i) al nodo m.d (predecessor di 2m mod 2b) e poi ci spostiamo usando i successor pointer fino a raggiungere il predecessor del nodo immaginario itopbit(ks), Ogni hop su un grafo di de Bruijn si traduce in una path in koorde. Quanto è lunga questa path in media? Le frecce gialle sono b Quante sono le frecce verdi?

  15. Koorde 2i+1 2i 2m m i I nodi attraversati fra due frecce gialle sono i nodi che si trovano fra 2m e 2i+1 Quanti nodi ci sono nell’intervallo I =(2m,2i+1)? |I|=(2i-2m)/(2b/n) Sapendo che il valore atteso di i-m= 2b/n I(2*2b/n )/(2b/n) =2 In totale dunque per ogni freccia gialla vi sono in media 2 frecce verdi In totale 3b passi Distanza media fra due nodi 2b/n

  16. Koorde m.lookup(k,ks,i) • if k (m, m.successor] return successor • else if i (m, m.successor] • return d.lookup(k,ks<<1, itopbit(ks)) • else • return m.successor.lookup(k,ks,i) Poiché m è responsabile di tutti i nodi immaginari che vanno da m e m.successor è possibile migliorare ulteriormente l’algoritmo. La distanza fra m e il suo successore è con alta probabilità maggiore di 2b/n2

  17. Koorde Claim La distanza fra m e il suo successore è con alta probabilità maggiore di 2b/n2 Prova (Sketch) Fissato un nodo la probabilità che un altro nodo qualsiasi sia più vicino di 2b/n2 è (2b/n2)/2b= 1/n2. La probabilità che nessuno degli altri n-1nodi sia più vicino di 2b/n2 è (1-1/n2)n-1>1-1/n. Distanza media 2b/n Distanza 2b/n2

  18. Koorde Abbiamo dimostrato che la distanza fra m e il suo successore è con alta probabilità maggiore di 2b/n2 Questo significa che il nodo m è responsabile di nodi immaginari con tutte le possibili combinazioni degli ultimi log(2b/n2)= b-2logn bit. Scegliendo come nodo immaginario iniziale il nodo che ha gli ultimi b-2logn bit uguali a i primi b-2logn del nodo destinazione, dobbiamo effettuare alla fine soltanto (b-(b-2logn))*3 passi = 6logn passi circa.

  19. Koorde • Koorde (base 2) • Ha APL O(log n) con grado costante • Si può dimostrare che anche il diametro è con alta probabilità (WHP) O(log n). • Koorde (base k) • Utilizziamo i grafi di de Bruijn base k • Scegliamo k = log n

  20. de Bruijn graph base k 000 100 010 101 001 110 011 b=3 k=2 111 Diametro O(logk n) • Per ogni k, in un grafo di de Bruijn base k, ogni nodo m è connesso a altri k nodi: • km mod kb • km+1 mod kb • … • km+(k-1) mod kb • Esempio • k=4, b=3, n=kb=64 e m=3214= 57 • Il primo vicino è 2104=36 • Il secondo vicino è 2114=37 • Il terzo vicino è 2124=38 • Il quarto vicino è 2134=39

  21. 10 b=2 k=3 11 01 12 00 20 02 21 b=160 22 de Bruijn graph base k • Esempio • k=3, b=2, n=kb=9

  22. 10 b=2 k=3 11 01 12 00 20 02 21 b=160 22 Koorde base k • k+1 nuovi link • Il link al successore nell’anello • k link ai predecessori dei vicini • E’possibile fare routing con grado k e APL O(logk n)

  23. 10 b=2 k=3 Koorde base k 11 01 12 00 20 02 21 22 • Scegliendo k = O(log n): • Grado = O(log n) • APL = O(log n / log (log n)) • Svantaggi • Bisogna stimare n a priori; • Non è possibile cambiare il grado in un sistema attivo; • E’ molto complicato stabilizzare la rete;

  24. Ricapitolando…. Sistemi P2P puri Sistemi Uniformi Sistemi Non uniformi Koorde Neighbor of Neighbor routing (NON)

More Related