RDMA技术(解决主从数据库数据不一致问题)

优质博文:IT-BLOG-CN

一、简介

RDMA(remote direct memory access)远端直接内存访问,是一种高性能网络通信技术,具有高带宽、低延迟、无CPU消耗等优点。 主要解决网络传输中服务器端数据处理的延迟问题。

Remote:数据通过网络与远程机器间进行数据传输;
Direct:没有内核的参数,有关发送传输的所有内容都卸载到网卡上;
Memory:在用户空间虚拟内存与RNIC网卡直接进行数据传输不涉及到系统内核,没有额外的数据移动和复制;
Accesssend/recevie/read/write/atomic操作;

二、传统通信模式

使用TCP/IP协议的应用程序通常采用应用编程接口:UNIX BSD的套接字socket,来实现网络进程之间的通信。就目前而言,几乎所有的应用程序都是采用socket。无论编写客户端程序还是服务端程序,系统都要为每个TCP连接都要创建一个socket句柄。这样导致了每次传输通信,都要经过OS和协议栈的管理,因此不管是Socket同步通信还是异步通信,都会存在CPU占用过高的现象,并且需要额外的数据处理,已经无法满足更快,更高效和可扩展性的网络需求。

传统网络通信模式的流程:

【1】数据发送方需要讲数据从用户应用空间Buffer复制到内核空间的Socket Buffer中;
【2】然后Kernel空间中添加数据包头,进行数据封装。通过一系列多层网络协议的数据包处理工作;
【3】数据被PushNIC网卡中的Buffer进行网络传输;
【4】消息接受方接受从远程机器发送的数据包后,要将数据包从NIC buffer中复制数据到Socket Buffer
【5】然后经过一些列的多层网络协议进行数据包的解析工作;
【6】解析后的数据被复制到相应位置的用户应用空间Buffer
【7】这个时候再进行系统上下文切换,用户应用程序才被调用;

三、RDMA

RDMA就是为了解决网络传输中服务器端数据处理的延迟而产生的,无需使用CPU,就可以从一个主机或服务器的内存直接访问另一个主机或服务器内存。这样既提高了宽带又降低了延迟、抖动和CPU消耗。RDMA可以简单理解为利用相关的硬件和网络技术,服务器A的网卡可以直接读服务器B的内存。如下图应用程序不需要参与数据传输过程,只需要指定内存读写地址,开启传输并等待传输完成即可。

使用RDMA的优势如下:
【1】零拷贝Zero-copy 应用程序能够直接执行数据传输,在不涉及到网络软件栈的情况下。数据能够被直接发送到缓冲区或者能够直接从缓冲区里接收,而不需要被复制到网络层。
【2】内核旁路Kernel bypass 应用程序可以直接在用户态执行数据传输,不需要在内核态与用户态之间做上下文切换。
【3】不需要CPU干预No CPU involvement 应用程序可以访问远程主机内存而不消耗远程主机中的任何CPU。远程主机内存能够被读取而不需要远程主机上的进程或CPU参与。远程主机的CPU的缓存cache不会被访问的内存内容所填充。
【4】消息基于事务Message based transactions 数据被处理为离散消息而不是流,消除了应用程序将流切割为不同消息/事务的需求。
【5】支持分散/聚合条目Scatter/gather entries support RDMA原生态支持分散/聚合。也就是说,读取多个内存缓冲区然后作为一个流发出去或者接收一个流然后写入到多个内存缓冲区里去。

四、RDMA网络

目前,大致有三类RDMA网络,分别是Infiniband/RoCE/iWARP。其中,Infiniband是一种专为RDMA设计的网络,从硬件级别保证可靠传输,而RoCEiWARP都是基于以太网的RDMA技术,支持相应的verbs接口。

InfiniBand: 采用Cut-Through转发模式,减少转发时延;基于Credit的流控机制,保证无丢包;硬件卸载;Buffer尽可能小,减少报文被缓冲的时延。

