2. Infiniband基础概念

2.1 什么是 Infiniband

InfiniBand(简称 IB)是一种面向高性能计算(HPC)和企业级数据中心的高速、低延迟、可扩展的网络互连技术。它诞生于 1999 年,由 Intel、Microsoft、Compaq 等公司联合推动,旨在替代当时 PCI 总线与专用计算集群中割裂的 I/O 架构。与以太网“尽力而为”的转发模型不同,InfiniBand 从设计之初就强调端到端的可靠传输、极低的 CPU 卸载开销和确定性的延迟。

从本质上看,InfiniBand 不仅仅是一张网卡和一根线缆,它定义了一整套完整的通道式 I/O 架构:主机上的应用通过 HCA(Host Channel Adapter)直接访问网络,数据以“消息”为单位在队列对(Queue Pair, QP)之间传递,并由硬件完成数据的分段、路由、流控与重组。这种设计让 CPU 几乎不参与数据搬运,从而将单跳延迟压到亚微秒级别。

核心认知:InfiniBand 不是“更快的以太网”,而是一套独立的、面向消息传递的互连体系。它拥有自己的寻址方式(LID/GID)、自己的管理协议(子网管理器)和自己的物理层规范(4x/12x 链路)。理解这一点,是后续学习 RDMA、GPUDirect 和 NVIDIA 集群组网的基础。

2.2 与传统以太网的核心区别

要真正理解 InfiniBand 的价值,最有效的方式是将其与数据中心里最常见的以太网进行对比。两者在设计哲学上就有根本差异:以太网是“共享介质、尽力而为、软件补救”,而 InfiniBand 是“专用通道、硬件保障、端到端流控”。

对比维度 传统以太网(TCP/IP) InfiniBand
寻址方式 IP 地址(逻辑)+ MAC 地址(物理) LID(子网内本地 ID)+ GID(全局 ID)
数据传递模型 基于 Socket / 内核协议栈 基于队列对(QP)的消息传递,内核旁路
延迟(典型值) 10~50 微秒(依赖协议栈) 0.5~2 微秒(硬件直通)
流控机制 TCP 滑动窗口(软件,端到端) 链路级信用流控(硬件,逐跳)
可靠性 TCP 重传(软件处理) 硬件重传(可靠连接 RC 模式)
CPU 开销 高(协议栈处理、中断密集) 极低(RDMA 卸载,CPU 几乎零参与)
网络管理 分布式(STP/BGP 等协议自协商) 集中式(子网管理器统一管控)

上表中最值得关注的是流控与可靠性的位置。以太网将可靠性放在 TCP 层,由 CPU 处理确认与重传;而 InfiniBand 将可靠性下沉到链路层硬件,每个交换机端口都维护信用计数器,只有收到对端返回的信用才继续发送,从物理上杜绝了丢包。这种“无损网络”特性,是 GPUDirect RDMA 能够高效运行的前提。

2.3 核心术语详解

InfiniBand 拥有一套独立的术语体系,初学者往往被这些名词困扰。下面按“从端点到网络”的逻辑顺序,逐一拆解最关键的几个概念。

2.3.1 HCA(Host Channel Adapter)

HCA 是安装在服务器上的主机通道适配器,相当于“InfiniBand 网卡”。但它远比普通网卡复杂:HCA 内部集成了 DMA 引擎、队列管理逻辑和消息解析单元,能够直接读写主机内存。每个 HCA 通常提供 1~2 个物理端口,每个端口可以支持多个 QP。NVIDIA 的 ConnectX 系列(如 ConnectX-6/7)就是典型的 HCA,它们同时支持 InfiniBand 和 RoCE(RDMA over Converged Ethernet)。

2.3.2 子网管理器(Subnet Manager, SM)

InfiniBand 网络是集中管理的。子网管理器是运行在指定节点(可以是专用服务器、交换机内置模块或软件进程)上的控制实体,负责整个子网的拓扑发现、路径计算、LID 分配和路由表下发。当网络拓扑发生变化(如新节点接入),SM 会重新扫描并更新转发规则。生产环境中通常配置主备双 SM 以保证高可用。

2.3.3 LID(Local Identifier)

