[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