iWARP(RDMA over TCP/IP): 利用成熟的IP网络,继承RDMA的优点,TCP/IP硬件实现成本高,但如果采用传统IP网络的丢包策略对性能影响大。

RoCE: InfiniBand Trade Association(IBTA)标准中定义的网络协议,允许通过以太网络使用RDMA。可以看作是RDMA技术在数据中心、云、存储和虚拟环境中的应用。RoCE协议存在RoCEv1RoCEv2两个版本,这取决于所使用的网络适配器和网卡。RoCE v1是基于以太网链路层实现的RDMA协议(交换机需要支持PFC等流控技术,在物理层保证可靠传输),允许在同一个VLAN中的两台主机进行通信。RoCE v1协议在以太层的typeID0x8915RoCE v2克服了RoCE v1绑定到单个VLAN的限制。通过改变数据包封装,包括IPUDP标头,RoCE v2现在可以跨L2L3网络使用。

RDMA API(Verbs)主要有两种: 一个名为OpenFabric Alliance的组织提供了RDMA传输的一系列Verbs API,开发了OFED(Open Fabric Enterprise Distribution)协议栈,支持多种RDMA传输层协议。RDMA应用和RNIC(RDMA-aware Network Interface Controller)之间的传输接口层Software Transport Interface被称为VerbsRDMA API
【1】内存Verbs也叫One-SidedRDMA。包括RDMA Reads/RDMA Atomic这种模式下的RDMA访问完全不需要远端机的任何确认。
【2】消息Verbs也叫Two-SidedRDMA。包括RDMA Send/RDMA Receive这种模式下的RDMA访问需要远端机CPU的参与。

在实际中,SEND/RECEIVE多用于连接控制类报文,而数据报文多是通过READ/WRITE来完成的。

RDMA是基于消息的数据传输协议(而不是基于字节流的传输协议),所有数据包的组装都在RDMA硬件上完成的,也就是说OSI模型中的下面4层(传输层,网络层,数据链路层,物理层)都在RDMA硬件上完成。

五、RDMA 工作流程

Memory Registration(MR)内存注册:创建两个key (localremote)指向需要操作的内存区域,注册的keys是数据传输请求的一部分。同时,RDMA硬件对用来做数据传输的内存是有特殊要求的。
【1】在数据传输过程中,应用程序不能修改数据所在的内存。
【2】操作系统不能对数据所在的内存进行page out操作,物理地址和虚拟地址的映射必须是固定不变的。

Queues队列:RDMA一共支持三种队列,发送队列SQ和接收队列RQ,完成队列CQ。其中,SQRQ通常成对创建,被称为Queue Pairs(QP)RDMA是基于消息的传输协议,数据传输都是异步操作。RDMA操作其实很简单,可以理解为:
【1】Host提交工作请求WR到工作队列WQ: 工作队列包括发送队列SQ和接收队列CQ。工作队列的每一个元素叫做WQE, 也就是WR
【2】Host从完成队列CQ中获取工作完成WC: 完成队列里的每一个叫做CQE,也就是WC
【3】具有RDMA引擎的硬件hardware就是一个队列元素处理器。RDMA硬件不断地从工作队列WQ中去取工作请求WR来执行,执行完了就给完成队列CQ中放置工作完成WC

从生产者-消费者的角度理解:
【1】Host生产WR, 把WR放到WQ中;
【2】RDMA硬件消费WR
【3】RDMA硬件生产WC, 把WC放到CQ中去;
【4】Host消费WC

Send/Recv操作: SEND/RECEIVE是双边操作,即需要通信双方的参与,并且RECEIVE要先于SEND执行,这样对方才能发送数据,当然如果对方不需要发送数据,可以不执行RECEIVE操作,因此该过程和传统通信相似,区别在于RDMA的零拷贝网络技术和内核旁路,延迟低,多用于传输短的控制消息。

