超以太网联盟(UEC)成立于2023年,由Linux基金会联合Meta、微软、AMD、博通等科技巨头共同发起,旨在解决AI/ML和HPC场景下传统以太网的性能瓶颈。随着千卡级AI集群成为主流,网络拥塞、延迟敏感型流量调度、大规模密钥管理等挑战日益凸显。UEC 1.0规范作为首个正式版本,聚焦传输层协议革新与跨层协同优化,其核心思想是基于以太网架构增强而非颠覆,通过分层解耦设计兼容现有生态。
超以太网系统架构
集群组成逻辑
- 节点(Node):搭载UEC网卡的计算单元
- 网络端点(FEP):每张网卡支持多个逻辑端点
- 平面(Plane):多个FEP通过交换机互联形成的子网
- 双模协同:支持并行作业(如AI训练)与C/S模式(如推理服务)混合部署
流量调度的核心机制
- 负载均衡:基于ECMP多路径路由
- 拥塞感知:通过UET传输层的CMS子层管理熵值
- 差异化服务:利用IP报头DSCP字段实现流量类别映射,保障高优先级流量(如All-Reduce)
流量类别映射关系如下图所示,实现从应用层请求到链路层调度的跨层协同:
协议栈演进与关键技术
软件层:开放生态兼容
超以太网软件层的一个关键构建模块是开放架构接口 (Open Fabric Interfaces),也称 LibFabric。
Libfabric 定义了一套面向高性能并行和分布式应用程序的通信 API,其主要目标是提供一个统一的接口,让开发者能够方便地构建应用,而无需关心底层具体的传输协议和硬件细节。现有的 LibFabric 已经可对接 AI 或 HPC 集群所需的各类高性能通信库,例如 NCCL(来自 Nvidia)、RCCL(来自 AMD)、MPI(原始超级计算并行通信)、Open SHMEM(共享内存)和 UD(不可靠数据报)。
UEC 1.0 规范中确定的 Libfabric API 基线版本是 v2.0 ,并将与 Libfabric 社区保持合作,允许集群中的Endpoint(网卡)与 AI 框架和 HPC 工作负载进行交互;此外一些规范内的可选功能还需要交换机支持(例如数据包修剪),为此,网络操作系统(NOS)需要对应新增扩展。
传输层(UET)四维革新
1. 语义子层(SES)
SES子层旨在通过 Libfabric 映射集成到广泛部署的 A I框架和 HPC 库中,是 UET 和 Libfabric 之间的主要接口。它使用 Libfabric 的应用程序通过网络交换消息,并使用流行的零拷贝技术将这些消息直接放入彼此的缓冲存储器中。
2. 传输协议矩阵(PDS)
通过UET分层模型和相关库,应用程序可以选择最适合其需求的传输协议功能。PDS子层定义了一种具有多种操作模式的协议,提供可靠无序RUD、可靠有序(ROD)、幂等可靠无序(RUDI)、不可靠无序(UUD)几种组合模式的数据包传输服务。
3. 拥塞控制(CMS)
UET 定义了一种端到端的拥塞管理解决方案 UET-CC(UET Congestion Control),用于解决有损以太网中的数据包缓冲区拥塞问题。其目标是实现较高的网络效率,减少数据包丢失,并确保竞争流之间的合理公平性。
4. 传输安全子层(TSS):
UET采用了新的密钥管理机制,允许在参与作业的大量计算节点之间高效共享密钥。推荐的加密算法是后量子(post-quantum) DES 密码。
网络层:拥塞应急机制
超以太网的网络层功能规范是可选模块,没有对网络层进行任何更改(依然是运行IP网络),该部分主要讨论的是数据包修剪(Packet Trimming)。
网络交换机在繁忙的端口转发数据包之前,会将其存储在缓冲区中,且受到芯片面积的限制。如果缓冲区无法容纳到达的数据包,交换机要么丢弃数据包,要么向上游端口发出暂停流量信号。众所周知,这两种解决方案都存在性能问题。
数据包修剪功能即是超以太网定义的一种应对交换机缓冲区不足的机制,是拥塞通知的一种附加机制,用于在网络过载时减少数据负载。
简言之是允许交换机截断有争议的数据包,修改截断数据包的 DSCP 字段,并将截断数据包作为拥塞信号转发到目的地。数据包修剪提供的拥塞信息比ECN多得多。对于交换机来说,数据包修剪是可选的,而对于 FEP 来说,接收修剪后的数据包则是必须的。
修剪后的数据包通常由上层协议消耗,以确保快速重传丢失的数据包。因此,在启用修剪功能时,这些协议必须具有修剪感知能力,并且必须能够根据收到的修剪数据包识别出原始数据包。
所以,其中有个关键的 MIN_TRIM_SIZE 必须配置为一个合适的值,以确保在修剪后不影响下一步操作。这个值需要交换机根据每个数据包的封装类型动态地确定,设置为足够保留所有相关传输头所需的大小。
链路层:性能增强选项
超以太网规定的链路层旨在通过链路级的数据包替换和交换机之间的流量控制来提升整体性能链路层,这些都是可选功能,并且距离完全支持这些功能的产品得以商用还需要较长的时间。
1. 链路层重试(LLR)
LLR 机制基于帧。该机制下,从 MAC 客户端发出的的每个帧都要进行评估。如果 MAC 客户端不希望对帧进行 LLR,或该帧被归类为不符合 LLR 条件,那么该帧将作为标准以太网帧发送。如果帧符合 LLR 条件,则会被分配一个序列号,并存储在重传缓冲区中,以便在对端未收到帧时进行快速重传。
2. 基于Credit的流量控制(CBFC)
UE 传输(UET)层的定义是利用从源端重传数据包,支持无序到达和拥塞控制等组件,来提供有损网络下的端到端可靠数据包传送(而逐跳链路是尽力而为的,允许因拥塞而丢弃数据包)。在许多情况下,按优先级进行链路层的无损数据包传送也很有用,例如小型网络和较低负载的场景由此可以简化网络管理和端侧配置及其缓冲区要求。
CBFC 是在逐跳基础上实现无损数据包传输的一种方法,可以消除端到端重传的可能以及与之相关的延迟,其大致机制是:发送方以credit为单位跟踪接收方的可用缓冲空间,只有当接收方有足够的缓冲空间时,发送方的数据包调度器才可以从无损 VC 队列中调度数据包进行传输。
3. 超以太网链路协商
该规范提倡使用描述所需和可选功能的“配置文件”,从而在所有网络实体之间检测、发现和达成共识,以便与配置文件支持的功能进行互操作。