CN107205033A - 以无锁方式共享rdma连接的方法 - Google Patents
以无锁方式共享rdma连接的方法 Download PDFInfo
- Publication number
- CN107205033A CN107205033A CN201710411176.XA CN201710411176A CN107205033A CN 107205033 A CN107205033 A CN 107205033A CN 201710411176 A CN201710411176 A CN 201710411176A CN 107205033 A CN107205033 A CN 107205033A
- Authority
- CN
- China
- Prior art keywords
- connection
- logic
- rdma
- unique mark
- mark
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 239000003999 initiator Substances 0.000 claims abstract description 26
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000007717 exclusion Effects 0.000 abstract description 6
- 238000009826 distribution Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种以无锁方式共享RDMA连接的方法,包括以下步骤:1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;2)连接发起方创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接。本发明通过为每个逻辑连接赋予唯一标识,并且将RDMA连接共享转换为生产者‑消费者问题,避免了互斥锁的出现,从而解决了RDMA中随着连接的增加网络性能急剧下降的可扩展性问题。
Description
技术领域
本发明涉及数据通信领域,具体涉及一种共享RDMA连接的方法。
背景技术
随着互联网技术的蓬勃发展,产生了大量分布式应用系统,如股票交易系统、分布式事务处理等。这些分布式应用系统对网络低时延和高带宽提出了越来越高的要求,而传统的基于TCP/IP协议的网络由于其复杂的协议栈和冗长的数据路径,应对这种场景力不从心,限制着这些系统的可用性。针对此问题,远程直接数据存取(Remote Direct MemoryAccess,RDMA)技术以其卸载TCP/IP协议栈和在用户态下处理网络数据的方式,通过网络把数据从发送方直接传入接收方的一块存储区域,绕过接收方的操作系统,提供了一个微秒级别的低延迟、高带宽、CPU轻负荷的高速网络环境,取得了优异的性能。RDMA的具体工作流程如下:发送方的应用程序将要发送的数据的内存地址发送给RDMA网卡,RDMA网卡通过DMA方式读取应用程序待发的数据,然后加上RDMA报头,发送到接收方的RDMA网卡,接收方的RDMA网卡仍然通过DMA方式,将数据传输到接收方的应用程序内存之中。这样,就省去了TCP/IP协议中的一次上下文切换和一次内存复制,极大地精简了数据传输的过程。
综上所述,可以利用RDMA技术来解决服务器集群中遇到的网络瓶颈问题。然而,RDMA的连接实体存在严重的可扩展性问题。因为RDMA连接的特性是一对一通信,随着RDMA连接的增加,以及网卡的片上缓存容量有限,当节点上的连接数量上升到数百个以上时,网卡就难以存储全部的连接信息,对于网卡未能存储的连接信息,仍然需要从内存中获取,导致网卡生成大量的缓存未命中(Cache Miss)而使性能急剧下降。对于这一问题,目前的方法是利用互斥锁来保护共享的RDMA连接,即在一段时间内锁定一条RMDA连接只能用于某项操作,操作完成后再释放锁,从而为多个逻辑连接服务。但是锁竞争会造成性能时好时坏不稳定的情况,带来了负面影响,这不利于系统的应用。
发明内容
发明目的:基于以上不足,本发明提出一种以无锁方式共享RDMA连接的方法,以连接双方的地址和接收方的序列号作为输入,利用一致性哈希的方法为每个逻辑连接赋予唯一标识,从而使得多个逻辑连接能够以无锁的方式共享RDMA连接实体,彻底解决了RDMA的可扩展性问题。
技术方案:本发明所述的以无锁方式共享RDMA连接的方法,包括以下步骤:
1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;
2)连接发起方利用该唯一标识创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;
3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;
4)连接接收方收到数据后,从RDMA报文中得到逻辑连接的唯一标识,从而将数据交付给正确的逻辑连接。
其中,步骤1)中发送方为每个逻辑连接赋予唯一标识具体包括以下步骤:
11)将通信双方的IPv4地址转化为32位无符号整数;
12)将IPv4地址中数值较小的低8位填充至唯一标识的高8位,把数值较大的低8位填充至唯一标识的次高8位;
13)将与接收方对应的序列号加一后,取该序列号的低16位填充到唯一标识的低16位。
步骤2)中建立逻辑连接的具体过程为:连接发起方将逻辑连接的唯一标识发送给逻辑连接接收方,等待反馈;如果该逻辑连接标识在连接接收方处已经被占用,则返回出错信息,重复上一步骤,如果标识没被占用,则返回逻辑连接成功建立信息。
为逻辑连接创建通知标识的的具体过程为:创建逻辑连接时,同时为其创建一个eventfd,用于事件的通知;并利用一个工作线程监听各个逻辑连接上的eventfd,当某个eventfd可读时,表明该逻辑连接有发送任务,该工作线程就执行逻辑连接提交的发送任务。这样,就避免了互斥锁的出现。
有益效果:本发明利用逻辑连接的双方所在的节点地址和接收方的序列号作为输入,为每个逻辑连接赋予唯一标识,利用RDMA报文的立即数字段填充逻辑连接的唯一标识,并且将RDMA连接共享转换为生产者-消费者问题,根据逻辑连接的通知来请求发送数据,完成数据的正确分发,避免了互斥锁的出现,从而解决了RDMA中随着连接的增加网络性能急剧下降的可扩展性问题。
附图说明
图1为逻辑连接共享RDMA连接的示意图;
图2为逻辑连接的不良标识产生歧义的示意图;
图3为本发明的一致性哈希算法生成逻辑连接唯一标识的示意图。
具体实施方式
本发明涉及连接发起方和连接接收方两个主体,在发起方和接收方之间共享RDMA连接的过程主要包括以下几个阶段:A)发起方生成逻辑连接的唯一标识并创建逻辑连接;B)发起方以无锁方式共享RDMA连接;以及C)接收方接收数据后的处理。下面结合附图对本发明的技术方案作进一步说明。
A)发起方生成逻辑连接的唯一标识并创建逻辑连接
首先,因为多个逻辑连接共享一条RDMA连接,所以需要为每一条逻辑连接赋予一个唯一的标识,来唯一地确定特定的逻辑连接。如图1所示,节点M和节点N之间有一条RDMA连接,同时,有三条逻辑连接在共享该RDMA连接。每个逻辑连接都有自身的唯一标识,即1、2、3。节点N根据逻辑连接的唯一标识,将报文数据分发给恰当的逻辑连接。这个标识在逻辑连接的建立阶段通过连接双方协调来取值,协商的过程如下:
a)逻辑连接发起方选定一个32位的无符号整数作为标识,携带其他必要的信息请求建立连接;
b)逻辑连接接收方检查该标识在本节点上是否被占用,如果不被占用,则返回给逻辑连接发起方成功的消息;
c)如果该标识已经被其他逻辑连接占用,则向逻辑连接发起方返回失败消息,重复步骤a),直到两方对逻辑连接的标识达成一致。
因为逻辑连接的标识是通信双方特定逻辑连接的凭据,因此必须被通信双方所认可,否则就会出现混淆。图2示出了标识不唯一的情况,服务器A已经与服务器B建立了以6689为标识的逻辑连接。如果服务器C又和服务器A建立一条以6689为标识的逻辑连接,那么在接收数据时,服务器A就不能得知数据是来自于服务器B还是C。因此,逻辑连接发起方生成一个逻辑连接的唯一标识后,还需要连接接收方的认可,否则就需要重新生成标识。良好的逻辑连接标识产生方法,往往一次就能成功,节省了许多时间和资源。如果逻辑连接发起方所生成的唯一标识在接收方已经被占用,我们称之为产生了碰撞。本发明为减少碰撞,利用一致性哈希的方式来生成该标识。图3示出了一个生成标识的实例,具体包括以下步骤:
a1)将通信双方的IPv4地址转化为32位无符号整数。因为共享同一条RDMA连接的逻辑连接的通信双方是一致的,并且RDMA网卡是基于TCP/IP协议,因此可以得到双方的IPv4地址。
a2)比较两个32位无符号整数的大小,按照从小到大的顺序,分别将两个32位无符号整数的低8位填充到32位逻辑连接标识的高16位,即,将IPv4地址中数值较小的低8位填充至唯一标识的高8位,而把数值较大的低8位填充至唯一标识的次高8位。
a3)将接收方的序列号加一后,取该序列号的低16位填充到唯一标识的低16位。在本发明中,连接发起方为每个连接接收方设置一个对应的序列号,序列号从零开始按顺序加一,即每当连接发起方创建一个与该接收方的逻辑连接时,就给该接收方对应的序列号加一。本发明利用TCP/IP来建立RDMA连接,即每个节点上都会有传统socket在监听是否有其他节点的连接请求到来。如果有的话,则互相交换必要的信息,以成功创建RDMA连接。
由于排序后的通信双方IPv4地址占据逻辑连接标识的高16位,因为各个节点的地址不同所以,这种方式生成的标识很少会发生碰撞;此外,还有不断自增的序列号填充至标识的低16位,也不会造成两个节点间的逻辑连接选取产生碰撞。经过如上三步,就得到了碰撞极小的标识符号,可用于表示通信双方的一条逻辑连接。
B)发起方以无锁方式共享RDMA连接
虽然共享的RDMA连接实质上属于临界资源,需要利用互斥锁实现访问保护。但本发明将其转化为生产者-消费者问题,完全避免了锁竞争的出现。
本发明在逻辑连接创建完毕后,为其设置一个通知标识,用于逻辑连接的事件通知。在本实施例中采用linux中的eventfd来实现,eventfd是文件描述符,连接发起方在逻辑连接创建完毕后,为其分配相应的eventfd。并利用一个工作线程监听各个逻辑连接上的eventfd,当某个eventfd可读时,表明该逻辑连接有发送任务,该工作线程就执行逻辑连接提交的发送任务。这样,就避免了互斥锁的出现。
具体地,本发明以Reactor模式来处理逻辑连接的各个读写等事件,即一个或者多个工作线程监听一个文件描述符集合,当该文件描述符集合中的某个文件描述符有读写事件发生时,就执行对应的回调函数。本发明中总共有以下三类事件:
逻辑连接的创建事件:当逻辑连接创建时,会跟连接接收方协商逻辑连接唯一标识等必要信息,协调完毕后,就会将其逻辑连接的eventfd注册到工作线程监听的文件描述符集合中。
逻辑连接的写事件:如果一个逻辑连接需要发送数据,就在做好准备工作后,唤醒属于自身的eventfd。工作线程根据eventfd来执行对应的逻辑连接的发送任务。在RDMA报文中,有一个32位的字段,叫做立即数(immediate data)。当上述的工作线程执行逻辑连接的发送任务时,会把该逻辑连接的唯一标识填充到RDMA报文的立即数字段,然后连接发起方的RDMA网卡将该逻辑连接的数据发送到连接接收方。
逻辑连接的读事件:当连接接收方的网卡获取到传入的数据时,会从RDMA报文里取出立即数字段存储的逻辑连接唯一标识,然后将数据写入到内存中,并利用该逻辑连接的eventfd来通知其有数据可读。
C)接收方接收数据后的处理
连接接收方收到数据后,根据RDMA报文中的立即数,得到传入数据所在的逻辑连接,并将数据交付给该逻辑连接。
如上所述,本发明以无锁的方式,在多个逻辑连接间共享一个RDMA连接,通过对RDMA连接的复用和解复用来减少单个节点上创建的RDMA连接实体的个数,从而降低了RDMA网卡的片上内存产生缓存未命中的次数。这在实际场景中,十分有益于RDMA网络性能的提升。
Claims (4)
1.一种以无锁方式共享RDMA连接的方法,其特征在于,包括以下步骤:
1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;
2)连接发起方利用该唯一标识创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;
3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;
4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接。
2.根据权利要求1所述的以无锁方式共享RDMA连接的方法,其特征在于,所述步骤1)中发起方生成逻辑连接的唯一标识具体包括以下步骤:
11)将通信双方的IPv4地址转化为32位无符号整数;
12)将IPv4地址中数值较小的低8位填充至唯一标识的高8位,把数值较大的低8位填充至唯一标识的次高8位;
13)将与接收方对应的序列号加1后,取该序列号的低16位填充到唯一标识的低16位。
3.根据权利要求1所述的以无锁方式共享RDMA连接的方法,其特征在于,所述步骤2)中建立逻辑连接的具体过程为:
21)连接发起方将逻辑连接的唯一标识发送给逻辑连接接收方,等待反馈;
22)如果该逻辑连接标识在连接接收方处已经被占用,则返回出错信息,重复步骤21),如果标识没被占用,则返回逻辑连接成功建立信息。
4.根据权利要求1所述的以无锁方式共享RDMA连接的方法,其特征在于,所述步骤2)中连接发起方为每个逻辑连接建立通知标识的具体过程为:
2a)当创建逻辑连接时,同时会为其创建一个eventfd,envenfd是文件描述符,用于事件的通知;
2b)利用一个工作线程监听各个逻辑连接上的eventfd,当某个eventfd可读时,该工作线程就执行该逻辑连接提交的发送任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710411176.XA CN107205033B (zh) | 2017-06-02 | 2017-06-02 | 以无锁方式共享rdma连接的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710411176.XA CN107205033B (zh) | 2017-06-02 | 2017-06-02 | 以无锁方式共享rdma连接的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107205033A true CN107205033A (zh) | 2017-09-26 |
CN107205033B CN107205033B (zh) | 2020-03-24 |
Family
ID=59906676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710411176.XA Active CN107205033B (zh) | 2017-06-02 | 2017-06-02 | 以无锁方式共享rdma连接的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107205033B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101911762A (zh) * | 2008-01-04 | 2010-12-08 | 诺基亚公司 | Mac协议数据单元中的伪填充子报头 |
CN102724707A (zh) * | 2007-01-05 | 2012-10-10 | 北京新岸线移动通信技术有限公司 | 用于经由高速下行链路共享信道发射公共逻辑信道和专用逻辑信道传输的方法和设备 |
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
US20170075856A1 (en) * | 2015-09-12 | 2017-03-16 | Microsoft Technology Licensing, Llc | Distributed lock-free rdma-based memory allocation and de-allocation |
US20170103039A1 (en) * | 2015-10-13 | 2017-04-13 | Microsoft Technology Licensing, Llc | Distributed self-directed lock-free rdma-based b-tree key-value manager |
WO2017087267A1 (en) * | 2015-11-20 | 2017-05-26 | Microsoft Technology Licensing, Llc | Low latency rdma-based distributed storage |
-
2017
- 2017-06-02 CN CN201710411176.XA patent/CN107205033B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102724707A (zh) * | 2007-01-05 | 2012-10-10 | 北京新岸线移动通信技术有限公司 | 用于经由高速下行链路共享信道发射公共逻辑信道和专用逻辑信道传输的方法和设备 |
CN101911762A (zh) * | 2008-01-04 | 2010-12-08 | 诺基亚公司 | Mac协议数据单元中的伪填充子报头 |
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
US20170075856A1 (en) * | 2015-09-12 | 2017-03-16 | Microsoft Technology Licensing, Llc | Distributed lock-free rdma-based memory allocation and de-allocation |
US20170103039A1 (en) * | 2015-10-13 | 2017-04-13 | Microsoft Technology Licensing, Llc | Distributed self-directed lock-free rdma-based b-tree key-value manager |
WO2017087267A1 (en) * | 2015-11-20 | 2017-05-26 | Microsoft Technology Licensing, Llc | Low latency rdma-based distributed storage |
Non-Patent Citations (1)
Title |
---|
CHEN Y 等: "Fast and general distributed transactions using RDMA and HTM", 《ACM》 * |
Also Published As
Publication number | Publication date |
---|---|
CN107205033B (zh) | 2020-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7271045B2 (ja) | 電子手形識別子の割り当て方法、電子手形の生成方法、及びその装置とシステム、並びに、記憶媒体及びコンピュータプログラム | |
US11411897B2 (en) | Communication method and communication apparatus for message queue telemetry transport | |
CN104620559B (zh) | 用于支持分布式数据网格集群中的可伸缩消息总线的系统和方法 | |
US20200177572A1 (en) | Sending cross-chain authenticatable messages | |
KR20220079958A (ko) | 블록체인 메시지 처리 방법 및 장치, 컴퓨터 및 판독 가능한 저장 매체 | |
CN109885410A (zh) | 消息发送方法、装置、计算机设备和存储介质 | |
CN103338230B (zh) | 一种业务数据的处理方法及系统 | |
CN111338806B (zh) | 一种业务控制方法及装置 | |
US20200274832A1 (en) | Rdma transport with hardware integration and out of order placement | |
CN111711526B (zh) | 一种区块链节点的共识方法及系统 | |
CN110278161A (zh) | 基于用户态协议栈的报文分流方法、装置及系统 | |
WO2023020242A1 (zh) | 基于区块链的数据处理方法、装置、计算机设备、计算机可读存储介质及计算机程序产品 | |
CN113507532A (zh) | 网络地址转换的方法及相应服务器、存储介质和电子设备 | |
JP2022553963A (ja) | 同期処理方法及び関連装置 | |
US20190372825A1 (en) | Communication apparatus, communication method, and recording medium | |
CN111064786A (zh) | 账户标识管理方法及设备 | |
CN106357604A (zh) | 一种一致性数据累积协同组装方法 | |
CN113452778A (zh) | 会话保持方法、装置、设备、系统及存储介质 | |
US20140330991A1 (en) | Efficient complex network traffic management in a non-uniform memory system | |
CN107205033A (zh) | 以无锁方式共享rdma连接的方法 | |
WO2020037580A1 (zh) | 环状服务器集群管理方法、装置及计算机存储介质 | |
CN112001800B (zh) | 在区块链系统中进行业务处理的方法和装置 | |
JP2024506093A (ja) | クロスチェーントランザクション処理方法と装置、電子機器及びコンピュータプログラム | |
US11683199B2 (en) | Distributed system with fault tolerance and self-maintenance | |
CN111679918B (zh) | 一种消息传输方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |