Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
pastry can napster united devices aim ocean store morpheus grove jxta freenet Kademlia fiorana
Kelips
farsite Viceroy bearshare
gnutella
open cola
Koorde
netmeeting
icq ebay seti@home
limewire jabber
uddi
kazaa
popular power
tapestry
folding@home
chord
process tree
mojo nation
Gennaro Cordasco
Sommario
Introduzione Classificazione Storia ed Esempi Concetto di Scalabilit Distributed Hash Table (DHT)
Chord
Sommario(2)
Open Questions
Capacit di far fronte ai fallimenti Routing Hot Spots Incorporating Geography Extreme Heterogeneity Sicurezza
WinMx Kazaa Overnet Freenet
Applicazioni
DHT Utilit
File sharing system; File storage system; Distributed file system; Redundant storage; Availability; Performance; Permanence; Anonymity; Chat service;
P2P: Classificazione
Le applicazioni P2P sono costituite da tre fasi principali:
Boot: permette a un peer di trovare la rete e di connettersi ad essa; (nessuno o quasi fa boot P2P) Lookup: permette ad un peer di trovare il gestore/responsabile di una determinata informazione; (pochi sono P2P, alcuni usano SuperPeer) Scambio di file; (sono tutti P2P)
P2P: Classificazione(2)
Parleremo di applicazioni:
P2P se:
le fasi di lookup e scambio di file sono P2P; la fase di boot utilizza qualche SERVER;
P2P: Classificazione(2)
Consideriamo solo loperazione lookup:
Lookup Centralizzato
Indice centralizzato;
Lookup Decentralizzato
Indice completamente distribuito;
Lookup Ibrido
Pi sistemi centralizzati collegati in un sistema decentralizzato;
Un po di storia
Proposti gi da oltre 30 anni; Sviluppati nellultimo decennio; Linteresse verso questo tipo di protocolli aumentato con la nascita dei primi sistemi per file-sharing (Napster (1999), Gnutella(2000)); Nel 2000, 50 milioni di utenti hanno scaricato il client di Napster; Napster ha avuto un picco di traffico di circa 7 TB in un giorno;
Un po di storia(2)
Leredit di Napster stata raccolta da Gnutella; Il 14 / 03 / 2000 Justin Frankel e Tom Pepper realizzano la prima release di Gnutella (!!! Solo 14 ore !!! ); La taglia della rete cresce in 7 mesi da 2K a 48K nodi; Tuttavia nel 95% delle query il diametro di 7-8 hop; Le applicazioni pi conosciute che si basano sul protocollo Gnutella sono:
BearShare; LimeWire;
Un po di storia(2)
GET X.mp3 X
La lista degli host presenti nella rete C disponibile sul Server gnutellahost.com; A Il Server gnutellahost.com(127.186.112.097) viene usato dai nodi per il boot:
Cs query hit
Gnutella: Flooding
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; I protocolli usati da Napster e Gnutella non sono scalabili; Per migliorare la scalabilit sono nati i cosiddetti protocolli P2P di seconda generazione che supportano DHT (Distributed Hash Table); Alcuni esempi di questi protocolli sono: Tapestry, Chord, Can, Viceroy, Koorde, kademlia,kelips ;
La scalabilit di un protocollo direttamente legata allefficienza dellalgoritmo Chord usato per il routing e altri n -1 (lookup); Grafo In questo senso, sostanzialmente gli obiettivi sono Totalmente connesso due: O(log n)
Minimizzare il numero di messaggi necessari per fare 1 lookup; Minimizzare, per ogni nodo, le informazioni relative agli 1 O(log n) n -1 altri nodi;
I vari DHT conosciuti differiscono proprio Dimensione tabella dinel routing n routing; il numero dei peer;
IP Address
Nodo x
Nodo y Nodo z
DHT: Chord
Le chiavi sono mappati su un array circolare costituito da 2m identificatori; Il nodo responsabile di una determinata chiave il primo nodo che la succede in senso orario; Ogni nodo x di Chord mantiene due insiemi di vicini: Il primo contiene gli m successori del nodo x pi il predecessore. Questo insieme viene usato per dimostrare la correttezza del Routing; Un insieme m nodi costituito dai responsabili delle chiavi distanziate esponenzialmente m=3 dal nodo x, vale a dire linsieme delle chiavi che si trovano a distanza 2i da x dove 0 i m-1. Questo insieme viene usato per dimostrare lefficienza del Routing;
DHT: Chord(2)
Successors
ID Resp. indice Nod o 1 14 8+1=9 14 2 8+2=11 21 14
3 8+4=12 4 8+8=16 5
8+16=24 6
24 14 32 21 38
24 42
8+32=40 42 Predecessor
Nodo 1
m=6
DHT: Chord(3)
Le informazioni che il nodo deve mantenere sugli altri nodi 000 sono m + m + 1 = 2m +1 (O(log N) WHP); 110 111 necessari Il numero di messaggi per fare lookup m 001 (O(log N) WHP); Lalgoritmo di routing effettua a ogni step il passo pi grande che riesce 110 a fare; 010 Il costo che si paga quando un nodo lascia o si connette alla rete di O(log2N) messaggi WHP; 101 simula un Ipercubo, 011 Lalgoritmo in pratica inoltre si comporta molto bene in un sistema dinamico. 100
I dati presenti nel nodo possono essere recuperati solo se ci sono duplicati. Il routing continua a funzionare? Con quale efficienza? Quanto costa una procedura per ripristinare tutti i link? Chi chiama questa procedura? (vale a dire chi si accorge che un nodo non attivo).
Diverso il problema relativo ai nodi che si sovraccaricano per il traffico generato dalle lookup;
t s
Geographic Layout: Usare un algoritmo per attribuire le chiavi ai nodi in modo che nodi fisicamente vicini abbiano identificatori simili. (Controindicazioni: Bilanciamento del carico, Routing Hot Spots e Sicurezza); PNS(Proximity neighbor selection) La scelta dei vicini non dipende solo dalla distanza fra i nodi sulla rete di overlay ma influenzata anche dalle distanze reali. PRS(Proximity routing selection) Durante la ricerca lalgoritmo di routing non sceglie il successivo step basandosi solo sulla distanza fra i nodi nella rete di overlay; considera anche la distanza effettiva fra i nodi (in termini di RTT);
PRS e PNS sono i sistemi pi usati,(sembra che PNS offre prestazioni migliori di PRS); PRS e PNS partono dal presupposto che possibile conoscere il RTT con ogni altro nodo (non fattibile, ma possibile ottenere delle stime a un costo relativamente basso);
DHT: Sicurezza
E possibile realizzare un protocollo P2P che resiste ad attacchi di tipo denial of service; E necessario replicare i dati; E importante usare funzioni hash One Way (per i dati e per i nodi); E importante osservare che tutte le dimostrazioni relative alla sicurezza dei vari algoritmi incontrati finora si basano sul fatto che le chiavi vengono associate ai files in modo casuale (quasi tutti gli algoritmi usano SHA);
P2P(quasi): WinMx
E basato su una rete di Server (circa 50) chiamata OpenNap nata subito dopo che stato chiuso il Server di Napster; Viene usata anche da NapMx; In WinMx viene fatta una distinzione fra nodi di connessione primaria:
direttamente connessi ai server; sono usati anche per il Routing; connessi solo ai nodi di connessione primaria; non si occupano di Routing;
P2P ibrido
P2P(quasi): KaZaA
Viene usata una rete proprietaria; In KaZaA viene fatta una distinzione fra nodo e Supernodo(server):
Ogni nodo semplice collabora con il proprio Supernodo; I Supernodi collaborano tra loro e con i propri sottonodi; Come sono connessi i Supernodi?
P2P ibrido
Gnutella2: Ricerca(1)
Gnutella2
Future
Random walker approach;(il nodo che origina la query ne controlla lesecuzione e in ogni istante pu decidere se continuare o abortire la ricerca). Random or crawling mesh approach;(il nodo che origina la query iterativamente contatta alcuni nodi della rete, finch non si verifica una determinata condizione). Guided mesh approach;(DHT)
Gnutella2: Ricerca(2)
Su una rete pubblica di grandi dimensioni non possibile effettuare direttamente la ricerca di un oggetto:
ci sono troppi nodi da contattare; il costo per mettersi in contatto con un nodo troppo alto paragonato alla probabilit di successo su quel nodo; la maggior parte dei nodi non dispongono di risorse sufficienti per far fronte a un numero notevole query; non tutti i nodi si possono contattare direttamente (es. firewall);
Gnutella2: Ricerca(3)
Soluzione? P2P Ibrido:
Nodo Hub
Gnutella2 organizza i nodi in un sistema gerarchico a due livelli dove i nodi ad alta capacit chiamati Hub rispondono alle query per le proprie foglie;
Viene ridotto il numero totale dei nodi da contattare; Un Hub contiene informazioni relative a tanti oggetti, quindi maggiore la probabilit che una query trovi unistanza di un oggetto; E possibile avere informazioni su nodi down;
Gnutella2: Ricerca(4)
Per evitare che questo sistema degeneri in un sistema centralizzato viene limitato il numero di leaves per ogni hub;(circa 150) La comunicazione fra leaves e hub diretta; Problema Inter-Hub Communication;
Ogni hub conosce solo i propri vicini; Quando un hub riceve una query dal nodo di origine, oltre a elaborarla, la inoltra ai propri vicini che non la inoltrano ulteriormente; (in pratica TTL = 2) Ad esempio se la ricerca viene inviata ad un hub che ha 5 vicini in un solo passo (con una query) vengono analizzate le foglie relative a 6 hub; Linsieme dei nodi raggiunto in un passo viene chiamato cluster;
Viene ricercato lelemento nel proprio cluster Viene ricercato lelemento nei cluster vicini(a distanza 1) pi qualche cluster lontano scelto a caso; Viene ricercato lelemento nei cluster vicini dei vicini (a distanza 2) pi qualche cluster lontano scelto a caso;
Non possibile per ogni hub mantenere la lista di tutti gli hub; (Non scalabile); La lista dei cluster a distanza i+1 ottenuta in risposta alla ricerca effettuata sui cluster a distanza i; Le risposte contengono inoltre altre informazioni utili per le statistiche (es. numero di nodi presenti nel cluster);
Ogni hub mantiene la lista degli hub vicini (direttamente connessi) pi una cache di hub lontani aggiornata di tanto in tanto; Viene mantenuta una done list; Le ricerche allinterno del cluster sono fatte usando TCP; Le ricerche fra cluster sono fatte usando UDP;
UDP SEARCH TCP SEARCH
la lista dei propri vicini; una lista di hub lontani (da aggiornare di tanto in tanto); una done list (i nodi a cui abbiamo inviato una query pi i loro vicini); una try list; (i vicini dei vicini dei nodi a cui abbiamo inviato una query);
Gnutella2: Boot
E necessario conoscere almeno un host attivo; Chi mantiene la lista degli host attivi?
un Server; (Gnutella, Napster) tanti Server; (Gnutella2) nessun Server.()
Overnet
Sistema P2P per il file sharing sviluppato dalla MetaMachine; Non ci sono server; (P2P puro) Usano DHT (Distribuited Hash Table) con ID a 128 bit; Purtroppo non Open Source;
Overnet:boot
Ogni nodo mantiene una cache dei nodi connessi alla rete; Durante la fase di boot il nodo tenta di connettersi ai nodi presenti nella cache; Se questa fase non ha successo viene richiesto lindirizzo di un nodo on-line;(A regime non capita praticamente mai) In ogni caso stato creato un canale IRC per mantenere queste informazioni;
P2P(file-storage-service): FreeNet
Ogni nodo mette a disposizione un po di spazio; Le operazioni possibili sono get e put di un file; Per aggiugere un nuovo file si invia un send message nella rete e un identificatore GUID (Global Unique Identifier) in base al quale il file viene memorizzato in un insieme di nodi (Data Partition); Per recuperare un file basta inviare un messaggio di richiesta contenente il GUID del file; Servizi aggiuntivi:
Persistenza; Anonimia;
P2P Puro
P2P: FreeNet(Routing)
Riferimenti
http://www.pdos.lcs.mit.edu/chord/ http://www.napster.com/ http://www.gnutella .com/ http:// www.gnutella2.com/ http:// www.shareaza.com/ http://www.overnet.com/ http:// www.openp2p.com/ S. Ratnasamy, S. Shenker, and I. Stoica. Routing algorithms for DHTs: Some open questions. In In 1st International Peer To Peer Systems Workshop (IPTPS02). I. Stoica, R. Morris, D. Liben-Nowell, D. R. Karger, M. F. Kaashoek, F. Dabek, H. Balakrishnan, Chord: A Scalable Peer-to-peer Lookup Protocol for Internet Applications. In IEEE/ACM Trans. on Networking, 2003.