sexta-feira, 16 de maio de 2008

Limitando banda com o CBQ

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:
  1. cada arquivo é uma regra;
  2. 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.
Arquivo de exemplo cbq-0002.fulano_in64k:

DEVICE=eth0,10Mbit,1Mbit
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

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 policing
OBS: o RedHat 7.1 por default já vem preparado para o CBQ.

Segue abaixo o link para o script de inicialização: Créditos:
Romulo
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=367

Nenhum comentário: