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 以获得最佳性能