When RDMA Meets Wireless

文章目录

    • 摘要
    • [I. 引言](#I. 引言)
    • [II. 相关工作](#II. 相关工作)
    • [III. W-RDMA 概览](#III. W-RDMA 概览)
      • [A. W-RDMA 架构](#A. W-RDMA 架构)
      • [B. W-RDMA 协议栈](#B. W-RDMA 协议栈)
      • [C. 应用 W-RDMA 的挑战](#C. 应用 W-RDMA 的挑战)
    • [IV. W-RDMA 测试床](#IV. W-RDMA 测试床)
    • [V. 测试床评估](#V. 测试床评估)
    • [VI. 未来机会](#VI. 未来机会)
    • [VII. 结论](#VII. 结论)
    • [VIII. 致谢](#VIII. 致谢)

摘要

包括增强现实/虚拟现实(Augmented Reality / Virtual Reality, AR/VR)交互游戏、超高清直播、4K 无线投屏、元宇宙等在内的新兴应用,意味着无线传输需要超低时延和超高带宽。传统内核 TCP 协议栈并不能完全满足这些需求,因为它会在主机端引入 CPU 瓶颈。本文提出无线 RDMA(Wireless-RDMA, W-RDMA),使无线网络能够使用远程直接内存访问(Remote Direct Memory Access, RDMA),从而解决无线主机上的 CPU 瓶颈问题。本文通过测试床实验展示了 W-RDMA 的可行性,并进一步讨论了技术挑战和未来机会。我们认为,这是让 RDMA 支持无线传输的一小步,但也是关键一步。

索引词:RDMA;无线网络;CPU 卸载;高带宽

I. 引言

近年来,随着高分辨率移动终端的普及,基于视频的交互式应用迅速发展,例如 AR/VR 交互游戏、超高清(Ultra-High Definition, UHD)直播、4K 无线投屏,甚至元宇宙应用 1。尽管这些应用不断涌现,TCP/IP 仍然是现代网络中的主流传输/网络协议栈。然而,传统内核 TCP 协议栈并不能完全令人满意,原因如下。

CPU 瓶颈限制了高带宽技术的性能。 随着 5G、WiFi 6 和 WiFi 7 等新通信技术的发展,无线主机的无线传输能力已经显著增强。例如,基于 IEEE 802.11ax 的 WiFi 6 可以提供最高 9.6 Gbps 的带宽,基于 IEEE 802.11be 的 WiFi 7 预计至少可达到 30 Gbps 的最大传输带宽。然而,已有研究表明,当通过传统内核 TCP 协议栈传输大量流量时,系统内核必须处理上下文切换、内存拷贝等操作,这会在主机端引入较高 CPU 开销 2。基于这些观察可以看出,虽然从硬件角度看无线主机已经具备超高带宽能力,但由于主机 CPU 瓶颈,实际传输能力与目标值之间可能存在较大差距,从而限制新技术的性能。

注:

  • 9.6 Gbps 的含义。 Gbps 是 gigabits per second,即"每秒多少十亿 bit"。因此 9.6 Gbps 可以理解为每秒最多传输约 9.6 十亿 bit,换成字节大约是 9.6 / 8 = 1.2 9.6 / 8 = 1.2 9.6/8=1.2 GB/s。

  • 理论带宽与实际吞吐。 论文这里说的 9.6 Gbps 是 WiFi 6 标准/硬件能力层面的峰值带宽,不等于应用实际一定能每秒收到 1.2 GB 数据。实际吞吐还会被协议头、ACK、重传、无线干扰、距离、信道竞争以及主机 CPU 开销影响。本文正是借这个例子说明:无线链路标称带宽很高,但传统 TCP/IP 协议栈可能让 CPU 成为瓶颈。

无线应用的超低时延需要超高带宽。 高分辨率、基于视频的交互式应用,如无线投屏,需要超低时延。例如,实时 4K 视频至少需要每秒 30 帧,这意味着每一帧的编码、传输和解码都必须在 60 ms 内完成 3。然而,即便不考虑传输时延,4K 视频的软件编解码时延也达到 180 到 250 ms,远超可容忍范围 4。使用硬件编解码可以在一定程度上缓解这一问题;但由于软件方式具有更强的定制灵活性,它在商业产品中仍被广泛使用 5。这表明,CPU 密集型编解码正在成为商业设备中高分辨率和交互式应用的瓶颈。在这种情况下,降低编解码开销,甚至不做编解码而直接发送原始帧,并以更高带宽为代价,有潜力实现更低端到端时延。换句话说,超高带宽使超低时延成为可能。

总之,主机上的 CPU 瓶颈正在成为无线传输实现超低时延和超高带宽的障碍,而传统内核 TCP 协议栈的使用是其中一个原因。已有研究也充分表明,RDMA 作为一种远程直接访问内存的技术,可以绕过系统内核,并在硬件中完成报文解析,而不需要软件参与。具体来说,RDMA 可以将主机 CPU 利用率降低 95% 以上 2。近年来,几乎所有与 RDMA 相关的研究 2, 6 都处于数据中心网络语境中。这些研究表明,与内核 TCP 协议栈相比,基于 RDMA 的协议栈,例如 RDMA over Converged Ethernet v2(RoCEv2),可以实现更低时延和更高带宽。然而,当前基于 RDMA 的应用主要位于有线领域。考虑到 RDMA 在解决 CPU 瓶颈问题上的巨大潜力,使 RDMA 支持无线传输以实现超低时延和超高带宽,是一个有价值的方向。

本文首次提出 Wireless-RDMA(W-RDMA)的概念。W-RDMA 让无线传输能够使用 RDMA,并解决无线主机上的 CPU 瓶颈问题。虽然 W-RDMA 展现出提升无线传输性能的巨大潜力,但要在实践中广泛部署,还需要克服若干技术挑战。例如:(1) 无损传输保证,(2) 接口适配器设计,(3) 专用硬件支持。随后,本文设计了一个测试床来展示 W-RDMA 的可行性,并进一步讨论该测试床与完整 W-RDMA 协议栈实现之间的差距。

注:

  • 三个挑战分别卡在不同层次。 这里列出的三点可以按层次理解:无损传输保证 主要是网络传输层面的挑战,解决"无线链路不稳定但 RDMA 怕丢包"的问题;接口适配器设计 主要是软件 API 和系统接口层面的挑战,解决"无线应用如何方便地使用 RDMA 能力"的问题;专用硬件支持主要是设备和芯片层面的挑战,解决"如何真正做到内核旁路和硬件卸载"的问题。

  • 无损传输保证。 RDMA/RoCEv2 的性能优势依赖尽量少丢包。原因是 RDMA 的可靠传输通常不像 TCP 那样完全由软件协议栈慢慢恢复,而是依赖网卡硬件和较简单的重传机制,例如论文提到的 Go-Back-N。一旦中间某个包丢了,后面已经发送的一批包可能都要回退重传,吞吐会掉,尾时延也会变大。

    在有线数据中心里,链路相对稳定,还可以用 PFC、ECN、拥塞控制等机制减少丢包。但无线链路会受到干扰、遮挡、移动、距离变化、信道竞争等影响,带宽和丢包率都更不稳定。因此 W-RDMA 不能只是"把 RDMA 包放到 Wi-Fi 上",还必须设计适合无线环境的速率控制、丢包避免和快速恢复机制。

  • 接口适配器设计。 传统 RDMA verbs API 更偏服务器和数据中心程序,包含 QP、CQ、MR、PD、WQE 等底层概念。它很强,但对普通无线应用并不友好。例如 AR/VR、无线投屏、移动端应用更希望看到的是简单的发送、接收、读写接口,而不是直接管理复杂的 RDMA 队列和内存注册。

    因此,W-RDMA 需要在应用和底层 RDMA/无线能力之间设计一层接口适配器:上层给应用提供更容易使用的 API,下层仍然保留 RDMA 的零拷贝、内核旁路和硬件卸载优势。同时,因为无线链路存在信道选择问题,这个适配器还可能需要把应用或系统策略传递给硬件层的 Host Channel Adapter,让应用参与跨层信道优化。

  • 专用硬件支持。 RDMA 能降低 CPU 开销,关键不只是"协议名字叫 RDMA",而是网卡硬件能直接完成协议处理、DMA 读写内存、绕过内核网络栈。如果 W-RDMA 全部用软件模拟,CPU 仍然要处理大量报文、拷贝和协议逻辑,就会重新落回本文开头批评的 CPU 瓶颈。

    现在服务器里已经有支持 RoCEv2 的 RDMA 网卡,但手机、平板、普通 Wi-Fi/5G 通信模块通常还没有面向 W-RDMA 的智能网卡或专用芯片。所以论文的测试床可以证明"RDMA 流量经过无线链路是可行的",但要真正部署到移动终端或无线设备中,还需要新的硬件支持。
    本工作由 Huawei、中国国家杰出青年科学基金项目 61825204、NSFC 项目 61932016 和 62132011、北京市杰出青年科学家计划 BJJWZYJH01201910003011 支持。

Fig. 1. W-RDMA 架构。

注:

  • 左边:传统 OS TCP/IP 方案。 Fig. 1 左侧表示普通无线传输路径:应用数据先通过 Socket API 进入操作系统内核,由内核 TCP/IP 协议栈处理,再交给无线 MAC/Wi-Fi 网卡发送。这里 CPU/内核参与较多,因此会产生系统调用、上下文切换、协议处理和内存拷贝开销。

  • 右边:W-RDMA 硬件/引擎方案。 Fig. 1 右侧表示作者设想的 W-RDMA 路径:应用数据尽量不进入传统 OS TCP/IP 协议栈,而是直接进入 W-RDMA 引擎或缓存,由 W-RDMA 相关硬件处理协议和数据搬运,再通过无线 MAC 发送。它的核心目标是借鉴 RDMA 的内核旁路和硬件卸载思想,降低无线主机 CPU 开销。

  • 这不是测试床连线图。 Fig. 1 讲的是"数据在主机内部经过谁处理"的架构对比,不是论文实验设备的物理拓扑。真实测试床拓扑在 Fig. 3,那里才是两台 RDMA 主机、速率控制器和 WiFi 6 路由器如何连接。

Fig. 2. W-RDMA 协议栈。

II. 相关工作

为解决数据转发瓶颈,一些基于软件的内核旁路方案 7,例如数据平面开发套件(Data Plane Development Kit, DPDK),提供了一组用户态库和驱动,用于加速报文处理负载。这些方法减少了中断和内存拷贝,但仍存在两个问题:(1) 协议栈只是被移动到了用户态,仍然消耗 CPU;(2) 当主机负载较低时,它们会浪费 CPU 资源。

TCP 卸载引擎(TCP Offload Engine, TOE)扩展了 TCP/IP 协议栈,使 TCP/IP 协议的部分功能从 CPU 转移到 TOE 硬件上。IP 头、TCP 头和 UDP 头的校验和计算由网卡而不是 CPU 完成,从而降低 CPU 负担。然而,(1) TOE 只在有限的工作负载条件下提供加速 8;(2) TOE 的上下文切换和系统调用仍然会产生相当大的 CPU 开销。

目前,数据中心中已经提出了许多基于 RDMA 的传输层设计 2, 6。这些研究从拥塞成因出发,通过接收端驱动、选择性 ECN 标记、动态 RTT 变化等机制解决问题。然而,对于无线网络,现有商用无线路由器不支持显式拥塞通知(Explicit Congestion Notification, ECN),并且带宽容易变化,这与数据中心网络明显不同。需要注意的是,非解压缩方法 9 可以与 RDMA 协同使用,以进一步降低主机 CPU 开销,提升性能和存储效率。不过,这超出了本文范围。

据我们所知,本文是第一项研究 RDMA 遇到无线网络时的可行性、挑战和机会的工作,其目标是从根本上解决无线网络中的 CPU 瓶颈问题。

III. W-RDMA 概览

RDMA 是一种绕过操作系统和内核、在没有主机 CPU 参与的情况下通过硬件完成报文解析,并远程直接访问内存的技术。在此基础上,W-RDMA 是一种让 RDMA 支持无线传输的方案。

A. W-RDMA 架构

Fig. 1 展示了两种协议在无线链路上的模块交互,即 TCP/IP 和 W-RDMA。

  • TCP/IP 路径。 应用缓冲区中的数据通过 Socket API 发送,进入操作系统处理,然后通过无线 MAC 传输给接收端。

  • W-RDMA 发送路径。 应用层数据不经过操作系统,而是直接进入 W-RDMA 引擎的缓存,并通过 UDP 帧传输给另一个接收主机。

  • W-RDMA 接收路径。 在接收端,数据包同样不经过操作系统,而是直接交给 W-RDMA 引擎处理,之后再传递给上层应用。

  • 架构含义。 在这种 W-RDMA 架构设计中,预计需要专用硬件来支持 RDMA,同时也需要面向 W-RDMA 的协议和应用接口。下一部分将讨论这些内容。

B. W-RDMA 协议栈

如 Fig. 2 所示,W-RDMA 协议栈采用分层设计,包括硬件空间、内核空间和用户空间。

注:

  • 这里的"空间"不是网络层级。 用户空间、内核空间、硬件空间说的是一台主机内部功能运行的位置,不是"应用层、传输层、网络层、链路层"那种网络协议分层。可以先理解成:用户空间负责应用怎么调用,内核空间负责系统怎么管理,硬件空间负责数据怎么高速传。

  • 用户空间。 用户空间面向应用程序,提供 W-RDMA 的使用入口,例如 SEND、RECEIVE、READ、WRITE 以及信道选择 API。它解决的是"无线应用如何方便地使用 RDMA 能力"的问题。

  • 内核空间。 W-RDMA 希望大量数据传输绕过内核,但并不是完全不需要内核。内核仍然需要负责设备权限、内存注册、资源配置、任务调度以及必要报文的捕获和转发。也就是说,数据通路尽量少走内核,管理控制仍然离不开内核。

    论文中"捕获和转发报文、封装数据以及执行任务调度"的意思是:W-RDMA 仍然要识别哪些报文属于 W-RDMA、把必要报文交给正确模块、组织网络传输格式,并调度传输完成通知或资源切换等事件。区别在于,传统 TCP/IP 往往让内核深度参与大量高频数据处理;W-RDMA 希望这些高频重活尽量由硬件/W-RDMA 引擎承担,内核只保留必要的控制和协调。

  • 硬件空间。 硬件空间是 W-RDMA 获得低 CPU 开销的关键位置,负责协议解析、DMA 数据搬运、速率控制、丢包恢复和无线信道适配等高频操作。如果这些都放在软件里做,CPU 仍然会成为瓶颈,W-RDMA 就失去意义。

硬件空间。 受 RoCEv2 启发,W-RDMA 传输协议应在硬件空间中实现。与有线领域中的 RDMA 协议栈不同,W-RDMA 的链路层基于 IEEE 802.11 标准,包括 802.11a/b/g/n、802.11ac、802.11ax 等。此外,W-RDMA 传输协议应包含主机通道适配器(Host Channel Adapter)。这是因为无线信道是无线网络发送和接收数据的介质,运行在合适信道上有助于提升连接速度 10。不同频段中的信道数量不同,相邻信道也容易互相干扰。具体而言,Host Channel Adapter 用于检测信道使用情况,并选择干扰最小的信道,从而保证 W-RDMA 的高带宽优势。此外,W-RDMA 传输层可以复用 UDP 作为传输层载体,但需要增加特定模块,例如速率控制器(类似 RDMA 中的 DCQCN)和丢包恢复模块,例如 Go-Back-N。

注:

  • "在硬件空间中实现"的含义。 W-RDMA 的核心传输协议逻辑不应主要由 CPU 上的软件协议栈执行,而应尽量放到网卡、无线网卡、专用通信芯片或 W-RDMA 引擎中执行。这样可以让协议头解析、DMA 读写、ACK/NACK、重传、速率控制和信道适配等高频工作由硬件处理。

  • Host Channel Adapter。 Host Channel Adapter 可以理解为主机侧的 RDMA 通道适配硬件,在传统 RDMA 中通常对应支持 RDMA 的网卡或智能网卡。它负责把主机内存、RDMA 队列和网络传输连接起来,让数据可以绕过内核协议栈,由硬件直接完成收发和 DMA 搬运。

  • HCA 在这里具体做什么。 有线 RDMA 面对的是比较稳定的以太网链路,而 W-RDMA 面对的是 Wi-Fi 这类无线链路。论文里的逻辑可以理解为:Host Channel Adapter 先检测当前哪些无线信道比较拥挤,再选择干扰最小、质量更好的信道,然后让 W-RDMA 数据跑在这个信道上,从而减少干扰、提高带宽和稳定性。

    因此,这里的核心区别是:传统 RDMA 主要关心"怎么绕过 CPU 高速传数据";W-RDMA 除了要高速传数据,还必须关心"无线信道选得好不好"。所以 W-RDMA 的 HCA 不只是 RDMA 网卡,还要承担无线信道感知和选择的任务。

  • UDP 只是承载外壳。 这里的 UDP 更像轻量封装外壳,而不是可靠传输机制本身。W-RDMA 借鉴 RoCEv2 的思路,用 UDP/IP 承载 RDMA 类报文;真正的 RDMA 语义、速率控制、ACK/NACK 和丢包恢复仍由 W-RDMA 传输协议或硬件引擎补上。TCP 虽然可靠,但通常需要内核协议栈深度参与,会重新引入系统调用、内存拷贝和协议处理成本。

内核空间。 与 TCP/IP 的内核空间不同,W-RDMA 的内核空间执行更少操作,包括捕获和转发报文、封装数据以及执行任务调度。

注:

  • CPU/内核仍然有控制职责。 "硬件实现"不等于完全不要 CPU。CPU 和内核仍然需要负责初始化连接、注册内存、配置队列、设置权限、下发速率或信道策略,以及处理异常情况。区别在于,传统 TCP/IP 由 CPU/内核频繁处理大量数据包,而 W-RDMA 希望把高频数据通路尽量交给硬件。

用户空间。 在用户空间中,W-RDMA 需要在应用程序和内核之间提供一层接口适配器,让应用能够更方便地使用底层的 W-RDMA 能力。一般来说,这个适配器至少应包含两类接口:一类是统一的北向 API,用于提供 SEND、RECEIVE、WRITE、READ 等基本数据传输操作;另一类是无线信道选择 API,用于让应用或系统根据需要定制信道选择策略。由于这些接口既要保持 RDMA 的零拷贝和硬件卸载优势,又要适应无线场景中的信道变化,因此它们的设计并不简单,相关挑战将在下一节讨论。

注:

  • 和用户空间 API 的关系。 这里的"统一北向 API"是面向应用开放的调用入口;"无线信道选择 API"则让应用或系统策略能够影响硬件层的信道选择。也就是说,应用可以表达"我希望怎样选信道",内核负责管理和配置,Host Channel Adapter 在硬件侧执行检测、选择和适配。这也是论文说 W-RDMA 需要跨层设计的原因。

  • 硬件卸载(hardware offload)。 "硬件卸载"不是下载或卸载软件,而是把原本由 CPU/操作系统内核处理的一部分网络传输工作交给专用硬件完成,相当于把负担从 CPU 身上卸下来。普通网络传输中,CPU/内核可能要处理协议头、拷贝数据、维护连接状态、计算校验、分包/重组、处理 ACK、拥塞控制和重传;数据量很大时,这些工作会让 CPU 很忙。

  • RDMA/W-RDMA 中的硬件卸载。 RDMA 的核心思想之一就是让网卡/智能网卡直接处理大量传输工作,甚至直接把数据从本机内存搬到远端内存,使 CPU 和内核少参与。放到 W-RDMA 中,论文希望协议解析、DMA 数据搬运、SEND/RECEIVE/READ/WRITE、ACK/NACK、丢包恢复、速率控制和无线信道适配等高频工作尽量由硬件完成,而不是每个包都让 CPU/内核处理。

C. 应用 W-RDMA 的挑战

虽然 W-RDMA 对无线传输性能提升展现出巨大潜力,但根据上述 W-RDMA 设计,要在实践中广泛部署,还需要克服若干技术挑战。

无损传输保证。 众所周知,保证无损传输是保障 RoCEv2 性能优势的前提。这是因为 RDMA 采用 Go-Back-N 重传机制,一旦发生丢包,性能会严重下降。由于自然或人为干扰导致无线信号强度较差,加上移动终端中的软硬件资源有限,相比有线传输,无线传输会遭遇更不可预测的网络条件。因此,基于 W-RDMA 的传输控制要保证无损传输会更加困难。一方面,W-RDMA 应尽可能避免丢包;另一方面,一旦发生丢包,W-RDMA 应尽快恢复,且不能引入过多开销。

接口适配器设计。 如上所述,W-RDMA 接口适配器可能包括统一北向 API 和无线信道选择 API。对于统一北向 API,W-RDMA 基本上应尽可能复用传统 RDMA verbs API 的功能,包括 SEND、RECEIVE、WRITE、READ 等。然而,(1) 与面向服务的数据中心网络不同,W-RDMA 可能更常用于面向应用的无线网络;此外,(2) 对于 ARM Android 等其他平台上的一些应用,RDMA verbs API 相对复杂。基于这些观察,W-RDMA 需要一组新的、相对简单的统一北向 API,以支持零拷贝和硬件卸载,从而实现高性能传输。对于无线信道选择 API,它们被设计为与硬件层的 Host Channel Adapter 交互。这使应用可定制的跨层无线信道适配成为可能。

注:

  • 接口适配器是什么。 接口适配器可以理解为给普通应用使用的"简化包装层"。它位于应用程序和底层 RDMA/W-RDMA 传输层、无线硬件之间:向上提供更简单的 SEND、RECEIVE、READ、WRITE 等北向 API,向下仍然利用 RDMA 的零拷贝、内核旁路、硬件卸载、内存注册、队列提交和完成通知等能力。

  • 为什么 W-RDMA 更需要它。 传统 RDMA verbs API 更偏数据中心服务器程序,而 W-RDMA 面向的可能是 AR/VR、无线投屏、移动端应用、高分辨率视频传输等无线应用。对于这些场景,开发者更希望调用类似 wrdma_send(buffer, length)wrdma_recv(buffer, length) 或设置信道策略的简单接口,而不是直接管理复杂的 RDMA 队列、完成事件和内存注册。

  • 为什么说 RDMA verbs API 复杂。 传统 RDMA verbs API 不只是 SEND、RECEIVE、WRITE、READ 这几个操作名,还要求应用理解并管理一组底层对象,例如 PD、MR、QP、WQE、CQ/CQE 等。它们共同描述"谁有权限、哪块内存可被访问、通过哪条队列通信、提交了什么任务、任务是否完成"。

  • PD 与 MR。 PD 是 Protection Domain,保护域,用来定义一组 RDMA 资源的权限边界;MR 是 Memory Region,内存区域,表示一段已经注册给 RDMA 网卡使用的内存。二者不重复:MR 回答"哪块内存可以被 RDMA 访问",PD 回答"哪些 QP、MR 等资源属于同一个权限范围、允许互相配合使用"。

  • QP 与 WQE。 QP 是 Queue Pair,队列对,是 RDMA 通信的核心通道,通常包括发送队列和接收队列。WQE 是 Work Queue Element,工作队列元素,可以理解为提交给网卡的一张任务单,例如发送某块内存、接收数据到某个 buffer、执行 RDMA Read 或 RDMA Write。

  • CQ 与 CQE。 CQ 是 Completion Queue,完成队列,用来让应用查看任务是否完成;CQE 是 Completion Queue Element,完成队列元素,是 CQ 中的一条完成记录,例如某个 send 完成、某个 receive 完成、某个 RDMA write 成功或失败。

  • 一次 RDMA 操作的简化流程。 应用先创建 PD,注册内存得到 MR,创建 QP 和 CQ;随后把 WQE 提交到 QP 中,网卡根据 WQE 执行真正的数据搬运;任务完成后,网卡向 CQ 写入 CQE,应用轮询 CQ 看到 CQE 后,才知道这次操作完成。W-RDMA 希望设计更简单的北向 API,就是为了让无线应用尽量不用直接面对这些底层对象。

  • 无线信道选择 API。 这是 W-RDMA 相比普通 RDMA 额外需要考虑的接口。有线 RDMA 一般不需要应用关心"选择哪个无线信道",但 WiFi 场景中不同信道的干扰和可用带宽可能不同。因此,接口适配器还应把应用或系统的策略传递给硬件层的 Host Channel Adapter,例如让低时延应用优先选择干扰更小、时延更稳定的信道。

  • 这不是实验床已经完整实现的模块。 需要注意的是,本文测试床并没有完整实现这套统一北向 API,而是仍然使用原始 RDMA verbs 操作来验证 W-RDMA over wireless 的可行性。因此,接口适配器更多是作者认为未来完整 W-RDMA 协议栈必须解决的关键设计挑战,而不是这篇 WIP 实验已经完成的系统模块。

专用硬件支持。 RDMA 主机的内核旁路能力主要依赖专用硬件,即网卡。虽然如今 Wi-Fi 6 和 5G 通信模块已经被广泛配备,但智能手机等移动终端中还不存在支持 W-RDMA 的专用芯片。因此,在缺少 W-RDMA 专用智能网卡的情况下,部署 W-RDMA 是一个很大挑战。

IV. W-RDMA 测试床

W-RDMA 测试床拓扑如 Fig. 3 所示。两台主机配备支持 RDMA 的智能网卡,其高带宽能力为 10 Gbps;每台主机都通过有线链路连接到一个 10-GbE 路由器,以形成逻辑无线终端。两个逻辑无线终端之间的通信仍然通过 Wi-Fi 链路进行,例如无线分布式系统(Wireless Distribution System, WDS)。

Fig. 3. 测试床拓扑。

丢包会显著影响基于 RDMA 的协议栈性能。为了控制 RDMA 主机的发送速率,如 Fig. 3 所示,W-RDMA 测试床需要在主机和路由器之间实现一个速率控制器。具体而言,速率控制器首先建立速率适配器,使发送速率匹配无线链路容量;随后采用优先级流控(Priority Flow Control, PFC)控制器作为最后保障机制,以保证无损传输。此外,还需要增加一个转发模块,用于二层数据转发。

注:

  • Rate Controller 的作用。 Rate Controller 的核心作用是"别让 RDMA 发得太快"。实验里的 RDMA 网卡能力是 10 Gbps,但中间 WiFi/WDS 无线链路实际可用带宽可能低得多,并且会随无线环境波动。如果 RDMA 主机仍按 10 Gbps 猛发,而无线链路只能承受 1-2 Gbps,就会造成拥塞、排队甚至丢包;而 RDMA 一旦丢包,性能会明显下降。

  • rate adapter。 rate adapter 可以理解为速率适配器或限速器,是主要限速机制。它根据无线链路实际能承受的带宽,把 RDMA 发送速率调低到接近无线链路容量。例如,RDMA 主机原本想按 10 Gbps 发送,但 WiFi 链路只能承受约 1.8 Gbps,那么 rate adapter 就需要把发送速率限制到接近 1.8 Gbps,避免把无线链路打爆。

  • PFC controller。 PFC 是 Priority Flow Control,可以简单理解为一种"暂停发送"的链路层流控机制。这里的 PFC controller 是最后兜底机制:正常情况下先靠 rate adapter 控速;如果无线链路突然变差、队列快满、仍然有丢包风险,就用 PFC 临时让前面的发送端暂停一下,避免缓冲区溢出导致丢包。

  • 为什么需要二层数据转发。 这里的 Rate Controller 被插在主机和路由器之间,所以它不能只做限速/控速。它从主机侧网口收到 RDMA/RoCE 数据帧后,还必须把这些帧继续从路由器侧网口转发出去;反方向也一样。否则数据会停在 Rate Controller 上,主机到路由器之间的原有数据路径就断了。

  • 二层转发是什么意思。 "二层"(L2)指数据链路层。二层数据转发就是像交换机或网桥一样,根据 MAC 地址在不同网口之间转发以太网帧,而不是做三层 IP 路由、TCP/UDP 转发或应用层处理。换句话说,Rate Controller 在工程实现上要像一个透明的 Layer-2 bridge:一边限速,一边把帧从入口端口转到出口端口。

  • 这不是 W-RDMA 核心协议模块。 这句话主要是在说明实验床实现需要一个工程性的转发功能,而不是说 W-RDMA 协议本身新增了一个核心模块。后文实验配置中提到,Rate Controller 是一台带两块 Intel 82599ES 网卡的普通服务器,两个网卡分别作为入端口和出端口,这也印证了它是插在线路中间的设备,因此需要二层桥接/转发能力。

讨论。 有一些值得注意的点对于理解为什么该测试床能够评估 W-RDMA 的可行性很重要。下面简要说明这些点。

首先,在该测试床中仍然使用 RDMA 的原型 verbs 操作,而没有统一北向 API。由于这不会影响 W-RDMA 无线传输的性能,因此对 W-RDMA 可行性的评估保持不变。

此外,为保证无损传输,我们在主机和路由器之间增加速率控制器,以控制主机发送速度。虽然这并没有提供一套完美的拥塞控制协议,但它通过充分实验证明了 W-RDMA 可被无线应用使用的可行性。未来,应设计一套完整的拥塞算法,以更好地保证 W-RDMA 在无线环境中不丢包,并在丢包后快速恢复。

注:

  • Rate Controller 是实验中的外接限速器。 这里的速率控制器是插在主机和路由器之间的测试床模块,主要目标是把 RDMA 主机的发送速度压到无线链路能承受的范围,避免 10 Gbps 级别的 RDMA 网卡把不到 2 Gbps 的 WiFi/WDS 链路打爆。它解决的是"先让实验稳定跑起来、尽量不丢包"的问题。

  • 完整拥塞控制协议是什么。 一套完整的 W-RDMA 拥塞控制协议应该是协议栈内部的动态调速机制,而不是外部固定限速器。它需要持续根据 ACK、RTT、丢包、队列、无线链路状态、信道变化等反馈判断是否拥塞,并决定何时降速、降多少、何时加速、多条流如何公平共享带宽、不同优先级或应用需求如何处理。

    更具体地说,它至少要持续回答这些问题:现在网络拥塞了吗?是谁造成的拥塞?发送端应该降多少速?什么时候可以重新加速?多条流之间如何公平共享带宽?如何尽量避免丢包?无线链路波动时如何快速适应?

  • 为什么作者说它还不完美。 Rate Controller 能证明"RDMA 流量经过无线链路具有可行性",但它还不能代表未来完整 W-RDMA 协议栈中的拥塞控制算法。换句话说,本文测试床先用外接限速器验证可行性;真正产品化或系统化的 W-RDMA 仍需要内置的、端到端的、能适应无线波动的拥塞控制协议。

V. 测试床评估

本节评估 W-RDMA 的性能。如 Fig. 3 所示,两台主机 DELL PowerEdge R610 配备支持 RoCE v2 协议的 RDMA 智能网卡。速率控制器是一台普通服务器,配备两块 82599ES 网卡,分别作为路由转发的入端口和出端口。两台路由器均为 WiFi 6 无线路由器 ASUS RT-AX89X。

注:

  • 实验平台。 这里的实验是在真机测试床上完成的,不是单纯的 ns-3 仿真。平台包括两台 DELL PowerEdge R610 RDMA 主机、支持 RoCEv2 的 10 Gbps RDMA 智能网卡、一台带两块 Intel 82599ES 网卡的普通服务器作为速率控制器,以及两台 ASUS RT-AX89X WiFi 6 路由器。

  • 链路结构。 可以把测试床理解成"有线 RDMA 主机 + 无线桥接链路":RDMA 主机先通过 10GbE 有线链路接入速率控制器和 WiFi 6 路由器,两个逻辑无线终端之间再通过 Wi-Fi/WDS 链路通信。也就是说,真正的 RDMA/RoCEv2 由服务器网卡提供,无线部分由 WiFi 6 路由器承载。

Fig. 4. 吞吐量随报文大小变化的趋势。

吞吐量。 我们首先探索当报文大小变化时 W-RDMA 的吞吐量趋势。具体而言,W-RDMA 测试通过 ib_send_bw 原型操作执行,并与 TCP 的 iperf 3 比较,报文大小范围为 [2, 1048576] 字节。我们还测试了不使用第 IV 节额外速率控制器的传统 RDMA。Fig. 4 展示了结果。总体上,吞吐量随着报文大小增大而增加。这是因为当报文较小时,开关式流量模式无法充分利用带宽。当报文足够大时,例如超过 32768 字节,RDMA 的发送速率会超过无线带宽,从而引起丢包和重传。这会严重影响 RDMA 性能。W-RDMA 由于引入额外速率控制器避免丢包,因此性能优于 RDMA。Fig. 4 还表明,当传输大报文时,W-RDMA 的吞吐量接近 TCP。需要注意的是,TCP 和 W-RDMA 的最大吞吐量均低于 2 Gbps;这是由于两个无线路由器之间 WDS 链路的带宽限制。不过,这不属于本文范围。

注:

  • 图的读法。 Fig. 4 的横轴是 packet size,即报文大小,单位是 bytes;纵轴是 Throughput,即吞吐量,单位是 Mbps。绿色曲线是 TCP,蓝色曲线是没有额外 Rate Controller 的普通 RDMA,黄色曲线是加入 Rate Controller 的 W-RDMA。

  • 小报文吞吐低。 当报文很小时,三条曲线的吞吐都比较低。这是因为每个包都有固定开销,例如协议头、发送处理和接收处理;小包中真正承载的有效数据少,所以很难把无线链路带宽充分利用起来。

  • 普通 RDMA 为什么后面下降。 普通 RDMA 曲线先上升,是因为报文变大后单位开销下降;但当报文足够大后,RDMA 网卡发送能力超过无线 WiFi/WDS 链路的承受能力,导致拥塞、丢包和重传,所以吞吐反而明显下降。

  • W-RDMA 说明了什么。 W-RDMA 通过 Rate Controller 把 RDMA 发送速率限制到无线链路能承受的范围,避免普通 RDMA 那种"发太快导致丢包"的问题。因此在大报文下,W-RDMA 的吞吐更稳定,并且接近 TCP。图中 TCP 和 W-RDMA 的最高吞吐都不到 2 Gbps,主要是因为中间 WDS 无线链路成为瓶颈,而不是 RDMA 网卡本身只有这么快。

  • WDS。 WDS 是 Wireless Distribution System,可以理解为两个 WiFi 路由器之间建立的无线桥接链路。在本文测试床中,它就是两台 ASUS RT-AX89X 路由器之间的无线连接:RDMA 主机先通过有线链路接入路由器,再通过 WDS 无线链路跨到另一侧路由器和主机。因此,Fig. 4 中最高吞吐低于 2 Gbps,主要受这段 WDS 无线桥接链路限制。

Fig. 5. CPU 利用率。

CPU 利用率。 随后,我们在相同报文大小下比较内核 TCP 和 W-RDMA 的 CPU 利用率。具体来说,我们将报文大小设为 30000 字节,以确保二者达到相近吞吐量,即 TCP 为 1704 Mbps,W-RDMA 为 1693.92 Mbps。Fig. 5 展示了结果。显然,W-RDMA 能够显著降低主机 CPU 开销。具体而言,W-RDMA 在客户端主机和服务器主机上分别节省 66.67% 和 80.44% 的 CPU 资源。这在一定程度上验证了 W-RDMA。

VI. 未来机会

这项工作是 RDMA 从有线领域向无线领域迁移的第一次尝试。我们通过测试床实验验证了 W-RDMA 的可行性。除了第 III-C 节讨论的挑战之外,提出的 W-RDMA 还为未来无线 RDMA 的发展提供了新的可能性和机会。

极简设备到设备传输协议。 W-RDMA 硬件空间中的 IP 层(见 Fig. 2)不像在有线领域中那样必不可少。这是因为本地无线网络相对封闭,可以根据 MAC 地址空间转发报文。在这种情况下,基于 IP 的 UDP 可以被一种放弃 IP 层的极简设备到设备传输协议替代。这将进一步增强 W-RDMA 的高性能。

注:

  • 简化网络分层。 可以先按下面这五层理解普通网络通信:

    text 复制代码
    应用层
      HTTP、SSH、RPC、数据库、文件传输
    
    传输层
      TCP、UDP、QUIC
      负责端口、进程到进程通信、可靠性/拥塞控制等
    
    网络层
      IP
      负责 IP 地址、跨网络路由、主机到主机通信
    
    链路层
      Ethernet、Wi-Fi MAC
      负责 MAC 地址、一跳一跳传输
    
    物理层
      网线、光纤、无线电信号
  • 同一局域网里谁真正转发。 两个 Wi-Fi 终端如果连在同一个 AP/路由器下,应用通常用 IP 地址通信,例如 192.168.1.10 -> 192.168.1.20;但真正发送到无线链路上时,数据会被封装成二层 MAC 帧,目的地址是对方网卡的 MAC 地址。也就是说,同一局域网内的实际一跳转发靠 MAC,IP 主要负责给应用提供统一的网络地址和寻址逻辑。

  • 为什么普通系统仍然用 IP。 IP 不只是为了跨广域网路由,也用于判断目标是否在同一子网、选择直接发送还是交给网关,并为 UDP/TCP 的端口和应用进程通信提供上层接口。比如主机先通过 IP 和子网掩码判断 192.168.1.20 是否在本地网络;如果在同一网段,就通过 ARP/邻居发现找到对方 MAC,再发二层帧。

  • MAC、IP、端口分别管什么。 更准确地说,MAC 层只管 MAC 地址,负责把帧送到哪块网卡;IP 层只管 IP 地址,负责把包送到哪台主机或哪个网络;端口号不是 IP 层管的,而是 TCP/UDP 传输层管的,用来区分同一台主机里的不同应用进程。

    例如 192.168.1.20:80 中,192.168.1.20 是 IP 层看的目标主机地址,80 是 TCP/UDP 层看的目标应用端口。MAC 地址只能定位到"哪台设备的哪块网卡",例如某台手机的 Wi-Fi 网卡;如果完全绕开 IP/UDP/TCP、只靠 MAC 层通信,就需要 W-RDMA 自己设计类似"端口/会话标识"的机制。

  • 为什么论文说可以弱化 IP。 论文这里讨论的是未来机会:如果 W-RDMA 主要用于本地无线设备到设备传输,并且通信范围相对封闭,那么可以考虑绕开完整 IP 层,直接基于 MAC 地址或更轻量的设备标识转发。这样做可能减少协议头、查表和软件协议栈处理开销,但也意味着需要重新设计应用区分、可靠传输、拥塞/速率控制和安全等机制。

跨层优化。 W-RDMA 在链路层仍遵循基于 IEEE 802.11 的标准,但它应在传输控制上采用跨层设计。具体而言,在接收到 MAC 数据帧时,网卡不立即发送 MAC 层块确认(block-ACK)。相反,它先处理数据帧并生成流控信息。随后,这些由 MAC 层 block-ACK 携带的信息会反馈给 W-RDMA 传输层。如果在一定时间内没有收到 ACK 事件,W-RDMA 可能会重传报文,并相应调整发送速率 11

注:

  • 核心直觉。 WiFi MAC 层最先感知无线链路的实时状态,例如哪些帧未被成功接收、是否出现连续丢帧、发送/接收队列是否积压等;而 W-RDMA 传输层需要根据这些链路状态决定是否降低发送速率、是否触发重传。所谓跨层优化,就是打破传统协议栈中 MAC 层与传输层相互隔离的设计,让 MAC 层向传输层提供底层链路信息,使传输层能够根据无线链路的实际情况及时调整发送策略。

  • 传统 block-ACK 的作用。 block-ACK 是 WiFi MAC 层中的块确认机制,用于一次性反馈一批 MAC 数据帧的接收情况,即哪些帧已经收到、哪些帧没有收到。在传统分层设计中,block-ACK 主要服务于 MAC 层自身的确认与重传机制,其作用通常停留在链路层内部,传输层一般不会直接获知 block-ACK 中包含的详细丢帧信息。

  • 单跳重传。 MAC 层基于 block-ACK 触发的重传通常属于单跳重传,即只在当前发生丢帧的相邻节点之间进行重传。例如,WiFi 路由器 A 向 WiFi 路由器 B 发送 MAC 帧时,如果某个帧未被成功接收,则由这一跳的发送端重新发送该 MAC 帧,而不是由最初的 RDMA 主机在传输层重新发送整个数据报文。单跳重传的优点是反应快、影响范围小,但它也会隐藏底层链路问题,使传输层可能只观察到时延增加或吞吐下降,而无法直接知道 MAC 层已经发生了多次重传。

  • 传统分层下传输层能感知到什么。 如果 MAC 层重传成功,传输层可能完全不知道中间曾经发生过 WiFi 帧丢失,只会看到数据最终成功到达,但可能伴随 RTT 增大或吞吐下降。如果 MAC 层多次重传后仍然失败,传输层才可能通过超时、端到端 ACK 未返回、上层重传触发或吞吐明显下降等间接现象感知到网络异常。因此,在传统分层机制下,传输层对无线链路状态的感知往往滞后且不够精细。

  • W-RDMA 希望增强的机制。 论文提出的跨层优化希望让接收端网卡在收到 MAC 数据帧后,不是立即返回一个仅表示"收到/未收到"的普通 block-ACK,而是先分析当前帧的接收情况,并生成与链路状态相关的流控信息,再将这些信息通过 block-ACK 反馈给发送端。这样,block-ACK 不再只是简单的链路层确认消息,而可以携带更丰富的反馈信息,例如近期丢帧是否增多、接收队列压力是否上升、无线链路质量是否下降,以及是否建议 W-RDMA 降低发送速率或准备重传。

  • 为什么 W-RDMA 需要跨层优化。 RDMA 对丢包非常敏感,一旦发生丢包,可能触发代价较高的重传并显著降低性能。而无线链路容易受到干扰、信道竞争和带宽波动的影响,如果 W-RDMA 只能等到传输层超时后才发现问题,反应会过慢。通过让 MAC 层提前向 W-RDMA 传输层反馈底层链路状态,W-RDMA 可以更早地调整发送速率、触发必要的重传,从而减少丢包和性能下降的影响。

VII. 结论

本文提出 W-RDMA,并研究了在无线传输中启用 RDMA 的可行性。W-RDMA 与传统 RDMA 在以下方面不同:(1) W-RDMA 的链路层基于 IEEE 802.11 标准;(2) W-RDMA 传输协议应包含 Host Channel Adapter,以实现更好的信道管理;(3) W-RDMA 避免丢包和高效恢复丢包更加困难;(4) W-RDMA 需要一组更简单的用户 API,以支持零拷贝和硬件卸载,从而实现高性能传输;(5) W-RDMA 需要支持 W-RDMA 的专用智能网卡。未来工作包括克服上述挑战,以及设计极简设备到设备传输协议和跨层优化。

VIII. 致谢

本工作的一部分是在 Tong Li 于 Huawei 全职担任 Chief Engineer 期间完成的。作者感谢 Kun Tan、Binzhang Fu、Jie Li、Yalei Wang 和 Bojie Li 在整个项目中提供的反馈。Hanlin Huang 是通讯作者。

相关推荐
szxinmai主板定制专家5 小时前
基于 ARM+FPGA 数据机床实时工业控制设计--以雕刻机为例
arm开发·人工智能·嵌入式硬件·fpga开发
wandertp5 小时前
对信号处理及滤波器的理解---基于robomaster机器人嵌入式控制系统
arm开发·stm32·算法·信号处理
XMAIPC_Robot6 小时前
基于RK3588 ARM+FPGA电火花数控机床控制系统设计,兼顾ethercat软硬件实时
linux·arm开发·人工智能·嵌入式硬件·fpga开发
底层开发智库6 小时前
C1-Ultra FVP调试并运行Linux kernel全程记录,硬核演示如何解决启动问题
linux·arm开发·内核·嵌入式·arm
XMAIPC_Robot6 小时前
基于 ARM+FPGA 数据机床控制系统设计--以雕刻机为例
arm开发·fpga开发
一抹晴空21 小时前
Keil MDK AC6 compiler编译报错,与AC5区别
c语言·arm开发·单片机
运维成长记1 天前
关于“有x86镜像,没有Dockerfile” 怎么制作arm架构的镜像
arm开发·架构
熠速1 天前
PolarBox高性能实时仿真系统
arm开发·fpga开发·嵌入式实时数据库·硬件在环半实物仿真
天下·第二2 天前
如何在【x86】服务器上打包构建【arm】镜像
服务器·arm开发·eureka