当前位置: 首页 > 专利查询>南京大学专利>正文

以无锁方式共享RDMA连接的方法技术

技术编号:16302740 阅读:38 留言:0更新日期:2017-09-26 20:58
本发明专利技术公开了一种以无锁方式共享RDMA连接的方法,包括以下步骤:1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;2)连接发起方创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接。本发明专利技术通过为每个逻辑连接赋予唯一标识,并且将RDMA连接共享转换为生产者‑消费者问题,避免了互斥锁的出现,从而解决了RDMA中随着连接的增加网络性能急剧下降的可扩展性问题。

Method for sharing RDMA connection without lock

The invention discloses a lock free shared RDMA connection method, which comprises the following steps: 1) uniquely identifies the serial number to generate a logical connection initiator based on connection on both sides of the IP address and the recipient of the connection; 2) connection initiator create logical connection, and create a circular identity for each logical connection for the logical connection of event notification; 3) connect the initiator to send data, will fill only identifies a logical connection to the digital section immediately RDMA message, and then send; 4) connected to the receiver receives data from the RDMA message, immediately get the logic connection number uniquely identifies, in order to deliver data to the corresponding logical connection. The present invention gives the unique identifier for each logical connection and RDMA connection sharing into producer consumer problem, avoid the mutex, and solve the RDMA with the increase of network performance connected to the sharp drop in the scalability problem.

【技术实现步骤摘要】
以无锁方式共享RDMA连接的方法
本专利技术涉及数据通信领域,具体涉及一种共享RDMA连接的方法。
技术介绍
随着互联网技术的蓬勃发展,产生了大量分布式应用系统,如股票交易系统、分布式事务处理等。这些分布式应用系统对网络低时延和高带宽提出了越来越高的要求,而传统的基于TCP/IP协议的网络由于其复杂的协议栈和冗长的数据路径,应对这种场景力不从心,限制着这些系统的可用性。针对此问题,远程直接数据存取(RemoteDirectMemoryAccess,RDMA)技术以其卸载TCP/IP协议栈和在用户态下处理网络数据的方式,通过网络把数据从发送方直接传入接收方的一块存储区域,绕过接收方的操作系统,提供了一个微秒级别的低延迟、高带宽、CPU轻负荷的高速网络环境,取得了优异的性能。RDMA的具体工作流程如下:发送方的应用程序将要发送的数据的内存地址发送给RDMA网卡,RDMA网卡通过DMA方式读取应用程序待发的数据,然后加上RDMA报头,发送到接收方的RDMA网卡,接收方的RDMA网卡仍然通过DMA方式,将数据传输到接收方的应用程序内存之中。这样,就省去了TCP/IP协议中的一次上下文切换和一次内存复制,极大地精简了数据传输的过程。综上所述,可以利用RDMA技术来解决服务器集群中遇到的网络瓶颈问题。然而,RDMA的连接实体存在严重的可扩展性问题。因为RDMA连接的特性是一对一通信,随着RDMA连接的增加,以及网卡的片上缓存容量有限,当节点上的连接数量上升到数百个以上时,网卡就难以存储全部的连接信息,对于网卡未能存储的连接信息,仍然需要从内存中获取,导致网卡生成大量的缓存未命中(CacheMiss)而使性能急剧下降。对于这一问题,目前的方法是利用互斥锁来保护共享的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来建立RDM本文档来自技高网
...
以无锁方式共享RDMA连接的方法

【技术保护点】
一种以无锁方式共享RDMA连接的方法,其特征在于,包括以下步骤:1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;2)连接发起方利用该唯一标识创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接。

【技术特征摘要】
1.一种以无锁方式共享RDMA连接的方法,其特征在于,包括以下步骤:1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;2)连接发起方利用该唯一标识创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接。2.根据权利要求1所述的以无锁方式共享RDMA连接的方法,其特征在于,所述步骤1)中发起方生成逻辑连接的唯一标识具体包括以下步骤:11)将通信双方的IPv4地址转化为32位无符号整数;12)将IPv4地址中数值较小的低8位填充至唯一标识的高8位,把数值较大的低8位填充至唯一标识的次高8位;13)将与...

【专利技术属性】
技术研发人员:王晓亮王之陆桑璐
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1