bittorrent - Dipartimento di Informatica

Transcript

bittorrent - Dipartimento di Informatica
Università degli Studi di Pisa
Dipartimento di Informatica
Lezione n.14
P2P CONTENT DISTRIBUTION:
BITTORRENT
Laura Ricci
9/5/2012
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
1
CONTENT DISTRIBUTION NETWORKS





Content Distribution Network (Content Delivery Network) (CDN): insieme
distribuito di hosts che cooperano per distribuire grosse quantità di dati (ad
esempio dati multimediali) agli end user
Motivazione: se un unico web server memorizza dati molto popolari, il server
stesso può spesso risultare congestionato e non essere capace di gestire tutte
le risorse
Fenomeno del flash crowd:

un sito web 'attira', a causa di qualche evento, l'attenzione di un gran
numero di persone

deve gestire, in certi istanti, un tasso di traffico altissimo ed inaspettato
CDN:

replicazione dei dati e/o servizi su diversi mirror server

con lo scopo di ottenere uno sfruttamento migliore della banda
Esempi:

Commerciali: Akami, AppStream, Globix, Bittorrent

Accademici: Coral (P2P), Globule
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
2
CDN: OBIETTIVI

distribuire il carico relativo alla distribuzione di contenuti

sfruttare pienamente la banda di download per sistemi P2P con connessioni
asimmetriche


Banda di downlaod >> Banda di upload

Es: 4 Mbit/s di downlink, 600Kbit/s di uplink
idea principale: redistribuire il carico dell'upload su tutti i peer che
concorrono allo scaricamento del file
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
3
CONTENT DISTRIBUTION NETWORKS: OBIETTIVI

Perchè utilizzare una content distribution network, un esempio concreto:




sono andata in vacanza, ho fatto un centinaio di foto (1 M ciascuna) e due
filmati (50M ciascuno)
al ritorno delle vacanze decido di condividere tutto il materiale prodotto
(circa 200 M) con gli amici sparsi sul globo
Soluzione 1:

pubblico il materiale su un sito web locale.

se non posseggo una connessione a banda larga, l'upload effettuato dai miei
amici probabilmente mi impedirà di usare la connessione per altri scopi
Soluzione 2:

utilizzo la tecnologia P2P in modo da utilizzare anche la banda dei peer che
effettuano il download per distribuire il materiale
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
4
BITTORRENT: DIFFUSIONE NEL 2007
http://www.ipoque.com/resources/internet-studies/internet-study-2007
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
5
BITTORRENT: CARATTERISTICHE GENERALI




L'obiettivo principale è quello della distribuzione di files,

utilizza meccanismi esterni per la ricerca di files
Distribuzione di contenuti

sw open source

distribuzione di nuove versioni del SO/nuove applicazioni (OpenOffice,..)

game patches (es: War of Warcraft)

condivisione di files tra gruppi di persone con interessi comuni
sviluppato da Bram Cohen in Python e presentato al CodeCon 2002 (una
conferenza negli States in cui sviluppatori di software ed hacker possono
liberamente presentare nuovi progetti)
idea di Cohen: adattare il sistema di memorizzazione dei files adottato nella
sua azienda al P2P.

i files vengono divisi in parti crittografate e distribuite tra i diversi
computers dell'azienda
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
6
BITTORRENT: IDEE GENERALE
Il file è memorizzato sul server
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
7
BITTORRENT: IDEE GENERALE
Il server distribuisce i
primi 2 pezzi del file
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
8
BITTORRENT: IDEE GENERALI
Il server distribuise altri due pezzi.
In parallelo comincia la diffusione
dei precedenti due pezzi
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
9
BITTORRENT: IDEE GENERALI
Il server uploada gli ultimi due
pezzi
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
10
BITTORRENT: IDEE GENERALI
Il server non è più coinvolto
nella distribuzione del file
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
11
BITTORRENT: IDEE GENERALI
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
12
BITTORRENT: IDEE GENERALI
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
13
BITTORRENT: IDEE GENERALI
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
14
BITTORRENT: IDEE GENERALI
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
15
BITTORRENT: IDEA GENERALI
Tutti i peer possiedono l'intero file
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
16
BITTORRENT: FUNZIONAMENTO GENERALE






Il peer U che intende condividere un file genera un descrittore del file, il
file .torrent, e lo pubblica su un server HTTP.
Il descrittore contiene un riferimento ad un il tracker, che fornisce un
servizio di coordinamento dello swarm
swarm:

insieme di peers che collaborano alla distribuzione di uno stesso file

coordinati da uno stesso tracker
Il peer che desidera scaricare il file,

scarica il descrittore del file e lo apre con il client BitTorrent.

si connette al tracker e lo informa della propria esistenza

riceve dal tracker una lista di peer dello swarm
i peer si scambiano informazioni relative alle parti del file che essi
possiedono e ogni peer richiede le parti di file a cui è interessato
se U rimane online quando ha terminato lo scaricamento del file, continua a
distribuire il file
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
17
BITTORRENT: UN PO' DI TERMINOLOGIA





Seeder (alla lettera inseminatore): peer che possiede tutte le parti del file

all'inizio esiste un unico seeder S, il peer che pubblica il contenuto.

crea il file .torrent e lo pubblica

