CN113422793A - 数据传输方法、装置、电子设备及计算机存储介质 - Google Patents
数据传输方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113422793A CN113422793A CN202110164907.1A CN202110164907A CN113422793A CN 113422793 A CN113422793 A CN 113422793A CN 202110164907 A CN202110164907 A CN 202110164907A CN 113422793 A CN113422793 A CN 113422793A
- Authority
- CN
- China
- Prior art keywords
- data
- data packet
- cache region
- packet
- receiving end
- 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 86
- 230000005540 biological transmission Effects 0.000 title claims abstract description 67
- 230000003993 interaction Effects 0.000 claims abstract description 16
- 239000000872 buffer Substances 0.000 claims description 117
- 230000004044 response Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 claims description 20
- 238000004891 communication Methods 0.000 claims description 16
- 239000012634 fragment Substances 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
Images
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/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种数据传输方法、装置、电子设备及计算机存储介质,数据传输方法包括:数据发送端从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,数据包占用第一缓存区中的部分存储空间;数据发送端根据数据包在第一缓存区中的存储地址以及预先获得的数据接收端的第二缓存区的存储地址,确定数据包存储至第二缓存区的目标存储地址并据此执行RDMA写操作,以提取数据包并发送至数据接收端,使得数据包存储至第二缓存区中的目标存储地址,其中,第二缓存区的存储地址通过数据发送端和数据接收端之间的一次握手交互得到;数据发送端在确定数据包已被数据接收端处理完成后,释放数据包在第一缓存区中占用的存储空间。
Description
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据传输方法、装置、电子设备及计算机存储介质。
背景技术
随着云存储***等的不断发展,低延迟成为云存储***的热点需求,传统的TCP协议不能满足低延迟的存储需求,因此,远程直接内存访问(Remote Direct Access Memory,RDMA)技术被广泛应用。RDMA是一种在进行网络数据传输时,直接在设备的存储区域进行数据的操作、无需操作***和处理器来干预的技术。由于无需操作***和处理器的干预,因此可以极大减少传输时间,降低延迟。
通过RDMA技术进行数据传输时,若传输的数据量较大,一般通过RDMA写操作(RDMAWrite)的方式将数据直接发送至数据接收端的缓存空间中。通过RDMA写操作进行数据传输时,一般先在数据接收端注册用于存储数据包的存储空间,再由数据发送端通过RDMA写操作将数据包直接发送至存储空间中。但每执行一次RDMA写操作,都需要先在数据接收端注册用于存储数据包的存储空间,导致数据传输性能较低。
发明内容
有鉴于此,本申请实施例提供一种数据传输方案,以至少部分解决上述问题。
根据本申请实施例的第一方面,提供了数据传输方法,所述方法包括:数据发送端从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址;所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
根据本申请实施例的第二方面,提供了一种数据传输方法,所述方法包括:数据接收端将数据发送端通过RDMA写操作发送的数据包写入第二缓存区中的目标存储地址,所述RDMA写操作基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行,所述目标存储地址由所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址确定,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;所述数据接收端处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端,以使所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
根据本申请实施例的第三方面,提供了一种数据传输装置,所述装置包括:第一确定模块,用于从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;提取模块,用于根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,以及,基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址,其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;释放模块,用于在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
根据本申请实施例的第四方面,提供了一种数据传输装置,所述装置包括:写入模块,用于将数据发送端通过RDMA写操作发送的数据包写入第二缓存区中的目标存储地址,所述RDMA写操作基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行,所述目标存储地址由所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址确定,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;第一发送模块,用于处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端,以使所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
根据本申请实施例的第五方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面或第二方面所述的数据传输方法对应的操作。
根据本申请实施例的第六方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面或第七方面所述的数据传输方法。
根据本申请实施例提供的数据传输方案,所述数据发送端和所述数据接收端之间的一次握手交互后,数据发送端可以获得第二缓存区的存储地址;进行数据传输时,通过从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;所述数据发送端可以根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,并据此执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址;所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间,由此,可以预先通过一次握手,注册得到能够存储多个数据包的第一缓存区以及第二缓存区,在每次发送数据包前,直接将数据包存储在第一缓存区中,即可基于第一缓存区以及第二缓存区通过RDMA写操作实现数据包的发送,优化掉了通过RDMA写操作进行数据传输过程中,数据接收端注册用于存储数据包的存储空间的过程,至少节约了一次数据发送端与数据接收端一次RTT的握手开销,极大地提高了通过RDMA写操作进行数据传输时的传输性能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A为本申请实施例提供的一种***结构示意图;
图1B为本申请实施例一的一种数据传输方法的步骤流程图;
图1C为图1B所示实施例中的一种场景示意图;
图2A为本申请实施例二的一种数据传输方法的步骤流程图;
图2B为本申请实施例二的一种场景示意图;
图3为本申请实施例三的一种数据传输装置的结构框图;
图4为本申请实施例四的一种数据传输装置的结构框图;
图5为本申请实施例五的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例具体实现。
实施例一
图1A为本申请实施例一的一种包括RDMA网卡的***,如图所示,***可以包括:多个具有数据处理能力的设备,图1A示例性地示出了设备A、B、C、D,但实际上并不限于此。
多个设备可以组成任意的***,例如分布式存储***、云计算***等,本实施例对此不进行限定。
多个设备之间通过网络连接,网络可以为因特网、内联网、局域网、广域网、存储区域网等,只要能够实现多个设备之间的通信即可,本实施例对此不进行限定。
本实施例中,每个设备上都可以设置有RDMA网卡(又称RNIC),多个设备通过RDMA网卡以及网络,可以进行远程直接内存访问。示例地,设备A的RDMA网与设备B的RDMA网卡配合,可以实现设备A通过网络直接访问设备B的内存。
RDMA网卡为支持RDMA协议的网卡,RDMA协议允许网卡对应用程序的缓冲区直接访问,RDMA网卡使用工作队列(Queue Pair,QP)与应用程序连接。
工作队列QP是成对建立的,包括发送队列(Send Queue,SQ)以及接收队列(Receive Queue,RQ),其中,SQ建立在数据发送端,用于存储将数据发送端的存储设备和数据接收端的存储设备之间进行数据传输的指令,RQ建立在数据接收端,用于存储将接收到的数据存储至预设存储位置的指令。
数据发送端提供工作请求(WR)到工作队列后,会工作队列中会增加与工作请求(WR)对应的工作队列元素(Work Queue Element,WQE)。
RDMA的硬件可以不断地根据工作队列(WQ)中的工作队列元素WQE来执行对应的工作请求(WR),从而实现数据的传输。
一般情况下,若数据发送端发送的数据量较小,会执行RDMA Send操作将数据拷贝至数据接收端中。具体地,执行RDMA Send时,数据发送端的RDMA网卡会将数据从数据发送端的缓存区中拷贝至RDMA网卡的buffer中,再通过网络将数据传输至数据接收端的RDMA网卡的Buffer中,之后由数据接收端的RDMA网卡将数据拷贝至数据接收端的内存中,以完成数据的传输。
若数据发送端发送的数据较大,超出了RDMA网卡Buffer的负荷能力时,则会执行RDMA Write操作,直接将数据发送至数据接收端的缓存中。
然而通常情况下,执行RDMA Write操作时,都需要先在数据接收端注册用于存储数据包的存储空间,导致数据传输性能较低。
为此,本申请实施例一提供另一种数据传输方案,以提高执行RDMA Write操作时的传输性能。
参见图1B,,本申请实施例一提供的数据传输方法包括:
S101、数据发送端从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间。
本实施例中,数据发送端与数据接收端可以为上述***中的任意两个设备。数据发送端发送的数据包也可以为数据发送端的应用程序对应的数据包,本实施例对此不进行限定。
本实施例中的数据发送端与数据接收端可以为任意包括RDMA网卡的电子设备,例如服务器、PC机、移动终端(如手机等)、云计算***中的计算节点、分布式存储***中的存储节点等。
RDMA网卡即支持RDMA协议的网卡,又称为RNIC,通过RDMA网卡,可以使得数据发送端和数据接收端基于RDMA协议进行数据传输。
本实施例中,第一RDMA网卡注册有第一缓存区。
第一缓存区以及后续的第二缓存区的存储空间可以较大,使得其中可以存储有多个数据包,每个数据包占用第一存储区或者第二存储区的部分存储空间;当然,本实施例中,第一缓存区中能够存储多个数据包,但在实际使用时,第一缓存区中也可以仅存储有一个数据包,本实施例对此不进行限定。
S102、所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址。
其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到。
本实施例中,数据接收端的第二RDMA网卡注册有第二缓存区。
第二缓存区的地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到,具体握手的方案可参考相关技术,再次不再赘述,所述数据发送端和所述数据接收端在所述一次握手交互后可以进行多次数据传输。
本实施例中,可以先将数据包存储至第一缓存区,当需要发送时,根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址。
示例的,若数据包在第一缓存区中的存储地址为A+10kb~A+20kb,其中,A为第一缓存区域的起始地址,若第一缓存去和第二缓存区大小相同,则可以确定数据包存储至所述第二缓存区的目标存储地址为B+10k~B+20k,其中,B为第二缓存区的起始地址。
示例的,若确定数据包在第一缓存区中的存储地址为C~C+10kb,其中,C为数据包在第一缓存区中的存储起始地址,10k为数据包的大小;则可以确定数据包存储至所述第二缓存区的目标存储地址为D~D+10k,其中,D为上一次发送数据包时确定的数据包在第二缓存区的结束地址,若当前为第一次向数据接收端发送数据包,则D可以默认为第二缓存区的起始地址;在本申请的其他方案中,也可以直接将上一次发送数据包时确定的数据包在第二缓存区的结束地址和本次发送的数据包的大小直接作为数据包存储至所述第二缓存区的目标存储地址。
S103、基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址。
数据发送端将目标存储地址、数据包在第一缓存区中的存储地址以及RDMA写操作提交至第一RDMA网卡,第一RDMA网卡可以从第二缓存区的存储地址中提取出数据包,并发送至数据接收端的第二缓存区中,并可以通过数据接收端的第二RDMA网卡直接将数据包存储至第二缓存区中的目标存储地址。
S104、所述数据接收端处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端。
本实施例中,数据接收端可以从第二缓存区中读取出数据包,并处理读取出的数据包。若数据包处理成功,则可以通过第二RDMA网卡发送指示数据包处理完成的响应消息至所述数据发送端,使得数据发送端获知到该数据包处理完成的情况。
S105、所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
本实施例中,当确定某一数据包处理完成后,可以确定无需数据发送端再次发送该数据包,则可以释放该数据包在第一缓存区中占用的存储空间,从而可以将被释放的存储空间分配至新的数据包,实现第一缓存区的再次利用。
参见图1C,示出了本申请实施例的一种具体的使用场景。
如图1C所示,数据发送端sender注册有第一缓存区,第一缓存区中可以存储有多个数据包,分别为Packet1、Packet2、Packet3、Packet4;第一缓存区可以通过第一开始指针Sbegin和第一结束指针Rend维护存储有数据包的地址区域。
Sender可以将Packet4在第二缓存区的目标存储地址、RDMA Write操作以及数据包Packet4的存储地址提交至第一RDMA网卡,通过第一RDMA网卡将Packet4发送至数据接收端Receiver的第二缓存区中,上一发送的数据包为Packet3,则Packet4在第二缓存区的目标存储地址可以通过为Packet3在第二缓存区中的结束地址,以及Packet4的数据包大小代替。
如图1C所示,第二缓存区中存储有多个数据包,分别为Packet1、Packet2、Packet3,新写入的Packet4可以存储至Packet3后。
与第一缓存区类似,第二缓存区也可以通过第二开始指针rbegin和第二结束指针rend确定正在被处理的数据包的地址区域。
数据接收端Receiver的应用程序可以处理第二缓存区的数据包,例如处理Packet1,并在处理完成后,更新第二开始指针rbegin,以及通过第二RDMA网卡将数据包Packet1处理完成的信息发送至sender。
Sender可以释放数据包Packet1在第一缓存区中占用的存储空间,并更新第一开始指针Sbegin,释放后的存储空间可以用于写入其他数据包。
本申请实施例提供的方案,所述数据发送端和所述数据接收端之间的一次握手交互后,数据发送端可以获得第二缓存区的存储地址;进行数据传输时,通过从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;所述数据发送端可以根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,并据此执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址;所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间,由此,可以预先通过一次握手,注册得到能够存储多个数据包的第一缓存区以及第二缓存区,在每次发送数据包前,直接将数据包存储在第一缓存区中,即可基于第一缓存区以及第二缓存区通过RDMA写操作实现数据包的发送,优化掉了通过RDMA写操作进行数据传输过程中,数据接收端注册用于存储数据包的存储空间的过程,至少节约了一次数据发送端与数据接收端一次RTT的握手开销,极大地提高了通过RDMA写操作进行数据传输时的传输性能。
实施例二
图2A为本申请实施例二的一种数据传输方法的步骤流程图。如图所示,数据传输方法包括:
S201、所述数据发送端根据待分配存储空间的数据包的长度以及所述第一缓存区中已分配区域的结束地址,确定为数据包分配的存储空间的结束地址,以将所述数据包存储至所述第一缓存区中。
示例地,参见图2B,第一缓存区通过第一开始指针Sbegin和第一结束指针Rend维护存储有数据包的地址区域。其中,第一结束指针Rend可以用于指示第一缓存区中已分配区域的结束地址。
当从第一缓存区中为数据包分配的存储空间时,以第一结束指针Rend为起始地址,增加待分配存储空间的数据包的长度,从而确定为数据包分配的存储空间的结束地址,以完成分配。
数据包存储后,可以更新第一结束指针Rend至为数据包分配的存储空间的结束地址,从而可以继续根据第一结束指针Rend为其他数据包分配第一缓存区中的存储空间。
通过根据待分配存储空间的数据包的长度以及所述第一缓存区中已分配区域的结束地址,确定为数据包分配的存储空间的结束地址,可以使得第一缓存区中的多个数据包地址连续,提高了第一缓存区的利用率。
S202、数据发送端从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包。
具体确定过程可参考相关技术,本实施例再次不再赘述。
S203、所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,并据此执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址。
本实施例中,确定待发送给数据接收端的数据包后,可以将数据包在第一缓存区中的存储地址、目标存储地址以及RDMA写操作提交至第一RDMA网卡,以通过数据发送端的第一RDMA网卡提取数据包并发送至所述数据接收端的第二缓存区中。
可选地,本实施例中,为了更加方便第一缓存区以及第二缓存区的使用,所述第二缓存区为所述数据接收端通过第二RDMA网卡预先注册的缓存区,所述第二缓存区与所述第一缓存区大小相同。由此,可以将第一缓存区中数据包的存储地址,以及第二缓存区中数据包的存储地址进行相互验证,进一步保证了数据的准确性。
另外,当第一缓存区和第二缓存区大小相同时,数据包在第一缓存区的存储地址可直接作为数据包在第二缓存区的目标存储地址。
可选地,本实施例中,为了更好地明确是否将数据包写入第二缓存区中,便于本实施例提供的数据传输方案的应用,可以通过所述RDMA写操作的即时数据,标识所述数据包被存储至所述数据接收端的第二缓存区中。
RDMA写操作的即时数据(imm data)包括32位,可以在数据发送端的第一RDMA网卡执行RDMA写操作时添加,数据接收端的第二RDMA网卡接收到写操作对应的数据后,可以直接根据RDMA写操作的即时数据(imm data)中,用于标识提取数据包并发送至所述数据接收端的第二缓存区中的标识位的值,判断是否将通过RDMA写操作发送的数据零拷贝地写入第二缓存区中。
示例地,可以通过RDMA写操作的即时数据中的一位或多位进行标识。当通过RDMA写操作的即时数据中的一位进行标识时,当该标识位的值为0时,表示不将通过RDMA写操作发送的数据零拷贝地写入第二缓存区中;反之则写入。通过多位标识时,例如通过两位标识时,两个标识为分别用于指示将通过RDMA写操作发送的数据零拷贝地写入第二缓存区中或者写入其他缓存区中。
具体通过RDMA写操作的即时数据(imm data)标识提取数据包并发送至所述数据接收端的第二缓存区中的方案,本领域的技术人员可根据需求设置,本实施例对此不进行限定。
S204、所述数据接收端处理所述第二缓存区中的数据包,释放所述第二缓存区中理完成的数据包占用的存储空间,并发送指示数据包处理完成的响应消息至所述数据发送端。
本实施例中,数据接收端处理完某个数据包后,也可以释放所述第二缓存区中理完成的数据包占用的存储空间。
示例地,第二缓存区也可以通过第二开始指针rbegin和第二结束指针rend确定正在被处理的数据包的地址区域。当处理完某一数据包后,可以更新第二缓存区的第二开始指针rbegin,以释放被处理完的数据包在第二缓存区占用的存储空间。
可选地,本实施例中,所述数据接收端处理所述第二缓存区中的数据包,包括:根据待处理的数据包的包头,验证数据包的完整性;若验证通过,则将待处理的数据包在所述第二缓存区中占用的存储空间映射至的内存地址提交至所述数据接收端的应用程序,以通过所述数据接收端的应用程序处理数据包。由此,可以直接通过应用程序对第二缓存区中的数据包进行处理,提高了数据处理效率,也无需占用网卡buffer。
示例地,第二缓存区也可以通过第二开始指针rbegin和第二结束指针rend确定正在被处理的数据包的地址区域。当要开始处理数据包时,可以读取以第二结束指针rend为开始地址的数据包。一般情况下,数据包的开头为数据包的包头,则读取以第二结束指针rend为开始地址的数据包时,可以先读取到数据包的包头。
读取完数据包后,可以根据数据包的长度,更新第二结束指针rend至该数据包的结束位置,以继续根据第二结束指针rend读取下一数据包。
数据包的包头中存储有数据体的元数据、验证信息等,根据数据包的包头,对数据包是否收全进行验证。
具体地,所述数据包的包头中包括的分片编号以及所述数据包的长度;
对应的,所述根据待处理的数据包的包头,验证数据包的完整性,包括:
根据所述数据包的包头在所述第二缓存区中的存储地址,以及所述数据包的包头包括的所述数据包的长度,确定所述数据包的存储空间;
根据所述数据包的包头中包括的分片编号,验证确定的所述存储空间中分片的完整性。
具体地,当数据包包括多个分片时,数据包的包头中包括的分片的编号范围。
如验证通过,可以将数据包在所述第二缓存区中占用的存储空间映射至的内存地址提交至所述数据接收端的应用程序,以通过所述数据接收端的应用程序处理数据包。由此,数据接收端的应用程序可以直接从获取的内存地址处直接读取并使用数据包的数据。
可选地,本实施例中,为了重复利用第二缓存区中已提交内存地址的数据包对应的存储空间,可以为已提交内存地址的数据包在所述第二缓存区中占用的存储空间,重新映射内存地址。当新的数据包存储至重新映射内存的第二缓存区中占用的存储空间时,可以直接将数据包写入重新分配的内存。
S205、所述数据发送端接收所述数据接收端对某次用于发送数据包的发送消息进行响应的响应消息。
本实施例中,所述响应消息中可以包括发送的所述数据包在所述第二缓存区的存储地址,以及所述第二缓存区被释放的次数信息。
具体地,执行缓存释放操作后,可以更新第二缓存区的第二开始指针rbegin,响应消息中可以包括更新后的第二开始指针rbegin update=x。
另外,数据接收端还可以维护有释放次数Version ra,每执行一次缓存释放操作,Version ra的值加1。响应消息中可以包括更新后的Version ra的值y,作为第二缓存区被释放的次数信息。
S206、比较数据发送端对所述第一缓存区进行的缓存释放的次数与所述响应消息中包括的所述第二缓存区被释放的次数信息指示的次数。
若所述数据发送端对所述第一缓存区进行的缓存释放的次数小于所述响应消息中包括的所述第二缓存区被释放的次数信息指示的次数,则继续执行步骤S207。
本实施例中,数据接收端也可以维护有释放次数Version sa,每执行一次对第一缓存区的缓存释放操作,Version sa的值加1。
在接收到响应消息后,可以比较响应消息中的Version ra以及Version sa。若Version sa<Version ra,则执行步骤S207。
S207、所述数据发送端根据所述响应信息中包括的所述数据包在所述第二缓存区的存储地址,释放所述第一缓存区中对应的存储空间。
通过所述响应信息中包括的第二开始指针rbegin,更新第一缓存区的第一开始指针Sbegin,以释放所述第一缓存区中对应的存储空间。
另外,本申请实施例中,为了增强数据的安全性,还可以对第一缓存区进行回环操作。
具体地,由于是通过RDMA写操作进行数据传输,为了实现传输过程的零拷贝,在为数据包分配第一缓存区的存储空间时,需要为一个数据包分配连续的存储地址。
则若所述第一缓存区中末个数据包的结束地址与所述第一缓存区的结束地址之间的未分配区域的大小,小于待分配存储空间的数据包的大小,则从所述第一缓存区开始地址至第一个数据包的开始地址之间的未分配区域中,为所述数据包分配存储空间,以对所述第一缓存区进行回环操作。
示例地,参见图2B,在为数据包分配存储空间时,若第一缓存区中位于第一结束指针Rend之后的未分配区域的大小,小于待分配存储空间的数据包的大小,则从第一缓存区开始地址到一开始指针Sbegin之间的未分配区域中,为所述数据包分配存储空间,以对第一缓存区进行回环操作。
可选地,本实施例中,通过所述数据发送端的所述第一RDMA网卡,向所述数据接收端发送用于指示所述回环操作的信息,以使得所述数据接收端根据所述指示回环操作的信息,对所述第二缓存区进行回环操作。由此,可以使得第一缓存区与第二缓存区同步进行回环操作,进一步保证了数据的准确性。
示例地,数据接收端根据所述指示回环操作的信息对所述第二缓存区进行回环操作时,若读取至第二缓存区的最后一个数据包时,根据所回环操作的信息确定之后的存储空间中并未存储其他数据包,则可以跳转至第二缓存区的起始地址继续读取数据包。
具体地,本实施例中,用于指示所述回环操作的信息中可以包括所述数据发送端的回环次数信息以及所述第一缓存区中的已分配区域的结束地址信息。对应的,所述根据用于指示所述回环操作的信息,对所述第二缓存区进行回环操作,包括:
验证所述数据接收端当前的回环次数与所述回环次数信息指示的次数是否一致;
若相同,则确定处理完成的数据包在所述第二缓存区的存储地址,是否与所述结束地址信息指示的结束地址匹配;
若匹配,则对所述第二缓存区进行回环操作。
由此,通过回环次数信息指示的次数,可以保证第一缓存区和第二缓存区的回环次数一致;并通过第一缓存区中的已分配区域的结束地址信息,确定读取至第二缓存区中正确的存储地址后,再进行回环操作,以保证数据的准确性。
示例地,数据发送端在进行回环操作后,可以生成jump信息,通过jump信息指示第一缓存区中的已分配区域的结束地址信息m。数据发送端还可以维护有回环次数Versionsc,每对第一缓存区执行一次回环操作,Version sc的值加1。用于指示所述回环操作的信息中可以包括所述数据发送端的回环次数信息可以为更新后的Version sc的值n。
若所述数据接收端当前的回环次数大于所述回环次数信息指示的次数,则丢弃用于指示所述回环操作的信息;或者,若所述数据接收端当前的回环次数小于所述回环次数信息指示的次数,则排队保留用于指示所述回环操作的信息。由此,可以通过用于指示所述回环操作的信息,避免了回环操作的乱序,保证了数据的准确性。
另外,在数据传输过程中,还可能发生传输失败的的情况,为此,本实施例中,若所述数据发送端确定RDMA写操作失败,则所述数据发送端通过RDMA拷贝操作,将失败的RDMA写操作对应的数据包拷贝至所述数据接收端的所述第二RDMA网卡的缓存中。由此,可以将RDMA写操作失败的数据包重新发送至数据接收端,实现了数据的重传,保证了数据的完整性。
具体地,本实施例中,在执行RDMA拷贝操作时,所述数据发送端向所述数据接收端发送所述数据发送端当前的回环操作的次数信息,以使得所述数据接收端验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致;
若一致,则将所述数据包从所述第二RDMA网卡的缓存拷贝至所述第二缓存区中;
或者,若不一致,则丢弃所述数据包。
示例地,可以通过RDMA拷贝操作拷贝数据包A时,可以将数据包A作为RDMA拷贝操作的数据体,通过RDMA拷贝操作为其增加新的数据包头,并将数据发送端当前的回环操作的次数信息增加至新的数据包头中,生成新的数据包B。通过RDMA拷贝操作,将数据包B拷贝至数据接收端的第二RDMA网卡的buffer中。
然后通过第二RDMA网卡,根据数据包B的包头中携带的数据发送端当前的回环操作的次数信息,判断数据接收端验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致。若一致,则将作为数据包B的数据体的数据包A写入第二缓存区中。否则丢弃数据包A。
本实施例提供的方案,通过预先注册的第一缓存区以及第二缓存区,优化掉了通过RDMA写操作进行数据传输过程中,数据接收端注册用于存储数据包的存储空间的过程,至少节约了一次数据发送端与数据接收端一次RTT的握手开销,极大地提高了通过RDMA写操作进行数据传输时的传输性能;并通过对第一缓存区以及第二缓存区的回环次数的管理,保证了第一缓存区以及第二缓存区中存储数据的准确性。
实施例三
图3为本申请实施例三的一种数据传输装置的结构框图,如图所示,数据传输装置配置于数据发送端,数据传输装置包括:
第一确定模块301,用于从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;
提取模块302,用于根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,以及,基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址,其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;
释放模块303,用于在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
可选地,所述第二缓存区为所述数据接收端通过第二RDMA网卡预先注册的缓存区,所述第二缓存区与所述第一缓存区的大小相同。
可选地,所述装置还包括:
第二确定模块,用于根据待分配存储空间的数据包的长度以及所述第一缓存区中已分配区域的结束地址,确定为数据包分配的存储空间的结束地址,以将所述数据包存储至所述第一缓存区中。
可选地,所述装置还包括:
分配模块,用于若所述第一缓存区中末个数据包的结束地址与所述第一缓存区的结束地址之间的未分配区域的大小,小于待分配存储空间的数据包的大小,则从所述第一缓存区开始地址至第一个数据包的开始地址之间的未分配区域中,为所述数据包分配存储空间,以对所述第一缓存区进行回环操作。
可选地,所述装置还包括:
第二发送模块,用于通过所述数据发送端的所述第一RDMA网卡,向所述数据接收端发送用于指示所述回环操作的信息,以使得所述数据接收端根据所述指示回环操作的信息,对所述第二缓存区进行回环操作。
可选地,所述装置还包括:
第一拷贝模块,用于若所述数据发送端确定RDMA写操作失败,则所述数据发送端通过RDMA拷贝操作,将失败的RDMA写操作对应的数据包拷贝至所述数据接收端的所述第二RDMA网卡的缓存中。
可选地,所述装置还包括:
第三发送模块,用于向所述数据接收端发送所述数据发送端当前的回环操作的次数信息,以使得所述数据接收端验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致;
第二拷贝模块,用于在一致时,则将所述数据包从所述第二RDMA网卡的缓存拷贝至所述第二缓存区中;
或者,包括丢弃模块,用于在不一致时,则丢弃所述数据包。
可选地,所述装置还包括:
第一接收模块,用于接收所述数据接收端对某次用于发送数据包的发送消息进行响应的响应消息,其中,所述响应消息中包括发送的所述数据包在所述第二缓存区的存储地址,以及所述第二缓存区被释放的次数信息;
所述释放模块用于若所述数据发送端对所述第一缓存区进行的缓存释放的次数小于所述响应消息中包括的所述第二缓存区被释放的次数信息指示的次数,则所述数据发送端根据所述响应信息中包括的所述数据包在所述第二缓存区的存储地址,释放所述第一缓存区中对应的存储空间。
可选地,所述装置还包括:
第四发送模块,用于通过所述RDMA写操作的即时数据,标识提取数据包并发送至所述数据接收端的第二缓存区中。
实施例四
图4为本申请实施例四的一种数据传输装置的结构框图,数据传输装置配置在数据接收端,如图所示,其包括:
写入模块401,用于将数据发送端通过RDMA写操作发送的数据包写入第二缓存区中的目标存储地址,所述RDMA写操作基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行,所述目标存储地址由所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址确定,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到,其中,所述数据包占用所述第一缓存区中的部分存储空间;
第一发送模块402,用于处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端,以使所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
可选地,所述装置还包括:第二接收模块,用于接收所述数据发送端发出的用于指示所述数据发送端对所述第一缓存区进行回环操作的信息;
回环操作模块,用于根据用于指示所述回环操作的信息,对所述第二缓存区进行回环操作。
可选地,用于指示所述回环操作的信息中包括所述数据发送端的回环次数信息以及所述第一缓存区中的已分配区域的结束地址信息;
所述回环操作模块包括:回环次数验证模块,用于验证所述数据接收端当前的回环次数与所述回环次数信息指示的次数是否一致;
若一致,则通过地址匹配模块确定处理完成的数据包在所述第二缓存区的存储地址,是否与所述结束地址信息指示的结束地址匹配;若匹配,则对所述第二缓存区进行回环操作。
可选地,若所述数据接收端当前的回环次数大于所述回环次数信息指示的次数,则丢弃用于指示所述回环操作的信息;
或者,若所述数据接收端当前的回环次数小于所述回环次数信息指示的次数,则排队保留用于指示所述回环操作的信息。
可选地,所述装置还包括:第三接收模块,用于接收所述数据发送端通过RDMA拷贝操作发送的数据包,将并存储至所述第二RDMA网卡的缓存中,其中,所述数据发送端通过RDMA拷贝操作发送的数据包为所述失败的RDMA写操作对应的数据包。
可选地,所述装置还包括:回环次数获取模块,用于获取所述数据发送端发送的所述数据发送端当前的回环操作的次数信息;
回环次数验证模块,还用于验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致;
拷贝模块,用于若一致,则将所述数据包从所述第二RDMA网卡的缓存拷贝至所述第二缓存区中;或者,若不一致,则丢弃所述数据包。
可选地,所述装置还包括:第二缓存区释放模块,用于释放所述第二缓存区中理完成的数据包占用的存储空间。
可选地,处理模块包括:完整性验证模块,用于根据待处理的数据包的包头,验证数据包的完整性;若验证通过,则通过提交模块,将待处理的数据包在所述第二缓存区中占用的存储空间映射至的内存地址提交至所述数据接收端的应用程序,以通过所述数据接收端的应用程序处理数据包。
可选地,所述装置还包括:重映射模块,用于为已提交内存地址的数据包在所述第二缓存区中占用的存储空间,重新映射内存地址。
可选地,所述数据包的包头中包括的分片编号以及所述数据包的长度;
对应的,所述完整性验证模块包括:区域确定模块,用于根据所述数据包的包头在所述第二缓存区中的存储地址,以及所述数据包的包头包括的所述数据包的长度,确定所述数据包的存储空间;分片验证模块,用于根据所述数据包的包头中包括的分片编号,验证确定的所述存储空间中分片的完整性。
本申请实施例的数据传输装置用于实现前述多个方法实施例中相应的数据传输方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的数据传输装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
参照图5,示出了根据本申请实施例五的一种电子设备的结构示意图,本申请具体实施例并不对电子设备的具体实现做限定。
如图5所示,该电子设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:
处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。
通信接口504,用于与其它电子设备或服务器进行通信。
处理器502,用于执行程序510,具体可以执行上述数据传输方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。智能设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510中各步骤的具体实现可以参见上述数据传输方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
需要指出,根据实施的需要,可将本申请实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本申请实施例的目的。
上述根据本申请实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据传输方法。此外,当通用计算机访问用于实现在此示出的数据传输方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据传输方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例地单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。
以上实施方式仅用于说明本申请实施例,而并非对本申请实施例的限制,有关技术领域的普通技术人员,在不脱离本申请实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本申请实施例的范畴,本申请实施例的专利保护范围应由权利要求限定。
Claims (23)
1.一种数据传输方法,所述方法包括:
数据发送端从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;
所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;
基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址;
所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
2.根据权利要求1所述的方法,其中,所述第二缓存区为所述数据接收端通过第二RDMA网卡预先注册的缓存区,所述第二缓存区与所述第一缓存区的大小相同。
3.根据权利要求1所述的方法,其中,所述方法还包括:
所述数据发送端根据待分配存储空间的数据包的长度以及所述第一缓存区中已分配区域的结束地址,确定为数据包分配的存储空间的结束地址,以将所述数据包存储至所述第一缓存区中。
4.根据权利要求3所述的方法,其中,所述方法还包括:
若所述第一缓存区中末个数据包的结束地址与所述第一缓存区的结束地址之间的未分配区域的大小,小于待分配存储空间的数据包的大小,则从所述第一缓存区开始地址至第一个数据包的开始地址之间的未分配区域中,为所述数据包分配存储空间,以对所述第一缓存区进行回环操作。
5.根据权利要求4所述的方法,其中,所述方法还包括:
通过所述数据发送端的所述第一RDMA网卡,向所述数据接收端发送用于指示所述回环操作的信息,以使得所述数据接收端根据所述指示回环操作的信息,对所述第二缓存区进行回环操作。
6.根据权利要求4所述的方法,其中,所述方法还包括:
若所述数据发送端确定RDMA写操作失败,则所述数据发送端通过RDMA拷贝操作,将失败的RDMA写操作对应的数据包拷贝至所述数据接收端的所述第二RDMA网卡的缓存中。
7.根据权利要求6所述的方法,其中,所述方法还包括:
所述数据发送端向所述数据接收端发送所述数据发送端当前的回环操作的次数信息,以使得所述数据接收端验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致;
若一致,则将所述数据包从所述第二RDMA网卡的缓存拷贝至所述第二缓存区中;
或者,若不一致,则丢弃所述数据包。
8.根据权利要求1所述的方法,其中,所述方法还包括:
所述数据发送端接收所述数据接收端对某次用于发送数据包的发送消息进行响应的响应消息,其中,所述响应消息中包括发送的所述数据包在所述第二缓存区的存储地址,以及所述第二缓存区被释放的次数信息;
所述数据发送端释放所述数据包在所述第一缓存区中占用的存储空间,包括:
若所述数据发送端对所述第一缓存区进行的缓存释放的次数小于所述响应消息中包括的所述第二缓存区被释放的次数信息指示的次数,则所述数据发送端根据所述响应信息中包括的所述数据包在所述第二缓存区的存储地址,释放所述第一缓存区中对应的存储空间。
9.根据权利要求1所述的方法,其中,所述方法还包括:
通过所述RDMA写操作的即时数据,标识所述数据包被存储至所述数据接收端的第二缓存区中。
10.一种数据传输方法,所述方法包括:
数据接收端将数据发送端通过RDMA写操作发送的数据包写入第二缓存区中的目标存储地址,所述RDMA写操作基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行,所述目标存储地址由所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址确定,所述第二缓存区的地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到,其中,所述数据包占用所述第一缓存区中的部分存储空间;
所述数据接收端处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端,以使所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
11.根据权利要求10所述的方法,其中,所述方法还包括:
接收所述数据发送端发出的用于指示所述数据发送端对所述第一缓存区进行回环操作的信息;
根据用于指示所述回环操作的信息,对所述第二缓存区进行回环操作。
12.根据权利要求11所述的方法,其中,用于指示所述回环操作的信息中包括所述数据发送端的回环次数信息以及所述第一缓存区中的已分配区域的结束地址信息;
所述根据用于指示所述回环操作的信息,对所述第二缓存区进行回环操作,包括:
验证所述数据接收端当前的回环次数与所述回环次数信息指示的次数是否一致;
若一致,则确定处理完成的数据包在所述第二缓存区的存储地址,是否与所述结束地址信息指示的结束地址匹配;
若匹配,则对所述第二缓存区进行回环操作。
13.根据权利要求12所述的方法,其中,所述方法还包括:
若所述数据接收端当前的回环次数大于所述回环次数信息指示的次数,则丢弃用于指示所述回环操作的信息;
或者,若所述数据接收端当前的回环次数小于所述回环次数信息指示的次数,则排队保留用于指示所述回环操作的信息。
14.根据权利要求10所述的方法,其中,所述方法还包括:
接收所述数据发送端通过RDMA拷贝操作发送的数据包,并存储至所述第二RDMA网卡的缓存中,其中,所述数据发送端通过RDMA拷贝操作发送的数据包为所述失败的RDMA写操作对应的数据包。
15.根据权利要求14所述的方法,其中,所述方法还包括:
获取所述数据包携带的所述数据发送端发送所述数据包时的回环操作的次数信息;
验证对第二缓存区进行的回环操作的次数,与所述数据包中携带的回环操作的次数信息指示的次数是否一致;
若一致,则将所述数据包从所述第二RDMA网卡的缓存拷贝至所述第二缓存区中;
或者,若不一致,则丢弃所述数据包。
16.根据权利要求10所述的方法,其中,所述方法还包括:
所述数据接收端处理所述第二缓存区中的数据包,以及释放所述第二缓存区中理完成的数据包占用的存储空间。
17.根据权利要求10所述的方法,其中,所述数据接收端处理所述第二缓存区中的数据包,包括:
根据待处理的数据包的包头,验证数据包的完整性;
若验证通过,则将待处理的数据包在所述第二缓存区中占用的存储空间映射至的内存地址,提交至所述数据接收端的应用程序,以通过所述数据接收端的应用程序处理数据包。
18.根据权利要求17所述的方法,其中,所述方法还包括:为已提交内存地址的数据包在所述第二缓存区中占用的存储空间,重新映射内存地址。
19.根据权利要求17所述的方法,其中,所述数据包的包头中包括的分片编号以及所述数据包的长度;
对应的,所述根据待处理的数据包的包头,验证数据包的完整性,包括:
根据所述数据包的包头在所述第二缓存区中的存储地址,以及所述数据包的包头中包括的所述数据包的长度,确定所述数据包的存储空间;
根据所述数据包的包头中包括的分片编号,验证确定的所述存储空间中分片的完整性。
20.一种数据传输装置,所述装置包括:
第一确定模块,用于从第一RDMA网卡注册的第一缓存区中确定待发送给数据接收端的数据包,其中,所述数据包占用所述第一缓存区中的部分存储空间;
提取模块,用于根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址,确定所述数据包存储至所述第二缓存区的目标存储地址,以及,基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行RDMA写操作,以提取所述数据包并发送至所述数据接收端,使得所述数据包存储至第二缓存区中的所述目标存储地址,其中,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到;
释放模块,用于在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
21.一种数据传输装置,所述装置包括:
写入模块,用于将数据发送端通过RDMA写操作发送的数据包写入第二缓存区中的目标存储地址,所述RDMA写操作基于所述数据包在第一缓存区中的存储地址以及所述目标存储地址执行,所述目标存储地址由所述数据发送端根据所述数据包在第一缓存区中的存储地址以及预先获得的所述数据接收端的第二缓存区的存储地址确定,所述第二缓存区的存储地址通过所述数据发送端和所述数据接收端之间的一次握手交互得到,其中,所述数据包占用所述第一缓存区中的部分存储空间;
第一发送模块,用于处理所述第二缓存区中的数据包,并发送指示数据包处理完成的响应消息至所述数据发送端,以使所述数据发送端在确定所述数据包已被所述数据接收端处理完成后,释放所述数据包在所述第一缓存区中占用的存储空间。
22.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-9中任一项或者10-19中任一项所述的数据传输方法对应的操作。
23.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-9中任一项或者10-19中任一项所述的数据传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110164907.1A CN113422793B (zh) | 2021-02-05 | 2021-02-05 | 数据传输方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110164907.1A CN113422793B (zh) | 2021-02-05 | 2021-02-05 | 数据传输方法、装置、电子设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113422793A true CN113422793A (zh) | 2021-09-21 |
CN113422793B CN113422793B (zh) | 2024-06-21 |
Family
ID=77711805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110164907.1A Active CN113422793B (zh) | 2021-02-05 | 2021-02-05 | 数据传输方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113422793B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114024874A (zh) * | 2021-10-29 | 2022-02-08 | 浪潮商用机器有限公司 | 基于rdma的数据传输方法、装置、设备及存储介质 |
CN115442319A (zh) * | 2022-08-31 | 2022-12-06 | 北京天融信网络安全技术有限公司 | 数据传输方法、电子设备和计算机可读存储介质 |
CN117573043A (zh) * | 2024-01-17 | 2024-02-20 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、***、设备和介质 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及*** |
EP2611093A1 (en) * | 2011-12-21 | 2013-07-03 | Telefonaktiebolaget LM Ericsson (publ) | Technique for handling memory resources of a memory buffer |
CN103823721A (zh) * | 2014-02-26 | 2014-05-28 | 京信通信***(广州)有限公司 | 一种进程间通信的方法及设备 |
CN105302739A (zh) * | 2014-07-21 | 2016-02-03 | 深圳市中兴微电子技术有限公司 | 一种内存管理方法和装置 |
US20170155717A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Direct memory access for endpoint devices |
WO2017166298A1 (en) * | 2016-04-01 | 2017-10-05 | Nokia Technologies Oy | Method, apparatus and computer program product for data distribution |
CN107547508A (zh) * | 2017-06-29 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种报文发送、接收方法、装置及网络设备 |
CN108228476A (zh) * | 2017-12-22 | 2018-06-29 | 新华三技术有限公司 | 一种数据获取方法及装置 |
CN110419034A (zh) * | 2017-04-14 | 2019-11-05 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN110505112A (zh) * | 2019-07-09 | 2019-11-26 | 星融元数据技术(苏州)有限公司 | 一种网络性能监测方法、装置和存储介质 |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
US20200089649A1 (en) * | 2018-09-13 | 2020-03-19 | Microsoft Technology Licensing, Llc | Transport Protocol and Interface for Efficient Data Transfer Over RDMA Fabric |
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
CN111225042A (zh) * | 2019-12-27 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 数据传输的方法、装置、计算机设备以及存储介质 |
CN111400213A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视***技术有限公司 | 传输数据的方法、装置及*** |
US20200274832A1 (en) * | 2019-02-22 | 2020-08-27 | Microsoft Technology Licensing, Llc | Rdma transport with hardware integration and out of order placement |
US20200322466A1 (en) * | 2017-12-27 | 2020-10-08 | Huawei Technologies Co., Ltd. | Data Transmission Method and First Device |
-
2021
- 2021-02-05 CN CN202110164907.1A patent/CN113422793B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101409715A (zh) * | 2008-10-22 | 2009-04-15 | 中国科学院计算技术研究所 | 一种利用InfiniBand网络进行通信的方法及*** |
EP2611093A1 (en) * | 2011-12-21 | 2013-07-03 | Telefonaktiebolaget LM Ericsson (publ) | Technique for handling memory resources of a memory buffer |
CN103823721A (zh) * | 2014-02-26 | 2014-05-28 | 京信通信***(广州)有限公司 | 一种进程间通信的方法及设备 |
CN105302739A (zh) * | 2014-07-21 | 2016-02-03 | 深圳市中兴微电子技术有限公司 | 一种内存管理方法和装置 |
US20170155717A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Direct memory access for endpoint devices |
WO2017166298A1 (en) * | 2016-04-01 | 2017-10-05 | Nokia Technologies Oy | Method, apparatus and computer program product for data distribution |
CN110419034A (zh) * | 2017-04-14 | 2019-11-05 | 华为技术有限公司 | 一种数据访问方法及装置 |
CN107547508A (zh) * | 2017-06-29 | 2018-01-05 | 新华三信息安全技术有限公司 | 一种报文发送、接收方法、装置及网络设备 |
CN108228476A (zh) * | 2017-12-22 | 2018-06-29 | 新华三技术有限公司 | 一种数据获取方法及装置 |
US20200322466A1 (en) * | 2017-12-27 | 2020-10-08 | Huawei Technologies Co., Ltd. | Data Transmission Method and First Device |
CN110888827A (zh) * | 2018-09-10 | 2020-03-17 | 华为技术有限公司 | 数据传输方法、装置、设备及存储介质 |
US20200089649A1 (en) * | 2018-09-13 | 2020-03-19 | Microsoft Technology Licensing, Llc | Transport Protocol and Interface for Efficient Data Transfer Over RDMA Fabric |
CN110896406A (zh) * | 2018-09-13 | 2020-03-20 | 华为技术有限公司 | 数据存储方法、装置及服务器 |
US20200274832A1 (en) * | 2019-02-22 | 2020-08-27 | Microsoft Technology Licensing, Llc | Rdma transport with hardware integration and out of order placement |
CN110505112A (zh) * | 2019-07-09 | 2019-11-26 | 星融元数据技术(苏州)有限公司 | 一种网络性能监测方法、装置和存储介质 |
CN111400213A (zh) * | 2019-09-29 | 2020-07-10 | 杭州海康威视***技术有限公司 | 传输数据的方法、装置及*** |
CN111225042A (zh) * | 2019-12-27 | 2020-06-02 | 腾讯科技(深圳)有限公司 | 数据传输的方法、装置、计算机设备以及存储介质 |
Non-Patent Citations (3)
Title |
---|
刘路;张磊;曹继军;戴艺;: "基于动态连接的RDMA可靠传输协议设计", 计算机工程与科学, no. 08, 15 August 2012 (2012-08-15) * |
向敏;文成亮;王平;田力;: "基于IPv6的WIA-PA网络优化AODV路由算法", 仪器仪表学报, no. 12, 15 December 2015 (2015-12-15) * |
韩文炳;陈小刚;李顺芬;李大刚;陈诗雁;段有康;宋志棠;: "基于新型非易失内存的远程零拷贝文件***", 国防科技大学学报, no. 03, 28 June 2020 (2020-06-28) * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114024874A (zh) * | 2021-10-29 | 2022-02-08 | 浪潮商用机器有限公司 | 基于rdma的数据传输方法、装置、设备及存储介质 |
CN115442319A (zh) * | 2022-08-31 | 2022-12-06 | 北京天融信网络安全技术有限公司 | 数据传输方法、电子设备和计算机可读存储介质 |
CN115442319B (zh) * | 2022-08-31 | 2024-03-12 | 北京天融信网络安全技术有限公司 | 数据传输方法、电子设备和计算机可读存储介质 |
CN117573043A (zh) * | 2024-01-17 | 2024-02-20 | 济南浪潮数据技术有限公司 | 分布式存储数据的传输方法、装置、***、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113422793B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113422793B (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
US20200314181A1 (en) | Communication with accelerator via RDMA-based network adapter | |
JP4504977B2 (ja) | オフロードユニットを使用したtcp接続のためのデータ処理 | |
CN109690510B (zh) | 用于将数据分发到高性能计算网络和基于云的网络中的多个接收器的多播装置和方法 | |
CA2509404C (en) | Using direct memory access for performing database operations between two or more machines | |
CN109478171B (zh) | 提高openfabrics环境中的吞吐量 | |
WO2017032152A1 (zh) | 将数据写入存储设备的方法及存储设备 | |
CN113014662A (zh) | 数据处理方法及基于NVMe-oF协议的存储*** | |
CN113076281B (zh) | 一种Ceph内核客户端进行通信的方法、***、设备及介质 | |
US20160057068A1 (en) | System and method for transmitting data embedded into control information | |
US20220263869A1 (en) | Data validation for zero copy protocols | |
CN111404842B (zh) | 数据传输方法、装置及计算机存储介质 | |
CN116303173B (zh) | 减少rdma引擎片上缓存的方法、装置、***及芯片 | |
CN113238856A (zh) | 一种基于rdma的内存管理方法及装置 | |
CN113422792B (zh) | 数据传输方法、装置、电子设备及计算机存储介质 | |
EP2760178A1 (en) | Method, apparatus and system for obtaining object | |
CN113973091A (zh) | 一种报文处理方法、网络设备以及相关设备 | |
CN116032498A (zh) | 一种内存区域注册方法、装置及设备 | |
CN113904976A (zh) | 基于rdma用于有损网络的多路径数据传输方法和装置 | |
WO2017173844A1 (zh) | 一种目录读取的方法、装置及*** | |
US20170265103A1 (en) | Communication device, communication method, and non-transitory computer readable medium | |
CN111200594B (zh) | 接收数据的方法、装置、数据接收设备和存储介质 | |
CN117873920A (zh) | 一种rdma的内存翻译表应用方法及*** | |
CN108304214B (zh) | 一种立即数的完整性的校验方法及装置 | |
CN113422704A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058772 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |