Sistemi P2P Sistemi Peer To Peer (P2P) Gennaro Cordasco –...

Preview:

Citation preview

Sistemi P2P

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

• 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

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;

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)

• 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

Sistemi P2P

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

Nodo y

Nodo z

ID0123456…2m…

Sistemi P2P

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

Servers/Coordinators Communication

Resource request

P2P Communication

Sistemi P2P

P2P Classificazione

• Sistemi P2P Puri

P2P Communication

Sistemi P2P

P2P Classificazione

• Sistemi P2P che utilizzano SuperPeer

Servers/Coordinators Communication

Resource request

P2P 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:

• 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

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

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

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

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)

Recommended