Infiniband上IPoIB和TCP之间的区别

jit*_*hsk 40 networking tcp infiniband

有人可以通过infiniband解释IPoIB和TCP的概念吗?我理解本地infiniband提供的整体概念和数据速率,但不太了解TCP和IPoIB如何适应.为什么你需要它们,他们做了什么?有人说他们的网络使用IPoIB或TCP与infiniband有什么区别?哪一个更好?我不是来自强大的网络背景,所以如果你能详细说明那就太好了.

谢谢您的帮助.

Rol*_*and 69

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)套接字.使用最新系统可以实现超过10 Gb /秒的TCP吞吐量,但这会消耗相当多的CPU.对于您的问题,IPoIB和TCP与InfiniBand之间并没有真正的区别 - 它们都指的是在IB硬件上使用标准IP堆栈.

真正的区别在于使用IPoIB与普通套接字应用程序,而使用本机InfiniBand与直接编码到本机IB动词接口的应用程序.本机应用程序几乎肯定会获得更高的吞吐量和更低的延迟,同时在网络上花费更少的CPU.