CN112954068A - 一种基于rdma的数据传输方法及装置 - Google Patents

一种基于rdma的数据传输方法及装置 Download PDF

Info

Publication number
CN112954068A
CN112954068A CN202110255648.3A CN202110255648A CN112954068A CN 112954068 A CN112954068 A CN 112954068A CN 202110255648 A CN202110255648 A CN 202110255648A CN 112954068 A CN112954068 A CN 112954068A
Authority
CN
China
Prior art keywords
data
remote server
memory
application program
sending
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
Application number
CN202110255648.3A
Other languages
English (en)
Other versions
CN112954068B (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.)
Orca Data Technology Xian Co Ltd
Original Assignee
Orca Data Technology Xian Co Ltd
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 Orca Data Technology Xian Co Ltd filed Critical Orca Data Technology Xian Co Ltd
Priority to CN202110255648.3A priority Critical patent/CN112954068B/zh
Publication of CN112954068A publication Critical patent/CN112954068A/zh
Application granted granted Critical
Publication of CN112954068B publication Critical patent/CN112954068B/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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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
    • 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/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种基于RDMA的数据传输方法及装置,向远端服务器发送连接报文,并与远端服务器建立数据连接;将待传输数据写入到网卡注册的DMA内存中;构造数据包并通过网卡发送至远端服务器;构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;向第一应用程序发送数据传输完成信息;本发明通过在构造数据包后构建本地事件,得到第一应用程序的第一通信标识码,并向第一应用程序返回数据传输完成信息,不再需要远端服务器的返回消息进行确认,可以降低远端CPU的使用率,提升数据传输速率。

Description

