[BitTorrent] Slave vs. free repeaters

Bill Cox bill at viasic.com
Thu Dec 9 11:01:38 EST 2004


I read the BT protocol last night and came up with this idea.  I'm too
excited not to publish it before I implement it, so here it is.

I agree that getting people to run their clients as repeaters just to be
nice probably wont work very well.  We need a selfish reason for people
to do this.  The answer is slave repeaters.

Basically, I'm going to modify the python client from bittorrent.com to
be a free repeater as described earlier: downloading only enough pieces
to insure the repeater's upload bandwidth is fully used, and exiting the
torrent occasionally to delete unwanted pieces and then reentering.

I'll then modify the free repeater client to become a slave repeater.
Rather than have it fairly choose peers to transfer file pieces with,
it's going to immediately forward pieces it gets to a master peer of my
choosing (my own normal BT client).  If it has no piece the master
wants, it will try to obtain one by only being interested in connecting
with peers that have pieces the master is missing.

This algorithm should not hurt the torrent in any way, since the
repeater will forward as much data to the torrent as it gets just like
any normal BT client.  However, the additional upload bandwidth it
brings to the torrent will be split evenly between servicing the torrent
and feeding it's master.  And, when there is no piece that the master is
currently interested in,the slave repeater will act as a free repeater,
thus helping the torrent's performance overall (and banking brownie
points with other peers in case the master becomes interested again).

Assuming that I use 40KB/s as a max upload speed on all my BT clients
(master and slave repeaters), every slave repeater I set up (at other
sites - not on my cable modem) should increase my master download speed
by about 20KB/s.

The free repeater is simple enough to code.  The slave will be quite a
bit more tricky.  But, since I'm just dumping ideas, here's another:

Chances are that any brownie points accrued by a slave repeater once
it's master is no longer interested will be wasted.  In other words, a
slave repeater does the master no good once the master completes his

If I host a torrent of slave repeaters, I could extend the BT protocol a
bit to allow slave repeaters to remember which other slave repeaters
helped it out on other torrents.

So, a slave could listen to the slave repeater torrent until it gets a
request to help another slave's master on another torrent.  It could
then go do that, and expect help from that same slave at some time in
the future when the master does a future download.  A tit-for-tat
algorithm could help insure that this happens.  So, for example, next
time I download a Fedora Core release, if I have a bunch of slave peers
who owe me big-time, they should all come to my aid and help increase my
download bandwidth to the limit of my cable-modem (and then hopefully
stick around to help everyone else).

Of course, doing the basic free repeater is simple, and the slave will
be pretty tough.  It's optimistic to think I'll get around to writing
the torrent-of-slaves server after that, but it's a fun idea.


------------------------ Yahoo! Groups Sponsor --------------------~--> 
$4.98 domain names from Yahoo!. Register anything.

Yahoo! Groups Links

<*> To visit your group on the web, go to:

<*> To unsubscribe from this group, send an email to:
    BitTorrent-unsubscribe at yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:

More information about the BitTorrent mailing list