RDMA技术详解——RDMA的三种实现方式

2023-10-30

RDMA作为一种host-offload, host-bypass技术,使低延迟、高带宽的直接的内存到内存的数据通信成为了可能。目前支持RDMA的网络协议有:

1、InfiniBand(IB): 从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。

2、RDMA过融合以太网(RoCE): 即RDMA over Ethernet, 允许通过以太网执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡必须是支持RoCE的特殊的NIC。

3、互联网广域RDMA协议(iWARP): 即RDMA over TCP, 允许通过TCP执行RDMA的网络协议。这允许在标准以太网基础架构(交换机)上使用RDMA,只不过网卡要求是支持iWARP(如果使用CPU offload的话)的NIC。否则,所有iWARP栈都可以在软件中实现,但是失去了大部分的RDMA性能优势。

        在三种主流的RDMA技术中,可以划分为两大阵营。一个是IB技术, 另一个是支持RDMA的以太网技术(RoCE和iWARP)。其中, IBTA力挺的技术自然是IB和RoCE, Mellanox公司(一个以色列人搞的小公司)是这方面的急先锋。而iWARP则是IEEE/IETF力挺的技术,主要是Chelsio公司在推进。RoCE和iWARP的争论,请参考Mellanox和Chelsio这两家公司发布的白皮书。

        在存储领域,支持RDMA的技术早就存在,比如SRP(SCSI RDMA Protocol)和iSER(iSCSI Extensions for RDMA)。 如今兴起的NVMe over Fabrics如果使用的不是FC网络的话,本质上就是NVMe over RDMA。 换句话说,NVMe over InfiniBand, NVMe over RoCE和NVMe over iWARP都是NVMe over RDMA。
 

三种实现的详细介绍

