CN107205033B - 以无锁方式共享rdma连接的方法 - Google Patents

以无锁方式共享rdma连接的方法 Download PDF

Info

Publication number
CN107205033B
CN107205033B CN201710411176.XA CN201710411176A CN107205033B CN 107205033 B CN107205033 B CN 107205033B CN 201710411176 A CN201710411176 A CN 201710411176A CN 107205033 B CN107205033 B CN 107205033B
Authority
CN
China
Prior art keywords
connection
logical connection
unique identifier
rdma
logical
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.)
Active
Application number
CN201710411176.XA
Other languages
English (en)
Other versions
CN107205033A (zh
Inventor
王晓亮
王�之
陆桑璐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN201710411176.XA priority Critical patent/CN107205033B/zh
Publication of CN107205033A publication Critical patent/CN107205033A/zh
Application granted granted Critical
Publication of CN107205033B publication Critical patent/CN107205033B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/25Mapping addresses of the same type
    • H04L61/2503Translation of Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding

Abstract

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

Description

以无锁方式共享RDMA连接的方法
技术领域
本发明涉及数据通信领域,具体涉及一种共享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 (1)

1.一种以无锁方式共享RDMA连接的方法,所述RDMA是远程直接数据存取的英文RemoteDirect Memory Access的缩写,其特征在于,所述方法包括以下步骤:
1)连接发起方基于连接双方的IP地址和接收方的序列号生成逻辑连接的唯一标识;
2)连接发起方利用该唯一标识创建逻辑连接,并为每个逻辑连接创建一个通知标识,用于该逻辑连接的事件通知;
3)连接发起方发送数据时,将逻辑连接的唯一标识填充到RDMA报文的立即数字段,再进行发送;
4)连接接收方收到数据后,从RDMA报文的立即数中得到逻辑连接的唯一标识,从而将数据交付给对应的逻辑连接;
其中,所述步骤1)中发起方生成逻辑连接的唯一标识具体包括以下步骤:
11)将通信双方的IPv4地址转化为32位无符号整数;
12)将IPv4地址中数值较小的低8位填充至唯一标识的高8位,把数值较大的低8位填充至唯一标识的次高8位;
13)将与接收方对应的序列号加1后,取该序列号的低16位填充到唯一标识的低16位;
所述步骤2)中建立逻辑连接的具体过程为:
21)连接发起方将逻辑连接的唯一标识发送给逻辑连接接收方,等待反馈;
22)如果该逻辑连接标识在连接接收方处已经被占用,则返回出错信息,重复步骤21),如果标识没被占用,则返回逻辑连接成功建立信息;
所述所述步骤2)中连接发起方为每个逻辑连接建立通知标识的具体过程为:
2a)当创建逻辑连接时,同时会为其创建一个eventfd,envenfd是文件描述符,用于事件的通知;
2b)利用一个工作线程监听各个逻辑连接上的eventfd,当某个eventfd可读时,该工作线程就执行该逻辑连接提交的发送任务。
CN201710411176.XA 2017-06-02 2017-06-02 以无锁方式共享rdma连接的方法 Active CN107205033B (zh)

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 CN107205033A (zh) 2017-09-26
CN107205033B true 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 (4)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 内存访问方法、设备和系统
WO2017087267A1 (en) * 2015-11-20 2017-05-26 Microsoft Technology Licensing, Llc Low latency rdma-based distributed storage

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10725963B2 (en) * 2015-09-12 2020-07-28 Microsoft Technology Licensing, Llc Distributed lock-free RDMA-based memory allocation and de-allocation
US10713210B2 (en) * 2015-10-13 2020-07-14 Microsoft Technology Licensing, Llc Distributed self-directed lock-free RDMA-based B-tree key-value manager

Patent Citations (4)

* Cited by examiner, † Cited by third party
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 华为技术有限公司 内存访问方法、设备和系统
WO2017087267A1 (en) * 2015-11-20 2017-05-26 Microsoft Technology Licensing, Llc Low latency rdma-based distributed storage

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Fast and general distributed transactions using RDMA and HTM;Chen Y 等;《ACM》;20160421;第1-8页 *

Also Published As

Publication number Publication date
CN107205033A (zh) 2017-09-26

Similar Documents

Publication Publication Date Title
CN108268208B (zh) 一种基于rdma的分布式内存文件系统
CN108647104B (zh) 请求处理方法、服务器及计算机可读存储介质
EP3734913A1 (en) Communication method and communication apparatus
US20170255501A1 (en) In-node Aggregation and Disaggregation of MPI Alltoall and Alltoallv Collectives
US11277350B2 (en) Communication of a large message using multiple network interface controllers
CN110677277B (zh) 数据处理方法、装置、服务器和计算机可读存储介质
CN104620558A (zh) 用于支持分布式数据网格集群中的消息预处理的系统和方法
CN113014528B (zh) 报文处理方法、处理单元及虚拟专用网络服务器
CN111277616A (zh) 一种基于rdma的数据传输方法和分布式共享内存系统
US8539089B2 (en) System and method for vertical perimeter protection
CN113490927A (zh) 具有硬件集成和乱序放置的rdma输送
CN106936931B (zh) 分布式锁的实现方法、相关设备及系统
CN110535811B (zh) 远端内存管理方法及系统、服务端、客户端、存储介质
CN111459417A (zh) 一种面向NVMeoF存储网络的无锁传输方法及系统
CN110519388B (zh) 区块链请求的处理方法、装置、电子设备及可读存储介质
CN113783973B (zh) 一种nat端口分配在多核下对数据流免锁的实现方法
CN112968965B (zh) Nfv网络节点的元数据服务方法、服务器及存储介质
US9304706B2 (en) Efficient complex network traffic management in a non-uniform memory system
CN107205033B (zh) 以无锁方式共享rdma连接的方法
CN113157450A (zh) 在区块链系统中执行区块的方法及装置
CN104699527A (zh) 一种云存储系统中的临界资源管理方法和装置
US20200329090A1 (en) Method and network node for handling sctp packets
CN108830724B (zh) 一种资源数据包处理方法及终端设备
CN113259271B (zh) 报文交换方法和报文交换系统
Balhara et al. Leader election algorithms in distributed systems

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