networking tcp infiniband

networking - Diferencia entre IPoIB y TCP sobre Infiniband



(1)

Los adaptadores InfiniBand ("HCA") proporcionan un par de características avanzadas que se pueden usar a través de la interfaz de programación nativa de "verbos":

  1. Las transferencias de datos se pueden iniciar directamente desde el espacio de usuario al hardware, evitando el kernel y evitando la sobrecarga de una llamada al sistema.
  2. El adaptador puede manejar todo el protocolo de red rompiendo un mensaje grande (incluso muchos megabytes) en paquetes, generando / manejando ACK, retransmitiendo paquetes perdidos, etc. sin usar ninguna CPU en el emisor o el receptor.

IPoIB (IP-over-InfiniBand) es un protocolo que define cómo enviar paquetes de IP sobre IB; y, por ejemplo, Linux tiene un controlador "ib_ipoib" que implementa este protocolo. Este controlador crea una interfaz de red para cada puerto InfiniBand en el sistema, lo que hace que un HCA actúe como una NIC ordinaria.

IPoIB no aprovecha al máximo las capacidades de HCA; el tráfico de red pasa por la pila IP normal, lo que significa que se requiere una llamada al sistema para cada mensaje y la CPU del host debe manejar la división de datos en paquetes, etc. Sin embargo, significa que las aplicaciones que usan conectores IP normales funcionarán en la parte superior del velocidad máxima del enlace IB (aunque la CPU probablemente no podrá ejecutar la pila IP lo suficientemente rápido como para usar un enlace QDR IB de 32 Gb / seg).

Como IPoIB proporciona una interfaz NIC IP normal, se pueden ejecutar tomas TCP (o UDP) en la parte superior. El rendimiento de TCP es superior a 10 Gb / seg. Es posible con sistemas recientes, pero esto consumirá una buena cantidad de CPU. Para su pregunta, realmente no hay diferencia entre IPoIB y TCP con InfiniBand; ambos se refieren al uso de la pila de IP estándar sobre el hardware de IB.

La diferencia real es entre usar IPoIB con una aplicación de sockets normal versus usar InfiniBand nativo con una aplicación que se ha codificado directamente en la interfaz de verbos IB nativa. La aplicación nativa casi seguramente obtendrá un rendimiento mucho mayor y una latencia más baja, mientras que gastará menos CPU en la creación de redes.

¿Alguien puede explicar los conceptos de IPoIB y TCP a través de infiniband? Comprendo el concepto general y las velocidades de datos proporcionadas por infiniband nativo, pero no entiendo cómo encajan TCP e IPoIB. ¿Por qué los necesitan y qué hacen? ¿Cuál es la diferencia cuando alguien dice que su red usa IPoIB o TCP con infiniband? ¿Cuál es mejor? No tengo un buen historial de trabajo en red, por lo que sería bueno que pudieras dar más detalles.

Gracias por tu ayuda.