LID 是 InfiniBand 子网内的16 位本地地址,由 SM 在节点加入网络时动态分配。每个 IB 端口至少拥有一个 LID(可以多个,用于多路径)。数据包在子网内部转发时,交换机只依据 LID 查找转发表,这个过程与以太网 MAC 地址学习类似,但 LID 是由 SM 统一规划的,不存在广播风暴或地址冲突问题。

2.3.4 GID(Global Identifier)

GID 是128 位全局标识符,用于跨子网路由。它由 64 位子网前缀 + 64 位接口标识(通常取自端口 GUID)组成。GID 的格式与 IPv6 地址类似,但语义完全不同——它标识的是 IB 端口而非主机接口。当数据包需要跨越多个 IB 子网时,路由器会依据 GID 进行转发。

2.3.5 队列对(Queue Pair, QP)

QP 是 HCA 内部通信的端点抽象,由发送队列(SQ)和接收队列(RQ)组成。应用通过创建 QP 并提交 Work Request(WR)来发起通信,硬件自动完成数据搬运。QP 有四种传输类型:可靠连接(RC)、不可靠连接(UC)、可靠数据报(RD)和不可靠数据报(UD),其中 RC 最常用,提供类似 TCP 的可靠字节流语义。

InfiniBand 核心组件与寻址关系示意图 服务器节点 CPU 内存 PCIe HCA ConnectX-7 SQ RQ LID: 0x0002 GID: fe80::2 Port GUID: 0x248a IB 链路 (4x HDR) IB 交换机 交换矩阵 线性无阻塞转发 链路级信用流控 无丢包传输 LID 转发表 由 SM 下发 远端服务器节点 CPU 内存 HCA ConnectX-7 SQ RQ LID: 0x0003 GID: fe80::3 Port GUID: 0x248b 子网管理器 (SM) 拓扑发现 / LID分配 / 路径计算 RDMA 数据流 (硬件直通) 管理通道 关键术语速查: • HCA = 主机通道适配器(IB 网卡) • QP = 队列对(SQ + RQ),通信端点 • LID = 子网内本地地址(16 bit) • SM = 子网管理器,集中控制平面

2.4 一个典型场景:GPU 集群中的 IB

以 NVIDIA DGX A100 集群为例,每台服务器内部有 8 张 GPU,外部通过 8 张 ConnectX-6 HCA 接入 IB 网络。当进行分布式训练时,每个 GPU 进程需要将梯度数据发送给其他节点上的 GPU。此时,数据路径是:

  1. GPU 显存中的梯度数据通过 GPUDirect RDMA 技术,绕过 CPU 和主机内存,直接由 HCA 的 DMA 引擎读取。
  2. HCA 将数据封装为 IB 数据包,通过交换机网络转发到目标节点。
  3. 目标节点的 HCA 收到数据后,直接写入目标 GPU 的显存,全程无需 CPU 参与。

在这个过程中,子网管理器已经预先计算好了每对节点之间的最优路径,并为每个端口分配了 LID。当数据包到达交换机时,交换芯片仅需查找 LID 转发表即可完成转发,延迟极低。整个集群中,数千个 GPU 之间的通信延迟可以稳定保持在 1~2 微秒以内。

2.5 常见误区与复盘

误区一:认为 IB 只是“更快的网卡”。
实际上,IB 的价值在于端到端的架构设计——从 HCA 的硬件卸载,到交换机的无丢包转发,再到 SM 的集中管理,三者缺一不可。如果只更换网卡而网络仍走传统以太网交换机,无法获得 IB 的低延迟特性。
误区二:混淆 LID 与 IP 地址。
LID 只在 IB 子网内部有效,且由 SM 动态分配,不具备跨子网路由能力。跨子网通信必须依赖 GID。而 IP 地址是逻辑寻址,与物理拓扑无关。两者设计哲学完全不同。
复盘建议:在排查 IB 网络故障时,首先使用 ibstatus 查看 HCA 状态和 LID 分配情况,再使用 ibnetdiscover 检查拓扑是否被 SM 正确发现。如果节点无法通信,优先确认 SM 是否正常运行、LID 是否冲突,而不是像排查以太网那样去检查 IP 配置。