[FUG-BR] [OFF-TOPIC][OpenBSD] - PF + AltQ

Paulo Henrique paulo.rddck em bsd.com.br
Quarta Dezembro 9 23:25:07 BRST 2009


Saudações lista, bom no processo de implementação de um roteador com
controle de banda sobre o OpenBSD v4.6 Release me deparei com uma
peculiáridade do PF, esta no qual tinha como saida após uma tentativa
de carregamento das regras o seguinte erro:

pfctl: DIOCADDALTQ: Cannot allocate memory

COm estudo por mais de uma semana procurando determindar o motivo de
tal erro, consegui a poucos instantes a causa de tal erro, tendo como
originalidade com a utilização do parametro ( rio ) em que após a sua
remoção o conjunto de regra carregou e funcionou normalmente.
Durante as pesquisas me deparei com uma solução de tal problema sendo
atravéz da utilização da opção do PF " set limit " com o parametro
"table-entries" incrementando tal valor, contudo o mesmo retornava
erro pelo fato do sistema estar rodando em um securelevel=1, opção
esta que sobre meu conhecimento restringem determinadas operações
direto no kernel.

Segue abaixo o conjunto de regras destinado ao controle de banda, para
avaliação e consulta posteriormente.

############CONJUNTO De REGRA NO QUAL APRESENTA ERRO #######################
####### Definicoes de filas de trafego CBQ ########################
altq on $INT_IF cbq bandwidth 100Mb queue { two5six, five1two,
seven6eigth, thousand1, thousand2, thousand3, standart_in }

altq on $EXT_IF cbq bandwidth 100Mb queue { twofive6, fiveone2,
sevensix8, thousandone, thousandtwo, thousandtree, standart_out }

####### queue de 256 kbps ##########################################
queue two5six bandwidth 256Kb priority 4 cbq ( rio ecn )
queue twofive6 bandwidth 256Kb priority 4 cbq ( rio ecn )

####### queue de 512 kbps ##########################################
queue five1two bandwidth 512Kb priority 4 cbq ( rio ecn )
queue fiveone2 bandwidth 512Kb priority 4 cbq ( rio ecn )

####### queue de 768 Kbps #########################################
queue seven6eigth bandwidth 768Kb priority 4 cbq ( rio ecn )
queue sevensix8 bandwidth 768Kb priority 4 cbq ( rio ecn )

######## queue de 1000 kbps #########################################
queue thousand1 bandwidth 1Mb priority 4 cbq ( rio ecn )
queue thousandone bandwidth 1Mb priority 4 cbq ( rio ecn )

####### queue de 2000 kbps #########################################
queue thousand2 bandwidth 2Mb priority 3 cbq ( rio ecn )
queue thousandtwo bandwidth 2Mb priority 3 cbq ( rio ecn )

####### queue de 3000 kbps #########################################
queue thousand3 bandwidth 3Mb priority 4 cbq ( rio ecn )
queue thousandtree bandwidth 3Mb priority 4 cbq ( rio ecn )

####### queue standart de trafego ##################################
queue standart_in bandwidth 6Mb priority 4 cbq ( default rio ecn )
queue standart_out bandwidth 6Mb priority 4 cbq ( default rio ecn )

############## CONJUNTO DE REGRA SEM ERROS ##########################

####### Definicoes de filas de trafego CBQ #########################
altq on $INT_IF cbq bandwidth 100Mb queue { two5six, five1two,
seven6eigth, thousand1, thousand2, thousand3, standart_in }

altq on $EXT_IF cbq bandwidth 100Mb queue { twofive6, fiveone2,
sevensix8, thousandone, thousandtwo, thousandtree, standart_out }

####### queue de 256 kbps ##########################################
queue two5six bandwidth 256Kb priority 4 cbq ( ecn )
queue twofive6 bandwidth 256Kb priority 4 cbq ( ecn )

####### queue de 512 kbps ##########################################
queue five1two bandwidth 512Kb priority 4 cbq ( ecn )
queue fiveone2 bandwidth 512Kb priority 4 cbq ( ecn )

####### queue de 768 Kbps #########################################
queue seven6eigth bandwidth 768Kb priority 4 cbq ( ecn )
queue sevensix8 bandwidth 768Kb priority 4 cbq ( ecn )

######## queue de 1000 kbps #########################################
queue thousand1 bandwidth 1Mb priority 4 cbq ( ecn )
queue thousandone bandwidth 1Mb priority 4 cbq ( ecn )

####### queue de 2000 kbps #########################################
queue thousand2 bandwidth 2Mb priority 3 cbq ( ecn )
queue thousandtwo bandwidth 2Mb priority 3 cbq ( ecn )

####### queue de 3000 kbps #########################################
queue thousand3 bandwidth 3Mb priority 4 cbq ( ecn )
queue thousandtree bandwidth 3Mb priority 4 cbq ( ecn )

####### queue standart de trafego ##################################
queue standart_in bandwidth 6Mb priority 4 cbq ( default ecn )
queue standart_out bandwidth 6Mb priority 4 cbq ( default ecn )

############# END THREAD ########################

Outra informação que contava antes nas regras e foram removidas foi a
definição de plimit contando tal opção com seu valor destinado para
100
Contudo tal remoção não interferia no não carregamento do conjunto de regras.

Quando estiver menos afogado estarei me dedicando um pouco mais sobre
o que de fato aconteceu, e como solucionar de maneira digna o
problema.

Sem mais agradeço a lista pelo o espaço e ao senhor Márcio Luciano
pelas observações.

Atenciosamente Paulo Henrique.


Mais detalhes sobre a lista de discussão freebsd