本篇内容出自
作者简介:
刘伟
(相关资料图)
拥有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群讨论: