BitMate - BitTorrent for the Less Privileged
BitTorrent is a hugely popular peer-to-peer file sharing system. In countries where broadband Internet is widespread, BitTorrent accounts for as much as 70% of the overall Internet traffic. In contrast, in developing countries, BitTorrent is almost unusable on the typically low bandwidth dialup connections and accounts for less than 10% of the overall traffic.
BitMate is designed to enhance the performance of hosts with low-bandwidth connections. Importantly, BitMate enhances the performance of low-bandwidth nodes without cheating, circumventing the fairness policy of BitTorrent or adversely affecting the performance of other peers.
BitMate outperforms vanilla BitTorrent by as much as 70% in download performance, while at the same time improving upload contribution by as much as 1000%! BitMate also outperforms strategic clients like BitTyrant in low-bandwidth conditions by as much as 60% in download performance (without cheating).
BitMate is a BitTorrent client fully compliant with the BitTorrent protocol and compatible with existing BitTorrent clients. BitMate is implemented using
azureus (Vuze) code base. We have subtly changed the underlying mechanism (GPL'ed) without changing the UI or the codebase that deals with the Vuze platform.
BitMate is designed to specifically improve the performance of low-bandwidth peers (5-20 KB/sec); in our target conditions, Bitmate can almost double your download performance. At the same time, it performs at least as well as the traditional BitTorrent clients for high-bandwidth peers (but you'll see most performance benefit for low-bandwidth peers in the developing-world).
A BitMate client achieves good performance under low-bandwidth conditions by the following key design principles:
- Minimize Wasted Goodwill:
A BitMate client minimizes "wasted" goodwill. Instead of trying to earn goodwill from high-bandwidth nodes, which rarely reciprocate due to a bandwidth mismatch, a BitMate client utilizes its limited bandwidth to earn goodwill with other low-bandwidth peers with which it can establish the most mutually beneficial tit-for-tat connections. As a result, low-bandwidth clients talk to each other more often, helping each other download faster. In doing so, BitMate clients also reduce the arbitrage between their upload and download bandwidth, minimizing the element of free-riding associated with low-bandwidth peers.
- Don't Compete Unnecessarily:
Instead of competing with each other to download the same blocks from high-bandwidth peers, BitMate clients download distinct blocks of a file (that other low-bandwidth nodes have not already downloaded) from high bandwidth peers. This improves performance since low-bandwidth clients download from (reluctant) high-bandwidth peers only when necessary. In essence, by avoiding competition for the same blocks, low-bandwidth BitMate clients "pool" their bandwidth when talking to high bandwidth clients. This also improves fairness since it minimizes the data gratuitously downloaded by low-bandwidth clients from higher bandwidth peers -- instead encouraging mutually beneficial tit-for-tat connections between matching low-bandwidth peers.
- Avoid Redundant Downloads:
A BitMate client is watchful when downloading data from other clients and only downloads from those peers that have it unchoked at the time of download. As a result, a low-bandwidth BitMate node makes faster progress in stringing together a piece and avoids redundant downloads due to "premature chokes" by higher bandwidth peers. This also reduces the element of free riding by not downloading from nodes that have choked a low-bandwidth node.
- Share Aggressively:
A BitMate client does not wait for a piece to download completely before sharing it with other peers. Instead, BitMate implements pipelined uploads to enable uploading by low-bandwidth clients that are otherwise struggling to string together a piece in the face of repeated chokes by other peers. As a result, a BitMate client can start earning goodwill with other peers (by uploading blocks of a piece) quickly while traditional clients are struggling to string together a piece before starting upload
- Minimize Cross-ISP Traffic:
BitMate is designed to minimize cross-ISP traffic without adversely affecting the performance of a low-bandwidth client. However, unlike previous work like Ono, which bias peer selection solely based on the proximity of the peers, BitMate matches peer locality as well as bandwidth. The goal of our work is not to find local peers that may offer better bandwidth due to better path properties, but to find bandwidth-matched peers that may also help reduce congestion on the upstream link of a developing-world ISP.
Overall, a low-bandwidth BitMate client prefers stable, bandwidth-matched peers over the greedy strategy of vanilla BitTorrent. Instead of wasting optimistic unchokes on high bandwidth peers, a BitMate client optimistically unchokes those peers that have a similar low-bandwidth. As a result, a BitMate client invests its scarce upload bandwidth on peers that are most likely to reciprocate. At the same time, BiTMate leaves the tit-for-tat reciprocal unchoke policy untouched to uphold the fairness of BitTorrent. This leads to both increased performance and fairness since low-bandwidth clients can quickly form mutually beneficial peer-to-peer connections.
We have started work on BitMate v2, a very light version of BitMate client. We are aiming for a size of few hundred KBs. The client will be open source and will be written in Python. Anyone who knows Python can be part of this. Public GitHub repository for this project can be accessed at this link.
- 26 February 2011 - BitMate is released.
- 7 March 2011 - BitMate downloads exceed 10,000! BitMate's users come from 162 different countries.
- 23 March 2011 - BitMate has been downloaded more than 17,000 times! BitMate's users come from 173 different countries.
- Umar Saif
- Umair Waheed Khan
This work is funded by a joint grant by HEC/US State Department in collaboration with UC Berkeley.