In the post-Napster era, the whole concept of peer-to-peer files sharing seems to be one of how to keep one step ahead of the Recording Industry Association of America and the Motion Picture Association of America. Mention file sharing and one of the first things that you probably think of is music sharing…what the RIAA would call stealing.
It’s definitely true that lots of music flows through the descendants of Napster, but I’m not going to focus on the dubious legality and ethics of listening to music that wasn’t bought. You can have your own moral battles over what is right and what is wrong.
Peer-to-peer file sharing has basically followed the same premise since it was introduced. Some master server (or servers) keeps track of who is on the network and offering what files. The peers (that’s you!) connect to each other directly, without the aid of a server. Some schemes distribute the network tracking responsibilities amongst the peers. But basically, they all work the same: one peer connects to another and a point-to-point transfer takes place.
The inherent problem with all of this is that each peer has a finite amount of bandwidth. That means that if a bunch of people want to connect to a single peer that is sharing out their copy of OpenOffice (an office productivity suite offered under the GPL), at some point, that peer is going to become saturated with requests.
A rather talented guy, Bram Cohen, came up with a rather interesting idea: given that almost all Internet connections are asymmetric (uploading and downloading are independent of each other), why not develop a peer-to-peer system that distributes the load? The result is BitTorrent.
BitTorrent works similarly to other peer-to-peer networks in that files can be shared on any system and downloaded by any other, but once a peer starts downloading that file, it also makes whatever portion of the file that is downloaded immediately available for sharing. In other words, as soon as you start downloading the latest version of RedHat Linux, once that first chunk hits your hard drive, you automatically make it available for sharing to others. That way, no single computer system is responsible for sharing out any individual file…files are distributed across all of the computers at once.
The inner workings are pretty simple. When a peer connects to download the file, a “dummy” file is created on the hard drive, identical in size to whatever is being downloaded. Then the client software goes into action. Since a full-size file already exists, downloading the real file is more like assembling a jigsaw puzzle. BitTorrent looks out over the network of computers downloading the software and grabs bits and pieces of the file and puts them in the correct places in the dummy file. It doesn’t matter if the first chunk that it downloads is at the beginning, the middle or the end. And as soon as something is downloaded, that piece of data is ready to be sent out to another peer as part of their download.
The big question, of course, is whether or not it works. I think that it does. On March 31, Slashdot announced that the RedHat Linux ISOs were available via BitTorrent. Over the course of the next four hours, roughly 1.5TB (1,500 GB) of data were transferred, roughly 170MB/s.
The software is available for Windows, OSX, Debian Linux and as source for any operating system. The Windows version integrates automatically with Internet Explorer, recognizing the .torrent extension and launching automatically.
I tested BitTorrent on two networks, one at my office, which is connected to the Internet via multiple OC-12 lines and one at home, connected with a 640Kb/s DSL line.
At the office, I downloaded the complete source code ISO images for RedHat 9.0 at an average incoming rate of about 1,100KB/s, while sending out the same data at about 50KB/s.
At home, I downloaded the same files at about 50KB/s, sending at 24KB/s.
It seems that BitTorrent provides solutions to two big problems of peer-to-peer networks: a way to maximize bandwidth for delivery of a specific file and a way to control “leeching”, or the practice of downloading a file without providing a corresponding upload. BitTorrent’s solution to those problems are both simple and elegant. It definitely works!