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(示例)
Node1ib-node1192.168.10.1/240x248a070300a1b2c3
Node2ib-node2192.168.10.2/240x248a070300a1b2d4

配置步骤

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)