有人可以解释 IPoIB 和 TCP over infiniband 的概念吗?我了解本机 infiniband 提供的总体概念和数据速率,但不太了解 TCP 和 IPoIB 如何适应。您为什么需要它们以及它们做什么?当有人说他们的网络使用 IPoIB 或 TCP 和 infiniband 时有什么区别?哪一个更好?我不是来自强大的网络背景,所以如果你能详细说明会很好。
感谢您的帮助。
有人可以解释 IPoIB 和 TCP over infiniband 的概念吗?我了解本机 infiniband 提供的总体概念和数据速率,但不太了解 TCP 和 IPoIB 如何适应。您为什么需要它们以及它们做什么?当有人说他们的网络使用 IPoIB 或 TCP 和 infiniband 时有什么区别?哪一个更好?我不是来自强大的网络背景,所以如果你能详细说明会很好。
感谢您的帮助。
InfiniBand 适配器(“HCA”)提供了一些可通过本机“动词”编程接口使用的高级功能:
IPoIB(IP-over-InfiniBand)是一种协议,它定义了如何通过 IB 发送 IP 数据包;例如,Linux 有一个实现此协议的“ib_ipoib”驱动程序。该驱动程序为系统上的每个 InfiniBand 端口创建一个网络接口,这使得 HCA 的行为就像一个普通的 NIC。
IPoIB 没有充分利用 HCA 的能力;网络流量通过普通 IP 堆栈,这意味着每条消息都需要系统调用,并且主机 CPU 必须处理将数据分解成数据包等。但这确实意味着使用普通 IP 套接字的应用程序将在IB 链路的全速(尽管 CPU 可能无法以足够快的速度运行 IP 堆栈以使用 32 Gb/秒 QDR IB 链路)。
由于 IPoIB 提供了一个普通的 IP NIC 接口,因此可以在其上运行 TCP(或 UDP)套接字。使用最近的系统,TCP 吞吐量可能超过 10 Gb/秒,但这会消耗大量 CPU。对于您的问题,IPoIB 和带有 InfiniBand 的 TCP 之间并没有真正的区别——它们都指的是在 IB 硬件之上使用标准 IP 堆栈。
真正的区别在于将 IPoIB 与普通套接字应用程序一起使用与将本机 InfiniBand 与直接编码到本机 IB 动词接口的应用程序一起使用。本机应用程序几乎肯定会获得更高的吞吐量和更低的延迟,同时在网络上花费更少的 CPU。