# 第 11 章 网络成了新瓶颈：从 ECMP 到超以太网

> 本章问题：AI 网络要解决什么问题？怎样解决？
> 来源：https://llm.weiborao.link/#ch11

**上一章留下的问题：**一旦“对答案”跨出机箱，数据就要走上网络。为什么传统的以太网扛不住 AI 训练的流量？AI 网络要怎样改造？

第 10 章的结论是：同步训练的速度由最慢的那条链路决定。这一章就盯着“链路”看：AI 的流量有什么怪脾气，传统网络为什么会在它面前堵车，业界想出了哪些办法，以及正在成形的新标准“超以太网”。这是全书最技术化的一章，但每个概念都能用“高速公路”来理解。

### 11.1 三张网，各管各的

> 【图示】AI 数据中心的三张网：东西向的后端网络只连 GPU，承载训练中的集合通信；南北向的前端网络连接用户、应用和管理系统；存储网络把训练数据和检查点在 GPU 与存储之间搬运。

**图 11-1** AI 数据中心通常把网络分成三个平面。后端网络只给 GPU 之间“对答案”用；前端网络对外；存储网络搬运数据和检查点。

表 11-1 训练与推理对三张网的要求

| 网络 | 训练 | 推理 |
| --- | --- | --- |
| 后端（东西向，GPU ↔ GPU） | 最苛刻：每块 GPU 配 400G/800G 网卡；不能丢包、不能拥塞；尾部延迟决定作业完成时间 | 单机内能跑的模型几乎不用；跨机的超大模型和混合专家模型需要，对小消息的低延迟很敏感 |
| 前端（南北向） | 调度、管理、监控 | 直接面对用户：接收请求、流式返回 Token、访问 RAG 向量库；要高可用和负载均衡 |
| 存储 | 开始时大量并发读取数据集；训练中周期性写出几 TB 的检查点，形成写入洪峰 | 加载模型权重；部分系统把 KV 缓存放到更大的存储层 |

第 13、14 章会看到，NVIDIA 企业参考架构把这三张网落实为“东西向计算网、南北向融合网（在一张物理网上用 VLAN 隔离出存储、带内管理和客户接入）、带外管理网”，并按每块 GPU 规定了各自的带宽配额。

### 11.2 大象流与 ECMP 撞车

数据中心网络一般是“叶脊”结构：每台服务器接到一台叶交换机，叶交换机通过多条等价的上行链路接到多台脊交换机。从 A 到 B 有好几条路可走，选哪条？传统做法叫 **ECMP**（等价多路径）：把一条连接的五元组（源/目的地址、源/目的端口、协议）算一个哈希值，按哈希值固定分到某一条链路。

普通互联网流量是成千上万条“小汽车”：网页、视频、邮件，每条都不大，哈希一分，自然就均匀了。AI 训练的流量完全不同：

- **大象流**：少数几条连接，每条都能单独打满一块 400G 网卡；
- **熵低**：连接数量少、五元组变化小，哈希值很难分散开；
- **同步突发**：所有 GPU 在同一时刻开始交换数据。

类比：

ECMP 像**按车牌尾号分配收费口**。平时几千辆小车，尾号自然分布均匀，每个口都不挤。可如果只来了 4 辆超长大货车，而其中两辆尾号恰好相同，它们就会挤进同一个口，另一个口空着。大货车一辆就占满整条道，于是一半的货要多等一倍时间。

> 【图示】左：ECMP 按流哈希，四条大象流里有两条被分到同一条链路，这条链路需求 200%，另一条链路空闲。右：逐包喷洒，每个包各选一条最空的链路，四条链路都是 100%。

**图 11-2** 同样四条大象流、四条链路。ECMP 按“流”固定分路，撞车的那条链路需求 200%，作业被拖慢一倍；逐包喷洒按“包”分路，四条链路均匀用满。

### 11.3 更聪明的分流

解决办法的思路只有一个：**分得更细、看得更清**。按粒度从粗到细，主流方案有这些：

表 11-2 AI 后端网络的负载均衡方案

