Páginas

sexta-feira, 27 de agosto de 2010

FreeBSD; IPFW + ALTQ

IPFW com ALTQ
August 18, 2009
O ALTQ (Alternate Queueing) é um sistema de enfileiramento de pacotes amplamente usado para implementação de QoS. Muitos administradores de redes que trabalham com *BSD estão acostumados a com a utilização do PF para implementação do ALTQ. Mas também é possível a utilização dele com o IPFW. Vamos ver:

O primeiro passo é compilar o kernel do seu BSD (FreeBSD no meu caso) com as opções necessárias, precisaremos usar o PF para a configuração inicial do ALTQ (se alguém conhecer uma ferramenta específica para gerenciamento das filas, comentários serão bem vindos). Bem, adicione as seguintes linhas no arquivo de configurações do seu kernel:

#PF
device pf

#ALTQ
options ALTQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_CBQ
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_HFSC
options ALTQ_NOPCC # se você usa sistemas SMP

# IPFIREWALL
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options IPFIREWALL_DEFAULT_TO_ACCEPT
options LIBALIAS
options IPSTEALTH
options DUMMYNET
options IPDIVERT

Fiz uma regra de exemplo do ALTQ com subfilas e uso dos algoritmos de detecção e controle de congestionamento para demonstrar que é possível utilizá-lo no IPFW da mesma maneira como seria usado no PF. No seu pf.conf:

altq on nfe0 cbq bandwidth 100Mb queue { http, msn, resto }
. queue http bandwidth 10% cbq(rio,default)
. queue msn bandwidth 10%
. queue resto bandwidth 80% cbq(borrow, red) { smtp, pop }
. queue smtp bandwidth 50%
. queue pop bandwidth 50% cbq(ecn)

Ative o PF e carregue as regras: pfctl -e -f /etc/pf.conf

Para mandar o tráfego do IPFW para o ALTQ, ative-o com o comando: ipfw enable altq

A regra abaixo envia para fila filha smtp todo o tráfego que sai na interface nfe0 pela porta 25:

ipfw add 50 allow altq smtp tcp from any to any 25 via nfe0 out

Você pode verificar o tráfego nas filas com o comando: pfctl -vvsq

Nenhum comentário:

Postar um comentário