每日讯息!RDMA技术简介

面包芯语   2023-04-10 09:11:51

本篇内容出自

作者简介:

刘伟


(相关资料图)

拥有14年网络设备开发领域的从业经验,当前就职于浪潮电子信息产业股份有限公司体系结构研究部,负责高性能网卡的架构设计和驱动程序开发工作。平时喜欢钻研技术和读书,并经常在自己的个人公众号“布鲁斯的读书圈”中发布原创的技术文章。

存。消息服务可用于进程间通信(IPC)、与远程服务器的通信以及使用上层协议与存储设备进

行通信,这些上层协议包括对 RDMA 的 iSCSI 扩展(ISER)、SMB、Samba、Lustre、ZFS 等。

RDMA 通过绕过软件协议栈和避免不必要的数据复制来实现低时延、降低 CPU 占用率、

减少内存带宽瓶颈和提供高带宽。RDMA 提供的好处主要来自 RDMA 消息服务呈现给应用程

序的方式,以及用于传输和传递这些消息的底层技术。RDMA 提供基于通道的 I/O,该通道

使得应用程序可以使用 RDMA 设备直接读取和写入远程虚拟内存。

在传统的以太网应用场景中,运行在用户态的应用程序通过调用套接字(socket)API 从

操作系统请求网络资源,然后使用这些 API 执行数据收发。RDMA 应用也依赖操作系统,但

只是使用操作系统建立通道,而后允许用户态的程序直接操作硬件交互信息,无须内核态程

序的进一步协助。这些信息交互方式可以是 RDMA Read、RDMA Write、Send 和 Receive。

另外,RDMA 协议 InfiniBand 和 RoCE 还支持多播传输。

目前 RDMA 已经是一个比较成熟的架构,主要应用在高性能计算(HPC)领域和大型数

据中心中,典型的应用场景包括分布式神经网络计算(比如 TensorFlow+MPI+RDMA)和大

数据存储(比如 HDFS+RDMA+NVMe)等。

RDMA 的控制通路和数据通路

第 5 章在介绍内核协议栈方案时,使用图 5-1 展示了 Linux 内核协议栈方案涉及的主要

软件和硬件模块以及它们之间的关系;图 5-2 描述了此方案的数据流;最后通过分析,给出

了此方案的几个缺点,比如不必要的数据复制、频繁地在内核态与用户态之间切换等。下面

介绍 RDMA 方案的控制通路和数据通路(如图 13-1 所示)以及数据流(如图 13-2 所示),

如果和图 5-1、图 5-2 进行比较,就能明显地看出 RDMA 方案的优点。

图 13-1 中有一左一右两台机器,可互相发送和接收数据。图中首先将 RDMA 整体方案横向

划分为三层;上面两层是软件,根据执行权限的不同又分为用户态和内核态;最下面一层是硬件。

然后,图中将 RDMA 的横向分层模型再从竖向划分为控制通路和数据通路。控制通路需

要进入内核态准备通信所需的各种资源,比如创建和配置后面章节会介绍的各 RDMA 基本元

素(如 CQ、QP 等),主要操作由软件完成,硬件接受配置。数据通路专门负责数据收发,

由软件和硬件合作完成 RDMA Write(写)、RDMA Read(读)、Send(发送)和 Receive

(接收)等操作。

至于把控制通路和数据通路分开的原因,可以这样理解:一般和控制有关的操作所需的

权限较高,所以需要进入内核态处理,导致消耗的时间较长,不过实际进行的操作次数有限,

RDMA 技术简介

属于低频且耗时的操作类型;而数据收发相关的操作所需的权限较低,直接在用户态处理即

可,只有这样才能起到旁路(bypass)内核和快速收发数据的效果,并且在程序运行的大部分

时间里,执行的都是这种高频操作。

图 13-1 RDMA 方案的控制通路和数据通路

欢迎大家加入RDMA群讨论: