36
Peer To Peer (o quasi) Gennaro Cordasco

Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

Embed Size (px)

Citation preview

Page 1: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

Peer To Peer (o quasi)

Gennaro Cordasco

Page 2: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

?Peer to Peer (P2P)?

P2P (o quasi)

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 power

aim

jabber

Page 3: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

• Cosa vuol dire Peer to Peer(P2P); • Un po’ di storia;• Distributed Hash Table (DHT);• Alcuni problemi aperti su DHT;• Alcune applicazioni (quasi… );• JXTA;

Sommario

P2P (o quasi)

Page 4: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

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:• decentralized control;• adaptation;• self-organization;

P2P (o quasi)

Page 5: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

Un po’ di storia

• Proposti già da oltre 30 anni;

• Sviluppati nell’ultimo decennio;

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

• L’11/12/2002 è stata aperta l’asta online per la vendita del server di Napster;

Page 6: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P di seconda generazione e DHT

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

• Problema, i protocolli usati da Napster e Gnutella non sono scalabili;

(In realtà non sono P2P!!!)

• 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, Pastry, Chord, Can, Viceroy;

Ip address

Page 7: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P di seconda generazione e DHT

• A ogni file e ad ogni nodo è associata una chiave;

• La chiave viene di solito creata facendo l’hash del nome del file;

• Ogni nodo del sistema è responsabile di un insieme di file(o chiavi) e tutti realizzano una DHT;

• L’unica operazione che un sistema DHT deve fornire è lookup(key), la quale restituisce l’identità del responsabile di una determinata chiave.

Ip address

Page 8: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT Utilità

• File sharing system;

• File storage system;

• Distributed file system ;

• Redundant storage;

• Availability;

• Performance.

• Permanence;

• Anonymity;

• Chat service;

P2P is as P2P does

Page 9: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT Routing

• La scalabilità di un protocollo è direttamente legata all’efficienza dell’algoritmo usato per il routing;

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

Page 10: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT Routing (Tapestry)

• Realizzazione dinamica dell’algoritmo di Plaxton et al.(che non si adattava a sistemi dinamici);

• Supponendo che le chiave è costituita da un intero positivo l’algoritmo di routing corregge a ogni passo un singolo digit alla volta;

• Per fare ciò un nodo deve avere informazioni sui nodi responsabili dei prefissi della sua chiave; (O(log N) nodi)

• Il numero di messaggi necessari per fare lookup è O(log N);

• L’algoritmo in pratica simula un Ipercubo;

Page 11: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (Chord)

• Le chiavi sono mappati su un array circolare;

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

• I log N successori del nodo x più il predecessore. Questo insieme viene usato per dimostrare la correttezza del Routing;

• Un insieme log N nodi distanziati esponenzialmente dal nodo x, vale a dire l’insieme dei nodi che si trovano a distanza 2i da x per i che va da 0 a log N – 1. Questo insieme viene usato per dimostrare l’efficienza del Routing;

Page 12: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (Chord)

• Le informazioni che il nodo deve mantenere sugli altri nodi sono log N + log N + 1 = O(log N);

• Il numero di messaggi necessari per fare lookup è O(log N);

• Il costo che si paga quando un nodo lascia o si connette alla rete è di O(log2N) messaggi;

• L’algoritmo in pratica simula un Ipercubo, inoltre si comporta molto bene in un sistema dinamico;

• Svantaggi:• una sola dimensione;• una sola strada;

Page 13: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (CAN)

• I nodi sono mappati su un toro d-dimensionale;

• A ogni nodo è associato un sottoinsieme di questo spazio d-dimensionale;

• Ogni nodo mantiene la lista dei nodi responsabili dei sottospazi che confinano con il proprio sottospazio;

• Ogni nodo ha O(d) vicini (due per ogni dimensione);

• Il routing avviene in passi, in media ;

• Da notare che se usiamo d = log N dimensioni abbiamo O(log N) vicini e il routing ha costo:

)(log)2*(log)2*(log)*(loglog

log

1

loglog

1log

1

NONONONNON

NNN N

)(1

ddNO dNd1

4

Page 14: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (Viceroy)

• I nodi sono mappati su una butterfly e contemporaneamente su un array circolare;

• Ogni nodo ha un identificatore addizionale chiamato livello;

• Tre tipi di link:

• General link: predecessore e successore sull’array circolare (2 link);

• Level ring: connette i nodi di uno stesso livello (2 link);

• Butterfly link: realizza la butterfly (2 link);

• Ogni nodo ha O(1) vicini;

• Il routing avviene in O(log N) passi in media e O(log2 N) passi WHP;

Page 15: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (Viceroy)

Page 16: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Routing (Osservazioni)

• Esistono un bel po’ di soluzioni; (Ce ne sono altre!!!)

• Le prestazioni sono più o meno uguali (in teoria);

• La domanda da porsi però è “Il gioco vale la candela …”;

Ip address

Page 17: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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

Page 18: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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;

Page 19: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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;

• In pratica vogliamo che nodi vicini sulla rete DHT, siano “fisicamente” vicini;

• Alcune tecniche:

•Proximity Neighbor Selection: Alcuni algoritmi danno la possibilità di scegliere più percorsi per effettuare il routing, un’idea potrebbe essere quella di scegliere ad ogni passo il vicino “fisicamente” più vicino;

Page 20: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Incorporating Geography

• 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);

