3、链路层基础概念:链路、端口、链路宽度与速率、链路状态与协商
核心原理:从物理连接到逻辑链路的抽象
InfiniBand 链路层的最基本任务是管理两个相邻端口之间的物理连接,并将其抽象为一条可承载数据包的逻辑链路。理解这一层的关键在于区分三个层次的概念:物理端口(Port)、物理链路(Physical Link)与逻辑链路状态(Link State)。端口是设备(HCA、交换机、路由器)上的物理收发器,每个端口拥有独立的链路状态机;链路则是由一对方向相反的差分信号对组成的物理介质;而链路状态是端口经过协商后形成的、能够收发数据包的稳定工作模式。
链路宽度(Width)与链路速率(Data Rate)共同决定了链路的原始带宽。宽度表示并行传输的通道数,速率表示每个通道的信号调制速率。两者并非独立选择,而是由端口能力、对端能力以及线缆/背板物理约束共同决定。协商过程遵循“取最小公分母”原则,确保两端在不支持最高能力时仍能降级建立链路。
关键公式:链路有效带宽 = 链路宽度 × 单通道速率 × 编码效率(如 64B/66B 编码为 0.9697)。例如:4X EDR 链路带宽 = 4 × 25.78125 Gb/s × 0.9697 ≈ 100 Gb/s。
方法流程:链路协商的完整状态机
InfiniBand 链路协商遵循 物理层初始化状态机,每个端口在复位后依次经历以下状态:
- Disabled(禁用):端口不发送任何信号,等待管理软件下发
PortEnable命令。 - LinkDown(链路关闭):端口开始发送训练信号(TS1/TS2 序列),检测对端是否存在。此阶段主要完成信号检测与时钟恢复。
- Init(初始化):双方交换能力声明,包括支持的宽度集合(如 1X、4X、12X)与速率集合(如 SDR、DDR、QDR)。协商算法选择双方都支持的最高宽度与速率组合。
- Arm(待命):完成链路参数锁定,进行最后的校验(如 CRC 校验训练序列)。
- Active(激活):链路完全就绪,可以开始传输数据包、流控与错误检测。
协商过程中,每个端口会发送包含其能力的 训练序列(Training Sequence),对端收到后比较双方能力,并回复确认。若两端能力交集为空(例如一端仅支持 1X SDR,另一端仅支持 4X EDR),则协商失败,链路停留在 LinkDown 状态并持续重试。
实操提示:使用 ibstat 命令可查看当前链路状态。输出中 State: Active 表示协商成功,Physical state: LinkUp 表示物理信号正常。若状态为 Init 或 Arm 长时间不变化,通常表示宽度或速率协商不一致。
案例场景:4X EDR 链路的协商过程
假设一台 HCA 端口支持 1X/4X 宽度与 SDR~EDR 速率,连接一台交换机端口仅支持 4X/12X 宽度与 QDR/FDR/EDR 速率。协商过程如下:
| 阶段 | HCA 发送 | 交换机发送 | 协商结果 |
|---|---|---|---|
| 宽度协商 | 支持 {1X, 4X} | 支持 {4X, 12X} | 取交集 → 4X |
| 速率协商 | 支持 {SDR, DDR, QDR, FDR, EDR} | 支持 {QDR, FDR, EDR} | 取最高共同速率 → EDR |
| 最终链路 | 4X EDR,单通道 25.78125 Gb/s,总带宽 100 Gb/s | Active | |
若交换机仅支持到 FDR,则协商结果自动降级为 4X FDR(56 Gb/s),不会导致链路中断。这种降级机制保证了不同代际设备间的互操作性。
误区与复盘:常见链路协商故障
误区 1:认为链路速率越高越好,忽略线缆质量。EDR 及以上速率对信号完整性要求极高,劣质铜缆或过长链路会导致协商成功后频繁误码,触发链路重启。
误区 2:混淆“链路宽度”与“端口数”。4X 链路是同一端口内的 4 个物理通道,不是 4 个独立端口。在 ibswitches 输出中看到的 36 端口交换机,每个端口可能是 4X 或 12X 宽度。
误区 3:忽略 PAM4 调制带来的速率跃迁。HDR 采用 PAM4(每符号 2 bit),而 EDR 及之前均为 NRZ。因此 HDR 的 53.125 Gb/s 并非简单的 NRZ 翻倍,其信噪比预算更紧张,对连接器要求更高。
复盘建议:当链路无法进入 Active 状态时,按以下顺序排查:
- 检查物理连接:线缆是否插紧、光模块是否兼容(
ibportstate -l查看端口日志)。 - 确认两端端口能力:使用
ibv_devinfo查看 HCA 支持的宽度与速率。 - 查看协商失败原因:
dmesg | grep ib或iblinkinfo会提示是宽度不匹配还是速率不匹配。 - 尝试手动降级:通过
ibportstate -s强制指定宽度或速率,验证是否为自动协商逻辑问题。
链路层协商是 InfiniBand 可靠性的第一道防线,理解其状态机与参数选择逻辑,能帮助工程师快速定位物理层故障,避免误判为上层协议问题。