[FUG-BR] ALTQ para Balanceamento
Alessandro de Souza Rocha
etherlinkii em gmail.com
Sexta Junho 25 09:16:04 BRT 2010
como tenho um link pequeno uso assim
altq on $int_if bandwidth 150Kb hfsc queue { rede lan }
queue rede bandwidth 1Kb
queue lan bandwidth 128Kb hfsc( default)
pass in on $int_if from 192.168.0.0/24 to any keep state queue lan
altq on $ext_if1 bandwidth 150Kb hfsc queue {lan_out}
queue lan_out bandwidth 128Kb hfsc( default)
pass out on $ext_if1 from 192.168.0.0/24 to any keep state queue lan_out
Em 25 de junho de 2010 00:33, Wanderson Tinti <wanderson em bsd.com.br> escreveu:
> Em 23 de junho de 2010 18:01, Rafael Henrique Faria <
> rafaelhfaria em cenadigital.com.br> escreveu:
>
>> Boa noite lista.
>>
>> Estou com um problema com o PF+ALTQ.
>>
>> A máquina é um FreeBSD 8.1-PRE, configurado como Bridge.
>> Esta máquina está entre um Cisco 7200, e um 3Com 7900. E a função
>> dela, será balancear a banda entre diversas subredes.
>>
>> Eu criei 4 tabelas, cada uma contendo as subredes que serão balanceadas:
>>
>> table <sub1> { ips/24 }
>> table <sub2> { ips/24 }
>> table <sub3> { ips/24 }
>> table <sub4> { ips/24 }
>>
>> As interfaces da maquina são:
>>
>> wan (ligada ao Cisco): bce0
>> lan (ligada ao 3Com): bce1
>> bridge (entre bce0 e bce1): bridge0
>> vlan (ip administrativo): vlan1
>>
>> Agora, qual é o meu problema.
>>
>> Após criar as 4 queues (mais a root), eu precisei colocar uma 5a.
>> queue, como default, pois o ALTQ não permitia ficar sem uma queue
>> Default.
>>
>> altq on $lan_if bandwidth 33Mb hfsc queue { dl_sub1, dl_sub2, dl_sub3,
>> dl_sub4, dl_def }
>> queue dl_sub1 bandwidth 8Mb priority 1 qlimit 300 hfsc (realtime
>> 3.20Mb upperlimit 22.40Mb)
>> queue dl_sub2 bandwidth 8Mb priority 1 qlimit 300 hfsc (realtime
>> 3.20Mb upperlimit 22.40Mb)
>> queue dl_sub3 bandwidth 8Mb priority 1 qlimit 300 hfsc (realtime
>> 3.20Mb upperlimit 22.40Mb)
>> queue dl_sub4 bandwidth 8Mb priority 1 qlimit 300 hfsc (realtime
>> 3.20Mb upperlimit 22.40Mb)
>> queue dl_def bandwidth 128Kb hfsc (default)
>>
>> Agora, eu setei todos os pass para as queues:
>>
>> pass log quick from <sub1> to any keep state queue (dl_sub1)
>> pass log quick from <sub2> to any keep state queue (dl_sub2)
>> pass log quick from <sub3> to any keep state queue (dl_sub3)
>> pass log quick from <sub4> to any keep state queue (dl_sub4)
>>
>> Porém, simplesmente não funciona.
>> Eu coloquei log em todas as regras, para ter certeza que estava
>> casando com os IPs das subredes... e tudo está casando...
>> Coloquei abaixo de todas, pass log all. E fiquei monitorando essa
>> regra, e não passou nenhum IP das subredes das regras acima.
>>
>> É muito estranho, pq o consumo da banda, fica meio dividido.
>> Como podemos ver pelo: pfctl -vvs queue
>>
>> queue dl_sub1 on bce1 bandwidth 7Mb hfsc( linkshare 7.60Mb )
>> [ pkts: 263901 bytes: 289112081 dropped pkts: 0 bytes: 0
>> ]
>> [ qlength: 0/ 50 ]
>> [ measured: 475.2 packets/s, 4.11Mb/s ]
>> queue dl_sub2 on bce1 bandwidth 7Mb hfsc( linkshare 7.60Mb )
>> [ pkts: 567386 bytes: 747149661 dropped pkts: 0 bytes: 0
>> ]
>> [ qlength: 0/ 50 ]
>> [ measured: 561.2 packets/s, 5.84Mb/s ]
>> queue dl_sub3 on bce1 bandwidth 7Mb hfsc( linkshare 7.60Mb )
>> [ pkts: 268904 bytes: 383246359 dropped pkts: 0 bytes: 0
>> ]
>> [ qlength: 0/ 50 ]
>> [ measured: 195.8 packets/s, 2.08Mb/s ]
>> queue dl_sub4 on bce1 bandwidth 7Mb hfsc( linkshare 7.60Mb )
>> [ pkts: 407467 bytes: 527832993 dropped pkts: 0 bytes: 0
>> ]
>> [ qlength: 1/ 50 ]
>> [ measured: 660.0 packets/s, 7.37Mb/s ]
>> queue dl_def on bce1 bandwidth 128Kb hfsc( default )
>> [ pkts: 1009121 bytes: 1171633648 dropped pkts: 17 bytes: 18399
>> ]
>> [ qlength: 0/ 50 ]
>> [ measured: 1072.0 packets/s, 11.20Mb/s ]
>>
>>
>> Como podemos ver, está tendo uma certa divisão dos pacontes dentro das
>> queues... mas não como foi configurado.
>> A maior parte (11.2mb/s) está saindo pela default... sendo que nas
>> regras PASS está redirecionando todo o tráfego para as queues...
>>
>> Alguém já configurou o ALTQ com sucesso, pode dar uma luz?
>>
>> Agradeço antecipadamente.
>>
>> --
>>
>>
>
> Rafael, boa noite.
>
> Costumo marcar o tráfego taguiando(TAG). Veja se algo do tipo ajudaria na
> resolução do seu problema:
>
> REDE_A="192.168.6.0/24"
>
> #DOWNLOAD
> altq on $int_if hfsc bandwidth 100Mb queue { down_def, down_lan_A }
> queue down_def bandwidth 1Kb priority 0 hfsc (default realtime 1Kb
> upperlimit 2Kb)
> queue down_lan_A bandwidth 2Mb priority 7 qlimit 500 hfsc (realtime 2Mb
> upperlimit 3Mb)
> ..
>
> #UPLOAD
> altq on $ext_if hfsc bandwidth 100Mb queue { up_def, up_lan_A }
> queue up_def bandwidth 1Kb priority 0 hfsc (default realtime 1Kb upperlimit
> 2Kb)
> queue up_lan_A bandwidth 2Mb priority 7 qlimit 500 hfsc (realtime 2Mb
> upperlimit 3Mb)
> ..
>
> pass in quick on $int_if inet proto { tcp udp icmp } from $REDE_A to any
> modulate state tag lan_A queue down_lan_A
> pass out quick on $ext_if inet proto { tcp udp icmp } from $200.200.200.1 to
> any tagged lan_A modulate state label lan_A queue up_lan_A
>
> No exemplo acima os host estão atás de nat, por isso o uso do IP
> 200.200.200.1 na segunda regra, desviando para fila upload.
>
> Sem nat, você pode criar suas filas normalmente na interface LAN e WAN, e
> penalizar o tráfego dos hosts no fluxo de saída (out). Logo você trabalha
> sobre o FROM e TO:
>
> pass out on $int_if inet proto tcp from any to $hostA queue down_hostA
> pass out on $ext_if inet proto tcp from $hostA to any queue up_hostA
>
>
> Eu ainda prefiro mesclar regras de filtro do pf com o controle de banda do
> ipfw/dummynet.
>
> Boa noite.
>
> --
> Wanderson Tinti
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>
--
Alessandro de Souza Rocha
Administrador de Redes e Sistemas
FreeBSD-BR User #117
Long live FreeBSD
Powered by ....
(__)
\\\'',)
\/ \ ^
.\._/_)
www.FreeBSD.org
Mais detalhes sobre a lista de discussão freebsd