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:
- 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.
- 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.
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). –