Em 22 de junho de 2010 08:55, Vinicius Abrahao <vinnix....@gmail.com>escreveu:
> Oi pessoal, bom dia! > > Essa thread de controle de banda com PF veio a calhar. > > Estou tentando implementar algo que teoricamente deveria ser simples, > lá em casa, mas estou tendo uma dificuldade monstro! > > A idéia para experiência é pegar meu speedy 100Kb/s (real) e criar um > controle de banda que > garanta para um determinado cliente (no meu caso uma rádio online do > PSP) uma banda de 20Kb/s e todo > o resto "para quem quiser" lá dentro de casa. Meu objetivo é garantir > a banda para a rádio e ainda assim conseguir > fazer alguns downloads/torrents. > > Cheguei a criar as declarações das filas e as regras para fazer match > com o streaming mas até agora só vejo trafego > nas filas que são default. > > Abaixo algumas coisas que estão no meu pf.conf que podem (ou não?) > estar interferindo. > > > --------------------------------------------------------------------------------------------- > table <host_psp> {192.168.1.10} > table <rfc1918> const { 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 } > > > set loginterface $ext_if > > set skip on lo > set block-policy return > scrub in all > > scrub in on $int_if fragment reassemble > scrub in on $int_if no-df > scrub on $int_if reassemble tcp > > altq on $int_if cbq bandwidth 10Mb queue { q_radio_out , q_internet , > q_default_out } > queue q_radio_out bandwidth 20Kb cbq > queue q_internet bandwidth 80Kb cbq > queue q_default_out bandwidth 9Mb cbq(default) > > > pass out quick on $int_if proto tcp from <host_psp> to any > queue q_radio_out > pass out quick on $int_if proto tcp from any to <host_psp> > queue q_radio_out > > Quando vi que o tráfego de rádio não estava indo pra fila que eu > queria, cheguei a apelar com as seguintes regras: > > pass out quick on $int_if proto tcp from !<rfc1918> port 9106 to any > queue q_radio_out > pass out quick on $int_if proto tcp from !<rfc1918> to any port 9106 > queue q_radio_out > pass out quick on $int_if proto tcp from !<rfc1918> to any > queue q_internet_default > > Mas ainda sem sucesso. :-( > > > --------------------------------------------------------------------------------------------- > > Alguns podem estar achando estranho o fato da queue estar na interface > interna, mas conversando > com os amigos no ##freebsd-br @freenode (thanks Porks!) chegamos a > conclusão que o altq só agiria neste caso nas filas > de output, espero estarmos certos quanto a essa conclusão. > > No meu primeiro teste (com a interface externa) as coisas estavam indo > por esse caminho: > > altq on $ext_if cbq bandwidth 100Kb queue { q_radio, q_default } > queue q_radio bandwidth 20Kb cbq > queue q_default bandwidth 80Kb cbq(default) > > pass in quick on $ext_if proto tcp from any to any port $radio_port no > state > pass out quick on $ext_if proto tcp from any to any port $radio_port > no state queue (r_radio) > > > > --------------------------------------------------------------------------------------------- > > Bom.. acho que já me prolonguei demais. > Vou dar uma estudada no HFSC, mas basicamente gostaria de saber se é > possível fazer isso que eu estou tentando com o CBQ, e como? > Teoricamente, pelo que li, dá sim, mas estou tendo dificuldades nas > implementações, poderiam me dar uma luz? > > > Obrigado pela ajuda, > Vinnix > > [a.k.a. Vinícius Schmidt] > > > > ANEXO 1: Diagrama do Fluxo (thanks again Porks!) > > #<rede interna> --> <NIC_INTERNA_IN> --> <PF> --> <NIC_EXTERNA_OUT> > --> <internet> > #<rede interna> <-- <NIC_INTERNA_OUT> <-- <PF> <-- <NIC_EXTERNA_IN> > <-- <internet> > ------------------------- > Histórico: http://www.fug.com.br/historico/html/freebsd/ > Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd > Vinícius, Aplique as filas nas regras de filtragem que confiram com entrada de tráfego na interface interna. No seu caso ficaria assim: pass in quick on $int_if proto tcp from !<rfc1918> to port 9106 queue q_radio_out pass in quick on $int_if proto tcp from !<rfc1918> to any queue q_internet_default Isso no caso de você querer fazer o enfileiramento da fila q_radio_out somente com destino any porta 9106. Lembre-se que quando vc define as portas nas regras de saída da interface interna vc está definindo a porta de origem do seu host na rede interna. Para verificar se o tráfego esta batendo com as filas utilize pfctl -vvs q . Espero ter ajudado. Att. > Gabriel "ethX" Fonseca < ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd