​导读:远程直接内存访问(即RDMA)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入。RDMA最早在Infiniband传输网络上实现,后来业界厂家把RDMA移植到传统Ethernet以太网上,降低了RDMA的使用成本,推动RDMA技术普及。

然而,在Ethernet以太网上,根据协议栈融合度的差异,分为iWARP和RoCE两种技术,而RoCE又包括RoCEv1和RoCEv2两个版本(RoCEv2的最大改进是支持IP路由)。

随着高性能计算、大数据分析、人工智能以及物联网等技术的飞速发展,集中式存储、分布式存储以及云数据库的普及等原因,业务应用有越来越多的数据需要从网络中获取,这对数据中心网络的交换速度和性能要求越来越高。

传统的 TCP/IP 软硬件架构及应用存在着网络传输和数据处理的延迟过大、存在多次数据拷贝和中断处理、复杂的 TCP/IP 协议处理等问题。RDMA(Remote Direct Memory Access,远程直接内存访问)是一种为了解决网络传输中服务器端数据处理延迟而产生的技术。

RDMA 将用户应用中的数据直接传入服务器的存储区,通过网络将数据从一个系统快速传输到远程系统的存储器中,消除了传输过程中多次数据复制和文本交换的操作,降低了 CPU 的负载。RDMA技术的原理及其与TCP/IP架构的对比如下图所示。

​RDMA 技术实现了在网络传输过程中两个节点之间数据缓冲区数据的直接传递,在本节点可以直接将数据通过网络传送到远程节点的内存中,绕过操作系统内的多次内存拷贝,相比于传统的网络传输,RDMA 无需操作系统和 TCP/IP 协议的介入,可以轻易的实现超低延时的数据处理、超高吞吐量传输,不需要远程节点 CPU 等资源的介入,不必因为数据的处理和迁移耗费过多的资源。

RDMA 技术主要包括:

IB(InfiniBand):基于 InfiniBand 架构的 RDMA 技术,由 IBTA(InfiniBand Trade Association)提出。搭建基于 IB 技术的 RDMA 网络需要专用的 IB 网卡和 IB 交换机。

iWARP(Internet Wide Area RDMA Protocal):基于 TCP/IP 协议的 RDMA 技术,由 IETF 标 准定义。iWARP 支持在标准以太网基础设施上使用 RDMA 技术,但服务器需要使用支持iWARP 的网卡。

RoCE(RDMA over Converged Ethernet):基于以太网的 RDMA 技术,也是由 IBTA 提出。RoCE支持在标准以太网基础设施上使用RDMA技术,但是需要交换机支持无损以太网传输,需要服务器使用 RoCE 网卡。

【文章福利】另外小编还整理了一些C/C++后台开发教学视频,相关面试题,后台学习路线图免费分享,需要的可以自行添加:Q群:720209036 点击加入~ 群文件共享

小编强力推荐C++后台开发免费学习地址:C/C++Linux服务器开发高级架构师/C++后台开发架构师​https://ke.qq.com/course/417774?flowToken=1013189

InfiniBand技术简介

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

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

InfiniBand 技术具有以下特点:

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

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

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

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

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 网卡即可实现,因此能够在广域网上应用,具有较好的扩展性。

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 的丢包处理机制中,任意一个报文的丢失都会造成大量的重传,严重影响数据传输性能。

在 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还没有相关的标准定义。

参考资料

推荐一个零声教育C/C++后台开发的免费公开课程,个人觉得老师讲得不错,分享给大家:C/C++后台开发高级架构师,内容包括Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习

原文:详谈RDMA技术原理和三种实现方式

