Capa / Portfolio / 232 posts / 965 comentários

Incomodado por ter que parar de usar a internet toda vez que eu utilizava atualizações via apt ou baixava um arquivo torrent, busquei sobre como eu poderia limitar o uso da banda destes processos, mesmo porque divido a conexão à internet com outros quatro computadores, e sempre que esses downloads demoram um pouquinho mais, é provável que surjam reclamações sobre a lentidão.

O aplicativo mais indicado é o tricke, um limitador de banda que funciona como daemon ou como linha de comando. Ele está disponível nos repositórios do Debian e do Ubuntu:

sudo aptitude install tricke

Após instalado pode-se limitar a banda de um programa que utilize a conexão com a internet ao lançá-lo do seguinte modo:

sudo trickle -s -d 20 aptitude upgrade

Onde -s separa este comando do daemon trickled caso ele esteja habilitado, e -d limita a taxa de download em KB/s. Já para programas que também façam upload, como é o caso do transmission, um cliente torrent, deve-se também configurar uma taxa de upload onde -u é a opção em questão que limitará todos os uploads feitos por esta seção do transmission a até 10KB/s no seguinte exemplo:

tricke -s -d 20 -u 10 transmission arquivo.torrent

Caso você deseje ajustar todas as conexões do computador para terem banda limitada - o que pode ser o caso de um servidor que quando precisa ser atualizado não inutilizará toda a rede, pode-se ajustar o daemon do trickle, chamado trickled.

Este daemon é controlado pelo arquivo /etc/trickled.conf:

1
2
3
4
5
6
7
8
9
[ssh]
Priority = 1
Time-Smoothing = 0.1
Length-Smoothing = 2
 
[ftp]
Priority = 8
Time-Smoothing = 5
Length-Smoothing = 20

Este exemplo de configuração limitará as bandas dos protocolos ssh e ftp, dando prioridade às conexões ssh. Lança-se o daemon da seguinte forma via linha de comando ou script de inicialização:

trickled -d 20

Aqui todas as conexões deste computador serão limitadas à 20KB/s.

Independente do método de utilização, posso agora navegar tranquilamente na internet mesmo enquanto atualizo o meu computador.

4 Comentários

Fábio Prudente04 de abril de 2009 às 12:07 #

Não gostaria de limitar a banda de cada computador em um valor fixo. Para mim, a melhor política de controle seria dar prioridade inversamente proporcional ao volume de tráfego de cada usuário, num certo intervalo de tempo. Assim, podemos deixar que todos usem o máximo de banda disponível, mas dando maior prioridade aos usuários que fazem menos uso - para garantir que eles tenham uma navegação rápida e ágil - e menor prioridade a outro usuário que esteja fazendo um download, ou assistindo a um vídeo.

O Trickle permite a configuração desse tipo de política?

Vinícius Massuchetto04 de abril de 2009 às 12:24 #

Oi Fábio,

Eu não tentei fazer isso ainda, mas podemos lançar o daemon trickled sem nenhum parâmetro para limite de download ou upload deixando-o escolher sozinho os protocolos prioritários a partir do arquivo de configuração. Imagino que isso já resolva o problema da banda máxima em um computador.

Acontece que até onde eu pesquisei esse aplicativo é para uso e controle local da conexão a partir da limitação de banda de cada processo rodado pelo kernel, e embora a política que você citou realmente seja mais interessante, imagino isso implementado a nível de firewall diretamente no iptables, o que estaria mais relacionado ao IP da máquina do que ao número dos seus processos em si.

Vou pesquisar isso assim que eu puder e atualizarei por aqui. Te aviso via comentário. :)

Abraços!

Arthas — 02 de fevereiro de 2010 às 11:41 #

Tenho uma lanhouse e o que está acontecendo é que quando algumas máquinas acessam o Youtube eles roubam a banda das outras máquinas tornando a LAN lenta, gostaria de saber se tem como eu limitar a velocidade para cada máquina ( deixanod em X ), para que aquele usuário se responsabilize pela aquela conexão e que os outros não sejam prejudicados quando acessam quando “ALIENADOS POR YOUTUBE” aparecem na LAN.

Vinícius Massuchetto02 de fevereiro de 2010 às 09:10 #

Olá.

Acho que a solução no seu caso seria montar um firewall com uma regra do iptables aplicada a cada conexão. Não sei mais detalhes sobre isso, mas é só buscar que deve ter algo meio pronto.

Abraços.