一种基于RDMA的数据传输方法及装置
技术领域
本发明属于通讯技术领域,尤其涉及一种基于RDMA的数据传输方法。
背景技术
当今是信息时代,网络传输速度是信息时代的基石,网络通信会占用大量的CPU算力。从而出现了很多高速网卡,以及高速网卡的应用,提出了使用单边操作方式,也就是远程直接内存访问技术(Remote Direct MemoryAccess,RDMA)。现有的RDMA通用操作方法是:先发消息给对端,然后进行单边RDMA操作,来同步数据,最后返回消息处理结果。
现有RDMA的消息处理流程,需要先后进行发送通信请求,然后才进行单边数据传输,最后通过返回结果来确认操作完成,CPU需要先后三次操作来确保数据完整。
发明内容
本发明的目的是提供一种基于RDMA的数据传输方法及装置,仅需要消息发起端的CPU参与数据传输,降低远端的CPU消耗。
本发明采用以下技术方案:一种基于RDMA的数据传输方法,包括以下步骤:
向远端服务器发送连接报文,并与远端服务器建立数据连接;
将待传输数据写入到网卡注册的DMA内存中;
构造数据包并通过网卡发送至远端服务器;
构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;
向第一应用程序发送数据传输完成信息。
进一步地,与远端服务器建立数据连接包括:
申请固定大小的内存空间,并注册给网卡的DMA;
构建连接报文并发送至远端服务器;连接报文包括内存空间的起始地址和终止地址、本端服务器在数据传输网络中的唯一标识、以及本端应用程序的通信标识码;
接收远端服务器发来的连接报文并解析,得到远端服务器注册给网卡的DMA的内存空间的起始地址和终止地址、以及远端服务器应用程序的通信标识码。
进一步地,数据包包括本端服务器注册给网卡的DMA的内存空间的第一起始地址、远端服务器注册给其网卡的DMA的内存空间的第二起始地址、待传输数据起始地址相对于第一起始地址的第一偏移量、待传输数据相对于第二起始地址的第二偏移量、待传输数据的数据长度、本端服务器中写入待传输数据的第一应用程序的第一通信标识码和远端服务器读取待传输数据的第二应用程序的第二通信标识码。
进一步地,构造数据包并通过网卡发送至远端服务器之后还包括:
远端服务器的网卡接收数据包;
解析数据包,获取第二通信标识码、第二偏移量和数据长度,并构建远端事件;
根据远端事件将数据包发送至第二应用程序;
第二应用程序解析数据包,获取第二偏移量和数据长度接收待传输数据。
进一步地,本地事件包括第一通信标识码、第一偏移量和数据长度。
进一步地,当需要读取数据时,待传输数据为读取数据的请求信息;
当远端服务器获取读取数据的请求信息后,对本端服务器进行写入数据操作。
进一步地,向第一应用程序发送数据传输完成信息后还包括:
构造待传输数据为断开连接请求信息的第一数据包,并通过网卡发送至远端服务器;
接收远端服务器发来的待传输数据为断开连接请求信息的第二数据包;
销毁连接。
进一步地,当远端服务器接收到第一数据包后还包括:
解析第一数据包,获取第二通信标识码;
根据第二通信标识码将多数第一数据包发送至第二应用程序;
第二应用程序解析第一数据包,接收断开连接请求信息;
构造待传输数据为断开连接请求信息的第二数据包,并通过网卡发送至本端服务器;
销毁连接。
本发明的另一种实施例:一种基于RDMA的数据传输装置,包括:
建立连接模块,用于向远端服务器发送连接报文,并与远端服务器建立数据连接;
写入模块,用于将待传输数据写入到网卡注册的DMA内存中;
构造模块,用于构造数据包并通过网卡发送至远端服务器;
获取模块,用于构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;
发送模块,用于向第一应用程序发送数据传输完成信息。
本发明的另一种实施例:一种基于RDMA的数据传输装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的一种基于RDMA的数据传输方法。
本发明的有益效果是:本发明通过在构造数据包后构建本地事件,得到第一应用程序的第一通信标识码,并向第一应用程序返回数据传输完成信息,不再需要远端服务器的返回消息进行确认,可以降低远端CPU的使用率,提升数据传输速率。
附图说明
图1为本发明一种基于RDMA的数据传输方法的流程图;
图2为本发明实施例中本端服务器和远端服务器的内存空间和内存状态位图的对应关系图;
图3为本发明实施例中内存空间和内存状态位图的对应关系图;
图4为本发明实施例中内存空间的分配流程图;
图5为本发明实施例中存储数据示意图;
图6为本发明实施例中进行位与操作的流程图;
图7为本发明实施例中建立数据连接的流程示意图;
图8为本发明实施例中数据传输交互流程示意图;
图9为本发明实施例中断开数据连接的交互流程示意图;
图10为本发明另一实施例一种基于RDMA的数据传输装置的结构示意图;
图11为本发明另一实施例一种基于RDMA的数据传输装置的结构示意图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明公开了一种基于RDMA的数据传输方法,如图1所示,包括以下步骤:
步骤S110、向远端服务器发送连接报文,并与远端服务器建立数据连接;步骤S120、将待传输数据写入到网卡注册的DMA内存中;步骤S130、构造数据包并通过网卡发送至远端服务器;步骤S140、构建本地事件,获取写入待传输数据的第一应用程序对应的第一通信标识码;步骤S150、向第一应用程序发送数据传输完成信息。
本发明通过在构造数据包后构建本地事件,得到第一应用程序的第一通信标识码,并向第一应用程序返回数据传输完成信息,不再需要远端服务器的返回消息进行确认,可以降低远端CPU的使用率,提升数据传输速率。
为了更好的理解本发明的方法,首先定义以下术语:
双边操作:send和recv;
单边操作:put和get;
双边操作:指的是发起端发送消息给接收端,是两边的CPU都需要操作,两边的接口也都知道对端操作完成与否。
单边操作:指的是消息通信时,只有一端CPU参与操作,只有操作端参与控制,当然,发起端可以通过注册远端事件(即向远端线程上报事件),当远端操作完成后可以报消息给对端应用进行操作。
Send操作:就是发送数据给远端;
Recv操作:就是从远端接收数据;
Put操作:就是将本地的数据,通过调用远端的网卡的DMA,直接将数据写入到对应的预先分配的内存中。
Get操作:就是将远端的数据,通过调用远端的网卡的DMA,读取预先分配的指定的内存中的数据,然后将数据发送到本端的预先分配的指定的内存中来。
交换背板:指的是以太网中的二层交换机。
NICID:指的是高速网卡在一个交换背板下的全局唯一ID。
本实施例通过单边操作put,并注册本地事件和远端事件,表明数据类型和流向,优化通信流程,提高通信效率。
在本实施例中,与远端服务器建立数据连接包括:
申请固定大小的内存空间,并注册给网卡的DMA;构建连接报文并发送至远端服务器;连接报文包括内存空间的起始地址和终止地址、本端服务器在数据传输网络中的唯一标识、以及本端应用程序的通信标识码;接收远端服务器发来的连接报文并解析,得到远端服务器注册给网卡的DMA的内存空间的起始地址和终止地址、以及远端服务器应用程序的通信标识码。
在本发明实施例中,通过申请一个大内存作为内存池(即内存空间),再通过内存状态位图管理内存空间的使用情况,然后,当数据发送使用完整内存空间后,同步内存状态位图信息,来判断内存块是否可以继续使用。
本实施例的内存管理方法包括以下步骤:获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;当待存储数据存储至内存空间后,更新第一内存状态位图;当内存空间存满数据时,获取远端服务器的第二内存状态位图;比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;根据更新后的第一内存状态位图,删除内存空间中的存储数据。
本发明将注册给网卡的内存空间分为若干个内存块,并根据内存块的数量构建对应的内存状态位图,进而通过内存状态位图来表示每个内存块的存储状态,并且还可以结合远端服务器的内存状态位图来释放本端内存空间,进而减少了内存的申请和释放次数,优化了内存使用机制,提升了服务器的运行效率。
在一个通信网络中,如图2所示,可以在每个服务器上均应用该方法,为每个服务器的网卡构建内存池和对应的内存状态位图,进而方便管理内存。在本实施例中,内存池是真实进行RDMA传输数据的多个数据块组成。内存状态位图:每个内存池一个位图,内存池中的每个数据块(即内存块)对应位图中的一个位。为了方便描述,本实施例中内存状态位图中每一位均为一个二进制数字,1代表该位对应的内存块已经被占用,0代表该位对应的内存块为可用。
另外,关于每个服务器中的内存空间和内存状态位图对应关系如图3所示。下面举例说明通过位图引索找到内存地址的方法。当位图引索index=2;内存池起始地址位:addr=0x1;内存池内存块大小:size=4;则位图index对应的内存地址destAddr=addr+(index*size)结果为0x9。
在本发明实施例中,获取用于注册给网卡的内存空间的一种方法为:根据内存块的预定空间大小、以及预定的内存块数量,计算内存空间的大小;根据内存空间的大小确定内存空间的起始地址和结束地址。根据内存块的预定空间大小和内存块的数量可以使得将内存池均匀分割,这样可以方便构建与内存池对应的内存状态位置,以方便内存池的管理和使用。
当构建内存池之后,根据内存空间构建内存状态位图包括:根据内存块的数量构建与内存空间对应的内存状态位图;其中,内存状态位图的位数等于内存块的数量。初始化内存状态位图。
申请内存流程如为:假设申请内存块大小为size,内存块个数为len的内存池,并初始化内存池。构建len位的位图,并将位图中每一位的值均初始化为0,表示该内存池中所有内存块均为空,可以用来存放数据。
当有本端事件发生时,需要向内存空间中存储数据时,该流程如图4所示。从第一内存状态位图的起始位开始搜索,直至找到第一个状态为闲置的位;将该第一个状态为闲置的位对应的存储块的起始地址作为待存储数据在内存空间中的起始存储地址。
也就是说,首先从内存状态位图中找出第一个值为0的位,如果没有找到值为0的位,则向远端服务器发送请求,获取其的第二内存管理位图,再将远端服务器的第二内存状态位图和本端服务器的第一内存管理位图按位与运算,最后将得到的结果覆盖本端服务器的第一内存状态位图。
另外,如果从本端服务器的内纯状态位图中找到了值为0的位,则返回这个位的引索,就是内存池中的相同引索的数据块地址即可,将待存储数据以该数据块为起始数据块进行存储。
如图5所示,当有待存储数据需要存储时,首先从内存状态位图中找到第一个值为0的位,即第3位,这就表示在内存池中第3个数据块为空,可以存储数据,所以,将待存储数据存储到该数据块中。当该数据块存满后,如果待存储数据为存完,则重复选择下一个空的数据块,继续存储,假设该待存储数据需要3个数据块进行存储,则该待存储数据在本内存池中的存储数据块序号分别为3、4、5。
另外,在网卡不需要存储数据时,即为内存空间闲置状态,该过程中会收到事件信息,该类事件信息是随着put操作或get操作而产生的。当网卡的事件线程收到事件后,需要先判断该事件是远端事件还是本端事件。
当事件为远端事件时,提取远端事件的报文,从报文中获取到该事件在本端服务器中对应的应用程序的socketid,进而将事件信息通报到对应的应用程序,即向远端事件对应的应用程序(本端服务器的应用程序)发送通知,通知的内容为应用程序在内存空间中获取数据。当应用程序接收到通知时,用户可知有新的消息,则会前往内存池中对应的数据块读取数据,读取数据的方式有多种,可以为读取完数据不进行保存,也可以是读取数据过程中将数据保存到硬件存储设备中。不管是数据不保存还是已经保存,在本端服务器中,检测到应用程序获取数据后,将第一内存状态位图中与该数据对应的位的状态更新为闲置,即释放该事件对应的内存池的内存空间,已备后续其他应用程序进行使用。
另外,当事件为本端事件时,不进行操作,则表示本段服务器在进行put或get操作,然而,不管是put操作,还是get操作,对本端的内存池均不会影响,因此,不进行任何操作即可。
在本实施例中,当内存池的存储空间数据存满后,此时内存状态位图会显示全1位图。这种情况下,会发生在两个场景下,即数据存储过程中或者是数据存储之前,但是不管哪种情况,只要获取到内存状态位图的值为全1,则需要进行内存释放过程。
内存释放过程是先获取远端服务器的第二内存状态位图,再比较第一内存状态位图和所述第二内存状态位图,根据比较结果更新第一内存状态位图,最后根据更新后的第一内存状态位图,删除内存空间中的存储数据。
具体的,本实施例还给出了一种具体的比较形式,比如,比较第一内存状态位图和第二内存状态位图时,将第一内存状态位图与第二内存状态位图中序数相同的位的状态进行位与运算。通过进行位与运算可以将相互进行通信的服务器之间的冗余数据消除,达到内存数据释放的效果。
如图6所示,左侧为本端的第一内存状态位图和远端的第二内存状态位图,由图可知,第一内存状态位图已经存满数据,第二内存状态位图中仅有第8个数据块存储有数据,其与数据块均为空,则表明第1-7个数据块中的数据已使用完成,不需要在进行保存,因此,进行位与运算后,第一内存状态位图中1-7位均为0,第8位为1。进而,根据第一内存状态位图更新内存池,释放第1-7个数据块,保留第8个内存池的数据块。至此,即完成了内存释放过程。
本实施例使用内存池机制,减少内存反复申请和释放;使用位图和内存池的数据块引索绑定,提高内存分配速度;并且本端事件不释放内存,远端事件释放内存,来解决踩内存问题(即内存重叠)。进而本发明提高了CPU和内存的控制效率,通过位图,控制大片内存,可以快速引索内存,通过俩端的位图按位与来解决持续发送数据带来的内存复用问题,大大提高了内存复用和分配的效率。
在该实施例中,具体的流程由图7所示,本端和远端都进行申请固定相同大小的内存,并注册给高速网卡的DMA,用来进行单边操作。
本端的connect_package(即连接报文)通过send操作发送给高速网卡为NICID的远端。远端通过recv收到后,记录本端的内存、nicid还有socketid信息(即通信标识码,类似与TCP/IP协议中的ip地址+8010端口号)。远端的connect_package通过send操作发送给需要建立连接的本端;本端通过recv收到后,记录服务端的内存、nicid还有socketid信息。连接socket和连接报文数据结果如下表1和表2所示。
表1
Figure BDA0002966942890000111
在表1中,socket是建立连接后记录连接信息的数据结构;其中,local_mem是注册给高速网卡DMA的本端内存起始地址,rmt_mem是注册给远端高速网卡DMA的内存起始地址,local_nicid是本端高速网卡的唯一标识,rmt_nicid是远端高速网卡的唯一标识,local_socketid是本端应用程序进行通信的通信标识码,rmt_socketid是远端应用程序进行通信的通信标识码。
表2
Figure BDA0002966942890000112
如表2所示,connect_package是建立连接的请求报文。mem是注册给高速网卡DMA的内存地址,nicid是高速网卡的交换背板下的唯一标识。socketid是应用程序操作的高速网卡的标识。
在本发明实施例中,数据包即上述的socket,包括本端服务器注册给网卡的DMA的内存空间的第一起始地址、远端服务器注册给其网卡的DMA的内存空间的第二起始地址、待传输数据起始地址相对于第一起始地址的第一偏移量、待传输数据相对于第二起始地址的第二偏移量、待传输数据的数据长度、本端服务器中写入待传输数据的第一应用程序的第一通信标识码和远端服务器读取待传输数据的第二应用程序的第二通信标识码。
更为具体的,如图8所示,构造数据包并通过网卡发送至远端服务器之后还包括:远端服务器的网卡接收数据包;解析数据包,获取第二通信标识码、第二偏移量和数据长度,并构建远端事件;根据远端事件将数据包发送至第二应用程序;第二应用程序解析数据包,获取第二偏移量和数据长度接收待传输数据。
本实施例中,本端服务器即为传送消息的发起端,可以为分布式存储系统中的任一数据存储服务器,远端服务器即为与该本端服务器处于同一分布式存储系统中的另外的数据存储服务器。初始情况下,双方建立连接之后,远端服务器等待接收数据,当本端服务器构造put_request后,通过高速网卡发送给远端,并注册本地事件和远端事件,远端收到事件后通过socketid发送给持有这个socket的应用程序,远端应用程序收到远端事件后,读取对应的内存的偏移地址开始的输出(即offset),大小为data_length,则远端接收数据完成。本端将数据发送出去以后会收到本地事件,收到本地事件后,通过socketid通知发送数据的应用程序,表示数据发送成功。
在构造数据包时,本实施例中,数据包结构如下表3所示:
表3
Figure BDA0002966942890000121
Figure BDA0002966942890000131
put_request为数据包结构,即本端将数据已经写入指定的内存中后,发送数据所需要的数据包。local_mem:本地注册给高速网卡DMA的内存起始地址,高速网卡驱动使用。rmt_mem:远端注册给高速网卡DMA的内存起始地址,高速网卡驱动使用。local_offset:本地写入数据的起始位置相对于local_mem地址的偏移,高速网卡驱动使用。rmt_offset:远端接收数据的起始位置相对于local_mem地址的偏移,高速网卡驱动使用。data_length:本次put需要发送的数据大小。local_socketid:本端应用程序标识,可以通过socketid给应用程序发消息。rmt_socketid:远端应用程序标识,可以通过socketid给应用程序发消息。local_event:注册给本地高速网卡驱动,当put数据完成后,本端event_worker会收到local_event事件。rmt_event:注册给远端高速网卡驱动,当put数据完成后,远端event_worker会收到rmt_event事件。
同时,构建的本端事件和远端事件的数据包结构如表4所示:
表4
Figure BDA0002966942890000132
event是put请求中注册的local_event和rmt_event的数据结构,socketid是应用程序的通信标识码,可以通过socketid给应用程序发消息。Offset是发送数据的起始位置相对于注册给mem地址的偏移,高速网卡驱动使用。data_length是发送数据的数据大小。具体的,本地事件包括第一通信标识码、第一偏移量和数据长度。同样的,远端事件则包括第二通信标识码、第二偏移量和数据长度。
另外,当需要读取数据时,待传输数据为读取数据的请求信息;当远端服务器获取读取数据的请求信息后,对本端服务器进行写入数据操作。写入数据操作即为上述的put操作。
当put操作完成后,由于高速网卡的注册内存,在一些时候需要将内存释放,或者其他维护原因,需要将本端与远端断开连接。断开连接的具体流程为:
构造待传输数据为断开连接请求信息的第一数据包,并通过网卡发送至远端服务器;接收远端服务器发来的待传输数据为断开连接请求信息的第二数据包;销毁连接。
具体的,根据图9所示,详细的断开连接过程可以为:
1.本端应用程序数据发送完成后,请求断开连接;2.本端构造断开请求,然后写入到要发送的内存中;3.本端构造put数据包,内存长度为断开请求大小;4.本端向高速网卡驱动发出rdmaput请求;5.本端收到put完成后等待远端断开消息;6.远端接收事件进程收到远端事件;7.远端接收事件进程通知远端应用程序;8.远端应用程序收到断开连接请求;9.远端构造自己的断开请求并写入dma内存;10.远端构造put数据包,内存长度为断开请求大小;11.远端向高速网卡驱动发出rdmaput请求;12.远端收到本地put完成事件,通知应用程序;13.远端应用程序收到通知后,销毁连接;14.本端收到远端断开请求;15.本端销毁连接。
更为具体的,远端的操作可以概括如下:当远端服务器接收到第一数据包后解析第一数据包,获取第二通信标识码;根据第二通信标识码将多数第一数据包发送至第二应用程序;第二应用程序解析第一数据包,接收断开连接请求信息;构造待传输数据为断开连接请求信息的第二数据包,并通过网卡发送至本端服务器;销毁连接。
综上,即为本实施例的数据传输过程,本发明使用单边操作put来减少CPU参与数据传输,降低CPU压力。单边操作的过程中,利用注册事件,携带socketid,offset,length。减少消息交互。单边操作通过socketid直接将数据通知给远端的应用程序。通过高速网卡通信,减少CPU参与数据传输的次数,提高CPU利用率,通过socketid直接将数据通知应用程序进行读取。
本发明还公开了一种基于RDMA的数据传输装置,如图10所示,包括:
建立连接模块210,用于向远端服务器发送连接报文,并与所述远端服务器建立数据连接;写入模块220,用于将待传输数据写入到网卡注册的DMA内存中;构造模块230,用于构造数据包并通过网卡发送至远端服务器;获取模块240,用于构建本地事件,获取写入所述待传输数据的第一应用程序对应的第一通信标识码;发送模块250,用于向所述第一应用程序发送数据传输完成信息。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功模块,以完成以上描述的全部或者部分功能。实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明的另一实施例还公开了一种基于RDMA的数据传输装置,如图11所示,包括存储器31、处理器32以及存储在存储器31中并可在处理器32上运行的计算机程序33,处理器执行计算机程序时实现上述的一种基于RDMA的数据传输方法。
本发明另一实施例还公开了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的一种基于RDMA的数据传输方法。
计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

