3. 配置iWARP网络
任务目标
本案例使用支持iWARP协议的网卡(如Intel X722),完成IP地址与路由配置,并通过RDMA通信验证iWARP协议栈工作正常。iWARP将RDMA承载于TCP/IP协议栈之上,因此无需配置InfiniBand子网管理器,仅需标准IP网络即可运行。
环境要求
- 两台服务器,各安装一张iWARP网卡(本文以Intel X722为例)
- 操作系统:Linux Kernel 4.15+(已内置iWARP驱动),本文以Ubuntu 20.04为例
- 已安装rdma-core工具包:
sudo apt install rdma-core infiniband-diags - 内核模块:
iw_cxgb4(Chelsio)或iwlwifi(Intel,实际为irdma驱动),确认已加载
实现步骤
1. 确认iWARP设备识别
执行以下命令确认系统已识别iWARP网卡及对应的RDMA设备:
# 查看网络接口(应看到enpXXX或类似名称)
ip link show
# 查看RDMA设备(应看到irdma0或iWARP相关设备)
rdma link show
若rdma link无输出,执行sudo modprobe irdma加载驱动。
2. 配置IP地址与路由
假设两台服务器网卡接口名均为enp3s0,分别配置静态IP:
# 服务器A(IP: 192.168.100.10/24)
sudo ip addr add 192.168.100.10/24 dev enp3s0
sudo ip link set enp3s0 up
# 服务器B(IP: 192.168.100.20/24)
sudo ip addr add 192.168.100.20/24 dev enp3s0
sudo ip link set enp3s0 up
若两台服务器跨网段,需添加路由:
sudo ip route add 192.168.200.0/24 via 192.168.100.1 dev enp3s0
验证连通性:ping -c 3 192.168.100.20(在服务器A上执行)。
3. 验证RDMA通信
使用rping工具验证iWARP的RDMA读写能力。该工具专门用于测试iWARP/RoCE的RC连接。
服务器B(服务端):
rping -s -a 192.168.100.20 -v -C 3
参数说明:-s服务端模式,-a监听地址,-v详细输出,-C完成3次RDMA读写。
服务器A(客户端):
rping -c -a 192.168.100.20 -v -C 3
参数说明:-c客户端模式,其余与服务端一致。
4. 完整验证脚本
以下脚本可一键完成配置与验证(需root权限),保存为iwarp_test.sh:
#!/bin/bash
# iWARP配置与验证脚本
# 用法: ./iwarp_test.sh <local_ip> <peer_ip> <interface>
LOCAL_IP=$1
PEER_IP=$2
IFACE=$3
# 配置IP
ip addr add $LOCAL_IP/24 dev $IFACE 2>/dev/null
ip link set $IFACE up
# 确认RDMA设备
echo "=== RDMA设备 ==="
rdma link show | grep iWARP || rdma link show
# 测试连通性
echo "=== ICMP测试 ==="
ping -c 2 $PEER_IP
# 启动rping服务端(后台)
echo "=== 启动rping服务端 ==="
rping -s -a $LOCAL_IP -C 1 &
SERVER_PID=$!
sleep 2
# 执行客户端测试
echo "=== 执行rping客户端 ==="
rping -c -a $PEER_IP -v -C 1
# 清理
kill $SERVER_PID 2>/dev/null
wait $SERVER_PID 2>/dev/null
echo "=== 测试完成 ==="
执行:sudo chmod +x iwarp_test.sh && sudo ./iwarp_test.sh 192.168.100.10 192.168.100.20 enp3s0
验证方法与判定标准
- 设备识别:
rdma link show输出中包含irdma0或iWARP字样,且链路状态为ACTIVE - 网络连通:
ping命令丢包率为0% - RDMA通信:rping客户端输出包含
PING/PONG交互记录,且服务端显示3次(或-C指定次数)完整读写完成,无超时或错误信息
若rping输出类似以下内容,则判定通过:
PING 192.168.100.20: PONG
注意:以上为预期输出示例,实际输出可能因版本不同略有差异,但必须包含PING/PONG配对记录。
常见问题
- rdma link无输出:执行
sudo modprobe irdma,若仍无效,检查网卡固件是否支持iWARP(部分X722需更新固件) - rping连接超时:检查防火墙(
sudo ufw disable或放行TCP 3690端口),确认两端IP在同一子网或路由可达 - 性能不达标:确认网卡协商速率(
ethtool enp3s0),并检查是否启用了流控(ethtool -A enp3s0 rx on tx on)