slide1
Download
Skip this Video
Download Presentation
Ricapitolando….

Loading in 2 Seconds...

play fullscreen
1 / 24

Ricapitolando…. - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Ricapitolando….' - armen


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
slide1

Ricapitolando….

Sistemi P2P puri

Sistemi Uniformi

Sistemi Non uniformi

Koorde

Neighbor of Neighbor routing (NON)

Abbiamo detto abbastanza

slide2

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

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;
slide4

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

slide5

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
slide6

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
slide7

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)

slide8

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

slide9

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

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

slide11

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
slide12

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)

slide13

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?

slide14

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?

slide15

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

slide16

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

slide17

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

slide18

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.

slide19

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
slide20

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
slide21

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
slide22

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

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;
slide24

Ricapitolando….

Sistemi P2P puri

Sistemi Uniformi

Sistemi Non uniformi

Koorde

Neighbor of Neighbor routing (NON)

ad