Claims (10)

1.一种基于RDMA的数据传输方法,其特征在于,包括以下步骤:
向远端服务器发送连接报文,并与所述远端服务器建立数据连接;
将待传输数据写入到网卡注册的DMA内存中;
构造数据包并通过网卡发送至远端服务器;
构建本地事件,获取写入所述待传输数据的第一应用程序对应的第一通信标识码;
向所述第一应用程序发送数据传输完成信息。
2.如权利要求1所述的一种基于RDMA的数据传输方法,其特征在于,与所述远端服务器建立数据连接包括:
申请固定大小的内存空间,并注册给网卡的DMA;
构建所述连接报文并发送至远端服务器;所述连接报文包括所述内存空间的起始地址和终止地址、本端服务器在数据传输网络中的唯一标识、以及本端应用程序的通信标识码;
接收远端服务器发来的连接报文并解析,得到远端服务器注册给网卡的DMA的内存空间的起始地址和终止地址、以及远端服务器应用程序的通信标识码。
3.如权利要求2所述的一种基于RDMA的数据传输方法,其特征在于,所述数据包包括本端服务器注册给网卡的DMA的内存空间的第一起始地址、远端服务器注册给其网卡的DMA的内存空间的第二起始地址、所述待传输数据起始地址相对于所述第一起始地址的第一偏移量、所述待传输数据相对于第二起始地址的第二偏移量、所述待传输数据的数据长度、本端服务器中写入所述待传输数据的第一应用程序的第一通信标识码和远端服务器读取所述待传输数据的第二应用程序的第二通信标识码。
4.如权利要求3所述的一种基于RDMA的数据传输方法,其特征在于,构造数据包并通过网卡发送至远端服务器之后还包括:
所述远端服务器的网卡接收所述数据包;
解析所述数据包,获取所述第二通信标识码、第二偏移量和数据长度,并构建远端事件;
根据所述远端事件将所述数据包发送至所述第二应用程序;
所述第二应用程序解析所述数据包,获取所述第二偏移量和数据长度接收所述待传输数据。
5.如权利要求4所述的一种基于RDMA的数据传输方法,其特征在于,所述本地事件包括所述第一通信标识码、第一偏移量和数据长度。
6.如权利要求5所述的一种基于RDMA的数据传输方法,其特征在于,当需要读取数据时,所述待传输数据为读取数据的请求信息;
当远端服务器获取读取数据的请求信息后,对本端服务器进行写入数据操作。
7.如权利要求5所述的一种基于RDMA的数据传输方法,其特征在于,向所述第一应用程序发送数据传输完成信息后还包括:
构造待传输数据为断开连接请求信息的第一数据包,并通过网卡发送至远端服务器;
接收远端服务器发来的待传输数据为断开连接请求信息的第二数据包;
销毁连接。
8.如权利要求7所述的一种基于RDMA的数据传输方法,其特征在于,当远端服务器接收到所述第一数据包后还包括:
解析所述第一数据包,获取所述第二通信标识码;
根据所述第二通信标识码将多数第一数据包发送至所述第二应用程序;
所述第二应用程序解析所述第一数据包,接收所述断开连接请求信息;
构造待传输数据为断开连接请求信息的第二数据包,并通过网卡发送至本端服务器;
销毁连接。
9.一种基于RDMA的数据传输装置,其特征在于,包括:
建立连接模块,用于向远端服务器发送连接报文,并与所述远端服务器建立数据连接;
写入模块,用于将待传输数据写入到网卡注册的DMA内存中;
构造模块,用于构造数据包并通过网卡发送至远端服务器;
获取模块,用于构建本地事件,获取写入所述待传输数据的第一应用程序对应的第一通信标识码;
发送模块,用于向所述第一应用程序发送数据传输完成信息。
10.一种基于RDMA的数据传输装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至8任一项所述的一种基于RDMA的数据传输方法。
CN202110255648.3A 2021-03-09 2021-03-09 一种基于rdma的数据传输方法及装置 Active CN112954068B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110255648.3A CN112954068B (zh) 2021-03-09 2021-03-09 一种基于rdma的数据传输方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110255648.3A CN112954068B (zh) 2021-03-09 2021-03-09 一种基于rdma的数据传输方法及装置

