[GTER] Controle de Banda

Guilherme de Freitas Figueiredo gff at wkve.com.br
Sun Oct 25 13:16:36 -02 2009


Paulo,

  A verdade é que existe pouca documentação referente ao IFB[1] na 
internet , ao desenvolver o script fui seguindo a documentação oficial 
do site do IFB.
  Quanto às outra regras que apresentou , está certa quanto a elas.
  Quanto ao kernel que utiliza com o IMQ , pode aposentar , ou vai ter 
ainda muita dor de cabeça e crash no kernel , aconselho , se quiser 
utilizar ainda IMQ , colocar o kernel 2.6.26 , se quiser , envio os 
patchs para o mesmo que um dos desenvolvedores do IMQ utiliza em seus 
servidores.
  Segundo ele também , é bom aumentar o quantum das classes para 16100 ( 
MTU da interface IMQ + 100 ) e o r2q para 5120 na classe raiz do HTB.
  Estou à disposição se precisar de ajuda.

  Abraços!

  [1] - http://www.linuxfoundation.org/en/Net:IFB

Paulo escreveu:
> 2009/10/24 Guilherme de Freitas Figueiredo <gff at wkve.com.br>
> 
>> Senhores,
>>
>>  Boa tarde!
>>
>>  Paulo , qual é a versão do kernel do seu GNU/Linux ?
>>  O processador é SMP ?
>>
>>  Digo isso porque passei os mesmos problemas , e tenho um amigo que
>> desenvolve patchs para o IMQ , o mesmo não aconselhou usar IMQ em kernel
>> acima de 2.6.26 , sendo assim , tive que mudar minha solução para ifb ,
>> funcionou sem problemas , utilizando junto com HTB ou HFSC.
>>
>>  Segue abaixo um exemplo de regra utilizando IFB+HTB , uma vez que , o IFB
>> controla somente o UPLOAD.
>>
>>
>> #
>> # DEV = interfaces
>> #
>> tc qdisc add dev $dev root handle 1: htb r2q 5120 default 1
>> tc class add dev $dev parent 1:  classid 1:1 htb rate 1000mbit ceil
>> 1000mbit
>> tc class add dev $dev parent 1:  classid 1:2 htb rate 1000mbit ceil
>> 1000mbit
>> tc qdisc add dev $dev handle ffff ingress
>>
>> #
>> # IFB
>> #
>> tc qdisc add dev ifb0 root handle 1: htb r2q 5120 default 1
>> tc class add dev ifb0 parent 1:  classid 1:1 htb rate 1000mbit ceil
>> 1000mbit
>> tc class add dev ifb0 parent 1:  classid 1:2 htb rate 1000mbit ceil
>> 1000mbit
>>
>> #
>> # Redirecionamento de ingress para ifb0
>> #
>> tc filter add dev $dev parent ffff: protocol ip prio 10 u32 match u32 0 0
>> flowid 1:2 action mirred egress redirect dev ifb0
>>
>> #
>> # Class
>> #
>> tc class add dev $dev parent 1:2 classid 1:$1 htb rate $down ceil $down
>>
>> #
>> # Class IFB0
>> #
>> tc class add dev ifb0 parent 1:2 classid 1:$1 htb rate $down ceil $down
>>
>> #
>> # Filter
>> #
>> tc filter add dev $dev parent 1: protocol ip prio 10 u32 match ip dst ${ip}
>> flowid 1:${NUMERO}
>>
>> #
>> # Filter IFB0
>> #
>> tc filter add dev ifb0 parent 1: protocol ip prio 10 u32 match ip src ${ip}
>> flowid 1:${NUMERO}
>>
>> #
>> #
>>
>> Lembrando que , eu faço o controle somente nas LANS , deixo as WANS de
>> fora.
>> Não se esqueça também de subir a interface ifb0 ( ip link set dev ifb0 up )
>>
>> Qualquer coisa estamos à disposição!
>>
>> Abraços!
>>
>>
> Olá a todos.
> 
> Guilherme, estou testando com a versão 2.6.30-8 em uma debian lenny. Por
> gentileza, me esclareça essa dúvida:
> 
> O IFB controla o tráfego de UPLOAD, ou seja, saindo do
> usuário/provedor/empresa para internet, por exemplo. Essa regra não deveria
> utilizar ingress (tráfico que Entra) no lugar de egress (tráfico que Sai):
> 
> tc filter add dev $dev parent ffff: protocol ip prio 10 u32 match u32 0 0
> flowid 1:2 action mirred egress redirect dev ifb0
> 
> Resumindo: Vamos assumir que $dev seja a interface interna ETH1. Essa regra
> joga todo tráfico que entra(ingress) pela ETH1 para a IFB0. O que me deixa
> confuso é a utilização da opção egress nessa regra. Se ifb0 controla o
> Upload, está certo em direcionar o que entra (lan -> wan) pela ETH1 (lan)
> para a ifb0, mas esse egress é confuso, rsrsrs.
> 
> Logo fiquei confuso com tudo isso. Essa regra de direcionamento está me
> deixando confuso.
> 
> -------------------
> 
> 
> Então, na interface ETH1 ($dev) eu controlo o Download (dst ${ip} ) para o
> cliente (wan -> lan), que seria essa regra abaixo:
> 
> tc filter add dev $dev parent 1: protocol ip prio 10 u32 match ip dst ${ip}
> flowid 1:${NUMERO}
> 
> 
> E na IFB0 eu controlo o Upload ( src ${ip} ) partindo do cliente para
> internet (lan -> wan).
> 
> tc filter add dev ifb0 parent 1: protocol ip prio 10 u32 match ip src ${ip}
> flowid 1:${NUMERO}
> 
> 
> Estou certo aqui, correto?
> 
> 
> Se você pude esclarecer minha dúvida, ficarei muito feliz.
> 
> Boa noite.
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
> 

-- 
Atenciosamente,

Guilherme de Freitas Figueiredo - gff at wkve.com.br - 33.8824.0243
Gerência de Redes - WKVE Telecom - http://www.wkve.com.br - 33.2102.3332
Rua João Pinheiro , 599 Loja 14 - Centro - Governador Valadares - MG



More information about the gter mailing list