InfiniBand网络架构:拓扑结构与层次模型
核心原理:从“总线共享”到“交换矩阵”的范式转变
传统以太网与PCIe总线采用共享介质或树形分层结构,数据在多个终端间竞争带宽,延迟随层级增加而显著上升。InfiniBand则彻底转向交换矩阵(Switched Fabric)架构——所有终端设备(HCA)通过链路直接连接到交换机端口,交换机之间再相互连接,形成一个任意两点间存在多条可达路径的网状网络。这种设计使带宽不再被共享,而是通过端到端流控与自适应路由实现并发传输。
理解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-Tree | Torus |
|---|---|---|
| 带宽收敛比 | 可设计为1:1无收敛 | 存在固有收敛(边缘带宽低于中心) |
| 延迟特性 | 固定跳数(2~3跳) | 跳数随距离增长 |
| 故障恢复 | 多路径冗余,需路由算法 | 局部绕行,需分布式路由 |
| 布线复杂度 | 高(需长距离光纤至中心) | 低(仅相邻连接) |
| 典型规模 | 数千节点 | 数万至数十万节点 |
| 代表应用 | 企业数据中心、HPC集群 | 超大规模科学计算 |
层次模型: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)策略,阻止跨子网的未授权访问。
案例场景: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的规则布线优势才显现。
误区与复盘:常见设计陷阱
Fat-Tree的“无阻塞”指任意端口间通信不受其它通信影响,但若Leaf上行链路数量不足(如仅连接一半Spine),则实际收敛比为1:2,性能下降。必须严格计算上行/下行端口比例。
IB子网必须至少运行一个SM(可在交换机或独立服务器上)。若SM故障,新加入的HCA无法获得LID,但已建立的连接不受影响。生产环境必须配置主备SM(如OpenSM的standalone模式)。
Torus若使用静态路由(如DOR),在链路故障时可能产生死锁。必须启用自适应路由(AR)功能(如Mellanox的先进动态路由),否则故障恢复时间可能超过秒级。
路由器转发延迟远高于交换机(通常多出数百纳秒),且需额外配置GID前缀。同一子网内不应部署路由器,仅用于跨子网或跨网段互联。
复盘清单:拓扑与层次设计检查表
| 检查项 | 判定标准 |
|---|---|
| Leaf上行带宽是否≥下行带宽 | 是 → 无收敛;否 → 记录收敛比 |
| SM是否冗余部署 | 至少2台,支持故障切换 |
| LID数量是否超过子网上限 | 超过则需划分子网并部署路由器 |
| Torus是否启用自适应路由 | 必须启用,否则存在死锁风险 |
| HCA的QP数量是否满足应用需求 | 每QP约消耗4KB内存,需预留 |
| 跨子网通信是否规划了GID前缀 | 需统一规划64位子网前缀 |
在实际部署中,拓扑与层次模型的选择必须结合应用特征:延迟敏感型(如分布式训练)优先Fat-Tree,规模优先型(如气象模拟)可考虑Torus。而无论哪种拓扑,HCA、交换机、路由器的层次职责必须清晰,避免将L2转发与L3路由混用,才能构建稳定高效的IB网络。