Infiniband上IPoIB和TCP之间的区别

时间:2011-05-18 22:38:22

标签: networking tcp infiniband

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:65)

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

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