前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >RDMA over Falcon Transport V1.0

RDMA over Falcon Transport V1.0

原创
作者头像
晓兵
发布2024-12-29 22:49:42
发布2024-12-29 22:49:42
1120
举报
文章被收录于专栏:DPU

规范修订版 1.0 提交日期:2024 年 4 月 4 日 批准日期:待定, 作者:Prashant Chandra,Google

术语

CID: 连接ID

1. 许可

本规范的贡献均根据开放网络基金会贡献者许可协议(“OWF CLA 1.0”)(“贡献许可”)中规定的条款和条件进行:Google 对本规范的使用受开放网络基金会最终规范协议(“OWFa 1.0”)中规定的条款和条件的约束。

2. 遵守OCP原则

2.2 效率

该规范符合效率原则。Falcon 通过结合三个关键见解来实现高性能,这些见解可在高带宽但有损的标准以太网数据中心网络中实现低延迟。细粒度的硬件辅助往返时间 (RTT) 测量与灵活的每流硬件强制流量整形以及快速准确的数据包重传相结合,并具有多路径功能和 PSP 加密的 Falcon 连接。在此基础上,Falcon 从一开始就被设计为一种多协议传输,能够支持具有广泛不同性能要求和应用程序语义的上层协议 (ULP)。ULP 映射层不仅提供与 Infiniband™ Verbs RDMA 和 NVMeⓇ ULP 的开箱即用兼容性,而且还包括对仓库规模应用程序至关重要的其他创新,例如灵活的排序语义和优雅的错误处理。最后但同样重要的一点是,硬件和软件经过共同设计,共同协作,帮助实现高消息速率、低延迟和高带宽的期望属性,同时保持可编程性和持续创新的灵活性。

2.3 影响

该规范符合影响原则,引入了一项新技术,帮助行业实现以太网现代化。Falcon 提供了一种有用的解决方案,可以解决大规模 AI/ML 训练、高性能计算和实时分析中具有高突发带宽、高每秒操作数和低延迟的苛刻工作负载。

2.4 规模

该规范从头开始设计,以在高带宽但有损的以太网数据中心网络中提供高带宽和低延迟,从而符合规模原则。此外,Falcon 由经过生产验证的大规模技术组成,包括 Carousel、Snap、Swift、保护性负载平衡和拥塞信号 (CSIG)。

2.5 可持续性

该规范符合可持续性原则,提供了一种高效的以太网传输技术,可最大限度地减少以太网网络内的重传和其他浪费的精力和能源。此外,该技术允许在标准以太网网络上运行各种高性能工作负载

3. 更新日志

4. 范围

本规范描述了 RDMA ULP 到 Falcon 传输协议的映射,包括数据包格式、支持的操作和错误处理模式。 不属于范围的是:

● Falcon 协议的详细信息。

● 应用程序使用 RDMA 或 Falcon 的详细信息。

● 在软件堆栈或硬件 NIC 中实现 RDMA/Falcon 的详细信息。

5. 概述

本规范描述了 RDMA ULP 到 Falcon 传输协议的映射,包括数据包格式、支持的操作和错误处理模式。 RDMA ULP 由 Infiniband Verbs 规范定义,并且 RDMA 通过 Falcon 传输的映射支持 Verbs 规范的可靠连接 (RC) 和不可靠数据报 (UD) 模式。

6. 协议架构

6.1 协议层

上图显示了 RDMA 作为 Falcon 之上的上层协议的协议分层。 Falcon 本身由两个子层组成:事务子层和数据包传送子层。 事务子层主要处理 ULP 事务,负责资源分配和事务排序。数据包传送子层主要处理网络数据包,负责可靠传送和拥塞控制

RDMA-over-Falcon 层定义了 RDMA 命令和完成到 Falcon 数据包的映射,以及用于在 RDMA-over-Falcon 对等体之间进行通信的线路协议

6.2 排序模式

RDMA-over-Falcon 支持三种排序模式:

● 强排序模式:此模式等同于 Infiniband Verbs 排序模型,要求按顺序放置数据并按顺序完成。

● 弱排序模式:此模式基于 iWarp 排序模型,支持无序放置数据并按顺序完成。

