1. 配置RoCEv2的基本网络参数

任务目标

在两张支持RoCEv2的网卡之间,完成RDMA over Converged Ethernet v2所需的基础网络参数配置。本案例聚焦于IP地址、MTU与RoCE模式三个核心参数,使两端网卡能够通过RoCEv2协议建立连接。

环境要求

  • 两台Linux主机(内核≥4.9),各配备一张支持RoCEv2的网卡(如Mellanox ConnectX-4/5或更高)
  • 已安装rdma-core与iproute2(提供rdma与ip命令)
  • 两端网卡通过以太网线缆直连或经支持无损以太网的交换机互联

配置步骤与关键代码

以下脚本在主机A上执行,主机B需将IP地址替换为192.168.100.2/24后执行相同命令。

#!/bin/bash
# 主机A配置脚本(主机B将IP改为192.168.100.2/24)

# 1. 确认网卡名称(示例为ens2f0,请按实际环境替换)
NIC="ens2f0"

# 2. 配置IP地址
sudo ip addr add 192.168.100.1/24 dev $NIC
sudo ip link set $NIC up

# 3. 设置MTU为9000(RoCEv2要求端到端一致,建议开启巨帧)
sudo ip link set $NIC mtu 9000

# 4. 查询并确认RoCE模式为v2
rdma link show $NIC

# 5. 若模式不是RoCEv2,则显式设置(以mlx5_core驱动为例)
sudo rdma link set $NIC mode rocev2

# 6. 验证配置
ip addr show $NIC
rdma link show $NIC

验证方法

配置完成后,在主机A上执行以下命令验证连通性:

# 1. 确认对端IP可达(需先完成主机B的配置)
ping -c 3 -s 8972 192.168.100.2   # 8972 = 9000 - 28(IP+ICMP头)

# 2. 使用ib_write_bw测试RoCEv2实际带宽(服务端先启动)
# 主机B(服务端):
ib_write_bw -d mlx5_0 -R

# 主机A(客户端):
ib_write_bw -d mlx5_0 -R 192.168.100.2

通过判定标准:

  • rdma link show输出中state ACTIVE且mode RoCEv2;
  • ping测试0%丢包;
  • ib_write_bw能够正常启动并完成带宽测试(输出中显示非零带宽值即表示RoCEv2链路已建立)。
常见问题:若rdma link show显示state DOWN,请检查两端MTU是否一致、IP是否在同一子网,以及交换机端口是否启用了PFC(优先级流控)。RoCEv2依赖无损网络,生产环境需在交换机上配置PFC与ETS。

关键参数说明

  • MTU 9000:RoCEv2最大传输单元建议设置为9000,以减小大块数据传输时的CPU开销。两端必须一致,否则数据包会被丢弃。
  • RoCEv2模式:使用UDP端口4791封装,相比RoCEv1可跨三层路由。确认驱动支持后,通过rdma link set命令切换。
  • IP地址:仅用于RoCEv2数据包的IP路由,与业务IP可独立规划。