November 13, 2023

谷歌Falcon以太网硬件传输协议

上个月,在OCP 全球峰会上,谷歌正式宣布开放其硬件传输协议Falcon。此前在《谷歌Falcon、UEC协议、亚马逊SRD:数据中心传输协议的较量》一文中我们已经对Falcon有了基本的认识,本文对其在 OCP 峰会上的演讲视频进行了整理,帮助大家了解谷歌如何利用 Falcon 实现以太网现代化。

谷歌Falcon

谷歌Falcon协议的设计目标是为了满足大规模AI/ML训练、HPC高性能计算、实时分析以及一些存储、RPC等业务的高带宽、高吞吐量、低延迟需求,在高度优化的软件传输上进行数量级的改进,实现低延迟、高带宽的互联网现代化,并取代孤岛式的专用网络(如ICI、NVLink等)

在当今的数据中心以太网上实现高带宽、低延迟工作负载的大规模性能、隔离和效率,是 Falcon 的首要工作目标。

Falcon协议融合了谷歌十多年来的生产经验和技术迭代,其中包括低延迟的拥塞控制(例如 Swift),流量整形(例如Carousel),或快速重传等。

Falcon涉及的技术:

  • Carousel:一种流量限制机制(流量整形),允许在各个主机的上下文中调节数据包流的性能和强度。
  • Snaps:基于微内核的网络子系统,可以通过模块进行扩展,通过模块可以添加高级功能,例如网络虚拟化、流量限制和消息传递功能。
  • Swift:数据中心级网络的拥塞控制机制,短 RPC 消息可实现低于 50 微秒的延迟,同时在接近 100% 负载的情况下保持每台服务器 100 Gbps 的吞吐量。
  • RACK-TLP:一种确定 TCP 数据包丢失的算法。
  • PLB:一种使用拥塞信号的负载平衡机制。
  • CSIG:一种遥测交换协议,用于发送拥塞和流量控制信号。

Falcon 主要解决了尾部延迟、隔离和可视化、效率和安全三大问题。

  • 尾部延迟:基于每个数据包的硬件辅助延迟的拥塞控制、选择性ACK实现快速丢失恢复、支持多路径的连接。
  • 隔离和可视化:在每个流中加入了流量整形、软件定义的网络控制。
  • 效率和安全:实现低时延的效率和安全性,提供可编程和可选的加密服务。

三层Falcon协议

Falcon 大致可以分为三层。

  • 上层协议映射,将ULP操作映射到 Falcon连接中,例如写入、读取、发送、接收等;
  • 中间事务层公开请求 ULP的响应事务接口以及一些其他功能;
  • 最底层是数据包传输层,本质上处理所有与网络相关的功能,拥塞控制、可靠性、多路径等等。

将上层协议(ULP)映射到 Falcon,扩展了行业标准接口以支持超大规模应用。Falcon引入了松弛排序模式对于可能无序到达的数据包进行重新排序,包括弱排序和无序排序。此外还有一些其他错误处理方案,例如在不破坏连接的情况下向应用程序发送错误信号。

事务层的工作主要包括向ULP公开请求/响应接口;确保ULP所期望的排序语义;根据QoS策略安排线路上的事务以及管理有限的Falcon资源以进行隔离和死锁预防。

最底层的数据包传输层负责:

  • 基于延迟的拥塞控制,实现低延迟和高利用率。
  • 对应用程序透明地利用网络结构中的多条路径。
  • 端到端可靠交付:及时重传丢失的数据包、基于硬件的重传、Ack聚合用于高操作速率。

Falcon 中的拥塞控制

Swift 是一种基于延迟的数据中心拥塞控制,可实现低延迟、高利用率、近零损耗,完全在终端主机和网卡上实现,支持各种工作负载,如跨延迟敏感、突发和IOP密集型应用程序的大规模incast,在异构数据中心无缝工作。

速率更新引擎具有可编程性,实际上负责 Swift、负载平衡和多路径计算。

如下图所示,Falcon在延迟和丢包等方面的表现都不俗。

总的来说,Falcon 提供超大规模可预测性能,低尾部延迟、巨大的应用程序带宽、缓解拥塞和高效的网络利用率;硬件加速实现了高消息速率、高带宽、低延迟和连接扩展;在日常需求方面能够满足关键工作负载、HPC和AI的要求;也适用于卸载存储和RPC。

Falcon技术规范将在 2024年第一季度发布。

VxWorks