può accadere che S esca dalla rete dopo aver 'inseminato' un numero
sufficiente di peer

in seguito si vengono a creare nuovi seeder. Sono i peer che hanno
scaricato il file e rimangono all'interno della rete per altruismo o per caso
Leecher (alla lettera succhiatore):

peer che possiede qualche parte o nessuna parte del file e cerca di
scaricare il file dai seeder e/o da altri leecher

all'inizio ricerca il file .torrent per iniziare il downlaod
Peer Set lista di peer che il peer ha ricevuto dal tracker.
Un peer A è interessato al peer B quando B possiede dei pezzi che A non
possiede
Un peer A non è interessato al peer B quando B possiede un sottoinsieme dei
pezzi di A
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
18
BITTORRENT: PARTIZIONAMENTO DEI FILES
• BitTorrent divide ogni file in pezzi, in generale ≥ 256 KB
• viene calcolato l'hash di ogni pezzo
• ogni pezzo è quindi suddiviso in blocchi di 16 KB
• il trasferimento avviene a livello di blocco
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
19
PASSO 1: CREAZIONE DEL FILE .TORRENT
.Torrent: descrittore del file:

file con estensione .torrent che contiene meta informazioni sul file
condiviso

generato automaticamente mediante programmi appositi (maketorrent) o
direttamente mediante un client BitTorrent(Azureus,...)

al momento della generazione del .torrent, l'applicazione richiede
all'utente

il nome del/dei files per cui si vuole generare il descrittore (.torrent)

l'indirizzo di un tracker che coordina la diffusione del file
corrispondente. Esistono due alternative

scegliere l'indirizzo di un tracker da una lista proposta

inserire l'indirizzo di un tracker noto
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
20
IL FILE . TORRENT




utilizzato per ritrovare
il contenuto e verificarne
l'integrità
Alcune informazioni

lunghezza e nome del file

lunghezza dei pezzi

announce: URL del tracker
INFO: include gli hash dei pezzi
(SHA1)
un hash per ogni pezzo
Il file .torrent è bencoded

codifica di Bittorrent
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
21
IL FILE .TORRENT
E' possibile inserire più files nello stesso .torrent
In questo caso i files vengono concatenati e la stringa di bytes risultante
viene suddivisa in pezzi
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
22
IL FILE .TORRENT

Dimensione dei pezzi: 256K, 512K, 1M

Compromesso tra dimensione del torrent ed efficienza dello swarm


più è grande il singolo pezzo, minore è la dimensione del .torrent, minore è
la banda necessaria per scaricare il .torrent dal server
più è piccolo il singolo pezzo, maggiore è la dimensione del .torrent, ma
migliore è la diffusione del file

maggiore flessibilità nella scelta dei peer dello swarm da cui scaricare
il pezzo

maggiore flessibilità nella scelta della politica di scelta dei pezzi

in generale maggiore efficienza nella gestione dello swarm
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
23
PASSO 2: PUBBLICAZIONE DEL FILE .TORRENT



Il .torrent creato deve esser pubblicato su un sito web che fornisce servizio
di indicizzazione dei .torrent
Di solito lo stesso server offre sia il servizio di pubblicazione ed
indicizzazione del .torrent per il servizio di tracking

slternativamente un tracker può essere attivato su un sito diverso
In questo caso si pubblica il .torrent sul tracker specificato nel campo URL
announce del .torrent

fornisce agli utenti registrati servizi di indicizzazione e di tracking

Pubblicazione del .torrent = upload del .torrent sul sito individuato
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
24
PASSO 3: DISTRIBUZIONE DEL .TORRENT




il protocollo BitTorrent non definisce un meccanismo per la ricerca di files
il web server su cui il .torrent è stato pubblicato fornisce anche un servizio
di indicizzazione dei .torrent gestiti

registrazione sul sito e ricerca di un torrent

se il .torrent pubblicato riguarda un file che voglio condividere con un
gruppo di amici, il metodo più veloce per distribuire il .torrent è inviarlo
direttamente agli amici via e-mail/comunicazione via chat/....
sia il peer che vuole condividere il contenuto che i peer che intendono
scaricarlo devono aprire il .torrent mediante un client BitTorrent
L'apertura del file .torrent implica l'attivazione di un protocollo di scambio
informazioni con il tracker
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
25
COMUNICAZIONE PEER TRACKER

il tracker

conosce l'indirizzo di ogni peer dello swarm e consente quindi ad ogni peer
dello swarm di individuare altri peers



invia ai peer un sottoinsieme random dei peer (IP+porta) dello swarm.

un nuovo peer P costruisce l' insieme iniziale dei peer conosciuti con cui
scambierà pezzi di files

P aggiunge a questo insieme successivamente nuovi peer che ottengono
il suo indirizzo dal tracker
i peer contattano periodicamente
informazioni statistiche:

quantità dati inviati e ricevuti
il
tracker
unicamente
per
inviargli
Inoltre, se il numero di peer conosciuti da P scende sotto una certa soglia, P
ricontatta il tracker e si fa inviare un nuovo insieme di peer
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
26
COMUNICAZIONE PEER TRACKER


La comunicazione con il tracker avviene mediante il protocollo HTTP e esso
risponde quindi a richieste HTTP GET
Il peer invia