● 无序模式:此模式支持无序放置数据并按顺序完成。 下表描述了 RDMA 排序模式与 Falcon 排序模式的映射:

6.3 错误处理模式

RDMA-over-Falcon 定义了两种错误处理模式:

● Verbs 兼容模式:在此模式下,错误处理符合 Infiniband 规范定义的模型。错误通常通过异步事件 (AE) 在带外报告,许多错误通常对 QP 来说是致命的。

● 错误完成模式:在此模式下,错误通过常规完成在带内报告,导致错误操作失败,而 QP 继续运行。

6.4 支持的操作

RDMA-over-Falcon 在强排序模式下支持 Infiniband 规范中定义的所有 RDMA 操作码,并具有 Verbs 兼容错误处理模式。但是,使用其他排序和错误处理模式组合时会有一些限制。支持的操作如下表所述。与 Infiniband 一样,UD Op 大小限制为 1 MTU

6.5 流量控制

RDMA-over-Falcon 必须实现 Falcon 和 ULP 之间的基于信用的流量控制,如 Falcon 协议规范的 ULP 资源管理部分所述。基于信用的流量控制可用于限制单个 RDMA QP 对 Falcon 资源的使用。流量控制还可用于更粗粒度地控制 SR-IOV VF 级别或 PF 级别的资源消耗。除了基于信用的流量控制之外,实现还可以选择在 RDMA 和 Falcon 之间的接口上实现全局 Xon/Xoff 信号。在这种情况下,实现必须确保 Xoff 信号的断言不会阻止读取响应从 RDMA 发送到 Falcon。这对于避免协议死锁是必需的

6.6 将 RDMA QP 类型映射到 Falcon 连接

RDMA QP 和 Falcon 连接之间的映射取决于 QP 类型,并在以下章节中描述。每个 Falcon 连接由一对连接 ID (CID) 组成,每个方向的数据流对应一个连接 ID。RDMA QP 和 Falcon 连接之间的映射定义了如何确定发送队列 (SQ) 操作的 CID。

6.6.1 RC 队列对

对于可靠连接 (RC) 队列对,QP 和 Falcon 连接之间存在 1:1 关联,如上图所示。映射通过将关联的 CID 存储在 RC QP 的 QP 上下文中来指定,如上所示。

6.6.2 XRC 队列对

我们注意到 XRC 与 RC 的差异不会影响 RDMA-over-Falcon ULP 映射。这些差异在 RDMA ULP 中得到处理,如 Infiniband 规范中所述

6.6.3 UD 队列对

对于不可靠数据报 (UD) 队列对,QP 和连接之间的关联可以是多对多 (或 M:N)。上图显示了 2:2 映射的示例,其中 2 个 UD QP 映射到 2 个 Falcon 连接。UD QP 上的发送操作可以针对多个目的地 (因此可以针对多个 Falcon 连接)。对于 UD QP,通过将 CID 存储在与发送操作关联的地址句柄 (AH) 对象中来指定到 Falcon 连接的映射,如上图所示。

6.7 操作分段和重组

Falcon 事务最多可以是 MTU 大小。因此,RDMA-over-Falcon 层负责将软件发布的大型 Verbs 操作分段为 MTU 大小的 Falcon 事务,并将从 Falcon 收到的各个完成聚合到 op 级完成中并返回给软件。这种分段和重组仅适用于 RC 队列对,因为根据 Infiniband 规范,所有 UD 操作均限制为 1 MTU

上图显示了多 MTU SEND 操作的分段示例。RDMA-over-Falcon 层将大型 SEND 操作分解为 4 个推送事务。SEND first 和 SEND middle 操作是 MTU 大小的推送事务。SEND last 操作可以小于或等于 MTU 大小的推送事务。RDMA-over-Falcon 层生成的每个推送事务都包含 RDMA 基本标头 (RBTH) 以及序列号扩展传输标头 (SETH) 和偏移扩展传输标头 (OETH)。SETH 和 OETH 标头中包含的信息允许在弱排序模式下在目标上进行无序数据放置

