CBQ – Class Based Queueing eh parte da implementacao de QoS (Quality of Service) do Linux.
Com ele eh possivel fazer controle de trafego de saida (traffic shapping) nas interfaces de rede, criando classes de configuracoes. Desta forma, para a mesma interface vc pode criar diversas classes permitindo, por exemplo, definir que o trafego de saida para determinadas portas, IPs, ou combinacao desses seja limitado a uma banda X, enquanto que para outro conjunto de portas seja limitado a uma banda Y.
Na realidade, o cbq.init eh um script que facilita a configuracao da funcionalidade provida pelo pacote iproute2, portanto vc deve ter esse pacote instalado .
Para configurar na sua maquina o processo eh bem simples:
- Baixe o script do link acima em um diretorio temporario;
- Como root, crie o diretorio cbq embaixo de /etc/sysconfig. Este diretorio conterah os arquivos de configuracao;
- No diretorio /etc/sysconfig/cbq crie um arquivo cujo nome siga o padrao cbq-<classid>.<name>
classid eh um numero, onde normalmente se utiliza a banda definida para esta classe, e name eh um label que identifique a funcao e a interface.
Por exemplo, cbq-096.bittorrent-eth0, identifica o arquivo que definirah uma classe com ID 096, cuja limitacao de banda serah 96Kbps, para a interface eth0. O proposito eh limitar a banda utilizada para o upload do cliente bittorrent. - Abaixo segue um exemplo deste arquivo:
DEVICE=eth0,256Kbit,24Kbit
RATE=96Kbit
WEIGHT=9Kbit
PRIO=5
RULE=,:6881
RULE=,:6882
RULE=,:6883
RULE=,:6884
RULE=,:6885
RULE=,:6886
RULE=,:6887
RULE=,:6888
RULE=,:6889
RULE=:6881,
RULE=:6882,
RULE=:6883,
RULE=:6884,
RULE=:6885,
RULE=:6886,
RULE=:6887,
RULE=:6888,
RULE=:6889,A chave DEVICE define a interface, sua banda total, e um parametro de tunning onde eh recomendado usar 10% da banda total.
RATE define a banda maxima para esta classe, e WEIGHT eh novamente tunning, onde se coloca aproximadamente 10% do RATE.
A seguir coloca-se quantas RULEs forem necessarias, definindo pares <IP origem>:<porta origem>,<IP destino>:<porta destino> que devem se encaixar nesta classe. Pode-se usar enderecos de rede tb, veja no proprio script as instrucoes para isso.
A primeira regra, por exemplo, define que qualquer trafego de saida, para qualquer IP, cuja porta destino seja 6881, terah a banda limitada.
Eh importante observar que TODO o trafego da classe eh limitado a RATE, e nao individualmente por conexao. Entao se vc tem duas conexoes enviando dados com porta destino 6881, 6882,.. ou outra listada, as duas vao COMPARTILHAR a banda de 96Kbps. Eh exatamente isso que faz o CBQ interessante.
Para cada classe de shapping necessaria, crie um arquivo diferente seguindo as regras acima.
Esse eh um exemplo simples. Toda uma hierarquia de classes pode ser criada, alem de definicoes de periodos de tempo em que o shapping eh ativo. Para maiores detalhes leia o script, ele contem instrucoes sobre outras opcoes. - Com o(s) arquivo(s) de configuracao criado(s), vc deve incluir o script na sua inicializacao automatica. Vc pode seguir os passos abaixo para fazer isso, assumindo que vc estah como root no diretorio onde baixou o script.
cp cbq.init-v0.7.2 /etc/init.d/cbq
cd /etc/init.d
chmod 755 cbq
chkconfig –add cbq - Ok, vc pode parar o servico usando
/etc/init.d/cbq stop
E reinicia-lo usando
/etc/init.d/cbq start - Para verificar se sua configuracao estah sendo carregada corretamente utilize:
/etc/init.d/cbq stats
A saida deve ter algo semelhante ao abaixoqdisc tbf 96: rate 96Kbit burst 10Kb lat 508.6ms
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)…
class cbq 1:96 parent 1: leaf 96: rate 96Kbit (bounded) prio 5
Sent 0 bytes 0 pkts (dropped 0, overlimits 0)
borrowed 0 overactions 0 avgidle 1.18263e+06 undertime 0
Eh isso! Bom divertimento!!
– hlbog