info hash del file: fingerprint del file

ottenuta come hash degli hash dei pezzi

identifica univocamente il .torrent

è possibile creare diversi .torrent con diversi URL announce, ma con lo
stesso info hash: identificano lo stesso .torrent e possono essere
utilizzati per aumentare la diffusione del file

identificatore del peer

uploaded/downloaded: numero di bytes scaricati/uploadati: utilizzati per
mantenere statistiche dui peer (es: numero di seeders, banda dei peer,...)

event: started/stopped/completed
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
27
COMUNICAZIONE TRACKER PEER

Il tracker risponde ad una richiesta del peer

numero di seeders del file

numero non seeders del file

Identificatore, Ip e porta di una lista di peer dello swarm

Intervallo: intervallo di tempo dopo cui il peer deve ricontattare il tracker

....altre informazioni
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
28
PEER WIRE PROTOCOL

Peer wire protocol: definisce i messaggi scambiati tra i peer

Ogni peer






lascia spazio per alcune connessioni che possono venir aperte da peer
remoti
invia il proprio ID e l'hash SHA1 del il file ricavato dal .torrent
il peer che riceve una richiesta di connessione può rifiutare la connessione


sceglie un sottoinsieme dei peer ricevuti dal tracker e stabilisce con
ognuno di essi una connessione TCP
se l'hash non corrisponde a nessuno degli swarm a cui attualmente
partecipa
se l'ID del peer non corrisponde a quelli ricevuti dal tracker
una volta stabilita la connessione, ogni peer comunica al partner gli indici
dei pezzi dei files che possiede
ogni peer in uno swarm conosce quindi la distribuzione dei pezzi all'interno
dello swarm
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
29
BITTORRENT: ARCHITETTURA GENERALE
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
30
PEER WIRE PROTOCOL


Protocollo per lo scambio di informazioni P2P, implementato su connessioni
TCP
Messaggi

Handshake

Bitfield contiene la lista dei pezzi posseduta codificata mediante una
sequenza di bits, un bit per ogni pezzo

Keepalive

inviati ogni due minuti a meno che non venga inviato un altro
messaggio sulla connessione

per verificare se il client ha chiuso la connessione

Interested/ Not Interested

Have notifica di acquisizione di un nuovo pezzo. Inviato a tutti I peer nel
peer set di uin peer

Request/Piece richiesta/invio di un blocco di dati

Cancel Cancella una richiesta precedente, utilizzato nell'endgame

Choke/Unchoke implementazione algoritmo di unchocking
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
31
PEER WIRE PROTOCOL: ALGORITMI


per la selezione dei peer con cui scambiare i dati

Chocking/ Unchocking (basati sulla teoria dei giochi)

premia i peer più 'collaborativi', quelli che hanno fornito una maggior
quantità di contenuto in passato

Optimistic Unchocking
per la selezione dei pezzi dei files da scaricare

Stricy Priority

Random First Piece

Rarest First

End Game
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
32
PEER WIRE PROTOCOL: SELEZIONE PEZZI

L'ordine con cui i diversi peer dello swarm selezionano i pezzi è importante per

Ottenere una buona efficienza dello swarm

Se viene utilizzata una politica errata, si può verificare la situazione in cui ogni
peer possiede lo stesso insieme di pezzi, ma nessuno possiede un certo pezzo

In questo caso, se tutti i seeders hanno abbandonato la rete, il file non può
essere ricostruito

quale politica per la scelta dei pezzi?
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
33
ALGORITMO PER LA SCELTA DEI PEZZI

Strict Priority


Rarest First


Scaricare i pezzi più rari per primi
Random First Piece


Completare l'”assembalggio” di un pezzo prima di chiederne un altro
Scelta di un pezzo random in fase di boorstrap
Endgame

Broadcast per i blocchi rimanenti quando il download del file sta per
terminare
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
34
SCELTA PEZZI: STRICT PRIORITY



ogni pezzo viene decomposto in blocchi
Se si è richiesto un blocco di un pezzo, richiedere tutti gli altri blocchi
dello stesso pezzo prima di richiedere un blocco di un qualsiasi altro pezzo
Scopo: favorire l' 'assemblaggio veloce' dei pezzi

solo i pezzi completi possono essere scambiati con gli altri peer

l'algoritmo di chocking(vedi lucidi successivi) favorisce i peer che
hanno interi pezzi da scambiare con i partner

il peer cerca di venire in possesso di pezzi completi il più velocemente
possibile, in modo da avere pezzi completiche può scambiare con altri
peer
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
35
SCELTA PEZZI: RANDOM FIRST PIECE




inizialmente un leacher non possiede alcun pezzo e quindi non può offrire
niente agli altri peer dello swarm

è importante che acquisica un pezzo prima possibile per poter iniziare a
negoziare pezzi con altri peer (algoritmo di unchoking)
per scaricare i primi 4 pezzi, si utilizza la politica random first piece: scelta
casuale del pezzo da scaricare
obiettivo: “partenza più veloce”, dopo cui si passa al rarest first
non si sceglie inizialmente il pezzo più raro, perchè

è presente su un solo peer o su un numero limitato di peer ed il suo
download può risultare lento perchè:

minor disponibilità del pezzo, maggior richiesta

