【问题标题】:Difference between IPoIB and TCP over InfinibandIPoIB 和 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)。

标签: networking tcp infiniband


【解决方案1】:

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

  1. 可以直接从用户空间向硬件发起数据传输,绕过内核并避免系统调用的开销。
  2. 适配器无需使用发送方或接收方的任何 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。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 2012-08-17
    • 1970-01-01
    • 2012-02-23
    • 2013-09-04
    • 2011-08-23
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多