2、InfiniBand基础:IB架构、子网管理器、端口状态、链路速率与宽度
2.1 IB网络的核心架构:从HCA到子网
InfiniBand(IB)是一种面向高性能计算(HPC)和AI集群的互联技术,其设计目标是在低延迟、高带宽和高可靠性之间取得平衡。理解IB架构,是排查多路径异常的前提。IB网络采用通道适配器(CA)作为端点设备,分为两种:主机通道适配器(HCA),用于服务器侧;目标通道适配器(TCA),用于存储侧。每个CA内部拥有多个端口(Port),端口通过链路连接至交换机(Switch),交换机之间再通过链路互连,形成扁平或胖树拓扑。
IB网络中最关键的逻辑单元是子网(Subnet)。一个子网由一台或多台交换机、若干CA及其间的物理链路组成。每个子网内必须运行一个子网管理器(Subnet Manager, SM),负责网络的初始化、地址分配、路由计算和状态监控。SM通常运行在某个交换机或专用管理节点上,但主SM(Master SM)只有一个,其余为备用SM(Standby SM)。当主SM失效时,备用SM通过选举机制接管,这一过程称为SM Failover。
为了直观展示IB子网的基本组成与SM的角色,下图给出了一个包含双HCA、双交换机的典型子网结构:
上图展示了双HCA、双交换机的冗余架构。服务器A的HCA Port 1连接交换机1,Port 2连接交换机2,形成两条独立路径。交换机1作为主SM,交换机2作为备用SM。当某条链路或某个交换机故障时,多路径机制可以自动切换流量。
2.2 子网管理器(SM)与端口状态机
SM是IB子网的“大脑”,它通过子网管理接口(SMI)与各节点通信,执行以下关键任务:
- 发现(Discovery):扫描子网内所有CA、交换机及链路,建立拓扑数据库。
- 地址分配:为每个端口分配唯一的本地标识符(LID),LID是子网内路由的依据。
- 路由计算:基于拓扑生成线性转发表(LFT),决定数据包从源端口到目的端口的路径。
- 状态监控:持续跟踪端口状态变化,当链路故障时触发重配置。
IB端口状态机是排查链路问题的核心。每个物理端口的状态由SM通过子网管理报文(SMP)控制,主要状态包括:
| 端口状态 | 含义 | 常见触发原因 |
|---|---|---|
| Down | 物理链路未建立或已被禁用 | 线缆松动、对端端口Down、SM未启用端口 |
| Init | 端口正在初始化,等待SM分配LID | SM正在启动或链路刚建立 |
| Armed | 端口已获得LID,但尚未完全就绪 | SM完成地址分配,等待链路层就绪 |
| Active | 端口完全正常,可收发数据 | 正常状态 |
在排查多路径异常时,首先应使用ibstat或ibstatus命令检查各端口状态。若端口长期处于Init或Armed状态,通常意味着SM未能正确配置该端口,或链路协商参数不一致。
2.3 链路速率与宽度:理解带宽瓶颈
IB链路的物理层能力由两个参数决定:速率(Rate)和宽度(Width)。速率指每条通道(Lane)的信号速率,宽度指链路使用的通道数量。常见的速率包括:
- SDR(Single Data Rate):2.5 Gb/s 每通道
- DDR(Double Data Rate):5 Gb/s 每通道
- QDR(Quad Data Rate):10 Gb/s 每通道
- FDR(Fourteen Data Rate):14.0625 Gb/s 每通道
- EDR(Enhanced Data Rate):25.78125 Gb/s 每通道
- HDR(High Data Rate):50 Gb/s 每通道
- NDR(Next Data Rate):100 Gb/s 每通道
宽度通常为1x、4x或12x。总带宽 = 速率 × 宽度 × 编码效率(通常为8/10或64/66编码)。例如,EDR 4x链路的总带宽为 25.78125 × 4 × (64/66) ≈ 100 Gb/s。实际有效数据速率约为 100 Gb/s。
在ibstat输出中,速率和宽度会明确显示,例如:
State: Active
Physical state: LinkUp
Rate: 100
Base lid: 0x2
LMC: 0
Link layer: InfiniBand
其中Rate: 100表示当前链路速率为100 Gb/s(即EDR 4x)。若显示Rate: 40,则可能是QDR 4x或EDR 1x,需结合宽度判断。
2.4 多路径与LMC机制
IB多路径的实现依赖于LMC(LID Mask Control)参数。LMC允许一个端口拥有多个LID,从而在路由表中形成多条等价路径。例如,设置LMC=1时,端口拥有2个LID(LID和LID+1),SM会为每个LID计算不同的路径。这样,当一条路径故障时,流量可自动切换到另一条路径。
然而,LMC机制也带来排查复杂性。若LMC配置不一致(例如两端端口LMC不同),可能导致路径计算错误或流量无法切换。此外,LMC值过高会消耗LID地址空间,并增加SM路由计算负担。
2.5 案例:链路速率降级引发的多路径切换异常
某集群中,服务器A与交换机1之间的链路因线缆老化,从EDR 4x(100 Gb/s)降级为EDR 2x(50 Gb/s)。虽然链路仍处于Active状态,但带宽减半。由于该链路仍可用,SM未触发路径切换,导致服务器A通过该链路传输时性能严重下降。
排查过程如下:
- 使用
ibstat检查服务器A的HCA端口,发现Rate: 50,而预期应为100。 - 检查交换机1对应端口,确认链路宽度为2x,而非4x。
- 检查线缆连接,发现一根通道松动,重新插拔后恢复4x。
- 使用
ibdiagnet验证全网链路速率一致性。
此案例说明,链路速率降级不会导致端口Down,但会引发性能问题。多路径机制不会自动切换,因为链路仍处于Active状态。因此,监控链路速率与宽度是日常运维的重要部分。
2.6 常见误区与复盘
误区1:认为端口Active即代表链路健康。实际上,Active状态仅表示链路层已建立,但速率可能已降级,或存在大量CRC错误。应结合ibstat中的Link layer和Physical state以及错误计数器综合判断。
误区2:忽略LMC配置一致性。在多路径环境中,两端端口的LMC必须匹配。若一端LMC=1,另一端LMC=0,SM可能无法建立对称的路径表,导致部分路径不可用。
复盘建议:每次链路变更(插拔线缆、更换交换机)后,应使用ibdiagnet -r生成路由报告,确认所有端口状态、速率、宽度和LMC配置符合预期。同时,定期检查SM日志,关注端口状态变化事件。