上图显示了多 MTU WRITE 操作的分段示例。RDMA-over-Falcon 层将大型 WRITE 操作分解为 4 个推送事务。WRITE first 和 WRITE middle 操作是 MTU 大小的推送事务。WRITE last 操作可以小于或等于 MTU 大小的推送事务。RDMA-over-Falcon 层生成的每个推送事务都包含 RDMA 基本标头 (RBTH) 以及 RDMA 扩展传输标头 (RETH)。RETH 包含在每个推送请求中,以便目标可以无序放置传入数据,以支持弱有序模式和无序模式

上图显示了多 MTU READ 操作的分段示例。与多 MTU SEND 和 WRITE 操作不同,多 MTU READ 操作的分段必须考虑 Read WQE 中指定的散点-聚集列表 (SGL) 以放置读取响应。Infiniband 规范允许 SGL 列表包含多个片段,每个片段都有自己的 L-Key。为了支持无序操作模式,RDMA-over-Falcon 层必须根据 MTU 大小和片段边界将大型 READ 操作分解为多个拉取事务。拉取事务不得大于 MTU,也不能跨越片段边界。在上面的示例中,大型 READ 操作被分段为 6 个拉取事务。与 WRITE 和 SEND 情况不同,由于片段边界不能跨越的限制,READ 第一事务和 READ 中间事务可以小于 MTU。 RDMA-over-Falcon 层生成的每个拉取事务都包含 RDMA 基本标头 (RBTH) 以及 RDMA 扩展传输标头 (RETH)、序列号扩展传输标头 (SETH) 和接收器标记扩展传输标头 (STETH)。每个拉取请求中都包含 RETH,以便目标可以无序读取数据以支持弱序模式和无序模式。SETH 和 OETH 标头中包含的信息允许在弱序和无序模式下在发起方无序放置读取响应数据。

6.8 RDMA Falcon

契约 RDMA-over-Falcon 层假定所有 Falcon 传输实现都必须满足以下要求:

  1. Falcon 实现必须最多向 RDMA ULP 传送一个数据包一次。所有数据包重传和丢失恢复都必须在 Falcon 传输中处理,并且必须对 RDMA ULP 透明。如果 Falcon 因任何原因无法传送数据包,则必须向 RDMA ULP 报告错误,并可能将其作为连接断开事件发送给软件。
  2. Falcon 实现必须最多向 RDMA ULP 完成一次推送或拉取事务。
  3. 在强序模式下,Falcon 必须严格按照顺序向 RDMA ULP 传送数据包和完成。Falcon 实现应根据需要重新排序数据包和完成以在此模式下保持顺序。
  4. 不支持 Infiniband 不变循环冗余校验 (ICRC),并且 RDMA ULP 不对传送到 ULP 的 Falcon 数据包执行 ICRC 检查。
  5. RDMA ULP 不实施任何拥塞控制机制。拥塞控制应在 Falcon 传输中完全实施。

6.9 安全性

除了 Falcon 传输中提供的基本安全机制(身份验证、加密和重放保护)之外,RDMA-over-Falcon 层还为可靠连接 (RC) 队列对实施了额外的安全检查,以防止受感染的主机欺骗流量。 这些安全检查包括:

● 在从 Falcon 接收到数据包时,RDMA ULP 必须将接收到的数据包中的 Falcon 连接 ID (CID) 与与该 CID 关联的 QP 上下文中存储的 CID 进行检查。

● 如果 CID 与请求(拉取或推送)不匹配,则 RDMA ULP 必须将 NACK CID 响应返回给 Falcon。 此 NACK CID 响应不得停止对队列对的处理,因为与队列对关联的连接与传入数据包中的 CID 指示的连接不同。

● 如果 CID 与响应(推送完成或拉取响应)不匹配,则必须丢弃响应并且不得向 Falcon 提供 NACK 指示。这些检查可防止攻击者使用现有的 Falcon 连接将数据传送到可能属于不同应用程序或虚拟机的错误 QP。

7. RDMA 流程

以下部分描述了发起方和目标之间的 RDMA 操作流程。

7.1 RDMA 读取流程