Publications (2)

Publication Number Publication Date
CN112954068A true CN112954068A (zh) 2021-06-11
CN112954068B CN112954068B (zh) 2022-09-27

Family

ID=76228547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110255648.3A Active CN112954068B (zh) 2021-03-09 2021-03-09 一种基于rdma的数据传输方法及装置

Country Status (1)

Country Link
CN (1) CN112954068B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113596085A (zh) * 2021-06-24 2021-11-02 阿里云计算有限公司 数据处理方法系统及装置
CN113923167A (zh) * 2021-09-16 2022-01-11 深圳致星科技有限公司 联邦学习中数据传输优化方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103929415A (zh) * 2014-03-21 2014-07-16 华为技术有限公司 Rdma下数据读写的方法、装置和网络系统
US20140297775A1 (en) * 2013-03-26 2014-10-02 Vmware, Inc. Method and system for providing remote direct memory access to virtual machines
US20170034268A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Systems, methods and devices for rdma read/write operations
CN107147590A (zh) * 2017-07-12 2017-09-08 郑州云海信息技术有限公司 一种基于rdma协议消息通信的方法及系统
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN108228476A (zh) * 2017-12-22 2018-06-29 新华三技术有限公司 一种数据获取方法及装置
CN108268208A (zh) * 2016-12-30 2018-07-10 清华大学 一种基于rdma的分布式内存文件系统
CN109040210A (zh) * 2018-07-23 2018-12-18 百富计算机技术(深圳)有限公司 一种应用之间的通信方法、终端设备及存储介质
CN109981480A (zh) * 2017-12-27 2019-07-05 华为技术有限公司 一种数据传输方法及第一设备
CN110191194A (zh) * 2019-06-13 2019-08-30 华中科技大学 一种基于rdma网络的分布式文件系统数据传输方法和系统
US20190303345A1 (en) * 2018-04-03 2019-10-03 Microsoft Technology Licensing, Llc Virtual rdma switching for containerized applications
CN110620762A (zh) * 2019-08-06 2019-12-27 阿里巴巴集团控股有限公司 基于rdma的数据传输方法、网卡、服务器及介质
CN111404931A (zh) * 2020-03-13 2020-07-10 清华大学 一种基于持久性内存的远程数据传输方法
CN112948318A (zh) * 2021-03-09 2021-06-11 西安奥卡云数据科技有限公司 一种Linux操作系统下基于RDMA的数据传输方法及装置
CN113238856A (zh) * 2021-03-09 2021-08-10 西安奥卡云数据科技有限公司 一种基于rdma的内存管理方法及装置

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140297775A1 (en) * 2013-03-26 2014-10-02 Vmware, Inc. Method and system for providing remote direct memory access to virtual machines
CN103929415A (zh) * 2014-03-21 2014-07-16 华为技术有限公司 Rdma下数据读写的方法、装置和网络系统
US20170034268A1 (en) * 2015-07-31 2017-02-02 Netapp, Inc. Systems, methods and devices for rdma read/write operations
CN108268208A (zh) * 2016-12-30 2018-07-10 清华大学 一种基于rdma的分布式内存文件系统
CN107147590A (zh) * 2017-07-12 2017-09-08 郑州云海信息技术有限公司 一种基于rdma协议消息通信的方法及系统
CN108062253A (zh) * 2017-12-11 2018-05-22 北京奇虎科技有限公司 一种内核态与用户态的通信方法、装置及终端
CN108228476A (zh) * 2017-12-22 2018-06-29 新华三技术有限公司 一种数据获取方法及装置
CN109981480A (zh) * 2017-12-27 2019-07-05 华为技术有限公司 一种数据传输方法及第一设备
US20190303345A1 (en) * 2018-04-03 2019-10-03 Microsoft Technology Licensing, Llc Virtual rdma switching for containerized applications
CN109040210A (zh) * 2018-07-23 2018-12-18 百富计算机技术(深圳)有限公司 一种应用之间的通信方法、终端设备及存储介质
CN110191194A (zh) * 2019-06-13 2019-08-30 华中科技大学 一种基于rdma网络的分布式文件系统数据传输方法和系统
CN110620762A (zh) * 2019-08-06 2019-12-27 阿里巴巴集团控股有限公司 基于rdma的数据传输方法、网卡、服务器及介质
CN111404931A (zh) * 2020-03-13 2020-07-10 清华大学 一种基于持久性内存的远程数据传输方法
CN112948318A (zh) * 2021-03-09 2021-06-11 西安奥卡云数据科技有限公司 一种Linux操作系统下基于RDMA的数据传输方法及装置
CN113238856A (zh) * 2021-03-09 2021-08-10 西安奥卡云数据科技有限公司 一种基于rdma的内存管理方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113596085A (zh) * 2021-06-24 2021-11-02 阿里云计算有限公司 数据处理方法系统及装置
CN113923167A (zh) * 2021-09-16 2022-01-11 深圳致星科技有限公司 联邦学习中数据传输优化方法
CN113923167B (zh) * 2021-09-16 2024-05-03 深圳致星科技有限公司 联邦学习中数据传输优化方法

