[bittorrent] Can a seeder choke a leecher?
brian at dessent.net
Fri Mar 3 16:21:15 EST 2006
> I was wondering if a seeder can choke a leecher and if so what is the
> basis that the seeder would do that on? For example is it based on the
> upload stats from that leecher and if it is where would the seed get
> those stats?
Have you read the protocol spec? Because I don't think choking means
what you think it means. The answer is yes of course they can, and they
In fact unless a seeder is only connected to a very small number of
peers (or the user has configured the $max_uploads variable to be large)
most all the peers will spend most of their time being choked.
Choked just means "I won't send to you right now", that's all. Most
clients have a default for $max_uploads of around 4 to 8, which means
it's only going to unchoke this handful number of peers at any given
time. If it's connected to 50 peers then all of them are choked except
the particular $max_uploads number that it has decided to unchoke at the
Of course it continuously varies who these peers are, using either
randomness (optimistic unchoking) or some other algorithm such as
preferring to unchoke peers that seem to be downloading the fastest
(e.g. based on rate of receiving HAVE messages), or by choosing to
fulfill requests for the rarest pieces, or by other algorithms like the
superseeding method. Most do some combination of both, i.e. reserving
one or two upload slots for optimistic unchoking and the rest for
prioritization. You would have to look at the source code for the
particular client in order to say exactly how each does it. But robust
clients such as azureus will more or less tell you all the information
known to it about each peer, if you enable the columns in the display.
More information about the BitTorrent