Limitando banda com o CBQ
Este artigo mostra todos os passos necessários para a implementação do recurso de limitação de banda no Linux, utilizando o recurso "CBQ" do Kernel. Confira este excelente artigo disponibilizado na íntegra com todos os scripts necessários.
Introdução
No Slackware é necessário fazer algumas modificações no script, mas no restante é a mesma coisa.
No Red Hat 7.1, por padrão o script já funciona.
No diretório /etc/sysconfig/cbq/ ficam as regras de limitação (classes).
O arquivo de regra funciona assim:
No Red Hat 7.1, por padrão o script já funciona.
No diretório /etc/sysconfig/cbq/ ficam as regras de limitação (classes).
O arquivo de regra funciona assim:
- cada arquivo é uma regra;
- o nome do arquivo segue o padrão cbq-XXXX.nomedaregra (cbq-0002.fulano), onde XXXX é o numero da regra simples, eu associo XXX ao número do ip do cliente, este número tem obrigatoriamente 4 dígitos, tem que ser 0002 ou maior e pode ser Hexadecimal;
Onde: "nomedaregra" é um nome na qual você possa associar a regra eu utilizo o login dos usuários.
DEVICE=eth0,10Mbit,1Mbit
RATE=64K
WEIGHT=6Kbit
PRIO=5
RULE=192.168.0.2
BOUNDED=yes
ISOLATED=yes
RATE=64K
WEIGHT=6Kbit
PRIO=5
RULE=192.168.0.2
BOUNDED=yes
ISOLATED=yes
Arquivo de exemplo cbq-0002.fulano_out64k:
DEVICE=eth1,10Mbit,1Mbit
RATE=64K
WEIGHT=6Kbit
PRIO=5
RULE=192.168.0.2,
BOUNDED=yes
ISOLATED=yes
RATE=64K
WEIGHT=6Kbit
PRIO=5
RULE=192.168.0.2,
BOUNDED=yes
ISOLATED=yes
Onde:
DEVICE="nome da interface que vai para o cliente","banda","banda/10"
RATE="velocidade"
WEITH="velocidade/10"
PRIO="prioridade (5 é um valor excelente)"
RULE="ip ou rede a ser controlado"
Exemplos :
192.168.0.2 controla o ip
192.168.0.0/24 controla a rede
192.168.0.2:80 controla o ip utilizando a porta 80
192.168.0.0/24:80
Qualquer destas opções seguidos de "," ex. 192.168.0.2, controla o tráfego de saída da sua rede (upload), sendo importante lembrar que todo tráfego de saída deve ser controlado na interface oposta do cliente.
BOUNDED=yes/no se setado para yes o usuário estará limitado mesmo que o link esteja com folga.
ISOLATED=yes/no se setado para yes indica que o cliente não poderá emprestar banda pra ninguém.
Apesar de não utilizar, vou comentar sobre a opção TIME. Esta opção serve para limitar o acesso em horários predeterminados.
Exemplo:
TIME="hora inicial"-"hora final";"velocidade"/"velocidade/10"
Exemplo prático:
TIME=18:00-06:00;256Kbit/25Kbit
Opções do Kernel necessárias para o funcionamento do CBQ:
Code Matury Level Options ---> [*] Prompt for development and/or incomplete code/drivers Networking Options ---> <*> Packet socket [*] Routing Messages <*> Unix domain sockets [*] TCP/IP networking [*] IP advanced router [*] IP Policy routing [*] IP equal cost multipath [*] IP use TOS value as route key [*] IP verbose route monitoring [*] IP large routing tables [*] IP fast network address translation [*] optimize as houte not host QoS and/or fair queueing ---> [*] QoS and/or fair queueing CBQ packet sheduler CSZ packet sheduler The simplest PRIO pseudosheduler RED queue SFQ queue TEQL queue TBF queue [*] QoS support [*] Rate estimator [*] Packet classifier API Routing table based classifier Firewall based classifier U32 classifier Special RSVP classifier Special RSVP classifier for IPv6 [*] Ingress traffic policingOBS: o RedHat 7.1 por default já vem preparado para o CBQ.
Segue abaixo o link para o script de inicialização: Caso alguém necessite de mais informações estou a disposição para maiores esclarecimentos.