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可独立规划。