Controle sua banda de maneira simples e inteligente com CBQ
Você possui um link de acesso a internet compartilhado e está achando que sua banda não está sendo dividida igualmente entre os usuários? Aprenda nesse artigo como fazer para limitar a quantidade de consumo de banda para cada máquina de sua rede.
Introdução
Depois de ler vários artigos sobre como administrar bem sua banda
de acesso à internet, resolvi escrever um artigo sobre este assunto
pelos seguintes motivos:
Vamos ao que interessa.
Imagine esta cena: você tem um ADSL e compartilha com seus vizinhos, mas um deles usa o Kazaa o dia todo deixando todo mundo lento ou pior, você tem um acesso coletivo em sua empresa, onde na sua maioria, os usuários apenas usam a conexão de maneira "superficial" (e-mail, icq, Kazaa, MSN, bate-papo, etc), ocupando assim toda a banda com coisas inúteis e você precisa fazer uma alteração urgente no servidor remoto, tendo que concorrer com todos usuários, ou pior, a diretoria de sua empresa está achando que a conexão está lenta (embora seu link seja de bom tamanho) e te pede uma solução barata para que eles possam navegar mais rapidamente. Esta cena não é muito difícil de acontecer, contudo ambas as situações podem ser elegantemente contornadas.
A solução: Qualidade de Serviço (QoS)
Qualidade de serviço é um conceito relativamente antigo, que se preocupa em garantir que a rede estará disponível para aplicações críticas quando necessário. Com isto seria possível tirar a prioridade de uma estação, priorizando outra, ou qualquer outra aplicação interativa que não pode ter latência, como o tráfego de voz sobre IP, uma vídeo conferência, telnet ou ssh.
QoS é um assunto muito extenso e abrangente, dessa forma tentaremos aqui trazer apenas o conteúdo para a sua utilização em Linux de maneira clara e objetiva.
Grandes empresas se interessaram por está tecnologia e foram criados protocolos para que os roteadores conversem entre si e estabeleçam um canal especial entre duas máquinas. A Cisco por exemplo, implementou em seus roteadores o RSVP (ReSerVation Protocol), onde, quando duas máquinas tentam trocar dados com QoS, primeiro, o computador que faz o pedido constata o primeiro roteador e pergunta se ele pode oferecer uma quantia x de banda por um certo tempo. Este roteador irá perguntar para o próximo, e este ciclo se repetirá até chegar na máquina de destino. Se todos roteadores no caminho responderem que é possível estabelecer QoS, o canal especial será estabelecido.
O conceito é extremamente interessante, mas imagine o custo que seria trocar os roteadores por equipamentos compatíveis com este protocolo. Valeria a pena?!?
O Linux, entretanto, a partir do kernel 2.2, com adição do pacote iproute2, que integra os comandos tc (Traffic Control) e ip, pode fazer um interessante controle de QoS sem o menor custo. O uso deste recurso sempre foi restrito, pois estes comandos têm a sintaxe razoavelmente complicada e não há boa documentação deste pacote.
Entretanto tudo se tornou muito fácil quando em 1999, Pavel Golubev criou o script cbq.init. Feito em bash, este script acompanha diversas distribuições, como o Red Hat, Mandrake e o Conectiva e é simplesmente um front-end para os comandos do pacote iproute2. Para rodar, precisamos ter instalados os seguintes pacotes, que normalmente vem no cd da sua distribuição e já são em RPM:
Instalados estes pacotes, temos que criar os parâmetros para poder limitar a banda e começarmos a usar o cbq.
- devido à importância do assunto, pois, o acesso ainda não é tão barato assim.
- pela dificuldade de achar informação na internet sobre este assunto.
- é um argumento a mais na hora de implementar o Linux em pequenas e médias empresas, que não tem setor de informática e toda economia é bem vinda.
Vamos ao que interessa.
Imagine esta cena: você tem um ADSL e compartilha com seus vizinhos, mas um deles usa o Kazaa o dia todo deixando todo mundo lento ou pior, você tem um acesso coletivo em sua empresa, onde na sua maioria, os usuários apenas usam a conexão de maneira "superficial" (e-mail, icq, Kazaa, MSN, bate-papo, etc), ocupando assim toda a banda com coisas inúteis e você precisa fazer uma alteração urgente no servidor remoto, tendo que concorrer com todos usuários, ou pior, a diretoria de sua empresa está achando que a conexão está lenta (embora seu link seja de bom tamanho) e te pede uma solução barata para que eles possam navegar mais rapidamente. Esta cena não é muito difícil de acontecer, contudo ambas as situações podem ser elegantemente contornadas.
A solução: Qualidade de Serviço (QoS)
Qualidade de serviço é um conceito relativamente antigo, que se preocupa em garantir que a rede estará disponível para aplicações críticas quando necessário. Com isto seria possível tirar a prioridade de uma estação, priorizando outra, ou qualquer outra aplicação interativa que não pode ter latência, como o tráfego de voz sobre IP, uma vídeo conferência, telnet ou ssh.
QoS é um assunto muito extenso e abrangente, dessa forma tentaremos aqui trazer apenas o conteúdo para a sua utilização em Linux de maneira clara e objetiva.
Grandes empresas se interessaram por está tecnologia e foram criados protocolos para que os roteadores conversem entre si e estabeleçam um canal especial entre duas máquinas. A Cisco por exemplo, implementou em seus roteadores o RSVP (ReSerVation Protocol), onde, quando duas máquinas tentam trocar dados com QoS, primeiro, o computador que faz o pedido constata o primeiro roteador e pergunta se ele pode oferecer uma quantia x de banda por um certo tempo. Este roteador irá perguntar para o próximo, e este ciclo se repetirá até chegar na máquina de destino. Se todos roteadores no caminho responderem que é possível estabelecer QoS, o canal especial será estabelecido.
O conceito é extremamente interessante, mas imagine o custo que seria trocar os roteadores por equipamentos compatíveis com este protocolo. Valeria a pena?!?
O Linux, entretanto, a partir do kernel 2.2, com adição do pacote iproute2, que integra os comandos tc (Traffic Control) e ip, pode fazer um interessante controle de QoS sem o menor custo. O uso deste recurso sempre foi restrito, pois estes comandos têm a sintaxe razoavelmente complicada e não há boa documentação deste pacote.
Entretanto tudo se tornou muito fácil quando em 1999, Pavel Golubev criou o script cbq.init. Feito em bash, este script acompanha diversas distribuições, como o Red Hat, Mandrake e o Conectiva e é simplesmente um front-end para os comandos do pacote iproute2. Para rodar, precisamos ter instalados os seguintes pacotes, que normalmente vem no cd da sua distribuição e já são em RPM:
- iproute2
- shapercfg
Instalados estes pacotes, temos que criar os parâmetros para poder limitar a banda e começarmos a usar o cbq.
Lá vai meu byte de contribuição, usuários de Debian e devivados (Kurumin, Knoppix, etc) podem instalar toda a parafernalha com o seguinte comando:
# apt-get install shaper
Os pacotes de dependências serão automaticamente instalados também (iproute, libatm1).
[]'s