Estou curioso sobre o protocolo BitTorrent. Muitos softwares implementam este protocolo como µTorrent, Vuze, qBittorent...
Cada um desses softwares tem uma funcionalidade: Limite de velocidade.
Por exemplo, se minha velocidade máxima de download for 3000 KB/s, posso limitar a velocidade em 1500 KB/s ou 500 KB/s sem diminuir o número de fonte (semente). Como funciona esse limite de velocidade?
Não posso dizer com certeza se todos esses programas fazem isso da mesma maneira, mas dei uma olhada no código-fonte da libtorrent (que é a biblioteca usada pela maioria deles para implementar o protocolo BitTorrent) alguns anos atrás e libtorrent trata assim:
A biblioteca mantém um número médio de upload e download enquanto faz seu trabalho. Quando o limite (seja upload ou download) é atingido, o software simplesmente mantém a operação por um curto período de tempo, até que a média de upload/download caia um pouco abaixo do limite e então recomeça.
Ele não diminui o tráfego apenas quando o limite é atingido. Especialmente downloads de chunks que começaram pouco antes de o limite de download entrar em vigor ainda serão recebidos.
Isso também significa que ele nunca irá pairar exatamente no limite, mas irá ultrapassar um pouco, cair abaixo, ultrapassar novamente, etc.
Manter a operação para downloads significa: Simplesmente NÃO solicitar um novo bloco para download de qualquer par. Para uploads significa recusar solicitações de uploads de outros clientes. (O protocolo BitTorrent tem provisões para dizer ao outro lado "Eu tenho esse pedaço para você, mas não agora. Tente novamente mais tarde.")
PS Há algumas exceções à lógica acima. Especialmente para "movimentadores lentos" com uma quantidade muito baixa de pares, que em alguns casos são permitidos de qualquer maneira, então eles têm uma chance melhor de se propagar pela rede BitTorrent.
PSPS In foi de 3 a 4 anos atrás, eu consultei a fonte libtorrent, mas, pelo que sei, isso não mudou muito e minhas informações ainda são válidas.