| 方案 | 分路粒度 | 怎么分 | 乱序风险 | 优点 | 代价 |
| --- | --- | --- | --- | --- | --- |
| 增强 ECMP + QP 扩展 | 按流 | 哈希时额外看 RDMA 包头里的“队列对”编号，软件再多开一些连接，人为制造更多条流 | 无 | 不用换硬件；Meta 报告 AllReduce 最高提升 40% | 仍是按流，效果依赖流量模式 |
| Flowlet 动态负载均衡 | 按流片段 | 利用一条流里包与包之间的空隙，把大象流切成小段，每段重新选最空的路 | 很低（只在包间空隙足够大时换路） | 同一小段内不乱序 | 需要流量里有足够的空隙 |
| 自适应路由 / 逐包喷洒 | 按包 | 交换机为每个包实时挑最不拥塞的出口 | 高，必须由网卡处理 | 链路利用最均匀 | 包会乱序，需要网卡配合 |
| 集中式流量工程 | 按流 | 控制器结合拓扑和作业信息，预先算好路径下发 | 无 | 适合高度可预测、重复的训练流量 | 对变化反应慢 |
| 全局负载均衡 | 视实现 | 不只看本机链路，还看下一跳甚至更远处的拥塞 | 视实现 | 避开网络深处的热点 | 实现复杂 |

### 11.4 乱序怎么办

逐包喷洒最均匀，但带来一个新麻烦：同一条消息的包走了不同的路，到达顺序会乱。传统的 RDMA 网卡要求按顺序收包，看到乱序往往当成丢包处理，触发重传，性能骤降。

解决思路是让**网卡不在乎顺序**：每个包都带着它在目标内存里的位置，网卡收到一个就直接写进对应的位置，不必在缓冲区里排队等前面的包。所有包到齐后，再告诉上层“这条消息完整了”。

> 【图示】乱序到达与直接放置：一条消息被切成 1 到 4 号包，经不同路径到达，顺序变成 3、1、4、2。每个包都带着它在目标内存中的地址，网卡收到一个就直接写到对应位置，四个都到齐后，应用看到的是一条完整、有序的消息。

**图 11-3** 乱序到达、按址放置、按序交付。底层享受逐包喷洒的均匀，上层感受不到乱序。

NVIDIA 的 Spectrum-X 就是这样组合的：交换机逐包选择最不拥塞的端口，BlueField-3 等 SuperNIC 在 RoCE 传输层把乱序的数据整理好，“透明地向应用交付有序的数据”。NVIDIA 称 Spectrum-X 的 AI 网络性能是普通以太网的 1.6 倍（厂商口径）。

### 11.5 不让丢，还是丢了快补

RDMA 很怕丢包。原因在重传方式：传统 RoCE 网卡多采用**回退 N 步**（Go-Back-N），一个包丢了，就把它之后已经发出的包全部重发一遍。

> 【图示】丢了一个包之后：回退 N 步（Go-Back-N）要把丢失的 3 号包以及之后已经收到的 4 到 8 号包全部重发；选择性重传只重发 3 号包。

**图 11-4** 丢一个包的代价。回退 N 步要重发一长串，选择性重传只补丢的那一个。丢包在 RDMA 里贵，主要贵在这里。

所以过去的思路是“干脆别让它丢”。两大阵营做法不同：

**InfiniBand：天生无损。**它用**基于信用的流控**：接收端事先告诉发送端“我还有多少空位”，发送端只在有空位时才发。缓冲区永远不会溢出，从机制上就不丢包。拥塞时，交换机在包上打标记，接收端回告发送端减速，全部在硬件里完成。

**RoCEv2：给以太网“打补丁”。**以太网本来允许丢包。为了让 RDMA 跑在上面（RoCEv2 把 RDMA 的传输头装进 UDP 包里，目的端口 4791），需要两个机制配合：

- **PFC（基于优先级的流控）是刹车**：交换机队列快满时，向上游发“暂停”帧，让它别再发。粗暴但有效；副作用是会连累同一端口上无辜的流（队头阻塞），拥塞可能像多米诺骨牌一样向上游蔓延，极端情况下还会死锁。
- **ECN（显式拥塞通知）是油门**：队列开始变长时，交换机在包上打标记，接收端回一个拥塞通知包，发送端主动减速，尽量不让 PFC 触发。

两者结合的经典算法叫 **DCQCN**（2015 年）。但它的参数很难调。Meta 在 2024 年的 SIGCOMM 论文里披露，他们在 400G 部署中**干脆关掉了 DCQCN**，改为让集合通信库和传输层协同，由接收端来控制“谁什么时候可以发”。

**停一下：“无损”听起来是最好的。为什么新一代的思路反而是“允许丢包，但丢了能快速补上”？**

**参考答案：**

