jumboframe enable 9000 配置一致)。sudo ip link set dev <网卡接口名> mtu 9000mlnx_qos 工具):# 假设仅对队列 3 开启 PFC(具体队列号视网卡默认映射而定)
sudo mlnx_qos -i <网卡接口名> --pfc=0,0,0,1,0,0,0,0 --trust=dscp--pfc=0,0,0,0,1,0,0,0)mlnx_qos 配置 DSCP 信任模式时,ECN 会协同生效。您也可以通过相关工具确认 DCQCN 拥塞控制算法已启用。layer3+4(基于 IP+端口哈希)策略,利用源端口的随机性实现流量负载分担。network:
bonds:
bond0:
interfaces: [ens1f0, ens2f0] # 替换为实际物理网卡名
parameters:
mode: 802.3ad
transmit-hash-policy: layer3+4
lacp-rate: fastrc.local 或 systemd service)以实现持久化。暂无评论
组网匹配:S9825-64D-L3(二层 RoCE,参考 H3C《RoCE 网络开局一本通 6W103》)+ 3 台 400G GPU 服务器
重要前提:
全网统一使用 RoCEv2;交换机侧已经配置 PFC/ECN,RoCE 流量绑定优先级 3(PCP3 / DSCP 26,CNP 报文 DSCP48/PCP7),服务器配置必须和交换机 QoS 映射完全对齐!
400G 网卡主流为 NVIDIA ConnectX-6 DX / CX7,下文以 Mellanox 网卡(MLNX_OFED 驱动)为主;如果是 Intel E810/E830,文末补充差异。
端到端 MTU 统一 9000(巨帧),交换机 400G 接口同步配置 mtu 9000。
一、前期环境准备
1. 基础软件安装(Ubuntu22.04)
bash
# 基础RDMA工具
sudo apt update
sudo apt install rdma-core ibverbs-utils infiniband-diags ethtool lldptool
# 必须安装MLNX_OFED驱动(ConnectX系列400G网卡,内核RDMA-core功能不全,无法发挥400G RoCE性能)
# 去NVIDIA官网下载对应Ubuntu22.04 MLNX_OFED版本,安装时启用RoCE
2. 识别网卡设备
bash
# 查看以太网口(替换为你的网卡名,示例ens4f0)
ip link show
# 查看mst设备(mlxconfig/mlnx_qos依赖)
mst status
# 验证RDMA设备、确认支持RoCEv2
ibv_devinfo
# 输出需要看到:roce_v2_supported: 1
二、网卡固件底层配置(一次性,重启生效)
ConnectX 网卡默认有可能工作在 IB 模式,必须强制以太网 RoCE 模式
bash
# 查看网卡当前配置
sudo mlxconfig -d /dev/mst/mt4127_pciconf0 q
# 关键配置:开启RoCEv2,端口以太网模式
sudo mlxconfig -d /dev/mst/mt4127_pciconf0 set LINK_TYPE_P1=ETH
sudo mlxconfig -d /dev/mst/mt4127_pciconf0 set ROCE_V2_ENABLE=1
sudo mlxconfig -d /dev/mst/mt4127_pciconf0 set ROCE_V1_ENABLE=0
# 关闭全局pause,只使用PFC(禁止全局流控!RoCE大忌)
sudo mlxconfig -d /dev/mst/mt4127_pciconf0 set GLOBAL_PAUSE=0
# 写入配置后重启服务器生效
sudo reboot
三、接口 QoS 配置(和 S9825 交换机对齐,最核心)
H3C 开局一本通二层模板惯例:
RoCE 业务流量:PCP 3(802.1p 优先级 3),DSCP 26 (AF31)
CNP 拥塞通知报文:PCP7,DSCP48(CS6)
仅优先级 3 开启 PFC 无损,其余优先级关闭 PFC,防止 pause 风暴
1. mlnx_qos 网卡 DCB/PFC 配置(临时生效,先验证)
bash
# 替换ens4f0为你的400G网卡接口名
NIC=ens4f0
# 1. 设置信任DSCP(交换机侧推荐trust dscp模式,保持两端统一)
sudo mlnx_qos -i $NIC --trust=dscp
# 2. PFC掩码:0,0,0,1,0,0,0,0 → 仅priority3开启PFC,其余关闭
sudo mlnx_qos -i $NIC --pfc 0,0,0,1,0,0,0,0
# 3. DSCP → 硬件TC映射(和交换机dscp-dot1p映射严格一致)
# DSCP26 → TC3(RoCE数据);DSCP48 → TC7(CNP);其余流量TC0
sudo mlnx_qos -i $NIC --dscp2prio 26:3,48:7
# 4. ETS调度带宽分配:TC3(RoCE)90%,TC7(CNP)严格优先,剩余10%给其他业务
sudo mlnx_qos -i $NIC --ets_tsa 3:ets,7:strict
sudo mlnx_qos -i $NIC --ets_bandwidth 3:90,0:10
2. 验证 QoS 下发
bash
sudo mlnx_qos -i ens4f0 show
⚠️ DCBX 模式建议:manual 模式(willing=no)
不要开启自动协商 DCBX,避免交换机与主机 PFC 协商异常;
如果需要 LLDP 固化配置:
bash
sudo lldptool -i $NIC -V PFC -T willing=no enabled=3
四、网络基础参数(Netplan 永久 IP+MTU)
Ubuntu22.04 默认 netplan,示例配置 /etc/netplan/01-roce-400g.yaml
yaml
network:
version: 2
renderer: networkd
ethernets:
ens4f0:
addresses:
- 192.168.10.10/24 # 修改为你的RoCE子网
mtu: 9000
optional: true
# 如使用VLAN RoCE(如果交换机接口配置Trunk)
# vlans:
# ens4f0.100:
# id: 100
# link: ens4f0
# addresses: [192.168.10.10/24]
# mtu: 9000
生效:
bash
sudo netplan apply
# 校验MTU
ip link show ens4f0
五、内核系统参数调优(DCQCN + RDMA 优化,GPU 集群必备)
创建 /etc/sysctl.d/99-roce-gpu.conf
ini
# DCQCN 拥塞控制参数(RoCEv2标准,匹配H3C交换机ECN)
net.ipv4.tcp_ecn = 1
net.ipv4.udp_ecn = 1
# RDMA内存缓冲区
vm.min_free_kbytes = 524288
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default = 4194304
net.core.wmem_default = 4194304
# 关闭IPv6不需要可以添加 net.ipv6.conf.all.disable_ipv6=1
# 关闭网卡节能(至关重要,避免400G网卡深度节能带来延迟抖动)
# 下面这条sysctl无法控制,使用ethtool配置
加载参数:
bash
sudo sysctl -p /etc/sysctl.d/99-roce-gpu.conf
六、网卡硬件参数调优(ethtool)
bash
NIC=ens4f0
# 关闭EEE节能、省电功能(400G RoCE必关!)
sudo ethtool -s $NIC eee off
# 调整RX/TX队列buffer(ConnectX-6 400G推荐)
sudo ethtool -G $NIC rx 8192 tx 8192
# 关闭以太网全局pause!只使用PFC
sudo ethtool -A $NIC rx off tx off
# 查看配置确认
ethtool -a $NIC
ethtool -g $NIC
七、开机自动持久化所有配置(关键!重启失效解决方案)
mlnx_qos /ethtool 命令重启会丢失,推荐使用 systemd 服务 自启动:
1. 创建脚本 /usr/local/bin/roce-init.sh
bash
#!/bin/bash
NIC=ens4f0
# QoS/PFC
mlnx_qos -i $NIC --trust=dscp
mlnx_qos -i $NIC --pfc 0,0,0,1,0,0,0,0
mlnx_qos -i $NIC --dscp2prio 26:3,48:7
mlnx_qos -i $NIC --ets_tsa 3:ets,7:strict
mlnx_qos -i $NIC --ets_bandwidth 3:90,0:10
# Ethtool优化
ethtool -s $NIC eee off
ethtool -G $NIC rx 8192 tx 8192
ethtool -A $NIC rx off tx off
授权:
bash
sudo chmod +x /usr/local/bin/roce-init.sh
2. systemd 服务 /etc/systemd/system/roce-config.service
ini
[Unit]
Description=RoCE 400G NIC Init
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/roce-init.sh
[Install]
WantedBy=multi-user.target
启用开机自启:
bash
sudo systemctl daemon-reload
sudo systemctl enable roce-config.service
sudo systemctl start roce-config.service
八、验证与测试命令
bash
# 1. RDMA基础连通
ibv_devinfo
# 2. PFC/QoS校验
mlnx_qos -i ens4f0 show
# 3. RDMA性能测试(两台GPU互测)
# 服务端
ib_write_bw -d mlx5_0 --roce
# 客户端
ib_write_bw -d mlx5_0 --roce 192.168.10.10
# 4. 查看网卡错误计数(观察是否有drop、pause帧)
ethtool -S ens4f0
九、重要协同注意事项(对接 S9825-64D-L3)
交换机 400GE 对接服务器端口关键匹配项
mtu 9000
qos trust dscp
dcb pfc enable mode manual
dcb pfc priority 3 enable
开启 ECN;dscp-dot1p 映射 26→3,48→7
❌ 禁止:全局 pause enable;多个优先级同时开 PFC
若后续出现训练随机 hang、吞吐量波动:
检查两端 PFC 优先级是否一致
确认 EEE 节能全部关闭
核对 DSCP/PCP 映射,最常见两端映射不一致导致 RoCE 无无损
暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论