Corso di Applicazioni Telematiche Applicazioni

Transcript

Corso di Applicazioni Telematiche Applicazioni
Corso di Applicazioni Telematiche
Applicazioni peer-to-peer
A.A. 2009-10
Prof. Simon Pietro Romano
Università degli Studi di Napoli Federico II
Facoltà di Ingegneria
Terminologia: “peer-to-peer”
• Sistema distribuito nel quale:
• ogni nodo ha identiche capacità e responsabilità
• tutte le comunicazioni sono potenzialmente simmetriche
• Obiettivi: condividere risorse e servizi
• scambio di informazioni, cicli di CPU, spazio sul disco,
…
• I sistemi P2P possiedono molti aspetti tecnici
interessanti:
• controllo decentralizzato
• adattabilità
• si organizzano e si gestiscono da soli
P2P: classificazione (1/3)
• Le applicazioni P2P sono costituite da tre fasi
principali:
• Boot: permette a un peer di trovare la rete e di
connettersi ad essa
• …nessuno o quasi fa boot P2P
• Lookup:
• permette ad un peer di trovare il gestore/responsabile di
una determinata informazione
• …pochi sono P2P, alcuni usano ‘SuperPeer’
• Scambio di file
• …sono tutti P2P!
P2P: classificazione (2/3)
• P2P pure se:
• le fasi di boot, lookup e scambio di file sono P2P
• P2P se:
• le fasi di lookup e scambio di file sono P2P
• la fase di boot utilizza qualche SERVER
• P2P Ibride se:
• la fase di scambio dei file è P2P
• la fase di boot utilizza qualche SERVER
• nella fase di lookup vengono usati Peer particolari
Hub (Direct Connect)
Supernodo (KaZaA)
MainPeer (EDonkey)
SuperPeer , Ultra Peer(Gnutella2)
NodoRandezVous (JXTA)
Server (WinMX)
P2P: classificazione (3/3)
• Con riferimento all’operazione di
lookup:
• Lookup Centralizzato
• Indice centralizzato
• Lookup Decentralizzato
• Indice completamente distribuito
• Lookup Ibrido
• Più sistemi centralizzati collegati in un
sistema decentralizzato
In tutti e tre questi sistemi il
trasferimento e la memorizzazione
dei file sono P2P
Architetture p2p
• Non esistono server sempre
connessi (always-on server)
• Gli end-system (peer)
comunicano direttamente
peer-peer
• I peer sono connessi ad
intermittenza e cambiano il
proprio IP
• Tre argomenti principali:
• Distribuzione dei file
• Self-scalability
• BitTorrent
• Organizzazione dei peer e
ricerca delle informazioni
• Case Study:
• Skype
• P2p IPTV
File Distribution: Server-Client vs P2P
Quanto tempo serve per distribuire un file da un
server ad N peer (tempo di distribuzione, D)?
us: server upload
bandwidth
Server
us
u1
d1
u2
ui: peer i upload
bandwidth
d2
File, size F (bits)
dN
uN
Network (with
abundant bandwidth)
di: peer i download
bandwidth
N, numero di
peer che
richiedono una
copia di F
File distribution: caso “server-client”
• Il server invia in
sequenza N copie del
file:
Server
F
u1 d1 u2
us
tempo richiesto: NF/us
dN
• Il client i impiega un
tempo pari a F/di per il
download
uN
d2
Rete (con banda
elevata) e appl.
isolate
Approccio client/server
Tempo per distribuire
F bit a N client
= Dcs = max {NF/us, F/min(di) }
i
per N elevato, il termine NF/us è dominante: incremento lineare al crescere di N
File distribution: caso P2P
• Dipende dal numero di peer
coinvolti…
Server
F
• Il server deve inviare almeno
una copia. Tempo richiesto: F/us
us
dN
• Il client i impiega un tempo pari a
F/di per il download (F/dmin)
uN
u1 d1 u2
Rete (con banda
elevata) e appl.
isolate
• NF bit totali devono essere
‘scaricati’: velocità massima di
upload: us + Σui
Approccio p2p
DP2P = max { F/us, F/min(di) , NF/(us + Σui) }
i
d2
Server-client vs P2P: confronto di prestazioni
Ipotesi:
• Tutti i peer hanno lo stesso rate di upload = u
• F/u = 1 ora, us = 10u, dmin ≥ us
Minimum Distribution Time
3.5
P2P
Client-Server
3
2.5
2
1.5
1
0.5
0
0
5
10
15
20
N
25
30
35
File distribution: BitTorrent
• P2P file distribution
tracker: tiene traccia dei peer
che compongono un “torrente”
obtain list
of peers
trading
chunks
peer
torrente: gruppo di
peer che si scambiano
porzioni (chunk) di
un stesso file
BitTorrent (1/3)
Il file è diviso in chunk di 256KB
• Quando un peer si aggiunge ad un “torrente”:
• si registra presso il tracker per avere la lista dei peer e si
connette ad un sottoinsieme di tali peer (“neighbors”)
• non possiede chunk, ma ne accumulerà nel tempo
• Durante il download, il peer esegue
l’upload di chunk verso altri peer
• I peer possono attivarsi e disattivarsi
dinamicamente
• Una volta scaricato l’intero file, il peer
può (egoisticamente) abbandonare, o
(altruisticamente) rimanere nel “torrente”
BitTorrent (2/3)
1) Prelievo di chunk
• Peer differenti
possiedono differenti
sottoinsiemi di chunk del
file
• Periodicamente, un peer
chiede a tutti i ‘neighbor’
la lista dei chunk in loro
possesso
• Tale peer invia richieste
per i propri chunk
mancanti
• tecnica ‘rarest first’
2) Invio di chunk: ‘tit-for-tat’
• L’idea di fondo è quella di dare
priorità a chi fornisce dati al rate
più alto.
• Un peer invia chunk ai 4 neighbor
attualmente più veloci (che gli
inviano chunk al rate più elevato)
• i ‘top 4’ sono ricalcolati ogni
10 secondi
• Ogni 30 secondi: si seleziona in
maniera casuale un altro peer, e
si inizia ad inviargli chunk
• il peer appena scelto può
essere aggiunto ai ‘top 4’
• “optimistically unchoke”
BitTorrent: tit-for-tat
(1) Alice effettua l’ ”unchoke” ottimistico di Bob
(2) Alice diventa uno dei ‘top-four provider’ di Bob, il quale ‘ricambia’
(3) Bob diventa uno dei ‘top-four provider’ di Alice
Free-riding
Con upload rate più elevato,
si trovano partner ‘migliori’ e si
scarica il file più velocemente!
P2P con directory centralizzata:
• Quando un peer si connette alla rete si collega ad un server
centralizzato fornendo:
•
•
Il proprio indirizzo IP
Il nome degli oggetti resi disponibili per la condivisione
• In server in questo modo raccoglie le info sui peer attivi e le aggiorna
dinamicamente
P2P con directory centralizzata:
• Singolo punto di fallimento
• Collo di bottiglia per le prestazioni
• Violazione del diritto di autore
• Il trasferimento dei file è decentralizzato, ma la localizzazione dei contenuti
è pesantemente centralizzata !!!
P2P con directory decentralizzata:
•Architettura completamente distribuita (senza server
centralizzati)
• Si realizza un’architettura di rete sovrapposta (overlay
network, fatta da connessioni TCP in corso)
• L’overlay network ha una struttura paritetica
• Nonostante la rete possa avere centinaia di migliaia di
partecipanti, ogni peer è connesso al max a 10 altri peer nella
overlay.
• Due problematiche:
• come viene costruita e gestita la rete di peer
• come un peer localizza un contenuto
P2P con directory decentralizzata:
• I peer , una volta unitisi alla rete, inviano richieste mediante la tecnica del
flooding (inondazione), query flooding
• Gnutella Query e QueryHit
• Query flooding a raggio limitato
• scope del messaggio (7, ad esempio)
• pro e contro
P2P con directory decentralizzata:
File transfer:
HTTP
Query
QueryHit
Query
QueryHit
P2P con directory decentralizzata:
1. Il peer X deve trovare altri peer già parte dell’overlay
• mantiene una lista di IP o contatta un sito Gnutella
contenente la lista
2. Dopo l’accesso alla lista, X tenta di impostare una
connessione TCP con i peer della lista; quando si connette a Y
si ferma
3. X spedisce a Y un ping Gnutella; Y lo inoltra finchè il contatore
non si azzera
4. Tutti i peer che ricevono un messaggio ping, rispondono con
un pong: esso contiene l’indirizzo di chi ha inviato il pong, il
numero di file in condivisione, la dimensione totale
5. Quando X riceve i messaggi di pong, avendo l’IP, può
impostare una connessione TCP con alcuni di essi…
6. Ci possono essere più fasi di bootstrap in parallelo
P2P con directory decentralizzata:
•
•
•
•
Sfrutta le caratteristiche positive di Napster e Gnutella
Ogni peer è associato ad un group leader (mini hub) che è esso stesso un peer
Un group leader memorizza le informazioni in condivisione dei “figli”
Ogni group leader è in grado di interrogare altri group leader
• query flooding applicato alla rete dei group leader
P2P con directory decentralizzata:
• Fase di bootstrap:
• un peer che si connette deve essere associato ad un group leader o deve
essere designato group leader
• L’overlay è costituita da connessioni TCP tra peer e group leader e tra coppie di
group leader
• Ogni file possiede un identificatore hash e un descrittore
• I peer (client) spediscono le query al proprio group leader
• quest’ultimo risponde per ogni richiesta con:
• l’indirizzo IP del detentore della risorsa, l’hash, e dei metadati associati
alla risorsa.
• il group leader inoltra sia le richieste sia le eventuali risposte da parte di altri
group leader
• Il peer (client) seleziona la risorsa per il download e invia una richiesta HTTP al
detentore della risorsa usando l’hash come identificatore
• Tecniche per migliorare le prestazioni
• Accodamento delle richieste e limitazione del numero degli upload simultanei
•
•
Priorità di incentivo
Downloading parallelo di parti dello stesso file da più utenti
Skype
• Skype è una applicazione P2P VoIP sviluppata da KaZaa nel
2003
• Supporta anche instant messaging e conferencing
• Il protocollo è proprietario
• Skype usa una rete overlay, con tre tipi di host
• Host ordinari:
• Skype users
• Super nodi:
• Skype users con sufficiente CPU, memoria, banda…
• Server di login per l’autenticazione
Skype
• Ciascun client Skype mantiene
una lista di indirizzi IP di super
nodi conosciuti
• Inizialmente questa lista è vuota.
• Un client Skype si connette alla
rete attraverso un super nodo
• I super nodi sono responsabili
della localizzazione degli utenti,
del routing delle chiamate, del
mantenimento delle
informazioni circa gli host
connessi alla rete Skype
Skype
• Connessione ai super nodi:
• Primo login
• Alla prima esecuzione (in seguito all’ l’installazione) un client Skype
comunica con il server Skype (skype.com)
• Durante la comunicazione, la cache dell’host è popolata di 7 indirizzi
IP di super nodi da usare per il bootstrap
• A questo punto l’host può contattare uno di essi per il join
• Selezionato il super nodo per il join, parte la fase di autenticazione con
user name e password con il server Skype
• L’host viene periodicamente aggiornato con indirizzi IP di nuovi super
nodi
• Login successivi
• Per i login successivi un client sceglie uno degli indirizzi dei super nodi
e stabilisce la connessione
p2p IPTV
Keywords:
• Chunk
• Peer-list
• Buffer-map
• Ogni peer è sia un viewer che un
server.
• Alcuni viewer ricevono il flusso
direttamente dalla sorgente originale
(server IPtv); altri lo ricevono
attraverso altri peer.
Scalabilità
• Il lavoro richiesto a un determinato nodo nel sistema
non deve crescere (o, almeno, deve crescere
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 (in ambito
accademico) i cosiddetti protocolli P2P di seconda
generazione che supportano DHT – Distributed Hash
Table
• Alcuni esempi di questi protocolli:
• Tapestry, Chord, Can, Viceroy, Koorde, kademlia, kelips, …
Scalabilità e routing delle richieste
• La scalabilità di un protocollo è direttamente legata
all’efficienza dell’algoritmo usato per il routing (lookup)
• Due obiettivi principali:
1. Minimizzare il numero di messaggi necessari per effettuare
il lookup
2. Minimizzare, per ogni nodo, le informazioni relative agli altri
nodi
• Le varie DHT conosciute differiscono proprio per
questi aspetti…
Messaggi necessari per trovare
Anello
una chiave
Chord e altri
n -1
Grafo
Totalmente
connesso
O(log n)
1
1
n è il numero dei peer
O(log n)
n -1
Dimensione tabella di routing
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 o dell’IP del nodo
• Ogni nodo del sistema è responsabile di un insieme di
file/chiavi e tutti i nodi, nel loro insieme, realizzano una
DHT
• L’unica operazione che un sistema DHT deve fornire è
“lookup(key)”:
• restituisce l’identità del responsabile di una determinata
chiave
DHT: concetti generali
• Astrazione: una struttura dati distribuita che realizza
una tabella hash:
put(id, item);
item = get(id);
• Implementazione: i nodi del sistema costituiscono
una struttura dati distribuita:
anello, albero, ipercubo, rete ‘Butterfly’, ...
Ricerca in una DHT
• Tutti i nodi del sistema condividono una tabella
hash
• conoscono la struttura della tabella…
• ...ma non conoscono il responsabile di
una determinata entry
ID
Nodo x
Nodo y
Nodo z
…
0
1
2
3
4
5
6
…
2m
DHT: Chord
• Le chiavi sono mappate su un array circolare costituito da 2m
identificatori
• 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:
Il primo contiene gli m successori del nodo x, più il
predecessore
Il secondo, un insieme di m nodi
costituito dai responsabili delle
m=3
chiavi distanziate
esponenzialmente dal nodo x,
vale a dire l’insieme delle chiavi
che si trovano a distanza 2i da x
dove 0 ≤ i ≤ m-1
Chord: la “finger table”
Successors
ID
Resp.
indice
Nod
o
1
14
8+1=9
14
2
8+2=11
21
14
3
8+4=12
4
8+8=16
5
24
14
32
21
38
8+16=24
6
24
42
8+32=40
42
Predecessor
Nodo 1
m=6
Chord: Join
• Spazio degli identificativi: [0..8]
1. Join del nodo 1
Succ. Table
i id+2i succ
0
0
1
2
1
7
6
2
5
3
4
2
3
5
1
1
1
Chord: Join
2. Join del nodo 2
Succ. Table
i id+2i succ
0
0
1
2
1
7
6
2
3
5
2
1
1
2
Succ. Table
5
3
4
i id+2i succ
0
1
2
3
4
6
1
1
1
Chord: Join
Succ. Table
i id+2i succ
0
1
2
3. Join dei nodi 0 e 6
1
2
4
1
2
0
Succ. Table
i id+2i succ
0
0
1
2
1
7
Succ. Table
2
3
5
2
6
6
i id+2i succ
0
1
2
7
0
2
0
0
2
6
2
Succ. Table
5
3
4
i id+2i succ
0
1
2
3
4
6
6
6
6
Chord: allocazione delle risorse
Succ. Table
i
Nodi:
n1, n2, n0, n6
0
1
2
File:
f7, f1
Items
id+2 succ 7
1
1
2
2
4
0
i
0
Succ. Table
1
7
i
0
1
2
Succ. Table
6
Items
id+2 succ 1
2
2
3
6
5
6
i
2
i id+2i succ
0
1
2
7
0
2
0
0
2
Succ. Table
5
3
4
i id+2i succ
0
1
2
3
4
6
6
6
6
Chord: routing
• Alla ricezione di una query
per il dato con
identificativo id, un nodo:
•
•
Succ. Table
i
0
1
2
Controlla se il dato è
presente presso di sé
In caso di assenza del dato,
esso inoltra la query al nodo
più grande nella sua tabella
dei successori, avente
identificativo di nodo <= di id
Items
id+2 succ 7
1
1
2
2
4
0
i
0
Succ. Table
1
7
i
0
1
2
query(7)
Succ. Table
6
Items
id+2 succ 1
2
2
3
6
5
6
i
2
i id+2i succ
0
1
2
7
0
2
0
0
2
Succ. Table
5
3
4
i id+2i succ
0
1
2
3
4
6
6
6
6
Chord: complessità
• Le informazioni che il nodo deve mantenere
sugli altri nodi sono (m + m + 1) = (2m +1) O(log N)
• Il numero di messaggi necessari per effettuare
il lookup è m O(log N)
• L’algoritmo di routing effettua a ogni step il
passo più grande che riesce a fare
• tale algoritmo, in pratica, simula un “ipercubo”
• esso, inoltre, si comporta molto bene in un sistema
dinamico
P2P e standardizzazione nell’IETF
• p2psip:
• Peer-to-Peer Session Initiation Protocol
• ALTO:
• Application Level Traffic Optimization
• PPSP:
• Peer to Peer Streaming Protocol
p2psip – Peer-to-Peer SIP
p2psip – obiettivi (1/2)
p2psip – obiettivi (2/2)
ALTO – Application Level Traffic Optimization
ALTO – obiettivi e ‘milestone’
PPSP – Peer to Peer Streaming Protocol
PPSP – ipotesi di lavoro e ‘milestone’
Dalla teoria alla pratica: SIPDHT
http://sipdht.sourceforge.net/
• Un progetto gestito dai ricercatori di Tilab Torino
• Attualmente alla versione 2:
• http://sipdht.sourceforge.net/sipdht2
• connessioni tra peer negoziate mediante SIP
• implementazione di una DHT basata su infrastruttura
CAN (Content Addressable Network)
• Ottimizzato per peer nascosti da NAT
Domande?
50

Documenti analoghi

Linguaggi ed Applicazioni mulømediali

Linguaggi ed Applicazioni mulømediali chiavi (ciascuna delle quali è associata a un valore, che nella pratica corrisponde a un file, a un blocco di dati, ecc.). Un messaggio di ricerca contenente una chiave viene propagato all’unico re...

Dettagli

I sistemi peer-to-peer

I sistemi peer-to-peer Tipicamente il rapporto tra server e client è uno-a-molti: la responsabilità del servizio non è affidata omogeneamente a tutte le

Dettagli

4pp

4pp – L’aggiunta o la rimozione di nodi è un’operazione semplice e poco costosa – Obiettivo: gestire nodi con comportamento fortemente transiente (tassi di join/leave elevati) – Esempi: Gnutella, FastT...

Dettagli

Sistemi peer-to-peer Sistemi peer-to-peer (P2P)

Sistemi peer-to-peer Sistemi peer-to-peer (P2P) • Ad ogni peer è assegnato un ID univoco ed ogni peer conosce un certo numero di peer • Ad ogni risorsa condivisa (pubblicata) viene assegnato un ID univoco, di solito definito applicando una funzi...

Dettagli