第 3 章 配置 IPoIB
默认情况下,InfiniBand 不使用 IP 进行通信。但是,IP over InfiniBand(IPoIB)在 InfiniBand 远程直接访问(RDMA)网络之上提供 IP 网络模拟层。这允许现有未修改的应用程序通过 InfiniBand 网络传输数据,但如果应用程序可以原生使用 RDMA,则性能较低。
在 RHEL 8 和更新的版本中,从 ConnectX-4 开始的 Mellanox 设备默认使用增强 IPoIB 模式(仅数据报)。在这些设备中不支持连接模式。
3.1. IPoIB 通讯模式
IPoIB 设备可在 Datagram
或 Connected
模式中配置。不同之处在,IPoIB 层试图使用什么类型的队列对在通信的另一端的机器中打开:
在
Datagram
模式中,系统会打开一个不可靠、断开连接的队列对。这个模式不支持大于 InfiniBand 链路层的最大传输单元(MTU)的软件包。在传输数据时,IPoIB 层在 IP 数据包之上添加了一个 4 字节 IPoIB 标头。因此,IPoIB MTU 比 InfiniBand link-layer MTU 小 4 个字节。因为
2048
是一个常见的 InfiniBand 链路层 MTU,Datagram
模式中的通用 IPoIB 设备 MTU 为2044
。在
Connected
模式中,系统会打开一个可靠、连接的队列对。这个模式允许消息大于 InfiniBand link-layer MTU。主机适配器处理数据包分段和重新装配。因此,在
Connected
模式中,从 Infiniband 适配器发送的消息没有大小限制。但是,由于data
字段和 TCP/IPheader
字段,存在一个 IP 数据包限制。因此,Connected
模式中的 IPoIB MTU 是65520
字节。Connected
模式性能更高,但是消耗更多内核内存。
虽然系统被配置为使用 Connected
模式,但系统仍然使用 Datagram
模式发送多播流量,因为 InfiniBand 交换机和光纤无法在 Connected
模式下传递多播流量。另外,当主机没有配置为使用 Connected
模式时,系统会返回 Datagram
模式。
当运行一个应用程序,这个应用程序在接口上发送最大到 MTU 的多播数据时,将接口设置为处于 Datagram
模式,或对应用程序进行配置,使其对发送的数据包的大小有一个上限,以适用于 datagram-sized 的数据包。