麒麟V10部署ROCEv2网卡配置步骤

以下是为麒麟服务器版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,需在系统中设置:

  1. 开启ECN和优先级
    将优先级3(通常用于RoCE流量)的ECN功能启用:

    bash 复制代码
    echo 1 > /sys/class/net/ens1np0/ecn/roce_np/enable/3
    echo 1 > /sys/class/net/ens1np0/ecn/roce_rp/enable/3
  2. 标记CNP报文
    设置拥塞通知报文(CNP)的DSCP值和802.1p优先级:

    bash 复制代码
    echo 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报文。

注意事项

  • 网络服务重启 :配置完成后,建议重启网络服务使设置生效:

    bash 复制代码
    systemctl restart NetworkManager  # 或传统network服务
  • 内核参数 :如果使用网卡绑定(bonding),需在/etc/modprobe.d/bonding.conf中配置miimon=100 mode=4(802.3ad动态聚合)。

  • 固件升级:如果遇到兼容性问题,可能需要升级网卡固件。


通过以上步骤,你应该能在麒麟V10上成功部署RoCEv2。如果在操作中遇到问题,可以优先检查驱动版本和交换机配置是否匹配,这是最常见的故障点。