4. InfiniBand 拓扑结构设计

在 InfiniBand 网络中,拓扑结构决定了交换机之间如何互联、任意两个节点之间最多需要经过几跳、以及整网能提供多少对分带宽。对中小规模 HPC 集群(通常几十到几百个计算节点)而言,拓扑选型直接影响到作业通信效率、线缆与交换机成本,以及未来扩容的难易程度。本节围绕 Fat-Tree、Dragonfly+、Torus 三类主流拓扑,从带宽、网络直径、成本与可扩展性四个维度展开对比,并给出可落地的选型方法。

一、三个核心评价维度

在比较拓扑之前,先明确几个贯穿全节的指标定义,后续所有讨论都基于同一参照系。

  • 对分带宽(Bisection Bandwidth):把网络从中间切成两半时,跨越切面的链路总带宽。它决定了全网“最坏情况”下能承载的跨半区通信量,是衡量拓扑是否“无阻塞”的关键。
  • 网络直径(Diameter):任意两节点之间最短路径的最大跳数。跳数越多,单次消息的延迟越大,对延迟敏感的集合通信(如 Allreduce)影响明显。
  • 可扩展性:在保持对分带宽与直径不显著恶化的前提下,网络能扩展到多大端口规模,以及扩容时是否需要重构主干。

此外还要考虑成本,主要由交换机端口数、光模块/线缆数量、机柜与布线复杂度构成。下面用一张结构对比图直观呈现三种拓扑的连接形态差异。

三种 InfiniBand 拓扑连接形态对比 Fat-Tree(胖树) 多级、上行带宽逐层收敛 Spine 层(核心) Leaf 层(接入) 节点组 节点组 节点组 对分带宽:可做到 1:1 无阻塞 直径:2·log₂N(较小) 成本:交换机/线缆最多 扩展:加一层即可扩容 适合:中小规模、要求无阻塞 Dragonfly+(蜻蜓+) 组内全互联 + 组间全互联 组 A 组 B 组 C 组 D 对分带宽:组间链路为瓶颈 直径:约 3 跳(很小) 成本:线缆少、光模块省 适合:中大规模、延迟敏感 Torus(环面) 多维环 + 每维首尾相连 对分带宽:受维度与链路数限制 直径:随维度增长(中等) 成本:布线规整、线缆短 适合:规则应用、成本敏感

二、Fat-Tree:中小规模的无阻塞首选

Fat-Tree 采用多级交换结构,从下到上依次为 Leaf(接入)层和 Spine(核心)层。每个 Leaf 交换机下行连接计算节点,上行连接所有 Spine 交换机;每个 Spine 交换机再下行连接所有 Leaf。这种“上行链路数等于下行链路数”的设计,使任意 Leaf 之间都能获得与接入带宽相等的对分带宽,从而实现 1:1 无阻塞。

以常见的 2 级 Fat-Tree 为例:假设使用 36 端口 InfiniBand 交换机(如 HDR 200Gb/s),每个 Leaf 用 18 个下行端口接 18 个计算节点,剩余 18 个上行端口接 18 台 Spine。全网可接入 18×18=324 个节点,对分带宽为 18×200Gb/s=3.6Tb/s。网络直径仅为 3 跳(节点→Leaf→Spine→Leaf→节点),延迟可控。

Fat-Tree 的代价在于交换机与线缆数量。上述 324 节点网络需要 18 台 Leaf + 18 台 Spine = 36 台交换机,以及 18×18=324 条上行链路。若追求更大规模,可增加第三层(Core 层),但交换机和光模块成本会快速上升。因此 Fat-Tree 最适合几十到几百节点、对无阻塞和低延迟有明确要求的中小规模 HPC 集群。

三、Dragonfly+:用组间全互联换取低直径

Dragonfly+ 把网络划分为若干“组”,组内交换机全互联,组间也通过专门链路全互联。每个组内通常包含多台交换机,组内任意两台交换机之间最多 1 跳;跨组通信最多经过“源交换机→组间链路→目的交换机”约 3 跳。由于组间链路数量远少于 Fat-Tree 的上行链路,线缆和光模块用量显著降低。