maggior probabilità di scegliere un peer lento
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
36
SCELTA DEI PEZZI: LOCAL RAREST FIRST




Ogni peer conosce i pezzi posseduti dai peer nel suo Peer Set
Ogni peer può calcolare la disponibilità di ogni pezzo

quanti peer nel Peer Set possiedono quel pezzo
Rarest Piece Set: l'insieme di pezzi con disponibilità minima rispetto alla
conoscenza locale del peer

aggiornato ogni volta che il peer riceve un messaggio di Have oppure un
bitfield
Rarest Piece First: seleziona in modo casuale un peer tra quelli del Rarest
Piece Set. Obiettivi:

replicare i pezzi rari il più velocemente possibile

reperire un pezzo 'prezioso' da scambiare

scaricare pezzi unici dal seeder
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
37
SCALTA DEI PEZZI: LOCAL RAREST PIECE FIRST
Obiettivi della strategia rarest piece first: massimizzare l'entropia dei pezzi
all'interno del torrent



se il seeder di un file si disconnette dallo swarm esiste il rischio che un
pezzo raro risulti non più disponibile. Questo renderebbe impossibile la
ricostruzione dell'intero file
se esistono pochi seeder, con capacità di upload limitata, questa strategia
garantisce che nuovi downloaders scarichino parti del file dai seeders,
replicando così rapidamente l'intero file e diminuendo così il carico del
download dal seeder
un peer acquisce pezzi rari molto richiesti da altri peer e viene scelto per
il download da molti peer. In questo modo è più probabile che venga
inserito nelle liste di upload di diversi peer.
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
38
SCALTA DEI PEZZI: ENDGAME


Osservazione: i downloads tendono a rallentare quando si è vicini al
completamento del download stesso (circa il 99%)

peer caratterizzati da una bassa banda rallentano la fine del
trasferimento, perchè il trasferimento da questi peer non può essere
sovrapposto al download di altri pezzi
End Game Policy



gli ultimi pezzi del file da scaricare vengono richiesti a tutti i peer che
lo possiedono
per evitare di sprecare banda, quando il pezzo richiesto viene ricevuto
da un peer, i download avviati in parallelo vengono annullati
modesto spreco di banda, in quanto l'end game viene eseguito per un
breve periodo di tempo
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
39
IL PROBLEMA DEI FREE RIDERS

Free Rider = E' un individuo che nasconde le proprie preferenze per un bene,
evitando di pagarne il prezzo e scaricando su altri individui il prezzo del bene
stesso

Se vi sono individui interessati ad un bene pubblico, il free rider si rende conto
che potrà beneficiare ugualmente del bene, senza essere costretto a pagare.

Esempio: un gruppo
di studenti devono decidere se comprare una
elettrodomestico per il l'appartamento comune.

qualcuno può nascondere di volere il televisore per evitare di pagarne il
prezzo.

una volta acquistato, però, non risulta facile impedirgli l'utilizzazione del
bene comune (proprio in quanto comune)

Il Free Riding è un comportamento che prende il nome da colui che sale
sull'autobus senza comprare il biglietto.
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
40
IL PROBLEMA DEI FREE RIDERS




La causa dei Free Riders è la caratteristica di non escludibilità di un bene
pubblico: è difficile escludere dal godimento di un bene pubblico chi non ne
ha pagato il prezzo.
Il problema viene identificato del free riding si può studiare mediante la
teoria dei giochi
Nel caso di content distribution P2P il free rider è un peer che utilizza la
propria banda unicamente per il download e non ne riserva una parte per
eventuali upload
Studio del fenomeno dei free riders

Gnutella:



la maggioranza dei peer (70%) non condivide alcun file o ne condivide
pochi
alcuni peer condividono solo file poco popolari comportandosi, di
fatto,come dei free riders
Emule: il sistema dei crediti è un meccanismo troppo semplice per
evitare il free riding
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
41
FREE RIDERS IN BITTORRENT


Free riding in BitTorrent: peers che non aiutano gli altri se questo ha un
costo

costo in termini di occupazione di banda
Risoluzione del problema dei free riders risulta complessa perchè:


non esiste una entità centralizzata che può controllare i nodi: gli unici
che vedono che cosa accade tra due peer sono i peer stessi
non possiamo imporre un certo comportamento, ad esempio via uno
strato di software: è difficile imporre un certo comportamento al client
Bittorrent, perchè è sempre possibile modificare il client mediante
reverse engineering

a livello applicazione, esistono diversi client BitTorrent (non
officiali) che consentono all'utente di limitare la banda di upload a
proprio piacimento
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
42
FREE RIDERS IN BITTORRENT


il buon funzionamento di BitTorrent dipende
in larga parte dall'
'atteggiamento cooperativo' dei peer nei confronti della comunità, ovvero
dalla eliminazione dei free riders
Un possibile approccio alla soluzione al problema del fenomeno dei free
riders basato su reciprocità: ottiene un buon servizio solo chi fornisce un
buon servizio



“spingere” i peer egoisti a comportarsi bene...
stretegie basata su risulati di teoria dei giochi implementata all'interno
del protocollo stesso
Strategia Tit for Tat basata su problema iterato del prigioniero
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
43
TEORIA DEI GIOCHI

Settore della matematica che studia situazioni in cui i giocatori effettuano
scelte tra diverse strategie per massimizzare i loro risultati

