"Quanta largura de banda o PF pode suportar?"
"Que computador eu preciso para controlar minha conexão com a Internet?"
Não existe resposta simples a estas questões. Para algumas aplicaçoes,
um 486/66 com um par de boas placas de rede ISA pode filtrar e fazer
NAT em 5Mbps, mas para outras aplicações uma máquina muito mais rápida
com placas de rede PCI muito melhores pode acabar não sendo suficiente.
A real questão não é o número de bits por segundo mas na verdade o
número de pacotes por segundo e a complexidade de todo o conjunto
de regras.
A performance do PF é determinada por uma série de variáveis:
Número de pacotes por segundo. Quase o mesmo poder de
processamento é necessário para analisar um pacote com 1500 bytes
de payload ou um pacote com um byte de payload. O número de pacotes
por segundo determina o número de vezes que a tabela de estado e,
caso não seja encontrada uma entrada válida na tabela, as regras
de filtragem devem ser avaliadas a cada segundo, determinando
a demanda efetiva no sistema.
Performance do barramento do sistema. O barramento ISA
tem largura de banda máxima de 8MB/seg, e quando o processador o
acessa, precisa baixar sua velocidade efetiva para um poder
equivalente a um 80286 rodando a 8MHz, não importa o quão rápido
seja este processador. O barramento PCI possui largura de banda
muito maior, causando menor impacto no processador.
Eficiência de sua placa de rede. Algumas adaptadoras de
rede são simplesmente mais eficientes que outras. Placas de rede
baseadas em Realtek 8139
(rl(4))
tendem a ter baixa performance enquanto placas baseadas em Intel 21143
(dc(4))
tendem a responder muito bem. Para máxima performance, considere
utilizar placas Ethernet gigabit, mesmo que não esteja conectado
em redes gigabit, já que elas possuem um sistema de buffer muito
mais avançado.
Complexidade e design de suas regras. Quanto mais complexo
o conjunto de regras, mais lento. Quanto mais pacotes forem filtrados
por regras keep state e quick, melhor a performance.
Quanto mais linhas precisarem ser avalidas para cada pacote, pior
a performance.
Vale a pena mecionar: CPU e RAM. Como PF é um processo
baseado no kernel (kernel-based), não utilizará swap. Portanto, se
tiver RAM suficiente funciona, senão, entra em pânico devido a
exaustão de
pool(9). Grandes quantidades de RAM não são necessárias
-- 32MB deve ser suficiente para manter perto de 30,000 estados de conexão,
o que são muitos estados para uma aplicação num pequeno escritório
ou em casa.
Para a maior parte dos usuários, um computador "reciclado" é mais do
que suficiente para um sistema PF -- um sistema de 300MHz processará
rapidamente um grande número de pacotes, pelo menos se
utilizado em conjunto com boas placas de rede e regras bem planejadas.
As pessoas sempre perguntam por benchmarks do PF. O único benchmark que
conta é a performace do seu sistema em seu ambiente.
Um benchmark que não reproduz seu ambiente não irá ajuda-lo a planejar
seu sistema de firewall. A melhor forma de se fazer um benchmark do PF
é você mesmo fazê-lo, no mesmo, ou o mais próximo possível
das condições em que o firewall irá trabalhar rodando no mesmo hardware
planejado para o firewall.
O PF é usado em algumas aplicações grandes e de tráfego intenso, e seus
desenvolvedores são "power users" do PF. Provavelmente seu
desempenho será satisfatório para você também.