(出自https://network.51cto.com/art/202103/648715.htm

1.1 InfiniBand技术简介

        InfiniBand 是一种基于 InfiniBand 架构的 RDMA 技术,它提供了一种基于通道的点对点消息队列转发模型,每个应用都可通过创建的虚拟通道直接获取本应用的数据消息,无需其他操作系统及协议栈的介入。InfiniBand 架构的应用层采用了 RDMA 技术,可以提供远程节点间 RDMA读写访问,完全卸载 CPU 工作负载;网络传输采用了高带宽的传输;链路层设置特定的重传机制保证服务质量,不需要数据缓冲。

InfiniBand 必须运行在 InfiniBand 网络环境下,必须使用 IB 交换机及 IB 网卡才可实现。

InfiniBand 技术具有以下特点:

• 应用层采用 RDMA 技术,降低了在主机侧数据处理的延迟。

• 消息转发控制由子网管理器完成,没有类似以太网复杂的协议交互计算。

• 链路层通过重传机制保证服务质量,不需要数据缓冲,无丢包。

• 具有低延迟、高带宽、低处理开销的特点。

1.2  iWARP 技术简介

iWARP 是基于以太网和 TCP/IP 协议的 RDMA 技术,可以运行在标准的以太网基础设施上,iWARP并没有指定物理层信息,所以能够工作在任何使用TCP/IP协议的网络上层。iWARP允许很多传输类型来共享相同的物理连接,如网络、I/O、文件系统、块存储和处理器之间的消息通讯。

iWARP协议栈

iWARP 由 MPA、DDP、RDMAP 三层子协议组成:

RDMAP层协议负责 RDMA 读、写操作和 RDMA 消息的转换,并将 RDMA 消息转发到DDP层。

DDP层协议负责将过长的 RDMA 消息分片分装成DDP数据包继续转发到 MPA 层。

MPA层在 DDP 数据段的固定标识位置增加转发后向标识、数据报文的长度以及 CRC 校验数据等字段构成 MPA 数据段交由 TCP 传输。

iWARP 技术特点

iWARP 从以下几个方面降低了主机侧网络负载:

• TCP/IP 处理流程从 CPU 卸载到 RDMA 网卡处理,降低了 CPU 负载。

• 消除内存拷贝:应用程序可以直接将数据传输到对端应用程序内存中,显著降低 CPU 负载。

• 减少应用程序上、下文切换:应用程序可以绕过操作系统,直接在用户空间对 RDMA 网卡下发命令,降低了开销,显著降低了应用程序上、下文切换造成的延迟。

由于 TCP 协议能够提供流量控制和拥塞管理,因此 iWARP 不需要以太网支持无损传输,仅通过普通以太网交换机和 iWARP 网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。

1.3 RoCE技术简介

        RoCE 技术支持在以太网上承载 IB 协议,实现 RDMA over Ethernet。RoCE 与 InfiniBand技术有相同的软件应用层及传输控制层,仅网络层及以太网链路层存在差异。

RoCE 协议分为两个版本:

RoCE v1协议:基于以太网承载 RDMA,只能部署于二层网络,它的报文结构是在原有的 IB架构的报文上增加二层以太网的报文头,通过 Ethertype 0x8915 标识 RoCE 报文。

RoCE v2协议:基于 UDP/IP 协议承载 RDMA,可部署于三层网络,它的报文结构是在原有的 IB 架构的报文上增加 UDP 头、IP 头和二层以太网报文头,通过 UDP 目的端口号 4791 标 识RoCE 报文。RoCE v2 支持基于源端口号 hash,采用 ECMP 实现负载分担,提高了网络的利用率。

RoCE 使得基于以太网的数据传输能够:

• 提高数据传输吞吐量。

• 减少网络延时。

• 降低 CPU 负载。

RoCE 技术可通过普通以太网交换机实现,但服务器需要支持 RoCE 网卡,网络侧需要支持无损以太网络,这是由于 IB 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。

        在以太链路层之上用IB网络层代替了TCP/IP网络层,所以不支持IP路由功能。而v2使用了UDP+IP作为网络层,使得数据包也可以被路由。RoCE可以被认为是IB的“低成本解决方案”,将IB的报文封装成以太网包进行收发。由于RoCE v2可以使用以太网的交换设备,所以现在在企业中应用也比较多,但是相同场景下相比IB性能要有一些损失。

        在 RoCE 网络中,需要构建无损以太网用于保证网络传输过程中不丢包,关于无损以太网技术参考文章:“FCoE全解系列”之增强型以太网技术。构建无损以太网需支持以下关键特性:

  • (必选)PFC(Priority-based Flow Control,基于优先级的流量控制):逐跳提供基于优先级的流量控制,能够实现在以太网链路上运行多种类型的流量而互不影响。
  • (必选)ECN(Explicit Congestion Notification,显示拥塞通知):设备发生拥塞时,通过对报文 IP 头中 ECN 域的标识,由接收端向发送端发出降低发送速率的 CNP(Congestion Notification Packet,拥塞通知报文),实现端到端的拥塞管理,减缓拥塞扩散恶化。
  • (建议)DCBX(Data Center Bridging Exchange Protocol,数据中心桥能力交换协议):使用 LLDP 自动协商 DCB 能力参数,包括 PFC 和 ETS 等。一般用在接入交换机连接服务器的端口,与服务器网卡进行能力协商。
  • (可选)ETS(Enhanced Transmission Selection,增强传输选择):将流量按服务类型分组,在提供不同流量的最小带宽保证的同时提高链路利用率,保证重要流量的带宽百分比。需要逐跳提供。

在 RoCE 环境中,PFC与ECN 需要同时使用,以在无丢包情况下带宽得到保证。二者的功能对比如下:

虽然IB、以太网RoCE、以太网iWARP这三种RDMA技术使用统一的API,但它们有着不同的物理层和链路层。在以太网解决方案中,RoCE相对于iWARP来说有着明显的优势,这些优势体现在延时、吞吐率和 CPU负载。RoCE被很多主流的方案所支持,并且被包含在Windows服务软件中。

RDMA技术基于传统网络的概念,但与IP网络又有些不同。最关键的不同是RDMA提供了一种消息服务, 利用这种服务,应用程序可以直接访问远程计算机上的虚拟内存。消息服务可以用来进行网络中进程间通信(IPC)、远程服务器通信和在一些上层协议的协助下与存储设备进行数据传递。

上层应用协议ULPs(Upper Layer Protocols)有很多,例如iSCSI的RDMA扩展(iSER)、SCSI RDMA协议(SRP)等,主流的SMB、Samba 、Lustre、ZFS等也支持RDMA。

RoCE和InfiniBand,一个定义了如何在以太网上运行RDMA,而另一个则定义了如何在IB网络中运行RDMA。RoCE期望能够将IB的应用(主要是基于集群的应用)迁移到融合以太网中,而在其他应用中,IB网络仍将能够提供比RoCE更高的带宽和更低的时延。RoCE和IB协议的技术区别:

  • 拥塞控制:RoCE所依赖的无丢包网络基于以太网流控或PFC(Priority Flow Control)来实现。RoCEv2 则是定义了拥塞控制协议,使用ECN做标记和CNP帧来做确认。而IB则是使用基于信用的算法来保证HCA-HCA之间的无丢包通信。
  • 时延:当前IB交换机普遍要比以太交换机拥有更低的时延,以太网交换机一般的Port-to-Port时延在230ns,相比IB交换机在同样端口数的情况下100ns的时延,以太交换机还是要高出不少。
  • 配置:配置一个DCB以太网络要远比配置一个IB网络要复杂的多,同理,运维也要复杂的多。

RoCE和iWARP,一个是基于无连接协议UDP,一个是基于面向连接的协议(如TCP)。RoCEv1只能局限在一个二层广播域内,而RoCEv2和iWARP都能够支持三层路由。相比RoCE,在大型组网的情况下,iWARP的大量TCP连接会占用大量的额内存资源,对系统规格要求更高。另外,RoCE支持组播,而iWARP还没有相关的标准定义。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RDMA技术详解——RDMA的三种实现方式 的相关文章

  • 14 【接口规范和业务分层】

    14 接口规范和业务分层 1 接口规范 RESTful架构 1 1 什么是REST REST全称是Representational State Transfer 中文意思是表述 编者注 通常译为表征 性状态转移 它首次出现在2000年Roy
  • android EditText 实时监听输入框的内容

    在开发中很多时候我们都会用到EditText 对输入内容的实时监听也是不可或缺的 在android中为我们提供了TextWatcher这个类 我们只要extends这个类然后etColler addTextChangedListener e
  • C#基础知识框架整理

    目录 NET FrameWork框架 NET平台 类库 快速启动vs sln文件的使用 在解决方案里 csprog文件的使用 在项目文件夹里 排除语法错误 设置行号 设置字体 恢复出厂设置 自动切换运行的项目 C 的3种注释符 C 常用的快
  • 浙大计算机学院博士毕业论文要求,浙大在读博士需要3篇SCI 论文才能毕业,清华博士却不作要求!...

    原标题 浙大在读博士需要3篇SCI 论文才能毕业 清华博士却不作要求 最近 又进入了一年的秋招季 很多学子纷纷加入求职大军之中 但是今年却有不一样的声音 有在读研究生表示 学校对毕业要求提高 要在专业期刊发表论文 这成了比找工作更让人烦心的
  • Java整合七牛云进行文件的上传与下载

    一 七牛云的对象存储的介绍 七牛云对象存储 Kodo 是七牛云提供的高可靠 强安全 低成本 可扩展的存储服务 您可通过控制台 API SDK 等方式简单快速地接入七牛存储服务 实现海量数据的存储和管理 通过 Kodo 可以进行文件的上传 下
  • Filter与Listener

    目录 Filter 1 Filter概念 2 Filter快速入门 3 Filter细节 1 web xml配置 2 Filter执行流程 3 Filter生命周期方法 4 Filter配置详解 拦截路径配置 拦截方式配置 1 注解配置 2
  • micropython下载及安装编译过程

    本文根据 参考文献 实现基于Black F407VE开发板的micropython移植 为后期 stm32H743的 micropython作准备 参考 http docs micropython org en latest 1 下载mic

随机推荐

  • k8s 实战之路

    k8s就是kubernetes 关于k8s 基本属于运维的范畴 一般除了一线大厂会有自研的运维平台和运维团队去做这些事 其他的中小型公司都会要求自己的研发人员懂这些运维的东西 还有nginx等 k8s 刚接触 目前还没有在现实工作中实际操作
  • java 继承 异常_Java异常以及继承的一些问题

    Java异常以及继承的一些问题 类之间的关系 java异常类层次结构图 Throwable Throwable是 Java 语言中所有错误或异常的超类 Throwable包含两个子类 Error 和 Exception 它们通常用于指示发生
  • 【vue】el-upload 图片上传的封装

  • Android DataBinding的基本使用

    5 DataBinding https developer android com topic libraries data binding custom conversions 数据绑定库是一种支持库 借助该库 您可以使用声明性格式 而非
  • 基于pytorch的LSTM进行字符级文本生成实战

    基于pytorch的LSTM进行字符级文本生成实战 文章目录 基于pytorch的LSTM进行字符级文本生成实战 前言 一 数据集 二 代码实现 1 导入库及LSTM模型构建 2 数据预处理函数 3 训练函数 4 预测函数 5 文本生成函数
  • Searching the String 【ZOJ - 3228】【AC自动机+last跳板优化时间】

    题目链接 这次要求的有两个 分别是0 1 代表着的是可以重叠 以及不可以重叠的遍历到该单词的次数 可以重叠的很容易 遇到的时候 就直接加上就是了 但是不可以重叠的时候呢 就需要看到该单词它和上一次的状态出现的距离差了 看一下是否比这个单词长
  • Qt中使用QProcess调用第三方程序

    在Qt中调用第三方程序通常使用QProcess进行调用 以下描述QProcess常用的接口 1 QProcess startDetached QProcess startDetached const QString program cons
  • SQL将会员按照总消费金额从高到低分成50档。(分档、分组)

    面试题 交易表 有4个字段 订单号 会员id 消费金额 购买时间 问题 将会员按照总消费金额从高到低分成50档 解题步骤 1 解题思路 将某一个字段按区间分档 最先想到的是 猴子 从零学会SQL 里讲过的多条件语句 case when 但是
  • Python 计算机视觉(七)—— OpevCV进行直方图统计

    本文中涉及到的 matplotlib 绘图库的知识可以参考我的之前的文章 Python 绘图库 Matplotlib 目录 1 直方图概述 1 基本概念 2 直方图中的术语 BINS DIMS RANGE 2 直方图绘制 1 读取图像信息
  • 正交、独立、不相关区别

    一 三者的定义 假设X为一个随机过程 则在t1和t2时刻的随机变量的相关定义如下 两个随机过程一样 1 定义Rx t1 t2 E X t1 X t2 为相关函数 若R 0 称正交 注意 相关函数为0 不是不相关 而是正交 正交不仅仅描述确定
  • tensorflow mnist实战笔记(二)制作和读取自己的数据集

    这里面写的非常详细 http www itdadao com articles c15a1401577p0 html 看了网上N多的教程 发现mnist的教程的数据都是官网已经制作好的 那么如果我们自己有数字图片 我们该怎么利用tensoe
  • 无法找到 v14x 的生成工具。安装 v14x 可使用 v14x 生成工具进行生成

    无法找到 v143 的生成工具 安装 v143 可使用 v143 生成工具进行生成 修改工程文件 选择菜单项 项目 点击 项目 选择最后一个 属性 修改Windows SDK版本 选中其中一个 这里我选择10 0 16299 0版本 修改后
  • window上安装mysql服务并且开机启动

    1 先安装mysql服务 首先我们先看一下mysql安装好后的bin目录 打开cmd输入 mysqld install 安装服务 mysqld remove 移除服务 mysqld start 启动服务 2 设置开机启动 然后再win r
  • DAY08_MyBatisPlus——入门案例&标准数据层开发CRUD-Lombok-分页功能&DQL编程控制&DML编程控制&乐观锁&快速开发-代码生成器

    目录 一 MyBatisPlus简介 1 入门案例 问题导入 1 1 SpringBoot整合MyBatisPlus入门程序 创建新模块 选择Spring初始化 并配置模块相关基础信息 选择当前模块需要使用的技术集 仅保留JDBC 手动添加
  • 【LeetCode刷题】206 反转链表 java

    题目 给你单链表的头节点 head 请你反转链表 并返回反转后的链表 示例 方法一 迭代 比如需要链表为 1 gt 2 gt 3 gt 4 gt null 反转后就是null lt 1 lt 2 lt 3 lt 4 class Soluti
  • 线索二叉树

    原文地址 blog chinaunix net uid 26548237 id 3476920 html 一 线索二叉树的原理 通过考察各种二叉链表 不管儿叉树的形态如何 空链域的个数总是多过非空链域的个数 准确的说 n各结点的二叉链表共有
  • Mac安装MySQL8碰到的问题

    Mac安装MySQL8碰到的问题 链接数据库时候报错 选择数据库或表的时候抛出异常 无限转菊花 链接数据库时候报错 报错信息大体如下 Connection failed MySQL said Authentication plugin ca
  • Windows10家庭版不支持远程桌面的解决方案

    1 下载RDP Wrapper https github com stascorp rdpwrap releases 2 解压 zip 文件 3 运行intall bat 4 打开RDPConf exe 如果全为绿色 远程桌面启用成功 可运
  • 如何导入csv与excel格式的数据到pandas库中?

    Pandas 库提供了许多方法来导入不同格式的数据 例如 CSV Excel JSON SQL 等 以下是使用 pandas 导入 CSV 和 Excel 文件的方法 导入 CSV 文件 可以使用 pandas 中的 read csv 函数
  • RDMA技术详解——RDMA的三种实现方式

    RDMA作为一种host offload host bypass技术 使低延迟 高带宽的直接的内存到内存的数据通信成为了可能 目前支持RDMA的网络协议有 1 InfiniBand IB 从一开始就支持RDMA的新一代网络协议 由于这是一种