RDMA技术简介 RDMA的控制通路和数据通路方案

存储技术

606人已加入

描述

作者:刘伟

拥有14年网络设备开发领域的从业经验,当前就职于浪潮电子信息产业股份有限公司体系结构研究部,负责高性能网卡的架构设计和驱动程序开发工作。

RDMA 技术基于传统以太网的网络概念,但与以太网网络中的同类技术存在差异。关键区 别在于,RDMA 提供了一种消息服务,应用程序可以使用该服务直接访问远程计算机上的虚拟内存。消息服务可用于进程间通信(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 方案的控制通路和数据通路

Send 和 Receive 操作为例,一次 RDMA 通信的过程简单描述如下。

(1)发送端和接收端的软件都通过控制通路进入内核态,创建通信所需的各种资源,包 括 MR、QP、CQ 等。

(2)在数据通路上,接收端的应用程序通知硬件准备接收数据,并将存放数据的缓存地 址告知硬件。

(3)在数据通路上,发送端的应用程序通知硬件发送数据,并将待发送数据所在的缓存 地址和数据长度告知硬件。

(4)发送端硬件使用 DMA 操作从位于主机内存的缓存中将数据复制到自己的硬件内部 缓存,然后按照协议封装数据包并发送给对端。

(5)接收端硬件收到数据包,按照协议对其进行解析,并通过 DMA 操作将有效的应用 数据写入主机内存。

(6)在数据通路上,接收端的应用程序获知收到的数据已被放入本地缓存。

图 13-2 展示了使用 RDMA 方案时,用户数据在两个运行在不同机器上的应用程序之间 传递的过程。图中的机器 1 为发送端,机器 2 为接收端。包括在网线/光纤上的数据传输,整 个数据传递过程共进行了 3 次数据复制,按照编号依次如下。

① 发送端网卡通过 DMA 操作,从主机内存的用户空间将数据复制到自己的硬件内部缓 存中,并进行封装,即添加各层协议报头和校验信息。

② 发送端网卡通过网线/光纤将封装好的数据发送给接收端的网卡。

③ 接收端网卡接收到数据后,先进行数据解析,即把各层协议报头和校验信息剥离,然 后将硬件缓存中的数据通过 DMA 操作复制到主机内存的用户空间。

如果跟图 5-1 和图 5-2 做一下比较,明显可以看出 RDMA 方案的三个优点。 • 本地内存零复制,即省去了数据在主机内存的用户空间和内核空间之间复制的步骤, 降低了整个数据收发过程的时延。 • 内核旁路(bypass),即数据通路绕过内核,避免了系统调用和上下文切换的时间 开销。 • 把数据包的封装和解析工作交由网卡来实现,降低了 CPU 负载。

虚拟内存

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分