4. 使用ibping测试RDMA连通性

任务目标

在两台已配置InfiniBand/RDMA网络的服务器之间运行ibping,验证链路基本连通性,并获取延迟与丢包信息。本案例聚焦于连通性测试本身,不涉及性能基准测试(如ib_write_bw)。

环境要求

  • 两台服务器均安装InfiniBand驱动(如MLNX_OFED或系统自带rdma-core),并已加载ib_umad内核模块。
  • 网卡已配置IP(如ib0接口),且两台机器路由可达。
  • 需要ibping工具,通常由rdma-core或infiniband-diags软件包提供。若缺失,使用包管理器安装:apt install ibutils或yum install ibutils。

实现与操作步骤

ibping采用客户端/服务器模式。服务器端先启动监听,客户端发起ping请求并统计结果。以下为完整操作流程:

1. 服务器端(被动响应方)

在服务器B上启动ibping监听模式,指定LID(InfiniBand端口的本地标识符)。LID可通过ibstat或ibv_devinfo查询,例如:

ibstat | grep -A1 "Port 1" | grep "Base lid"   # 获取LID值,假设为 3

启动服务:

ibping -S -C 3 -P 12345

参数说明:-S表示服务器模式,-C指定本地端口LID,-P指定监听端口号(自定义,如12345)。

2. 客户端(主动测试方)

在服务器A上执行ping测试,需指定服务器B的LID和端口号:

ibping -c 100 -C 3 -P 12345 -L 3

参数说明:-c 100发送100个ping包;-C 3指定本端LID;-P 12345指定本端端口;-L 3指定对端(服务器B)的LID。

验证方法与判定标准

客户端命令执行完毕后,观察输出。预期输出格式如下(示例值,非实测):

Ping from 0x0002c9030000aabb to 0x0002c9030000ccdd:
  100 packets sent, 100 received, 0% loss
  round-trip time: min/avg/max = 1.234/1.567/2.890 us

通过条件:

  • received数量等于sent数量,即丢包率为0%。
  • 平均延迟(avg)在微秒(us)量级,通常小于10us(取决于网络负载与硬件)。
  • 若出现0 received或100% loss,则链路不通,需检查LID是否正确、防火墙是否阻止端口、驱动是否正常加载。

常见问题排查

  • 无法获取LID:执行ibstat若显示State: Down,说明链路未激活,检查线缆与交换机端口状态。
  • 连接超时:确认两端-P端口号一致,且未配置防火墙拦截(如iptables)。
  • 权限不足:ibping需要root权限访问UMAD设备,使用sudo执行。

本案例通过最小化命令组合完成RDMA连通性验证,无需编写代码。若需自动化测试,可将上述命令封装为脚本,但核心验证逻辑不变。