InfiniBand 专题【左扬精讲】—— InfiniBand 物理层:五层架构与数据包结构入门
InfiniBand 专题【左扬精讲】—— InfiniBand 物理层:五层架构与数据包结构入门
InfiniBand(简称 IB)是一种为 HPC 和 AI 训练集群设计的高速互连网络,相比传统以太网,它能提供 微秒级甚至亚微秒级 的端到端延迟。
本篇是 InfiniBand 架构的入门奠基篇,目标是建立完整的概念框架,为后续理解 RDMA 操作语义、拥塞控制算法打下基础。
本篇不涉及物理层电气特性(SerDes 速率/光模块型号)、QoS 信用计数器机制、子网初始化 FSM 状态机、RDMA verbs 源码分析。阅读本篇前,建议了解以太网 OSI 七层模型(至少知道物理层/链路层/网络层的概念)。
InfiniBand 五层架构
+------------------+
| 上层协议层 |
InfiniBand 物理层 HCA OFED GUID 五层架构 数据包结构 链路速率
学习重点提示
本文涵盖 InfiniBand 物理层的核心知识,内容深度依次递进。建议读者根据自身背景选择性深入:
- 必须掌握(面试/工程基准线):
- InfiniBand 五层架构:理解物理层/链路层/网络层/传输层/上层协议的各自职责,以及为什么 IB 采用分层设计(与以太网 OSI 模型对比,管理层是显式存在而非隐式淹没在 SNMP 里)。
- 数据包头部结构:LRH(链路层路由头)/ GRH(全局路由头)/ BTH(传输层头)三个头部的功能差异,以及"什么场景下哪个头会出现"——同子网通信只需 LRH+BTH,跨子网需要 LRH+GRH+BTH。
- HCA 基础:主机通道适配器是连接计算节点与 IB 网络的核心组件,GUID 分配规则(单端口卡 GUID 一致,多端口卡连续递增)。
- 链路速率体系:链路宽度(1x/4x/8x/12x)与速率分级(EDR/HDR/NDR/XDR)的关系,能计算实际带宽。
- 需要理解(深度优化/系统设计):
- 链路训练机制:物理链路建立过程(媒体类型检测/衰减检测)、状态轮询(Polling/Disabled/Link Up/LinkErrorRecovery)。
- 光纤 vs 铜缆选型:DAC(直接连接铜缆)和 AOC(有源光缆)的物理结构差异、传输距离限制、EMI 抗扰度对比。
- 误码率 BER:BER = 错误接收比特数 / 总接收比特数,理解信噪比、失真、抖动对信号完整性的影响。
- 了解即可(进阶专题,可后续深入):
- 物理层电气规范:SerDes 速率、编码方式、背板连接器热插拔特性。
- 符号编码与帧结构:起始定界符、数据符号、结束定界符的格式规范。
一、InfiniBand 五层架构总览
What — 五层架构是什么?
InfiniBand 采用分层设计,从下到上依次是:物理层(Physical)、链路层(Link)、网络层(Network)、传输层(Transport)、上层协议层(Upper Layer)。每一层都有明确的职责分工和标准化的协议头部。
InfiniBand 与 OSI 七层模型对比
+------------------------+------------------------+
| 上层协议层 | 应用层 / RDMA 操作 |
+------------------------+------------------------+
| 传输层 | 传输层 |
| (BTH - Base | (TCP/UDP) |
| Transport Header) | |
+------------------------+------------------------+
| 网络层 | 网络层 |
| (GRH - Global | (IP) |
| Routing Header) | |
+------------------------+------------------------+
| 链路层 | 数据链路层 |
| (LRH - Link | (Ethernet MAC) |
| Routing Header) | |
+------------------------+------------------------+
| 物理层 | 物理层 |
+------------------------+------------------------+
| 管理平面 | SNMP(隐式) |
+------------------------+------------------------+
关键差异:IB 的管理平面是显式存在的(子网管理器 SM),
而以太网的管理平面隐式淹没在 SNMP 里。
Why — 为什么需要分层设计?
问题一:为什么不能把所有功能塞进一层?
分层设计实现了关注点分离:物理层负责比特同步和信号传输,链路层负责本地帧的正确交付,网络层负责跨子网路由,传输层负责端到端的可靠传输。上层协议层则承载 RDMA 操作语义(如 Send/Recv、RDMA Read/Write)。
问题二:InfiniBand 和以太网的管理差异是什么?
以太网的管理平面是"隐式"的——交换机配置通过 SNMP 或 CLI 下发,但网络本身不依赖管理进程运行。而 InfiniBand 的管理平面是"显式"的:子网管理器 SM(Subnet Manager)是整个网络正常运行的必要条件。没有 SM,IB 网络寸步难行。
没有 SM 会发生什么?
-
- LID(本地标识)无法分配,设备之间无法互相寻址
- 路径信息无法编程,交换机不知道如何转发数据包
- 设备加入/离开网络时,拓扑变化无法被感知
每层都有对应的硬件设备和协议头部:
+----------+------------------+------------------+------------------+
| 层级 | 硬件 | 协议头部 | 职责 |
+----------+------------------+------------------+------------------+
| 物理层 | HCA、交换机端口 | 无 | 比特同步、符号编码 |
| 链路层 | 交换机 | LRH (12 字节) | 本地帧交付、VL |
| 网络层 | 路由器 | GRH (40 字节) | 跨子网路由 |
| 传输层 | HCA | BTH (12 字节) | 端到端传输、PSN |
| 上层协议 | 用户空间 | ETH / IETH | RDMA 操作语义 |
+----------+------------------+------------------+------------------+
理解这个对应关系后,你可以知道:当 ibtracert 追踪路径时,每一跳交换机处理的是 LRH;跨子网通信时,路由器会检查 GRH;端到端的可靠性由 BTH 中的 PSN(Packet Sequence Number)保证。
本节小结
-
- 五层架构:物理层 / 链路层 / 网络层 / 传输层 / 上层协议层,每层职责明确
- 关键差异:IB 的管理平面是显式的(SM),以太网是隐式的(SNMP)
- Why 核心:没有 SM,IB 网络无法运行;没有管理进程,以太网仍可通信
二、数据包头部结构:LRH / GRH / BTH
What — 三个头部各自的功能是什么?
- LRH(Link Routing Header):链路层路由头,12 字节,负责子网内的本地交付。关键字段包括 SL(Service Level)、DLID(Destination LID)、VL(Virtual Lane)。
- GRH(Global Routing Header):全局路由头,40 字节,用于跨子网通信。关键字段是 SGID(Source GID)和 DGID(Destination GID),GID 基于 IPv6 地址格式。
- BTH(Base Transport Header):传输层头,12 字节,负责端到端的传输控制。关键字段包括 PSN(Packet Sequence Number,用于可靠性)、Opcode(操作码,区分 Send/Recv/RDMA Read/RDMA Write)。
数据包封装顺序(从上到下,从外到内)
+------------------------------------------+
| 上层数据(Payload) |
+------------------------------------------+
| BTH(传输层头,12 字节) |
| PSN / Opcode / Dest QP / ... |
+------------------------------------------+
| ETH/IETH(扩展传输头,可选) |
+------------------------------------------+
| GRH(网络层头,40 字节,仅跨子网) |
| SGID(16B) / DGID(16B) / ... |
+------------------------------------------+
| LRH(链路层头,12 字节) |
| DLID / SL / VL / ... |
+------------------------------------------+
场景判断:
+-------------------------------+------------------------+
| 场景 | 头部组合 |
+-------------------------------+------------------------+
| 同子网通信(本地) | LRH + BTH + Payload |
| 跨子网通信(全局) | LRH + GRH + BTH + Payload |
+-------------------------------+------------------------+
Why — 为什么需要这些头部?
问题一:为什么同子网和跨子网需要不同的头部组合?
同子网通信时,交换机只需要根据 LID(Local Identifier) 就能完成转发,LID 是 16 位的本地标识,由子网管理器 SM 分配。跨子网通信时,数据包需要经过路由器,而路由器不认识 LID——它需要 GID(Global Identifier) 来进行路由决策。GID 是 128 位的全局标识,格式兼容 IPv6。
问题二:LRH 中的 VL(Virtual Lane)是什么?
VL 是虚拟通道,用于 QoS 质量服务。不同优先级的流量可以走不同的 VL,避免高优先级流量被低优先级流量阻塞。这与以太网的 PCP/DSCP 字段功能类似,但实现机制不同。
没有这些头部会发生什么?
- 没有 LRH:交换机无法知道数据包该从哪个端口发出,本地转发失败
- 没有 GRH:路由器无法判断数据包的源和目的地址,跨子网通信不可能
- 没有 BTH:端到端的可靠性无法保证,丢包无法检测和重传
理解每个头部的关键字段,可以帮助你后续排查网络问题:
LRH(链路层路由头,12 字节):
- DLID(16 bit):目的 LID,交换机据此转发
- SL(3 bit):Service Level,QoS 优先级
- VL(4 bit):Virtual Lane,虚拟通道号
- 长度字段(8 bit):整个数据包的长度
GRH(全局路由头,40 字节):
- SGID(128 bit):源 GID,基于 EUI-64 格式
- DGID(128 bit):目的 GID
- 版本号(4 bit):固定为 6
BTH(传输层头,12 字节):
- Opcode(8 bit):操作码,0x00=Send, 0x06=RDMA Read Request
- DestQP(24 bit):目的队列对编号
- PSN(24 bit):Packet Sequence Number,用于可靠传输
当你使用 ibtracert 追踪路径时,每个交换机打印的其实就是 LRH 中的 DLID。跨子网时,路由器会解析 GRH 中的 DGID。
本节小结
- LRH:子网内本地交付,依赖 SM 分配的 LID
- GRH:跨子网全局路由,基于 IPv6 格式的 GID
- BTH:端到端传输控制,PSN 保证可靠性
- 场景判断:同子网只需要 LRH+BTH,跨子网才需要 GRH
三、主机通道适配器 HCA
What — HCA 是什么?
主机通道适配器(Host Channel Adapter,简称 HCA)是连接计算节点与 InfiniBand 网络的硬件设备。它相当于以太网卡(NIC)的角色,但专门为 RDMA 设计,支持 CPU 卸载——将传输操作从 CPU 卸载到硬件,降低延迟并释放 CPU 资源。
HCA 在 InfiniBand 网络中的位置
+-----------------+
| 计算节点 |
| +-----------+ |
| | 应用 | |
| +-----------+ |
| | 用户空间 | |
| +-----------+ |
| | HCA | |
Why — 为什么 HCA 比普通以太网卡更适合 HPC/AI?
问题一:CPU 卸载解决了什么问题?
在传统的 TCP/IP 堆栈中,数据传输需要经过内核协议栈,多次内存拷贝和上下文切换,延迟高且占用大量 CPU 资源。HCA 通过 RDMA(Remote Direct Memory Access) 技术,允许应用直接读写远程内存,无需 CPU 介入,实现零拷贝和低延迟。
问题二:HCA 和 TCA 的区别是什么?
HCA 用于主机端(服务器),TCA(Target Channel Adapter)用于目标端(存储设备)。两者功能类似,但应用场景不同。
没有 HCA 会发生什么?
-
- 无法接入 InfiniBand 网络
- 无法使用 RDMA 功能,延迟会退化为传统 TCP/IP 水平
- 在大规模 GPU 集群中,GPU 间通信带宽成为瓶颈
每张 HCA 卡都有一个全局唯一标识符(GUID),由厂商烧录到硬件中,64 位长度。GUID 分配规则如下:
单端口 HCA:
- 系统镜像 GUID = 端口 GUID(两者相同)
- 示例:0x0002c90300002f7b
多端口 HCA:
- 端口 1 的 GUID = X
- 端口 2 的 GUID = X + 1
- 端口 N 的 GUID = X + (N - 1)
- 示例:端口 1 = 0x0002c90300002f79,端口 2 = 0x0002c90300002f7a
模块化交换机场景:
- 每个交换机模块有独立的节点 GUID
- 所有模块共享同一个系统镜像 GUID
- 示例:6 个模块的机箱有 7 个 GUID(1 个系统 + 6 个节点)
理解 GUID 分配规则,可以帮助你解读 ibhosts 命令的输出,识别多端口设备。
本节小结
-
- HCA 定义:连接计算节点与 IB 网络的硬件,等效于以太网卡但支持 RDMA
- 核心优势:CPU 卸载 + 低延迟 + 高带宽
- GUID 规则:单端口卡 GUID 一致,多端口卡连续递增
四、链路速率与物理连接器
What — 链路速率是如何计算的?
InfiniBand 的链路速率由两个因素决定:链路速度(每条通道的速率)和 链路宽度(通道数量)。公式为:链路速率 = 链路速度 x 链路宽度。
链路宽度类型(每条通道 = 4 线串行差分)
+----------+------------------------+
| 宽度 | 通道数 |
+----------+------------------------+
| 1x | 1 条通道 (4 线) |
| 4x | 4 条通道 (16 线) |
| 8x | 8 条通道 (32 线) |
| 12x | 12 条通道 (48 线) |
+----------+------------------------+
速率分级(单通道速度)
+----------+---------------+----------------+
| 代际 | 单通道速度 | 4x 带宽 |
+----------+---------------+----------------+
| EDR | 25 Gbps | 100 Gbps |
| HDR | 50 Gbps | 200 Gbps |
| NDR | 100 Gbps | 400 Gbps |
| XDR | 200 Gbps | 800 Gbps |
+----------+---------------+----------------+
Why — 为什么需要多种链路宽度?
问题一:4x 比 1x 有什么优势?
更宽的链路提供更高的聚合带宽,但成本也更高。在实际部署中,交换机间的骨干链路通常使用 4x 或更宽,而服务器到交换机的接入链路可以使用 1x 以降低成本。
问题二:EDR/HDR/NDR/XDR 有什么区别?
这是 InfiniBand 的几代速率标准,反映了物理层技术的进步。每一代都在单通道速度和编码效率上有所提升。
没有速率标准会发生什么?
-
- 不同厂商的设备无法互联互通
- 网络升级时需要整体替换,无法平滑演进
- 性能评估缺乏统一基准
InfiniBand 支持多种物理连接器,根据传输距离和成本选择:
铜缆(DAC - Direct Attach Copper)
- 结构:每条通道 2 根 TX + 2 根 RX,共 16 根导线(4x 配置)
- 优点:成本低,功耗低
- 缺点:传输距离短(EDR ≤ 5m,HDR ≤ 2m,NDR ≤ 4m)
- 典型场景:机柜内服务器到交换机
光纤(AOC - Active Optical Cable)
- 结构:每条通道 1 根接收光纤 + 1 根发送光纤,共 8 根(4x 配置)
- 优点:传输距离长(可达 100-300m),无 EMI 干扰
- 缺点:成本高于铜缆
- 典型场景:跨机柜、跨行连接
背板连接器
- 用于刀片服务器内部
- 支持热插拔
选择连接器时,需要综合考虑:传输距离需求、网络解决方案成本、部署简易性。
本节小结
-
- 链路宽度:1x/4x/8x/12x,宽度越大带宽越高
- 速率分级:EDR(25G) / HDR(50G) / NDR(100G) / XDR(200G)
- 连接器选择:短距离用 DAC,长距离用 AOC
五、光纤 vs 铜缆选型指南
What — 铜缆和光纤的核心差异是什么?
-
- 铜缆(DAC)使用电信号传输,导体是铜线
- 光纤(AOC)使用光信号传输,导体是石英玻璃
两者在传输距离、带宽、抗干扰性、成本等方面有显著差异。
| 对比维度 | 铜缆(DAC) | 光纤(AOC) |
|---|---|---|
| 传输距离 | EDR ≤ 5m,HDR ≤ 2m,NDR ≤ 4m | 可达 100-300m |
| 带宽 | 相对较低 | 光纤带宽是铜缆的 1000 倍以上 |
| 直径 | 光纤的 4 倍 | 约等于人类头发粗细 |
| EMI 抗扰 | 易受电磁干扰 | 完全免疫 EMI/RFI |
| 安全 | 传输电力,可能导致短路 | 不导电,无射频泄漏 |
| 成本 | 较低 | 较高(需要激光系统) |
| 典型场景 | 机柜内 | 跨机柜、跨行 |
Why — 为什么光纤在大规模集群中更受欢迎?
问题一:AI 训练集群为什么需要光纤?
在大规模 AI/HPC 集群中,服务器之间的互联距离往往超过铜缆的限制。InfiniBand 支持高达 400Gbps(NDR 4x)的聚合带宽,跨机柜、跨行部署时必须使用 AOC 光纤,否则距离限制会导致无法组网。DAC 铜缆仅适用于机柜内的服务器到交换机短距离连接。
问题二:铜缆的 EMI 问题有多严重?
在数据中心环境中,大量铜缆并行会产生电磁场相互干扰。此外,铜缆可能吸收附近高功率发射器的能量,导致数据干扰甚至过热。
没有正确选型会发生什么?
-
- 铜缆用于长距离:信号衰减严重,BER 飙升
- 密集部署铜缆:EMI 干扰导致间歇性通信故障
- 光纤用于短距离:成本浪费,不必要的支出
选型决策树
-
- 传输距离 ≤ 5m? → 优先考虑 DAC(成本低、功耗低)
- 传输距离 > 5m? → 必须使用 AOC
- 高密度部署? → 优先考虑光纤(节省空间、改善气流)
- 预算敏感? → 评估综合成本(线缆成本 + 维护成本 + 故障成本)
本节小结
-
- 距离决定:短距离用 DAC,长距离用 AOC
- 密度优先:高密度场景优先选光纤
- 综合评估:考虑距离、成本、维护、可靠性
六、物理层职责:链路管理与信号完整性
What — 物理层的四大职责是什么?
-
- 建立物理链路:链路训练检测媒体类型、衰减和速度
- 监控链路状态:定期轮询检测链路是否正常
- 通知链路层:将链路状态变化上报给上层
- 保证信号完整性:通过 BER(误码率)监控质量
链路状态机(物理层到链路层的状态转换)
+---------------------+
| Polling |
Why — 为什么需要链路训练?
问题一:链路训练解决了什么问题?
当主机适配器和交换机端口之间连接物理电缆时,两端需要协商确定:媒体类型(光纤/铜缆)、衰减程度、物理通道速度。这些参数直接影响信号完整性。链路训练通过握手过程完成协商,确保双方工作在最优参数下。
问题二:BER(Bit Error Rate)为什么重要?
BER 是衡量数字传输系统质量的关键指标。InfiniBand 的 BER 目标值非常低(约 10^-12),因为任何误码都会导致 RDMA 操作失败。
BER 计算公式:BER = 错误接收比特数 / 总接收比特数。
没有链路监控会发生什么?
-
- 链路故障无法被及时发现,导致通信超时
- 误码累积导致数据损坏,RDMA 操作返回错误
- 网络拥塞无法被感知,QoS 机制失效
ibstat 是 OFED 工具集中最常用的诊断命令,可以查看 HCA 状态和端口信息:
# 查看 HCA 状态和端口信息
$ ibstat
# 示例输出解读
CA type: MT2893 Family
Number of ports: 2
Port 1:
State: Active # 链路状态
Physical state: LinkUp # 物理状态
Rate: 100 # 实际速率 (Gbps)
Width: 4x # 链路宽度
Base lid: 1 # 分配的 LID
LMC: 0
SM lid: 1 # 子网管理器 SM 的 LID
Capmask: 0x20000000
GID[ 0]: fe80:0000:0000:0000:0002:c903:0000:2f79 # 本地 GID
关键字段:State=Active 表示链路正常,Physical state=LinkUp 表示物理连接就绪。如果 State=Polling,说明电缆未连接;如果 State=Disabled,说明端口被手动禁用。
本节小结
-
- 链路训练:协商媒体类型、衰减、速度
- 状态监控:Polling / Disabled / LinkUp / LinkErrorRecovery
- BER 公式:错误比特 / 总比特
- 诊断工具:ibstat 查看链路状态
七、GUID 体系:三层地址详解
What — 为什么需要三层地址?
InfiniBand 采用三层地址体系:GUID / LID / GID,每层地址有不同的作用范围和用途。这种设计是为了在保持唯一性的同时,实现高效的本地和全局路由。
三层地址体系对比
+----------+--------+------------------+------------------------+
| 地址类型 | 长度 | 分配方式 | 用途 |
+----------+--------+------------------+------------------------+
| GUID | 64 bit | 厂商烧录(固定) | 设备唯一标识(不可路由)|
| LID | 16 bit | SM 动态分配 | 子网内本地路由 |
| GID |128 bit | SM 基于 GUID 生成 | 跨子网全局路由(IPv6) |
+----------+--------+------------------+------------------------+
地址转换流程
厂商烧录 GUID
|
v
设备上电,SM 初始化
|
v
SM 分配 LID(基于 GUID)
|
v
SM 生成 GID(64bit prefix + 64bit EUI-64)
|
v
通信时使用 LID(同子网)或 GID(跨子网)
GID 与 IPv6 的关系:
- GID 基于 IPv6 地址格式
- 前 64 位是子网前缀(由 SM 配置)
- 后 64 位是 EUI-64(由 GUID 转换而来)
- EUI-64 转换:GUID 前 24 位 + FFFE + GUID 后 40 位
Why — 为什么需要三层地址而不是只用一种?
问题一:GUID 为什么不能直接用于路由?
GUID 是 64 位,厂商烧录后固定不变。虽然唯一性保证了每个设备可识别,但它不适合路由:没有层次结构,全局广播开销大。如果全网用 GUID 路由,每个交换机都需要维护数百万条条目。
问题二:LID 为什么不能跨子网?
LID 是 16 位,由 SM 在子网内分配。但不同子网的 SM 独立运行,可能分配相同的 LID。如果跨子网使用 LID,路由器无法区分"子网 A 的 LID 5"和"子网 B 的 LID 5"。
问题三:GID 如何解决跨子网问题?
GID 的前 64 位是子网前缀(Subnet Prefix),由 SM 配置。路由器可以根据子网前缀判断数据包属于哪个子网,实现正确的路由决策。
没有分层地址会发生什么?
-
- 没有 GUID:设备无法唯一标识,克隆设备会冲突
- 没有 LID:子网内无法高效路由
- 没有 GID:跨子网通信不可能
三层地址的协作流程
设备通信时,源和目的地址的选择取决于通信范围:
-
- 同子网通信:源地址用源 LID,目的地址用目的 LID(交换机只需解析 LRH)
- 跨子网通信:源地址用源 GID,目的地址用目的 GID(路由器需要解析 GRH)
- 工具输出:ibstat 显示 LID 和 GID,ibping 使用 LID 测试连通性
本节小结
-
- GUID:64 位,厂商烧录,设备唯一标识,不可路由
- LID:16 位,SM 分配,子网内高效路由
- GID:128 位,SM 生成,兼容 IPv6,支持跨子网
- 协作原则:同子网用 LID,跨子网用 GID
八、OFED 工具集实战
What — OFED 是什么?
OFED(OpenFabrics Enterprise Distribution)是 Mellanox/NVIDIA 提供的一套开源软件栈,包含驱动、协议栈和管理工具。它支持 RDMA 和内核旁路应用,为 HPC 站点和企业数据中心提供灵活的高速互连解决方案。
OFED 核心命令速查表
+------------------+------------------------------------------+
| 命令 | 功能 |
+------------------+------------------------------------------+
| ibstat | 查看 HCA 状态和端口信息(LID/GID/State) |
| ibping | 测试子网内连通性(使用 LID) |
| ibtracert | 追踪数据包路径(逐跳显示 LID) |
| ibportstate | 查询逻辑和物理端口状态 |
| ibswitches | 列出子网内所有交换机 |
| ibhosts | 列出子网内所有 HCA |
| ibnodes | 整合视图(交换机+HCA) |
+------------------+------------------------------------------+
ibswitches 示例输出:
# ibswitches
Switch : 0x0002c90200001a2c ports 36 "Voltaire 4036"
Switch : 0x0002c90200001b3d ports 36 "Voltaire 4036"
Switch : 0x0002c90200001c4e ports 36 "Voltaire 4036"
Switch : 0x0002c90200001d5f ports 36 "Voltaire 4036"
ibhosts 示例输出:
# ibhosts
Ca : 0x0002c90300002f78 ports 2 "mt2893 Family HCA"
Ca : 0x0002c9030000308b ports 1 "mt2893 Family HCA"
Why — 为什么需要 OFED 工具集?
问题一:ibping 和普通 ping 有什么区别?
普通 ping 使用 ICMP 协议,经过操作系统的网络协议栈。
ibping 使用 InfiniBand 传输层,直接通过 HCA 硬件发送数据包,延迟更低,更能反映 RDMA 通信的真实性能。
问题二:ibtracert 和 traceroute 有什么区别?
traceroute 使用 TTL 机制探测 IP 路由路径。ibtracert 通过追踪 PSN(Packet Sequence Number)显示 IB 数据包经过的每一跳交换机,返回每一跳的 LID。
没有 OFED 工具会发生什么?
-
- 无法诊断 IB 网络故障
- 无法验证 SM 是否成功分配 LID
- 无法排查丢包、路径问题
当 IB 网络出现故障时,推荐的排查顺序:
# 第 1 步:检查 HCA 状态
$ ibstat
# 确认 State=Active, Physical state=LinkUp, Rate=预期值
# 第 2 步:检查端口状态
$ ibportstate 1 # 查询端口 1 的详细状态
# 确认链路速度、宽度、扩展链路速度
# 第 3 步:发现子网节点
$ ibswitches # 列出所有交换机
$ ibhosts # 列出所有 HCA
$ ibnodes # 整合视图
# 第 4 步:测试连通性
$ ibping -L 5 -C 1 # 向 LID=5 的节点发送 5 次 ping
# 确认能收到响应
# 第 5 步:追踪路径
$ ibtracert -G 0xfe800000000000000002c90300002f79 # 使用 GID 追踪
通过这个流程,你可以快速定位故障点:HCA 故障、链路速率不匹配、交换机配置问题、还是 SM 未正确分配 LID。
本节小结
-
- OFED 定义:Mellanox/NVIDIA 提供的 IB 软件栈
- 核心工具:ibstat / ibping / ibtracert / ibswitches / ibhosts
- 诊断价值:验证 LID 分配、测试连通性、追踪路径
FAQ(20 组)
以下是关于 InfiniBand 物理层的常见问题,每个问题都附有一句话结论和详细展开。
Q1. InfiniBand 和以太网的核心区别是什么?
一句话结论:IB 是"管理先行"的高速网络,以太网是"尽力而为"的通用网络。InfiniBand 的子网管理器 SM 是网络正常运行的必要条件,交换机配置丢失时网络完全瘫痪。而以太网即使没有 SNMP 管理,物理链路仍可通信。IB 的端到端延迟可达亚微秒级,以太网TCP/IP通常在几十到几百微秒。
Q2. 为什么 InfiniBand 采用五层架构而不是七层?
一句话结论:IB 的分层更精简,合并了 OSI 模型中重复的功能。例如,IB 的链路层同时承担了 OSI 数据链路层和网络层的部分功能(本地路由通过 LID 实现),避免重复解析。管理层在 IB 中是显式的(SM),而以太网中隐式淹没在 SNMP 里。
Q3. LRH 和 GRH 的区别是什么?
一句话结论:LRH 用于子网内本地路由,GRH 用于跨子网全局路由。同子网通信时,交换机只解析 LRH 中的 DLID(16 位本地标识)。跨子网通信时,路由器必须解析 GRH 中的 DGID(128 位全局标识,基于 IPv6 格式)。
Q4. HCA 和网卡(NIC)有什么本质区别?
一句话结论:HCA 支持 RDMA(CPU 卸载),普通网卡不支持。HCA 可以在没有 CPU 参与的情况下,直接读写远程内存。普通网卡的数据传输必须经过内核协议栈,多次内存拷贝和上下文切换导致高延迟。
Q5. 为什么 HCA 需要 GUID/LID/GID 三层地址?
一句话结论:三层地址在不同场景下各有优势,实现唯一性+高效路由的平衡。GUID 是厂商烧录的固定标识,用于设备识别但不可路由。LID 是 SM 分配的 16 位本地标识,高效但仅限子网内。GID 是 128 位的全局标识,兼容 IPv6,支持跨子网路由。
Q6. ibping 和 ping 的区别是什么?
一句话结论:ibping 通过 HCA 硬件发送数据包,延迟更低。普通 ping 使用 ICMP 协议,经过操作系统的 TCP/IP 协议栈。ibping 直接通过 InfiniBand 传输层,不经过内核,更能反映 RDMA 通信的真实性能。
Q7. 链路宽度 1x/4x/8x/12x 是什么意思?
一句话结论:链路宽度指并行通道数量,宽度越大带宽越高。每条通道是 4 线串行差分连接(2 根 TX + 2 根 RX)。4x 配置有 4 条通道,共 16 根导线。带宽计算公式:链路速率 = 单通道速度 x 通道数。例如 HDR 4x = 50Gbps x 4 = 200Gbps。
Q8. EDR/HDR/NDR/XDR 代表什么?
一句话结论:这是 InfiniBand 的几代速率标准,反映物理层技术的进步。EDR(Enhanced Data Rate)单通道 25Gbps;HDR(High Data Rate)单通道 50Gbps;NDR(Next Data Rate)单通道 100Gbps;XDR(Extreme Data Rate)单通道 200Gbps。
Q9. DAC 和 AOC 的区别是什么?
一句话结论:DAC 是铜缆(短距离、低成本),AOC 是光纤(长距离、高带宽)。DAC(Direct Attach Copper)使用电信号,EDR 最大 5m,HDR 最大 2m。AOC(Active Optical Cable)使用光信号,可达 100-300m。光纤完全免疫 EMI,但成本更高。
Q10. 为什么 AI 训练集群优先使用 InfiniBand?
一句话结论:IB 的低延迟和高带宽是 GPU 集群通信的关键需求。现代 AI 训练需要大量 GPU 同步通信(如 AllReduce 操作)。IB 的亚微秒级延迟和 200-400Gbps 带宽,可以避免 GPU 等待网络 I/O,成为 GPU 集群互联的事实标准。
Q11. 链路训练(Link Training)是什么?
一句话结论:链路训练是两端设备协商最优参数的过程。当 HCA 和交换机端口连接后,双方会交换信号,检测媒体类型(光纤/铜缆)、衰减程度、物理通道速度。协商完成后,链路状态从 Polling 变为 LinkUp。
Q12. BER(Bit Error Rate)是什么?为什么重要?
一句话结论:BER 是误码率,用于衡量信号传输质量。计算公式:BER = 错误接收比特数 / 总接收比特数。InfiniBand 的 BER 目标值约 10^-12。BER 过高会导致 RDMA 操作失败,数据包需要重传。
Q13. 为什么光纤比铜缆更适合高密度部署?
一句话结论:光纤直径小、不导电、免疫力强,节省空间并改善数据中心气流。光纤直径约等于头发粗细,铜缆是其 4 倍。高密度环境下,光纤可以大幅减少线缆占用的空间,改善冷却气流的循环效率。
Q14. Virtual Lane(VL)是什么?
一句话结论:VL 是虚拟通道,用于 QoS 质量服务。不同优先级的流量可以走不同的 VL,避免高优先级流量被阻塞。VL 字段在 LRH 中,共 4 位,可以支持 16 个虚拟通道。
Q15. PSN(Packet Sequence Number)的作用是什么?
一句话结论:PSN 用于可靠传输,检测丢包并触发重传。PSN 是 BTH(传输层头)中的 24 位字段。每个发送的包都有唯一的 PSN,接收端根据 PSN 判断是否有丢包。如果 PSN 不连续,说明有包丢失,需要重传。
Q16. 为什么 GID 格式兼容 IPv6?
一句话结论:IB 诞生时 IPv6 正在兴起,GID 格式可以与 IPv6 网络无缝集成。GID 的前 64 位是子网前缀(Subnet Prefix),后 64 位是 EUI-64(由 GUID 转换)。这种设计允许 IB 网络通过路由器与纯 IPv6 网络互通。
Q17. SM(子网管理器)为什么不可或缺?
一句话结论:没有 SM,IB 网络寸步难行——LID 无法分配,路由无法建立。SM 负责初始化网络拓扑、分配 LID、编程交换机路由表、监控链路健康。设备加入/离开网络时,SM 需要重新计算拓扑。
Q18. 如何判断同子网通信和跨子网通信?
一句话结论:看是否需要 GRH 头部——同子网只需要 LRH+BTH,跨子网需要 LRH+GRH+BTH。同子网通信时,交换机根据 LRH 中的 DLID(本地标识)转发。跨子网通信时,路由器必须解析 GRH 中的 DGID(全局标识,基于 IPv6 格式)。
Q19. ibtracert 和 traceroute 有什么区别?
一句话结论:traceroute 探测 IP 路由路径,ibtracert 追踪 IB 数据包的 PSN 路径。traceroute 使用 TTL 递减机制,每一跳返回 IP 地址。ibtracert 通过追踪 PSN(Packet Sequence Number),显示数据包经过的每一跳交换机的 LID,返回的是 IB 网络拓扑信息。
Q20. 为什么 InfiniBand 延迟比以太网低?
一句话结论:端到端无交换机 arbitration 争用 + 传输层硬件卸载。IB 采用 cut-through 转发模式,交换机在收到完整头部后立即转发,无需存储转发延迟。RDMA 操作在 HCA 硬件上执行,不经过内核协议栈,避免了上下文切换和内存拷贝的开销。
全篇总纲
本篇围绕 InfiniBand 物理层 建立了完整的概念框架:
- 五层架构:物理层/链路层/网络层/传输层/上层协议层,每层职责明确,管理层是显式存在
- 数据包结构:LRH(本地路由)、GRH(全局路由)、BTH(传输控制),场景决定头部组合
- HCA 基础:连接计算节点与 IB 网络的核心硬件,支持 RDMA CPU 卸载
- 链路速率:链路宽度 x 速率分级,理解带宽计算公式
- 三层地址:GUID(固定标识)、LID(本地路由)、GID(全局路由),协作支撑 IB 网络
- OFED 工具:ibstat/ibping/ibtracert 是排查 IB 网络故障的利器
学完本篇后,你能看懂 ibstat / ibping / ibtracert 的输出,能回答"InfiniBand 为什么比以太网延迟低"——答案是"端到端无交换机 arbitration 争用 + 传输层硬件卸载"。
Roadmap 预告
后续延伸学习路径
本篇是 InfiniBand 架构的入门奠基篇,后续内容将依次深入:
- 物理层信号完整性:深入理解 BER、符号编码、帧同步
- 链路层架构:VL 机制、QoS 信用计数器、流控原理
- 子网初始化流程:SM 选举机制、LID 分配算法、路径编程
- 传输层语义:RDMA Read/Write/Send/Recv 操作语义
- 拥塞控制算法:PFC(Priority Flow Control)、ECN 机制
建议读者在掌握本篇内容后,继续学习链路层和子网初始化,这将为你理解 RDMA 操作语义打下坚实基础。

浙公网安备 33010602011771号