IB 三面分离落地:PKey 分区、SL/VL 与 IPoIB
方案里"网络三面分离"只有一句话,落地却是另一回事:PKey 怎么规划、SL/VL 怎么映射、IPoIB 挂哪个网、OpenSM 主备怎么切——每一层都有验证命令和坑。本文是 384 卡 L40S IB 集群交付中三面分离的实施记录。
1. 三面分离:切的是故障域,不是多拉几根线
| 面 | 设备 | 承载 | 故障影响 |
|---|---|---|---|
| IB 计算网(参数面) | 4×200G HDR × 48 节点 → Leaf/Spine | NCCL、集合通信 | 训练性能 |
| IB 存储网 | 1×200G HDR × 48 节点 → 2×QM8790 | IPoIB + RDMA 存储流量 | 数据吞吐 |
| 以太管理/业务网 | 2×25G Bond × 48 节点 | SSH、监控、文件共享 | 运维可达性 |
判断:三张物理面隔离,意味着"存储网打满不会拖垮训练"、"管理网抖动不会让 IB 重传"。用物理隔离换故障域,是中小集群最划算的可靠性投资。
2. PKey:子网内的"VLAN"
IB 的 PKey(Partition Key)把单一子网切成逻辑分区,流量隔离靠它,不靠交换机配置。本方案的规划:
| PKey | 用途 | 成员 |
|---|---|---|
| 0x100 | 计算分区 | 48 节点计算口 + Leaf/Spine |
| 0x200 | 存储分区 | 48 节点存储口 + 存储交换机 |
- PKey 是成员制:端口必须加入对应分区才能互通,加错分区 = 网络不通(且症状很像"线缆/驱动问题");
- 默认分区 0x7fff:所有端口默认都在 full member,跨分区流量是默认允许的——"默认开"才是最大的安全隐患,上线前要显式收紧默认分区;
- 配置在 OpenSM/交换机侧统一下发,节点侧通过
mlnx_qos/ibconfig核对。
验收命令:
bash
# 查看端口所属分区(应在 0x7fff + 业务分区)
ibdev2netdev
cat /sys/class/infiniband/*/ports/*/pkeys
# 跨分区不通的经典排查:sm_poll / ibstat 都正常,但 ping 不通 → 查 PKey3. SL/VL:拥塞隔离,而不是 QOS 花瓶
- SL(Service Level):端到端服务等级,报文打上 SL 标签;
- VL(Virtual Lane):物理链路上的虚拟通道,每条 VL 独立缓存与调度。
本方案把计算流量与存储流量映射到不同 SL,交换机按 SL 分配 VL。意义:存储突发不会把计算流量的缓冲占光——这是 IB"天然无损"之外,靠显式规划获得的第二层隔离。
工程判断:绝大多数中小集群根本不需要 8 个 SL。规划 2-3 个(计算高优先级 / 存储 / 管理默认)就够,把 SL 当 QOS 展览会去配 8 个,收益为负——每个 SL 都要调缓冲、都要验证。
4. IPoIB:存储网挂 IP 的正确姿势
存储网要用 TCP/IP 应用(NFS/iSCSI),就得让 IB 口"说 IP",即 IPoIB:
- connected 模式 + MTU 65520:IPoIB 默认 datagram 模式 MTU 2044,性能差一截。存储网必须切 connected 模式并开大 MTU;
- 踩坑点:两端 MTU 不一致 → 分片/丢包;
rdma_rxe之类软件栈残留 → 走了软 RDMA 还以为是硬件。
bash
# 切 connected 模式(openEuler 下)
echo connected > /sys/class/net/ib0/ipoib_mode
ip link set ib0 mtu 65520
# 验证大包:65520 MTU 下 ping -s 65000 对端,零丢包才算过
ping -s 65000 -M do <存储网关>5. OpenSM 主备:别让子网"脑裂"
IB 子网必须有且仅有一个主 SM。主备规划:
- 主 SM 跑在管理网可达、电源可靠的节点(本方案放管理面独立主机);
- 备 SM 心跳监控主 SM,主 SM 故障自动接管,全网 LID/PKey/SL 重算——所以主备切换不是无感的,切换期间流量会短暂中断;
- 禁止:多台机器同时跑
opensm且都以为自己是主——IB 的 SM 选举机制(Master/Slave)能兜底,但配置不当会抖动。
验证:
bash
ibstat | grep -A2 "State" # 端口 State: Active
smpquery sminfo # 当前主 SM 是谁
opensm -C /etc/opensm.conf -F # 备 SM 常驻,_sm_ 日志看接管6. 交付清单
- PKey:0x100/0x200 下发并核对端口成员,收紧默认分区 0x7fff;
- SL/VL:计算/存储/管理三档映射,交换机侧核对缓冲分配;
- IPoIB:全部存储口 connected + MTU 65520,大包 ping 零丢包;
- OpenSM:主备两台,smpquery 确认当前主 SM,failover 演练一次;
- 全链路验收:计算面跑 NCCL、存储面跑大文件 IO、管理面 SSH——三面同时压测,确认互不干扰。
本文基于 384 卡 L40S IB 集群交付实测整理;具体版本号与命令以现场实测为准。