Title: Diapositiva 1
1Peer To Peer (o quasi)
Gennaro Cordasco
2P2P (o quasi)
?Peer to Peer (P2P)?
jxta
can
pastry
fiorana
napster
united devices
freenet
?
open cola
aim
ocean store
netmeeting
farsite
gnutella
icq
ebay
morpheus
limewire
seti_at_home
bearshare
uddi
grove
jabber
popular power
kazaa
folding_at_home
tapestry
mojo nation
process tree
chord
3P2P (o quasi)
Sommario
- Cosa vuol dire Peer to Peer(P2P)
- Un po di storia
- Distributed Hash Table (DHT)
- Alcuni problemi aperti su DHT
- Alcune applicazioni (quasi ?)
- JXTA
4P2P (o quasi)
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
5P2P (o quasi)
Un po di storia
- Proposti già da oltre 30 anni
- Sviluppati nellultimo decennio
- Linteresse 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 - L11/12/2002 è stata aperta lasta online per la
vendita del server di Napster
6P2P (o quasi)
Ip address
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
7P2P (o quasi)
Ip address
P2P di seconda generazione e DHT
- A ogni file e ad ogni nodo è associata una
chiave - La chiave viene di solito creata facendo lhash
del nome del file - Ogni nodo del sistema è responsabile di un
insieme di file(o chiavi) e tutti realizzano una
DHT - Lunica operazione che un sistema DHT deve
fornire è lookup(key), la quale restituisce
lidentità del responsabile di una determinata
chiave.
8P2P (o quasi)
P2P is as P2P does ?
DHT Utilità
- File sharing system
- File storage system
- Distributed file system
- Redundant storage
- Availability
- Performance.
- Permanence
- Anonymity
- Chat service
9P2P (o quasi)
DHT Routing
- La scalabilità di un protocollo è direttamente
legata allefficienza dellalgoritmo 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
10P2P (o quasi)
DHT Routing (Tapestry)
- Realizzazione dinamica dellalgoritmo di Plaxton
et al.(che non si adattava a sistemi dinamici) - Supponendo che le chiave è costituita da un
intero positivo lalgoritmo 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) - Lalgoritmo in pratica simula un Ipercubo
11P2P (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
linsieme 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 lefficienza
del Routing
12P2P (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 - Lalgoritmo in pratica simula un Ipercubo,
inoltre si comporta molto bene in un sistema
dinamico - Svantaggi
- una sola dimensione
- una sola strada
13P2P (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
14P2P (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
sullarray 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
15P2P (o quasi)
DHT Routing (Viceroy)
16P2P (o quasi)
Ip address
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 -
17P2P (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).
18P2P (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
19P2P (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, unidea potrebbe
essere quella di scegliere ad ogni passo il
vicino fisicamente più vicino
20P2P (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
d2, ancora non è stato trovato un mapping
ragionevole su un sistema a 1 dimensione. - (Problema Chord ad esempio ha una sola
dimensione).
21P2P (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?
22P2P (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?
23P2P (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à
24P2P (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)
25P2P (o quasi)
P2P(quasi) Classificazione
- Hybrid
- Centralized index, P2P
- file storage and transfer
- Super-peer
- A pure network of
- hybrid clusters
- Pure
- functionality completely
- distributed
26P2P (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
27P2P (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
28P2P (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
29P2P (o quasi)
P2P(quasi) Gnutella2
Nodo Hub
- 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ì)
SuperPeer P2P
30P2P (o quasi)
P2P(quasi) Gnutella2
Nodo Hub
- 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 lelemento nel proprio cluster
- Viene ricercato lelemento nei cluster vicini(a
distanza 1) più qualche cluster lontano scelto a
caso - Viene ricercato lelemento nei cluster vicini
dei vicini (a distanza 2) più qualche cluster
lontano scelto a caso - .
31P2P (o quasi)
P2P(quasi) Gnutella2
Nodo Hub
- La lista degli hub a distanza i1 è 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 allinterno del cluster sono fatte
usando TCP - Le ricerche fra cluster sono fatte usando UDP
UDP SEARCH
TCP SEARCH
32P2P (o quasi)
P2P Gnutella
- La ricerca usa il flooding
- La ricerca risulta inefficiente e non scalabile
P2P Puro
33P2P (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???
34P2P (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
35P2P (o quasi)
P2P FreeNet(Routing)
- E tuttaltro che efficiente
36P2P (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