Sistemi peer-to-peer Sistemi peer-to-peer

Transcript

Sistemi peer-to-peer Sistemi peer-to-peer
Università degli Studi di Roma “Tor Vergata”
Facoltà di Ingegneria
Sistemi peer-to-peer
Corso di Sistemi Distribuiti
Valeria Cardellini
Anno accademico 2009/10
Sistemi peer-to-peer (P2P)
• Giunti agli oneri della cronaca alla fine degli anni ‘90
– Il famoso caso Napster (sistema di file sharing per file MP3)
• Molto popolari
– Parte consistente del traffico Internet: più del 30% è riconducibile
ad applicazioni di tipo P2P
– Trend crescente
• Qualche anno fa si diceva Internet = Web
• Alcuni pregiudizi sul P2P
– P2P = file sharing
• Molti sistemi per il file sharing si basano su un approccio P2P
– P2P = illegalità
• Una percentuale massiccia di file scambiati è coperta da copyright
SD - Valeria Cardellini, A.A. 2009/10
2
Obiettivi e problemi dei sistemi P2P
• Obiettivi
–
–
–
–
–
–
Condividere/ridurre i costi usando risorse non utilizzate
Migliorare la scalabilità
Aumentare la persistenza e la disponibilità delle risorse
Consentire l’aggregazione di risorse e l’interoperabilità
Aumentare l’autonomia
Aumentare l’anonimato/privacy, nascondendo le operazioni
svolte dagli utenti
– Consentire dinamismo e comunicazioni ad-hoc
• Problemi
– Sicurezza: garantire integrità e autenticità delle risorse
– Disuguaglianza tra i nodi
– Elevato tasso con cui i nodi entrano/escono dal sistema P2P
• Può portare ad una instabilità del sistema che ne influenza
negativamente le prestazioni
SD - Valeria Cardellini, A.A. 2009/10
3
Argomenti trattati
• Già trattati argomenti riguardanti i sistemi P2P, in
particolare il routing
– Overlay routing, routing in reti strutturate e non
– Vedi “Architetture dei SD”
• Quali altri argomenti tratteremo?
– Architetture dei sistemi P2P
– Approfondimento su routing basato su DHT
– Case study: Gnutella, BitTorrent, Skype
SD - Valeria Cardellini, A.A. 2009/10
4
Architetture per sistemi P2P non strutturati
• Classificazione delle architetture in base al livello di
distribuzione dell’indice risorse-peer
– Architettura decentralizzata pura
• Tutti i nodi sono peer, nessun coordinatore centralizzato
• Ogni peer può funzionare come router, client, o server
• La rimozione di un peer non riduce le funzionalità del sistema
– Architettura centralizzata
• Unico server centralizzato che possiede l’indice e fornisce il servizio
di ricerca delle risorse
– Architettura ibrida
• Alcuni nodi (super-peer) facilitano l’interconnessione tra i peer
– Indice locale centralizzato per risorse dei peer locali
• Prima comunicazione con un super-peer (a), poi con il peer (b)
Decentralizzata pura
Ibrida
SD - Valeria Cardellini, A.A. 2009/10
5
Architetture per sistemi P2P non strutturati (2)
• Sistemi non strutturati
centralizzati: directory
centralizzata
– Es.: Napster
• Sistemi non strutturati
decentralizzati puri: flooding (o
gossiping)
– Già esaminati
– Problema del bootstrap
– Es.: Gnutella 0.4, Freenet
• Sistemi non strutturati ibridi:
directory semi-centralizzate e
flooding limitato
– Es.: Gnutella 2, KaZaa, Skype
SD - Valeria Cardellini, A.A. 2009/10
6
Sistemi centralizzati
• Un nodo centralizzato (directory server) possiede il
mapping risorse-peer (index), fornendo un servizio di
discovery dei peer e di ricerca delle risorse
• Limiti
– Gestione costosa della directory centralizzata
– Collo di bottiglia costituito dal nodo centrale (scalabilità
limitata)
– Single point of failure (motivi tecnici e legali, es. Napster)
peers
Napster server
Index
1. File location
request
2. List of peers
offering the file
5. Index update
Napster server
Index
3. File request
4. File delivered
SD - Valeria Cardellini, A.A. 2009/10
7
Bootstrap nei sistemi decentralizzati puri
• Per accedere alla rete P2P occorre conoscere
l’indirizzo di almeno un nodo (problema del
bootstrap)
• Quali sono gli approcci possibili per il bootstrap nei
sistemi P2P con architettura decentralizzata pura?
• Presenza di un bootstrap server
– Web server che memorizza una lista di peer attivi (con alta
probabilità presenti nella rete P2P)
• Tramite peer cache
– Ogni peer mantiene in una propria cache una lista di peer
contattati nelle sessioni precedenti
• Tramite well-known host
– Non esiste alcuna entità che registra i peer attivi
SD - Valeria Cardellini, A.A. 2009/10
8
Sistemi ibridi
• Non tutti i peer sono uguali
– I nodi meglio connessi e con buona capacità computazionale
possono avere funzioni speciali (detti supernodi o super-peer o
ultrapeer); gli altri nodi sono detti leaf peer
– Super-peer identificati dinamicamente tramite un algoritmo di
elezione
• Organizzazione two-tier dei nodi
– Super-peer agiscono da rappresentanti dei leaf peer
• I super-peer hanno funzione di directory semicentralizzata
– I supernodi indicizzano le risorse disponibili nei peer che
gestiscono
• Il flooding riguarda solo i super-peer
• Rispetto ai sistemi decentralizzati puri
– Si riduce il tempo di discovery
– Si sfrutta l’eterogeneità hw e sw dei nodi presenti in una rete
P2P
SD - Valeria Cardellini, A.A. 2009/10
9
Query di una risorsa con super-peer
A!
A!
A?
A?
A!
A?
A?
A?
A?
SD - Valeria Cardellini, A.A. 2009/10
10
Routing in sistemi strutturati basati su DHT
• Già esaminato il routing in Chord
• Analizziamo il routing in altri due sistemi P2P
strutturati
– Pastry
– CAN
SD - Valeria Cardellini, A.A. 2009/10
11
Pastry
• Fornisce un substrato per applicazioni P2P
– Alcune applicazioni: Scribe (multicast), SQUIRREL (caching
coooperativo), PAST (storage)
• Sviluppato da Microsofrt research e Rice Univ.
http://www.freepastry.org/
• Routing basato su algoritmo di Plaxton (anche detto
Plaxton routing)
– La struttura mesh di Plaxton contiene puntatori ai nodi il cui
ID corrisponde agli elementi di una struttura ad albero di
prefissi di ID
– In realtà, Pastry usa tecniche più complesse: un set di leaf
node (i nodi più vicini sullo spazio degli ID)
• Anche in Tapestry e Kademlia (altri sistemi P2P
basati su DHT) il routing è basato su Plaxton
SD - Valeria Cardellini, A.A. 2009/10
12
Pastry (2)
• Ogni peer e ogni risorsa sono mappati su uno spazio
hash circolare
– Come in Chord
• Chiavi rappresentate con d simboli di b bit
• Ogni nodo possiede una tabella di routing
• Ad ogni passo del routing, si inoltra la ricerca al nodo
con ID più vicino all’ID del nodo di destinazione
– Longest prefix matching
– Es: ***8 ! **98 ! *598 ! 4598
SD - Valeria Cardellini, A.A. 2009/10
13
Plaxton routing
• Esempio: lavoriamo in base 4 con 4 cifre (b=2, d=4
! chiavi di 8 bit)
– Di solito chiavi molto più lunghe (128 bit)
• Regole di composizione della tabella di routing
– Gli ID dei nodi sulla riga
n-esima condividono le
stesse prime n cifre con
l’ID del nodo corrente
– La (n+1)-esima cifra degli
ID sulla riga n-esima è il
numero di colonna
• Per ogni entry, possono
esserci più nodi
candidati: si sceglie il
più vicino in base a
metriche di prossimità
(ad es. RTT)
SD - Valeria Cardellini, A.A. 2009/10
Nodo 1220
1
2
0
0
1
2
3
3
(0)212
-
(2)311
(3)121
1(0)31
1(1)23
-
1(3)12
12(0)0
12(1)1
-
12(3)1
-
122(1)
122(2)
122(3)
14
Plaxton routing (2)
• Query inoltrata in base a meccanismo di longest
prefix matching
– Al nodo che condivide col nodo di destinazione almeno una
cifra in più del nodo corrente
– Se non esiste, al nodo numericamente più vicino
Nodo 1220
Routing 0321
(0)212
-
(2)311
(3)121
Routing 1106
Routing 1201
1(0)31
1(1)23
-
1(3)12
12(0)0
12(1)1
-
12(3)1
-
122(1)
122(2)
122(3)
Routing 1221
SD - Valeria Cardellini, A.A. 2009/10
15
Esempio di routing in Pastry
Consideriamo un namespace di 218, 005712 ! 627510
005712
0 1
2
3 4
5
6 7
340880
0 1
2
3 4
5
6 7
943210
0 1
2
3 4
5
6 7
005712
340880
943210
834510
834510
0 1
2
3 4
5
6 7
387510
0 1
2
3 4
5
6 7
727510
0 1
2
3 4
5
6 7
627510
0 1
2
3 4
5
6 7
SD - Valeria Cardellini, A.A. 2009/10
387510
727510
Quanti hop? Meno
di "log2bN#
627510
16
CAN
•
•
•
•
•
Content Addressable Network
Spazio hash: peer e risorse sono disposti un uno
spazio d-dimensionale suddiviso in zone
Ogni nodo è responsabile di una zona
Ogni risorsa è individuata da d coordinate (usate d
funzioni hash)
Es. bidimensionale (d=2)
SD - Valeria Cardellini, A.A. 2009/10
17
Routing in CAN
• Ogni nodo conosce i nodi topologicamente adiacenti
(nodi con cui ha un lato/iperpiano in comune)
• Per ottenere la risorsa si deve raggiungere la relativa
zona
• Messaggio inoltrato al vicino che ha coordinate più
“vicine” alla destinazione
• Costo del lookup O(N1/d)
• Resistente ai guasti
SD - Valeria Cardellini, A.A. 2009/10
18
Case study: Gnutella 0.4
• Gnutella versione 0.4: implementa un’architettura
decentralizzata pura
• Bootstrap e discovery di peer
– Boostrap tramite boostrap server e peer cache
– Ottenuta la lista di peer della rete Gnutella, il peer prova a
connettersi con alcuni dei peer noti
– La rete viene esplorata mediante l’invio di messaggi di
ping/pong
– A seconda della velocità di connessione, il peer prova a
mantenere da 3 a 8 connessioni
– Se una connessione viene persa, il peer cerca di connettersi
ad un altro peer della lista (continuamente aggiornata)
• Ricerca di risorse
– Per la ricerca, Gnutella utilizza un flooding con esplorazione
breadth-first (BFS)
– Invio di un messaggio di query ai peer vicini, che a loro volta
possono inoltrare la query mediante flooding, limitato da TTL
SD - Valeria Cardellini, A.A. 2009/10
19
Gnutella: connessione
Bootstrap server
n1
n2
n3
•
Un peer può rifiutare una richiesta di connessione, ad esempio
perché ha raggiunto un numero massimo di connessioni ammesse
SD - Valeria Cardellini, A.A. 2009/10
20
Gnutella: comunicazione fra peer
• I peer comunicano fra loro con messaggi (detti
descriptor); 5 tipi di messaggi nel protocollo Gnutella:
• Ping
– Messaggio per il discovery dei peer vicini nella rete P2P
• Pong
– Messaggio di risposta a un Ping: un peer che riceve un Ping
risponde con uno o più Pong, includendo il suo indirizzo
• Query
– Messaggio di richiesta per localizzare una risorsa
• QueryHit
– Messaggio di risposta a una query: contiene le informazioni
per reperire la risorsa
• Push
– Messaggio per il download da peer dietro un firewall tramite il
protocollo HTTP
SD - Valeria Cardellini, A.A. 2009/10
21
Gnutella: struttura dei messaggi
Descriptor ID
16 byte
Payload
descriptor
TTL
Hops
Payload length
1 byte
1 byte
1 byte
4 byte
• Descriptor ID: identificatore univoco del messaggio
(GUID) all’interno della rete
– Usato per associare le risposte alle richieste e per evitare di
propagare le stesse richieste più di una volta
• Payload descriptor: identifica il tipo di messaggio
• TTL: numero di hop che il messaggio può attraversare
prima di essere rimosso dalla rete
– Ad ogni hop TTL è decrementato
• Hops: numero di hop che il messaggio ha attraversato
– Ad ogni hop Hops è incrementato
• All’i-esimo passo: TTL(i) = TTL(0) - Hops(i)
• Payload length: dimensione dei dati associati al
messaggio
SD - Valeria Cardellini, A.A. 2009/10
22
Gnutella: Ping e Pong
• Ogni peer invia periodicamente il messaggio di
Ping per sondare la rete alla ricerca di altri peer
– Un peer che riceve un Ping risponde inviando al mittente
un Pong
• Il messaggio Pong contiene: l’IP e la porta su cui il peer
accetta connessioni, il numero di file condivisi e il numero
di Kb totali condivisi
– Possono essere inviati più messaggi di pong per
comunicare il contenuto della propria peer cache
– ll messaggio di Ping viene
inoltrato ai vicini fino a che il
TTL non si annulla
SD - Valeria Cardellini, A.A. 2009/10
23
Gnutella: Query e QueryHit
• Query specifica il criterio di ricerca e la velocità di
trasferimento minima richiesta ai peer
Number of hits
1 byte
Port
2 byte
IP
Speed
Result set
server ID
4 byte
4 byte
N byte
16 byte
• QueryHit riguarda tutti i risultati
trovati su un dato peer che
soddisfano il criterio di ricerca
– Port: porta su cui il peer accetta
connessioni in entrata
– Result set: contiene gli identificatori
delle risorse che soddisfano la query
– Servent ID: identifica univocamente il
peer nella rete
SD - Valeria Cardellini, A.A. 2009/10
24
Gnutella: download di un file
• Il peer richiede direttamente il trasferimento di un file
ad un peer che ha risposto alla query
– Il protocollo usato per il trasferimento è HTTP
GET /get/<file index>/<file name>/
HTTP/1.0
HTTP
200 OK
Connection: keep-alive
Server: Gnutella
Range: bytes=0Content-type: application/binary
User-Agent: Gnutella
Content-length: 200346
... data...
SD - Valeria Cardellini, A.A. 2009/10
25
Case study: BitTorrent
• E’ il più popolare protocollo P2P per la distribuzione
di contenuti
– Oltre 20% dell’intero traffico su Internet
• Si basa su un’architettura centralizzata
– Sistema per la distribuzione di file (no sistema di routing): si
concentra sulle problematiche di download
• Idea di base: dividere un file in parti di dimensione
fissa e far ridistribuire ad ogni peer i dati ricevuti,
fornendoli a nuovi destinatari; in questo modo:
– Si riduce il carico di ogni sorgente
– Si riduce la dipendenza dal distributore originale
– Si fornisce ridondanza
• Sfrutta potenzialità di download paralleli
SD - Valeria Cardellini, A.A. 2009/10
26
BitTorrent: struttura della rete
Seeder
Tracker
statistics
Peer list
Leecher
• Approccio tit-for-tat o altruismo reciproco (teoria dei
giochi)
– Stimola la collaborazione fra i peer
– I peer cooperanti ricevono e inviano parti del file; se un peer
smette di fare l’upload, gli altri peer smettono di trasferire
verso di esso
– Limita il “free riding”
• Free rider: esegue solo download, senza contribuire alla rete
SD - Valeria Cardellini, A.A. 2009/10
27
BitTorrent: seeder e leecher
• Seeder: peer che possiede una copia completa del file
– All’inizio deve esistere almeno un seeder (da cui è scaricato
tutto il file almeno una volta)
– Il numero dei seeder aumenta nel tempo e poi decade (i peer
che hanno completato il download si disconnettono dopo un
po’)
• Leecher: peer per cui il download è ancora incompleto
– Il numero di leecher cresce velocemente quando il file è reso
disponibile
– Raggiunge un massimo e poi decade
– Il picco precede quello dei
download completati
SD - Valeria Cardellini, A.A. 2009/10
28
BitTorrent: pubblicazione
• Per condividere un file, un peer crea un file .torrent,
che contiene metadati sul file condiviso (dimensione,
nome, hash) ed informazioni sul tracker
– Tracker: il nodo che coordina la distribuzione del file
• Per scaricare un file, un peer
– Ottiene un file .torrent per quel file
– Si connette al tracker individuato in .torrent, che indicherà da
quali peer scaricare le varie parti del file
– Si connette ai peer individuati per scaricare le varie parti
• Un gruppo di peer interconnessi per condividere un
“torrente” viene detto swarm
– Se lo swarm contiene solo il seeder iniziale, il peer si
connette direttamente al seeder
– Mano a mano che i peer entrano nello swarm, iniziano a
negoziare tra loro pezzi del file (anziché scaricarli dal seeder)
SD - Valeria Cardellini, A.A. 2009/10
29
BitTorrent: scelta della lista dei peer
• Il trasferimento è completamente gestito fra i peer
• Il tracker è l’unico punto di coordinamento fra i peer
• Quando un peer si connette, il tracker invia una lista
casuale di peer a cui connettersi
– Nonostante la semplicità della costruzione, il grafo random
risultante ha buone caratteristiche di robustezza
• Il grafo rimane connesso anche se alcuni peer si disconnettono
• Nel tempo tutte le parti del file si distribuiscono con gli scambi fra
nodi vicini
• Ogni parte del file deve poter raggiungere un peer attraverso i
cammini nel grafo
SD - Valeria Cardellini, A.A. 2009/10
30
BitTorrent: trasferimento del file
• File divisi in parti di dimensione fissa (ad es. 256 KB)
• Ogni peer notifica ai vicini quali parti possiede
– Correttezza delle singole parti verificata tramite hash (SHA1)
contenuto nel file .torrent
• Più richieste contemporanee per nascondere la
latenza dei trasferimenti
– Le parti sono divise in blocchi (tipicamente 16 KB)
– Si richiedono più blocchi in pipeline (tipicamente 5)
– Quando un blocco termina, si invia una nuova richiesta
SD - Valeria Cardellini, A.A. 2009/10
31
BitTorrent: strategie di scelta delle parti
• Occorre usare una strategia ottimale per scegliere le
parti da trasferire
– Evitare di (a) possedere già tutte le parti che sono offerte dai
peer vicini; (b) non avere parti da trasferire verso i peer con cui
si vuole collaborare
• Tecniche usate:
– Una volta richiesto un blocco di una parte, le richieste
successive mirano a terminare la stessa parte (priorità stretta)
– Scaricare le prime parti selezionandole in modo casuale per
aumentare la possibilità di trading con gli altri peer
– Scaricare le rimanenti parti selezionandole in base alla
strategia rarest first
• Prima la parte più rara (disponibile nel minor numero di peer vicini)
– Quando il download sta per terminare, i blocchi sono richiesti a
tutti i peer (modalità end game)
• Si mandano delle cancellazioni delle richieste quando arriva un
blocco
• Modalità attiva per un periodo breve
SD - Valeria Cardellini, A.A. 2009/10
32
BitTorrent: allocazione delle risorse
• No allocazione centralizzata delle risorse
– I peer applicano una politica per massimizzare il loro tasso di
download
• I peer decidono gli upload utilizzando una politica titfor-tat
– I peer possono rifiutare di concedere l’upload
temporaneamente (choking)
– Obiettivo: utilizzare in modo uniforme tutte le risorse ed
evitare la presenza di peer solo in download e non in upload
• Ottimizzazione globale perseguita cercando di
ottimizzare gli interscambi localmente fra coppie di
peer
– Si fornisce banda in upload verso i peer che a loro volta
forniscono accesso in upload (si ottengono connessioni attive
bidirezionali)
– Sulle connessioni inattive si prova…
SD - Valeria Cardellini, A.A. 2009/10
33
BitTorrent: choking
• Un peer permette l’upload a un numero fisso di altri
peer (4 per default)
– Come scegliere quali peer abilitare?
• Decisione presa sulla base del tasso di download (misurato con
una media su 20 sec)
• Lista dei peer abilitati ricalcolata ogni 10 sec
• Per evitare di trascurare canali promettenti si attua l’abilitazione
ottimistica di un solo peer, indipendentemente dal suo tasso di
download
• La scelta per l’abilitazione ottimistica viene ruotata ogni 30 sec
per dare il tempo di effettuare una misura attendibile della
reciprocità
– In questo modo, il controllo di congestione del TCP satura la
capacità di upload
SD - Valeria Cardellini, A.A. 2009/10
34
BitTorrent: anti-snubbing
• Può accadere che un peer sia disabilitato dal
download da tutti i peer
– In questo caso, avrà un basso tasso di download fino a che
l’abilitazione ottimistica non trova peer migliori
– Quando per più di 1 min un dato peer non riceve parti da un
altro peer, si assume che è stato escluso (snubbed) e il peer
a sua volta smette di consentire l’upload all’altro peer a
meno di un’abilitazione ottimistica
– Questo provoca più abilitazioni ottimistiche concorrenti
(invece di una sola), rendendo possibile una nuova
selezione dei peer più collaborativi
SD - Valeria Cardellini, A.A. 2009/10
35
BitTorrent: svantaggi
• Poco adatto per file di piccole dimensioni
• Tracker: limita la scalabilità ed è un single point of
failure
– Decentralizzazione basata su DHT
SD - Valeria Cardellini, A.A. 2009/10
36
Case study: Skype
• Telefonia IP basata su
sistema P2P
• Architettura P2P ibrida a
due livelli (peer e
ultrapeer), come KaZaa
– Ultrapeer usati
principalmente per
instradare il traffico tra
end-host dietro NAT
– In più, login server per:
• Autenticare gli utenti
• Garantire che i nomi siano
unici in tutta la rete
SD - Valeria Cardellini, A.A. 2009/10
37