26
Sistemi P2P Sistemi Peer To Peer (P2P) • Gennaro Cordasco cordasco [@]dia.unisa.it http://www.dia.unisa.it/~cordasco – Laboratorio ISISLAB 2 (DIA Piano 2)

Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Embed Size (px)

Citation preview

Page 1: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

Sistemi Peer To Peer (P2P)

• Gennaro Cordasco– cordasco[@]dia.unisa.it– http://www.dia.unisa.it/~cordasco– Laboratorio ISISLAB2 (DIA Piano 2)

Page 2: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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;

Page 3: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Applicazioni

• File Sharing system• File Storage system• Distributed file system• Grid Computing • Redundant storage• Anonymity system• Collaboration system• Instant Messaging system

napster

gnutellamorpheus

kazaa

bearshare seti@home

folding@home

ebay

limewire

icq

fiorana

mojo nation

jxtaunited devices

open cola

uddi

process tree

can

Chord

ocean store

farsite

pastry

tapestry

?grove

netmeeting

freenet

popular powerjabber

Kademlia

Kelips

Viceroy

Page 4: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

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;

Page 5: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Storia(2)

• Sfortunatamente i primi sistemi P2P soffrivano di gravi problemi di scalabilità

• Napster era un sistema P2P con “lookup” centralizzata

Page 6: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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;– …

Page 7: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Storia(4)

• 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;– La ricerca di un file usa il flooding (non è

scalabile):– controllo dei cicli;– TTL per evitare di congestionare la rete;

CA

B D

EA’s query (e.g., X)

C’s query hit

E’s query hit

X

X

GET X X

Page 8: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Storia(4)

Page 9: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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 …;

Page 10: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

Esempi

Page 11: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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

Page 12: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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 entryNodo x

Nodo y

Nodo z

ID0123456…2m…

Page 13: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione

• Sistemi P2P Centralizzati (a.k.a. Ibridi)

• Sistemi P2P Gerarchici• Sistemi P2P Puri• Sistemi P2P che utilizzano SuperPeer

Page 14: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione

• Sistemi P2P Centralizzati (a.k.a. Ibridi)Resource request

P2P Communication

Page 15: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione

• Sistemi P2P Gerarchici

Servers/Coordinators Communication

Resource request

P2P Communication

Page 16: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione

• Sistemi P2P Puri

P2P Communication

Page 17: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione

• Sistemi P2P che utilizzano SuperPeer

Servers/Coordinators Communication

Resource request

P2P Communication

Page 18: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Classificazione(2)

• E’ possibile classificare i sistemi P2P in base all’applicazione fornita:– File Sharing– Communication– Distributed Computing– Collaboration

Page 19: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P Desiderata

• Scalability• Stability• Performance• Decentralization• Load Balancing• Topology awareness• Flexibility

Page 20: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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).

Page 21: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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;

Page 22: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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:

• Minimizzare il diametro;• Minimizzare l’average path lenght (APL), vale a dire, la

distanza media fra due nodi nel grafo.

Condizioni necessarie ma non sufficienti

Page 23: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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

t

Page 24: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Incorporating Geography(2)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).

Page 25: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

Sistemi P2P

P2P: Extreme HeterogeneityP2P: 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à.

Page 26: Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco – cordasco[@]dia.unisa.itcordasco[@]dia.unisa.it – cordascocordasco

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 pseudo-casuale (quasi tutti gli algoritmi usano SHA-1)