[FUG-BR] Controle de Banda com PF

Renato Frederick renato em frederick.eti.br
Sexta Junho 18 13:35:31 BRT 2010


O próprio site do openbsd[1] mostra tudo.


Não tem mistério, PF é simples depois que entende-se a cara dele.

Faz-se as filas na interface, neste exemplo o link é de 100Mb e está 
conectado á xl0 e temos 2 clientes(e o "resto" que vai pro que não tem 
tráfego explicitamente detalhado):

altq on $ext_if bandwidth 100Mb queue { cliente1 cliente2 default_dmz }

define-se dos 100Mb quanto que cliente1 e cliente2 vai ter e o resto pra 
default_dmz:

queue cliente1 bandwidth 2Mb priority 4 qlimit 1000 cbq(red)
queue cliente2 bandwidth 8Mb priority 4 qlimit 1000 cbq(red)
queue default_dmz bandwidth 80Mb priority 4 qlimit 1000 cbq(default,borrow)

lembrando que a some dos queue nao pode passar o bandwitdh declarado acima.

note que estou usando o algorítimo RED para fazer o ALTQ, no link[1] você vê 
mais detalhes dos algorítimos disponíveis.

Também na DMZ eu joguei o borrow, ou seja, os 80Mb da DMZ pode "tomar" banda 
do cliente2 e cliente2, caso precise, seria como as prioridades que o IPFW 
tem.


Agora basta colocar uma linha no final de cada regra de pass out pra indica 
que esta regra vai ser associada  a uma destas queue:


Ex, uma regra que era assim, liberando o cliente1 a conectar a qq local:

pass out quick on $ext_if proto { tcp udp } from { $cliente1 }  port > 1023 
to any  keep state

fica assim:

pass out quick on $ext_if proto { tcp udp } from { $cliente1 }  port > 1023 
to any  queue cliente1 keep state

as regras que eu quero que compartilhem os 80Mb eu não declaro nenhum queue, 
ele vai pegar o que está como default acima:

pass out quick on $ext_if proto tcp from <hosting> port $ftp_ports to any 
port > 1023 keep state



Observe que isto faz o tráfego de output.

para fazer de input, repete-se a mesma coisa, só que a ext_if vai ser 
substituida pela int_if(ou o nome que você dá pra interface interna) no altq 
e o queue nao vai ser no pass out, vai ser no pass in e você não vai poder 
usar o keep state, vai ter que declarar uma regra de pass out e outra de 
pass in, senão o keep state cria  o retorno sem queue.





[1]http://openbsd.org/faq/pf/queueing.html


--------------------------------------------------
From: "Rodrigo" <rodrigo em rcsolucoesinteligentes.com.br>
Sent: Friday, June 18, 2010 1:18 PM
To: <freebsd em fug.com.br>
Subject: [FUG-BR] Controle de Banda com PF

> Boa Tarde Pessoal.
>
> Gostária de saber se alguem ai conhece algum site bom, onde eu possa
> encontrar informações concretas sobre controle de banda no PF.
>
> Procurei bastante no Google, mas o que se encontra são poucas coisas......
>
> Obrigado.
> Att,
>
> Rodrigo.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
> 


Mais detalhes sobre a lista de discussão freebsd