quarta-feira, 17 de junho de 2009

Traffic Shaper

Possuo um link de 12 Mb/s do Net Virtua no meu escritório que é compartilhado entre aproximadamente 50 pessoas. Eis que surge um inconveniente, a limitação de trafego mensal que é de 90GB/mês.

Parece muito, mas após realizar a primeiras analises de consumo e verificar que a média diária é de aproximadamente 3GB, percebi que a cota iria estourar muito antes do prazo de 30 dias e teríamos que navegar pela pífia velocidade de 200Kb/s.

O que fazer? Bloquear os sites que mais consomem recursos, tipo Youtube e Videos em flash em geral ?

Infelizmente por trabalhar em uma empresa um tanto quanto liberal, a melhor alternativa foi adicionar um traffic shaper na rede e começar a limitar a banda por usuário.

Para isso, eu utilizei o aplicativo shaper em um servidor Ubuntu Server 9.04.

Primeiro problema, o 9.04 somente vem com o aplicativo shaperd que é completamente diferente do shaper. Após uma caça rápida no Google, encontrei o pacote dentro dos repositórios universe da versão Hardy (8.04)

# deb http://archive.ubuntu.com/ubuntu/ hardy universe

Uma vez adicionada a linha acima no sources.list, bastou rodar um update e após instalar o pacote shaper pelo apt-get.

A instalação não requer praticamente nenhuma dependencia e uma vez instalado, para configurar o shaper é super simples.

Vamos as opções que estou utilizando no momento:

Dentro de /etc/shaper criei os arquivos cbq-0001.-in e cbq-0001.-out

O conteudo do arquivo cbq-0001.-in é:

##Aqui você deve colocar a interface de rede
##Interface,Banda,banda dividida por 10
DEVICE=eth0,100Mbit,10Mbit
##A banda que passa
RATE=500Kbit
##A banda 64/10 dividida por 10, Limite de download
WEIGHT=50Kbit
##prioridade
PRIO=5
##Regras , você pode colocar mais de uma regra , RULE
##Essa regra controla a faixa de ip
RULE=192.168.0.43
##Essa Regra não permite compartilhar banda entre os clientes
## se quiser compartilhar coloque ” no ” nas duas abaixo
BOUNDED=yes
ISOLATED=yes

E no arquivo cbq-0001.-out:

##Aqui você deve colocar a interface de rede
##Interface,Banda,banda dividida por 10
DEVICE=eth0,100Mbit,10Mbit
##A banda que passa
RATE=128Kbit
##A banda 64/10 dividida por 10, Limite de upload
WEIGHT=12Kbit
###prioridade
PRIO=5
##Regras , você pode colocar mais de uma regra , RULE
##Essa regra controla a faixa de ip
RULE=192.168.0.43,
##Essa Regra não permite compartilhar banda entre os clientes
## se quiser compartilhar coloque ” no ” nas duas abaixo
BOUNDED=yes
ISOLATED=yes

Repare que a única diferença entre o in e o out, fora a velocidade é a virgula após o endereço IP. Isso é como o shaper identifica se o trafego que sofrerá shaper é um trafego de entrada ou de saída.

Após criar estes dois arquivos, basta iniciar o shaper digitando:

#/etc/init.d/shaper start

Alguns fatos importantes:

- O campo RULE é onde você ira definir quais os IP's sofrerão shaper. É possivel adicionar N linhas dentro dos arquivos, com cada contendo um IP diferente ou em uma única linha, limitar o trafego de todos.
- Há um bug no shaper quanto a trafego de saída, onde o mesmo desrespeita qualquer valor adicionado no upload e libera toda a banda.

Conclusão.

Com menor banda, o usuário levará mais tempo para carregar um determinado video e consequentemente gastará menos banda com isso.

Consegui chegar a quase 50% de redução no consumo da banda adotando esta medida.

5 comentários:

  1. Você podia ter usado o IMQ para um controle de banda mais eficiente!

    ResponderExcluir
  2. Bom, mas poderia ser ajudado com um proxy com caching. Isso também ajuda...

    Mas o certo mesmo seria a NET parar com essa vergonha de cota de consumo... mas isso é outra história

    ResponderExcluir
  3. Bom... Mesmo assim... considerando 22 dias úteis e 90 Gb para 50 pessoas dá um consumo médio de no máximo 81 Mb por dia por pessoa... Ainda é pouco, não?
    Melhor mesmo seria aumentar o máximo de downloads / mês.

    ResponderExcluir
  4. Trabalho em uma empresa em que o compartilhamento é feito no roteador... como faço para que ele direcione o controle de trafego para o servidor definir quem vai usar quanto de banda?

    ResponderExcluir
  5. Quando fui instalar o shaper
    uma mensagem dizia que eu nao possuía os módulos necessários (cls_u32, sch_cbq, etc). Tive que recompilar meu kernel e habiliteu TUDO de QoS lá, e só depois consegui instalar. Isso, no ubuntu 9.04. + valeu mesmo pelo post. Parabéns

    ResponderExcluir