网络拓扑:Fat-Tree、Torus、Dragonfly等常见拓扑结构

核心原理:拓扑决定通信的“地理”规则

在InfiniBand网络中,拓扑结构决定了交换机与交换机、交换机与计算节点之间的物理连接方式,进而决定了数据从源端到目的端需要经过多少跳(hop)、是否存在瓶颈链路、以及故障时如何绕行。与以太网常见的无结构树形或扁平大二层不同,InfiniBand为高性能计算(HPC)和人工智能(AI)集群设计了多种规则化拓扑,其中最具代表性的是Fat-Tree(胖树)、Torus(环面/网格)和Dragonfly(蜻蜓)。

理解拓扑的关键在于三个维度:对分带宽(bisection bandwidth)、端口利用率和可扩展性。Fat-Tree通过“越往上带宽越宽”的设计消除核心瓶颈;Torus通过多维环面连接降低长距离跳数;Dragonfly则通过分组全互联减少全局链路数量。三者本质是在成本、延迟、扩展规模之间做不同取舍。

核心概念速览:
  • 跳数(Hop):数据经过的交换机数量,直接影响延迟。
  • 对分带宽:将网络切成两半时,跨切面链路的总带宽,衡量网络拥塞上限。
  • 无阻塞(Non-blocking):任意节点间通信带宽等于端口带宽,不因竞争而下降。
  • 局部性(Locality):通信距离越近,延迟越低,拓扑设计需匹配通信模式。
三种典型InfiniBand拓扑对比 Fat-Tree(胖树) 核心交换机(带宽最宽) 汇聚交换机 汇聚交换机 边缘交换机 边缘交换机 边缘交换机 节点 节点 节点 ▲ 带宽向上收敛 (无阻塞需满足) Torus(2D环面) ← 环绕连接(wrap-around)→ Dragonfly(蜻蜓) 组A(全互联) 组B(全互联) 组间链路(少量) Dragonfly特点 交换机节点 组间长链路

方法流程:如何选择与部署拓扑

实际部署中,拓扑选择并非随意,而是遵循一套从需求到落地的决策流程。以下为典型方法:

  1. 确定规模与通信模式:统计计算节点数量、GPU/NIC数量,分析作业的通信特征(如All-to-All、Neighbor、Bisection等)。
  2. 计算端口预算:以Fat-Tree为例,若使用N个叶子交换机(每个有K个上行端口),则核心交换机数量需满足 核心数 = (叶子数 × 上行端口数) / 核心交换机端口数。
  3. 评估对分带宽需求:AI训练通常要求1:1无阻塞收敛比;传统HPC可接受2:1或4:1。
  4. 选择拓扑并规划布线:Fat-Tree适合中小规模(≤数千节点),Torus适合规则网格计算(如气象模拟),Dragonfly适合超大规模(≥数万节点)。
  5. 配置路由算法:InfiniBand子网管理器(OpenSM)需针对拓扑选择路由算法——Fat-Tree用updn(上行下行),Torus用dor(维度顺序路由),Dragonfly用adaptive routing。
# OpenSM路由算法配置示例(/etc/opensm/opensm.conf)
# Fat-Tree拓扑推荐
route_engine=3   # 3 = updn (up/down)
# Torus拓扑推荐
# route_engine=4  # 4 = dor (dimension order routing)
# Dragonfly拓扑推荐
# route_engine=6  # 6 = adaptive routing

案例/场景:三种拓扑的典型应用

拓扑 典型规模 代表场景 优势 劣势
Fat-Tree 数百~数千节点 中小型AI训练集群、企业HPC 无阻塞、易理解、故障隔离好 线缆数量多(O(N log N)),成本高
Torus 数千~数万节点 气象模拟、分子动力学(规则网格通信) 线缆少、局部通信延迟低 全局通信需多跳,对分带宽低
Dragonfly 数万~数十万节点 百亿亿次(Exascale)超算、大规模AI 组间链路少、扩展性极强 路由复杂,需自适应路由算法

以NVIDIA DGX H100集群为例,常见配置为Fat-Tree:每台DGX H100有8个400Gbps HDR InfiniBand端口,若搭建256节点集群,则需256个叶子交换机(每个提供32个下行端口),核心层需256 × 32 / 64 = 128个64端口核心交换机,实现无阻塞通信。

误区/复盘:常见拓扑选择与实施错误

常见误区:
  • 盲目追求“无阻塞”:并非所有应用都需要1:1对分带宽。若作业以局部通信为主(如邻域交换),Torus的性价比远高于Fat-Tree。
  • 忽略路由算法匹配:在Torus上使用默认的updn路由会导致严重拥塞,必须切换为DOR或自适应路由。
  • 布线错误导致逻辑拓扑失真:Fat-Tree要求严格按层级连接,若将叶子交换机直接互联,会破坏无阻塞特性。
  • 未考虑故障域:Dragonfly中单个组内交换机故障可能影响整个组的通信,需设计冗余链路。
复盘建议:在部署前使用ibdiagnet工具验证拓扑完整性,检查是否有非预期链路;使用ibnetdiscover导出实际拓扑图,与设计文档比对。若发现对分带宽不足,优先检查核心层交换机端口是否全部启用、是否存在单点链路。