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 Client
        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).              
Design
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.