Problema de desempenho do Linux iptables / conntrack

9

Eu tenho uma configuração de teste no laboratório com 4 máquinas:

  • 2 máquinas P4 antigas (t1, t2)
  • 1 Xeon 5420 DP 2,5 GHz 8 GB de RAM (t3) Intel e1000
  • 1 Xeon 5420 DP 2.5 GHz 8 GB de RAM (t4) Intel e1000

para testar o desempenho do firewall do linux desde que fomos mordidos por uma série de ataques de inundação sincronizada nos últimos meses. Todas as máquinas rodam o Ubuntu 12.04 64bit. t1, t2, t3 são interconectados através de um comutador de 1GB / s, t4 é conectado a t3 por meio de uma interface extra. Então t3 simula o firewall, t4 é o alvo, t1, t2 joga os atacantes gerando uma tempestade de pacotes (192.168.4.199 é t4):

hping3 -I eth1 --rand-source --syn --flood 192.168.4.199 -p 80

t4 descarta todos os pacotes de entrada para evitar confusão com gateways, problemas de desempenho de t4 etc. Eu assisto as estatísticas de pacotes no iptraf. Eu configurei o firewall (t3) da seguinte forma:

  • stock 3.2.0-31-generic # 50-Ubuntu SMP kernel
  • rhash_entries = 33554432 como parâmetro do kernel
  • sysctl da seguinte forma:

    net.ipv4.ip_forward = 1
    net.ipv4.route.gc_elasticity = 2
    net.ipv4.route.gc_timeout = 1
    net.ipv4.route.gc_interval = 5
    net.ipv4.route.gc_min_interval_ms = 500
    net.ipv4.route.gc_thresh = 2000000
    net.ipv4.route.max_size = 20000000
    

(Eu mudei muito para manter o t3 rodando quando t1 + t2 está enviando o maior número de pacotes possível).

O resultado desse esforço é um pouco estranho:

  • t1 + t2 conseguem enviar cerca de 200k pacotes / s. t4, no melhor dos casos, vê um total de 200k no total e metade dos pacotes são perdidos.
  • t3 é praticamente inutilizável no console, embora os pacotes estejam fluindo (altos números de soft-irqs)
  • o coletor de lixo de cache de rota não está perto de ser previsível e na configuração padrão sobrecarregado com pouquíssimos pacotes / s (< 50k pacotes / s)
  • ativar as regras de iptables com estado faz com que a taxa de pacotes que chega em t4 caia para cerca de 100k pacotes / s, efetivamente perdendo mais de 75% dos pacotes

E essa - aqui é minha principal preocupação - com duas antigas máquinas P4 enviando o maior número de pacotes possível - o que significa que quase todos na rede devem ser capazes disso.

Então, aqui vai a minha pergunta: Eu ignorei algum ponto importante na configuração ou na configuração do meu teste? Existem alternativas para a criação de sistemas de firewall, especialmente em sistemas smp?

    
por tim 15.10.2012 / 13:29

2 respostas

1

Eu migraria para o Kernel > = 3.6, que não possui mais um cache de roteamento. Isso deve resolver uma parte dos seus problemas.

    
por 04.11.2012 / 19:12
0

Como está sua configuração de registro em T3? Se todos os pacotes descartados estiverem registrados, a E / S do disco talvez seja a causa.

Como esse é um ambiente de teste, você pode tentar o teste com o log T3 desativado.

    
por 04.11.2012 / 17:53