[Ref: Atingir o limite da tabela de estados do PF ]
As tabelas de estado PF definem o limite de conexões que foram autorizadas,
e, portanto, limita o número de conexões novas que o firewall
aceitar. Você pode ter excesso de largura de banda disponível, mas se não houver
capacidade nas Tabelas de Estado, então seu firewall se torna um gargalo.
Os limites configurados para informações de estado são acessíveis por meio de "pfctl"
# pfctl -sm
states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
Os limites acima estabelecem a memória alocada às estruturas definidas,
de tal forma que eles estão sempre disponíveis, e também limita o crescimento do dito
estruturas de dados. Se o tráfego do seu firewall exceder as configurações acima,
o desempenho será efetuado.
Agora é importante monitorar os efeitos do seu tráfego nos contadores
para os limites acima. A saída genérica "-s info *" nos dá pistas
onde investigar possíveis gargalos em nosso firewall.
# pfctl -si
Status: Enabled for XXXXXXXXXXXXXXXX Debug: Urgent
State Table Total Rate
current entries 34
searches 96379206 15.2/s
inserts 726196 0.1/s
removals 726162 0.1/s
No gateway acima, conectado a dois laptops usados com pouca frequência,
as entradas atuais são muito baixas em relação ao limite de disco rígido 10000 acima.
Obviamente, as entradas atuais irão fluir devido ao uso,
e em um gateway mais ocupado pode fluir significativamente.
[Ref: Atingir o limite da tabela de estados do PF ,
Tempo de limite máximo do estado aberto do BSD ]
Um contador importante para monitorar a partir de pfctl -si é a " memória "
contador. Os mesmos detalhes devem ser disponibilizados através do systat pf
De um gateway ativo que vincula nossos 6 sites, obtemos o seguinte de um padrão
instalar, nenhuma modificação nas tabelas de estado.
# pfctl -si | grep memory
memory 209230 0.1/s
O contador destaca quantas vezes o PF falhou em pelo menos um dos "pools (9)"
Quanto maior o número, maior a freqüência de incidências em que os pacotes chegam
no firewall, provavelmente, foram descartados devido a um dos limites de hardware.
Nosso exemplo acima mostra 209.230 vezes o limite de memória hit .
A próxima revisão é verificar com as alocações de memória do Kernel, usando "vmstat".
Para restringir nossa busca aos efeitos na tabela de estados pf nós verificamos a entrada
para pfstatepl .
Abaixo, pegamos as linhas com estado ou Fail (assim podemos obter os cabeçalhos das colunas)
# vmstat -m | grep -E "state|Fail"
Name Size Requests Fail InUse Pgreq Pgrel Npage Hiwat Minpg Maxpg Idle
pfstatepl 296 213123877 209235 5075 1050 0 1050 1050 0 2308 526
pfstatekeypl
pfstateitempl
pfstatepl é o rótulo da memória alocada para o struct pf_state
(/usr/src/sys/net/pf_ioctl.c) As falhas parecem ser significativas.
pfctl -vvsi | congestionamento grep