[bittorrent] Choke algorithm on a multi-torrent client.

Mikel Pintor millen at gmail.com
Tue Jun 23 10:21:49 EDT 2009


I've been reading this mailing list for a while because I'm developing a Bit
Torrent client as part of a project (and I've found really useful
information here for some questions).I've decided to post because I have
some questions about the choke algorithm.I'm going to implement the choke
algorithm as described on this paper:


As far as I know the choke algorithm described there is the one implemented
on the mainline client. One of my questions is about snubbed peers. The
paper clearly states that every peer that hasn't sent at least one block is
called snubbed,and excluded from the set that will get unchoked. This way
only active peers will get unchoked. What happens when,for example,all the
interested peers are snubbed (except the optimistic one)? The algorithm
would unchoke the optimistic unchoked one (chosen randomly from the peer
set) and ,as it's not one of the regular unchoked peers, the round would
end.This way,only one peer would get unchoked when there were many more that
could get unchoked as well making a better use of the upload resources.Maybe
i have misunderstood the point of it,but

The other question is about the choke algorithm when the cliente is able to
handle more than torrent at once.This algorithm is designed to work with a
single torrent and it's active peer set. How do you implement this algorithm
when your client is able yo handle more than one torrent at once?. I
mean,for example,you can assign 1 upload slot for each torrent,and then use
the choke algorithm to decide what interested peers get unchoked for each
one of those slots. If you have more torrents than slots it's possibly not a
good approach. Also,some torrents may need more slots than others since
there are more interested peers and so on.

Another approach could be to use the choke algorithm on all the interested
peers,regardless of what torrents they are interested in.  But then again,
the choke algorithm depends on the state of the torrent (seeding or
leeching) so I'm not sure how to get this to work. If someone have any idea
of how this is implemented in clients like uTorrent or Azureus it would be
great too.

Thanks in advance.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ibiblio.org/pipermail/bittorrent/attachments/20090623/24cd92a2/attachment.html 

More information about the BitTorrent mailing list