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连通性验证,无需编写代码。若需自动化测试,可将上述命令封装为脚本,但核心验证逻辑不变。