Applicata in economia, biologia, psicologia, sociologia, filosofia, ed informatica

Cerca di modellare il comportamento razionale di individui che devono prendere
decisioni in presenza di conoscenza parziale del comportamento degli altri
individui

Nel nostro caso

Giocatori = peer

Strategia = Comportamenti adottati dai peer quando interagiscono
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
44
TEORIA DEI GIOCHI
Esempio: Pari o Dispari

due giocatori, 1 e 2

entrambi scelgono contemporaneamente un numero

se la somma è pari, vince 1. Altrimenti, vince 2

Pay off = in teoria dei giochi, il pay off risultato, premio, ricompensa,
pagamento.
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
45
TEORIA DEI GIOCHI
• Rappresentazione tabellare del gioco, righe e colonne strategie di gioco
dei due giocatori
I payoff dei giocatori elemnto della tabella corrispondente alle strategie
di gioco dei giocatori
• Scelta razionale: i due giocatori vogliono massimizzare il loro payoff
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
46
TEORIA DEI GIOCHI
Date due strategie X, Y per il giocatore P, se qualsiasi sia la scelta di
strategie per gli altri giocatori, i payoff ottenuti scegliendo X sono
maggiori di quelli ottenuti scegliendo Y, si dice che
X domina fortemente Y
Esempio: A domina fortemente C, E domina fortemente D
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
47
TEORIA DEI GIOCHI: UN ESEMPIO


consideriamo una coppia di studenti che devono decidere come impostare il
lavoro per il giorno successivo, in cui ognuno di essi avrà due impegni

un esame

una presentazione che dovrà essere effettuata assieme dai due studenti
alcune ipotesi semplificative:

lo studente

può studiare per l'esame oppure preparare la presentazione, ma non
può fare entrambe le cose

ottiene due voti diversi uno per l'esame ed uno per la presentazione

si suppone di conoscere esattamente il voto finale ottenuto nel caso che
prepari/non prepari l'esame/la presentazione

per la presentazione: se è preparata dai entambe gli studenti la
votazione finale per ognuno di loro è 100, se è preparata da uno solo di
loro, è 92, se nessuno dei due la prepara, il voto finale è 84

entambe gli studenti ottengono la stessa valutazione per l'esame: 92 se
studiano, 80 se non studiano
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
48
TEORIA DEI GIOCHI: UN ESEMPIO

I due amici non si possono contattare per comunicare le loro decisioni

Ogni studente è interessato ad avere il voto medio migliore

Se entrambi gli studenti preparano la presentazione, ognuno



prende il massimo per la presentazione (100)

il minimo per l'esame (80).

la media è 90
Se entrambi gli studenti studiano per l'esame, ognuno

Prende il massimo nell'esame (92)

Il minimo nella presentazione (84)

La media è 88
Se uno prepara la presentazione e l'altro l'esame


Lo studente che ha preparato la presentazione prende 92 per la
presentazione ed 80 nell'esame. La media è 86
Lo studente che ha studiato per l'esame prende 92 nell'esame e beneficia
della presentazione dell'altro e prende 92. Media 92.
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
49
TEORIA DEI GIOCHI: UN ESEMPIO
La forma strategica di questo problema è la seguente

La strategia dominante per entrambe i giocatori è studiare per l'esame
Se i due studenti potessero mettersi d'accordo nel preparare la
presentazione, potrebbero ottenere un punteggio maggiore, 90

ma... anche se uno studente decide di preparare la presentazione ed
anche se l'altro studente venisse a sapere di questa decisione, l'altro
avrebbe comunque un incentivo a preparare l'esame, perchè il punteggio
sarebbe maggiore

Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
50
IL DILEMMA DEL PRIGIONIERO

Famoso esempio di teoria dei giochi

A e B vengono arrestati dalla polizia


vengono rinchiusi in celle separate, non possono comunicare

vengono interrogati separatamente e ognuno può
resistere all'interrogatorio e proclamarsi innocente

tradire l'altro e confessare il crimine
A seconda del loro comportamento, la polizia si comporta nel modo
seguente





se entrambi resistono (cooperano) vengono incarcerati per 2 anni per
reati minori
se A confessa (tradisce) e B no, il traditore (A) viene liberato e l'altro
(B) resta al fresco per 5 anni
se entrambi tradiscono, vengono entrambi incarcerati per 4 anni
A e B si chiedono: quale è la strategia migliore? Quale porta ad una pena
minore?
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
51
DILEMMA DEL PRIGIONIERO: LA FORMA STRATEGICA
• per entrambe i giocatori:
• D = Defezione, tradimento,
• C = Cooperazione
Payoff = numero di anni risparmiati
• per entrambe i giocatori la strategia D domina C
• risultato: Ogni giocatore ottiene il beneficio maggiore mediante la defezione,
piuttosto che mediante la collaborazione
• La strategia dominante è il tradimento, anche se il numero maggiore di anni si
risparmierebbero mettendosi d'accordo!
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
52
IL DILEMMA DEL PRIGIONIERO: FORMA GENERALE
B
Coopera
Coopera
A
Non Coopera
Non Coopera
R,R
S,T
T,S
P,P
• R = Reward, P= Punishment, T= Temptation, S = Sucker
• Condizione per il Dilemma del Prigioniero:
T > R> P> S
5>3>1>0
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
53
DILEMMA DEL PRIGIONIERO ITERATO

