Sistemi Peer To Peer (P2P)
• Gennaro Cordasco
– cordasco[@]dia.unisa.it
– http://www.dia.unisa.it/~cordasco
– Laboratorio ISISLAB2 (DIA Piano 2)
Sistemi P2P
Peer-to-Peer (P2P)
• File Sharing?
• 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:
– permettono di sfruttare risorse altrimenti non utilizzate;
– controllo decentralizzato (niente Server);
– assenza di punti nevralgici (single point to failure);
– si organizzano da soli;
Sistemi P2P
P2P: Applicazioni
Kademlia
fiorana
•
freenet
•
open cola
Kelips
ocean
store
• Distributed file system
netmeeting
farsite
•gnutella
Grid Computing
icq
ebay
morpheus
Viceroy
• Redundant storage
limewire
seti@home
bearshare
• Anonymity
system
uddi
grove
jabber
popular power
• Collaboration
system
kazaa
folding@home
tapestry
• Instant Messaging system
pastry systemcan
File Sharing
napster
united
devices
File Storage
system
jxta
?
process tree
Sistemi P2P
Chord
mojo nation
P2P: Storia
• Proposti già da oltre 30 anni (ARPAnet era una rete P2P!!!);
• L’introduzione del Web e la grande differenza, in termini di prestazioni, fra
macchine “Client” e “Server” ha spostato l’attenzione verso i sistemi
Client\Server;
• Successivamente, l’aumento delle prestazioni delle macchine “Client” e
l’aumento delle capacità di banda della Rete, hanno portato un maggiore
interesse verso le risorse che si trovano all’estremità (edge) della rete.
• Alla fine degli anni novanta sono nati quindi i primi sistemi P2P (ICQ,
Seti@Home)
• L’interesse 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;
Sistemi P2P
P2P: Storia(2)
• Sfortunatamente i primi sistemi P2P soffrivano
di gravi problemi di scalabilità
• Napster era un sistema P2P con “lookup”
centralizzata
Sistemi P2P
P2P: Storia(3)
• L’eredità 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;
– …
Sistemi P2P
P2P: Storia(4)
GET X
X
X
• La lista degli host presenti nella rete è disponibile sul Server
C
gnutellahost.com;
A
• Il Server gnutellahost.com(127.186.112.097) viene usato dai
nodi per il boot:
– Single point of failure; B
D
– La ricerca di un file usa il flooding (non è scalabile):
– controllo dei cicli;
query (e.g., X)
E
– TTLA’sper
evitare di congestionare la rete;
C’s query hit
E’s query hit
Sistemi P2P
X
P2P: Storia(4)
Sistemi P2P
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;
• 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
DHTs (Distributed Hash Tables);
• Alcuni esempi di questi protocolli sono: Tapestry,
Chord, CAN, Viceroy, Koorde, kademlia, kelips …;
Sistemi P2P
Esempi
Sistemi P2P
P2P di seconda generazione e DHT
• A ogni risorsa e ad ogni nodo è associata una chiave
• La chiave viene di solito creata facendo l’hash del
nome della risorsa o dell’IP del nodo
• Ogni nodo del sistema è responsabile di un insieme di
risorse/chiavi e tutti realizzano una DHT
• L’unica operazione che un sistema DHT deve fornire
è lookup(chiave), la quale restituisce l’identità del
responsabile di una determinata chiave
Sistemi P2P
P2P di seconda generazione e DHT
• Tutti i nodi del sistema condividono una tabella hash
• Conoscono la struttura della tabella
• Ma non conoscono il responsabile di una determinata
entry
ID
Nodo x
Nodo y
Nodo z
…
Sistemi P2P
0
1
2
3
4
5
6
…
2m
P2P Classificazione
•
•
•
•
Sistemi P2P Centralizzati (a.k.a. Ibridi)
Sistemi P2P Gerarchici
Sistemi P2P Puri
Sistemi P2P che utilizzano SuperPeer
Sistemi P2P
P2P Classificazione
• Sistemi P2P Centralizzati (a.k.a. Ibridi)
Resource request
P2P Communication
Sistemi P2P
P2P Classificazione
• Sistemi P2P Gerarchici
Resource request
P2P Communication
Servers/Coordinators
Communication
Sistemi P2P
P2P Classificazione
• Sistemi P2P Puri
P2P Communication
Sistemi P2P
P2P Classificazione
• Sistemi P2P che utilizzano SuperPeer
Resource request
P2P Communication
Servers/Coordinators
Communication
Sistemi P2P
P2P Classificazione(2)
• E’ possibile classificare i sistemi P2P in base
all’applicazione fornita:
–
–
–
–
File Sharing
Communication
Distributed Computing
Collaboration
Sistemi P2P
P2P Desiderata
•
•
•
•
•
•
•
Scalability
Stability
Performance
Decentralization
Load Balancing
Topology awareness
Flexibility
Sistemi P2P
P2P: 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).
Sistemi P2P
P2P: 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;
Sistemi P2P
P2P: Performance
• 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.
Sistemi P2P
P2P: Incorporating Geography
• Di solito le le prestazioni del routing dei sistemi P2P si
misurano contando il numero di hop necessari a individuare il
responsabile di una chiave a parità di link nella rete
• Sarebbe utile, inoltre, minimizzare la latenza del singolo hop
• In pratica vogliamo che nodi vicini sulla rete DHT, siano
“fisicamente” vicini
s
t
s
Sistemi P2P
t
P2P: 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
l’algoritmo 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).
Sistemi P2P
P2P: 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à.
Sistemi P2P
P2P: 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 nodi e alle risorse in modo pseudocasuale (quasi tutti gli algoritmi usano SHA-1)
Sistemi P2P