Ricapitolando…. Sistemi P2P puri Sistemi UniformiSistemi Non uniformi KoordeNeighbor of Neighbor routing (NON)
The Small World Phenomena The six degree of separation experiment S. Milgram [M67]. The six degree of separation experiment S. Milgram [M67]. The sociological experiment relied on social networks to transmit a letter from a person to unfamiliar targets by passing the letter only via acquaintances. Only a small number (around 6) of steps was needed. Recent work [DRW03], shows that, in the first steps the message was forwarded to a person P by using a guess on who P knew or, in other words, on his/her neighbors. Recent work [DRW03], shows that, in the first steps the message was forwarded to a person P by using a guess on who P knew or, in other words, on his/her neighbors.
Neighbor of Neighbor routing(NON) Sia d(x,y) una metrica per i nodi nella rete. Greedy routing 1. Supponiamo che il nostro messaggio si trovi sul nodo u t (destinazione). 2. Sia V = {v 1, v 2, …, v k } linsieme dei vicini del nodo u. 3. Fra questi k nodi, supponiamo sia z il più vicino alla destinazinone (rispetto alla metrica d). 4. Inviamo il messaggio al nodo z. Nel nostro caso è la distanza sullanello in senso orario Può essere iterativo o ricorsivo
Neighbor of Neighbor routing(NON) Greedy routing ut
Neighbor of Neighbor routing(NON) 1. Supponiamo che il nostro messaggio si trovi sul nodo u t (destinazione). 2. Sia V = {v 1, v 2, …, v k } linsieme dei vicini del nodo u. 3. Per ogni 1 i k, siano w i1, w i2, …, w ik I vicinin di v i and sia W= { w ij 1 i, j k} linsieme dei vicini dei vicini di u. 4. Fra questi k 2 +k nodi, supponiamo sia z il più vicino alla destinazinone (rispetto alla metrica d). 5.1 Se z V inviamo il messaggio al nodo z, altrimenti z = w ij, per qualche i e j, e inviamo il messaggio a z attraverso v i. 5.2 Se z V inviamo il messaggio al nodo z, altrimenti z = w ij, per qualche i e j, e inviamo il messaggio a v i. 2 fasi 1 fase
Neighbor of Neighbor routing(NON) Greedy routing NON routing ut ut
Neighbor of Neighbor routing(NON) Chord Sia n=2 b, per ogni 0 i < b, il nodo x è connesso ai nodi (x+2 i ) mod 2 b ; Sia n=2 b, per ogni 0 i < b, il nodo x è connesso ai nodi (x+2 i ) mod 2 b ; Il grado è b; Il grado è b; Il diametro è b; Il diametro è b; APL è b/2; APL è b/2; R-Chord n=2 b [MNW04] Sia n=2 b, per ogni 0 i < b, sia r x (i) un intero scelto in maniera casuale dallintervallo [0,2 i ), il nodo x è connesso ai nodi (x+2 i +r x (i)) mod 2 b ; Sia n=2 b, per ogni 0 i < b, sia r x (i) un intero scelto in maniera casuale dallintervallo [0,2 i ), il nodo x è connesso ai nodi (x+2 i +r x (i)) mod 2 b ; Il grado è b; Il grado è b; E un sistema uniforme?
Neighbor of Neighbor routing(NON) R-Chord n=2 b [MNW04] Sia n= 2 b, per ogni 0 i < b, sia r x (i) un intero scelto in maniera casuale dallintervallo [0,2 i ), il nodo x è connesso ai nodi (x+2 i +r x (i)) mod 2 b ; Sia n= 2 b, per ogni 0 i < b, sia r x (i) un intero scelto in maniera casuale dallintervallo [0,2 i ), il nodo x è connesso ai nodi (x+2 i +r x (i)) mod 2 b ; Il grado è b; Il grado è b; x2i2i 2 i+1 y 2i2i R-Chord non è uniforme
Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Chord è uniforme, lalgoritmo greedy è ottimale, quindi NoN routing non ci da nessun vantaggio
Neighbor of Neighbor routing(NON) Quali sono le prestazioni del NoN routing con Chord? s t d(s,t)= s t d(s,t)=
Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord?
Neighbor of Neighbor routing(NON) Denotiamo con (n) laverage path length Teorema (n) = (log n) hops for greedy routing in R-Chord (n) = (log n) hops for greedy routing in R-ChordProva Bisogna mostrare che (n) = O(log n) e (n) = (log n) 1) (n) = O(log n) Consideriamo tutte le possibili topologie che derivano da R-Chord. Mostriamo che a ogni singolo hop, se la distanza fra il nodo corrente e il nodo destinazione è d, dopo il jump la distanza è minore di 3/4d. x t d(x,t)=2 p+1 -2
Neighbor of Neighbor routing(NON) x t d(x,t)=2 p+1 -2 Consideriamo il caso peggiore Il salto (p+1) che può essere compreso fra [2 p,2 p+1 ) è lungo 2 p In questo caso il salto va oltre la destinazione è quindi non può essere effettuato. Il salto (p+1) che può essere compreso fra [2 p,2 p+1 ) è lungo 2 p In questo caso il salto va oltre la destinazione è quindi non può essere effettuato. Il salto (p) che può essere compreso fra [2 p-1,2 p ) è lungo 2 p-1. Il salto (p) che può essere compreso fra [2 p-1,2 p ) è lungo 2 p-1. La distanza fra x e t si riduce da d=2 p+1 -2 a 2 p p-1. La distanza fra x e t si riduce da d=2 p+1 -2 a 2 p p-1. Ma 2 p p-1 = 3*2 p-1 -2 = ¾ 2 p+1 -2 < ¾ d. Ma 2 p p-1 = 3*2 p-1 -2 = ¾ 2 p+1 -2 < ¾ d. Ad ogni passo nel caso peggiore passiamo da una distanza d a una distanza ¾ d. Quindi il numero dei passi totale è minore di log ¾ d. Ad ogni passo nel caso peggiore passiamo da una distanza d a una distanza ¾ d. Quindi il numero dei passi totale è minore di log ¾ d. Nel caso peggiore d=n-1. Quindi (n) < log ¾ (n-1) = O(log n). Nel caso peggiore d=n-1. Quindi (n) < log ¾ (n-1) = O(log n).
Neighbor of Neighbor routing(NON) Denotiamo con (n) laverage path length Teorema (n) = (log n) hops for greedy routing in R-Chord (n) = (log n) hops for greedy routing in R-ChordProva Bisogna mostrare che (n) = O(log n) e (n) = (log n) 2) (n) = (log n) ….. In pratica in base ai risultati di numerose simulazioni R-Chord si comporta esattamente allo stesso modo di Chord APL = b/2 = (log n)/2. APL = b/2 = (log n)/2. Questa prova ve la risparmio
Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord?
Neighbor of Neighbor routing(NON) Denotiamo con (n) laverage path length Teorema (n) = (log n / log (log n)) hops for NON routing in R- Chord (n) = (log n / log (log n)) hops for NON routing in R- ChordProva Bisogna mostrare che (n) = O(log n / log (log n)) e (n) = (log n / log (log n)) 1) (n) = (log n / log (log n)) Labbiamo già dimostrato nella prima lezione (slide 16).
Neighbor of Neighbor routing(NON) Denotiamo con (n) laverage path length Teorema (n) = (log n / log (log n)) hops for NON routing in R- Chord (n) = (log n / log (log n)) hops for NON routing in R- ChordProva 2) (n) = O(log n / log (log n)) Consideriamo un nodo s che intende spedire un messaggio a un nodo t a distanza d(s,t)=d. s t d(s,t)=d Consideriamo il ring pieno
Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) Sia p un intero tale che 2 p d < 2 p+1 Consideriamo due casi : 1.p (log n) / log (log n) In questo caso bastano O(p) jump per raggiungere la destinazione anche se si usa solo lalgoritmo greedy. Cioè avvicinandoci di ¾ ad ogni passo. Il numero di passi infatti è log ¾ d < log ¾ 2 ((log n) / log (log n))+1 = O((log n) / log (log n)). s t d 2p2p 2 p+1
Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) Sia p un intero tale che 2 p d < 2 p+1 Consideriamo due casi : 2.p > (log n) / log (log n) Sia I = (d-d,d] dove d= Ovviamente | I |=d s t d 2p2p 2 p+1 I d-d
Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) Quanti vicini di s ci sono fra s e t? I primo vicino si trova fra 2 0 a Il secondo si trova fra 2 1 a Il terzo si trova fra 2 2 a Il p-esimo si trova fra 2 p-1 a 2 p -1 Poichè 2 p è minore di d, fra s e t ci sono almeno p vicini. Sia s i liesimo vicino di s, e sia S={s 1, s 2, …, s p } linsieme dei primi p vicini di s. Allora |S|=p. s t d 2p2p 2 p+1 I 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=
Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) Denotiamo con J k (s i )=s i +2 k +r s i (k) il k-esimo jump/vicino di s i. Il nostro obiettivo è calcolare la probabilità che almeno uno dei vicini dei vicini di s abbia un jump in I. P=Pr[ J k (s i ) I per qualche 1 i p e 0 k < b ] s t d 2p2p 2 p+1 I 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p I primi p vicini Un jump qualsiasi n=2 b
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova Consideriamo il generico vicino di s, s i. Denotiamo con d i la distanza fra s i e t. Sia p i tale che 2 p i d i < 2 p i +1 Due casi: 1.d-ds i +2 p i 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p s d 2p2p 2 p+1 I s t d 2pi2pi 2 p i +1 I sisi didididi d-d pippip diddid
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 1.d-ds i +2 p i Lunico jump di s i che può cadere in I è il jump (p i +1)- esimo, infatti il jump (p i +1)-esimo [s i +2 p i, s i +2 p i +1 ). In particolare il jump (p i +1)-esimo appartiene a I con probabilità | I |/2 p i = d/2 p i d/2 p s d 2p2p 2 p+1 I s t d 2pi2pi 2 p i +1 I sisi didididi d-d pippip 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 2.d-d<s i +2 p i s d 2p2p 2 p+1 I st d 2pi2pi 2 p i +1 I sisi didididi d-d 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 2.d-d<s i +2 p i In questo caso sia il jump p-esimo che il jump (p+1)-esimo possono cadere in I. Sia I = A B dove A=(d-d, s i +2 p i ) e B=[s i +2 p i,d] Ovviamente |A|+|B|=d. st d 2pi2pi 2 p i +1 I sisi didididi d-d 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p AB
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 2.d-d<2 p i Sia Q levento il p i -esimo jump di s i cade in I Sia Q levento il p i -esimo jump di s i cade in I Sia R levento il (p i +1)-esimo jump di s i cade in I Sia R levento il (p i +1)-esimo jump di s i cade in I Siamo interessati a calcolare la Pr[Q R]=Pr[Q]+Pr[R]-Pr[Q R] st d 2pi2pi 2 p i +1 I sisi didididi d-d 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p AB QR Q R
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 2.d-d<2 p i Caso 2.a |B|>2 p i -1 Valutimo solo Pr[R] Pr[Q R] Pr[R]=|B|/2 p i >1/2>d/2 p st d 2pi2pi 2 p i +1 I sisi didididi d-d 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p AB QR Q R
Neighbor of Neighbor routing(NON) Claim Per ogni nodo s i S, la probabilità che un vicino di s i I è almeno d/2 p. P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p Prova 2.d-d<2 p i Caso 2.b |B|2 p i -1 Pr[Q R]= Pr[Q]+Pr[R]-Pr[Q R] = st d 2pi2pi 2 p i +1 I sisi didididi d-d 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p d i d, d i d, p i p AB QR Q R |B|2 p i -1
Neighbor of Neighbor routing(NON) Dove eravamo rimasti? Il nostro obiettivo è calcolare la probabilità che almeno uno dei vicini dei vicini di s abbia un jump in I. P=Pr[ J k (s i ) I per qualche 1 i p e 0 k < b ] 2 p d < 2 p+1 p > (log n) / log (log n) I = (d-d, d] d=|S|=p P=Pr[ J k (s i ) I per qualche 0 k < b ] d/2 p s d 2p2p 2 p+1 I P = 1-e -1 Pd/2 p d2 p p > (log n) / log (log n) (1-1/x) x e -1
Neighbor of Neighbor routing(NON) Con probabilità P= Con probabilità P=1-e -1 in due hop riduciamo lintrvallo da d a d * (log log n) / log n Poichè Poichè 1-e -1 > 0.5 funziona in media almeno una volta su due; In media con 2*2= 4 hop riduciamo lintrvallo da d a d * (log log n) / log n. Quanti hop ci servono 4 log log n / (log log n) d + O(log n / (log log n)) d al massimo n-1 4 log log n / (log log n) n-1 + O(log n / (log log n)) Il nostro obiettivo è calcolare la probabilità che almeno uno dei vicini dei vicini di s abbia un jump in I. P=Pr[ J k (s i ) I per qualche 1 i p e 0 k < b ] p (log n) / log (log n) O(log n / (log log n))
Neighbor of Neighbor routing(NON) Nel caso in cui il ring non è pieno? Ridurre la distanza da 2 b -1 a 2 b /n impiega O(log n / log log n) passi. Quanti nodi ci sono in 2 b /n identificatori? Utilizzando il Chernoff bound si può dimostrare che in 2 b /n identificatori ci sono al più O(log n / log log n) nodi WHP. Quindi anche usando solo i successori in totale si effettuano O(log n / log log n) passi.
Neighbor of Neighbor routing(NON) Cost of Neighbor of Neighbor lists: Memory: O(log 2 n) Maintenance: O(log n) must be updated Neighbor lists should be maintained (open connection, pinging, etc.) In practice, a Chord ring will never be in a stable state; instead, joins and departures will occur continuously, interleaved with the stabilization algorithm. The ring will not have time to stabilize before new changes happen. [Chord]
Neighbor of Neighbor routing(NON) Vantaggi: Algoritmo di routing locale Algoritmo di routing semplice Efficiente Non è necessaria la stima di log n Svantaggi Come mantenere la lista dei vicini dei vicini? No fast bootstrap