Abbiamo visto che nel Dilemma del Prigioniero la cooperazione non è possibile

Cosa accade se il gioco viene iterato? Supponiamo di voler massimizzare la
somma dei pay-off

Può esserci più spazio per la cooperazione, dato che è possibile scegliere come
comportarsi in base alla storia passata

strategia tit-for-tat
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
54
DILEMMA DEL PRIGIONIERO ITERATO (IPD)

Consideriamo una sequenza di round in cui ad ogni round si affronta il
problema del prigioniero

Supponiamo inoltre di non conoscere il numero di round a priori (non si
conosce quando il gioco ha termine)

Quale è la strategia migliore, in questo caso?

Strategia tit-for-tat (alla lettera, pan per focaccia, botta e risposta)


cooperare sempre al primo turno

quindi replicare la mossa effettuata dall'avversario al passo precedente
Il tit-for-tat


si è rilevata la strategia migliore in diversi tornei a cui hanno partecipato
esperti di teoria dei giochi [Axelrod]
è alla base dell'algoritmo di chocking definito da BitTorrent
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
55
DILEMMA DEL PRIGIONIERO ITERATO (IPD)






Axelrod verifica che la collaborazione 'paga' nel caso del dilemma del
prigioniero iterato
I giocatori accumulano i payoff corrispondenti alla matrice dei payoff
corrispondente al dilemma del prigioniero
Vince chi ha accumulato il valore massimo dei payoff
Ogni giocatore è in grado di ricordare il comportamento dell'avversario
nell'ultima sessione di gioco
La strategia del Tit for Tat se pur molto semplice, si è rilevata migliore di
altre strategie molto più complesse
Il Tit for Tat

non riesce a sconfiggere un singolo oppositore, perchè collabora sempre
come prima mossa,

riesce ugualmente a vincere i tornei, risulta quindi globalmente vincente
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
56
TIT FOR TAT: UN ESEMPIO



Consideriamo 4 giocatori, due di loro (TFT) utilizzano la strategia TitForTat, gli
altri due (ACC) cercano sempre di ottenere il massimo vantaggio, accusando ad
ogni turno l'altro giocatore.
Ad ogni round del gioco, ogni giocatore gioca contro tutti gli altri ed il gioco
prevede 6 rounds
La matrice delle ricompense è la solita del dilemma del prigioniero
cooperazione
accusa
cooperazione
accusa
3,3
0,5
5,0
1,1
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
57
TIT FOR TAT: UN ESEMPIO



Quando un TFT gioca contro un ACC, nel primo turno il primo acquisice 0 punti,
l'ACC acquisice 5 punti. Nei rimanenti 5 rounds, entrambi si accusano e quindi
acquisicono 1 punto a testa. Punteggio finale TFT= 5
ACC=10
Quando i due TFT si affrontano cooperano al primo round e poi a tutti i round
successivi TFT(1)=18 TFT(2)=18
Quando i due ACC si affrontano si accusano a vicenda in tutti i 6 rounds.
Punteggio finale ACC(1)=6 ACC(2)=6


Punteggi finali:

per ogni TFT 5+5+18 = 28

per ogni ACC 10+10+6= 26
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
58
TIT FOR TAT: LA STRATEGIA VINECENTE




Il TFT perde al primo round quando incontra un ACC, ma poi limita le perdite
comportandosi come lui
Se il TFT trova un altro TFT, la cooperazione ricompensa entrambi
Se si incontrano due accusatori, la ricompensa è bassa per entrambi in tutti I
turni
per il dilemma del prigioniero ripetuto la strategia vincente è il Tit-for-Tat
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
59
CONDIZIONI PER IPD
Ulteriore condizione necessaria per il problema iterato del prigioniero
R > (S+T)/2
• si vuole evitare che i giocatori risolvano il dilemma semplicemente accusandosi
a vicenda, a turno.
• supponiamo di giocare per k turni
• si vuole premiare la mutua cooperazione pittosto che l'alternanza di
reciproche accuse.
• R ricompensa media su k mosse per aver collaborato,
• (S+T)/2 ricompensa media se si sono alternate collaborazioni ed accuse
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
60
TIT FOR TAT: CARATTERISTICHE

Cooperativa: si collabora sempre alla prima mossa. In BitTorrent vedremo
che questo corrisponde a fornire sempre dei dati, come prima mossa

Contraccambio: si smette di collaborare se l'altro lo fa. In Bittorrent questo
significa interrompere l'upload dei dati se l'altro non ci invia dati oppure
invia dati ad una velocità bassa

Perdono: si ritorna a collaborare se il partner collabora, anche se non aveva
collaborato in precedenza. In BitTorrent un peer riprende l'upload dei dati
quando un peer gli fornisce di nuovo dei dati

Non invidiosa: non si tenta di far meglio degli altri
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
61
BITTORRENT E TIT FOR TAT


modellare lo scambio di dati come un dilemma del prigioniero iterato

cooperare
= fornire banda sufficiente per l' upload

defezionare = 'soffocare' l'upload
utilizzare una strategia basata su Tit for Tat per promuovere la collaborazione
e diminuire il problema dei free riders