RDMA 读取事务的生命周期如上图所示。假设该连接是有序连接。在发起方和目标方执行以下操作序列:

  1. 软件将 RDMA 读取请求发布到发送队列。这会导致 RDMA 协议引擎向 Falcon 发出两个拉取请求。创建这两个拉取请求是因为每个拉取请求的长度限制为一个 MTU,而原始读取请求大于一个 MTU。
  2. 发起方创建两个拉取请求数据包(RSN=1 和 RSN=2)并将它们传输到目标。数据包传送子层为这两个拉取请求数据包分配 PSN=100 和 PSN=101。
  3. 这两个拉取请求数据包被网络重新排序,并以无序方式到达目标。目标根据 RSN 重新排序这两个拉取请求并将它们传送到 RDMA 引擎。目标还触发生成 ACK 数据包以确认收到两个拉取请求数据包。在上图中,目标向发起者发送单个合并的 ACK。
  4. RDMA 块对每个拉取请求执行内存读取操作,并向目标返回拉取响应。
  5. 目标创建两个拉取数据包并将它们传输到发起者。数据包传送子层将 PSN=200 和 PSN=201 分配给拉取响应。
  6. 发起者接收两个拉取数据包并创建拉取响应返回给 RDMA 块。发起者还触发数据包传送子层生成 ACK 数据包,确认收到拉取数据包。
  7. 在发起者的 RDMA 块收到两个拉取响应后,RDMA 块创建读取完成并将完成发布到完成队列。

7.2 RDMA 写入流程

RDMA 写入事务的生命周期如上图所示。假设该连接是有序连接。在发起方和目标方执行以下操作序列:

  1. 软件将 RDMA 写入请求发布到发送队列。这会导致 RDMA 协议引擎向 Falcon 发出两个推送请求。创建这两个推送请求是因为每个推送请求的长度限制为一个 MTU,而原始写入请求大于一个 MTU。
  2. 发起方创建两个推送数据包(RSN=1 和 RSN=2)并将它们传输到目标。数据包传送子层为这两个推送数据包分配 PSN=300 和 PSN=301。
  3. 这两个推送数据包被网络重新排序,并以无序方式到达目标。目标根据 RSN 重新排序这两个推送数据包,并将它们传送到 RDMA 引擎。
  4. RDMA 块对每个推送请求执行内存写入操作,并将推送完成返回给 Falcon。收到推送完成之后,目标 Falcon 触发生成 ACK 数据包,确认收到两个推送数据包。在上图中,目标向发起者发送单个合并的 ACK。
  5. 收到推送数据包的 ACK 后,发起者将两个推送完成发送回 RDMA 块。
  6. 发起者的 RDMA 块收到两个推送完成之后,RDMA 块创建一个写入完成并将完成发布到完成队列

8. 有线协议

此 RDMA-over-Falcon 有线协议定义了发起方和目标系统之间交换的消息,以支持 RDMA 操作和完成。RDMA-over-Falcon 有线协议利用 Falcon 在网络上可靠地传输消息,并且可以使用 Falcon 的严格排序模式或无序模式

RDMA 发起方和目标之间的高级协议交换如上图所示。

8.1 数据包格式

RDMA-over-Falcon 使用的数据包格式如下图所示。RDMA 数据包封装在 Falcon 数据包的有效负载内。RDMA 为发起方和目标之间的通信定义了多种数据包类型,这些类型在下表中列出,并在后续章节中详细描述

8.1.1 传输方式

8.1.2 隧道模式

8.1.3 RDMA 包类型

8.2 RDMA Base Transport Header (RBTH) 基本传输头

每个 RDMA-over-Falcon 数据包中都必须有 RDMA 基础传输头 (RBTH)。RBTH 的格式如上图所示。下表记录了头中各个字段的定义

8.3 RDMA Extended Transport Headers 扩展传输头

RDMA-over-Falcon 使用多个扩展传输头,这些扩展传输头在以下章节中定义。RDMA-over-Falcon 数据包中包含的扩展传输头的顺序取决于 RDMA 操作,并记录在此处的表格中。

8.3.1 RDMA 扩展传输头 (RETH)

RDMA 扩展传输头 (RETH) 用于 RDMA 读取和 RDMA 写入操作,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

8.3.2 Sequence Number Extended Transport Header (SETH)

序列号扩展传输头 (SETH) 用于支持弱序模式下的无序数据放置,其格式如上图所示。下表描述了头中的各个字段。

8.3.3 Offset Extended Transport Header (OETH)

偏移扩展传输头 (OETH) 用于支持弱序模式下的无序数据放置,其格式如上图所示。下表描述了头中的各个字段

