Packet Spraying
NIC 端逐报文散列如何趋近 100% 链路利用率
核心要点:
- 每个报文独立选路,统计上理论趋向 100% 链路利用率
- 通过 EV(Entropy Value)字段把选路控制权移到发送 NIC,交换机只需对 EV 取模
- 必然引入乱序,依赖接收 NIC 的重排序缓冲($R \cdot \Delta d$ 量级)
- UEC 1.0(2025)的默认负载均衡方式,REPS 进一步支持快速故障恢复
Packet Spraying(报文喷洒)将每个单独的报文分散到所有等价路径上,是链路利用率最高的负载均衡策略,也是 UEC(Ultra Ethernet Consortium)在 Ultra Ethernet 1.0 规范(2025)中定义的默认负载均衡方式。
Packet Spraying 与 ECMP / AR 在哪一层做决策?
核心问题:ECMP 在交换机按流哈希、AR 在交换机按队列状态,Packet Spraying 不依赖拥塞反馈,怎么就能比它们更均衡?
ECMP 以流为单位选路(一条流始终走同一条路径),自适应路由(AR)以 flowlet 或报文为单位在交换机侧感知拥塞选路,而 Packet Spraying 以报文为单位在端点(NIC)侧主动分散——不感知拥塞,纯粹依靠统计均匀性,见 。
| 维度 | ECMP | AR(per-flowlet) | Packet Spraying |
|---|---|---|---|
| 决策粒度 | 流 | Flowlet / 报文 | 报文 |
| 决策位置 | 交换机 | 交换机 | NIC(端点) |
| 决策依据 | 5 元组哈希 | 队列深度 | EV 字段(端点控制) |
| 拥塞感知 | 无 | 有 | 无 |
| 交换机要求 | 通用 ASIC | 专用 AR ASIC | 通用(只需按 EV 转发) |
@tbl-route-packet-spraying-01 与 ECMP 和 AR 的本质区别:维度、ECMP、AR(per-flowlet) 等
EV 字段机制
Ultra Ethernet 1.0 通过标准化的 EV(Entropy Value)字段实现端点控制的 Packet Spraying[1]:
- 发送 NIC 为每个报文生成 EV 值(递增计数器或伪随机数),写入报文头的 EV 字段
- 交换机按 EV 字段(而非 5 元组哈希)计算转发路径索引
- 接收 NIC 配备重排序缓冲,将乱序报文恢复正确顺序
- 上层协议(RDMA)收到有序数据流
路径选择公式:
$$\begin{equation} \text{path\_index} = \text{EV} \bmod N_{\text{paths}} \label{eq:route-spray-ev-path} \end{equation}$$当 EV 为递增计数器时,连续报文依次轮转到不同路径(Round-Robin 效果)。当 EV 为伪随机数时,报文随机散布到所有路径。两种方式在统计上都趋向均匀分布。
这一设计将路径选择的控制权从交换机转移到发送端 NIC,交换机只需按 EV 值简单取模转发,无需特殊 ASIC 支持。
为什么 Spraying 的链路利用率能逼近 100%?
为什么 Spraying 利用率最高
考虑 $N$ 条等价路径、一条流发送 $M$ 个报文的场景:
ECMP:所有 $M$ 个报文走同一条路径,该路径负载 = $M$,其他 $N-1$ 条路径空闲。链路利用率 = $1/N$。
Packet Spraying(均匀分散):每条路径分配约 $M/N$ 个报文,所有路径负载均衡。链路利用率趋向 $N/N = 100\%$。
多流场景的定量对比
场景:8 条等价路径(8-Spine Fat-tree),4 条并发大流(AllReduce),每条流 1000 个报文。
ECMP(哈希分配):
$$\begin{equation} 4 \text{ 条流哈希到 } 8 \text{ 条路径,由 } \eqref{eq:route-ecmp-collision} \text{ 碰撞概率 } \approx 59\% \label{eq:route-spray-flow-hash-demo} \end{equation}$$最坏情况:2 条流碰撞到同一路径,该路径负载 2000 报文,其他路径负载 0-1000 不等。瓶颈路径决定完成时间。
Packet Spraying(均匀分散):
每条流的 1000 个报文均匀散布到 8 条路径,每条路径承载约 $4 \times 1000 / 8 = 500$ 个报文。所有路径负载完全均衡,无瓶颈。
完成时间对比:假设每条路径带宽 $B$,报文大小 $s$:
- ECMP(2 条流碰撞):完成时间 = $2000 \cdot s / B$(瓶颈路径)
- Spraying:完成时间 = $500 \cdot s / B$(所有路径并行)
- 加速比:$2000 / 500 = 4\times$
实际场景中加速比取决于碰撞程度和流量模式,通常低于理想假设下的加速比。
乱序代价如何承受?
Packet Spraying 必然产生报文乱序——同一流的连续报文走不同路径,路径延迟差异导致后发先至。
重排序缓冲设计
接收 NIC 为每条活跃流维护一个接收窗口,缓存提前到达的报文,等待缺失报文后按序交付:
报文到达接收 NIC
|
v
检查 PSN(Packet Sequence Number)
|
+-- PSN == expected_PSN?
| |
| +-- 是 --> 按序交付,expected_PSN++
| | 检查缓冲中是否有后续连续 PSN,一并交付
| |
| +-- 否 --> PSN > expected_PSN?
| |
| +-- 是 --> 缓存到重排序缓冲(等待缺失报文)
| |
| +-- 否 --> 重复报文,丢弃
缓冲大小估算
重排序缓冲的大小与最大在途数据量(bytes in flight)成正比。设最大路径延迟差为 $\Delta d$,发送速率为 $R$:
$$\begin{equation} B_{\text{reorder}} = R \cdot \Delta d \label{eq:route-spray-reorder-buf} \end{equation}$$数值示例:发送速率 $R = 400$ Gbps = 50 GB/s,Fat-tree 最大路径延迟差 $\Delta d = 2$ $\mu$s:
$$\begin{equation} B_{\text{reorder}} = 50 \times 10^9 \times 2 \times 10^{-6} = 100 \text{ KB(每流)} \label{eq:route-spray-reorder-buffer} \end{equation}$$对于同时有 $F$ 条活跃流的 NIC,总缓冲需求为 $F \cdot B_{\text{reorder}}$。在 AI 训练场景中 $F$ 通常为 8-64(对应 QP 数量),总缓冲 0.8-6.4 MB——在现代 NIC 的片上 SRAM 容量范围内。
协议适配
- UEC 1.0:定义了专门的乱序处理机制(PCM + CSIG),要求 NIC 具备重排序能力
- 传统 RoCEv2:依赖严格有序投递,NIC 不具备标准化的重排序支持。部分 NIC(如 ConnectX-7)的 RoCEv2 Write Only 模式可部分适配
REPS 如何把 Spraying 扩展到故障与不均衡场景?
REPS[2]是对基础 Packet Spraying 的增强,解决自适应负载均衡与链路故障场景:
问题:基础 Spraying 将 EV 空间均匀映射到所有路径,无法适应链路负载差异或故障。
机制:
- NIC 或交换机监测各路径的负载和故障状态
- 将高负载或故障链路对应的 EV 区间回收,重新映射到低负载或健康链路
- 更新 EV -> 路径的映射表,后续报文自动绕过问题路径
优势:故障检测和重路由时延 < 100 $\mu$s,远快于传统 IGP 路由收敛(秒级)。同时在正常运行中也能根据负载动态调整路径分配。
Spraying 与对照方案的性能差距?
| 指标 | Packet Spraying | ECMP(对照) | AR per-flowlet(对照) |
|---|---|---|---|
| 有效带宽利用率 | 最高(理论趋向 100%) | 受哈希碰撞限制 | 优于 ECMP,低于 Spraying |
| 链路负载均衡性 | 最优(统计均匀) | 差(哈希碰撞) | 好(拥塞感知) |
| 报文有序性 | 不保证 | 保证 | 基本保证 |
| 故障恢复速度 | < 100 $\mu$s(REPS) | 秒级(IGP 收敛) | 秒级 |
| 硬件门槛 | 新一代 NIC(EV + 重排序) | 低(通用 ASIC) | 高(AR ASIC) |
@tbl-route-packet-spraying-02 性能特性:指标、Packet Spraying、ECMP(对照) 等
何时该用 Packet Spraying,何时不该?
适用场景(满足以下条件时效益最大):
- 路径数量多:等价路径越多,均匀分散效果越好(典型:Fat-tree Spine 层 8-128 条等价路径)
- 消息粒度大:每条消息的报文数 $\gg N_{\text{paths}}$,才能充分利用多条路径的并行带宽
- 流量模式均匀:AllReduce、AllToAll 等对称集合通信天然适合
- Ultra Ethernet 1.0 部署环境(EV 字段标准化)
- 接收 NIC 具备足够的重排序缓冲($\eqref{eq:route-spray-reorder-buf}$ 估算)
- 代表部署:部分数据中心交换机已支持 per-packet load balancing 模式
局限:
- 传统 RoCEv2 环境(无 UEC 支持)难以部署——NIC 缺乏标准化重排序能力
- 在路径数量少的拓扑(如 Torus、Dragonfly 组内仅 1-2 条路径)收益有限
- 对延迟极敏感且消息很小的场景不适合(乱序恢复引入额外延迟)
- NIC 重排序缓冲增加芯片面积和功耗
- UEC 硬件仍处于早期部署阶段
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 决策位置 | 发送 NIC 写 EV 字段,交换机仅按 EV 取模转发 |
| 链路利用率 | 理论趋向 100%,多流碰撞场景下相对 ECMP 加速比可达 $N_{\text{paths}}/N_{\text{collide}}$ |
| 重排序代价 | 接收 NIC 缓冲 $B \approx R \cdot \Delta d$(400 G + 2 μs ≈ 100 KB/流) |
| 协议依赖 | UEC 1.0 PCM + CSIG;传统 RoCEv2 缺标准化重排序,难以部署 |
| REPS 扩展 | 回收高负载/故障路径的 EV 区间,故障恢复 < 100 μs |
| 适用场景 | 路径数多、消息粒度大、流量对称的对称集合通信 |
参考资料
- Ultra Ethernet Consortium, Ultra Ethernet Specification v1.0, 2025. https://ultraethernet.org/
- REPS: Recycled Entropy Packet Spraying, arXiv:2407.21625. https://arxiv.org/abs/2407.21625
延伸阅读
- Gangidi et al., RDMA over Ethernet for Distributed AI Training at Meta Scale, SIGCOMM 2024. https://dl.acm.org/doi/10.1145/3651890.3672233