2. InfiniBand基础概念
InfiniBand(IB)自1999年由InfiniBand贸易协会(IBTA)提出以来,已从高性能计算(HPC)领域的专有互连技术,逐步演进为AI大模型训练、分布式存储和云数据中心的关键网络基础设施。与以太网“尽力而为”的转发模型不同,IB从设计之初就围绕低时延、高带宽、高可靠性三大目标展开,其协议栈分层、子网管理机制和核心硬件组件构成了一个高度专业化、无丢包的有损网络体系。本章将系统梳理IB协议栈的分层模型、子网管理器(SM)的职责、通道适配器(CA)、交换机与路由器的角色,以及贯穿其中的关键术语,帮助学员建立对IB网络的整体认知框架。
上图展示了IB协议栈的五层模型与核心组件之间的协作关系。左侧为协议栈分层,右侧为子网内的关键组件及其管理/数据路径。理解这张图的关键在于:SM负责控制平面(发现、配置、路由计算),而CA、交换机和路由器负责数据平面(实际报文转发)。下面我们将逐一深入剖析。
2.1 IB协议栈分层模型
2.1.1 核心原理:五层协议栈与以太网七层模型的差异
IB协议栈并非简单模仿OSI七层模型,而是针对高性能互连做了精简和强化。其五层结构从下至上依次为:物理层(Physical Layer)、链路层(Link Layer)、网络层(Network Layer)、传输层(Transport Layer)和上层协议(Upper Layer Protocols, ULP)。与以太网相比,IB省略了会话层和表示层,将流量控制、可靠传输、多路径等复杂功能下沉到链路层和传输层,从而减少软件开销,实现微秒级时延。
- 物理层:定义电气特性、连接器类型(如QSFP)、信号速率(SDR 2.5Gbps、DDR 5Gbps、QDR 10Gbps、FDR 14.0625Gbps、EDR 25Gbps、HDR 50Gbps、NDR 100Gbps等)、链路宽度(1x、4x、8x、12x、16x)。物理层还负责链路训练、比特级错误检测(CRC)和重定时(Retiming)。
- 链路层:负责子网内的数据帧封装、流控(基于信用(Credit)的机制)、错误检测(变体CRC)、链路级重传(非可靠传输时)。链路层使用本地标识符(LID)进行寻址,LID是子网内唯一的16位地址,由SM动态分配。链路层还定义了子网路由(Subnet Routing),即交换机根据LID转发数据包。
- 网络层:负责跨子网的路由。IB网络层使用全局路由头(Global Route Header, GRH),其中包含128位的全局标识符(GID)。GID由64位子网前缀(Subnet Prefix)和64位端口GUID(Globally Unique Identifier)组成。路由器根据GID进行跨子网转发。
- 传输层:提供端到端的通信服务。核心概念包括队列对(Queue Pair, QP)、完成队列(Completion Queue, CQ)、共享接收队列(Shared Receive Queue, SRQ)。传输层支持多种传输服务类型:可靠连接(RC)、不可靠连接(UC)、可靠数据报(RD)、不可靠数据报(UD)和原始数据报(Raw)。传输层还负责报文分段、重组、多路复用和错误检测。
- 上层协议(ULP):包括IPoIB(IP over IB)、Sockets Direct Protocol(SDP)、Message Passing Interface(MPI)、SCSI RDMA Protocol(SRP)、iSCSI Extensions for RDMA(iSER)等。ULP使得现有应用(如数据库、分布式文件系统)能够透明地运行在IB网络上。
2.1.2 判断方法:如何识别一个IB网络中的协议层问题
在实际运维中,判断问题出在哪个协议层是排障的第一步。以下是一些实用的判断方法:
- 物理层故障:表现为链路状态为Down或Degraded,使用
ibstat或ibstatus命令查看端口物理状态。若物理层正常,端口状态应为Active,链路速率和宽度符合预期。 - 链路层故障:表现为链路虽Up但丢包严重,或出现大量CRC错误。使用
ibswitches和iblinkinfo检查交换机端口错误计数。若CRC错误持续增长,则可能是信号完整性或连接器接触不良。 - 网络层故障:表现为跨子网通信失败,但子网内通信正常。检查路由器的GID表项和子网前缀配置。使用
ibroute命令查看路由表。 - 传输层故障:表现为QP状态异常(如RTS(Ready to Send)变为ERR),或CQ中出现错误完成事件。使用
ibv_devinfo和ibv_asyncwatch监控QP和CQ状态。
2.1.3 案例拆解:HDR网络物理层降速问题
背景:某AI训练集群使用Mellanox(现NVIDIA)ConnectX-6 HDR网卡(单端口200Gbps),连接Quantum HDR交换机。训练任务出现周期性性能抖动,NCCL测试带宽从预期的190GB/s降至120GB/s。
排查过程:
- 第一步:执行
ibstatus,发现所有端口状态为Active,但速率显示为HDR (50Gbps),而非预期的HDR (200Gbps)。链路宽度显示为4x,但实际应为4x(HDR单链路50Gbps,4x即200Gbps)。 - 第二步:检查物理层信号完整性,使用
iblinkinfo查看端口错误计数,发现大量Symbol Error和Link Error Recovery计数。 - 第三步:检查光模块和线缆,发现部分线缆为HDR(50Gbps/通道)规格,但实际连接器为QSFP56,而交换机端口配置为HDR模式。进一步检查发现,线缆长度超过3米,且使用了无源铜缆(DAC),在高频下信号衰减严重。
- 第四步:更换为有源光缆(AOC)或更短的无源铜缆,并重新训练链路。
结果:更换线缆后,链路速率恢复为200Gbps,NCCL测试带宽回升至188GB/s,训练任务抖动消失。
2.2 子网管理器(SM)
2.2.1 核心原理:SM是IB子网的“大脑”
子网管理器(Subnet Manager, SM)是IB网络中最核心的控制平面实体。它负责发现物理拓扑、分配LID、配置交换机转发表、计算路由路径、监控链路状态。SM通常运行在交换机上(如Mellanox Quantum系列内置SM),也可以运行在独立服务器上(如使用OpenSM软件)。SM使用管理数据报(Management Datagrams, MAD)与子网内的所有节点通信,MAD通过专用的管理QP(QP0)传输。
SM的核心功能包括:
- 拓扑发现:通过发送子网管理包(SMP)遍历所有交换机端口和CA端口,构建完整的子网拓扑图。
- LID分配:为每个端口分配唯一的16位LID。LID范围从0x0001到0xBFFF,其中0xC000-0xFFFF保留用于多播和组播。
- 路由计算:基于最短路径优先(SPF)算法(如Dijkstra)计算子网内任意两个端口之间的最优路径。现代SM还支持自适应路由(Adaptive Routing, AR),可根据实时拥塞状态动态调整路径。
- 故障恢复:当链路或节点故障时,SM重新计算路由并更新交换机转发表,实现快速重收敛(通常小于100ms)。
2.2.2 操作流程:SM的启动与主备切换
在大型IB网络中,通常配置多个SM以实现高可用性。SM之间通过主从协商(Master-Slave Election)机制确定唯一的主SM(Master SM),其余为从SM(Slave SM)。主SM负责所有管理操作,从SM处于待命状态,定期接收主SM的心跳(Heartbeat)。若主SM失效,从SM在超时后自动接管。
# 使用OpenSM启动SM(运行在服务器上)
opensm -g 0x98039b03009f3f0a -p 10001 -F /etc/opensm/opensm.conf
# 查看SM状态
ibstat -s
# 查看当前主SM
ibswitches -S
SM的配置参数包括:routing_engine(选择路由算法,如dor(Direct-Optimized Routing)或ftree(Fat-Tree))、lid_matrix(LID分配策略)、sm_priority(SM优先级)等。
2.2.3 案例拆解:SM主备切换导致网络闪断
背景:某超算中心IB网络由两台Quantum交换机组成双SM(主备模式),运行OpenSM。某次机房断电演练后,主SM所在交换机重启,从SM接管网络,但业务集群出现约30秒的通信中断。
分析:
- 从SM接管后,需要重新执行拓扑发现和路由计算。虽然拓扑未变化,但SM需要重新下发所有交换机的转发表,这个过程耗时约20-30秒。
- 在SM切换期间,交换机仍保留旧转发表,但LID分配可能发生变化(如果主SM和从SM的LID分配策略不一致),导致数据包无法正确转发。
- 检查发现,从SM的
lid_matrix配置与主SM不同,导致部分CA的LID被重新分配。
解决方案:统一主备SM的配置文件,确保LID分配策略一致;启用sm_priority和sm_lid绑定,使主SM失效后从SM能快速接管;在业务侧启用IPoIB的ARP缓存老化时间调整,减少对SM切换的敏感度。
opensm -U启用平滑重启;3)在交换机上启用Subnet Manager Failover增强功能。
2.3 通道适配器(CA)、交换机与路由器
2.3.1 核心原理:三类硬件组件的职责边界
IB网络的硬件组件分为三类,各自承担不同的转发角色:
| 组件类型 | 主要功能 | 寻址方式 | 典型设备 | 关键特性 |
|---|---|---|---|---|
| 通道适配器(CA) | 连接主机或存储设备到IB网络,提供端点的通信能力 | LID(子网内) + GID(跨子网) | ConnectX-6/7、BlueField DPU | 支持QP、CQ、MR、RDMA操作;HCA(主机)和TCA(目标) |
| 交换机(Switch) | 在子网内根据LID转发数据包,实现无丢包流控 | LID(二层转发) | Quantum QM8700、SB7800 | 支持自适应路由、拥塞控制、端口镜像 |
| 路由器(Router) | 连接不同IB子网或IB与以太网,基于GID路由 | GID(三层路由) | ConnectX-6路由模式、专用IB路由器 | 支持跨子网通信、网络隔离、策略路由 |
通道适配器(CA)是IB网络的“终端设备”。主机通道适配器(HCA)通常以PCIe插卡形式存在,提供1-2个IB端口。每个CA端口包含多个QP,每个QP由QP号(QPN)唯一标识。CA还负责内存注册(Memory Registration),将主机内存的物理区域注册到IB网络,实现RDMA零拷贝传输。
交换机是IB子网的核心转发设备。与以太网交换机不同,IB交换机采用无丢包流控(Lossless Flow Control)机制,基于信用(Credit)的逐跳流控确保缓冲区不溢出。现代IB交换机还支持自适应路由(AR),能够根据端口拥塞状态动态选择转发路径,避免热点。
路由器在IB网络中相对少见,但在多子网或IB与以太网混合组网时必不可少。IB路由器需要同时处理LID和GID,并执行网络地址转换(NAT)或路由策略。例如,在AI集群中,计算子网和存储子网通过路由器隔离,避免广播风暴。
2.3.2 判断方法:如何选择交换机还是路由器
在实际组网中,判断是否需要路由器,主要看以下条件:
- 子网规模:单个IB子网最多支持约48,000个节点(LID空间限制)。若节点数超过此限制,必须划分多个子网,子网间用路由器连接。
- 故障隔离:若需要将不同业务(如AI训练和分布式存储)隔离,避免单点故障扩散,应使用路由器划分子网。
- 性能要求:路由器会引入额外的转发时延(约100-200ns),若对时延极度敏感(如HPC MPI通信),应尽量使用交换机扩展子网,而非路由器。
2.3.3 案例拆解:AI集群中CA与交换机的协同配置
背景:一个千卡GPU集群使用IB HDR网络,采用两层Fat-Tree拓扑(36端口交换机,上行/下行各18端口)。每台GPU服务器配置1张ConnectX-6 HDR网卡(2端口),连接至叶交换机。
关键配置:
- CA侧配置:启用
RoCE(RDMA over Converged Ethernet)模式(虽然IB原生支持RDMA,但部分应用需要RoCE兼容);设置QP数量为默认值(如1024);启用Adaptive Routing支持。 - 交换机侧配置:启用
Fat-Tree路由算法(OpenSM的ftree引擎);配置自适应路由(AR)阈值,当端口利用率超过70%时启用动态路径选择;启用拥塞控制(Congestion Control),设置ECN(Explicit Congestion Notification)标记。 - SM配置:将SM运行在管理节点上,使用
opensm -R ftree指定路由算法;设置--lid_matrix为default,确保LID分配稳定。
结果:配置完成后,NCCL AllReduce测试带宽达到理论值的95%以上(约185GB/s),时延稳定在1.2μs左右。在训练任务中,网络拥塞导致的通信等待时间降低了40%。
dor路由算法在Fat-Tree拓扑中可能产生哈希冲突,导致负载不均;而ftree算法则能实现完美的无阻塞转发。
2.4 关键术语与常见误区
2.4.1 术语速查表
| 术语 | 全称/含义 | 层级 | 说明 |
|---|---|---|---|
| LID | Local Identifier | 链路层 | 16位子网内地址,由SM分配 |
| GID | Global Identifier | 网络层 | 128位全局地址,由子网前缀+GUID组成 |
| QP | Queue Pair | 传输层 | 发送队列和接收队列的集合,是通信的基本单元 |
| CQ | Completion Queue | 传输层 | 用于通知应用层完成事件(发送/接收完成) |
| MR | Memory Region | 传输层 | 注册的主机内存区域,用于RDMA操作 |
| MAD | Management Datagram | 管理平面 | SM与节点之间的管理报文, |