By the 2010s, Internet access has become widespreadand, the amount of data transmitted over the Internet has seen a continuos increase. Most state of the art content distribution solutions are based on placing dedicated equipment inside or at the edge of the Internet. The main drawback of this solution is that servers that are playing the main role in the distribution of content are poorly scalable. In recent years, a new paradigm for content distribution has emerged based on a fully distributed architecture that solves several drawback of the client-server based architecture. The most well-known example of this is BitTorrent, which became extremely popular as a way of delivering Linux distributions and other popular content to users. BitTorrent splits the file into small blocks, and after a node downloads a block from another peer, the node behaves as a server for that particular block, and thus contributes resources for serving the block. Despite the enormous potential and popularity of BitTorrent, it suffers from a number of inefficiencies which decrease its overall performance. Such inefficiency is for example, when a block is only available on a few nodes, making the block difficult to access.
In my work, I investigated the inefficiencies of the BitTorrent protocol. I also analyzed the methods that can increase network efficiency by taking advantage of unused resources on the nodes, specifically performing computations and applying network coding at the nodes. Based on the analysis, an application was developed, that can communicate using basic BitTorrent protocol. Furthermore a BitTorrent protocol extension, the Network Coding Messaging Extension was design and implemented that offers a way for the nodes to exchange data using network coding. Throughout the development of the extension, keeping the backward compatibility of the extension to the basic BitTorrent protocol was an important aspect. To verify the efficiency of the designed protocol extension, a framework was implementedwith the ability to run simulations with hundreds of peers, in various network scenarios.
With the help of the developed system, several simulations were performed. Based on the results, I presented the increase in efficiency caused by the developed BitTorrent protocol extension in different circumstances. The presented measurements and results may serve as starting point for further network coding based research.