INDICE
Prefazione
9Capitolo 1
Peer to Peer Overlay Networks
111.1 – Introduzione 11
1.2 – Confronto: P2P vs Client-Server 12
1.3 – Architetture P2P 14
1.3.1 – Centralizzate e decentralizzate 14
1.3.2 – Strutturate e non strutturate 18
1.3.2.1 – Distributed Hash Table (DHT) 19
1.4 – Applicazione delle reti P2P 20
1.4.1 – File-Sharing e Content Distribution 20
1.4.2 – Comunicazione e collaborazione 21 21 22 22 1.4.3 – Calcolo distribuito 1.4.4 – Database 1.5 – Strumenti di valutazione per architetture P2P
Capitolo 2
BitTorrent protocol v 1.0
25 2.1 – Introduzione 25 2.2 – Convenzioni 26 2.3 – Principio di funzionamento 28 2.3.1 – Fase iniziale 29 2.3.2 – Comunicazione con il tracker 29 2.3.3 – Instaurazione connessioni 31 2.3.4 – Messaggi e scambio dati 332.4 – Tecniche e Algoritmi 36 2.4.1 – Pipelining 36 2.4.2 – Super-Seeding Mode 37 2.4.3 – Piece Selection 38 2.4.4 – Choking algorithm 42 2.5 – Miglioramenti 44 2.6 – Considerazioni generali 44
Capitolo 3
BitTorrent in NS2
463.1 – Network Simulator v. 2 – NS2 46 3.1.1 – WLAN in NS2 49
3.2 – Approcci allo studio dell’architettura BitTorrent 54
3.3 – Simulazione BitTorrent in NS2 55
3.3.1 – Assunzioni semplificative 56
3.3.2 – Script OTcl 56
3.4 – Analisi del codice BitTorrent 57
3.4.1 – Scenario di rete semplificato 58 3.4.2 – BitTorrentTracker 58 3.4.3 – BitTorrentConnection 61 3.4.4 – BitTorrenData 63 3.4.5 – BitTorrentApp 65 3.4.5.1 – Fase iniziale 69 3.4.5.2 – Creazione e gestione connessioni 71 3.4.5.3 – Scambio e gestione dati 76 3.4.5.4 - Algoritmi 79 3.4.5.5 – Fase Finale 86
3.5 – Validazione del modello 88
Capitolo 4
4.1 – Descrizione dello scenario di simulazione 91
4.2 – Parametri della simulazione 92
4.2.1 – Parametri generali 92
4.2.2 – Parametri dell’oggetto MobileNode 94
4.3 – Tipologie di simulazione 96
Capitolo 5
Analisi dei risultati
985.1 – Analisi al variare di ifqlength 98
5.2 – Analisi degli algoritmi di selezione dei chunks 103
5.3 – Analisi del throughput e del tempo di download con
ifqlength 100
107
5.3.1 – Distribuzione di 8 seed nella rete 107
5.3.2 – Flash-Crowd 117
5.4 – Conclusioni 123