Algoritmi per protocolli peer-to-peer Introduzione Livio Torrero (livio.torrero@polito.it) 09/2009
Approccio client-server (1/2) Client 1 Client 3 Server Client 2 Client 4 Paradigma molto comune Un client richiede dati o servizi, un server risponde Scalabilità e affidabilità ottenuta attraverso ridondanza e sistemi di supporto (DNS ) Esempi: Web, FTP 2
Approccio client-server (2/2) Client 1 Client 3 Server Client 2 Client 4 Problemi: Non scala Single point of failure I server centrali devono essere amministrati I client dell overlay sono risorse non sfruttate 3
Approccio Peer-to-peer Peer 1 Peer 3 Peer 2 Peer 4 Il peer to peer consiste nella condivisione di risorse e servizi per scambio diretto tra i peer Il peer-to-peer è un paradigma Specifica come si fa, non cosa Può essere applicato in diversi contesti I nodi sono sia client che server i nodi sono sia produttori che consumatori di risorse Qualsiasi nodo può iniziare una connessione verso un altro 4
Caratteristiche delle reti peer-to-peer I nodi sono autonomi Non c è in generale una entità amministratrice centrale Le reti p2p si adattano meglio dei sistemi client/server al dinamismo delle reti I nodi si connettono e disconnettono periodicamente Le reti p2p si basano sullo sfruttamento delle risorse in eccesso dei nodi Per migliorare le prestazioni si adattano alle differenti capacità dei nodi Alcuni nodi anno notevole disponibilità di risorse Banda, potenza di calcolo, storage Altri meno Cellulari, dispositivi mobili.. Oltre a questo alcuni peer hanno connettività limitata NAT, firewall Le reti peer-to-peer sono potenzialmente reti di grandi dimensioni Potenzialmente di dimensioni mondiali 5
Vantaggi delle reti peer-to-peer Utilizzo efficiente delle risorse efficiente disponibili sull overlay Si rubano cicli di processore, banda, storage altrimenti inutilizzati dai nodi dell overlay Scalabilità I nodi che consumano risorse allo stesso tempo le forniscono Le risorse aggregate crescono naturalmente con l utilizzo Affidabilità Le risorse sono normalmente replicate su più nodi dell overlay Non ci sono single point of failure Facili da amministrare L overlay p2p si organizza da se Non sono necessari server per fornire le risorse/servizi In alcuni casi sono però ancora usati per l indicizzazione Le reti p2p assicurano fault-tolerance, replicazione delle risorse/servizi e bilanciamento di carico tra i nodi 6
Reti peer-to-peer: applicazioni Le reti peer to peer sono note per le applicazioni di file sharing Napster Gnutella Bittorrent emule.... e per le applicazioni VoIP e di Instant Messaging Skype tuttavia si usano anche per servizi di vario genere calcolo distributo Desktop grid (seti@home, più di 3.000.000 di utenti) 7
Organizzazione dei peer (1/2) Per rendere questo possibile peer si organizzano in un overlay: L overlay è una rete sulla rete I peer si organizzano creando dei link virtuali fra loro Normalmente nell overlay esistono più copie della stessa risorsa per massimizzarne la raggiungibilità 8
Organizzazione dei peer (2/2) L overlay garantisce il bilanciamento del carico fra i peer L overlay garantisce l accessibilità da parte di tutti i nodi delle risorse/servizi condivise dai peer E impossibile pensare di accedere alle risorse/servizi sulla base dell indirizzo IP del nodo che le mette in condivisione Potenzialmente l indirizzo cambia ogni volta che il peer si connette ad Internet I peer possono avere indirizzi non accessibili da tutti NAT = indirizzi non univoci Firewall = limiti di connettività 9
Peer-to-peer: operazioni fondamentali Un nodo p2p svolge le seguenti operazioni di base: BOOT: è la fase di ingresso nell overlay peer-to-peer Cache preesistenti Configurazione statica Nodi centralizzati di bootstrap LOOKUP RISORSE/SERVIZI: come localizzo le risorse/servizi su un overlay p2p? Devo localizzare il nodo dell overlay che gestisce la risorsa/servizio Es: su quale nodo dell overlay è memorizzato il file che cerco? UTILIZZO DELLE RISORSE/SERVIZI: basato sull interazione diretta tra i peer Es: scarico un file direttamente dal nodo su cui è memorizzato E possibile pensare di classificare le reti peer-to-peer in base alla topologia dell overlay e alle metodologie di accesso alle risorse/ servizi 10
Classificazione infrastrutture peer-to-peer: approccio centralizzato Infrastrutture peer-to-peer Approccio centralizzato Approccio non centralizzato Prime implementazioni di infrastrutture peer-to-peer Lookup centralizzato Una volta individuata una risorsa i peer interagiscono direttamente Approccio ancora fortemente simile al client server (basate su nodi fissi) Colli di bottiglia => non scalano Single point of failure => infrastruttura fragile Esempio: Napster 11
Classificazione infrastrutture peer-to-peer: approccio non centralizzato Infrastrutture peer-to-peer Approccio centralizzato Approccio non centralizzato Implementazioni più evolute Non c è più un nodo di lookup centralizzato Le informazioni di lookup sono distribuite direttamente sui nodi Pro: maggiore scalabilità Lookup distribuito e reti gerarchiche Contro: maggiore complessità Se non c è più server centrale, come si trovano le risorse? 12
Reti peer-to-peer non centralizzate (non strutturate) Approccio non centralizzato non strutturato strutturato L approccio non strutturato non fornisce un controllo stretto sulla topologia della rete peer to peer Non esiste un directory service vero e proprio Ogni peer dell overlay conosce alcuni altri peer (cache) Non si sa se i peer in cache sono effettivamente online Uso estensivo del flooding Non ci sono vere garanzie di prestazioni Basso overhead Nel seguito verranno presentati casi di studio specifici: Gnutella, Kazaaa 13
Reti peer-to-peer non centralizzate (strutturate) Approccio decentralizzato non strutturato strutturato I peer si organizzano secondo una topologia precisa Esiste un directory service distribuito Ogni peer conosce alcuni nodi dell overlay attraverso cui accede a tutti gli altri I nodi in cache costituiscono una specie di mappa dell overlay Ricerche efficienti, ma quanto costa mantenere il directory service? Si pongono l obiettivo di garantire delle prestazioni Il directory service è normalmente realizzato attraverso una DHT Nel seguito verranno presentati casi di studio specifici (CHORD, Kademlia) 14
Le tabelle di hash: concetti base Le strutture dati sono normalmente organizzate in tabelle Le tabelle di hash sono tabelle che permettono un accesso molto efficiente ai dati Nelle tabelle di hash sono memorizzate coppie chiave valore Il valore rappresenta l informazione memorizzata sulla tabella La chiave permette l inserimento e l individuazione del dato nella tabella Le chiavi sono trasformate in indici della tabella mediante una funzione di hash Utilizzare direttamente le chiavi come indirizzi della tabella causerebbe uno spreco di spazio notevole se lo spazio delle chiavi è molto grande La funzione di hashing serve: A determinare la posizione tabella dove inserire i dati a partire dalla chiave A localizzare un dato in tabella nota la relativa chiave 15
Esempio di tabella di hash h(k1) h(k3) k1 k4 k2 k3 h(k2) h(k4) Le chiavi non sono più gli indirizzi delle celle, ma vengono utilizzate per calcolarli In questo modo la dimensione della tabella è inferiore alla dimensione dello spazio delle celle 16
Tabelle di hash: collisioni Idealmente una funzione di hash ritorna lo stesso risultato solo per 2 chiavi uguali Non esistono funzioni di hash perfette: è possibile che date due chiavi diverse la funzione ritorni il medesimo risultato In questo caso si parla di collisioni In caso di collisione sono state elaborate diverse tecniche di gestione Scansione lineare => cella successiva Concatenazione => ogni cella della tabella può contenere una lista di elementi. In caso di collisione l elemento viene inserito in coda alla lista 17
Le infrastrutture DHT: introduzione Le distributed hash table offrono le funzionalità tradizionali delle tabelle di hash su un insieme di nodi Sono tabelle di hash suddivise in pezzi è memorizzate separatamente sui peer Contengono coppie <chiave, valore> Il nodo che memorizza la coppia <chiave, valore> è detto nodo responsabile della chiave Hash table Overlay p2p 18
DHT: concetti base (1/2) Ogni algoritmo DHT è caratterizzato da una funzione distanza fra le chiavi Permette di verificare se due chiavi sono vicine Es: xor bit a bit Assegnazione delle chiavi ai nodi con load-balancing Gli identificativi dei nodi e le chiavi sono nello stesso spazio di valori Sono confrontabili Le chiavi sono assegnate a nodi vicini alle chiavi nello spazio degli ID 19
DHT: concetti base (2/2) Le DHT espongono i messaggi put e get Put(chiave, valore): inserisce la coppia su un nodo dell infrastruttura Il messaggio può essere inviato a qualsiasi nodo della DHT: il messaggio viene inoltrato fino al nodo responsabile per la chiave che memorizzerà il valore Get(chiave): recupera il valore associato alla chiave Il messaggio può essere inviato a qualsiasi nodo della DHT: il messaggio viene inoltrato fino al nodo responsabile per la chiave non viene raggiunto. A prescindere dal nodo che riceve la richiesta per localizzare una chiave, viene ritornato sempre lo stesso nodo 20
Uso delle DHT nel peer-to-peer: un naming service distribuito Le DHT nelle infrastrutture peer-to-peer sono usate per realizzare un name service distribuito A ogni risorsa/servizio è associata una chiave I peer stessi sono identificati attraverso chiavi Le DHT sono completamente decentralizzate e scalabili Ogni nodo gestisce: un insieme di chiavi che identificano delle risorse/servizi Sono le risorse/servizi di cui il nodo è responsabile E la porzione di name service distribuito di competenza del nodo una routing table Contiene le chiavi che identificano altri nodi dell overlay Se cerca una risorsa di cui non è responsabile inoltra la richiesta a uno dei nodi che conosce La routing table è costruita in modo da adattarsi alle variazioni della rete (join e leave dei nodi) Il routing avviene in base alla chiave relativa alla risorsa cercata Inoltro la richiesta alla entry della routing table la cui chiave è più vicina a quella della risorsa cercata Il confronto è possibile perché le chiavi relative alle risorse e ai nodi fanno parte dello stesso spazio 21
Modellazione delle reti p2p Le reti p2p vengono comunemente modellate al fine di: Stimare il traffico su di esse Caratterizzare la disponibilità delle risorse/servizi Valutare l effettiva raggiungibilità dei nodi dell overlay Le reti p2p sono modellate attraverso l uso di grafi Overlay = grafo Il grafo può essere orientato o meno Possibile applicare la teoria dei grafi all overlay per modellarne il comportamento 22
Diametro, raggio ed eccentricità dell overlay Utilizzati per caratterizzare le prestazioni della rete in termini di raggiungibilità dei nodi Si basano sul concetto di distanza tra due nodi Distanza tra due nodi = numero di archi presenti nel cammino più corto tra i due nodi Se due nodi fanno parte di due componenti connesse del grafo non collegate fra loro la distanza fra di loro sarà infinita Eccentricità di un nodo = massima distanza tra il nodo in oggetto e qualsiasi altro nodo dell overlay Raggio dell overlay = minima eccentricità di ogni nodo Diametro dell overlay = massima eccentricità di ogni nodo = la distanza massima esistente fra due nodi nell overlay 23
Il degree dei nodi Livio Torrero - Politecnico di Torino Il degree di un nodo è pari al numero di archi incidenti su quel nodo Il concetto di degree cambia a seconda che l overlay sia modellato attraverso un grafo orientato o meno Grafo non orientato: il degree di un nodo è pari alla somma dei suoi archi Ogni arco è contato due volte Grafo orientato Indegree = numero di archi entranti in un nodo Outdegree = numero di archi uscenti da un nodo 24
Clustering coefficient (1/2) Il clustering coefficient di un nodo indica quanto il nodo e i suoi vicini sono prossimi ad essere una clique Clustering coeff. = (numero archi esistenti tra i vicini)/(numero archi possibili tra i vicini) Vicinato di un nodo: Clustering coefficient (grafo orientato) Numero archi possibili: ( = numero vicini nodo i) 25
Clustering coefficient (2/2) Clustering coefficient (grafo non orientato) Il numero di archi possibili è la metà del valore precedente Clustering coefficient dell overlay 26
Clustering coefficient: esempi a a a 27