Have you ever wondered why your Internet connection seems to slow down whenever you have a BitTorrent client running? Not only is this slowdown really annoying when you’re trying to download a file and surf the web at the same time, but it can get downright aggravating if you’re forced to share an Internet connection with someone who torrents practically 24/7. As it turns out, the problem is not that abstract, and the answer to the problem is quite simple and not that hard to apply—if you can convince your roommates or housemates to implement it, that is.
Introduction to BitTorrent
In order to understand what a possible solution to this problem might do, it’s important to understand what’s going on within the BitTorrent network and how this affects your machine and your connection. So let’s start off with a bit of history and theory.
For the uninitiated, BitTorrent is the name of a so called peer-to-peer network, based on a protocol designed to distribute large files over a large community without the need for numerous expensive servers. The concept behind the BitTorrent peer-to-peer system was pioneered by American programmer Bram Cohen in 2002, when he first introduced the protocol to the web. The network first gained attention amongst Linux users who where eager to utilize the system to share their open-source software code and ideas. However, the system didn’t really catch on until it was used to illegally distribute multimedia files, such as music, movies, and TV shows.
It’s important to note that there is nothing illegal about the network or its protocol, and as such it’s quite unfortunate that the Recording Industry Association of America (RIAA) and the Movie Picture Association of America (MPAA) seem to regard BitTorrent as being the main source of the problem they wish to eradicate. As if often the case, it’s the illicit use of a few that threatens the legal enjoyment of the masses. But I digress…
Understanding Traditional Downloads
Anyways, in order to be able to make heads or tails of the slowdown problem and its possible solutions, it might also be interesting to understand how BitTorrent works in relation to other methods of obtaining files off of the Net.
The most common way of downloading a file is to simply visit a web page, find the file in question, click on the link, and wait until it finishes downloading. Specifically, the browser sends a request for the file out to the server, the server then responds to initiate the transfer using whatever protocol the client requested (FTP, HTTP, etc). The key to this concept is that the file is stored on a server and the client requests and receives the file from that server; the client traditionally provides no service to anyone else, only the server does.
The P2P Generalities
Now, how and why is BitTorrent so different? The major difference between the traditional method of downloading a file and the way that BitTorrent operates is that the latter is based on the concept of peer-to-peer file sharing, commonly abbreviated as P2P. The essence of P2P is that the need for a server is greatly diminished. The file that you download is hosted by other users, like yourself, as opposed a server—from there the term “peer-to-peer.”
A major difference between BitTorrent and some other P2P networks, like Kazaa and Limewire, is that the protocol uses a centralized server, called a tracker, to keep up with the status of the torrent files. Another major disparity between the different P2P systems and BitTorrent is that it operates on the basic principal of “tit-for-tat,” meaning that a user has to give in order to receive.
A major problem with some P2P systems is that they are saturated with so-called “leechers,” users that take advantage of the network by only downloading and not uploading. One of the major incentives to actually upload in the BitTorrent world is that the more you upload the faster you can download.
One of the main qualms behind the theory of P2P is that the vast majority of users do not have symmetrical connections; meaning that they cannot upload as fast as they can download. Because the sharing of files between peers is based on users sharing what they receive, a crippled upload speed would result in a very slow download. To solve this problem, the protocol is designed to enable multiple connections with different users at the same time, so that different parts of a single file can be downloaded simultaneously, thereby increasing the effective speed of the download.
The Slowdown Problem
The sheer fact that the BitTorrent protocol enables multiple connections is also the main cause of the slowdown in the Internet connection. When the Internet and the systems around it were designed, each device was thought to only be connected with a single connection—not a few hundred as is possible with BitTorrent.
In order to maximize the efficiency of the individual torrent’s peer network, many torrent applications, like Azureus, ABC, uTorrent implement a very high upper limit on the number of concurrent connections. Modems only have a finite amount of memory with which to negotiate the connections and handle the transfer of data, which is what causes the slowdown.
Unfortunately, the problem isn’t only limited to the number of connections, but also to the bit-rate of the upload. If a user is going to dedicate a high percentage of his or her upload speed, say 80% or higher, it would become increasingly hard for other protocols to get their share. If packets encounter a saturated Internet “pipe” then they are more likely to get lost, prompting the client and server to resend the data, resulting in latency.
So, how can this slowdown problem be eliminated?
Well, to be perfectly honest: it can’t. However, its effects can be severely limited. Since the problem consists of having too many concurrent connections, together with saturated pipes, it would seem only logical to lower the upper bound on the number of connections and transfers. With an advanced torrent application like Azureus, ABC, or uTorrent, limiting the number of connections is pretty simple; just look for the corresponding settings in the menu system.
Azureus, for one, has a plethora of free plugins to do all sorts of neat things. One of these plugins, called “Auto Speed,” is ideal for managing the global upload bitrate, thereby limiting the connection lag. As the name implies, it automatically adjusts the maximum upload speed based on the latency of your Internet connection.
Obviously, these adjustments can also be made manual. Through a method of trail and error, it shouldn’t take too long to gauge a tolerable threshold for the upload bitrate. Once this limit is determined, simply adjust the speed cap to be a little lower than that to ensure optimum performance.
The number of simultaneous connections that the program is allowed to establish can also be modified pretty easily. In some programs the default cap on the maximum number of connections can be as high as 250. If you usually only download a single torrent at a time, go ahead and turn this number way down, as most torrent won’t connect to more than 50 peers at once.
Well, I hope that the above explanation has been of some assistance, and please note that this has worked pretty well for my setup, and that results may vary from case to case.