[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