此字段将字节偏移量编码到发送数据包的第一个字节的消息中。对于无序数据放置,目标会查找相关 RQ WQE(由 SETH 标识)的分散/聚集列表,以将数据包字节放置在目标缓冲区中

8.3.4 Sink Tag Extended Transport Header (STETH)

接收器标签扩展传输头 (STETH) 用于支持发起方读取响应数据的无序数据放置,其格式如上图所示。下表描述了头中的各个字段。STETH 由发起方插入到读取请求数据包中,并且必须由目标在相应的读取响应数据包中返回。

8.3.5 Immediate Extended Transport Header (ImmDt)

Immediate 扩展传输头 (ImmDt) 用于 RDMA Send with Immediate 和 RDMA Write with Immediate 操作,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

该字段对必须由目标放入完成队列条目中的 32 位立即数据进行编码

8.3.6 Atomic Extended Transport Header (AtomicETH)

Atomic 扩展传输头(AtomicETH)用于 RDMA Atomic 请求数据包,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

8.3.7 Atomic Acknowledgement Extended Transport Header (AtomicAckETH)

Atomic Acknowledged 扩展传输头(AtomicAckETH)用于 RDMA Atomic 响应数据包,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

Atomic 操作产生的数据。此字段对 Atomic 请求中指定的地址处的原始值进行编码

8.3.8 Invalidate Extended Transport Header (IETH)

Invalidate 扩展传输头 (IETH) 用于 RDMA Send with Invalidate 操作,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

一旦目标收到并执行带有无效请求的 SEND,目标就会使用此 R-Key 来使内存区域或内存窗口无效。

8.3.9 XRC Extended Transport Header (XRCETH)

XRC 扩展传输头(XRCETH)用于实现 XRC 传输服务的发起方发送的所有请求数据包中,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

此字段对目标用于此数据包的 XRC 共享接收队列号进行编码。

8.3.10 Datagram Extended Transport Header (DETH)

数据报扩展传输头 (DETH) 用于不可靠数据报 (UD) 队列对上的 RDMA 发送操作,其格式与 Infiniband 规范中定义的格式相同(如上图所示)。下表描述了头中的各个字段。字段的权威定义及其编码规则由 Infiniband 规范提供

参考

rdma-over-falcon-spec-v1.pdf

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 术语
  • 1. 许可
  • 2. 遵守OCP原则
    • 2.2 效率
    • 2.3 影响
    • 2.4 规模
    • 2.5 可持续性
  • 3. 更新日志
  • 4. 范围
  • 5. 概述
  • 6. 协议架构
    • 6.1 协议层
    • 6.2 排序模式
    • 6.3 错误处理模式
  • 6.4 支持的操作
    • 6.5 流量控制
    • 6.6 将 RDMA QP 类型映射到 Falcon 连接
      • 6.6.1 RC 队列对
      • 6.6.2 XRC 队列对
      • 6.6.3 UD 队列对
    • 6.7 操作分段和重组
    • 6.8 RDMA Falcon
    • 6.9 安全性
  • 7. RDMA 流程
    • 7.1 RDMA 读取流程
    • 7.2 RDMA 写入流程
  • 8. 有线协议
    • 8.1 数据包格式
      • 8.1.1 传输方式
      • 8.1.2 隧道模式
      • 8.1.3 RDMA 包类型
    • 8.2 RDMA Base Transport Header (RBTH) 基本传输头
    • 8.3 RDMA Extended Transport Headers 扩展传输头
      • 8.3.1 RDMA 扩展传输头 (RETH)
      • 8.3.2 Sequence Number Extended Transport Header (SETH)
      • 8.3.3 Offset Extended Transport Header (OETH)
      • 8.3.4 Sink Tag Extended Transport Header (STETH)
      • 8.3.5 Immediate Extended Transport Header (ImmDt)
      • 8.3.6 Atomic Extended Transport Header (AtomicETH)
      • 8.3.7 Atomic Acknowledgement Extended Transport Header (AtomicAckETH)
      • 8.3.8 Invalidate Extended Transport Header (IETH)
      • 8.3.9 XRC Extended Transport Header (XRCETH)
      • 8.3.10 Datagram Extended Transport Header (DETH)
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档