2. 配置RoCE v2网络
任务目标
在两台服务器(server-a 与 server-b)上完成 RoCE v2 网络配置:为 RoCE 网卡设置 IP 地址与路由,并启用 PFC(优先级流控)以保证无损传输。配置完成后,使用 ib_write_bw 工具验证两台服务器间的 RDMA 带宽。
环境与依赖
- 硬件:两台服务器,各含一个支持 RoCE v2 的网卡(如 Mellanox ConnectX-5/6),直连或经 RoCE 交换机相连
- OS:Ubuntu 22.04 / CentOS 8+(内核 ≥ 5.4)
- 驱动:MLNX_OFED 或系统自带
mlx5_core驱动,确认rdma-core已安装 - 工具:
ib_write_bw(由perftest包提供)、rdma命令集
配置步骤
1. 确认 RoCE 网卡与状态
在两台服务器上分别执行以下命令,确认网卡识别为 RoCE 设备且链路状态为 ACTIVE:
rdma link show
ibstat | grep -E "State|Port"
预期输出:State: Active,端口为 Port 1: Active。若状态为 DOWN,检查线缆与交换机配置。
2. 配置 IP 地址与路由
RoCE v2 需要为网卡配置 IP 地址(使用未规划的子网,如 10.0.0.0/24)。在 server-a 上执行:
sudo ip addr add 10.0.0.1/24 dev ib0
sudo ip link set ib0 up
sudo ip route add 10.0.0.0/24 dev ib0
在 server-b 上执行:
sudo ip addr add 10.0.0.2/24 dev ib0
sudo ip link set ib0 up
sudo ip route add 10.0.0.0/24 dev ib0
验证连通性:ping -c 3 10.0.0.2(在 server-a 上执行),应收到回复。
3. 启用 PFC(无损 RoCE 必需)
RoCE v2 依赖 PFC 保证无损传输。使用 mlnx_qos 工具配置优先级 3 为无损优先级:
sudo mlnx_qos -i ib0 --pfc=0,0,0,1,0,0,0,0
sudo mlnx_qos -i ib0 --trust=dscp
若系统无 mlnx_qos,可手动配置(以 Mellanox 网卡为例):
sudo cma_roce_tos -d ib0 -t 106 # 设置 RoCE TOS 为 106(DSCP 26)
确认配置生效:mlnx_qos -i ib0 --show,应显示 PFC 使能于优先级 3。
完整配置脚本
以下脚本可在每台服务器上执行(需根据实际网卡名调整 ib0):
#!/bin/bash
# RoCE v2 配置脚本(需 root 权限)
# 用法: ./roce_config.sh <本机IP> <对端IP>
LOCAL_IP=$1
REMOTE_IP=$2
DEV=ib0
# 1. 配置 IP 与路由
ip addr add $LOCAL_IP/24 dev $DEV 2>/dev/null || true
ip link set $DEV up
ip route replace $REMOTE_IP/32 dev $DEV
# 2. 启用 PFC(优先级 3 无损)
mlnx_qos -i $DEV --pfc=0,0,0,1,0,0,0,0 2>/dev/null || \
echo "警告: mlnx_qos 不可用,请手动配置 PFC"
# 3. 设置 RoCE TOS(DSCP 26)
cma_roce_tos -d $DEV -t 106 2>/dev/null || true
echo "RoCE v2 配置完成: $LOCAL_IP → $REMOTE_IP"
执行方式:在 server-a 上运行 sudo ./roce_config.sh 10.0.0.1 10.0.0.2,在 server-b 上运行 sudo ./roce_config.sh 10.0.0.2 10.0.0.1。
带宽测试与验证
使用 ib_write_bw 测试 RoCE v2 带宽。先在 server-b 上启动服务端:
ib_write_bw -d ib0 -x 3 --report_gbits
参数说明:-d 指定设备,-x 3 使用优先级 3(与 PFC 配置对应),--report_gbits 以 Gbit/s 显示结果。
然后在 server-a 上启动客户端:
ib_write_bw -d ib0 -x 3 --report_gbits 10.0.0.2
通过条件:
- 客户端输出中
BW average数值接近网卡线速(如 100GbE 网卡应 > 90 Gbit/s) - 无
CRC errors或retries计数显著增长 - 服务端与客户端均显示
Connection established且测试正常完成
若带宽远低于预期,检查:
- PFC 是否生效:
ethtool -S ib0 | grep prio3观察rx_pause计数是否增加 - 路由是否走 RoCE 网卡:
ip route get 10.0.0.2应显示dev ib0 - 交换机(若使用)是否已启用 PFC 与 ECN 配置
常见问题
- ib_write_bw 报 "Couldn't find RDMA device":确认
ibstat能看到设备,且驱动已加载 - ping 通但 RDMA 不通:检查两端
cma_roce_tos设置是否一致,且交换机 PFC 优先级映射正确 - 带宽仅达线速 50%:检查是否启用了 ECN(显式拥塞通知),RoCE v2 建议同时配置 ECN 以获得最佳性能