Ricapitolando….
This presentation is the property of its rightful owner.
Sponsored Links
1 / 24

Ricapitolando…. PowerPoint PPT Presentation


  • 80 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ricapitolando

Ricapitolando….

Sistemi P2P puri

Sistemi Uniformi

Sistemi Non uniformi

Koorde

Neighbor of Neighbor routing (NON)

Abbiamo detto abbastanza


Ricapitolando

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)


Ricapitolando

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;


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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)


Ricapitolando

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


Ricapitolando

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).


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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)


Ricapitolando

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?


Ricapitolando

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?


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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.


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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


Ricapitolando

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)


Ricapitolando

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;


Ricapitolando

Ricapitolando….

Sistemi P2P puri

Sistemi Uniformi

Sistemi Non uniformi

Koorde

Neighbor of Neighbor routing (NON)


  • Login