详谈RDMA技术原理和三种实现方式相关推荐

  1. 详谈RDMA(远程直接内存访问)技术原理和三种实现方式

    目录 远程直接内存访问(即RDMA) InfiniBand技术简介 iWARP 技术简介 RoCE技术简介 远程直接内存访问(即RDMA) 导读:远程直接内存访问(即RDMA)是一种直接内存访问技术, ...

  2. RDMA技术详解——原理和三种实现方式

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

  3. 【前端】图片懒加载的原理和三种实现方式

    一. 图片懒加载的目的 大型网站如常用的淘宝,京东等页面,需要展示大量的商品图片信息,如果打开网页时让所有图片一次性加载完成,需要处理很多次网络请求,等待加载时间比较长,用户体验感很差. 有一种常用的 ...

  4. 内网穿透实现原理及三种实现方式

    1.操作系统 Deepin - 基于Linux的开源国产操作系统(软件生态好,缺点不够流畅) 官网 Ubuntu | 全球领先的用于个人电脑.平板及手机的操作系统 我使用的版本 Ubuntu乌班图-桌 ...

  5. 双向数据绑定原理(三种实现方式)

    <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>双向数 ...

  6. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  7. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

    二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...

  8. AGV三种导航方式,苏州凌鸟带你走进AGV世界

    市面上AGV常用的三种导航方式:磁条导航.激光导航.slam导航.到底哪种导航方式的AGV好呢? 激光导航:地面无需其他定位设施,能够适合多种现场环境,制造成本高,对环境要求相对较高(外界光线,地面要 ...

  9. OLED显示屏驱动:8080并口,IIC,SPI三种驱动方式

    本文介绍了对OLED的几种驱动方式,8080并口,IIC,SPI三种驱动方式,采用的单片机是STM32F407. 文章目录 一.OLED驱动原理介绍 二.8080并口驱动方式 三.IIC驱动方式 四. ...

最新文章

  1. UI培训教程分享:UI设计的分类有哪些?
  2. c++ primer,友元函数上的一个例子(By Sybase)
  3. js面向对象开发互联网机顶盒应用头端之四
  4. 汇编: 在代码中安排自己定义的数据,栈空间
  5. linux如何配置网卡地址吗,教会你如何完成Linux网络地址配置
  6. Apache Flink 零基础入门(十一)Flink transformation
  7. 1. 各种虚拟机的发展历史
  8. php微信商户下载对账单,浅析微信支付:下载对账单和资金账单
  9. 在Blazor中构建数据库应用程序——第5部分——查看组件——UI中的CRUD列表操作
  10. 《 郝斌 java自学视频 完结 》_郝斌Java自学视频 全107讲视频教程下载 完整版
  11. [C#/DevExpress]VS2010使用CefSharp调用Chrome内核打开网页
  12. pr 文件结构不一致_用pr制作了视频,输出后发现画面都被压扁了,求教是什么原因,怎么解决啊~我没有改变它的原画面比例...
  13. python求梅森尼数_梅森尼数 - 寂寞暴走伤的个人空间 - OSCHINA - 中文开源技术交流社区...
  14. QT用QWidget做的气泡聊天功能,可发图片、文件、文本等气泡信息,功能简单,适合初学者
  15. ubuntu系统(二):ibus拼音将繁体中文改为简体中文
  16. 做电商网站的主键策略
  17. mysql lag和lead_Oracle的LAG和LEAD分析函数
  18. 商业模式到底是什么?(转载)
  19. 在线图片文字识别html,免费在线文字识别服务:Free Online OCR 快速图片转文本工具...
  20. GOIP语音网关对接VOS3000技巧 落地和呼叫

热门文章

  1. Riemann积分的一点点菜鸡笔记(一)
  2. 【shell】shell脚本实战-shell脚本函数详解
  3. TensorFlow2利用tf.image实现数据增强
  4. 如何轻松应对光纤传输容量不足?DWDM光模块实现链路扩容
  5. VR全景看考场,线上“踩点”不迷路
  6. 计算机如何配置交换机,Win7电脑怎么配置交换机|Win7电脑配置交换机的详细步骤...
  7. 用Laravel-admin搭建问卷系统(持续更新)
  8. CSS 文字超出部分省略号代替
  9. C语言:判断是否为素数
  10. 理光Ricoh Aficio MP C4501A 一体机驱动