Ricapitolando…. Sistemi P2P puri Sistemi Uniformi Sistemi Non uniformi Koorde Neighbor of Neighbor routing (NON) Neighbor of Neighbor routing(NON) The Small World Phenomena 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. Neighbor of Neighbor routing(NON) Nel nostro caso è la distanza sull’anello in senso orario Sia d(x,y) una metrica per i nodi nella rete. Può essere iterativo o ricorsivo Greedy routing 1. Supponiamo che il nostro messaggio si trovi sul nodo u ≠ t (destinazione). 2. Sia V = {v1, v2, …, vk} l’insieme 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. Neighbor of Neighbor routing(NON) Greedy routing u t Neighbor of Neighbor routing(NON) 1. Supponiamo che il nostro messaggio si trovi sul nodo u ≠ t (destinazione). 2. Sia V = {v1, v2, …, vk} l’insieme dei vicini del nodo u. 3. Per ogni 1 ≤ i ≤ k, siano wi1, wi2, …, wik I vicinin di vi and sia W= { wij 1 ≤ i, j ≤ k} l’insieme dei vicini dei vicini di u. 4. Fra questi k2+k nodi, supponiamo sia z il più vicino alla 2 fasi destinazinone (rispetto alla metrica d). 5.1 Se z V inviamo il messaggio al nodo z, altrimenti z = wij, per qualche i e j, e inviamo il messaggio a z attraverso vi. 1 fase 5.2 Se z V inviamo il messaggio al nodo z, altrimenti z = wij, per qualche i e j, e inviamo il messaggio a vi. Neighbor of Neighbor routing(NON) Greedy routing u t NON routing u t Neighbor of Neighbor routing(NON) Chord Sia n=2b, per ogni 0 ≤ i < b, il nodo x è connesso ai nodi (x+2i) mod 2b; Il grado è b; Il diametro è b; APL è b/2; E’ un sistema uniforme? R-Chord n=2b [MNW04] Sia n=2b, per ogni 0 ≤ i < b, sia rx(i) un intero scelto in maniera casuale dall’intervallo [0,2i), il nodo x è connesso ai nodi (x+2i+rx(i)) mod 2 b; Il grado è b; Neighbor of Neighbor routing(NON) R-Chord n=2b [MNW04] Sia n= 2b, per ogni 0 ≤ i < b, sia rx(i) un intero scelto in maniera casuale dall’intervallo [0,2i), il nodo x è connesso ai nodi (x+2i+rx(i)) mod 2b; Il grado è b; R-Chord non è uniforme x 2i y i 2i+1 i+1 000 111 001 110 010 101 011 100 Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Chord è uniforme, l’algoritmo greedy è ottimale, quindi NoN routing non ci da nessun vantaggio Neighbor of Neighbor routing(NON) Quali sono le prestazioni del NoN routing con Chord? 32 16 16 8 8 4 8 16 32 32 4 4 s t d(s,t)=41 36 29 18 12 5 11 7 s t d(s,t)=41 Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Neighbor of Neighbor routing(NON) Denotiamo con (n) l’average path length Teorema (n) = (log n) hops for greedy routing in R-Chord Prova 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 d(x,t)=2p+1-2 t Neighbor of Neighbor routing(NON) x d(x,t)=2p+1-2 t Consideriamo il caso peggiore Il salto (p+1) che può essere compreso fra [2p,2p+1) è lungo 2p+1-1. In questo caso il salto va oltre la destinazione è quindi non può essere effettuato. Il salto (p) che può essere compreso fra [2p-1,2p) è lungo 2p-1. La distanza fra x e t si riduce da d=2p+1-2 a 2p+1-2 - 2p-1. Ma 2p+1-2 - 2p-1 = 3*2p-1-2 = ¾ 2p+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. Nel caso peggiore d=n-1. Quindi (n) < log¾ (n-1) = O(log n). Neighbor of Neighbor routing(NON) Denotiamo con (n) l’average path length Teorema (n) = (log n) hops for greedy routing in R-Chord Prova Bisogna mostrare che (n) = O(log n) e (n) = (log n) 2) (n) = (log n) Questa prova ve la ….. risparmio 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. Neighbor of Neighbor routing(NON) Abbiamo visto Una nuova strategia di routing (NoN routing) Una nuova topologia (R-Chord) Ci poniamo delle domande: Quali sono le prestazioni del NoN routing con Chord? Quali sono le prestazioni del greedy routing con R-Chord? Quali sono le prestazioni del NoN routing con R-Chord? Neighbor of Neighbor routing(NON) Denotiamo con (n) l’average path length Teorema (n) = (log n / log (log n)) hops for NON routing in RChord Prova Bisogna mostrare che (n) = O(log n / log (log n)) e (n) = (log n / log (log n)) 1) (n) = (log n / log (log n)) L’abbiamo già dimostrato nella prima lezione (slide 16). Neighbor of Neighbor routing(NON) Denotiamo con (n) l’average path length Teorema (n) = (log n / log (log n)) hops for NON routing in RChord Prova Consideriamo il ring pieno 2) (n) = O(log n / log (log n)) s d(s,t)=d t Consideriamo un nodo s che intende spedire un messaggio a un nodo t a distanza d(s,t)=d. Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) 2p 2p+1 s t d Sia p un intero tale che 2p ≤ d < 2p+1 p log d 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 l’algoritmo 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)). Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) I 2p 2p+1 d-d’ s t d Sia p un intero tale che 2p ≤ d < 2p+1 Consideriamo due casi : 2. p > (log n) / log (log n) d log log n d Sia I = (d-d’,d] dove d’= log n log log n Ovviamente |I|=d’ log n Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) I 2p s d 2p+1 t 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n Quanti vicini di s ci sono fra s e t? log n I primo vicino si trova fra 20 a 21 -1 Il secondo si trova fra 21 a 22 -1 Il terzo si trova fra 22 a 23 -1 Il p-esimo si trova fra 2p-1 a 2p -1 Poichè 2p è minore di d, fra s e t ci sono almeno p vicini. Sia si l’iesimo vicino di s, e sia S={s1, s2, …, sp} l’insieme dei primi p vicini di s. Allora |S|=p. Neighbor of Neighbor routing(NON) 2) (n) = O(log n / log (log n)) I 2p 2p+1 s d Denotiamo con Jk(si)=si+2k+rs (k) il k-esimo jump/vicino di si. i t 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n log n |S|=p Il nostro obiettivo è calcolare la probabilità che almeno uno dei vicini dei vicini di s abbia un jump in I. P=Pr[Jk(si)I per qualche 1 ≤ i ≤ p e 0 ≤ k < b] I primi p vicini Un jump qualsiasi n=2b Neighbor of Neighbor routing(NON) I Claim 2p s d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p Prova Consideriamo il generico vicino di s, si. Denotiamo con di la distanza fra si e t. Sia pi tale che 2pi ≤ di < 2pi+1 di Due casi: 2p 1. d-d’≥si+2pi s 2p+1 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n log n |S|=p di≤d pi≤p i i s d 2pi+1 d-d’ I t Neighbor of Neighbor routing(NON) I Claim 2p s d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p di Prova 1. d-d’≥si+2pi 2p+1 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n log n |S|=p di≤d, pi≤p 2pi si s 2pi+1 d-d’ I d t L’unico jump di si che può cadere in I è il jump (pi+1)esimo, infatti il jump (pi+1)-esimo [si+2pi, si+2pi+1). In particolare il jump (pi+1)-esimo appartiene a I con probabilità |I|/2pi = d’/2pi ≥ d’/2p pi≤p Neighbor of Neighbor routing(NON) I 2p Claim 2p+1 s 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n d Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p Prova d 2. d-d’<si+2pi di si s 2pi d-d’ log n |S|=p di≤d, pi≤p 2pi+1 I t Neighbor of Neighbor routing(NON) 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p d Prova di 2. d-d’<si+2pi si 2pi d-d’ log n |S|=p di≤d, pi≤p 2pi+1 I s t A B 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’, si+2pi) e B=[si+2pi,d] Ovviamente |A|+|B|=d’. Neighbor of Neighbor routing(NON) 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p d Prova di 2. d-d’<2pi 2pi d-d’ si log n |S|=p di≤d, pi≤p 2pi+1 I s t A B Sia Q l’evento “il pi-esimo jump di si cade in I” Sia R l’evento “il (pi+1)-esimo jump di si cade in I” Siamo interessati a calcolare la Pr[QR]=Pr[Q]+Pr[R]-Pr[QR] Q QR R Neighbor of Neighbor routing(NON) 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p d Prova di 2. d-d’<2pi 2pi d-d’ si log n |S|=p di≤d, pi≤p 2pi+1 I s t A B Caso 2.a |B|>2pi-1 Valutimo solo Pr[R] ≤ Pr[QR] Pr[R]=|B|/2pi>1/2>d’/2p Q d ' log log n log log n 1 per n 4, 2p log n log n 2 QR R Neighbor of Neighbor routing(NON) 2p ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n Claim Per ogni nodo si S, la probabilità che un vicino di si I è almeno d’/2p. P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p d Prova di 2. d-d’<2pi 2pi d-d’ si log n |S|=p di≤d, pi≤p 2pi+1 I s t A B Caso 2.b |B|≤2pi-1 Pr[QR]= Pr[Q]+Pr[R]-Pr[QR] = A 2 pi 1 B 2 pi AB 2 pi 12 pi A B 2 pi A 2 pi AB 2 pi 12 pi A B 2 pi |B|≤2pi-1 A B A B d' d' 1 2p 2 pi 2 pi 1 2 pi 2 pi Q QR R Neighbor of Neighbor routing(NON) I Dove eravamo rimasti? 2p Il nostro obiettivo ès calcolare la probabilità che almeno uno dei vicini dei vicini di s abbia un jump in I. P’≥d’/2 2p+1 d ≤ d < 2p+1 p > (log n) / log (log n) I = (d-d’, d] d’= d log log n 2p log n |S|=p P’=Pr[Jk(si)I per qualche 0 ≤ k < b] ≥ d’/2p p P=Pr[Jk(si)I per qualche 1 ≤ i ≤ p e 0 ≤ k < b] d≥2p p d log log n d' 1 P (1 P' ) 1 p 1 p 2 2 log n S S p log log n log log n 1 1 log n log n log n loglogn e 1 p > (log n) / log (log n) (1-1/x)x≤e-1 P = 1-e-1 Neighbor of Neighbor routing(NON) Con probabilità P=1-e-1 in due hop riduciamo l’intrvallo da d a d * (log log n) / log n Poichè 1-e-1 > 0.5 funziona in media almeno una volta su due; In media con 2*2= 4 hop riduciamo l’intrvallo da d a d * (log log n) / log n. p ≤ (log n) / log (log Quanti hop ci servono n) 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)) O(log n / (log log n)) Neighbor of Neighbor routing(NON) Nel caso in cui il ring non è pieno? Ridurre la distanza da 2b-1 a 2b/n impiega O(log n / log log n) passi. Quanti nodi ci sono in 2b/n identificatori? Utilizzando il Chernoff bound si può dimostrare che in 2b/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(log2n) 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