Also Published As

Publication number Publication date
CN112954068B (zh) 2022-09-27

Similar Documents

Publication Publication Date Title
CN112948318B (zh) 一种Linux操作系统下基于RDMA的数据传输方法及装置
CN108268208B (zh) 一种基于rdma的分布式内存文件系统
CN112954068B (zh) 一种基于rdma的数据传输方法及装置
TW200814672A (en) Method and system for a user space TCP offload engine (TOE)
CN113238856B (zh) 一种基于rdma的内存管理方法及装置
CN111163130A (zh) 一种网络服务系统及其数据传输方法
WO2022017475A1 (zh) 一种数据访问方法及相关设备
CN116069262B (zh) 一种分布式存储卸载方法、装置、电子设备及存储介质
CN114035987A (zh) 基于消息队列的数据传输方法、装置、电子设备及介质
JP2002305535A (ja) データを転送する信頼できるプロトコルを提供する方法および装置
CN112134915A (zh) 一种应用层协议解耦合的通用网络处理系统
CN110519242A (zh) 数据传输方法及装置
CN117061072B (zh) 报文传输方法、装置、设备及存储介质
CN110445826B (zh) 一种会话信息获取方法、装置及服务器
CN111400213B (zh) 传输数据的方法、装置及系统
CN113904976A (zh) 基于rdma用于有损网络的多路径数据传输方法和装置
JP3608905B2 (ja) データ通信システム及びデータ通信方法
CN112422485B (zh) 一种传输控制协议的通信方法及装置
JP3569149B2 (ja) 通信制御装置
CN109413142B (zh) 一种Linux下的iSCSI虚拟代理实现方法
CN111404842A (zh) 数据传输方法、装置及计算机存储介质
CN105117353A (zh) 带有通用数据交互模块的fpga及采用该fpga的信息处理系统
CN109428861A (zh) 网络通信方法及设备
CN111741075A (zh) 通信连接方法、车辆远程连接系统及连接设备
JP3088683B2 (ja) データ通信システム

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
CP02 Change in the address of a patent holder

