BitTorrent race
Thursday, 22 June 2006 08:29I've been downloading a torrent for a while now where the behaviour is rather amusing.
When I started, there was no seed, only several peers, each just over 50% completed; they brought me up to 50% as well. Later, a seed showed up, but it sent data very, very slowly. Then as soon as one of us peers got a block of data from the seed, we'd share it out to the other peers, so pretty much everyone had the same completion level most of the time.
I could almost imagine the protocol traffic going on. "Hey, heard anything new?" "Nah." "Hey! Wait! The master told me a new secret!" "Oooh, gimme gimme!" "Here, catch!" followed by more waiting. The traffic graph was also interesting; occasional spikes in the "received data" window followed closely by corresponding spikes in the "sent data" window" as my client passed on the newly-acquired information to the others who hadn't had heard of it yet; then only low-level traffic on both sides for a while until someone had managed to acquire a full block from the seed again. So even with my asymmetric connection, I could help the others keep up their percentages because the lulls in traffic made up for the fact that my send rate was only about a third of the best receive rate I saw (and about a tenth of my maximum receive rate)—it just meant that I might spend 20 seconds receiving and a minute sending, but with, sometimes, three to five minutes between new packets, that difference was negligible.
Things are a bit different now; there's one peer which is a bit further ahead than most of us (about 1.2%), apparently because his upload rate is fairly slow as well, so he doesn't share out the new data he gets as fast as he receives new data.