IB 协议与传输:层次、QP、RDMA 与子网管理器 · InfiniBand · 技术 · 文档 · CodingBox
CodingBox 文档

IB 协议与传输:层次、QP、RDMA 与子网管理器

InfiniBand 从一开始就被设计为让计算机之间直接访问彼此内存的网络,而不是在陌生节点之间传送数据包。它的层级、寻址和管理方式对以太网工程师来说显得陌生,但一旦掌握了词汇就很简单——这也解释了为什么物理层要遵循如此严格的标准。本页是协议视角;光模块内容见 InfiniBand 光模块。

层

层内容说明
物理层通道(1x、4x、8x、12x)、每通道信号(从 NRZ 到 HDR 的 PAM4……参见 速率)、编码(QDR 及之前为 8B/10B,FDR 起为 64B/66B)、FEC(FDR 起可选,HDR/NDR 采用 RS-FEC)光模块的世界
链路层带 LID 的本地路由头(LRH)、虚拟通道(VL0–VL14 为数据,VL15 为管理)、按 VL 划分的基于信用的流量控制、链路层 CRC(ICRC/VCRC)天生无损
网络层带 128 位 GID 的全局路由头(GRH),用于多子网路由在单个集群内较少使用
传输层带发送/接收队列的队列对(QP)、服务类型 RC/UC/UD/XRC、按 MTU 分段、用于可靠服务的 ACK/NAKRDMA 位于此层
上层verbs API、MPI、NCCL(通过 UCX/SHARP)、存储(SRP、iSER、NVMe/IB)、IPoIB应用程序所使用的内容

寻址与身份

标识符长度分配方含义
GUID64 位制造商端口、节点或系统的永久身份(类似 MAC 地址)
LID(本地标识符)16 位子网管理器子网内的地址;转发表使用 LID
GID128 位SM(前缀)+ GUID子网前缀 + GUID;用于跨子网及 RoCE
PKey(分区密钥)16 位SM分区成员关系(类似 VLAN);完全成员/受限成员
QPN24 位HCA队列对编号——端口内的端点

队列对与传输服务

队列对是 HCA 中由应用程序拥有的一个发送队列和一个接收队列。提交给它的工作请求由硬件执行;完成事件进入完成队列。服务类型:

类型可靠面向连接用途
RC——可靠连接是(ACK/NAK、重传)是,每个对端一个 QP大多数 RDMA 流量;MPI、NCCL、存储
UC——不可靠连接否是少见
UD——不可靠数据报否否,所有对端共用一个 QP管理、IPoIB、组播
XRC——扩展可靠连接是跨进程共享接收队列用于减少大型 MPI 作业的 QP 数量
RD——可靠数据报是否基本不使用

RDMA 操作(READ、WRITE、原子操作)直接在两台主机的应用缓冲区之间搬运数据,无需任一方 CPU 拷贝;SEND/RECEIVE 用于传送消息。内存必须先被注册(锁定并分配密钥),HCA 才能访问它。GPUDirect RDMA 将这一能力扩展到 GPU 内存(GPU 网络)。

流量控制与 MTU

每条链路都运行按虚拟通道划分的基于信用的流量控制:接收方声明缓冲空间,发送方发送的数据永远不超过对方能够接收的量。不会因拥塞而丢帧;相反,反压会向上游传播——这与 Fibre Channel 的信用机制是同样的权衡,也是单条慢速或出错链路会拖慢整个作业的原因。链路 MTU 为 256–4096 字节(典型值 4096);路径 MTU 由端到端协商确定。服务等级(SL)映射到虚拟通道以区分流量类别,自适应路由可以引导流量绕开拥塞链路。

子网管理器

每个子网恰好有一个活动的子网管理器(SM)(其余处于待命状态)。它执行以下工作:

  1. 通过在网络中发送定向路由管理数据包(VL15/QP0 上的 SMP)来发现拓扑——覆盖每个交换机和 HCA 端口。
  2. 分配 LID,并配置端口(速率、宽度、MTU、VL 仲裁、PKey)。
  3. 计算路由——最小跳数、上下(up-down)、胖树、dragonfly+、自适应路由——并将结果编程到每台交换机的线性转发表中。
  4. 定期以及在收到陷阱通知(端口上/下线)时进行扫描,绕开故障重新路由。
  5. 运行子网管理代理(SA),为主机的路径查询提供应答。

OpenSM(开源)和厂商的网络管理器(UFM)都实现了这一功能;网络管理器也是全局汇总端口错误、链路速率/宽度协商结果和光模块 DDM 的地方(链路可靠性与监测)。

链路协商

链路启动时,两端会将宽度(1x/2x/4x)和速率(每通道速率)协商到共同支持的最高值。若链路以 2x 或比预期低一代的速率启动,相当于以太网中的“以 10G 而不是 25G 建立链路”:可能是某条通道的光纤或激光器问题、临界电缆,或光模块代际不匹配(速率与速度)。网络管理器会报告协商后的状态;主机上可通过 ibstat / ibportstate 查看。

管理与诊断工具

工具用途
ibstat、ibstatus本地端口状态、速率、宽度、LID
ibnetdiscover拓扑转储
ibdiagnet全网检查:错误、速率/宽度不匹配、GUID 重复、电缆信息
perfquery、ibqueryerrors逐端口计数器:符号错误、链路断开、链路恢复、端口接收错误、过量缓冲区溢出、VL15 丢弃、FEC 计数器
mlxlink、mlxcables逐端口 PHY 详情以及电缆/光模块 EEPROM、DDM、FEC 直方图
ibportstate强制指定速率/宽度、重置端口

符号错误和链路恢复是物理层计数器——相当于以太网的 CRC/FEC,与接收光功率和洁净度相关(网络)。

一段话说清 InfiniBand 与 RoCE 的区别

RoCE v2 在 UDP/IP/以太网之上承载相同的 verbs/RDMA 传输;它用 IP 路由取代子网管理器,用 VLAN 取代 PKey,用 PFC/ECN(DCQCN)取代信用流量控制——而后者必须正确配置才能实现无损(无损以太网、 互连)。光模块在物理上完全相同;不同的只是身份编码和主机策略。

在 CodingBox 中

InfiniBand 模块的读取方式与其他 QSFP/OSFP 相同:身份信息(包括 SFF-8636 字节 164 中的 InfiniBand 速率位,或 CMIS applications 字段)、逐通道 DDM 和校验和,均可在 Check transceiver 和 DDM 中查看。若某端口的协商速率低于额定速率,值得在工作台上读取链路两端的模块。


如果您发现本资料中有不准确之处或错误,请选中相应片段并按 Ctrl+Enter,即可。