read/write操作:
【1】RDMA读操作本质上就是Pull操作, 把远程系统内存里的数据拉回到本地系统的内存里。接收方必须提供虚拟地址和目标存储内存的remote_key。接收方需要初始和接受提醒通知,发送方是完全被动的,并且不会接受任何通知。
【2】RDMA写操作本质上就是Push操作,把本地系统内存里的数据推送到远程系统的内存里。发送方必须提供虚拟地址和目标读取内存的remote_key。发送方需要初始和接受提醒通知,接受方是完全被动的,并且不会接受任何通知。

RDMA工作流程: 要使用RDMA首先要建立从RDMA到应用程序内存的数据路径 ,可以通过RDMA专有的verbs interface接口来建立这些数据路径,一旦数据路径建立后,就可以直接访问用户空间buffer
【1】初始化context注册内存域;
【2】建立RDMA连接;
【3】通过SEND/RECEIVE操作,C/S交换包含RDMA memory region keyMSG_MR消息(一般是客户端先发送);
【4】通过WRITE/READ操作,进行数据传输(单边操作);
【5】发送MSG_DONE消息,关闭连接;

消息服务建立在通信双方本端和远端应用之间创建的Channel-IO连接之上。当应用需要通信时,就会创建一条Channel连接,每条Channel的首尾端点是两对Queue Pairs(QP)
每对QPSend Queue(SQ)Receive Queue(RQ)构成,这些队列中管理着各种类型的消息。QP会被映射到应用的虚拟地址空间,使得应用直接通过它访问RNIC网卡。
除了QP描述的两种基本队列之外,RDMA还提供一种队列Complete Queue(CQ)CQ用来知会用户WQ上的消息已经被处理完。
RDMA提供了一套软件传输接口,方便用户创建传输请求Work Request(WR),WR中描述了应用希望传输到Channel对端的消息内容,WR通知QP中的某个队列Work Queue(WQ)
WQ中,用户的WR被转化为Work Queue Element(WQE)的格式,等待RNIC的异步调度解析,并从WQE指向的Buffer中拿到真正的消息发送到Channel对端。

RDMA双边操作(send/receive): 对于双边操作为例,A向B发送数据的流程如下:
【1】首先,A和B都要创建并初始化好各自的QPCQ
【2】A和B分别向自己的WQ中注册WQE,对于A,WQ=SQWQE描述指向一个等到被发送的数据;对于B,WQ=RQWQE描述指向一块用于存储数据的buffer
【3】A的RNIC异步调度轮到A的WQE,解析到这是一个SEND消息,从buffer中直接向B发出数据。数据流到达B的RNIC后,B的WQE被消耗,并把数据直接存储到WQE指向的存储位置;
【4】AB通信完成后,A的CQ中会产生一个完成消息CQE表示发送完成。与此同时,B的CQ中也会产生一个完成消息表示接收完成。每个WQWQE的处理完成都会产生一个CQE
【5】双边操作与传统网络的底层buffer pool类似,收发双方的参与过程并无差别,区别在零拷贝、kernel bypass,实际上传统网络中一些高级的网络SOC已经实现类似功能。对于RDMA,这是一种复杂的消息传输模式,多用于传输短的控制消息;

RDAM单边操作(read): READWRITE是单边操作,只需要本端明确信息的源和目的地址,远端应用不必感知此次通信。对于操作发起端,数据的读或写都通过在RNIC与应用Buffer之间完成,再由远端RNIC封装成消息返回到本端。对于单边操作,以B对A的read操作为例,数据的流程如下:
【1】首先A、B建立连接,QP已经创建并且初始化。
【2】数据被存档在A的buffer地址VA,注意VA应该提前注册到A的RNIC,并拿到返回的local key,相当于RDMA操作这块buffer的权限。
【3】A把数据地址VAkey封装到专用的报文传送到B,这相当于A把数据buffer的操作权交给了B。同时A在它的WQ中注册进一个WR,以用于接收数据传输的B返回的状态。
【4】B在收到A的送过来的数据VAR_key后,RNIC会把它们连同存储地址VB到封装RDMA READ,这个过程A、B两端不需要任何软件参与,就可以将A的数据存储到B的VB虚拟地址。
【5】B在存储完成后,会向A返回整个数据传输的状态信息。

