LoWAR: Enhancing RDMA over Lossy WANs with Transparent Error Correction

文章目录

    • 摘要
    • [I. 引言](#I. 引言)
    • [II. 背景与动机](#II. 背景与动机)
      • [A. RDMA 基础](#A. RDMA 基础)
      • [B. WAN 中的 RDMA](#B. WAN 中的 RDMA)
      • [C. 有损 WAN 中的 RDMA](#C. 有损 WAN 中的 RDMA)

摘要

随着地理分布式应用持续增长,跨广域网(WAN)的高速、长距离数据传输需求显著增加。远程直接内存访问(Remote Direct Memory Access,RDMA)由于具备高吞吐、低时延和较低 CPU 使用率,已经在数据中心网络(DCN)中得到广泛部署;将 RDMA 扩展到 WAN 中,有望充分发挥这些优势。然而,现有 RDMA 方案虽然在数据中心中表现优越,但由于依赖 DCN 才能获得最优性能,并且缺乏针对 WAN 高时延和较高丢包率的优化,因此在 WAN 中存在性能差距。

为弥合这一差距,本文提出 Lossy Wide-Area RDMA(LoWAR),这是一种面向有损 WAN 的高有效吞吐、高可靠 RDMA 方案。LoWAR 引入一个前向纠错(Forward Error Correction,FEC)垫片层,用于保护 RDMA 消息免受丢包影响,从而尽量降低重传带来的低效。同时,它将处理完全卸载到 RNIC 上,以极小的计算开销和存储负担透明地运行在 RNIC 中,不要求修改现有应用和网络。我们使用 FPGA 实现了 LoWAR 原型,并通过测试床实验评估其性能。结果表明,LoWAR 在有损 WAN 中具有更好的性能:在 RTT 为 40 ms、丢包率为 0.001% 到 0.01% 的 WAN 中,LoWAR 将 RDMA 有效吞吐提升 2.05 到 5.01 倍,将平均流完成时间(FCT)降低 3.5% 到 12.2%,并且在大多数场景下消除了 99 分位长尾 FCT。

注:

  • FCT。 FCT 是 Flow Completion Time,即"流完成时间",表示一条 RDMA 传输或一条消息从开始到完成花了多久。
  • 99 分位 FCT / P99 FCT。 将很多流的完成时间从小到大排序,排在 99% 位置的值就是 P99 FCT。它代表"绝大多数流里最慢的一批"的完成时间表现。
  • 长尾 FCT。 长尾指少数流因为丢包、重传、等待超时等原因,完成时间远远高于普通流。例如大多数流 50 ms 完成,但最慢 1% 的流因为丢包重传变成 300 ms 或 500 ms,这就是明显长尾。
  • "消除 99 分位长尾 FCT"的含义。 这里不是说 FCT 变成 0,而是说最慢那 1% 的流不再异常变慢。没有 LoWAR 时,P99 流可能因为 GBN 重传和等待 WAN RTT 被拉长;使用 LoWAR 后,FEC 修复包可以在接收端本地恢复丢包,使 P99 FCT 更接近普通流的完成时间,从而减少或消除明显拖尾。

索引词:远程直接内存访问,广域网,前向纠错

I. 引言

过去十年中,远程直接内存访问(RDMA)已经成为高速数据中心网络(DCN)中的关键技术 1。RDMA 受益于内核旁路和硬件卸载协议,能够提供高吞吐、低时延和极低的 CPU 使用率。融合以太网上的 RDMA(RDMA over Converged Ethernet,RoCE)目前已经广泛应用于大型数据中心 2-4,并成为 DCN 中事实上的标准。

与此同时,地理分布式应用不断增加,用于提供大规模在线服务,包括高性能计算、云存储、分布式或联邦机器学习等 5-9。如图 1 所示,这些应用跨越位于不同地区或不同大陆的多个数据中心,并依赖跨数据中心 WAN 进行通信。Meta 10 和 Google 11 等主要服务提供商已经扩展其全球 WAN 以满足这些需求,在某些情况下,Google 提供的链路带宽可达 100 Gbps 12

图 1:WAN 上 RDMA 的新兴应用场景。

注:

  • WAN 与 Inter-DC WAN。 WAN 是广域网(Wide Area Network),这里主要指跨城市、跨地区甚至跨国家的数据中心之间的网络。Inter-DC WAN 是 Inter-Data-Center WAN,也就是"数据中心之间的广域网"。

  • 图 1 的核心含义。 图中不是说很多应用都连到同一个应用服务器,而是在抽象表示:很多分布式应用会部署在多个数据中心中。每个数据中心内部可以使用很快的 RDMA/DCN 通信;一旦需要跨地域同步、备份、训练、容灾或内容分发,就必须经过中间的 Inter-DC WAN。

    text 复制代码
    数据中心 A 内部:RDMA 很快
            |
            | 需要跨地域同步/通信
            v
    Inter-DC WAN,也就是数据中心之间的广域网
            |
            v
    数据中心 B 内部:RDMA 很快
  • 为什么图里有很多应用。 Storage、GPU Cluster、Financial Services、Streaming Media、Industry 等并不是都连接到一个中心节点,而是代表不同类型的跨数据中心业务。它们共同依赖 Inter-DC WAN 这类基础网络来完成跨地域的数据交换,所以论文才关心"RDMA 能不能更好地跑在有损 WAN 上"。

传输需求和 WAN 容量的同步增长提出了一个问题:RDMA 在 DCN 中的成功能否复制到 WAN 中?考虑到 RDMA 在 WAN 中的收益,本文对此持肯定态度。与 TCP 相比,RDMA 在 WAN 中表现出优秀的带宽利用率 13-15;而 TCP 在高带宽时延积(BDP)环境中表现吃力,并且需要大量内核调优 16。由于 RDMA 已经是现代数据中心内部应用的典型传输协议,将其用于跨数据中心网络可以避免不同软件接口之间的切换,从而简化地理分布式应用的部署。此外,随着跨数据中心通信规模扩大,RDMA 的低 CPU 开销愈发有利。节省下来的 CPU 资源可以分配给非通信任务,从而提升分布式系统的整体效率。

然而,将 RDMA 适配到 WAN 也面临显著障碍。WAN 本身具有较高时延,范围通常从数毫秒到数十毫秒;同时,WAN 也存在较高丢包率,典型范围为 0.001% 到 0.1% 17-20。商业 RoCE 虽然针对无损 DCN 进行了优化,但由于采用 go-back-N(GBN)重传,在有损链路上表现不佳。该退化在往返时间(RTT)更长的 WAN 中尤其明显。虽然一些方案 21-25 尝试通过用选择性重传(selective retransmission,SR)替代 GBN 来支持有损 RDMA,但它们主要针对 DCN 优化,并不适合高时延、有损 WAN。因此,需要一种针对 WAN 优化的有效 RDMA 方案,绕开重传的缺陷,以确保在有损 WAN 中获得最佳性能。

前向纠错(Forward Error Correction,FEC)是一条有前景的路径。它提供与时延无关的丢包恢复能力,并且比 GBN 重传引入的带宽浪费消耗更少的额外带宽。端到端 FEC 不需要修改 WAN 基础设施,因此具有成本效益,也便于部署。此外,FEC 预期可以受益于 RDMA NIC(RNIC)的硬件卸载能力,从而降低编码和解码计算带来的计算负担。

注:

  • "与时延无关"的含义。 这里不是说 FEC 完全没有延迟,而是说丢包恢复不需要再走一轮 WAN RTT。GBN 重传需要经历"发现丢包 -> 通知发送端 -> 发送端重传 -> 接收端收到重传包"的过程,在 40 ms、80 ms 甚至更高 RTT 的 WAN 中代价很大。FEC 则会提前发送少量修复包;如果某个数据包丢失,接收端可以用已收到的数据包和修复包在本地恢复它,因此恢复过程不依赖远端重传返回。
  • 为什么比 GBN 少浪费带宽。 GBN 的问题是"一处丢包,回退重传一串包"。例如发送 D1 D2 D3 D4 D5 D6,如果只丢了 D2,接收端其实可能已经收到了 D3-D6,但 GBN 仍可能从 D2 开始重传后面一串包,导致大量重复发送。FEC 的额外带宽则主要是提前发送少量修复包,例如 D1 D2 D3 D4 + R;只要丢包数量在修复能力内,接收端可以用 R 恢复丢包,而不需要把后续数据包整体重传。
  • LoWAR 的动机。 因为 WAN 的 RTT 大、丢包恢复等待成本高,所以 LoWAR 选择在 RNIC 中加入硬件卸载的 FEC 垫片层,用"本地纠错"尽量替代"跨 WAN 重传"。

图 2:LoWAR 的工作流程。

注:

  • 图 2 的上下两条路径。 上半部分表示没有 LoWAR:发送端发出 1 2 3 4 5 6,WAN 中丢了 34,接收端只能得到 1 2 _ _ 5 6,于是 RDMA/RoCE 需要触发 GBN 重传。下半部分表示有 LoWAR:发送端除了发原始数据包,还额外发蓝色修复包;接收端收到 1 2 _ _ 5 6 和修复包后,可以先在 LoWAR 层本地恢复 34,再把完整的 1 2 3 4 5 6 交给上层 RDMA。
  • 修复包不是完整备份。 修复包可以理解为 XOR 校验信息,而不是把所有数据包复制一遍。一个简化例子是:R1 = D1 XOR D3 XOR D5R2 = D2 XOR D4 XOR D6。如果 D3 丢了,但接收端收到了 D1D5R1,就可以计算 R1 XOR D1 XOR D5 = D3;同理,如果 D4 丢了,收到 D2D6R2 后,可以计算 R2 XOR D2 XOR D6 = D4
  • 为什么 XOR 能恢复。 XOR 的关键性质是同一个值异或两次会抵消,即 A XOR B XOR B = A。因此,修复包里混合了同组数据包;接收端用已经收到的数据包把对应部分抵消掉,剩下的就是丢失的数据包。
  • 一个具体 4-bit 例子。 对网络包做 XOR,本质上是对相同位置的 bit 一位一位做 XOR。假设三个很短的数据包分别是 D1 = 1010D2 = 0110D3 = 1100,修复包为 R = D1 XOR D2 XOR D3 = 0000。如果 D2 丢失,接收端仍有 D1D3R,于是可以计算 D2 = R XOR D1 XOR D3 = 0000 XOR 1010 XOR 1100 = 0110,从而恢复出 D2
  • 恢复能力的限制。 不是只要有修复包就一定能恢复所有丢包。只有当每个修复组内的丢包数量没有超过修复包的纠错能力时,接收端才能反推出丢失包。如果同一组里丢了太多包,例如 R1 = D1 XOR D3 XOR D5D3D5 都丢了,接收端只能得到 D3 XOR D5,无法区分二者,就需要退回 RDMA 的重传机制。

不过,要将 FEC 无缝集成到 RDMA 中,还会遇到若干关键挑战:

  • 透明性:应避免 CPU 参与,并避免修改现有上层应用。
  • 兼容性:应兼容 RDMA 基于消息的传输方式,为不同大小的消息提供统一保护。
  • 简洁性:应保持 RDMA 的高速特性,优化硬件利用率并尽量降低计算时延。
  • 可调节性:应支持可调参数,以适应不同网络条件。

本文提出 Lossy Wide-Area RDMA(LoWAR),一种面向有损 WAN 的高有效吞吐、高可靠方案。如图 2 所示,LoWAR 采用一个 FEC 垫片层来保护 RDMA 消息免受丢包影响。它从发出的 RDMA 消息中生成修复包,将修复包与数据包一起传输,并在接收端恢复受损消息,从而缓解重传及其相关低效。LoWAR 透明工作,无需修改主机应用或网络基础设施。它完全由硬件卸载,并以极小的存储和时延开销实现实时丢包恢复。同时,LoWAR 通过头部扩展引入双向协商,以支持可调的 FEC 参数。

我们使用 FPGA 实现了 LoWAR 原型,并通过测试床实验评估其效率。结果表明,LoWAR 在有损 WAN 中具有高有效吞吐和高可靠性。具体而言,在 RTT 为 40 ms、丢包率为 0.001% 到 0.01% 的 WAN 中,LoWAR 将 RDMA 有效吞吐提升 2.05 到 5.01 倍,将流完成时间(FCT)降低 3.5% 到 12.2%,并在大多数场景下消除 99 分位长尾 FCT。

本文的主要贡献如下:

  • 探索使用端到端 FEC 增强有损 WAN 上的 RDMA,详细分析其中的挑战,并提出集成策略(第 III 节)。
  • 提出 LoWAR,这是一种高有效吞吐、高可靠方案,能够将 FEC 无缝集成到 RDMA 中,从而优化有损 WAN 中的 RDMA 性能(第 IV 节)。
  • 使用 FPGA 实现 LoWAR 原型,并通过测试床实验进行评估。结果确认了 LoWAR 在有损 WAN 中的效率提升(第 V 节和第 VI 节)。

II. 背景与动机

A. RDMA 基础

RDMA 是一种硬件协议,允许在远端主机上进行直接内存访问,而无需 CPU 介入。通过利用 RNIC 硬件卸载传输,RDMA 相较于 TCP 等传统软件传输方式,能够提供更高吞吐、更低时延和更低 CPU 开销。

基于消息的传输。 RDMA 作为一种基于消息的协议运行。消息是 RDMA 传输的基本单位。根据传输请求,一个消息可能包含一个或多个数据包。用户调用称为 verbs 的内核旁路、零拷贝接口来发起传输请求。随后,RNIC 通过 DMA 直接从请求指定的内存地址中取出数据,根据 RoCE MTU(即每个包的最大载荷)封装消息,并追加 RDMA 传输头。每个包包含一个操作码(OpCode),它定义消息语义,并通过标识每个消息中的 First、Middle、Last 或 Only 包,在同一个队列对(QP)中区分不同消息。

可靠传输。 商业 RoCE 在可靠连接中使用 GBN 重传。为此,每个包包含一个包序列号(Packet Sequence Number,PSN),当序列中断时,会从丢失包开始触发重传请求。GBN 重传在 RDMA 最初的 InfiniBand 实现中运行良好,因为底层链路保证极低丢包率,复杂丢包恢复对 RNIC 硬件而言可能是不必要开销 1。然而,当链路有损时,这种简单性会导致低效,因为任何包丢失本质上都会导致整个 RTT 内的带宽浪费。因此,商业 RoCE 依赖无损链路才能获得最优性能。

有损 RDMA。 为了使 RDMA 适配一般有损链路,已有工作研究了基于选择性重传(SR)的有损 RDMA。在硬件 SR 方面,IRN 22 通过每连接静态位图实现 SR,位图用于跟踪乱序包并支持选择性确认。SRNIC 24 将重排序缓冲区和位图放到主机内存中,并通过软硬件协同设计处理选择性重传,从而消除了 RNIC 为 SR 提供存储空间的需求。近期商业 RNIC,例如 Mellanox ConnectX-6 21,也开始在某些场景中集成 SR 能力。在软件方面,RoGUE 23 和 Flor 25 在商业 RNIC 上引入软件覆盖层,基于不可靠 RDMA 连接实现可靠传输和选择性重传。

B. WAN 中的 RDMA

随着 RDMA 在 DCN 中日益关键,将其扩展到 WAN 中既有益也有必要。与传统 TCP 相比,RDMA 提供显著更高的带宽利用率和更低的 CPU 开销。这对 WAN 上的大规模数据传输等高吞吐应用尤其有益。将 RDMA 与 GridFTP 集成的研究 26 表明,在 10 Gbps 链路、120 ms 时延下,单流 RDMA 相比 TCP 实现了 20% 的吞吐提升,凸显其更高效率。另一项在 ESnet 测试床 28 的 40 Gbps 链路上进行的研究 27 表明,RDMA 能够充分利用 WAN 容量,而 TCP 吞吐难以超过 RDMA 的一半。此外,TCP 在发送端和接收端的 CPU 使用率可达到 100%,而 RDMA 的 CPU 使用率显著较低,仅为 1%-2%,因为 RDMA 消除了不必要的数据拷贝和上下文切换。其他研究 15, 29-31 也通过大量实验展示了 RDMA 在 WAN 中的高效率。主流高速数据中心内部应用已经选择 RDMA 作为传输协议。将 RDMA 扩展到 WAN 有助于在 WAN 中高效部署这些应用,保持接口一致性,并避免在基于 TCP 和基于 RDMA 的通信模式之间切换的额外成本。

C. 有损 WAN 中的 RDMA

除高时延外,真实广域网还会因多种因素遭遇显著的非拥塞丢包,例如随机比特错误、光链路退化 32、软件或硬件故障等。研究 18 指出,在头部云服务商运营的跨数据中心云链路中,数据包丢失率约为 0.01% 到 0.07%;在这些丢包中,随机丢包的占比最高可达 65%。基于真实跨数据中心负载的经验 20 也显示,包丢失率接近 0.01%。此前研究 17 还表明,长距离光链路中的非拥塞丢包率范围为 0.01% 到 0.1%,并可能以单包或突发形式出现。

商业 RoCE 依赖无损链路实现最优性能。然而,在有损 WAN 中,由于较高丢包率,GBN 重传会频繁触发,并由于 WAN 的高 RTT 带来明显带宽浪费。我们在有损 WAN 中测试了 ConnectX-5 RNIC 的性能,包括有效吞吐和 FCT,测试环境为 10 Gbps 链路、40 ms RTT(测试床细节见第 VI 节)。实验显示,商业 RoCE 的性能发生明显退化。

图 3:有损 WAN 上 RDMA 的性能退化。

注:

  • 图 3 的整体读法。 图 3(a) 看的是有效吞吐(Goodput)随包丢失率(Loss Rate)的变化,比较商用 ConnectX-5 RNIC/RoCE 在 LAN、WAN 单连接、WAN 多连接下的表现。图 3(b) 看的是 1 MB 消息在 WAN 中的流完成时间(FCT)分布,用来说明丢包不仅降低吞吐,还会拉长完成时间并制造长尾。

  • 为什么 LAN 在低丢包率下 Goodput 几乎不变。 蓝色 LAN 曲线不是"无损以太网曲线",因为横轴仍然在改变丢包率;它表示低 RTT 的 LAN 场景。GBN 的主要代价可以近似理解为:一次丢包会浪费一个 RTT 内已经发出去的一批在途数据,而在途数据量由 BDP = 带宽 x RTT 决定。LAN 的 RTT 很小,所以 BDP 小,一次 GBN 回退牵连的数据少、恢复也快,因此低丢包率下 Goodput 看起来几乎不下降。WAN 的 RTT 很大,例如论文实验中使用 40 ms WAN,在 10 Gbps 链路上一个 RTT 内可能有约 50 MB 在途数据;同样丢一个包,GBN 牵连的数据量就大得多,所以 Goodput 会明显下降。

  • LAN 与 WAN 的主要区别。 这里的差异主要不是"是否会丢包",因为图中横轴已经统一改变丢包率;真正关键的是 RTT/传播时延。

    对比项 LAN WAN
    网络范围 数据中心内部/局域网 跨地域或跨数据中心广域网
    RTT/传播时延 很小 很大,论文实验中使用 40 ms WAN
    丢包后的 GBN 重传代价 等待时间短,带宽浪费相对有限 等待时间长,会浪费一个较长 RTT 内本来可以继续发送的数据量
    图 3(a) 中的表现 较低丢包率下仍能保持较高 Goodput 同样的丢包率会造成更严重的 Goodput 下降
  • 图 3(a) 的四条曲线。

    曲线 含义 主要现象
    LAN 蓝色三角,低 RTT 的局域网/数据中心内 RDMA 场景 低丢包率下仍接近线速,说明 GBN 重传代价较小
    WAN 1 conn. 橙色方块,WAN 中只使用 1 条 RDMA 连接 下降最快,因为高 RTT 放大了 GBN 的连带浪费
    WAN 16 conn. 绿色菱形,WAN 中使用 16 条并行 RDMA 连接 比单连接更抗丢包,因为重传浪费被摊薄到多条连接上
    WAN 32 conn. 红色圆点,WAN 中使用 32 条并行 RDMA 连接 相比 16 条连接收益有限,说明并行连接的收益会饱和
  • 图 3(b) 的读法。 图 3(b) 看的是 FCT(Flow Completion Time,流完成时间):在有损 WAN 中,用普通商用 RoCE/CX-5 传一个常见的 1 MB RDMA 消息,丢包率升高后,这个消息完成传输要多久。

    元素 含义
    横轴 Loss Rate 丢包率, 10 − 5 10^{-5} 10−5、 10 − 4 10^{-4} 10−4、 10 − 3 10^{-3} 10−3、 10 − 2 10^{-2} 10−2 分别约等于 0.001%、0.01%、0.1%、1%
    纵轴 FCT(ms) 流完成时间,单位毫秒,越低越好
    红色虚线 20.926 可理解为无丢包 WAN 下的基准 FCT,大约 20.926 ms
    每个箱线图 在某个丢包率下,多次 1 MB 传输的 FCT 分布
    黑色圆点 异常慢的流,也就是长尾 FCT

    图 3(b) 的核心结论是:丢包率越高,FCT 不仅平均变大,而且长尾越来越严重。低丢包率下,大多数 1 MB 消息接近 20.926 ms 完成;高丢包率下,很多消息可能需要几十毫秒、几百毫秒,甚至接近 1000 ms 才完成。原因是商用 RoCE 使用 GBN 重传:一旦包丢了,它可能从丢失包开始重传后面一串包;如果重传包又丢了,还会再次触发重传。WAN 的 RTT 又很大,所以每次重传都会把完成时间明显拉长。这说明有损 WAN 不只是让 RDMA 吞吐下降,还会让消息完成时间变得不稳定,产生明显长尾。

  • 16/32 conn. 为什么能缓解。 这里的 conn. 是 connection,不是 16/32 条物理网线、网卡或数据中心;在 RDMA/RoCE 语境中,一条连接通常可以理解为一条独立的可靠 RDMA 连接,常对应一个独立的 QP,拥有自己的包序号、发送状态和重传状态。

    使用多条并行连接时,应用可以把数据分散到多条 RDMA 连接上传输。如果某一条连接发生丢包,GBN 重传主要影响这条连接自身,其他连接仍可继续推进。因此,并行连接可以把单条连接上的重传浪费摊薄,使总吞吐明显高于 1 条连接;但从 16 条增加到 32 条收益已经趋于饱和,而且并非所有应用都适合使用大量并行连接。

    一个简化例子是:假设一个 WAN RTT 内总共能发送 3200 个包,链路丢包率仍然是 1‰。如果只使用 1 条 RDMA 连接,那么这 3200 个包基本都排在同一条连接里;其中某个包丢失后,GBN 可能从该包开始重传后面一串已经发出的包,影响范围很大。如果使用 32 条并行连接,可以近似理解为每条连接承担约 100 个包;某条连接丢包时,GBN 主要回退这条连接内的包,其他 31 条连接仍可继续前进。因此,并行连接没有降低单个包的物理丢包率,而是降低了每次丢包造成的连带重传浪费。

有效吞吐降低。 如图 3a 所示,在 WAN 设置中,虽然 CX-5 在单连接下可以以 9.21 Gbps 的有效吞吐打满链路,但只要 0.001% 的丢包就会使有效吞吐骤降到 2.92 Gbps,并在丢包率超过 0.1% 时下降到接近零。相比之下,在 LAN 设置中,只有当丢包率超过 0.5% 后才观察到显著吞吐下降。采用并行连接会稀释单个 RTT 内每条连接传输的数据量,从而降低重传成本。尽管如此,其收益会达到平台期,例如从 16 条并行连接增加到 32 条并不会带来额外收益,而且并非所有应用都兼容并行连接。

FCT 增加。 图 3b 测试了 WAN 设置中常见 1 MB 消息的流完成时间。随着丢包率升高,FCT 也随之增加,并偏离无损 WAN 中观察到的结果。包丢失还会引入显著的长尾 FCT,因为丢失的重传包会进一步触发重传。

有损 RDMA 方案通过选择性重传消除了商业 RoCE 对无损链路的依赖,并在通用以太网中实现更好性能(achieving improved performance in general ethernet)。然而,这些方案面向 DCN 设计和优化,而 DCN 具有相对较低的时延和丢包率,因此不太适合高时延有损 WAN。一方面,随着 RTT 和丢包率增加,它们对片上内存和 CPU 的需求会上升,从而提高部署成本;另一方面,重传时延的长尾效应没有得到充分缓解,这会给时延敏感或依赖同步的应用带来潜在挑战。

受有损 WAN 中重传不便的启发,我们提出利用 FEC 绕开重传需求。本文系统分析 FEC 集成的考虑因素,并基于推导出的策略,在有损 WAN 中实现高有效吞吐、高可靠 RDMA。