¿Cuál es el cuello de botella de IPsec en Linux?


19

Estoy tratando de comparar el rendimiento de varios protocolos de seguridad de red entre dos hosts conectados en Gigabit Ethernet.

Mi objetivo aquí es ver si puedo saturar mi ancho de banda, y si no, cuál es el factor limitante.

  • con SSL, puedo alcanzar 981 MBit / s, por lo que el enlace Ethernet es obviamente el factor limitante;
  • con SSH, puedo alcanzar solo 750 MBit / s, pero uno de mis núcleos está al 100% de uso. Como SSH es de un solo subproceso, la CPU es el factor limitante;
  • con IPsec, leí alrededor de 500 MBit / s pero ninguno de mis núcleos está al 100% (están por debajo del 50%).

Entonces mi pregunta es: ¿por qué IPsec no puede alcanzar un mayor ancho de banda?

Los dos hosts ejecutan Debian Wheezy y Strongswan para IPsec.


3
Deberá asegurarse de que su CPU tenga las aesinstrucciones para mejorar la descripción de los paquetes en ambos sitios intel.co.jp/content/dam/www/public/us/en/documents/white-papers/… , y asegúrese de estar haciendo que ipsec sea paralelo y use Tunnel Mode + ESP - strongswan.org/docs/Steffen_Klassert_Parallelizing_IPsec.pdf . Esa es la mejor manera de lograr el rendimiento con este protocolo.

Lamentablemente tengo procesadores i3 sin soporte AES-NI, y trabajo en modo túnel entre los dos hosts. Entiendo cómo ambos consejos aumentarían el ancho de banda en el caso de que una CPU estuviera al 100% de uso. El uso de AES-NI permitiría procesar más paquetes y aumentaría el BW. Pero aquí la CPU no parece ser el factor limitante.
user50228

3
Hmm, eso es interesante. Sospecho que algo en el núcleo está ralentizando las cosas. ¿Le importaría compartir su configuración de ipsec? Me gustaría instrumentar una VM y ver qué resultados obtendré con diferentes configuraciones.
Lmwangi

Respuestas:


1

Hay tantos factores que intervienen en esto. La NIC llega a más partes del tablero de lo que puedas imaginar. Cualquier conjunto si las instrucciones pueden atravesar el cable y golpear una parte del sistema del controlador y embotellarlo. Puede tomar una sola placa de 1200 mhz de un solo núcleo y desconectar el hardware para volar las puertas de cuatro núcleos a 3600 mhz. Esta es realmente una pregunta específica de hardware.

¿Cómo lo hacen? con algo como esto http://www.ixiacom.com/products/ixn2x Ese es el dispositivo "Te romperé" de $ 165k. es decir, 2 gigas de tráfico erróneo en una tubería de 1 gig. Una vez que comience a golpear el sistema y romper cosas, el cuello de su botella 'se revelará'. ¡Mejora tus habilidades de GDB!

Cada sistema tiene un método diferente para resolver el problema. Algunas placas tienen limitaciones tecnológicas que pueden limitarlo.

La respuesta es ambigua porque la solución es ambigua. Puedo pensar en 20 posibilidades diferentes en la parte superior de mi cabeza, incluida la paginación, que puede variar de una versión del sistema operativo a otra.



0

Puede ser que en un momento específico solo uno de los dos núcleos esté saturado, pero en promedio parece que ambos tienen aproximadamente el 50% (porque el núcleo asigna aleatoriamente un proceso de IPsec de un solo subproceso a ambos núcleos; sin embargo, en lo que respecta a I He notado que Linux (a diferencia de Windows) generalmente intenta mantener un hilo en el mismo núcleo).

En algunos períodos cortos, IPSec puede esperar también a la red que, junto con una velocidad de transferencia lenta, sería un signo de almacenamiento en búfer deficiente.

También la compresión (si la hay) y la sobrecarga del protocolo pueden afectar sus pruebas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.