单边操作传输方式是RDMA与传统网络传输的最大不同,只需提供直接访问远程的虚拟地址,无须远程应用的参与其中,这种方式适用于批量数据传输。

六、如何实现RoCE

通常,为了实现RoCE,可以安装支持RoCE的网卡或卡驱动程序。所有以太网NIC都需要RoCE网络适配器卡。RoCE驱动程序在Red HatLinuxMicrosoft Windows和其他常见操作系统中使用。RoCE有两种可用方式:对于网络交换机,可以选择使用支持PFC(优先流控制)操作系统的交换机;对于机架服务器或主机,需要使用网卡。

RoCE 的好处:
【1】CPU占用率: 访问远程交换机或服务器的内存,无需消耗远程服务器上的CPU周期,从而可以充分利用可用带宽和更高的可伸缩性。
【2】零复制: 向远程缓冲区发送数据和接收数据。
【3】高效: 由于RoCE改善了延迟和吞吐量,网络性能得到了很大提高。
【4】节省成本: 借助RoCE,无需购买新设备或更换以太网基础设施即可处理大量数据,从而大大节省了公司的资本支出。

七、RoCE与iWARP/InfiniBand的区别

RDMA最早在Infiniband传输网络上实现,技术先进,但是价格高昂,后来业界厂家把RDMA移植到传统Ethernet以太网上,降低了RDMA的使用成本,推动了RDMA技术普及。在Ethernet以太网上,根据协议栈融合度的差异,分为iWARPRoCE两种技术,而RoCE又包括RoCEv1RoCEv2两个版本(RoCEv2的最大改进是支持IP路由),各RDMA网络协议栈的对比如下图所示。

Infiniband支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的NIC和交换机。

RoCE一个允许在以太网上执行RDMA的网络协议。其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是InfiniBand标头。这支持在标准以太网基础设施(交换机)上使用RDMA。只有网卡应该是特殊的,支持RoCE

iWARP一个允许在TCP上执行RDMA的网络协议。IBRoCE中存在的功能在iWARP中不受支持。这支持在标准以太网基础设施(交换机)上使用RDMA。只有网卡应该是特殊的,并且支持iWARP(如果使用CPU卸载),否则所有iWARP堆栈都可以在软件中实现,并且丧失了大部分RDMA性能优势。

InfiniBandiWARPRoCE
标准组织IBTAIETFIBTA
性能最好稍差(受TCP影响)与IB相当
成本
网卡厂商Mellanox 40GbpsChelsio 10GbpsMellanox-40Gbps Emulex-10/40Gbps

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

RoCE适配器只能与其他RoCE适配器通信,如果混合适配器类型配置的话,例如RoCE适配器与iWARP适配器组合,都可能会恢复为传统的TCP/IP连接。

在数据中心中运行RDMA,可以减轻数据移动的负担,并为应用程序提供更高的CPU资源可用性。RoCE协议可以从RDMA的功能中受益,而无需更改其网络基础架构。通过减少以太网延迟和CPU开销,RoCE可以提高搜索、存储、数据库和高事务处理率应用程序的性能。通过提高CPU效率和应用程序性能,RoCE可以减少所需的服务器数量,从而节省能源,并减少基于以太网的数据中心的占用空间。

  • 91
    点赞
  • 85
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 59
    评论