la prima mossa di un peer è sempre un upload (cooperazione)


equivale alla prima mossa ottimistica del tit for tat
successivamente un peer effettua l'upload solo verso i peer che gli hanno
inviato dati con velocità ragionavole (hanno collaborato)
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
62
BITTORRENT: L'ALGORITMO DI CHOCKING
Ricordiamo che:
●
Peer Set lista di peer che il peer conosce (li ha ricevuti dal tracker
oppure è stato contattato da essi)

un peer A è interessato al peer B quando B possiede dei pezzi che A non
possiede

un peer A non è interessato al peer B quando B possiede un sottoinsieme
dei pezzi di A


Un peer Q appartenente al Peer Set di P può trovarsi in due stati

unchoked: P è disposto ad inviare dei pezzi a Q

chocked (soffocato) altrimenti P non invia dati a Q
Active Peer Set di P contiene i peer appartenti al peer set di P per cui P
ha effettuato l'unchocking e che sono interessati a pezzi posseduti da P
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
63
BITTORRENT: ALGORITMO DI CHOKING


ogni peer apre una connessione TCP (connessione bidirezionale) verso un
insieme di altri peer nel suo Peer Set.
ogni connessione si può trovare, in uno dei due seguenti stati



chocked (soffocata): la connessione viene 'soffocata' cioè non viene
utilizzata per il trasferimento dei dati, anche se viene mantenuta
aperta
Algoritmo di chocking:

ogni peer ha un numero arbitrario di connessioni aperte, ma effettua
upload solo attraverso una quantità limitata di esse (in genere 4)

le connessioni vengono comunque lasciate aperte, per non pagare
più di una volte il costo dell'apertura della connessione


unchocked: la connessione è utilizzata per l'upload dei dati
ogni peer periodicamente valuta, per ogni vicino, la velocità di download
da quel vicino nel round precedente e decide quali vicini 'strozzare'
Chocking: rifiuto (temporaneo) ad effettuare l'upload, può essere revocato
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
64
L'ALGORITMO DI CHOCKING

Ogni peer esegue periodicamente l'algoritmo di chocking



utilizzato per garantire un buon livello di reciprocità nel download/upload
dei dati tra due peer
diverse versioni dell'algoritmo di unchoking, implementate in client diversi
Due comportamenti diversi a seconda che il peer sia

Leecher

Seeder
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
65
L'ALGORITMO DI CHOCKING IN SINTESI

Al massimo 4 peer unchoked ed interested

Politica di unchoking, semplificata

Regular Unchocked Peer: ogni 10 secondi i peer remoti interessati al peer
locale sono ordinati rispetto alla velocità con cui hanno inviato i dati al peer
locale ed i 3 più veloci vengono posti in stato unchocked.

Optimistic Unchocked Peer: ogni 30 secondi si sceglie un peer ulteriore in
modo casuale e si effettua l'unchoking di quel peer. Questo corrisponde alla
prima mossa del dilemma del prigioniero.
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
66
LEECHER CHOCKING IN DETTAGLIO



Un round = 10 secondi
Ogni 3 round, quindi ogni 30 secondi:

si sceglie in maniera casuale un peer tra quelli chocked ed interested e se
ne effettua l'unchocking.

questa mossa viene indicata come optimistic unchocking ed il peer viene
indicato come optimistic unchocked peer
Ad ogni round, si ordinano tutti i peer interesssati che hanno inviato almeno un
blocco di dati negli ultimi tre round, secondo la loro velocità di upload

la velocità di upload viene calcolata mediante una media sugli ultimi 20
secondi

si effettua l'unchoking dei 3 peer più veloci

questa mossa viene indicata come regular unchoke ed i peer scelti
vengono indicati come regular unchoked peers

se l'optimistic unchoked peer non fa parte dei tre peer prescelti,l'agoritmo
termina.

in questo caso l'algoritmo ha effettuato l'unchoking di 4 peer, un
unchoking ottimistico e tre regolari
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
67
LEECHER CHOKING IN DETTAGLIO


se l'optimistic unchoked peer fa parte dell'insieme dei regular unchoked
peers, si sceglie in maniera casuale un nuovo peer su cui fare l'optimistic
unchoking

se il peer scelto è interessato, ne viene effettuato l'unchoking e
l'algoritmo termina

se non è interessato, ne viene effettuato comunque l'unchoking e viene
ricercato un altro peer su cui effettuare l'optimistic unchoking.

permesso unchoking di un peer non interessato. L'algoritmo viene
immediatamente rieseguito nel caso in cui il peer diventi interessato.
in un round effettuato l'unchoke di 4 peer interessati e di un insieme di peer
non interessati. L'algoritmo viene invocato

regolarmente, ogni 10 secondi

in più, per aumentare la reattività

quando un peer unchoked diventa interessato e viceversa

quando un peer viene eliminato dal Peer Set,ad esempio perchè ha
lasciato volontariamente la rete
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
68
LEECHER CHOKE ALGORITHM
Optimistic Unchoking

upload ammesso anche su connessioni che non risultano particolarmente veloci o
verso peer che non hanno spedito nulla

Prima mossa del dilemma del prigioniero: provare a colaborare per vedere se
si instaura reciprocità

