[Anterior: Logging]
[Conteúdo]
[Próximo: Problemas com FTP]
PF: Performance
"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.
[Anterior: Logging]
[Conteúdo]
[Próximo: Problemas com FTP]
www@openbsd.org
$OpenBSD: perf.html,v 1.3 2005/11/18 20:48:47 jufi Exp $