第1章 RDMA背景简介 ............................................. 5 第2章 哪些网络协议支持RDMA ..................................... 8 2.1 InfiniBand(IB)........................................... 8 2.2 RDMA过融合以太网(RoCE)................................... 8 2.3 互联网广域RDMA协议(iWARP)................................ 8 第3章 RDMA技术优势 ............................................. 9 第4章 RDMA有哪些不同实现 ...................................... 10 第5章 RDMA有哪些标准组织 ...................................... 14 第6章 应用和RNIC传输接口层 .................................... 18 6.1 内存Verbs(Memory Verbs)............................... 19 6.2 消息Verbs(Messaging Verbs)............................ 20 第7章 RDMA传输分类方式 ........................................ 20 7.1 RDMA原语................................................ 21 7.2 RDMA 队列对(QP)....................................... 23 7.3 RDMA完成事件............................................ 23 7.4 RDMA传输类型............................................ 24 7.5 RDMA双边操作解析........................................ 26 7.6 RDMA单边操作解析........................................ 27 7.7 RDMA技术简单总结........................................ 27 第8章 InfiniBand技术和协议架构分析 ............................ 29 8.1 InfiniBand技术的发展.................................... 29 8.2 InfiniBand技术的优势.................................... 30 8.3 InfiniBand基本概念...................................... 32 8.4 InfiniBand协议简介...................................... 33 8.4.1 物理层 ............................................ 34 8.4.2 链路层 ............................................ 34 8.4.3 网络层 ............................................ 34 8.4.4 传输层 ............................................ 35 8.4.5 上层协议 .......................................... 35 8.5 IB应用场景.............................................. 36 第9章 InfiniBand主流厂商和产品分析 ............................ 37 9.1 InfiniBand网络和拓扑.................................... 38 9.2 软件协议栈OFED.......................................... 42 9.3 InfiniBand网络管理...................................... 43 9.4 并行计算集群能力........................................ 44 9.5 基于socket网络应用能力.................................. 45 9.6 存储支持能力............................................ 45 9.7 Mellanox产品介绍........................................ 46 9.8 Infiniband交换机........................................ 48 9.9 InfiniBand适配器........................................ 51 9.10 Infiniband路由器和网关设备............................. 52 9.11 Infiniband线缆和收发器................................. 53 9.12 InfiniBand主要构件总结................................. 54 9.13 InfiniBand对现有应用的支持和ULPs支持................... 55 第10章 RDMA over TCP(iWARP)协议和工作原理 ..................... 56 10.1 RDMA相关简介........................................... 57 10.2 RDMA工作原理........................................... 59 10.3 RDMA 操作类型.......................................... 61 10.4 RDMA over TCP详解...................................... 61 10.5 RDMA标准组织............................................ 7 第11章 RoCE(RDMA over Converged Ethernet)原理 ............... 65 第12章 不同RDMA技术的比较 ..................................... 67 12.1 IB和TCP、Ethernet比较.................................. 69 12.2 RoCE和InfiniBand比较................................... 70 12.3 RoCE和IB协议的技术区别................................. 71 12.4 RoCE和iWARP的区别...................................... 71 第13章 Intel Omni-Path和InfiniBand对比分析 .................... 72 13.1 Intel True Scale Fabric介绍............................ 73 13.2 Intel True Scale InfiniBand产品........................ 74 13.3 Intel Omni-Path产品.................................... 76 第14章 RDMA关键技术延伸 ....................................... 80 14.1 RDMA指令的选择......................................... 80 14.2 慎用atomic类指令....................................... 81 14.3 减少交互次数........................................... 82 14.3.1 Wr 聚合 .......................................... 82 14.3.2 SGE 聚合 ......................................... 82 14.3.3 使用imm数据 ...................................... 83 14.3.4 使用inline数据 ................................... 83 14.3.5 CQE中使用inline数据 .............................. 83 14.3.6 WC聚合 ........................................... 84 14.4 运行模式选择........................................... 84 14.4.1 连接的模式 ....................................... 84 14.4.2 运行模式 ......................................... 85 14.5 性能与并发............................................. 86 14.6 避免CPU缓存抖动........................................ 87 14.7 避免芯片内部的缓存Miss................................. 87 14.8 时延的隐藏............................................. 88 14.8.1 利用Prefetch预取指令 ............................. 88 14.8.2 异步交互操作优先 ................................. 88 14.9 RDMA性能分析........................................... 89

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 59
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿进阶

千言万语都不及一句“谢谢”

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值