[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