So, I’ve been playing with BitTorrent.
BitTorrent works like this:
Someone (Alice) creates a hash (called a Torrent) of a file which has an announce-tracker built in.
(Alice) then runs the BT(BitTorrent) client with the torrent, which downloads this file from themselves (since BT supports resuming, no actual data is transferred), and announces they are sharing it to the announce-tracker.
Someone Else (Bob) downloads the Torrent and runs the BT(BitTorrent) client with it, which goes to the announce-tracker and says “Okay, Alice has the bit of the file (the start) you want. Here’s where Alice is” and Bob downloads part one from Alice.
A third person (Clive) downloads the Torrent and runs the BT(BitTorrent) client (BitTorrent)with the Torrent, which goes to the announce-tracker and says “Okay, Alice has the whole file, Bob has the first part. Go talk to Bob.
Delaney has the choice of Alice, Bob or Clive. Ernie has Alice, Bob, Clive or Delaney.
Assuming a spherical P2P client of average density, infinite bandwidth rate, and standard temperament, there are three problems with this:
1) The Torrent
In order to download an item, you need to find the Torrent. There are a whole range of sites dedicated to hosting Torrents and pointing you at places that are hosing Torrents. In fact, before the bogus BBC story about a DVD-quality rip of Matrix2 being on BT(BitTorrent) there were an awful lot more, but the entire network got swamped just as various hosts said “Ack. the MPAA are going to kill us” and shut down the sites. Yet I digress. Finding Torrents is non-trivial.
2) The Final Sixth
What happens in the above scenario when Alice goes offline? Well, that depends. If Bob or Clive or anyone has got the last part of the file then Delaney and Ernie can get it from them, but if not then everyone is waiting for Alice to come back. Theoretically there is only one torrent for every file in existence, but in real life there is one for every tinpot server out there. So, I currently own precisely five sixths of each of the first three episodes of 24 Season One (Which I’m trying to find out if I’ll like, hence the download), and until the person uploading them comes back, I’ll carry on with the first five sixths. And, because I’m a nice person and have opened the upload ports too (this isn’t altruism. BT prejudices download speed against people who can’t upload) then anyone can download the first five sixths of the file from me, and they’ll be in the same boat I’m in. hah. Of course, Alice is doing this out of pure altruism so probably went offline by accident. Bob, on the other hand, is an evil mean bastard leeching the system for all it’s worth. The BT client (well, the official ones. Bob may have got one of the others that don’t do this) doesn’t automatically close after the download is done, leaving anyone the whole file ready to be uploaded to anyone. Social pressure and niceness guidelines say to leave the window open at least three times longer than it took you to get the dl. Some tracking systems enforce this (TVTorrents has a particularly nice credits system) but most are relying on the social conscious of kids.
3) The Tracker
A single point of contact is a single point of failure. I was exactly 78.8% into my download of a 3 gig file (in this case Scrubs Season One) when the tracker went away. Vanished. So, I downloaded the remaining part of the file from the person my client knew about and then the client connected to the tracker to find the next part.
“The web site will be down until we have the new server.”
Bother bother bollocks bother bother.
On top of all this, the l33t warez industry has decided BitTorrent is dissing it’s turf and various members of it trying to DDOS .torrent services. Generally, it’s making it very difficult for me to get my fix of West Wing. Damn them all.