+ Responder ao Tópico



  1. #1

    Padrão Fedora 9 + CBQ - Não faz limitação, nem de download, nem upload.

    Pessoal,


    estou com um problema para implementar o CBQ em meu servidor.
    Possuo o Fedora 9 com o kernel padrão do fedora (2.6.27.12-78.2.8.fc9.i686) que foi atualizado direto pelo yum.

    Possuo duas interfaces reais (eth0 e eth1) e uma virtual (eth0:1) e meu link é através de um modem adsl (ppp0).
    Possuo também o SQUID rodando e meu iptables faz redirecionamento de portas, ou seja, qq coisa vindo da rede interna (eth0)
    com destino a porta 80, redireciona para a porta do SQUID (3128).

    O problema real é o seguinte:
    O CBQ não está fazendo a limitação que deveria, não importa a RATE ou o WEIGHT q eu altere nas regras, ele nao faz a limitação,
    seja para download, quanto para upload.

    Abaixo segue minha conf:

    =====================================================
    Interfaces:

    eth0 (Rede Interna - 192.168.0.0/24)
    eth0:1 (Rede para administração de AP-Wireless - Sem uso de rede - 192.168.100.0/24)
    eth1 (Sem configuração - conectada ao modem ADSL)
    ppp0 (Link com a internet ligado a eth1)

    =====================================================
    CBQ:

    cbq-0002.in.redelocal:
    DEVICE=eth0,100Mbit,10Mbit
    RATE=200Kbps
    WEIGHT=20Kbps
    PRIO=5
    BOUNDED=no
    ISOLATED=no
    RULE=192.168.0.0/24

    cbq-0003.in.192168000002:
    DEVICE=eth0,100Mbit,10Mbit
    RATE=100Kbps
    WEIGHT=10Kbps
    PRIO=5
    BOUNDED=yes
    ISOLATED=yes
    RULE=192.168.0.2/32

    cbq-1002.out.redelocal:
    DEVICE=ppp0,10Mbit,1Mbit
    RATE=100Kbps
    WEIGHT=10Kbps
    PRIO=5
    BOUNDED=yes
    ISOLATED=yes
    RULE=192.168.0.0/24,

    cbq-1003.out.192168000002:
    DEVICE=ppp0,10Mbit,1Mbit
    RATE=300Kbps
    WEIGHT=30Kbps
    PRIO=5
    BOUNDED=yes
    ISOLATED=yes
    RULE=192.168.0.2/32,
    ================================================

    Isso é o que aparece com o comando 'cat /var/cache/cbq.init':

    /sbin/tc qdisc del dev eth0 root
    /sbin/tc qdisc add dev eth0 root handle 1 cbq bandwidth 100Mbit avpkt 3000 cell 8
    /sbin/tc class change dev eth0 root cbq weight 10Mbit allot 1514

    /sbin/tc qdisc del dev ppp0 root
    /sbin/tc qdisc add dev ppp0 root handle 1 cbq bandwidth 10Mbit avpkt 3000 cell 8
    /sbin/tc class change dev ppp0 root cbq weight 1Mbit allot 1514

    /sbin/tc class add dev eth0 parent 1: classid 1:2 cbq bandwidth 100Mbit rate 200Kbps weight 20Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
    /sbin/tc qdisc add dev eth0 parent 1:2 handle 2 tbf rate 200Kbps buffer 10Kb/8 limit 15Kb mtu 1500
    /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.0/24 classid 1:2

    /sbin/tc class add dev eth0 parent 1: classid 1:3 cbq bandwidth 100Mbit rate 100Kbps weight 10Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
    /sbin/tc qdisc add dev eth0 parent 1:3 handle 3 tbf rate 100Kbps buffer 10Kb/8 limit 15Kb mtu 1500
    /sbin/tc filter add dev eth0 parent 1:0 protocol ip prio 100 u32 match ip dst 192.168.0.2/32 classid 1:3

    /sbin/tc class add dev ppp0 parent 1: classid 1:1002 cbq bandwidth 10Mbit rate 100Kbps weight 10Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
    /sbin/tc qdisc add dev ppp0 parent 1:1002 handle 1002 tbf rate 100Kbps buffer 10Kb/8 limit 15Kb mtu 1500
    /sbin/tc filter add dev ppp0 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.0.0/24 classid 1:1002

    /sbin/tc class add dev ppp0 parent 1: classid 1:1003 cbq bandwidth 10Mbit rate 300Kbps weight 30Kbps prio 5 allot 1514 cell 8 maxburst 20 avpkt 3000 bounded isolated
    /sbin/tc qdisc add dev ppp0 parent 1:1003 handle 1003 tbf rate 300Kbps buffer 10Kb/8 limit 15Kb mtu 1500
    /sbin/tc filter add dev ppp0 parent 1:0 protocol ip prio 100 u32 match ip src 192.168.0.2/32 classid 1:1003


    ========================================================================================================================

    Isso, quando executo o comando 'cbq stats' apos teste no velocimetro 'www.speedtest.net':

    ### eth0: queueing disciplines

    qdisc cbq 1: root rate 100000Kbit (bounded,isolated) prio no-transmit
    Sent 1585999 bytes 1339 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    borrowed 0 overactions 0 avgidle 234 undertime 0

    ### eth0: traffic classes

    class cbq 1: root rate 100000Kbit (bounded,isolated) prio no-transmit
    Sent 1586435 bytes 1341 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    borrowed 0 overactions 0 avgidle 227 undertime 0

    ### eth0: filtering rules

    filter parent 1: protocol ip pref 100 u32
    filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
    filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:2 (rule hit 1342 success 1342)
    dst 192.168.0.0/24 (success 1342 )

    filter parent 1: protocol ip pref 100 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:3 (rule hit 0 success 0)
    dst 192.168.0.2/32 (success 0 )


    ### eth1: queueing disciplines

    qdisc pfifo_fast 0: root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
    Sent 6957726 bytes 21689 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0

    ### ppp0: queueing disciplines

    qdisc cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit
    Sent 392585 bytes 856 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    borrowed 0 overactions 0 avgidle 2343 undertime 0

    ### ppp0: traffic classes

    class cbq 1: root rate 10000Kbit (bounded,isolated) prio no-transmit
    Sent 392585 bytes 856 pkt (dropped 0, overlimits 0 requeues 0)
    rate 0bit 0pps backlog 0b 0p requeues 0
    borrowed 0 overactions 0 avgidle 2343 undertime 0

    ### ppp0: filtering rules

    filter parent 1: protocol ip pref 100 u32
    filter parent 1: protocol ip pref 100 u32 fh 800: ht divisor 1
    filter parent 1: protocol ip pref 100 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:1002 (rule hit 856 success 0)
    src 192.168.0.0/24 (success 0 )

    filter parent 1: protocol ip pref 100 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:1003 (rule hit 856 success 0)
    src 192.168.0.2/32 (success 0 )



    Repare nas linhas verdes e azuis. As verdes são as regras para a classe e as azuis as regras para o meu IP. Parece que ele não acha nenhum trafego para esse filtro. Porém, mesmo se eu limitando o filtro da classe para algo como RATE=100Kbps, não ocorre a limitação.

    =========================================================================================================================

    Não entendo por que não funciona, ao meu ver esta tudo correto. A unica coisa que me falta ver é o kernel. Digo isso porque
    minha primeira opção seria o HTB, pore, ele começou a dar erros dizendo que meu Kernel não dava suporte ao HTB ou o HTB já
    estava rodando.
    Como não queria mecher no Kernel, decidi pelo CBQ, mas com isso, estou preocupado se este meu Kernel realmente está bom.

    Por favor me ajudem.

    PS.: Alguem pdoeria me dizer quais as opções do Kernel eu preciso compilar para um bom funcionamento do QoS?

  2. #2
    Analista de Sistemas Avatar de MDdantas
    Ingresso
    Apr 2007
    Localização
    Caruaru - Pernambuco
    Posts
    422

    Padrão

    Boa noite amigo.

    Acredito que terás um pouco de trabalho emr relação ao CBQ, pois em relação ao controle de upload terás que marcar os pacotes para o correto funcionamento. Um pouco trabalhoso. Mas se queres trabalhar um pouco mais rápido e sem complicações sugiro utilizar o htb-tools. Estarei postando um tutorial aqui hoje à noite após a faculdade. E depois de instalado, ele é show de bola. Preciso no controle tanto de download quanto de upload.


    Atenciosamente,

  3. #3
    Analista de Sistemas Avatar de MDdantas
    Ingresso
    Apr 2007
    Localização
    Caruaru - Pernambuco
    Posts
    422

    Padrão

    GERENCIAMENTO NO CONTROLE DE BANDA – HTB-Tools


    Moab Dantas Queiroz
    Analista de Sistemas

    ATENÇÃO: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS.

    1. INTRODUÇÃO
    A economia de recursos, equipamentos, serviços, compartilhamento de Internet entre outras vantagens tornam indispensável o uso de redes de computadores em diversas instituições. Porém é preciso dividir o uso dos recursos entre os usuários de forma que todos possam usufruir sem prejudicar os demais. Esse controle pode ser resolvido com o HTB, que impõe o controle na banda e, então, garante uma taxa de conexão de acordo com as necessidades e as prioridades de cada usuário.

    2. O QUE É HTB?
    O HTB (Hierarchical Token Bucket) é um recurso nativo do kernel GNU/Linux utilizado no controle do tráfego de um link físico de acesso a Internet em uma rede de computadores.

    3. OS PRÉ-REQUISITOS PARA USAR O HTB E HTB-TOOLS NO FEDORA 9
    A distribuição FEDORA 9 com o kernel Linux versão 2.6.18 ou superior deve estar corretamente instalada porque os módulos do HTB já estarão inclusos no kernel.

    4. A INSTALAÇÃO DO HTB E DO HTB-TOOLS NO FEDORA 9

    Confirmado que o seu kernel é pertencente a versão 2.6.18 ou superior, iremos agora começar todo o procedimento para a instalação e configuração do HTB-Tools.

    1º passo
    Realizar a instalação dos pacotes os quais o HTB Tools possui dependência. Os pacotes são: Make, Flex, Gcc e o Dialog. Em seu terminal, digite o seguinte comando, sendo usuário root:

    [root@servidor] yum install make flex gcc dialog

    2º passo
    Agora iremos levantar o seguintes módulos necessários. Em seu terminal, digite o seguinte comando, sendo usuário root:

    [root@servidor] modprobe sch_htb
    [root@servidor]modprobe sch_sfq
    [root@servidor]modprobe cls_u32

    3º passo
    Crie o diretório man8 (na instalação será copiado um arquivo de manual para esta
    pasta). E caso não seja criado, apresentará erro na instalação do pacote HTB-Tools.

    [root@servidor] mkdir /usr/local/man/man8

    4º passo
    Agora, realize o download do arquivo htb_tools-0.3.0a.tar.gz. Feito o download, descompactamos o pacote:

    [root@servidor] tar –zxvf htb_tools-0.3.0a.tar.gz

    Entre no diretório HTB-TOOLS-0.3.0a.

    [root@servidor] cd HTB-TOOLS-0.3.0a

    Dentro do diretório HTB-TOOLS-0.3.0a, crie um diretório dentro do subdiretório /include. O diretório criado terá o nome de asm (/include/asm):

    [root@servidor] mkdir /include/asm

    Após criar o diretório /include/asm, copie o arquivo bitops.h (o arquivo está disponibilizado junto com o artigo) para dentro dele.

    Feito isto, o HTB-Tools já se encontra todo configurado e pronto para a sua instalação.
    Volte para a raiz do diretório HTB-TOOLS-0.3.a e execute os seguintes comandos:

    [root@servidor /HTB-TOOLS-0.3.0a] make && make full

    Isto irá instalar os binários q_parser, q_show, q_checkcfg, htb, htbgen no diretório
    /sbin , o script rc.htb irá para o diretório de scripts que for indicado, os dois arquivos de
    configuração padrão eth0-qos.cfg para upload and eth1-qos.cfg para download irão
    para a pasta /etc/htb e também instalará o q_show.php e o gerador de configurações
    wHTB-tools.

    Pronto, o HTB-TOOLS está funcionando em conjunto com o HTB.

    5. CONFIGURANDO O HTB-TOOLS NO FEDORA 9

    É bastante trivial a configuração do HTB-Tools. Imaginando que o tráfego da rede interna tenha que passar da interface de rede eth0 (placa onde está sua rede interna, isto é, conectada no swicth) para sair pela eth1 (placa rede conectada com o roteador), então, basta alterar o eth0-qos.cfg padrão (isto para o eth0, é claro) conforme a necessidade da rede. Digamos que se deseja que o tráfego da rede de uma empresa 192.168.1.0/24 (rede_1) tenha exclusividade de 512Kbps no máximo e 480Kbps garantidos nos dias de pico. Sabendo que a banda máxima que a rede pode atingir é de 5Mbps, então, o arquivo eth0-qos.cfg ficaria assim:

    class Rede_Empresa {
    bandwidth 5000;
    limit 5000;
    burst 0;
    priority 1;
    client rede_1 {
    bandwidth 480;
    limit 512;
    burst 0;
    priority 1;
    dst {
    192.168.1.0/24;
    };
    };
    client rede_geral {
    bandwidth 8;
    limit 5000;
    burst 0;
    priority 2;
    dst {
    0.0.0.0/24;
    };
    };
    };

    class default {
    bandwidth 8;
    };

    Um diferencial que o HTB possui em relação as demais ferramentas de controle de tráfego é que você pode determinar qual a banda mínima garantida que o usuário irá ter e qual o limite máximo que ele usará caso haja disponibilidade no link. Feito esta configuração, basta executar o seguinte comando para que as regras de controle de banda entrem em vigor:

    [root@servidor] htb eth0 start

    Está feito o controle de banda desta empresa, dando exclusividade de 512Kbps para a rede 1, assim também, limitando a banda da rede para 4520Kbps. Entende-se que, tudo o que não estiver declarado como a rede_1, faz parte da classe default e não da classe Rede_Empresa. Há outras variantes para a configuração do HTB-TOOLS. No caso acima citado, fizemos o controle do download (dst = destination). Para controlar o upload utiliza-se src (source) no lugar do dst. Pode ser usado o IP de um host, no lugar de usar o IP da rede, apenas citando o ip seguido da máscara. (Ex.: 192.168.1.35/24

    Se quiser controlar uma porta específica, basta incluir o número da porta logo após o IP da rede/host. (Ex.ara a porta 80 ==> 192.168.1.0/24 80). Outros controles que podem ser usado na administração usando o HTB com HTBTOOLS é:

    # htb <interface> { start | stop | stats | generate }
    ou
    # htb { help | version }

    Onde:
    interface - a interface de rede que você deseja controlar
    start - aplica as propriedades do arquivo de configuração na interface
    stop - apaga as regras aplicadas a interface específica
    stats - mostra, em tempo real, a estatística de tráfego para a interface
    generate - apenas cria o script para aplicar as regras
    help - mostra algumas informações úteis
    version - mostra a versão e informações de direitos autorais

    AGORA O MELHOR DE TODOS, VOCÊ PODE SIMPLIFICAR TUDO ISSO, UTILIZANDO A INTERFACE GRÁFICA DO HTB-TOOLS. VÁ NO DIRETÓRIO DO HTB-TOOLS.

    [root@servidor] cd HTB-TOOLS-0.3.0a

    Agora basta digitar:

    [root@servidor] ./setup

    Que Deus abençoe a todos.

    Atenciosamente,
    Arquivos Anexos Arquivos Anexos