3. InfiniBand网络架构:拓扑结构与核心组件

3.1 为什么传统以太网拓扑不适合高性能计算

在进入InfiniBand拓扑细节之前,有必要先理解一个关键问题:为什么不能直接沿用以太网中常见的树形或三层汇聚拓扑?根本原因在于阻塞比(Blocking Ratio)与等分带宽(Bisection Bandwidth)的差异。传统以太网为了成本考虑,通常在上行链路采用收敛比(Oversubscription)3:1甚至5:1,这意味着多个接入交换机共享更少的上行带宽,当多个节点同时通信时,网络核心成为瓶颈。

而InfiniBand面向的是GPU集群、分布式存储和HPC应用,这类负载的特点是全对全通信(All-to-All)模式——例如MPI集体通信中的Allreduce操作,每个节点都需要与其他所有节点交换数据。如果网络中存在收敛点,性能将急剧下降。因此,InfiniBand网络设计的第一原则是:尽可能提供无阻塞或低阻塞的转发路径,让任意两个端口之间都能以线速通信。

关键概念:无阻塞网络(Non-Blocking Network)指任意端到端路径的带宽不低于单端口带宽。实际部署中,Fat-Tree拓扑通过足够多的上行链路实现无阻塞,而Dragonfly拓扑则通过智能路由在全局范围内近似无阻塞。

3.2 Fat-Tree拓扑:最广泛使用的无阻塞结构

Fat-Tree(胖树)是当前InfiniBand部署中最常见的拓扑,尤其适用于中小规模集群(数百至数千节点)。它的核心思想是:越靠近网络核心,链路数量越多、带宽越宽,从而消除上行带宽收敛。

一个典型的两层级Fat-Tree(也称为Leaf-Spine)结构如下:

  • Leaf层(叶子交换机):向下连接计算节点(HCA端口),向上连接Spine交换机。每个Leaf交换机通常有N个下行端口和N个上行端口(对等配置)。
  • Spine层(脊交换机):只负责转发,不直接连接计算节点。Spine交换机之间不互连,所有跨Leaf的流量必须经过Spine。
  • 链路带宽:所有链路均为相同速率(如EDR 100Gb/s或HDR 200Gb/s),通过增加并行链路数实现带宽扩展。

对于更大规模集群,可采用三层Fat-Tree(Core-Aggregation-Edge),但原理相同:每一层上行链路总数等于或大于下行链路总数,保证任意Leaf端口到另一Leaf端口的路径带宽等于端口速率。

设计要点:Fat-Tree的扩展性受限于交换机端口数。若使用36端口交换机(如Mellanox SB7800),两层结构最多支持 18×18=324 个计算节点(每个Leaf连接18个节点,共18个Leaf)。若需更大规模,必须升级到三层结构或改用Dragonfly。
两层Fat-Tree拓扑(Leaf-Spine) Spine层(脊交换机) Spine 1 Spine 2 Spine 3 Leaf层(叶子交换机) Leaf 1 Leaf 2 Leaf 3 计算节点(HCA) 节点1 节点2 节点3 节点4 节点5 节点6 节点7 节点8 节点9 上行链路:N条 下行链路:N条 计算节点:N个 上行带宽 = 下行带宽 → 无阻塞

3.3 Dragonfly拓扑:面向超大规模集群的层级设计

当集群规模超过数千节点时,Fat-Tree需要大量交换机和高层线缆,成本急剧上升。Dragonfly(蜻蜓)拓扑通过减少网络直径来降低成本和延迟,其设计哲学是:利用高基数路由器(High-radix Switch)在局部提供高带宽,组间用少量长距离链路互连。

Dragonfly拓扑分为三个层级:

  1. 组(Group):一组交换机内部全互连(或近似全互连),组内任意两个交换机之间距离为1跳。每个组相当于一个“超级交换机”,对外提供大量端口。
  2. 全局连接:每个组通过少量全局端口(Global Ports)与其他组相连,形成全互连或近全互连的组间网络。
  3. 计算节点:连接在组内交换机上,访问其他组节点时最多经过3跳(源节点→组内交换机→目标组交换机→目标节点)。

Dragonfly的关键优势在于网络直径小(最大跳数仅为3),延迟远低于Fat-Tree(后者在大规模时可能需要5~7跳)。但代价是路由算法复杂,需要自适应路由(Adaptive Routing)来避免局部拥塞,且对交换机端口数要求较高。

对比维度 Fat-Tree Dragonfly
典型规模 数百~数千节点 数千~数万节点
最大跳数 2层:3跳;3层:5跳 3跳(固定)
线缆成本 较高(大量长距离上行线缆) 较低(组内短距为主)
路由复杂度 简单(确定性路由) 复杂(需自适应路由)
容错能力 多路径冗余,容错好 依赖路由算法重规划
适用场景 通用HPC、GPU集群 超大规模HPC(如Frontier)

3.4 核心组件:HCA、交换机与线缆

3.4.1 HCA(Host Channel Adapter)

