2011-05-18 24 views
31

¿Alguien puede explicar los conceptos de IPoIB y TCP sobre 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.Diferencia entre IPoIB y TCP sobre Infiniband

Gracias por su ayuda.

+1

IP es un protocolo [capa de red] (http://en.wikipedia.org/wiki/Network_Layer) (nivel 3), TCP es una [capa de transporte] (http://en.wikipedia.org/wiki/Transport_Layer) nivel (nivel 4) de protocolo, por lo que TCP a menudo se ejecuta en la parte superior de IP (que normalmente se ejecuta en la parte superior de Ethernet o Infiniband como mencionas). –

Respuesta

59

adaptadores InfiniBand ("HCA") proporcionan un par de características avanzadas que se pueden utilizar a través de los "verbos" nativos interfaz de programación:

  1. transferencias de datos puede iniciarse directamente desde el espacio de usuario al hardware, sin pasar por el kernel y evitar 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/gestionando 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) encima. 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.

+0

¡Genial! Muchas gracias. – jitihsk

+0

muchas gracias –