Algoritmi per protocolli peer-to-peer Bittorrent (caso di studio) Livio Torrero (livio.torrero@polito.it) 09/2009
Bittorent: concetti base (1/2) La rete Bittorrent si basa su tracker Spesso integrato con servizio di lookup Il tracker è un web server che offre supporto per il download I Bittorrent indexer localizzano i file Per condividere un file il client creano un torrent Il torrent è un metadata che descrive il file La pubblicazione di un file su Bittorrent richiede: Creazione di un file.torrent che descrive un file Creare un tracker per quel file sul webserver locale Creare una copia seed per quel download La copia seed altro non è che una copia integrale del file 2
BitTorrent: concetti base (2/2) Scopo: razionalizzare le risorse di rete = banda e spazio sui dischi Gli algoritmi visti fino ad ora mirano ad un lookup il più veloce possibile BitTorrent mira a garantire la massima replicabilità delle risorse Componenti base: Torrent = descrittore del file Tracker Peer: Entità centralizzata che gestisce il download Seed: peer che hanno una copia integrale del file Leechers: peer che non hanno ancora una copia intera 3
BitTorrent: funzionamento di base Un peer ricava in qualche modo un torrent Tipicamente da web server Il torrent contiene l indirizzo del tracker Il peer contatta il tracker e fa la join del torrent Il tracker ritorna gli indirizzi di almeno 50 peer che gestiscono il file Il peer mantiene connessioni con almeno 20 (fino a 40) Se no riesce ad averne almeno 20 ricontatta il tracker Ciascun peer che partecipa al torrent invia ogni 30 minuti un report al tracker Informazioni di stato Lo fa anche al join e al leave 4
BitTorrent: tecniche di swarming (1/2) La velocità in download e quella in upload dei PC domestici sono differenti chi scarica da un peer è limitato dalla velocità in upload di quest ultimo Idea: scaricare in parallelo da più peer Le tecniche di swarming consistono nella suddivisione di un file in chunk Chunk = blocchi di dati tipicamente da 256 kb I peer formano uno swarm 5
Bittorrent: tecniche di swarming (2/2) I chunk sono scambiati tra i peer In questo modo è possibile scaricare in parallelo i chunk Download paralleli di chunk diversi da peer diversi Ogni volta che un peer ottiene un chunk, informa i peer a lui collegati Come decide un peer quale chunk scaricare prima? Scarico prima il chunk più raro Il peer decide sulla base delle informazioni ottenute dal tracker Manca una visione globale reale, si ha solo una stima Politica atta a massimizzare l entropia dei chunk 6
BitTorrent: choke e unchoke Un peer manda dati a peer che ne hanno mandati a lui (Tit-for-tat) Ogni peer serve al più 4 peer Se è un seed cerca i 4 migliori downloader (in base al bit rate) Se è un leecher cerca i 4 migliori uploader (in base al bit rate) Questo è realizzato con choke/unchoke Choke: mi rifiuto di servire un peer (tuttavia non chiudo la connessione) Un leecher si collega i 4 migliori uploader e fa choke con gli altri Ogni 10 secondi un leecher verifica quale dei 4 è più lento in upload e ne fa il choke Un seed si collega i 4 migliori downloader e fa choke con gli altri Ogni 10 secondi un seed verifica quale dei 4 è più lento in download e ne fa il choke Optimistic unchoke: Ogni 30 s un leecher abilita un nuovo uploader fra quelli in choke, a prescindere dalle sue prestazioni Ogni 30 s un seed abilita un nuovo downloader fra quelli in choke, a prescindere dalle sue prestazioni Posso scoprire così nuovi peer che offrono migliori prestazioni 7
BitTorrent trackerless Livio Torrero - Politecnico di Torino Idea: il tracker è l unica entità centralizzata in Bittorrent, sostituiamolo con una DHT A partire dalla versione 4.2.0 (2005) Ogni peer diventa un un tracker collegato agli altri sulla DHT L algoritmo DHT usato è Kadmelia Coppie <chiave, valore> nella DHT: Chiave=Info-hash: identifica univocamente un torrent Valore= lista dei peer nello swarm Esempio: un peer vuole entrare a far parte di un torrent: Cerca l info-hash del torrent nella DHT Manda un messaggio ANNOUNCE al/ai nodo/i responsabili della chiave I nodi aggiungono il nuovo peer alla lista dei peer del torrent 8