260 likes | 377 Views
Sistemi Peer To Peer (P2P). Gennaro Cordasco cordasco[@]dia.unisa.it http://www.dia.unisa.it/~cordasco Laboratorio ISISLAB 2 (DIA Piano 2). Peer-to-Peer (P2P). File Sharing?
E N D
Sistemi Peer To Peer (P2P) • Gennaro Cordasco • cordasco[@]dia.unisa.it • http://www.dia.unisa.it/~cordasco • Laboratorio ISISLAB2 (DIA Piano 2)
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;
Kademlia pastry can jxta fiorana napster united devices freenet ? open cola Kelips ocean store netmeeting farsite gnutella icq ebay morpheus Viceroy limewire seti@home bearshare uddi grove jabber popular power kazaa folding@home tapestry mojo nation process tree Chord P2P: Applicazioni • File Sharing system • File Storage system • Distributed file system • Grid Computing • Redundant storage • Anonymity system • Collaboration system • Instant Messaging system
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;
P2P: Storia(2) • Sfortunatamente i primi sistemi P2P soffrivano di gravi problemi di scalabilità • Napster era un sistema P2P con “lookup” centralizzata
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; • …
GET X X P2P: Storia(4) X • 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; C A E' un sistema P2P con lookup decentralizzata B D E A’s query (e.g., X) C’s query hit E’s query hit X
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 …;
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
Id = 5342, Nodo? ID 0 1 2 3 4 5 6 … 2m Nodo x Nodo y Nodo z … 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
P2P Classificazione • Sistemi P2P Centralizzati (a.k.a. Ibridi) • Sistemi P2P Gerarchici • Sistemi P2P Puri • Sistemi P2P che utilizzano SuperPeer
P2P Classificazione • Sistemi P2P Centralizzati (a.k.a. Ibridi) Resource request P2P Communication
P2P Classificazione • Sistemi P2P Gerarchici Resource request P2P Communication Servers/Coordinators Communication
P2P Classificazione • Sistemi P2P Puri P2P Communication
P2P Classificazione • Sistemi P2P che utilizzano SuperPeer Resource request P2P Communication Servers/Coordinators Communication
P2P Classificazione(2) • E’ possibile classificare i sistemi P2P in base all’applicazione fornita: • File Sharing • Communication • Distributed Computing • Collaboration
P2P Desiderata • Scalability • Stability • Performance • Decentralization • Load Balancing • Topology awareness • Flexibility
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).
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;
Condizioni necessarie ma non sufficienti 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.
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
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).
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à.
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)