Address after: 710000 Room 1202, 12th Floor, Cultural Creation Building, Yaodian Street Office, Qinhan New Town, Xixian New District, Xi'an, Shaanxi

Patentee after: Xi'an Okayun Data Technology Co.,Ltd.

Address before: No.6-2, Changxin Industrial Park, east section of Tiangong 1st Road, banxinzhuang village, ZhouLing street, Qinhan new town, Xixian New District, Xi'an City, Shaanxi Province, 710000

Patentee before: Xi'an Okayun Data Technology Co.,Ltd.

CP02 Change in the address of a patent holder
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Data Transmission Method and Device Based on RDMA

Effective date of registration: 20221207

Granted publication date: 20220927

Pledgee: Xianyang financing guarantee Limited by Share Ltd.

Pledgor: Xi'an Okayun Data Technology Co.,Ltd.

Registration number: Y2022610000796

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20231206

Granted publication date: 20220927

Pledgee: Xianyang financing guarantee Limited by Share Ltd.

Pledgor: Xi'an Okayun Data Technology Co.,Ltd.

Registration number: Y2022610000796

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A Data Transmission Method and Device Based on RDMA

Effective date of registration: 20231211

Granted publication date: 20220927

Pledgee: Xianyang financing guarantee Limited by Share Ltd.

Pledgor: Xi'an Okayun Data Technology Co.,Ltd.

Registration number: Y2023610000758