Problema de rendimiento de iptables / conntrack en Linux

9

Tengo una configuración de prueba en el laboratorio con 4 máquinas:

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

para probar el rendimiento del firewall de Linux, ya que fuimos mordidos por una serie de ataques syn-flood en los últimos meses. Todas las máquinas ejecutan Ubuntu 12.04 64bit. t1, t2, t3 están interconectados a través de un interruptor de 1GB / s, t4 está conectado a t3 a través de una interfaz adicional. Entonces t3 simula el cortafuegos, t4 es el objetivo, t1, t2 juegan a los atacantes generando una tormenta de paquetes (192.168.4.199 es t4):

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

t4 descarta todos los paquetes entrantes para evitar confusiones con puertas de enlace, problemas de rendimiento de t4, etc. Observo las estadísticas de paquetes en iptraf. He configurado el firewall (t3) de la siguiente manera:

  • stock 3.2.0-31-generic # 50-Ubuntu SMP kernel
  • rhash_entries = 33554432 como parámetro del núcleo
  • sysctl de la siguiente manera:

    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
    

(He ajustado mucho para mantener t3 funcionando cuando t1 + t2 envían tantos paquetes como sea posible).

El resultado de estos esfuerzos es algo extraño:

  • t1 + t2 logran enviar a cada uno aproximadamente 200k paquetes / s. t4 en el mejor de los casos ve alrededor de 200k en total, por lo que se pierde la mitad de los paquetes.
  • t3 es casi inutilizable en la consola, aunque los paquetes fluyen a través de ella (grandes cantidades de soft-irqs)
  • el recolector de basura de caché de ruta no está cerca de ser predecible y en la configuración predeterminada está abrumado por muy pocos paquetes / s (<50k paquetes / s)
  • La activación de las reglas de iptables con estado hace que la tasa de paquetes que llega en t4 baje a alrededor de 100k paquetes / s, perdiendo efectivamente más del 75% de los paquetes

Y esto, aquí es mi principal preocupación, con dos máquinas P4 viejas que envían tantos paquetes como pueden, lo que significa que casi todos en la red deberían ser capaces de esto.

Así que aquí va mi pregunta: ¿Pasé por alto algún punto importante en la configuración o en mi configuración de prueba? ¿Hay alguna alternativa para construir un sistema de firewall especialmente en sistemas smp?

tim
fuente
¿Es posible que solo estés saturando la red? Eso explicaría parte de la pérdida de paquetes.
Preston
No lo creo, ya que la red está en 1 Gb / s, cada una conectada a través de un conmutador hp 2848, el control de flujo activado y los desbordamientos de caché de alta carga y ruta en t3 indican que t3 es el punto débil.
tim

Respuestas:

1

Migraría a Kernel> = 3.6 que ya no tiene una caché de enrutamiento. Eso debería resolver una parte de tus problemas.

BatchyX
fuente
0

¿Cómo es su configuración de registro en T3? Si se registran todos los paquetes descartados, la E / S del disco puede ser la causa.

Dado que este es un entorno de prueba, puede probar la prueba con el registro T3 desactivado.

John Siu
fuente