[FUG-BR] RES: WF2Q+ (era IPFW e VoIP)

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Sexta Abril 18 16:01:44 BRT 2008


Eduardo Schoedler escreveu:
> Valeu Renato!
> 
> O que eu não estava entendendo é que as queues não possuem uma estrutura de 
> árvore...
> Basta cada pipe ter seu weight e pronto, certo ?
> Claro que eu devo colocar o restante do tráfego dentro de um pipe também, e 
> setar um peso.
> 
> Muito Obrigado!

Existe uma relação de árvore sim.
Pipes não tem weight. Quem tem weight são os queues, e os queues se 
conectam a um pipe (essa é a relacao de árvore), ex:


                   PIPE 10
                      |
                     /|\
                    / | \
                   Q1 Q2 Q3

Se Q1, Q2 e Q3 tem pesos. A soma dos pesos serão as fatias de banda em 
bits que o WF2Q+ tem que "livrar-se" por segundo. E ele o fará de forma 
justa (o F de FAIR da sigla) de acordo com o peso (W de weight da sigla).

Por exemplo, imagine que PIPE 10 seja 512Kbit/s, Q1 tenha peso 5, Q2 
tenha peso 15 e Q3 tenha peso 10. A soma de 5+10+15 é 30.

Os 512Kbit/s serão dividos em 30 slices, em bit/s, que na pior situação 
possível - Worst case, o W da sigla, ou seja numa situação em que a soma 
do Q1+Q2+Q3 em termos de demanda de banda for superior a largura de 
banda configurada no pipe - será dividido na proporcão, ou seja 5/30 
avos de 512Kbit/s para o Q1; 15/30 (portanto metade) de 512Kbit/s e Q3 
10/30 avos (1/3 de 512Kbit/s).

Claro né?

Transformando essa teoria em prática:

----------------------------------------------
ipfw pipe 10 config bw 512Kbit/s

ipfw add queue 1 all from <origem> to <destino>
ipfw add queue 11 all from <destino> to <origem>
ipfw queue 1 config pipe 10 weight 5
ipfw queue 11 config pipe 10 weight 5

ipfw queue 2 all from <origem> to <destino>
ipfw queue 22 all from <destino> to <origem>
ipfw queue 2 config pipe 10 weight 15
ipfw queue 22 config pipe 10 weight 15

ipfw queue 3 all from <origem> to <destino>
ipfw queue 33 all from <destino> to <origem>
ipfw queue 3 config pipe 10 weight 10
ipfw queue 33 config pipe 10 weight 10
----------------------------------------------

Pronto. Simples. Note que eu criei 2 queues, em fluxo IN e OUT pra 
garantir full-duplex a papagaiada toda ok? Os numeros de queue e pipe 
são apenas identicadores e não faz a menor diferença se quiser colocar 
outros.

O corpo da regra é um protótipo. Normalmente você vai querer orienta-las 
a fluxos e interfaces.

Pro seu VOIP basta criar 2 queues, um com weight baixo e outro alto, na 
proporção de consumo de banda que você queira dar peso preferencial ao 
VOIP, exemplo

Q1 = todos
Q1 = weight 5

Q2 = voip
Q2 = weight 50

-- 
Patrick Tracanelli

FreeBSD Brasil LTDA.
Tel.: (31) 3516-0800
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"



Mais detalhes sobre a lista de discussão freebsd