4. 配置InfiniBand网络
任务目标
在两台安装有InfiniBand HCA(主机通道适配器)的服务器上,通过InfiniBand交换机建立子网,配置子网管理器(Subnet Manager, SM),并验证节点间的RDMA通信是否正常。
环境与依赖
- 硬件:2台服务器(各含1块Mellanox ConnectX-5 HCA)、1台InfiniBand交换机(如Mellanox SB7800)
- 操作系统:Ubuntu 22.04 LTS(内核≥5.15)
- 驱动:Mellanox OFED 5.8+(含
opensm、ibutils、perftest) - IPoIB配置工具:
rdma-core、iproute2
安装OFED后确认HCA可见:
ibstat # 应显示端口状态Active,速率如 100Gb/s (HDR)
拓扑与IP规划
| 节点 | 主机名 | IPoIB地址 | GUID(示例) |
|---|---|---|---|
| Node1 | ib-node1 | 192.168.10.1/24 | 0x248a070300a1b2c3 |
| Node2 | ib-node2 | 192.168.10.2/24 | 0x248a070300a1b2d4 |
配置步骤
1. 配置子网管理器(Node1上执行)
子网管理器负责IB子网的初始化与路由计算。在Node1上启动opensm作为主SM:
# 安装opensm(若未随OFED安装)
sudo apt install opensm
# 启动前确认HCA端口状态
ibstat | grep -E "State|Port"
# 启动opensm(前台运行便于观察日志,生产环境建议使用systemd)
sudo opensm -F /etc/opensm/opensm.conf -B
# 验证SM已接管子网
sudo smpquery sminfo
# 预期输出包含: sm_base_lid 和 is_active: 1
2. 配置IPoIB地址(两台节点均执行)
# 查看IB接口名(通常为ib0)
ip link show | grep ib
# 配置IPoIB地址(以Node1为例,Node2改为192.168.10.2)
sudo ip addr add 192.168.10.1/24 dev ib0
sudo ip link set ib0 up
# 确认接口状态
ip addr show ib0
# 应看到 inet 192.168.10.1/24 scope global ib0
3. 验证节点间通信
# 在Node1上ping Node2的IPoIB地址
ping -c 4 192.168.10.2
# 预期输出: 0% packet loss
# 使用ibping验证RDMA层连通性(需先启动ibping服务端)
# Node2上执行:
ibping -S -C 0 -P 0 # 启动服务端
# Node1上执行:
ibping -c 100 -C 0 -P 0 -L 192.168.10.2
# 预期输出: 100 packets, 0% loss, avg rtt 约1-2微秒
完整验证脚本
以下脚本在Node1上执行,自动完成SM状态检查、IPoIB连通性和RDMA延迟测试:
#!/bin/bash
# verify_ib.sh - 在Node1上运行
set -e
echo "=== 1. 检查子网管理器状态 ==="
smpquery sminfo | grep -q "is_active: 1" && echo "SM: ACTIVE" || echo "SM: INACTIVE"
echo "=== 2. 检查IPoIB连通性 ==="
ping -c 3 -W 2 192.168.10.2 > /dev/null && echo "PING: OK" || echo "PING: FAIL"
echo "=== 3. RDMA延迟测试 (ibping) ==="
# 需先在Node2上执行: ibping -S -C 0 -P 0
ibping -c 100 -C 0 -P 0 -L 192.168.10.2 | tail -1
echo "=== 4. RDMA带宽测试 (ib_write_bw) ==="
# 需先在Node2上执行: ib_write_bw -d mlx5_0
ib_write_bw -d mlx5_0 -c 100 192.168.10.2 | grep -E "BW|bandwidth"
通过判定标准
smpquery sminfo显示is_active: 1,表明SM正常管理子网ping丢包率为0%,IPoIB层通信正常ibping往返延迟在微秒量级(通常<5μs),无丢包ib_write_bw带宽接近链路理论值(HDR100约为100Gb/s)
常见问题排查
- HCA端口未激活:执行
ibstat确认端口State为Active;若为Down,检查线缆连接和交换机端口配置 - SM未接管:确认
opensm进程运行,且/etc/opensm/opensm.conf中sm_guid指向本机HCA GUID - IPoIB接口无法up:检查
rdma link show确认链路状态,必要时执行sudo rdma link set ib0 up - ibping超时:确认服务端已启动,且两端
opensm未冲突(同一子网只允许一个主SM)