• Mentre è possibile dimostrare che le latenze fra i nodi di una internet si possono modellare ragionevolmente su uno spazio d-dimensionale con d≥2, ancora non è stato trovato un mapping “ragionevole” su un sistema a 1 dimensione.

(Problema: Chord ad esempio ha una sola dimensione).

Page 21: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Incorporating Geography (CAN)

• Un idea:

• Supponiamo di avere m macchine sempre attive che svolgono il compito di marcatori. (Non devono necessariamente far parte del sistema);

• Ogni nodo misura il suo RTT verso ogni marcatore e ordina i marcatori in ordine crescente di RTT;

• Esistono m! disposizioni diverse dei marcatori;

• Si partiziona lo spazio delle chiavi in m! zone uguali;

• Si assegna lo stesso sottospazio ai nodi che calcolano la stessa disposizione dei marcatori;

• Si può usare anche su spazi a una sola dimensione?

Page 22: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

DHT: Incorporating Geography

• Problemi:

• Bilanciamento del carico;

• Routing Hot Spots;

• Sicurezza;

• La scelta della posizione dei marcatori è un fattore critico;

• Chi fa da marcatore?

Page 23: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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

Page 24: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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

Page 25: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

Hybrid– Centralized index, P2P

file storage and transfer

Super-peer– A “pure” network of

“hybrid” clusters

Pure– functionality completely

distributed

P2P(quasi): Classificazione

Page 26: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): Direct Connect (DC++)

• 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”;

P2P ibrido

Page 27: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): WinMx

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

SuperPeer-ibrido P2P

Page 28: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

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?

SuperPeer P2P

Page 29: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): Gnutella2

• Struttura simile a KaZaA ;

• In Gnutella2 il numero massimo di nodi affidati a un hub è basso(150);

• Il costo di comunicazione fra nodi e hub è basso (la comunicazione a questo livello non è P2P e in un certo senso è giusto che sia così…);

Nodo

Hub

SuperPeer P2P

Page 30: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): Gnutella2

• Il problema principale è rappresentato dalla comunicazione fra gli hub:

• Gli hub sono raggruppati in cluster;

• Quando un nodo richiede la ricerca di un proprio elemento al proprio hub:

• Viene ricercato l’elemento nel proprio cluster;

• Viene ricercato l’elemento nei cluster vicini(a distanza 1) più qualche cluster lontano scelto a caso;

• Viene ricercato l’elemento nei cluster vicini dei vicini (a distanza 2) più qualche cluster lontano scelto a caso;

• ….

Nodo

Hub

Page 31: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): Gnutella2

• La lista degli hub a distanza i+1 è ottenuta in risposta alla ricerca effettuata sugli hub a distanza i;

• Ogni hub mantiene la lista degli hub vicini più una cache di hub lontani aggiornata di tanto in tanto;

• Viene mantenuta una done list;

• Le ricerche all’interno del cluster sono fatte usando TCP;

• Le ricerche fra cluster sono fatte usando UDP;

Nodo

Hub

UDP SEARCH

TCP SEARCH

Page 32: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P: Gnutella

• La ricerca usa il flooding;

• La ricerca risulta inefficiente e non scalabile;

P2P Puro

Page 33: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(quasi): Osservazioni

• In generale i sistemi che hanno più server sono più scalabili dei sistemi che hanno meno server ma, allo stesso tempo, più lenti nelle ricerche;

• I server sono usati solo per la ricerca del dati;

• Tutte i protocolli visti finora sono usati per file-sharing;

• Tutti usano un server per il boot;

• Ma vale la pena chiamarli P2P???

Page 34: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P(file-storage-service): FreeNet

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

P2P Puro

Page 35: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

P2P: FreeNet(Routing)

• E’ tutt’altro che efficiente;

Page 36: Peer To Peer (o quasi) Gennaro Cordasco.Peer to Peer (P2P)? P2P (o quasi) napster gnutella morpheus kazaa bearshare seti@home folding@home ebay limewire

P2P (o quasi)

JXTA

• Sun ha realizzato una piattaforma open source JXTA (sta per juxtapose) per creare in modo facile applicazioni P2P.

• JXTA non è una libreria di codice; piuttosto, è un insieme di protocolli che può essere implementato in ogni linguaggio e su ogni rete per costruire applicazioni P2P.

• JXTA fornisce tutte le funzionalità di base richieste in una applicazione P2P fra queste:

• peer discovery;

• peer communication;

• JXTA è 100% OPEN SOURCE per ulteriori info http://www.jxta.org;