以下是为麒麟服务器版V10配置RoCEv2的步骤:
第一步:确认硬件和驱动支持
在开始配置之前,首先要确保你的服务器硬件满足要求。通常需要Mellanox ConnectX系列网卡(例如mlx5系列),并且已安装最新的OFED驱动包。可以通过以下命令检查驱动状态:
bash
modinfo mlx5_core # 查看内核模块信息
lspci | grep Mellanox # 确认网卡型号
如果发现驱动未正确加载,需要从Mellanox官网下载对应版本的驱动并安装。
第二步:切换网卡到RoCEv2模式
默认情况下,RDMA可能运行在RoCEv1模式(基于以太网二层),而RoCEv2需要切换到三层IP模式。使用cma_roce_mode
工具调整(假设网卡设备名为mlx5_1
):
bash
cma_roce_mode -d mlx5_1 -p 1 -m 2
这里的-m 2
表示启用RoCEv2。完成后,建议通过dmesg | grep RDMA
查看内核日志,确认模式切换成功。
第三步:配置流量控制和优先级
RoCEv2对网络质量敏感,需配合DCQCN(动态拥塞控制) 和PFC(优先级流控制) 。假设网卡接口名为ens1np0
,需在系统中设置:
-
开启ECN和优先级 :
将优先级3(通常用于RoCE流量)的ECN功能启用:bashecho 1 > /sys/class/net/ens1np0/ecn/roce_np/enable/3 echo 1 > /sys/class/net/ens1np0/ecn/roce_rp/enable/3
-
标记CNP报文 :
设置拥塞通知报文(CNP)的DSCP值和802.1p优先级:bashecho 48 > /sys/class/net/ens1np0/ecn/roce_np/cnp_dscp # DSCP=48 echo 6 > /sys/class/net/ens1np0/ecn/roce_np/cnp_802p_prio # 802.1p优先级6
第四步:优化网卡队列调度
通过Mellanox的mlnx_qos
工具调整QoS策略,确保RoCE流量获得足够的带宽。例如,为优先级3分配更高的权重:
bash
mlnx_qos -i ens1np0 --trust=dscp # 信任DSCP标记
mlnx_qos -i ens1np0 -f 0,0,0,1,0,0,0,0 # 在优先级3启用PFC
mlnx_qos -i ens1np0 -s ets,ets,ets,ets,ets,ets,strict,strict -t 10,10,10,50,10,10,0,0 # 队列权重分配
这一步的关键是让优先级3(对应RoCEv2流量)的队列获得更高的带宽比例,避免其他流量抢占资源。
第五步:配置交换机端
如果服务器连接到交换机,需确保交换机配置与网卡一致。例如:
- 在交换机上启用基于DSCP的PFC,并针对DSCP=48(即优先级3)开启流控。
- 确认交换机的ECN功能已启用,并与服务器的DSCP/802.1p映射匹配。
具体配置命令因交换机型号而异,建议参考交换机厂商的文档。
第六步:验证配置
最后一步是测试RoCEv2是否正常工作。推荐使用ib_send_bw
工具进行带宽测试:
服务端:
bash
ib_send_bw -d mlx5_1 --report_gbits -F -R
客户端:
bash
ib_send_bw -d mlx5_1 --report_gbits -F -R <服务端IP>
如果看到稳定的高带宽(例如25Gbps或100Gbps,取决于网卡型号),说明配置成功。若出现丢包或低带宽,可以通过ethtool -S ens1np0
检查网卡统计信息,或使用Wireshark抓包分析ECN和CNP报文。
注意事项
-
网络服务重启 :配置完成后,建议重启网络服务使设置生效:
bashsystemctl restart NetworkManager # 或传统network服务
-
内核参数 :如果使用网卡绑定(bonding),需在
/etc/modprobe.d/bonding.conf
中配置miimon=100 mode=4
(802.3ad动态聚合)。 -
固件升级:如果遇到兼容性问题,可能需要升级网卡固件。
通过以上步骤,你应该能在麒麟V10上成功部署RoCEv2。如果在操作中遇到问题,可以优先检查驱动版本和交换机配置是否匹配,这是最常见的故障点。