CN112565326B - 面向分布式文件***的rdma通信地址交换方法 - Google Patents
面向分布式文件***的rdma通信地址交换方法 Download PDFInfo
- Publication number
- CN112565326B CN112565326B CN201910918615.5A CN201910918615A CN112565326B CN 112565326 B CN112565326 B CN 112565326B CN 201910918615 A CN201910918615 A CN 201910918615A CN 112565326 B CN112565326 B CN 112565326B
- Authority
- CN
- China
- Prior art keywords
- rdma
- address
- message
- receiving
- file
- 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
Links
Classifications
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向分布式文件***的RDMA通信地址交换方法,包括分布式文件***的RDMA数据发送阶段和RDMA数据接收阶段,包括以下步骤:与远端建立连接时预交换若干个RDMA地址;根据文件操作的类型,将文件操作数据封装到本地的RDMA注册地址,生成RDMA消息;所述文件操作的类型包括打开操作open、关闭操作close、查找操作lookup、书写操作write和读取操作read;根据目前的远端RDMA地址使用情况为本次文件操作分配远端的RDMA地址;若RDMA空闲地址小于目前RDMA地址的一半,在生成的文件操作RDMA消息附带发送RDMA地址紧张报警信息让远端申请8个RDMA地址。本发明不会引发内存浪费、降低通信效率、消耗额外***资源,减少了多余RDMA地址交换操作,提升了RDMA通信的整体效率。
Description
技术领域
本发明属于通信地址交换方法技术领域,尤其涉及一种面向分布式文件***的RDMA通信地址交换方法。
背景技术
当前,基于RDMA技术的通信协议已经成为高速高性能数据传输的首选方法,越来越多的分布式文件***使用RDMA技术通信。在RDMA通信实例中,为了实现数据传输,写入或者读取的目标端要将RDMA通信的地址发送给发起端,这种操作称为RDMA过程中的地址交换操作,是当前RDMA通信实例中必不可少的环节。目前主流的地址交换方法都有不足之处,如预申请大块内存在通信前一次***换,会造成内存浪费;RDMA通信过程不足时通信线程暂时停止通信来进行地址交换,会降低通信效率;启动监控通信地址状态的额外线程进行地址交换,会消耗额外资源。
为解决网络传输中服务器端数据处理的延迟,产生了远程直接内存访问(RDMA)技术,允许将数据从一个***内存存储器快速移动到远端***的内存存储器中,而不对操作***造成任何影响,这样就不需要用到多少计算机的处理能力,它消除了外部存储器复制和上下文切换的开销,因而能解放内存带宽和CPU周期用于改进应用***性能。RDMA具有低延迟、低负载、高带宽的特性。大规模的分布式文件***由于多客户端与服务端进行文件操作通信,对网络带宽、延迟均有较高的需求,越来越多的分布式文件***都开始在网络通信中使用RDMA技术如glusterfs、ceph。
要使用RDMA技术来传输数据,首先要进行的操作就是RDMA地址交换操作,将数据从源端内存发送到目标端内存,首先要将目标端内存的地址通知到源端。分布式文件***因其IO量大,可能会频繁的进行RDMA地址交换,又因其有对网络延迟敏感度高的特点,RDMA地址交换操作可能会成为其在RDMA通信时的性能瓶颈。
分布式文件***中目前主流的RDMA地址交换方法有以下几种:
(1)客户端与服务端各自预申请大块内存在建立连接时一次性进行地址交换,将大块内存分割成小块的内存供之后的通信来使用,这种方法的缺点就是若文件***处于低负载状态,则申请的内存大部分都处于未使用状态,浪费内存;
(2)客户端与服务端预申请若干小块内存进行地址交换,在RDMA通信过程中若地址不足,通信线程暂时停止通信来申请内存进行地址交换,这种方法会会降低通信效率,增加延迟;
(3)启动额外线程来监控RDMA通信的状态,地址不足时申请内存进行地址交换,地址充足时释放内存,这种方法的缺点是会消耗额外的***资源。
发明内容
本发明目的在于提供一种面向分布式文件***的RDMA通信地址交换方法,该RDMA通信地址交换方法不会引发内存浪费、降低通信效率、消耗额外***资源,减少了多余RDMA地址交换操作,提升了RDMA通信的整体效率。
为达到上述目的,本发明采用的技术方案是:一种面向分布式文件***的RDMA通信地址交换方法,包括分布式文件***的RDMA数据发送阶段和RDMA数据接收阶段,
所述RDMA数据发送阶段包括以下步骤:
S0、设置RDMA消息的数据结构,此RDMA消息的数据结构由RDMA消息标头和RDMA消息内容组成;
RDMA消息标头 | RDMA消息内容 |
RDMA消息内容用于保存的文件操作类型信息数据和待传输文件内容数据;
消息发送时,RDMA消息标头保存本地端RDMA接收地址使用情况和远端RDMA接收地址报警信息;
消息接收时,RDMA消息标头保存保远端RDMA接收地址使用情况和本地RDMA接收地址报警信息;
RDMA接收地址为用于接收RDMA消息的RDMA地址,RDMA发送地址为用于发送RDMA消息的RDMA地址;
文件操作数据:文件操作的具体数据,有些操作是只有操作类型信息数据,有些操作包含操作类型数据和待传输文件内容数据;
S1、本地端和远端在内存中预先申请若干个RDMA接收地址和RDMA发送地址,并通过将双方的RDMA接收地址填充到建立TCP连接所交换的握手信息来交换这些RDMA接收地址,即远端将其RDMA接收地址通知到本地端,使本地端能通过这些远端RDMA接收地址向远端发送RDMA消息;
S2、根据文件操作的类型,将文件操作数据封装到本地的RDMA消息的RDMA消息内容中的文件操作类型信息数据内;
S3、根据上次本地端接收流程S2步骤得到的目前远端RDMA接收地址使用情况为本次文件操作分配远端的RDMA接收地址;
S4、若未使用的远端RDMA接收地址小于目前全部的远端RDMA接收地址的一半,在生成的文件操作RDMA消息的RDMA消息标头中填充本地端RDMA接收地址使用情况和远端RDMA接收地址紧张报警标识;附带发送RDMA接收地址紧张报警信息,执行下一步;
若远端空闲RDMA接收地址处于目前全部的远端RDMA接收地址的一半与四分之三之间,则RDMA消息header不做特殊标识填充,只填充本地端RDMA接收地址使用情况,执行下一步;
若远端空闲RDMA接收地址大于目前全部的远端RDMA接收地址的四分之三,在生成的文件操作RDMA消息的RDMA消息标头填充本地端RDMA接收地址使用情况和远端RDMA接收地址多余报警标识,附带发送RDMA接收地址多余报警让远端在接收到本条消息时释放8个RDMA接收地址;
S5、向远端发送文件操作的由RDMA消息标头和RDMA消息内容组成的RDMA消息;
所述RDMA数据接收阶段包括以下步骤:
S1、与远端建立连接时预交换若干个RDMA地址;
S2、接收到远端发送过来的文件操作的RDMA消息,通过RDMA消息的RDMA消息标头解析接收到的文件操作类型信息数据和远端RDMA接收地址使用情况,保存远端RDMA接收地址使用情况供下次发送消息使用;
S3、若为RDMA消息标头中不含RDMA地址报警信息的文件操作的RDMA消息,则执行相应的文件操作;
S4、若为附带RDMA地址报警信息的文件操作消息,则从RDMA消息的RDMA消息标头中抽取具体的报警类型;
S5、若报警类型为RDMA接收地址多余,则释放本地8个RDMA接收地址;若报警类型为RDMA接收地址紧张,则申请8个新的RDMA接收地址并更新本地端RDMA接收地址使用情况,通过下一次发送流程的S4步骤通知远端;
S6、执行相应文件操作。
上述技术方案中进一步改进的技术方案如下:
1. 上述方案中,所述文件操作类型信息数据为open操作的操作信息、write操作的操作信息、read操作的操作信息、readdir操作的操作信息、stat操作的操作信息、opendir操作的操作信息、mkdir操作的操作信息、unlink操作的操作信息、create操作的操作信息、readv操作的操作信息、writev操作的操作信息、flush操作的操作信息、fsync操作的操作信息、setxattr操作的操作信息、getxattr操作的操作信息、setattr操作的操作信息、getattr操作的操作信息、fstat操作的操作信息、ftruncate操作的操作信息、statfs操作的操作信息、truncate操作的操作信息、fgetxattr操作的操作信息、fsetxattr操作的操作信息、close操作的操作信息或者lookup操作的操作信息。
2. 上述方案中,所述文件操作为open操作、write操作、close操作或者lookup操作。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明面向分布式文件***的RDMA通信地址交换方法,其不需要专门的RDMA地址交换操作,而是将RDMA地址交换操作附带在文件***本身的操作语义中,在每次文件操作时均检查预交换的RDMA地址空间是否充足,如果不充足则将补充的RDMA地址信息附带在文件操作内部传输,不会引发内存浪费、降低通信效率、消耗额外***资源,减少了多余RDMA地址交换操作,提升了RDMA通信的整体效率。
附图说明
附图1为本发明RDMA数据发送阶段流程示意图;
附图2为本发明RDMA数据接收阶段流程示意图。
具体实施方式
下面结合实施例对本发明作进一步描述:
实施例:一种面向分布式文件***的RDMA通信地址交换方法,其特征在于:包括分布式文件***的RDMA数据发送阶段和RDMA数据接收阶段,
所述RDMA数据发送阶段包括以下步骤:
S0、设置RDMA消息的数据结构,此RDMA消息的数据结构由RDMA消息标头和RDMA消息内容组成;
RDMA消息标头 | RDMA消息内容 |
RDMA消息内容用于保存的文件操作类型信息数据和待传输文件内容数据;
消息发送时,RDMA消息标头保存本地端RDMA接收地址使用情况和远端RDMA接收地址报警信息;
消息接收时,RDMA消息标头保存保远端RDMA接收地址使用情况和本地RDMA接收地址报警信息;
RDMA接收地址为用于接收RDMA消息的RDMA地址,RDMA发送地址为用于发送RDMA消息的RDMA地址;
文件操作数据:文件操作的具体数据,有些操作是只有操作类型信息数据,有些操作包含操作类型数据和待传输文件内容数据;
S1、本地端和远端在内存中预先申请若干个RDMA接收地址和RDMA发送地址,并通过将双方的RDMA接收地址填充到建立TCP连接所交换的握手信息来交换这些RDMA接收地址,即远端将其RDMA接收地址通知到本地端,使本地端能通过这些远端RDMA接收地址向远端发送RDMA消息;
S2、根据文件操作的类型,将文件操作数据封装到本地的RDMA消息的RDMA消息内容中的文件操作类型信息数据内;
S3、根据上次本地端接收流程S2步骤得到的目前远端RDMA接收地址使用情况为本次文件操作分配远端的RDMA接收地址;
S4、若未使用的远端RDMA接收地址小于目前全部的远端RDMA接收地址的一半,在生成的文件操作RDMA消息的RDMA消息标头中填充本地端RDMA接收地址使用情况和远端RDMA接收地址紧张报警标识;附带发送RDMA接收地址紧张报警信息,执行下一步;
若远端空闲RDMA接收地址处于目前全部的远端RDMA接收地址的一半与四分之三之间,则RDMA消息header不做特殊标识填充,只填充本地端RDMA接收地址使用情况,执行下一步;
若远端空闲RDMA接收地址大于目前全部的远端RDMA接收地址的四分之三,在生成的文件操作RDMA消息的RDMA消息标头填充本地端RDMA接收地址使用情况和远端RDMA接收地址多余报警标识,附带发送RDMA接收地址多余报警让远端在接收到本条消息时释放8个RDMA接收地址;
S5、向远端发送文件操作的由RDMA消息标头和RDMA消息内容组成的RDMA消息;
所述RDMA数据接收阶段包括以下步骤:
S1、与远端建立连接时预交换若干个RDMA地址;
S2、接收到远端发送过来的文件操作的RDMA消息,通过RDMA消息的RDMA消息标头解析接收到的文件操作类型信息数据和远端RDMA接收地址使用情况,保存远端RDMA接收地址使用情况供下次发送消息使用;
S3、若为RDMA消息标头中不含RDMA地址报警信息的文件操作的RDMA消息,则执行相应的文件操作;
S4、若为附带RDMA地址报警信息的文件操作消息,则从RDMA消息的RDMA消息标头中抽取具体的报警类型;
S5、若报警类型为RDMA接收地址多余,则释放本地8个RDMA接收地址;若报警类型为RDMA接收地址紧张,则申请8个新的RDMA接收地址并更新本地端RDMA接收地址使用情况,通过下一次发送流程的S4步骤通知远端;
S6、执行相应文件操作。
上述文件操作类型信息数据为open操作的操作信息、write操作的操作信息、read操作的操作信息、readdir操作的操作信息、stat操作的操作信息、opendir操作的操作信息、mkdir操作的操作信息、unlink操作的操作信息、create操作的操作信息、readv操作的操作信息、writev操作的操作信息、flush操作的操作信息、fsync操作的操作信息、setxattr操作的操作信息、getxattr操作的操作信息、setattr操作的操作信息、getattr操作的操作信息、fstat操作的操作信息、ftruncate操作的操作信息、statfs操作的操作信息、truncate操作的操作信息、fgetxattr操作的操作信息、fsetxattr操作的操作信息、close操作的操作信息或者lookup操作的操作信息。
上述文件操作为open操作、write操作、close操作或者lookup操作。
采用上述面向分布式文件***的RDMA通信地址交换方法时,其不需要专门的RDMA地址交换操作,而是将RDMA地址交换操作附带在文件***本身的操作语义中,在每次文件操作时均检查预交换的RDMA地址空间是否充足,如果不充足则将补充的RDMA地址信息附带在文件操作内部传输,不会引发内存浪费、降低通信效率、消耗额外***资源,减少了多余RDMA地址交换操作,提升了RDMA通信的整体效率。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种面向分布式文件***的RDMA通信地址交换方法,其特征在于:包括分布式文件***的RDMA数据发送阶段和RDMA数据接收阶段,
所述RDMA数据发送阶段包括以下步骤:
S0、设置RDMA消息的数据结构,此RDMA消息的数据结构由RDMA消息标头和RDMA消息内容组成;
RDMA消息内容用于保存的文件操作类型信息数据和待传输文件内容数据;
消息发送时,RDMA消息标头保存本地端RDMA接收地址使用情况和远端RDMA接收地址报警信息;
消息接收时,RDMA消息标头保存保远端RDMA接收地址使用情况和本地RDMA接收地址报警信息;
RDMA接收地址为用于接收RDMA消息的RDMA地址,RDMA发送地址为用于发送RDMA消息的RDMA地址;
文件操作数据:文件操作的具体数据,有些操作是只有操作类型信息数据,有些操作包含操作类型数据和待传输文件内容数据;
S1、本地端和远端在内存中预先申请若干个RDMA接收地址和RDMA发送地址,并通过将双方的RDMA接收地址填充到建立TCP连接所交换的握手信息来交换这些RDMA接收地址,即远端将其RDMA接收地址通知到本地端,使本地端能通过这些远端RDMA接收地址向远端发送RDMA消息;
S2、根据文件操作的类型,将文件操作数据封装到本地的RDMA消息的RDMA消息内容中的文件操作类型信息数据内;
S3、根据上次本地端接收流程S2步骤得到的目前远端RDMA接收地址使用情况为本次文件操作分配远端的RDMA接收地址;
S4、若未使用的远端RDMA接收地址小于目前全部的远端RDMA接收地址的一半,在生成的文件操作RDMA消息的RDMA消息标头中填充本地端RDMA接收地址使用情况和远端RDMA接收地址紧张报警标识;附带发送RDMA接收地址紧张报警信息,执行下一步;
若远端空闲RDMA接收地址处于目前全部的远端RDMA接收地址的一半与四分之三之间,则RDMA消息header不做特殊标识填充,只填充本地端RDMA接收地址使用情况,执行下一步;
若远端空闲RDMA接收地址大于目前全部的远端RDMA接收地址的四分之三,在生成的文件操作RDMA消息的RDMA消息标头填充本地端RDMA接收地址使用情况和远端RDMA接收地址多余报警标识,附带发送RDMA接收地址多余报警让远端在接收到本条消息时释放8个RDMA接收地址;
S5、向远端发送文件操作的由RDMA消息标头和RDMA消息内容组成的RDMA消息;
所述RDMA数据接收阶段包括以下步骤:
S1、与远端建立连接时预交换若干个RDMA地址;
S2、接收到远端发送过来的文件操作的RDMA消息,通过RDMA消息的RDMA消息标头解析接收到的文件操作类型信息数据和远端RDMA接收地址使用情况,保存远端RDMA接收地址使用情况供下次发送消息使用;
S3、若为RDMA消息标头中不含RDMA地址报警信息的文件操作的RDMA消息,则执行相应的文件操作;
S4、若为附带RDMA地址报警信息的文件操作消息,则从RDMA消息的RDMA消息标头中抽取具体的报警类型;
S5、若报警类型为RDMA接收地址多余,则释放本地8个RDMA接收地址;若报警类型为RDMA接收地址紧张,则申请8个新的RDMA接收地址并更新本地端RDMA接收地址使用情况,通过下一次发送流程的S4步骤通知远端;
S6、执行相应文件操作。
2.根据权利要求1所述的面向分布式文件***的RDMA通信地址交换方法,其特征在于:所述文件操作类型信息数据为open操作的操作信息、write操作的操作信息、read操作的操作信息、readdir操作的操作信息、stat操作的操作信息、opendir操作的操作信息、mkdir操作的操作信息、unlink操作的操作信息、create操作的操作信息、readv操作的操作信息、writev操作的操作信息、flush操作的操作信息、fsync操作的操作信息、setxattr操作的操作信息、getxattr操作的操作信息、setattr操作的操作信息、getattr操作的操作信息、fstat操作的操作信息、ftruncate操作的操作信息、statfs操作的操作信息、truncate操作的操作信息、fgetxattr操作的操作信息、fsetxattr操作的操作信息、close操作的操作信息或者lookup操作的操作信息。
3.根据权利要求1所述的面向分布式文件***的RDMA通信地址交换方法,其特征在于:所述文件操作为open操作、write操作、close操作或者lookup操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910918615.5A CN112565326B (zh) | 2019-09-26 | 2019-09-26 | 面向分布式文件***的rdma通信地址交换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910918615.5A CN112565326B (zh) | 2019-09-26 | 2019-09-26 | 面向分布式文件***的rdma通信地址交换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112565326A CN112565326A (zh) | 2021-03-26 |
CN112565326B true CN112565326B (zh) | 2023-10-17 |
Family
ID=75029871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910918615.5A Active CN112565326B (zh) | 2019-09-26 | 2019-09-26 | 面向分布式文件***的rdma通信地址交换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112565326B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110191194A (zh) * | 2019-06-13 | 2019-08-30 | 华中科技大学 | 一种基于rdma网络的分布式文件***数据传输方法和*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10148570B2 (en) * | 2015-12-29 | 2018-12-04 | Amazon Technologies, Inc. | Connectionless reliable transport |
US10713211B2 (en) * | 2016-01-13 | 2020-07-14 | Red Hat, Inc. | Pre-registering memory regions for remote direct memory access in a distributed file system |
JP6668993B2 (ja) * | 2016-07-22 | 2020-03-18 | 富士通株式会社 | 並列処理装置及びノード間通信方法 |
-
2019
- 2019-09-26 CN CN201910918615.5A patent/CN112565326B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110191194A (zh) * | 2019-06-13 | 2019-08-30 | 华中科技大学 | 一种基于rdma网络的分布式文件***数据传输方法和*** |
Non-Patent Citations (1)
Title |
---|
基于动态连接的RDMA可靠传输协议设计;刘路;张磊;曹继军;戴艺;;计算机工程与科学(08);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112565326A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108268208B (zh) | 一种基于rdma的分布式内存文件*** | |
CN108768826B (zh) | 基于MQTT和Kafka高并发场景下的消息路由方法 | |
CN111277616B (zh) | 一种基于rdma的数据传输方法和分布式共享内存*** | |
CN110401592B (zh) | 一种消息通道中数据流转的方法及设备 | |
US10200460B2 (en) | Server-processor hybrid system for processing data | |
CN111432025B (zh) | 一种面向云边协同的分布式服务目录管理方法及*** | |
CN110177118A (zh) | 一种基于rdma的rpc通信方法 | |
CN112631788B (zh) | 数据传输方法及数据传输服务器 | |
CN111459417B (zh) | 一种面向NVMeoF存储网络的无锁传输方法及*** | |
CN112099977A (zh) | 一种分布式跟踪***的实时数据分析引擎 | |
CN100359474C (zh) | 构建基于软流水结构的Web服务器的方法 | |
CN112087490A (zh) | 一种高性能移动端应用软件日志收集*** | |
CN113468221A (zh) | 一种基于kafka消息数据总线的***集成方法 | |
CN113630366A (zh) | 一种物联网设备接入方法及*** | |
TWI442248B (zh) | 處理資料之處理器-伺服器混合系統 | |
Sun et al. | SKV: A SmartNIC-Offloaded Distributed Key-Value Store | |
CN114024910A (zh) | 一种用于金融交易***的极低延时可靠通讯***及方法 | |
CN112565326B (zh) | 面向分布式文件***的rdma通信地址交换方法 | |
CN113259408A (zh) | 数据传输方法和*** | |
CN112052104A (zh) | 基于多机房实现的消息队列的管理方法及电子设备 | |
CN108234595B (zh) | 日志传输方法及*** | |
CN115086311B (zh) | 一种基于云服务总线的企业跨***服务的管理*** | |
CN110674221A (zh) | 一种空间数据同步方法、终端及计算机可读存储介质 | |
CN103338160B (zh) | 基于缓存队列的轮询业务的优化***及优化方法 | |
CN110290035B (zh) | 一种基于k3s的智慧家庭数据存储访问方法及*** |
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 |