InfiniBand网络架构:拓扑结构与层次模型

核心原理:从“总线共享”到“交换矩阵”的范式转变

传统以太网与PCIe总线采用共享介质或树形分层结构,数据在多个终端间竞争带宽,延迟随层级增加而显著上升。InfiniBand则彻底转向交换矩阵(Switched Fabric)架构——所有终端设备(HCA)通过链路直接连接到交换机端口,交换机之间再相互连接,形成一个任意两点间存在多条可达路径的网状网络。这种设计使带宽不再被共享,而是通过端到端流控与自适应路由实现并发传输。

理解IB网络架构的关键在于区分两个维度:物理拓扑(设备如何连线)与逻辑层次(设备在协议栈中的角色)。物理拓扑决定了网络的扩展能力与容错上限,而逻辑层次则定义了报文从应用进程到远端内存的穿越路径。两者共同决定了集群的聚合带宽、故障收敛时间与可运维性。

核心要点:IB网络不是“更大的交换机”,而是一个多路径并行转发的子系统。拓扑结构决定了“能走几条路”,层次模型决定了“每条路如何被寻址与转发”。

拓扑结构:Fat-Tree与Torus的设计权衡

IB规范本身不限定拓扑,但实际部署中主要采用两类拓扑:Fat-Tree(胖树)与Torus(环面/网格)。两者在带宽利用率、成本、故障域与布线复杂度上差异显著。

1. Fat-Tree(Clos网络)

Fat-Tree是一种多级无阻塞交换网络,其核心思想是越靠近根部的链路越“粗”(通过并行链路实现)。以最常用的两层级Fat-Tree为例:

  • Leaf层(边缘交换机):直接连接服务器HCA,通常为36端口QSFP交换机(如Mellanox SB7800),下行连接18台服务器,上行连接18条链路至Spine层。
  • Spine层(核心交换机):不连接任何服务器,仅用于汇聚Leaf的上行流量。Spine交换机数量决定上行带宽总量。
  • 无阻塞条件:Leaf的上行总带宽 ≥ 下行总带宽。例如,36端口Leaf若下行18口(每口100Gb/s),则上行需至少18×100Gb/s,即需要18条上行链路分别连接至18台不同的Spine交换机。

Fat-Tree的数学关系可表示为:若Leaf交换机端口数为P,则最大支持服务器数 = (P/2)²,所需Spine交换机数 = P/2。这种结构保证任意Leaf到Leaf之间经过Spine的路径带宽等于直连带宽,实现全带宽无收敛。

2. Torus(环面/网格)

Torus将交换机与计算节点排列成多维网格,每个节点仅与相邻节点连接,并在维度边界处回环。典型如2D Torus(二维环面):每个交换机连接4个方向(东、西、南、北)的邻居,加上本地服务器端口。3D Torus则增加上下维度,每个交换机需6个邻居端口。

  • 优点:布线规则、无中心瓶颈、扩展成本低(每增加一个节点仅需增加少量链路),适合超大规模系统(如日本“京”超级计算机采用6D Torus)。
  • 缺点:任意两点间平均跳数随规模增长,延迟高于Fat-Tree;且需要自适应路由算法避免死锁,对拥塞控制要求极高。
对比维度Fat-TreeTorus
带宽收敛比可设计为1:1无收敛存在固有收敛(边缘带宽低于中心)
延迟特性固定跳数(2~3跳)跳数随距离增长
故障恢复多路径冗余,需路由算法局部绕行,需分布式路由
布线复杂度高(需长距离光纤至中心)低(仅相邻连接)
典型规模数千节点数万至数十万节点
代表应用企业数据中心、HPC集群超大规模科学计算
Fat-Tree vs Torus 拓扑对比 Fat-Tree(两层级) Spine 1 Spine 2 Spine 3 Leaf A Leaf B Leaf C ▲ 上行带宽 = 下行带宽 → 无收敛 任意Leaf间路径带宽 = 端口带宽 最大服务器数 = (P/2)² Spine数 = P/2(P为Leaf端口数) 2D Torus(3×3 环面) (0,0) (1,0) (2,0) (0,1) (1,1) (2,1) (0,2) (1,2) (2,2) 回环 回环 ▲ 每节点仅连接4个邻居 平均跳数随√N增长 需自适应路由防死锁 布线成本低,适合超大规模 Fat-Tree:低延迟、高成本、无收敛 | Torus:高扩展、低成本、延迟随距离增加

层次模型:HCA、交换机与路由器的职责边界

IB网络的逻辑层次由三类设备构成,它们分别对应OSI模型的不同层级,但又有IB特有的寻址机制:

1. HCA(Host Channel Adapter,主机通道适配器)

HCA是服务器接入IB网络的端点设备,相当于以太网中的NIC。它负责:

  • 协议卸载:将RDMA(远程直接内存访问)、可靠传输、拥塞控制等复杂逻辑从CPU卸载到硬件。
  • 队列对(QP)管理:每个HCA支持数千个QP,每个QP由LID(本地标识符)+ QP号唯一标识。
  • 内存注册:将用户态内存区域注册到HCA,使网卡可直接读写该内存(零拷贝)。

