跳到主要内容

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)侧主动分散——不感知拥塞,纯粹依靠统计均匀性,见

维度ECMPAR(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]

  1. 发送 NIC 为每个报文生成 EV 值(递增计数器或伪随机数),写入报文头的 EV 字段
  2. 交换机按 EV 字段(而非 5 元组哈希)计算转发路径索引
  3. 接收 NIC 配备重排序缓冲,将乱序报文恢复正确顺序
  4. 上层协议(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 空间均匀映射到所有路径,无法适应链路负载差异或故障。

机制

  1. NIC 或交换机监测各路径的负载和故障状态
  2. 将高负载或故障链路对应的 EV 区间回收,重新映射到低负载或健康链路
  3. 更新 EV -> 路径的映射表,后续报文自动绕过问题路径

优势:故障检测和重路由时延 < 100 $\mu$s,远快于传统 IGP 路由收敛(秒级)。同时在正常运行中也能根据负载动态调整路径分配。

Spraying 与对照方案的性能差距?

指标Packet SprayingECMP(对照)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
适用场景路径数多、消息粒度大、流量对称的对称集合通信

参考资料

  1. Ultra Ethernet Consortium, Ultra Ethernet Specification v1.0, 2025. https://ultraethernet.org/
  2. REPS: Recycled Entropy Packet Spraying, arXiv:2407.21625. https://arxiv.org/abs/2407.21625

延伸阅读