Sistemi Peer To Peer (P2P) Avanzati Gennaro Cordasco cordasco[@]dia.unisa.it http://www.dia.unisa.it/~cordasco Laboratorio ISISLAB2 (L8 a Baronissi) P2P: Alcune definizioni Sistema distribuito nel quale ogni nodo ha identiche capacità e responsabilità e tutte le comunicazioni sono potenzialmente simmetriche; Siamo interessati ai sistemi P2P di seconda generazione, quelli che supportano DHT (Distributed Hash Table); P2P Puro; Es: Chord Analizzeremo alcuni protocolli Chord like; Si basano sul ring; Utilizzano consistent hashing; Join/Leave uguali a Chord; Cambiano i vicini (finger) e l’algoritmo di routing; P2P: Scalabilità Il lavoro richiesto a un determinato nodo nel sistema non deve crescere (o almeno cresce lentamente) in funzione del numero di nodi nel sistema; La scalabilità di un protocollo dipende: dalla topologia della rete; dall’algoritmo di routing. Obiettivi: Minimizzare il numero di messaggi necessari per fare lookup; Minimizzare, per ogni nodo, le informazioni relative agli altri nodi; Dal punto di vista topologico Consideriamo una rete P2P come un grafo G=(V,E), dove V è l’insieme dei nodi nel sistema e E rappresenta l’insieme delle interconnessioni fra essi: Minimizzare, per ogni nodo, le informazioni relative agli altri nodi: minimizzare il grado dei nodi; Minimizzare il numero di messaggi necessari per fare lookup: Condizioni necessarie ma non sufficienti Minimizzare il diametro; Minimizzare l’average path lenght (APL), vale a dire, la distanza media fra due nodi nel grafo. Es. Chord Consideriamo un anello con n=2b nodi; Ogni nodo x ha un etichetta a b bit che denotiamo con id(x); jump I vicini del nodo x sono i nodi (x+2i) mod 2b i = 0,1, ,b-1; 000 111 001 110 010 101 011 100 b=3 000 111 Es. Chord 001 110 010 101 011 100 Quanto valgono: grado? diametro? average path lenght? Il grado è b = log n b=3 000 111 Es. Chord 001 110 010 101 011 b=3 100 Dati due nodi x e y la loro distanza d(x,y) è uguale al numero di “1” che ci sono nella stringa binaria (y-x) mod 2b. Infatti i jump necessari per passare dal nodo x al nodo y sono quelli relativi alla posizione degli “1” nella stringa binaria (y-x) mod 2b. 000 111 Es. Chord 001 110 Il diametro è b = log n 010 101 011 100 Calcoliamo la distanza tra il nodo 3 e il nodo 6: (6-3) mod 8 = 3 = 011 (un jump da 2 e uno da 1). Calcoliamo la distanza tra il nodo 6 e il nodo 3: (3-6) mod 8 = 5 = 101 (un jump da 4 e uno da 1). d(x,y) può essere diverso da d(y,x) Chord non è simmetrico b=3 diametro Anello n -1 Chord e altri Grafo completo O(log n) 1 1 O(log n) n -1 grado n è il numero dei peer; 000 111 Es. Chord 001 110 010 101 011 100 Quanto vale l’average path lenght? APL d ( x, y ) x , yN n 2 N denota l’insieme dei nodi b=3 Sistemi P2P uniformi k=grado l=diametro Per semplicità consideriamo un sistema Chord like Denotiamo con Jx,i l’iesimo jump del nodo x; Un sistema P2P viene detto uniforme, se per ogni coppia di nodi x e y, si ha Jx,i = Jy,i i =1,2,…,k. Si Chord è uniforme? a è un generico APL sistemi uniformi: nodo N APL d ( x, y ) x , yN n2 n d ( a, x ) xN n2 d ( a, x ) xN n Sistemi P2P uniformi Vantaggi: Facili da implementare e da analizzare; Algoritmo di routing semplice (greedy); Routing locale, la procedura di lookup interessa solo i nodi che si trovano fra sorgente e destinazione; Non c’è congestione sui nodi, vale a dire il traffico generato dai messaggi di lookup è più o meno uguale per tutti i nodi. Fast bootstrap: Poiché tutti i nodi utilizzano gli stessi jump, è possibile utilizzare la tabella di routing del proprio predecessore per velocizzare notevolmente l’operazione di join; Svantaggi: Sfortunatamente non sono gli algoritmi più efficienti. Lo vediamo fra un pò 000 111 Es. Chord Quanto vale l’average path lenght? APL 001 110 010 d ( a, x ) xN 101 n APL d ( x, y ) x , yN n2 011 b=3 100 Scegliamo come nodo sorgente il nodo a=00…0; La distanza fra a e il generico nodo x è uguale al numero di bit a 1 nella codifica binaria di x; 00…0 00…1 a … 11…0 11…1 APL d ( a, x ) xN n b b 2 b log n 2 n 2 2 Fault tolerance and degree k=grado l=diametro Il grado di una rete P2P soggetta a fallimenti deve essere almeno Ω(log n). Infatti, Ω(log n) risulta essere il minimo valore che permette alla rete di rimanere connessa anche nelle condizioni più proibitive; Sketch: Supponiamo che tutti i nodi della rete possono fallire con probabilità ½; Ovviamente un nodo rimane disconnesso se tutti i suoi vicini si disconnettono contemporaneamente; Vogliamo che la probabilità che un nodo non si disconnetta sia ≥ 1-1/n; Pr[un nodo non si disconnette]=1-(1/2)k ≥ 1-1/n 1/n ≥(1/2)k 2k ≥ n k ≥ log n In realtà la prova è un po’ più complicata, ma questa rende bene l’idea P2P: grado e diametro Abbiamo visto che il grado di una rete P2P soggetta a fallimenti deve essere almeno Chord, tapestry, Ω(log n). pasty… Esistono in letteratura molti protocolli che hanno grado e diametro pari a O(log n). E’ possibile fare di meglio? Fissiamo il grado pari O(log n), qual è il minimo diametro che riusciamo ad ottenere? Fissiamo il grado pari O(log n), qual è il minimo APL che riusciamo ad ottenere? Stiamo cercando dei Lower Bound k=grado l=diametro P2P: Lower Bound Teorema Dato un grafo G=(V,E) con |V| = n e grado k = O(log n), allora il diametro l = Ω(log n / log (log n)). Prova Dato che il grado è k e il diametro è l, ogni nodo può raggiungere l 1 al massimo l k i k 1 k l 1 altri nodi (compreso il nodo stesso). i 0 k 1 Poiché il grafo deve essere connesso, allora kl+1 > n l > logk (n) - 1 = Ω(log n / log (log n)). Ma allora Chord non è ottimale!!! Con argomentazioni analoghe si può dimostrare che anche l’APL è Ω(log n / log (log n)) in quanto la maggior parte dei nodi si trova a distanza l-O(1). P2P: Lower Bound (Esempio 1) r k = log n; k-1 … … … Ogni nodo ha grado k (k-1 figli e la radice dell’albero); r raggiunge qualsiasi nodo in al più logk-1 n = O(log n / log (log n)) passi. Il diametro è 1 + logk-1 n =O(log n / log (log n)). Il grado in ingresso della radice è n-1 P2P: Lower Bound (Esempio 2) r k = log n; k/2 -1 … … … Ogni nodo ha grado(entrante più uscente) k ( k/2 -1 ai figli e 1 al padre (x2)); r raggiunge qualsiasi nodo in al più logk/2 -1 n = O(log n / log (log n)) passi. Ogni nodo raggiunge r in al più logk/2 -1 n = O(log n / log (log n)) passi Il diametro è O(log n / log (log n)). P2P: Lower Bound (Esempio 3) r k = 6; 2 … … Ogni nodo ha grado(entrante più uscente) 6 ( 2 ai figli e 1 al padre (x2)); r raggiunge qualsiasi nodo in al più log n passi. Ogni nodo raggiunge r in al più log n passi Il diametro è 2 log n. La mole di traffico che La rete si disconnette se uno qualsiasi dei nodi (escluse le foglie) fallisce spetta al nodo r è nettamente maggiore rispetto agli altri nodi P2P: Lower Bound sistemi uniformi Teorema Consideriamo un sistema P2P uniforme con n nodi, sia k il numero dei vicini che ogni nodo mantiene, allora il lower bound per il diametro è 1/2log n (l ≥ 1/2log n ) se k 1/2log n. Prova Sia J = {Ji}1i k Consideriamo senza perdita di generalità un nodo x e calcoliamo tutte le n path fra x e tutti gli altri nodi. P2P: Lower Bound sistemi uniformi x compreso Sia P = {tutte le path da x agli altri n nodi} Sia f: P(N{0})k+1 p P denotiamo con ap,i il numero di jump di taglia Ji usati nella path p con 1 i k. Es Sia J={1,4,15} Sia p una path dal nodo 0 al nodo 9, (es. 4+4+1). Allora ap,1 = 1 , ap,2 = 2 e ap,3 = 0. P2P: Lower Bound sistemi uniformi x compreso Sia P = {tutte le path da x agli altri n nodi} Sia f: P(N{0})k+1 k Ovviamente a p ,i l poiché l è il diametro i 1 della rete. k Definiamo a p , 0 l a p ,i e ovviamente a p , 0 0. i 1 f(p):=(ap,0,ap,1,…ap,k). P2P: Lower Bound sistemi uniformi P = {tutte le path da x agli altri n nodi} f: P(N{0})k+1 Claim f(p):=(ap,0,ap,1,…ap,k) Dominio Codominio f è iniettiva (one to one) Prova Per assurdo supponiamo che esistano p e q P tali che ap,i = aq,i 0 i k. k k a i 1 p ,i J i aq ,i J i . i 1 Quindi partendo dal nodo x, entrambe le path terminano nello stesso nodo destinazione. Assurdo: per definizione le path in P terminano in nodi diversi. P2P: Lower Bound sistemi uniformi Poiché f è iniettiva, la dimensione del codominio è maggiore o uguale alla dimensione del dominio (vale a dire |C| ≥ |D|=n). Quanto vale la dimensione del codominio? La dimensione del codominio è uguale al numero di vettori (a0,a1,…,ak) tali che a0+a1+…+ak =l P2P: Lower Bound sistemi uniformi Supponiamo di avere l biglie uguali e k+1 contenitori diversi. … l … k+1 La dimensione del codominio è uguale al numero di modi in cui è possibile disporre l biglie identiche in k+1 contenitori diversi. P2P: Lower Bound sistemi uniformi Primo contenitore vuoto Rappresentiamo con “0” le “1” i contenitori 00010000010110100 00110001101000000 10001010100100000 Secondo contenitore 3 biglie biglie separiamo Terzoe contenitore 1 biglia con Quarto contenitore 1 biglia Quinto contenitore 2 biglie Sesto contenitore 5 biglie Alcuni esempi 6 contenitori e 12 biglie 00000110001000011 Con k “1” possiamo rappresentare k+1 contenitori, mentre con l “0” possiamo rappresentare l biglie; P2P: Lower Bound sistemi uniformi 00010000010110100 00110001101000000 10001010100100000 Alcuni esempi 6 contenitori e 12 biglie 00000110001000011 La dimensione del codominio è uguale al numero di combinazioni di k elementi su l+k; La dimensione del codominio è uguale al numero di combinazioni di l elementi su l+k; P2P: Lower Bound sistemi uniformi Sappiamo che l k l k | C | k l | C | n l k l k n k l (1) Ci rimane da dimostrare che se k 1/2log n allora l ≥ 1/2log n . P2P: Lower Bound sistemi uniformi l k l k n k l Proviamo che l≥k Per assurdo l<k Stirling approx x l k x x x E’ facile osservare che k 2x è crescente x! 2 2x in l, e e l k k k quindi k k l k k k 2k (2k )! 2 2 (2k ) (2k ) 2 k e 2 k k k k k 2k k e 2k k e k k k k! k! 2 k (2k ) kk 2 k Assurdo 2k ( 2k ) 2k k 2k 2k k l k l k n k l 2k 22k n Per ipotesi k 1/2log n. P2P: Lower Bound sistemi uniformi l k l k n k l lk Proviamo che l ≥ 1/2log n Per assurdo l < 1/2log n l k E’ facile osservare che k è crescente in k, quindi l k l l 2 2l n k l Assurdo, quindi l ≥ 1/2log n CVD. P2P: Lower Bound sistemi uniformi Teorema Consideriamo un sistema P2P uniforme con n nodi, sia k il numero dei vicini che ogni nodo mantiene, allora il diametro è Ω(log n) se k = O(log n). Prova La prima parte è identica al teorema precedente l k l k n k l Solo conti, abbastanza noiosi. diametro Anello n -1 Chord e altri Grafo completo LB O(log n) O(log n/ log(log n)) 1 1 O(log n) n -1 grado n è il numero dei peer; Grafico funzione binomiale n y x l k l k n k l y 1 n/2 x n-1 Come scegliere l e k? n y x l k l k n k l Supponiamo di avere un limite sulla somma di grado e diametro Es l+k = 16 l=k è la scelta migliore Quali sono i valori di l e k ottimali? 14000 12000 10000 8000 6000 4000 2000 0 0 1 2 3 4 5 6 7 8 L 9 10 11 12 13 14 15 16 Alcune osservazioni Chord è asintoticamente ottimo Uniforme Facili da implementare e da analizzare; Algoritmo di routing semplice (greedy); Non c’è congestione sui nodi; Fast bootstrap: E’ possibile fare meglio di Routing locale; Chord, si può arrivare a GAP (0.72021 log n, 0.72021 log n) Chord (log n, log n) LB (½ log n, ½ log n) Ricapitolando…. Sistemi P2P puri Sistemi Uniformi Sistemi Non uniformi Koorde Abbiamo detto abbastanza Neighbor of Neighbor routing (NON)