2、InfiniBand基础概念
2.1 什么是InfiniBand
InfiniBand(简称IB)是一种面向高性能计算(HPC)和企业级数据中心的高速串行互联网络技术。它诞生于1999年,由InfiniBand贸易联盟(IBTA)推动标准化,旨在解决传统总线架构在CPU、内存与存储之间日益严重的带宽瓶颈问题。与以太网“尽力而为”的转发模型不同,InfiniBand从设计之初就强调低延迟、高带宽、高可靠性和可扩展性,其核心特征是采用通道适配器(Channel Adapter)和子网管理器(Subnet Manager)来构建一个独立的、由交换机(Switch)和链路(Link)组成的子网(Subnet)。
从技术架构上看,InfiniBand采用点对点串行链路,每条链路支持2.5Gbps(SDR)、5Gbps(DDR)、10Gbps(QDR)、14.0625Gbps(FDR)乃至更高的速率,并支持4x、12x等链路宽度聚合。当前主流的HDR(200Gbps)和NDR(400Gbps)系统,单端口即可提供远超传统千兆/万兆以太网的吞吐能力。更重要的是,IB网络通过远程直接内存访问(RDMA)技术,允许应用绕过操作系统内核和CPU拷贝,直接从一台主机的内存写入另一台主机的内存,从而将端到端延迟降低到微秒甚至亚微秒级别。
2.2 与传统以太网和光纤通道的对比
要理解InfiniBand的定位,最有效的方式是将其与数据中心另外两大网络技术——以太网(Ethernet)和光纤通道(Fibre Channel, FC)进行对比。三者虽然都承担数据传输任务,但设计哲学截然不同。
| 维度 | InfiniBand | 传统以太网 | 光纤通道 (FC) |
|---|---|---|---|
| 设计目标 | HPC并行计算、低延迟存储 | 通用网络、尽力而为 | 存储区域网络 (SAN) |
| 核心传输机制 | RDMA + 可靠传输 (硬件卸载) | TCP/IP 软件协议栈 | FC 协议 (专用ASIC) |
| 端到端延迟 | < 1 微秒 (交换机直连) | 5 - 50 微秒 (受CPU影响) | 2 - 10 微秒 |
| 丢包处理 | 无丢包 (基于信用流控) | 丢包重传 (TCP) | 无丢包 (信用机制) |
| 寻址方式 | LID (子网内) + GID (全局) | MAC + IP 地址 | WWPN + FC ID |
| 管理模型 | 子网管理器 (集中式) | 分布式 (STP/BGP等) | Fabric 服务 (登录/注册) |
| 典型速率 | HDR 200Gbps / NDR 400Gbps | 400GE / 800GE (演进中) | 32GFC / 64GFC |
从上表可以看出,以太网追求通用性和灵活性,但代价是协议栈开销大、延迟高;光纤通道专注于存储场景,可靠但生态封闭且速率演进较慢;而InfiniBand则站在“计算”角度,将网络视为计算系统的一部分,通过硬件卸载和集中管理实现极致的性能与确定性。
2.3 关键术语详解
在IB网络中,以下术语是理解一切后续操作的基础,务必准确掌握:
- 子网管理器(Subnet Manager, SM):负责整个IB子网的发现、配置和维护。SM启动后,会通过管理数据报(MAD)扫描所有端口,为每个端口分配LID,计算路由表并下发到各交换机。通常一个子网有一个主SM和一个备用SM,主SM故障时备用SM自动接管。
- LID(Local Identifier):16位本地路由ID,仅在子网内有效。LID由SM在端口初始化时动态分配,用于交换机在子网内部转发数据包。LID 0xFFFF为广播地址,0x0000无效。
- GID(Global Identifier):128位全局标识符,格式与IPv6相同。GID由子网前缀(64位)+ 端口GUID(64位)组成。子网前缀由SM配置,端口GUID由硬件出厂烧录。GID用于跨子网通信以及RoCE(RDMA over Converged Ethernet)场景。
- HCA(Host Channel Adapter):即主机通道适配器,相当于IB网卡,负责将主机内存中的数据封装为IB报文,并执行RDMA操作。
- QoS(服务质量):IB支持基于服务等级(SL)和虚拟通道(VL)的流量隔离,确保存储流量与计算流量互不干扰。
2.4 典型应用场景与配置案例
以一套典型的4节点GPU计算集群为例,展示IB基础配置过程。假设每台服务器安装一张Mellanox ConnectX-6 HDR网卡,通过一台IB交换机互联。
# 1. 在服务器上查看HCA状态 (使用ibv_devinfo)
$ ibv_devinfo -d mlx5_0
hw_ver: 0x0
fw_ver: 20.29.1010
node_guid: 0x248a070300aabbcc
sys_image_guid: 0x248a070300aabbcc
port 1:
state: PORT_ACTIVE (4)
physical_state: LINK_ACTIVE (5)
rate: 200 Gb/sec (HDR)
lid: 0x2
sm_lid: 0x1
sm_sl: 0
# 2. 查看子网管理器是否运行 (OpenSM)
$ opensm -g 0x248a070300aabbcc --daemon
# 日志显示: "SUBNET UP: 4 nodes, 1 switch"
# 3. 测试节点间连通性 (ibping)
$ ibping -S -C mlx5_0 -P 1 # 服务端
$ ibping -c 100 -C mlx5_0 -P 1 -L 0x2 # 客户端ping LID 2
在上述输出中,lid: 0x2表示该端口被SM分配了LID 2;sm_lid: 0x1表示SM运行在LID 1的设备上(通常是交换机自身或指定服务器)。PORT_ACTIVE状态说明链路已成功建立并完成LID分配。
2.5 常见误区与复盘
复盘建议:在排查IB网络故障时,第一反应应是检查ibstat或ibv_devinfo中的端口状态是否为ACTIVE,以及LID是否已分配。若端口处于DOWN或INIT,优先检查SM进程、光纤/线缆连接以及交换机端口配置,而不是盲目排查应用层问题。