Linux怎么配置RoCE(RDMAoverConvergedEthernet)无损以太网

酷枫吖_3412

酷枫吖_3412

2026-10-22

433人浏览

原创

roce无损网络必须同时满足pfc精确启停、ecn早期介入、dscp与802.1p映射一致三个硬性条件,缺一不可;否则将导致训练中随机卡死、all-reduce超时及nccl错误。

linux怎么配置roce(rdmaoverconvergedethernet)无损以太网

RoCE 无损网络不是“配通就行”,而是必须同时满足 PFC 精确启停、ECN 早期介入、DSCP 与 802.1p 映射一致 三个硬性条件,缺一不可。否则看似连通,训练中随机卡死、All-Reduce 超时、NCCL 报 NCCL_INVALID_USAGE 或 NCCL_SYSTEM_ERROR 都是大概率事件。

确认网卡和内核是否真正支持 RoCEv2

很多用户卡在第一步:以为装了驱动就万事大吉,其实 ConnectX-3 只支持 RoCEv1,而 RoCEv1 无法跨子网,且不走 IP 层,现代分布式训练根本不能用。

  • 执行 lspci | grep Mellanox,确认是 ConnectX-4/5/6(或 Intel E810+ 支持 RoCEv2 的型号)
  • 检查固件是否启用 RoCEv2 模式:ibstat -p 输出中 port_state 应为 Active,且 link_layer 显示 Ethernet;若显示 InfiniBand,说明仍运行在 IB 模式
  • 验证内核模块加载是否正确:lsmod | grep -E "(rdma|mlx|ib)" 中必须有 ib_uverbs、rdma_rxe(仅 Soft-RoCE)、mlx5_ib(硬件 RoCE)等,且无报错
  • 关键检查点:cat /sys/class/infiniband/*/ports/*/gids/0 应返回一个 IPv4 或 IPv6 地址格式的 GID,而非全零 —— 这是 roce_gid_mgmt.c 模块自动同步成功的标志

配置 PFC:必须按优先级粒度启用,不能全局开

PFC 不是“打开就安全”,它是逐优先级的反压机制。RoCEv2 流量默认使用 DSCP 值 46(EF),对应 802.1p 优先级 3,所以 PFC 必须只对优先级 3 启用,其他优先级(如管理流量用的优先级 0)必须禁用,否则会引发交换机缓存死锁。

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 在 Linux 主机侧,通过 DCB 工具配置:dcbtool sc eth0 dcb on,再执行 dcbtool sc eth0 pfc e:1,0,0,1,0,0,0,0 —— 表示仅开启优先级 3(索引从 0 开始,第 4 位)的 PFC
  • 验证是否生效:dcbtool gc eth0 输出中 pfc: enable 0x08(二进制 00001000)才正确;若为 0xff,说明所有优先级都开了,立刻回退
  • 注意:PFC 必须在**两端端口(服务器 + 交换机)同时启用同一优先级**,单边开启等于没开,还会导致 PFC pause 帧被丢弃

配置 ECN:需匹配 RoCEv2 的 UDP 封装特性

ECN 在 RoCEv2 中不是作用于 IP 层本身,而是依赖网卡硬件解析 UDP 头并标记 CE 位。因此仅配置内核 net.ipv4.tcp_ecn 是无效的,必须走 RDMA 栈专用路径。

  • 启用 ECN 的前提:网卡固件支持(ConnectX-5 FW ≥ 16.29.2006,需用 mlxfwmanager 升级),且内核启用 CONFIG_INFINIBAND_IPOIB_CM=y
  • 设置 ECN 参数:echo 1 > /sys/class/infiniband/mlx5_0/ports/1/ecn/enable(路径依实际设备名调整)
  • 指定触发阈值(避免过早限速):echo 1048576 > /sys/class/infiniband/mlx5_0/ports/1/ecn/cur_thresh(单位字节,建议设为交换机端口缓存的 70%)
  • 验证 ECN 是否工作:用 ibstat 查看端口计数器中 ecn_marked 字段是否随流量上升;若始终为 0,说明 ECN 未真正激活

DSCP-to-802.1p 映射错位是静默故障主因

RoCEv2 流量由内核协议栈发出时,DSCP 值(如 46)需被网卡硬件准确映射为 802.1p 优先级(3)。一旦映射表错位,PFC 和 ECN 就完全失效 —— 流量走了“高优先级”通道,但控制策略却绑在“低优先级”上。

  • 查看当前映射:tc qdisc show dev eth0,确认存在 handle ffff: prio 类,并用 tc class show dev eth0 检查 band 3 是否绑定到 DSCP 46
  • 手动修正映射(以 Mellanox 为例):mlxconfig -d /dev/mst/mt4115_pciconf0 set ROCE_DSCP_TO_PCP_MAP=0,0,0,3,0,0,0,0 —— 表示 DSCP 3(即十进制 24)映射到 PCP 3,但 RoCEv2 实际用 DSCP 46(二进制 101110),所以要算准位移:46 ÷ 8 = 5 余 6 → 第 6 个字节位置填 3
  • 最稳妥方式:直接在交换机侧统一用 DSCP 46 标记 RoCE 流量,并关闭主机侧所有软件 QoS,让硬件接管全部映射

真正难的不是敲完命令,而是确认每一层映射都对齐:DSCP 值 → 802.1p 优先级 → PFC 开关位 → ECN 触发门限 → 交换机缓存水位。任何一层偏移,都会让“无损”变成“间歇性丢包”,而这种丢包在 NCCL 日志里往往只体现为超时重试,不会直接报错。

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4150

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3513

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2733

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6650

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6302

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3653

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3145

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3379

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习