[bittorrent] Friend-machines-assisted approach to boosting one's BT download

Bill Cox bill at viasic.com
Tue Jun 13 15:31:35 EDT 2006

I think this is a great idea... in fact, I've implemented it.  Check out
btslave.sf.net.  Also, I don't see how this is off-topic.  I'll explain
some below, but the site goes into more detail.  ByteCool, feel free to
e-mail me directly at bill at billrocks.org.  You'll need to know what
color the sky is to get through my challenge-response filter!

Friends helping you download can be done in a way that is good for the
swarm.  The basic BT protocol is quite robust, and allows for some
variation in client algorithms.  However, I use a much different
algorithm from the one you describe in order to be more swarm friendly.

Rather than doing a massive download and then exiting the swarm, friends
download only a piece at a time, rewarding the swarm by uploading at
least as much as they download.  When a friend gets a new piece that you
don't have, they make those pieces available to you by unchoking you,
and go after another piece you need.  They keep a cache of rarest pieces
to help the swarm, but they only need to reward the swarm for about as
much data as they download, so they don't keep pieces forever.  This can
greatly reduce the disk space needed to help a friend in need (btslave
can use memory for the cache so your disk doesn't even spin).

For each piece that a friend uploads to you, that friend will need to
upload as much data to the swarm to keep the swarm happy.  Thus, you get
at most 1/2 his bandwidth.  So, to double your download rate, you'll
need at least two friends.  This has been verified in practice.  Also,
your friend will achieve about a 2-to-1 upload/download ratio, which is
why you'll be able to download more than you upload.  Taken as a group,
you and your friends are good swarm citizens.

Now, what would happen if everyone used a BT-Friends protocol enabled
client?  Good things.  Imagine there's a new Fedora Core release, and
that everyone who wants it has a typical asymmetric DSL or cable link,
and 4 friends willing to help download.  Sure, the swarm will be 5X
larger, but BitTorrent gets better as the swarm grows, and most of those
guys in the swarm will be friends working hard to cache rarest pieces,
improving piece availability for everyone.  Each machine trying to
download would have 4 friends helping him, increasing their download
rate nearly 3X.

That's a big improvement.  It would be good for the entire swarm, and
good for BitTorrent in general.

The actual algorithm I've written has morphed a fair amount.  It's
amazing what you find out when you actually go write it!  For example,
your friends aren't just a few guys you know... they're anyone who "owe"
you bits.  When you need help, you can invite these guys to help out in
your swarm, but they only enter if they are available and want to gain
good will for future downloads, not just from you, but anyone in the
swarm who is Friends enabled.  So, they don't show up to help you.  They
show up to help everyone, not because they're nice, but because they're
greedy.  Motivated self-interest directed towards the greater good...
Just like the original BT protocol.


On Sat, 2006-06-03 at 09:23 +0000, ByteCool Software wrote:
> I have an idea about boosting one's downloading in a swarm, and wish
> your kind evaluation and implementation.
> Suppose I have several friends whose machines are often idle when I
> want to download something via a torrent. These friend machines have
> quite good broadband connection speed with my machine. Because of some
> agreement between us, they allow me to signal their machines to join a
> torrent of my interest.
> So these friend machines automatically join a torrent when I do. But
> this alone may not help boost my own downloading much. So, I would like
> the friend machines and my machine to try download chunks different
> from that of each other. As soon as these macihnes combined have all
> the chunks, they can quit the torrent (doing so all of a sudden can
> harm the rest of the swarm, so somebody advised me that they should
> quit one by one in moderate intervals), and transfer their chunks that
> I don't have yet to my machine. Of course we assume that downloading
> these chunks via the torrent is slower than via the friends-to-me
> broadband connections.
> So, can this friend-machines-assisted approach make my downloading
> faster than my machine alone in the torrent swarm?
> Best Regards,
> Yao Ziyuan
> _______________________________________________
> BitTorrent mailing list
> BitTorrent at lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/bittorrent

More information about the BitTorrent mailing list