Dragonfly+ 的瓶颈在组间链路。当大量节点同时跨组通信时,组间链路可能成为拥塞点,因此它通常采用自适应路由(Adaptive Routing)来均衡负载。对中小规模集群而言,如果节点数在 100~500 之间、且应用以近邻通信或中等规模集合通信为主,Dragonfly+ 能在较低成本下提供很小的网络直径。但若应用存在大量全局随机通信,组间链路压力会明显上升,需要谨慎评估。

四、Torus:规则布线、成本友好

Torus 将节点组织成多维网格,每一维的首尾相连形成环。常见的有 2D Torus 和 3D Torus。以 3D Torus 为例,节点排列为 X×Y×Z 的立方体,每个节点沿三个方向各连接两个邻居,共 6 条链路。它的布线非常规整,线缆长度短且可预测,适合机柜内或相邻机柜间部署。

Torus 的网络直径随维度增加而增大。例如 8×8×8=512 节点的 3D Torus,最远两节点需经过 4+4+4=12 跳。对延迟敏感的 Allreduce 等操作,跳数偏多会带来额外延迟。此外,Torus 的对分带宽受每维链路数限制,若链路带宽不足,容易出现热点。它更适合通信模式规则、以近邻交换为主、且对成本敏感的场景,例如某些 CFD、格点计算类应用。

五、选型决策表与实操建议

把上述对比整理为一张可直接对照的选型表,便于在项目初期快速定位。

维度 Fat-Tree Dragonfly+ Torus
对分带宽 可 1:1 无阻塞,最优 组间链路为瓶颈,需自适应路由 受维度与链路数限制,中等
网络直径 2·log₂N,较小 约 3 跳,最小 随维度增长,中等偏大
交换机/线缆成本 最高 较低 低,布线规整
可扩展性 加层扩容,较平滑 加组扩容,需规划组间链路 按维度扩展,规模受限
适用规模 几十~几百节点 100~500 节点 几十~几百节点
典型场景 无阻塞、低延迟要求高 延迟敏感、成本受限 规则通信、成本敏感

实际选型时,建议按以下顺序推进:

  1. 先估算节点规模与端口需求。统计计算节点数、存储节点数、管理节点数,并预留 20%~30% 扩容余量。例如 200 个计算节点 + 20 个存储节点,按 1:1 收敛考虑,至少需要 220 个接入端口。
  2. 判断应用通信模式。若以大规模 Allreduce、Alltoall 为主,优先 Fat-Tree;若以近邻交换、Stencil 计算为主,可考虑 Torus;若跨组通信比例中等且延迟敏感,可评估 Dragonfly+。
  3. 核算成本与布线。Fat-Tree 的交换机与光模块数量最多,Dragonfly+ 次之,Torus 最少。同时要评估机柜空间、供电与散热。
  4. 验证对分带宽是否满足最坏通信。用“最大跨半区流量 ÷ 对分带宽”估算拥塞程度,若比值接近 1,说明网络接近饱和,需增加上行链路或改用无阻塞结构。
对于 200 节点以内的中小规模 HPC 集群,若预算允许且应用对延迟和带宽敏感,2 级 Fat-Tree 是最稳妥的选择;若预算紧张且通信模式规则,可考虑 3D Torus;Dragonfly+ 更适合 200~500 节点、希望以较低成本获得低直径的场景。选型没有绝对最优,关键是让拓扑特性与应用通信模式匹配。

最后提醒一点:拓扑设计不是孤立环节。它需要与子网管理器(SM)的路由策略、自适应路由开关、以及 QoS 配置协同考虑。例如 Dragonfly+ 若未启用自适应路由,组间链路很容易成为拥塞点;Fat-Tree 若未正确配置 LID 分配,也可能出现路由次优。因此,在确定拓扑后,应同步规划 SM 路由算法与监控指标(如端口计数器、拥塞标记),确保设计意图在实际运行中得到体现。