因为“无损”是有代价的。为了不丢，PFC 会让整段链路停下来，拥塞会扩散，规模越大越难调；而训练真正在乎的不是“一个包都不丢”，而是“每一步都能按时完成”。如果丢包能被**立刻发现**，并且只重发那一个包，偶尔丢一点反而比层层刹车更快、更容易扩展。这正是超以太网的设计哲学。

### 11.6 超以太网：为 AI 重新设计以太网

2023 年 7 月，AMD、Arista、Broadcom、Cisco、Eviden、HPE、Intel、Meta 和微软发起成立了**超以太网联盟**（UEC）。2025 年 6 月 11 日，联盟发布了 1.0 规范，目标是在开放的以太网上，为 AI 和高性能计算提供可扩展到**数百万个端点**的传输。

它的核心理念可以概括为一句话：**把复杂留给网卡，把简单留给交换机**。GPU 和网卡的计算能力越来越强，就让网卡承担重排、重传、拥塞控制这些“脏活”，交换机专心做又快又简单的转发。几个关键设计：

1. **多路径喷洒 + 乱序交付**：包可以走不同的路、乱序到达，网卡按址放置（11.4）。
2. **选择性确认与重传**：接收端准确告诉发送端收到了哪些，只补丢的那个（图 11-4 下半部分）。
3. **数据包裁剪**（可选）：交换机缓冲区满时，不再静默丢包，而是剪掉数据、只把包头快速送达，让接收端立刻知道丢了什么。
4. **链路层重试**（可选）：因线路误码损坏的包，在相邻两台设备之间就地重传，不必端到端重来。
5. **基于信用的流控**（可选）：借鉴 InfiniBand 的思路，作为 PFC 的更精细替代。
6. **新的传输协议 UET**：分为语义、包交付、拥塞管理、传输安全四个子层；面向 AI 定义了 AI Base 与 AI Full 两种配置，另有面向传统超算的 HPC 配置；编程接口基于开源的 libfabric。

> 【图示】数据包裁剪：交换机缓冲区满了，不再整包丢弃，而是剪掉数据部分，只把很小的包头用高优先级快速送到接收端；接收端一看到被裁剪的包头，就知道丢了哪个包，立刻请求发送端重发，不必等超时。

**图 11-5** 数据包裁剪。包头很小，用高优先级几乎不用排队，接收端在微秒级就能知道丢了哪个包，而传统做法要等一个长得多的超时。

表 11-3 三种 AI 后端网络的对照

|  | InfiniBand | RoCEv2（以太网） | 超以太网 UEC 1.0 |
| --- | --- | --- | --- |
| 对丢包的态度 | 机制上不丢（信用流控） | 靠 PFC 尽量不丢 | 允许丢，快速发现、只补丢的 |
| 拥塞控制 | 交换机标记 + 端点硬件降速 | ECN + PFC（如 DCQCN），调参难 | 端点为主的拥塞管理，可配合裁剪与信用流控 |
| 多路径与乱序 | 支持自适应路由（视实现） | 传统上按流 ECMP，乱序代价高 | 原生逐包喷洒、乱序交付 |
| 重传 | 传统上按序 | 常见回退 N 步 | 选择性重传 |
| 生态 | 以 NVIDIA 为主 | 多厂商以太网 | 多厂商开放标准 |

各厂商产品在标准之上还有自己的增强，实际能力以具体型号为准。

##### AI 网络追求的是

- 可预测的作业完成时间：每一步都准时
- 链路用得均匀，尾部延迟低

##### AI 网络追求的不是

- “绝对不丢包”本身：那只是手段之一
- 单条链路的峰值速度：全网最慢的那一处才决定结果

##### 本章带走

AI 训练的流量是少数同步的大象流，按流哈希的 ECMP 会撞车；解法是分得更细（逐包喷洒），再让网卡处理乱序与重传。

- 三张网：后端（GPU ↔ GPU）、前端（对外）、存储，训练时后端最苛刻。
- InfiniBand 靠信用流控天生无损；RoCEv2 靠 PFC + ECN 补出无损，难调；Meta 在 400G 上关掉了 DCQCN。
- 超以太网 UEC 1.0（2025-06）：智能网卡 + 简单交换机；喷洒、乱序交付、选择性重传、包裁剪、链路层重试。

**于是，下一个问题**：算力、通信、网络都有了。要把它们组装成一座真正能交付“智能”的工厂，还缺什么？企业要怎样建、怎样管、怎样保证安全？
