[FUG-BR] IPFW - Sequência de PIPE e QUEUE

Trober trober em trober.com
Sexta Abril 24 18:23:29 BRT 2009


Olá a todos.

Observo que na maioria dos exemplos que rolam por aí referente à
utilização do IPFW para controle de banda utilizam "pipe 1", "pipe 2",
"pipe 3", sempre em sequência, começando em 1, contíguos, sem intervalos
(1,2,3,4,5,6,...).

Fiz um sistema de gestão de firewall, em que os rulesets de 6000 até 19999
são destinados ao controle banda. Para um controle mais fácil (adição,
edição, exclusão) o número do pipe (pipe_nr) e do queue são iguais ao do
ruleset.

Por exemplo (parcial):

VARRULESTART tem valor inicial de 6000 e VARRULEGROWN é igual a 5,
incrementando a cada cliente (linha) que leio de um arquivo texto.

    # Download Rules
    VARRULESTART=$((VARRULESTART+$VARRULEGROWN))
    $fz pipe  $VARRULESTART config bw ${varBWDOWN}Kbit/s mask dst-ip
0xffffffff
    $fz queue $VARRULESTART config pipe $VARRULESTART
    $fz add   $VARRULESTART queue $VARRULESTART all from any to $varBWIP

    # Upload Rules
    VARRULESTART=$((VARRULESTART+$VARRULEGROWN))
    $fz pipe  $VARRULESTART config bw ${varBWUP}Kbit/s mask src-ip 0xffffffff
    $fz queue $VARRULESTART config pipe $VARRULESTART
    $fz add   $VARRULESTART queue $VARRULESTART all from $varBWIP to any

Meu arquivo texto tem o seguinte formato:

    STATE IPADDRESS     MAC               DOWN UP   HOSTNAME  PROxYFULL
    on    192.168.20.2  aa:bb:cc:dd:ee:f1 256  128  george    yes
    on    192.168.20.6  aa:bb:cc:dd:ee:f2 256  128  john      no
    on    192.168.20.10 aa:bb:cc:dd:ee:f3 256  128  paul      yes
    on    192.168.20.14 aa:bb:cc:dd:ee:f4 256  128  ringo     yes

Se o valor de VARRULESTART for igual a 0, com incremento de 1, os pipes e
queues atuam perfeitamente em programas de P2P.

Concluí, que o problema reportado em minha mensagem[1] sobre a anomalia do
IPFW não estava relacionada à mascara[2], e sim aos seguintes fatos:

1) O IPFW aceita para pipe e queue qualquer inteiro positivo entre 1 e
65535, porém, desgraçadamente, em ordem, começando em um, contíguo, sem
intervalo.

2) Não há documentação sobre a ordem de inserção de pipes e queues quanto
à numeração (já li quase tudo que Luigi Rizzo escreveu sobre IPFW e nada).

3) Esse comportamento está evidente, ao meu ver, em ipfw2.c, onde o número
do pipe é o mesmo número da posição na pilha, não deixando o administrador
escolher manualmente o número pipe (até deixa, mas dá nessa bagunça toda).

Quem concorda? Quem descorda? De forma alguma quero criar flames, e sim,
obter a opinião de vocês, pois se for procedente, temos aí um caso omisso
na documentação do IPFW; e sistemas como WARTA e SnowDog Firewall com
regras tortas.

Saudações,

Trober
-
-
-
-
-


[1] http://www.fug.com.br/historico/html/freebsd/2009-04/msg00488.html

[2] http://www.fug.com.br/historico/html/freebsd/2009-04/msg00518.html





Mais detalhes sobre a lista de discussão freebsd