[GTER] Controle de Banda

Paulo paulo.gitch at gmail.com
Sun Oct 25 00:22:41 -02 2009


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.



More information about the gter mailing list