Peer To Peer (P2P) Peer To Peer (P2P) Gennaro Cordasco Gennaro Cordasco napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire icq fiorana mojo nation jxta united devices open cola uddi process tree can chord ocean store farsite pastry tapestry ? grove netmeeting freenet popular power aim jabber Kademlia Koorde Kelips Viceroy
Peer To Peer (P2P) Gennaro Cordasco napster gnutella morpheus
kazaa bearshare seti@home folding@home ebay limewire icq fiorana
mojo nation jxta united devices open cola uddi process tree can
chord ocean store farsite pastry tapestry ? grove netmeeting
freenet popular power aim jabber Kademlia Koorde Kelips
Viceroy
Slide 2
Sommario IntroduzioneClassificazione Storia ed Esempi Concetto
di Scalabilit Distributed Hash Table (DHT) Chord Chord
Slide 3
Sommario(2) Open Questions Capacit di far fronte ai fallimenti
Capacit di far fronte ai fallimenti Routing Hot Spots Routing Hot
Spots Incorporating Geography Incorporating Geography Extreme
Heterogeneity Extreme Heterogeneity Sicurezza SicurezzaApplicazioni
WinMx WinMx Kazaa Kazaa Overnet Overnet Freenet Freenet
Slide 4
Cosa vuol dire Peer to Peer (P2P)? Sistema distribuito nel
quale ogni nodo ha identiche capacit e responsabilit e tutte le
comunicazioni sono potenzialmente simmetriche; Peer to peer
(obiettivi): condividere risorse e servizi (dove per risorse e
servizi intendiamo: scambio di informazioni, cicli di CPU, spazio
sul disco ); I sistemi P2P possiedono molti aspetti tecnici
interessanti: controllo decentralizzato; adattabilit; si
organizzano e si gestiscono da soli;
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)
Slide 7
P2P: Classificazione(2) Parleremo di applicazioni: P2P pure se:
le fasi di boot, lookup e scambio di file sono P2P; P2P se: le fasi
di lookup e scambio di file sono P2P; la fase di boot utilizza
qualche SERVER; P2P Ibride se: la fase di scambio dei file P2P; la
fase di boot utilizza qualche SERVER; nella fase di lookup vengono
usati Peer particolari: Hub (Direct Connect) SuperPeer, Ultra
Peer(Gnutella2) Supernodo (KaZaA) NodoRandezVous (JXTA) MainPeer
(EDonkey) Server (WinMX)
Slide 8
P2P: Classificazione(2) Consideriamo solo loperazione lookup:
Lookup Centralizzato Lookup Centralizzato Indice centralizzato;
Indice centralizzato; Lookup Decentralizzato Lookup Decentralizzato
Indice completamente distribuito; Indice completamente distribuito;
Lookup Ibrido Lookup Ibrido Pi sistemi centralizzati collegati in
un sistema decentralizzato; In tutti e tre questi sistemi il
trasferimento e la memorizzazione dei file P2P;
Slide 9
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;
Slide 10
Un po di storia(2) Leredit di Napster stata raccolta da
Gnutella; Il 1 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;
Slide 11
Un po di storia(2) La lista degli host presenti nella rete
disponibile sul Server gnutellahost.com; Il Server
gnutellahost.com(127.186.112.097) viene usato dai nodi per il boot:
Single point of failure; Gnutella non P2P Puro!!!; La Ricerca di un
file usa il flooding (non scalabile): controllo dei cicli; TTL per
evitare di congestionare la rete; C A BD E As query (e.g., X) Cs
query hit Es query hit X X GET X.mp3 X
Slide 12
Gnutella: Flooding
Slide 13
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 ;
Slide 14
Scalabilit(2) La scalabilit di un protocollo direttamente
legata allefficienza dellalgoritmo usato per il routing (lookup);
In questo senso, sostanzialmente gli obiettivi sono due:
Minimizzare il numero di messaggi necessari per fare lookup;
Minimizzare, per ogni nodo, le informazioni relative agli altri
nodi; I vari DHT conosciuti differiscono proprio nel routing;
Dimensione tabella di routing Messaggi necessari per trovare una
chiave 1 1 n -1 O(log n) Chord e altri Grafo Totalmente connesso
Anello n il numero dei peer;
Slide 15
P2P di seconda generazione e DHT A ogni file e ad ogni nodo
associata una chiave; La chiave viene di solito creata facendo
lhash del nome del file o dellIP del nodo; Ogni nodo del sistema
responsabile di un insieme di file/chiavi e tutti realizzano una
DHT; Lunica operazione che un sistema DHT deve fornire lookup(key),
la quale restituisce lidentit del responsabile di una determinata
chiave. IP Address
Slide 16
P2P di seconda generazione e DHT Tutti i nodi del sistema
condividono una tabella hash; Nodo x Nodo y Nodo z ID
01234562m01234562m Conoscono la struttura della tabella; Ma non
conoscono il responsabile di una determinata entry;
Slide 17
DHT: Chord Le chiavi sono mappati su un array circolare
costituito da 2 m 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 dal nodo x, vale a dire linsieme delle chiavi che
si trovano a distanza 2 i da x dove 0 i m-1. Questo insieme viene
usato per dimostrare lefficienza del Routing; m=3
DHT: Chord(3) Le informazioni che il nodo deve mantenere sugli
altri nodi sono m + m + 1 = 2m +1 (O(log N) WHP); Il numero di
messaggi necessari per fare lookup m (O(log N) WHP); Lalgoritmo di
routing effettua a ogni step il passo pi grande che riesce a fare;
Il costo che si paga quando un nodo lascia o si connette alla rete
di O(log 2 N) messaggi WHP; Lalgoritmo in pratica simula un
Ipercubo, inoltre si comporta molto bene in un sistema dinamico.
000 101 100 011 010 001 110 111 110
Slide 20
DHT: Capacit di far fronte ai fallimenti Cosa succede se un
nodo cade? 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).
Slide 21
DHT: Routing Hot Spots Se una chiave richiesta pi spesso, il
responsabile della chiave e anche i suoi vicini potrebbero
sovraccaricarsi; Per ovviare al problema si possono usare
meccanismi di caching e di duplicazione; Diverso il problema
relativo ai nodi che si sovraccaricano per il traffico generato
dalle lookup; Questo tipo di traffico abbastanza difficile da
individuare e da gestire;
Slide 22
DHT: Incorporating Geography Finora abbiamo misurato le
prestazioni del routing contando il numero di hop necessari a
individuare il responsabile di una chiave; Sarebbe utile, inoltre,
minimizzare la latenza del singolo hop; s t s t
Slide 23
DHT: Incorporating Geography(2) Alcune tecniche: 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);
Slide 24
DHT: Incorporating Geography(3) Osservazioni: 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);
Slide 25
Incorporating geography: Chord Chord e PRS: Lalgoritmo di
routing non va semplicemente al nodo pi vicino sulla rete di
overlay, ma ad esempio potrebbe considerare i due nodi pi vicini e
scegliere quello con RTT minore; Le path-lenght si allungano ma
rimangono O(log n); In particolare: ad ogni passo la distanza fra
il nodo destinazione e il nodo corrente si riduce da a 3/4 In
particolare: ad ogni passo la distanza fra il nodo destinazione e
il nodo corrente si riduce da a 3/4 Nel caso peggiore la path
lenght quindi log 4/3 n. 000 101 100 011 010 001 110 111 110
Slide 26
Incorporating geography: Chord Chord e PNS: La finger table
viene riempita considerando anche il RTT: li-esimo finger del nodo
non semplicemente il responsabile della chiave +2 i ma il nodo pi
vicino(RTT) fra i nodi responsabili delle chiavi nellintervallo [
+2 i-1, +2 i ]. Anche in questo caso le path-lenght si allungano ma
rimangono O(log n) (dimostrazione analoga alla precedente). Anche
in questo caso le path-lenght si allungano ma rimangono O(log n)
(dimostrazione analoga alla precedente). Anche usando
simultaneamente PRS e PNS la lunghezza asintotica delle path non
varia; 000 101 100 011 010 001 110 111
Slide 27
DHT: Extreme Heterogeneity I nodi connessi a questo tipo di
reti sono eterogenei (Es. capacit di calcolo e banda); E possibile
progettare algoritmi di routing che considerino anche questa
eterogeneit; La tecnica pi diffusa per risolvere questo problema
consiste nel considerare dei nodi virtuali tutti con le stesse
capacit e assegnare a ogni nodo reale un numero di nodi virtuali
proporzionale alle proprie capacit;
Slide 28
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);
Slide 29
P2P(quasi): Direct Connect (DC++) P2P ibrido Usa una serie di
hub (server) che mantiene le informazioni relative a un gruppo di
utenti; Una volta connessi ad un hub si condivide file solo con i
nodi connessi a tale hub; E possibile connettersi a pi hub
contemporaneamente; Gli hub sono connessi tra loro ma non si
scambiano informazioni relative alla ricerca di una determinata
chiave (Sono tanti piccoli Napster); La lista degli hub attivi
viene mantenuta da tutti gli hub e aggiornata periodicamente dagli
altri hub mediante messaggi del tipo I am here;
Slide 30
P2P(quasi): WinMx P2P ibrido 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; e nodi di
connessione secondaria: connessi solo ai nodi di connessione
primaria; non si occupano di Routing;
Slide 31
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
Slide 32
Gnutella2: meglio un uovo oggi. Lobbiettivo della lookup in
Gnutella trovare tutti i peer che dispongono di un determinato
oggetto (non ci sono limitazioni sul tempo); Lobbiettivo della
lookup in Gnutella2 trovare, nel minor tempo possibile, almeno un
peer (se c) che dispone di un determinato oggetto; una volta
trovata unistanza delloggetto desiderato possibile scegliere se
fermarsi o continuare la ricerca; Labilit di trovare almeno
unistanza di un oggetto molto importante, altrimenti non sono
possibili altre azioni; Bisogna trovare un modo per tenere sotto
controllo la ricerca;
Slide 33
Gnutella2: Ricerca(1) Esistono tre approcci per controllare la
ricerca; 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 Future
Slide 34
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);
Slide 35
Gnutella2: Ricerca(3) Soluzione? P2P Ibrido: 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; La restizione della rete agli Hub P2P; Hub vantaggi: 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; Nodo Hub
Slide 36
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;
Slide 37
Gnutella2: Inter-Hub Communication(1) Nodo Hub 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;
Slide 38
Gnutella2: Inter-Hub Communication(2) Nodo Hub Quando un nodo
richiede la ricerca di un oggetto al proprio hub: 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;
Slide 39
Gnutella2: Inter-Hub Communication(3) Nodo Hub 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);
Slide 40
Gnutella2: Inter-Hub Communication(4) Nodo Hub 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; TCP SEARCH UDP
SEARCH
Slide 41
Gnutella2: Inter-Hub Communication(Esempio) cluster try
list
Slide 42
Gnutella2: Inter-Hub Communication(5) Nodo Hub Ogni hub deve
mantenere quindi: 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); per
ogni query
Slide 43
Slide 44
Gnutella2: Boot Come fa un nuovo nodo a connettersi alla rete?
E necessario conoscere almeno un host attivo; Chi mantiene la lista
degli host attivi? un Server; (Gnutella, Napster) tanti Server;
(Gnutella2) nessun Server.( )
Slide 45
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;
Slide 46
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;
Slide 47
Slide 48
P2P(file-storage-service): FreeNet P2P Puro 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;
Slide 49
P2P: FreeNet(Routing) E tuttaltro che efficiente;
Slide 50
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.