permette il bootstrap di nuovi peer

un peer appena entrato nella rete non possiede alcun pezzo, quindi non può
effettuare l'upload verso nessun peer

l'optimistic unchocking consente di fornire a questi peer il primo pezzo,
così che essi possano iniziare a effettuare lo scambio
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
69
ANTISNUBBING
To snub = snobbare



Snubbing: se un peer P non riceve pezzi da Q, P non effettua upload verso Q, a
meno che Q non sia scelto da un optimistic upload
Un peer è definito snubbed se tutti gli altri hanno effettuato il choking su di
esso

un peer snubbed non effettua l'uploading verso alcun altro peer

il downlaod dei contenuti viene bloccato per i peer snubbed, finchè il peer
non viene scelto come target di un optimistic unchoke
Antisnubbing: aumentare il numero di optimistic unchoke con l'obiettivo di
trovare un peer che effettui l'upload verso lo snubbed peer
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
70
SEEDER CHOKING ALGORITHM
Nelle prime versioni di Bittorrent:


l'algoritmo per i seeder simile a quello per i leacher
ma i peer non possono essere ordinati dal seeder in base alla loro velocità di
upload, perchè il seeder non scarica nulla dagli altri peer
Algoritmo modificato in modo che il peer ordini i peer rispetto alla loro
velocità di download dal seeder


favorisce i peer con un'alta velocità di download, indipendentemente dal loro
contributo allo swarm
i peer con alta banda possono 'monopolizzare' il seeder e scaricare tutto il
file dal seeder
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
71
SEEDER CHOKING ALGORITHM


Le nuove versioni di Bittorrent prevedono una nuova versione del seeder
choking
Scopo dell'algortimo: bilanciare la distribuzione del file tra tutti i peer
interessati, non sono tra quelli più veloci
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
72
UN ESEMPIO DI INTERAZIONE
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
73
ARCHITETTURE DEL TRACKER



Il tracker centralizzato coordina lo swarm, cioè l'insieme dei peer
interessati nello scaricamento di un singolo
Ogni peer interessato notifica la propria presenza al tracker mediante un
annuncio e riceve dal tracker un sottoinsieme dei peer dello swarm
Il tracker


costituisce un punto di centralizzazione e può diventare un collo di
bottiglia
come eliminare un singolo punto di centralizzazione

multitracker: definizione di più tracker per ogni swarm

utilizzare distributed hash tables (Kademlia)

algoritmi di gossipping (PEX Peer Exchange Protocol)
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
74
SOLUZIONE MULTITRACKER

un insieme di tracker per ogni torrent

ogni tracker dell'insieme conosce tutti i peer dello swarm



un peer contatta un unico tracker per 'annunciare' e ricercare i torrent

obiettivo: bilanciare il carico tra i tracker

il .torrent contiene una lista di 'announce', da cui il peer sceglie un
tracker in maniera random
i tracker si scambiano informazioni in modo da avere sempre lo stato
aggiornato dello swarm
maggior robustezza del sistema: il fallimento del singolo tracker non
provoca il fallimento dell'intero sistema
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
75
DISTRIBUTED TRACKER
●
●



soluzione basate su DHT (Kademlia)
i peer eseguono anche le funzionalità di tracker
●
peer appartenenti anche a swarm diversi formano una singola DHT
ad ogni peer viene associato un identificatore di 160 bit
nello spazio degli identificatori vengono mappati i descrittori dei files
(InfoHash)
per ogni file condiviso, si memorizza sulla DHT:

chiave = InfoHash del file

informazione = lista di peers appartenenti allo swarm
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
76
DISTRIBUTED TRACKER






un peer esegue il lookup sulla DHT con l'infohash del torrent e riceve una
lista di contatti con cui costruisce il suo peer set iniziale
l peer si 'annuncia' sullo swarm aggiungendo un proprio riferimento alla
chiave determinata dall'infohash
richiede la conoscenza di alcuni nodi 'affidabili', costantemente presenti
sulla rete
Tracker centralizzato assicura migliori prestazioni, ma la soluzione
ditributed tracker assicura maggiore affidabilità della rete
Possibili soluzioni ibride
Possibile individuare peer gestiti da tracker diversi, ma che condividono lo
stesso contenuto
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
77
PEER EXCHANGE PROTOCOL(PEX)


Utilizza il tracker centralizzato o la DHT per individuare una lista di peer
iniziale di peer nello swarm
Basato su un protocollo gossip

i peer scambiano continuamente informazioni sui contatti conosciuti

Riduce il carico sul tracker

Aumenta la robustezza del sistema: il sistema resiste a crash del tracker

Controlla che i contatti scambiati si riferiscano a peer attivi

Delta PEX Messages: si scambiano solamente le modifiche della lista dei
contatti effettuate tra due round successivi di gossip
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
78
CONCLUSIONI

Swarm Discovery


Peer Discovery


Scambio di informazioni tra i peer
Selezione dei peer


Central Tracker, Distributed Tracker, PEX protocol
Data Discovery


Search engine
Algoritmi di choking
Selezione dei pezzi

Strict Priority, Rarest First, Random first Piece, Endgame
Dipartimento di Informatica
Università degli Studi di Pisa
Laura Ricci
P2P Content Distribution: Bittorrent
79