硬件与组网:InfiniBand交换机、HCA卡、线缆类型与拓扑结构

核心硬件:从HCA到交换机的角色拆解

InfiniBand网络的核心硬件由三部分组成:HCA(Host Channel Adapter,主机通道适配器)、InfiniBand交换机以及线缆/光模块。HCA相当于以太网中的NIC,但它不仅完成数据收发,还承担了RDMA(远程直接内存访问)的协议卸载功能。HCA通过PCIe接口与CPU/内存相连,将应用数据直接封装为InfiniBand报文,绕过操作系统内核,实现微秒级延迟。

交换机是InfiniBand网络的“十字路口”,它不依赖CPU转发,而是通过内部交叉矩阵(Crossbar)以线速转发数据包。每个端口支持自适应速率(如EDR 100Gb/s、HDR 200Gb/s),并内置自适应路由(AR)和拥塞控制(CC)硬件逻辑。线缆方面,常见的有铜缆(DAC,适用于≤3米短距离)、有源光缆(AOC,3~100米)和可插拔光模块(QSA/QSFP-DD,配合光纤使用)。选择线缆时需同时考虑端口速率、传输距离和功耗。

选型要点:HCA的PCIe代际必须与交换机端口速率匹配。例如,ConnectX-6 HCA(PCIe 4.0 x16)理论带宽约200Gb/s,若搭配HDR交换机(200Gb/s端口),则刚好不瓶颈;若使用PCIe 3.0 x16(约100Gb/s),则只能发挥一半性能。
InfiniBand 硬件链路与数据流 CPU / 内存 PCIe 4.0/5.0 HCA 卡 ConnectX-6/7 DMA 线缆/光模块 DAC / AOC / 光模块 InfiniBand 交换机 交叉矩阵 + 自适应路由 拥塞控制硬件 端口数:36/64/216 交换机 2 上行/下行端口 链路聚合 ISL 链路 存储 / NVMe-oF 目标端 HCA 计算节点 2 HCA + 应用 HCA 线缆 交换机 存储目标 ISL 链路

拓扑结构:Fat-Tree与Dragonfly的设计逻辑

拓扑决定了网络的二分带宽、延迟上界和故障域。实际部署中最常见的是Fat-Tree(胖树),它基于无阻塞Clos网络思想,通过多级交换机(通常为2~3级)提供多条等价路径。以三层Fat-Tree为例:叶层(Leaf)连接计算节点,脊层(Spine)负责汇聚,核心层(Core)提供全网状互联。若每个叶交换机有K个上行端口,则全网可提供K×(K/2)²个节点接入,且任意两节点间存在多条路径,配合ECMP或自适应路由实现负载均衡。

Dragonfly(蜻蜓)拓扑则面向超大规模系统(>10万节点),它将交换机分组为组(Group),组内全连接,组间通过少量光缆连接。Dragonfly的优势是网络直径小(任意节点跳数≤3),但代价是组间链路可能成为瓶颈,需要依赖流量局部性。实际选择时,若集群规模在数百至数千节点,Fat-Tree更易维护且对拥塞不敏感;若追求极致扩展性且应用通信模式已知,Dragonfly更优。

拓扑类型 最大节点数(HDR 200G) 网络直径 典型故障域 适用场景
两层Fat-Tree 648 3跳 单脊交换机 中小型GPU集群
三层Fat-Tree 13,824 5跳 单核心交换机 大型HPC/AI训练
Dragonfly >10万 3跳 整组(Group) 超大规模系统

组网实操:以三层Fat-Tree为例的布线流程

假设构建一个包含288个计算节点的集群,每个节点1张HDR HCA(200Gb/s),采用36端口HDR交换机。设计如下:

  1. 规划端口分配:每台叶交换机使用18个下行端口连接计算节点,剩余18个上行端口连接脊交换机。共需16台叶交换机(288/18=16)。
  2. 确定脊交换机数量:为保证无阻塞,脊交换机数量应等于叶交换机上行端口数,即18台脊交换机。每台脊交换机提供16个下行端口连接16台叶交换机。
  3. 物理布线:叶交换机1~16的1~18号端口分别连接计算节点1~288;叶交换机第19~36号端口依次连接脊交换机1~18。
  4. 子网划分:将所有交换机划分为同一个子网管理器(SM)管理域,配置自适应路由和QoS策略。
# 以Mellanox NEO或opensm为例,启用自适应路由
# 在/etc/opensm/opensm.conf中设置:
#  adaptive_routing=1
#  routing_algorithm=ftree
# 然后重启opensm服务
systemctl restart opensm
# 验证子网管理器状态
ibstat | grep -E "State|Port"
# 预期输出:State: Active, Physical state: LinkUp
布线验证技巧:使用 iblinkinfo 命令检查所有链路状态。若出现 Down 端口,优先检查光模块是否插紧、线缆弯曲半径是否过小(DAC线缆弯曲半径应大于线径的5倍)。对于长距离光缆,还需检查光口清洁度,使用光纤显微镜检测端面污染。

案例复盘:某AI集群的拓扑选型与排障

某互联网公司部署512张A100 GPU集群,最初选用两层Fat-Tree(36端口HDR交换机),叶交换机36台,脊交换机18台。运行大模型训练任务时发现AllReduce通信耗时波动大,部分节点间延迟从2μs飙升至20μs。通过 ibdiagnet 诊断发现:

  • 脊交换机端口利用率不均,最高端口达95%,最低仅20%,ECMP哈希不均导致。
  • 部分DAC线缆长度超过5米,信号衰减触发FEC(前向纠错)重传。

优化措施:将ECMP哈希算法从L3/L4哈希改为自适应路由(AR),利用交换机实时拥塞信息动态选路;同时将超过5米的DAC线缆更换为AOC光缆。调整后,AllReduce时间稳定在基线水平,抖动降低80%。

常见误区:不要盲目追求“全光”布线。对于机柜内≤3米的连接,DAC铜缆成本低、功耗小(约0.1W vs 光模块1.5W),且故障率更低。只有跨机柜或跨列连接才建议使用AOC或光模块。另外,务必核对HCA与交换机的端口速率自适应能力,避免出现速率不匹配(如HDR交换机端口自动降速至EDR)导致性能减半。

复盘清单:硬件组网自检表

检查项 标准 工具/方法
HCA固件版本 与交换机固件兼容 mlxup / ibstat
线缆类型匹配 DAC≤3m,AOC≤100m iblinkinfo
拓扑收敛比 1:1无阻塞 ibdiagnet --check
子网管理器冗余 主备SM切换时间<1s opensm -p 主备

完成上述检查后,建议使用 ib_write_bw 和 ib_read_lat 进行基准测试,验证实际带宽与延迟是否达到线速。若带宽低于理论值90%,需进一步排查PCIe链路宽度、NUMA亲和性及中断绑定。