43

有人可以解释 IPoIB 和 TCP over infiniband 的概念吗?我了解本机 infiniband 提供的总体概念和数据速率,但不太了解 TCP 和 IPoIB 如何适应。您为什么需要它们以及它们做什么?当有人说他们的网络使用 IPoIB 或 TCP 和 infiniband 时有什么区别?哪一个更好?我不是来自强大的网络背景,所以如果你能详细说明会很好。

感谢您的帮助。

4

1 回答 1

77

InfiniBand 适配器(“HCA”)提供了一些可通过本机“动词”编程接口使用的高级功能:

  1. 数据传输可以直接从用户空间启动到硬件,绕过内核并避免系统调用的开销。
  2. 适配器可以处理所有网络协议,将大消息(甚至数兆字节)分解为数据包、生成/处理 ACK、重新传输丢失的数据包等,而无需使用发送方或接收方上的任何 CPU。

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。

于 2011-05-21T04:59:56.133 回答