Я принимаю ответ @ ScottChamberlain, так как поиск термина "справедливость" привел меня к другому набору терминов "удушение" и "снятие", что, в свою очередь, привело меня к окончательному ответу в спецификации протокола BitTorrent (Cohen, Bram. 20 октября 2012 г.)
Удушье делается по нескольким причинам. Контроль перегрузки TCP ведет себя очень плохо при одновременной отправке нескольких соединений. Кроме того, удушение позволяет каждому пиру использовать алгоритм «один за один», чтобы обеспечить постоянную скорость загрузки.
Алгоритм подавления, описанный ниже, является развернутым в настоящее время. [...]
Используемый в настоящее время алгоритм удушения позволяет избежать фибрилляции, изменяя только удушье каждые 10 секунд. Он выполняет взаимную компенсацию и ограничивает количество загрузок, снимая флажок с четырех пиров, у которых он имеет лучшие скорости загрузки и которые заинтересованы. Сверстники, которые имеют более высокую скорость загрузки, но не заинтересованы, становятся непокрытыми, и, если им это интересно, худший загрузчик удушается. Если загрузчик имеет полный файл, он использует свою скорость загрузки, а не скорость загрузки, чтобы решить, кто отключить.
Как же тогда загружаются новые пиявки, поскольку у них нет кусков для загрузки? Оптимистическая разблокировка:
Для оптимистического снятия блокировки в любой момент времени существует один равноправный узел, который не привязан независимо от скорости загрузки (если это интересно, он считается одним из четырех разрешенных загрузчиков). Какой из пиров оптимистически не закреплен, вращается каждые 30 секунд. Чтобы дать им приличный шанс получить полный кусок для загрузки, новые подключения будут в три раза чаще запускаться, чем текущий оптимистический отклик, чем где-либо еще в ротации.
Я нашел другой документ под названием BitTorrent Protocol version 1.0 (Fonseca, J., Reza, B. и Fjeldsted, L. April 2005), который более подробно описывает этот аспект протокола (хотя и основан на более старой версии протокола). ,
В этом разделе описывается алгоритм удушения, рекомендуемый для выбора соседних пиров, с которыми можно обмениваться фигурами. Реализации могут свободно реализовывать любую стратегию, если соблюдаются указания, приведенные в разделе 6.1.
[...]
Все соединения периодически оцениваются с точки зрения их способности предоставлять клиенту лучшую скорость загрузки. Оценка может принимать во внимание такие факторы, как готовность удаленных одноранговых узлов поддерживать незафиксированное соединение с клиентом в течение определенного периода времени, скорость загрузки удаленных одноранговых узлов клиенту и другие критерии, определенные реализацией.
[...]
Единственный недостающий элемент в приведенном выше алгоритме - это возможность гарантировать, что у новых пиров может быть реальная вероятность загрузки фрагмента, даже если они будут иметь плохие оценки в приведенной выше схеме. Простой метод состоит в том, чтобы периодически выбирать случайного пира независимо от того, как он оценивает. Поскольку этот процесс повторяется в циклическом порядке, это гарантирует, что в конечном итоге даже новые сверстники будут иметь возможность быть отключенными.
В этом документе настоятельно предлагается, чтобы в более ранних версиях протокола не были четко указаны схемы "справедливости" - только "руководящие принципы" (упоминаемые выше как «раздел 6.1»), которые включают:
Алгоритм не должен создаваться с целью уменьшения количества загружаемых данных по сравнению с загруженными. По крайней мере, партнер должен загрузить ту же сумму, что он загрузил.
Алгоритм не должен использовать строгую схему «один за другим», когда имеешь дело с удаленными одноранговыми узлами, которые только что присоединились к роду и, следовательно, не могут предложить ничего.