HCA在子网内通过LID(16位)寻址,LID由子网管理器(SM)动态分配。每个HCA端口至少有一个LID,支持多个LID以实现多路径。

2. IB交换机(Switch)

交换机是IB子网的核心转发设备,工作在链路层(L2)。其关键特性:

  • 基于LID转发:交换机维护LID转发表(由SM计算并下发),不解析IP地址。
  • 流控与拥塞控制:采用基于信用的流控(Credit-Based Flow Control),每个VL(虚拟通道)独立缓冲。
  • 多路径支持:交换机可配置多个等价路径(通过SL或GRH实现),实现负载均衡。

交换机不修改报文内容,仅根据LID查找输出端口。子网内所有交换机由子网管理器(SM)统一管理,SM负责发现拓扑、计算路由表、分配LID。

3. IB路由器(Router)

路由器用于连接多个IB子网或IB与其它网络(如以太网)。它工作在网络层(L3),基于GID(全局标识符,128位)转发。GID由子网前缀(64位)+ EUI-64接口标识符(64位)组成,类似于IPv6地址结构。

路由器的主要功能:

  • 跨子网通信:当两个IB子网的LID空间不重叠时,必须通过路由器交换数据。
  • 协议转换:IB路由器可封装IB报文到其它网络(如RoCEv2需要IP路由),但纯IB路由器仅做GID到LID的映射。
  • 分区隔离:路由器可强制实施分区(Partition)策略,阻止跨子网的未授权访问。
层次模型速记:HCA是“端”,交换机是“路”,路由器是“桥”。HCA用LID在子网内通信,跨子网必须通过路由器用GID寻址。一个IB子网最多支持48,000个LID(实际可用约46,000),超过则需划分子网。

案例场景:2000节点HPC集群的拓扑选型

假设需要构建一个包含2000个计算节点、每个节点1张100Gb/s HCA的集群,要求无阻塞通信且延迟尽可能低。

方案A:两层Fat-Tree

Leaf交换机:36端口QSFP(下行18口接服务器,上行18口接Spine)
所需Leaf数 = 2000 / 18 ≈ 112台
Spine交换机数 = 18台(每台需112个下行端口,可用8台36端口Spine分组)
实际配置:112台Leaf + 18台Spine,总端口数 = 112×36 = 4032
聚合带宽 = 2000 × 100Gb/s = 200Tb/s(无收敛)

方案B:2D Torus(20×100)

每节点需4个邻居端口 + 1个本地端口 = 5端口交换机
总交换机数 = 2000台(每节点集成交换机)
最大跳数 = 20/2 + 100/2 = 60跳(最坏情况)
平均跳数 ≈ 30跳,延迟约为Fat-Tree的10倍

结论:对于2000节点规模,Fat-Tree在延迟和带宽上明显占优,但布线成本高(需约2000根长光纤)。若规模超过50000节点,Torus的规则布线优势才显现。

误区与复盘:常见设计陷阱

误区1:混淆“无阻塞”与“全带宽”
Fat-Tree的“无阻塞”指任意端口间通信不受其它通信影响,但若Leaf上行链路数量不足(如仅连接一半Spine),则实际收敛比为1:2,性能下降。必须严格计算上行/下行端口比例。
误区2:忽略子网管理器(SM)的冗余
IB子网必须至少运行一个SM(可在交换机或独立服务器上)。若SM故障,新加入的HCA无法获得LID,但已建立的连接不受影响。生产环境必须配置主备SM(如OpenSM的standalone模式)。
误区3:Torus中未启用自适应路由
Torus若使用静态路由(如DOR),在链路故障时可能产生死锁。必须启用自适应路由(AR)功能(如Mellanox的先进动态路由),否则故障恢复时间可能超过秒级。
误区4:将IB路由器当作L2交换机使用
路由器转发延迟远高于交换机(通常多出数百纳秒),且需额外配置GID前缀。同一子网内不应部署路由器,仅用于跨子网或跨网段互联。

复盘清单:拓扑与层次设计检查表

检查项判定标准
Leaf上行带宽是否≥下行带宽是 → 无收敛;否 → 记录收敛比
SM是否冗余部署至少2台,支持故障切换
LID数量是否超过子网上限超过则需划分子网并部署路由器
Torus是否启用自适应路由必须启用,否则存在死锁风险
HCA的QP数量是否满足应用需求每QP约消耗4KB内存,需预留
跨子网通信是否规划了GID前缀需统一规划64位子网前缀

在实际部署中,拓扑与层次模型的选择必须结合应用特征:延迟敏感型(如分布式训练)优先Fat-Tree,规模优先型(如气象模拟)可考虑Torus。而无论哪种拓扑,HCA、交换机、路由器的层次职责必须清晰,避免将L2转发与L3路由混用,才能构建稳定高效的IB网络。