HCA是计算节点接入InfiniBand网络的接口卡,相当于以太网中的NIC(网卡),但功能更强大。HCA不仅负责数据的发送与接收,还实现了完整的RDMA(远程直接内存访问)引擎,允许应用程序绕过CPU和操作系统内核,直接从用户态内存读写远端节点内存。

选择HCA时需要关注以下参数:

  • 端口速率与数量:常见规格有单端口HDR100(100Gb/s)、单端口HDR200(200Gb/s)、双端口HDR200等。GPU集群通常选择双端口HCA以支持GPU Direct RDMA。
  • PCIe接口:HDR200 HCA需要PCIe 4.0 x16接口才能提供足够的带宽(理论约64GB/s双向)。若服务器仅支持PCIe 3.0,则实际吞吐会受限。
  • 协议卸载能力:支持RDMA、RoCE(可选)、MPI卸载等特性。
常见误区:不要只看端口速率而忽略PCIe代际。例如,将HDR200 HCA插在PCIe 3.0 x16插槽上,实际带宽会被限制在约32GB/s(PCIe 3.0 x16单向),无法发挥HDR200的全部性能。部署前务必核对服务器PCIe规格。

3.4.2 InfiniBand交换机

InfiniBand交换机与以太网交换机有本质区别:它们通常是无阻塞设计,即所有端口同时以线速转发。交换机内部采用Crossbar或Clos架构,并集成了子网管理器(Subnet Manager, SM)的代理功能。

关键规格包括:

  • 端口数与速率:常见有36端口EDR(100Gb/s)、40端口HDR(200Gb/s)、64端口NDR(400Gb/s)等。
  • 管理方式:支持带内管理(通过InfiniBand网络本身)和带外管理(以太网管理口)。
  • 路由与拥塞控制:支持自适应路由(AR)、拥塞控制(CC)等高级特性,对Dragonfly拓扑尤为重要。

3.4.3 线缆类型

InfiniBand线缆分为铜缆(DAC/AEC)和光缆(AOC/可插拔光模块)两大类:

类型 最大长度 功耗 成本 适用场景
无源铜缆(DAC) ≤3米 极低(无源) 最低 机柜内Leaf到服务器
有源铜缆(AEC) ≤7米 较低 中等 相邻机柜间
有源光缆(AOC) ≤100米 中等 较高 跨机柜、跨列
可插拔光模块+光纤 ≤10公里 较高 最高 跨机房、跨建筑
选型建议:机柜内(Leaf到服务器)优先使用DAC铜缆,成本低、功耗小、故障率低。跨机柜或跨列使用AOC光缆。只有在距离超过100米时才考虑可插拔光模块方案。不要为了“预留余量”而全部使用光缆,这会显著增加功耗和成本。

3.5 实际部署案例:GPU集群拓扑设计

以一个典型的4节点GPU服务器集群为例(每台服务器8块GPU,共32块GPU),推荐采用以下拓扑:

拓扑结构:两层Fat-Tree(Leaf-Spine)
交换机:2台 40端口 HDR 200Gb/s Spine交换机
        4台 40端口 HDR 200Gb/s Leaf交换机
HCA:每台服务器2块双端口HDR200 HCA(共8个端口)
线缆:Leaf到服务器:DAC铜缆(≤3米)
      Leaf到Spine:AOC光缆(≤30米)

连接关系:
- 每台Leaf交换机连接2台服务器(每台服务器2个HCA端口分别连接到不同Leaf)
- 每台Leaf交换机上行20条链路到Spine(每台Spine连接10条)
- 总计算端口:4 Leaf × 20下行 = 80端口(实际使用64端口,冗余16端口)

该设计实现了无阻塞:任意服务器到另一台服务器的通信路径带宽等于HCA端口速率(200Gb/s)。同时,每台服务器连接2个不同的Leaf交换机,实现了路径冗余——即使某个Leaf交换机故障,服务器仍可通过另一条路径通信。

3.6 常见误区与复盘

误区1:盲目追求“越大越好”的拓扑
有些团队一开始就设计三层Fat-Tree或Dragonfly,即使集群只有几十个节点。实际上,两层Fat-Tree在数百节点内完全够用,且更易维护。拓扑复杂度应与集群规模匹配。
误区2:忽略子网管理器(SM)的冗余部署
InfiniBand网络必须依赖SM来发现拓扑、计算路由并下发转发表。如果只运行一个SM实例,SM故障将导致整个网络瘫痪。生产环境至少部署2个SM(主备模式),且SM应运行在独立的服务器上,而非计算节点内。
误区3:线缆长度预留不足
在机柜部署时,DAC线缆的弯曲半径和长度限制容易被忽视。例如,从服务器顶部端口到Leaf交换机底部端口,实际路径可能超过3米。建议在规划时预留20%的线缆长度余量,并提前测量实际走线路径。
复盘要点:拓扑选型的本质是成本-性能-可维护性的三角权衡。Fat-Tree适合绝大多数场景,Dragonfly是超大规模集群的进阶选择。无论选择哪种拓扑,都必须配套冗余SM、合理的线缆选型和完整的链路验证(如使用ibdiagnet工具检查拓扑连通性)。