IPoIB 和 TCP over Infiniband 的区别

Posted

技术标签:

【中文标题】IPoIB 和 TCP over Infiniband 的区别【英文标题】:Difference between IPoIB and TCP over Infiniband 【发布时间】:2011-08-28 10:52:31 【问题描述】:

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

感谢您的帮助。

【问题讨论】:

IP 是network layer 协议(级别3),TCP 是transport layer 级别(级别4)协议,所以TCP 经常运行在IP 之上(通常运行在以太网或以太网之上)您提到的 Infiniband)。 【参考方案1】:

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

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

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。

【讨论】:

以上是关于IPoIB 和 TCP over Infiniband 的区别的主要内容,如果未能解决你的问题,请参考以下文章

wsFederationHttpBinding over net.tcp

RDMA over TCP的协议栈工作过程浅析

TCP over Bluetooth(Windows 套接字)

TCP over UDP *** 可靠吗?

WCF over net.tcp 与安全模式 none 给出异常

TCP over TCP的出现与解决办法