PF + ALTQ + HFSC (hfsc com mais de 64 queues por interface) * ( - pfctl: DIOCADDALTQ: Cannot allocate memory - ) * Tudo começou quando resolvemos implementar um firewall possuindo 3 interfaces.... onde cada interface possuia mais de 150 filas com pf + altq + hfsc... Pois bem.... na hora de rodar o "pfctl -f /etc/pf.conf" dava o seguinte erro: pfctl: DIOCADDALTQ: Cannot allocate memory Procuramos muito na internet, como sempre... algumas informações úteis, outras não (rs)... Depois de muito vasculhar na internet, em forums, fazer varios testes... descobri que o problema estava em situações onde haviam + de 64 filas... ou seja.... 64 funcionavam.... acima disto não funcionava (dava o tal erro) Pois bem........ vamos direto a solução então sem entrar em maiores detalhes. O código fonte do altq_hfsc.h (/usr/src/sys/contrib/altq/altq/altq_hfsc.h) possui uma entrada FIXA.... uma constante denominada " HFSC_MAX_CLASSES " a qual esta setada para 64 (olha só que coincidencia - rs).... - - - - - - - #define HFSC_MAX_CLASSES 64 - - - - - - - A ideia desta constante.... é criar um array na inicialização do firewall, alocando então memória para armazenamento de tal informação (ou seja... qto maior o array + memoria a ser alocada....) Foi notado tb que tal constante eh utilizada em alguns "loops" internos no código... ( o que pode ou não causar um certo delay) O que fiz (a nivel de testes) foi aumentar o numero para 400 e recompilar a arvore. Estou fazendo vários testes e até o momento não percebi que a alteração tenha causado perda de performance ou algo do genero. Entrarei em breve em contato com o Kenjiro (mentor WARRIOR do altq) para questionar o pq da utilizacao de uma constante fixa e não de uma situação dinamica.... (caso ele informe que não teria problemas com a situacao dinamica... irei me predispor a montar uma equipe para alteração oficial de tal situação). * Pessoas que contribuiram: # Christopher Giese # Luiz Felipe Moura # Reginaldo Russinholi # Erwin Liesemberg # Rainer Alves * Sites que contribuiram: # http://fxr.watson.org/fxr/ident?v=OPENBSD;i=HFSC_MAX_CLASSES # http://fxr.watson.org/fxr/source/altq/altq_hfsc.c?v=OPENBSD#L340 # http://fxr.watson.org/fxr/source/altq/altq_hfsc.h?v=OPENBSD#L53 * Powered by: # Christopher Giese # skywarrior@bsdux.com.br # www.bsdux.com.br