CN113300818B - 数据传输系统及方法 - Google Patents
数据传输系统及方法 Download PDFInfo
- Publication number
- CN113300818B CN113300818B CN202110179976.XA CN202110179976A CN113300818B CN 113300818 B CN113300818 B CN 113300818B CN 202110179976 A CN202110179976 A CN 202110179976A CN 113300818 B CN113300818 B CN 113300818B
- Authority
- CN
- China
- Prior art keywords
- request
- completion
- transmission
- data
- operation code
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 404
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000001514 detection method Methods 0.000 claims abstract description 191
- 230000004044 response Effects 0.000 claims abstract description 104
- 238000012545 processing Methods 0.000 claims abstract description 93
- 239000000284 extract Substances 0.000 claims description 16
- 238000000605 extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 19
- 101100524346 Xenopus laevis req-a gene Proteins 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000001737 promoting effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1825—Adaptation of specific ARQ protocol parameters according to transmission conditions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0823—Errors, e.g. transmission errors
- H04L43/0829—Packet loss
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书提供数据传输系统及方法,其中数据传输系统包括:传输模块和处理模块;传输模块,被配置为接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测;在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;处理模块,被配置为从完成队列中提取完成请求,并对完成请求进行解析获得乱序检测结果;根据乱序检测结果确定目标传输请求对应的请求编号;基于请求编号生成重传响应请求,并发送至传输模块;传输模块,还被配置为向发送服务端发送重传响应请求,重传响应请求用于请求发送服务端重传目标传输请求对应的数据包。
Description
技术领域
本说明书涉及计算机技术领域,特别涉及数据传输系统及方法。
背景技术
随着互联网技术的发展,数据中心网络对数据传输的高效性越来越关注,在数据传输的过程中,丢包(packet drop)是传输过程中常见的一种现象;网络传输拥塞是引起的丢包率是主要原因之一,RDMA(Remote Direct Memory Access,远程直接数据存取)可靠连接RC(Reliable connection)由于Go-Back-N重传机制,实现可以在微弱的丢包率的情况下完成传输过程,但是该过程资源消耗大,且传输效率低;现有技术中,为了能够提高传输效率,通常是使用RDMA不可靠连接UC(Unreliable connection)为应用提供可容忍丢包的网络服务,但RDMA不可靠连接现有的机制面临丢包时,会在网络上静默处理,丢弃当前整个RDMA请求包含的所有数据包,并且此时为了能够保证数据的可靠传输,需要在软件上设计一层可靠机制来识别丢包和保证重传,而软件侦测请求是否丢失需要等待接收方收到下一个请求时才能够开始进行,导致出现重传开始慢,效率低以及耗费时间长等问题,因此亟需一种有效的方案以解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了一种数据传输系统。本说明书同时涉及两种数据传输方法,一种数据传输装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据传输系统,应用于接收服务端,包括:
传输模块和处理模块;
所述传输模块,被配置为接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
所述处理模块,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;根据所述乱序检测结果确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块;
所述传输模块,还被配置为向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
可选地,所述传输模块,进一步被配置为:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
可选地,所述传输模块,还被配置为:
在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
可选地,所述传输模块,还被配置为:
在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
相应的,所述处理模块,还被配置为:
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
可选地,所述传输模块,进一步被配置为:
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码,并基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
可选地,所述处理模块,进一步被配置为:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号,根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
可选地,所述处理模块,进一步被配置为:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号,并基于未收到的数据包对应的序列号生成所述重传响应请求;将所述重传响应请求发送至所述传输模块。
根据本说明书实施例的第二方面,提供了一种数据传输方法,应用于接收服务端,包括:
传输模块接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
处理模块从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;根据所述乱序检测结果确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块;
所述传输模块向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
根据本说明书实施例的第三方面,提供了一种数据传输方法,包括:
接收发送服务端针对目标传输请求提交的多个数据包;
提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
可选地,所述根据所述序列号对所述多个数据包进行乱序检测,包括:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;
根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
可选地,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
可选地,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
可选地,所述在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求,包括:
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码;
基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
可选地,所述根据所述乱序检测结果确定所述目标传输请求对应的请求编号,包括:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号;
根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
可选地,所述基于所述请求编号生成重传响应请求,发送至所述发送服务端,包括:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号;
基于未收到的数据包对应的序列号生成所述重传响应请求,并向所述发送服务端发送所述重传响应请求。
根据本说明书实施例的第四方面,提供了一种数据传输装置,包括:
接收模块,被配置为接收发送服务端针对目标传输请求提交的多个数据包;
检测模块,被配置为提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
添加模块,被配置为在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
提取模块,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
发送模块,被配置为根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
根据本说明书实施例的第五方面,提供了计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
接收发送服务端针对目标传输请求提交的多个数据包;
提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
根据本说明书实施例的第六方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述数据传输方法的步骤。
本说明书提供的数据传输系统,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
附图说明
图1是本说明书一实施例提供的一种重传数据包过程的示意图;
图2是本说明书一实施例提供的一种数据传输系统的结构示意图;
图3是本说明书一实施例提供的另一种重传数据包过程的示意图;
图4是本说明书一实施例提供的一种数据传输方法的流程图;
图5是本说明书一实施例提供的一种应用于数据包传输场景中的数据传输系统的结构示意图;
图6是本说明书一实施例提供的另一种数据传输方法的流程图;
图7是本说明书一实施例提供的一种数据传输装置的结构示意图;
图8是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
RDMA:(Remote Direct Memory Access,远程直接数据存取)为了解决网络传输中服务器端数据处理的延迟而产生;RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要用到多少计算机的处理功能;RDMA支持三种队列,发送队列(SQ,Send Queue)和接收队列(RQ,Receive Queue),完成队列(CQ,Completion Queue)。其中,发送队列和接收队列通常成对创建,被称为Queue Pairs(QP)。
CQ(Completion Queue):一个包含CQE的队列;CQE(Completion Queue Entry),CQ中的一个记录,它描述了已完成的WR的信息(状态,大小等);WR(Work Request),用户提交至WQ(工作队列)的一个请求;WQ(Work Queue),SQ或RQ中的一种;WQE(Work QueueElement),WQ中的一个元素。
RC(Reliable Connection,可靠连接):基于面向连接的QP传输服务,一个QP与另一个QP相关联,两者之间的信息传输是可靠的,具体体现在数据的正确性和顺序性。
UC(Unreliable connection,不可靠连接):基于面向连接的QP传输服务,一个QP与另一个QP相关联,两者之间的信息传输是不可靠的,具体体现在数据的非正确性、非顺序性和容忍丢包等。
Go-Back-N:RDMA的丢包重传机制,会重传从第一个丢弃的包开始所有的包;POD:数据中心部署单元;PSN(Package serial number):数据包的包序列号。
ACK(Acknowledge character):确认收到的包序列号,在数据通信中,接收站发给发送站的一种传输类控制字符;表示发来的数据已确认接收无误。
NAK(Negative Acknowledgment):确认未收到的包序列号,是一个用于数字通信中确认数据收到但是有小错误的信号;OOS:乱序。
在本说明书中,提供了一种数据传输系统,本说明书同时涉及两种数据传输方法,一种数据传输装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
实际应用中,为了适应数据中心POD大规模网络通信丢包的特点,使用RDMA不可靠连接(UC)为应用提供可容忍丢包的网络是一项更佳的选择,但是RDMA不可靠连接现有的技术在建立连接时,为两边的RDMA不可靠连接协商一对初始的发送PSN和接收PSN,接收方根据与发送方协商的PSN来决定是否在RDMA不可靠连接上接收下一个网络上传输的数据包,如果是则正常接收,接收完毕后在对应RDMA不可靠连接中产生一个完成队列元素CQE通知接收方应用收到了完整的数据。
否则丢弃该RDMA请求后所有的数据包(每个请求在数据包中具有起始标记和结束标记,用于表明数据包所对应的请求),并在接收方RDMA不可靠连接上更新PSN为下一个收到的请求PSN,不像对应的RDMA不可靠连接中产生任何完成或错误提醒,即不通知接收方应用;此时为了保证数据的可靠传输(数据的完整性),只能通过软件为每个RDMA不可靠连接维护一张表Tabl<req>,建立连接时在发送方和接收方协商一个初始的发送请求号SendSeq(属于发送方)和RecvSeq(属于接收方),并在每个RDMA请求req上打上请求序号Seq<req>,追踪每个RDMA请求req的可靠交付状态,并在接收方软件上检测每个收到的RDMA请求req包含的序列号Seq<req>是否为期望接收的下一个请求,然后做相应的软件ACK和NAK处理,发送方根据接收方反馈的ACK或NAK来选择性重传由于网络丢包引起丢弃的RDMA请求,从而保证端到端可靠的数据交付服务。
参见图1所示,然而可靠性机制要求发送方应用进程为每个RDMA不可靠连接维护一张表来重传丢弃的RDMA请求,在接收方应用进程为每个RDMA连接维护一个NRS(NextReqSeq)来侦测是否有请求丢失的情况。在发生请求丢失时(图1中的步骤1),接收方只能等待网卡丢弃当前所有的数据包,直到网卡收到下一个完整的RDMA请求并通知上层应用后(图1中步骤2和步骤3),接收方应用才能进入丢包检测和发送NAK反馈流程(图1中步骤4),重传需要等待很长的时间才能开始(图1中步骤5至步骤7),导致重传效率低;因此提高重传效率显着尤为重要。
本说明书提供的数据传输系统,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
图2示出了根据本说明书一实施例提供的一种数据传输系统200的结构示意图,数据传输系统200应用于接收服务端,包括传输模块220和处理模块240;
所述传输模块220,被配置为接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
所述处理模块240,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;根据所述乱序检测结果确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块220;
所述传输模块220,还被配置为向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
具体的,所述发送服务端具体是指数据中心可以进行数据传输的任意服务器,相应的,所述接收服务端具体是指与所述发送服务端具有网络传输关系的服务器,所述发送服务端和接收服务端在进行网络传输之前,将建立不可靠RDMA连接,实现在提高网络传输性能的同时可以容忍一定的丢包率;而在此过程中,为了能够保证网络传输性能的同时进一步提高传输可靠性,将在发送服务端和接收服务端同时创建具有关联关系的发送请求号和接收请求,实现在发送服务端向接收服务端发送数据包时,将以请求为响应进行数据包的传输,即在每个RDMA请求对应的起始数据包和末端数据包中添加该RDMA请求的标识,使得接收服务端可以得知当前阶段获取的数据包属于该RDMA请求,并且通过接收请求号可以该请求对应的数据包相关信息,如数量大小等。
若在接收该请求对应的数据包过程中发生丢包的情况,为了能够保证该请求对应的数据包完整性,接收服务端可以重新请求发送服务端发送该请求对应的数据包,此时接收服务端即可根据接收请求号确定该请求对应的请求编号,以得出应该获取那一个请求对应的数据包,并向发送服务端请求重新发送该请求编号对应的RDMA请求对应的数据包,发送服务端也可以根据请求编号确定需要重新发送的数据包,通过重新发送请求编号对应的RDMA请求的数据包即可完成重新补充数据包的操作,使得发送服务端可以重新发送完整的数据包,接收服务端可以向接收内存中写入完整的数据包。
基于此,所述传输模块220具体是指接收服务端中的接收方网卡,所述传输模块220为硬件模块,相应的,所述处理模块240具体是指接收服务端中的接收方应用,所述处理模块240为软件模块,需要说明的是,发送方应用也具有传输模块(发送方网卡)和处理模块(发送方应用);所述目标传输请求即为当前时刻所需要处理的请求,即需要针对目标传输请求的数据包进行传输(由发送服务端发送至到接收服务端进行存储);所述数据包具体是指需要由发送服务端中的发送内存写到接收服务端中接收内存的数据包;相应的,所述序列号具体是指每个数据包所具有的序号,该序号为连续且递增的,用于表示每个传输请求所对应数据包的个数和有序性;所述乱序检测具体是指检测目标传输请求对应的数据包是否发生丢包或者乱序的检测条件,所述完成队列(CQ)具体是指写入完成请求(CQE)的队列,用于将完成请求排序等待接收方应用进行处理。
进一步的,所述请求编号即为上述接收请求号,并且该请求号随着请求的增长而逐一增长,并且该请求编号是连续的,在所述发送服务端请求编号即为发送的传输请求所对应的编号,在所述接收服务端请求编号即为期望接收到的传输请求对应的编号;相应的,所述重传响应请求具体是指在发生丢包事件的情况下,接收服务端针对已经丢包的传输请求重新请求发送响应的数据包的请求。
参见图3所示,以所述数据传输方法应用于接收方为例,所述处理模块为接收方应用,所述传输模块为接收方网卡,对所述数据传输方法进行描述;在发送方向接收方发送目标传输请求的情况下,说明发送方需要向接收方应用的接收内存写入数据包,则发送方网卡向接收方网卡发送目标传输请求,并执行步骤1:发送目标传输请求对应的多个数据包(packet1,packet2……packetn),并且每个数据包中均包含目标传输请求标记req1;接收方网卡在接收到多个数据包后,为了能够对保证目标传输请求对应的数据包的完整性,将提取每个数据包对应的序列号PSN,确定数据包packet1对应PSN1,数据包packet2对应PSN2……数据包packetn对应PSNn。
基于此,为了能够提高发送方和接收方的网络传输效率,将根据序列号PSN1,PSN2……PSNn对目标传输请求对应的数据包进行乱序检测,在乱序检测结果为未通过的情况下,说明目标传输请求对应的多个数据包发生丢包的情况,此时将在完成队列CQ中添加包含乱序检测结果的完成请求CQE,并执行步骤2通知接收方应用,接收方应用将从完成队列中提取包含乱序检测结果的完成请求CQE,并根据乱序检测结果确定目标传输请求对应的请求编号Seq1<req>,此时执行步骤3接收方应用将生成NAK,请求发送方重新发送目标传输请求对应的多个数据包,同时为了能够保证数据传输效率,接收方网卡也同时执行步骤3,继续接收发送方网卡发送的下一个传输请求req2对应的多个数据包。
发送方网卡接收到NAK之后,将执行步骤4,即发送方网卡将向发送方应用反馈重传目标传输请求对应的多个数据包的请求,发送方应用通过核对维护的Tabl<req>表,确定需要重新传输请求编号为req1对应的数据包(packet1~packetn),此时执行步骤5发送方应用告知发送方网卡重新传输目标传输请求对应的多个数据包,最后执行步骤6发送方网卡将重新向接收方网卡发送目标传输请求对应的数据包(packet1~packetn),以针对目标传输请求重新发送数据包,保证接收方应用写入接收内存中的数据包是完整的,保证重传效率。
综上,在传输模块通过检测序列号的方式确定目标传输请求对应的数据包发生丢包的情况下,将及时向处理模块发送包含乱序检测结果的完成请求,使得处理模块可以及时了解丢包事件,并请求发送服务端重新针对目标传输请求对应的数据包进行重传,而在此过程中,传输模块将同时接收发送服务端针对下一传输请求发送的多个数据包,以节省请求重传数据包的请求时间,从而提高重传效率,保证接收服务端写入内存中的数据包的完整性。
进一步的,为了能够节省请求重传数据包的时间,所述传输模块220将根据序列号对多个数据包进行乱序检测,而在此过程中,为了能够保证乱序检测的准确性,将根据期望序列号和多个数据包对应的序列号完成乱序检测,本实施例中,所述传输模块220进一步被配置为:确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
具体的,所述期望序列号具体是指接收服务端预先存储的每个传输请求对应的数据包的编号,通过将接收到的数据包的序列号和期望序列号进行比对,可以确定发生丢包的情况,所述乱序检测具体是指检测数据包是否发生丢包的检测方式,所述检测结果即为发生丢包或未发生丢包。
基于此,在接收服务端的传输模块220接收到所述多个数据包之后,将提取每个数据包中包含的序列号,同时确定所述目标传输请求对应的期望序列号,此时将所述期望序列号和提取出的序列号进行比对,根据比对结果即可确定是否发生丢包的情况,若期望序列号和序列号完全一致,则说明未发生丢包,若期望序列号和序列号不一致,则说明发生丢包。
进一步的,在发生丢包的情况下,此时说明需要针对目标传输请求对应的多个数据包进行重传,同时由于是在RDMA不可靠连接下完成的数据包传输,因此需要对已经缓存在传输模块220中的数据包进行删除,本实施例中,所述传输模块220,还被配置为:在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
具体的,由于发送服务端和接收服务端针对目标传输请求传输的多个数据包发生丢包的情况,此时为了能够提高数据包的传输效率,将对已经传输完成的多个数据包进行删除,即从传输模块220的缓存中清楚目标传输请求传输完成的多个数据包,之后向发送服务端发送新的数据包传输请求,即请求发送服务端发送目标传输请求的下一个传输请求对应的数据包,从而实现无间断的进行数据包的传输,提高网络传输效率的同时,不影响后续针对目标传输请求的重传处理。
更进一步的,在未发生丢包的情况下,此时说明发送服务端针对目标传输请求传输的多个数据包是完整的,传输模块220即可根据传输完成的多个数据包生成完成请求添加到完成队列,以告知处理模块240可以针对目标传输请求对应的多个数据包进行存储,本实时流中,所述传输模块220,还被配置为:在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
相应的,所述处理模块240,还被配置为:从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
具体的,所述传输完成请求具体是指发送服务端向接收服务端针对目标传输请求发送的数据包发送完成后生成的请求,基于此,在检测结果为检测通过的情况下,说明发送服务端向接收服务端针对目标传输请求发送的多个数据包是完整的,此时接收服务端的传输模块220可以通知处理模块对多个数据包进行存储,即传输模块220将根据所述目标传输请求创建传输完成请求,并将所述传输完成请求写入到所述完成队列;所述处理模块240在开始处理传输完成请求时刻,将从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述传输模块220缓存中携带目标传输请求对应的标记的数据包写入接收内容,实现数据包的存储。
例如,接收方网卡接收到目标传输请求req1对应的多个数据包分别为packet1,packet2和packet4,确定数据包packet1对应的序列号为PSN1,数据包packet2对应的序列号为PSN2,数据包packet4对应的序列号为PSN4,而接收方网卡根据目标传输请求req1确定期望序列号为PSNs1,PSNs2,PSNs3和PSNs4,通过将提取的序列号和期望序列号进行比对,确定缺少序列号PSN3,说明发送方向接收方发送目标传输请求req1对应的多个数据包时,发生丢包(序列号PSN3对应的数据包packet3发生丢失),根据比对结果确定对目标传输请求req1对应的多个数据进行乱序检测的检测结果为发生丢包,此时即可删除接收方网卡已经缓存的数据包packet1,packet2和packet4,并请求发送方继续发送下一传输请求req2对应的数据包。
如果目标传输请求req1对应的多个数据包分别为packet1,packet2,packet3和packet4,确定数据包packet1对应的序列号为PSN1,数据包packet2对应的序列号为PSN2,数据包packet3对应的序列号为PSN3,数据包packet4对应的序列号为PSN4,而接收方网卡根据目标传输请求req1确定期望序列号为PSNs1,PSNs2,PSNs3和PSNs4,通过将提取的序列号和期望序列号进行比对,确定期望序列号和序列号一一对应,说明发送方向接收方发送目标传输请求req1对应的多个数据包时,未发生丢包,此时即可根据目标传输请求req1生成传输完成请求写入到完成队列,接收方应用在开始处理传输完成请求时,将从接收方网卡缓存中提取携带req1的数据包packet1,packet2,packet3和packet4,并将这四个数据包写入接收内容,实现针对目标传输请求req1的数据包存储操作。
综上,将期望序列号与序列号进行比对完成乱序检测,实现接收服务端可以通过传输模块精准对丢包事件进行检测,从而可以快速的响应于处理模块,提高后续重传目标传输请求对应的多个数据包的重传效率。
进一步的,在检测未通过的情况下,此时为了能够快速的响应处理模块240,以实现节省请求重传数据包的时间,将根据预设的乱序检测规则创建包含乱序操作码的完成请求,使得处理模块240在处理该请求时,可以直接通过传输模块220向发送服务端发送重传目标传输请求对应的数据包的请求,本实施例中,所述传输模块220,进一步被配置为:
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码,并基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
具体的,所述乱序操作码具体是指在发生丢包的情况下,可以用于生成添加到完成队列的完成请求,通过该完成请求可以告知处理模块240所述目标传输请求对应的数据包在发送时发生了丢包情况,使得处理模块240可以直接要求重传目标传输请求对应的多个数据包,避免浪费等待下一个传输请求的数据包传输完成之后才能够进行重传响应所花费的时间;基于此,在确定目标传输请求对应的多个数据包发生丢包后,此时即可根据所述乱序检测规则创建乱序操作码,同时具有乱序操作码创建完成请求,并将包含所述乱序操作码的完成请求添加至所述完成队列,使得所述处理模块240在处理完成队列中的完成请求时,可以及时处理到包含乱序操作码的完成请求,进而提高了重传响应的效率,节省重传响应时间。
进一步的,当包含乱序操作码的完成请求写入到完成队列之后,处理模块240将在处理该完成请求时,发现乱序操作码,此时处理模块240得知目标传输请求对应的多个数据包发生丢包,则需要重新向发送服务端请求重传目标传输请求对应的数据包,本实施例中,所述处理模块240,进一步被配置为:对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号,根据所述期望请求编号确定所述目标传输请求对应的所述请求编号;根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号,并基于未收到的数据包对应的序列号生成所述重传响应请求;将所述重传响应请求发送至所述传输模块。
具体的,所述请求编号表具体是指处理模块预先维护的一张记录请求编号的数据表,通过该数据表可以确定每个传输请求对应的编号,所述期望请求编号具体是指当前阶段期望收到的传输请求对应的编号,即期望收到的目标传输请求所对应的编号。
基于此,在处理模块240开始处理包含乱序操作码的完成请求时刻,将从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序操作码,此时处理模块240根据所述乱序操作码查询所述预设的请求编号,即可确定所述目标传输请求对应的期望请求编号,即确定期望收到的传输请求对应的编号,同时根据该请求编号可以确定接收到的数据包对应的全部序列号,并结合所述乱序操作码确定针对所述目标传输请求未收到的数据包对应的序列号,最后基于未收到的数据包对应的序列号生成所述重传响应请求即可,将所述重传响应请求发送至所述传输模块220,由传输模块220件所述重传响应请求发送至所述发送服务端,以提醒所述发送服务端针对所述目标传输请求重新发送数据包,完成数据包的重传操作。
沿用上例,在确定丢包的情况下,此时将产生包含OOS错误信息的完整请求CQE,并写到完成队列中;当接收方应用开始处理包含OOS错误信息的完成请求CQE的情况下,可以根据OOS错误信息查询预设的请求编号表确定期望请求编号是req1,同时根据OOS错误信息和请求编号req1确定未收到的数据包对应的序列号为PSN3,最后基于序列号PSN3和请求编号req1即可生成重传响应请求NAK,并通过接收方网卡将重传响应请求发送至发送方网卡,告知发送方网卡需要针对目标传输请求重新发送数据包packet1,packet2,packet3和packet4;发送方应用在不可靠RDMA连接上收到接收方应用传输过来的NAK响应后,解析出响应里包含的请求编号req1,即可确定需要针对目标传输请求req1对应的数据包packet1,packet2,packet3和packet4进行重传,并针对packet1,packet2,packet3和packet4。进行重传即可。
此外,为了提高重传效率,发送服务端也将维护一张Tabl<Seq>表,实现在解析重传响应请求后,可以根据重传响应请求中包含的请求编号确定需要重新传输的请求对应的数据包,从而提高发送服务端和接收服务端重传数据包的效率。
本说明书提供的数据传输系统,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
与上述系统实施例相对应,本说明书还提供了数据传输方法实施例,应用于接收服务端,图4示出了根据本说明书一实施例提供的一种数据传输方法的处理流程图,具体包括以下步骤:
步骤S402,传输模块接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
步骤S404,处理模块从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;根据所述乱序检测结果确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块;
步骤S406,所述传输模块向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
一个可选的实施例中,所述传输模块确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
一个可选的实施例中,所述传输模块在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
一个可选的实施例中,所述传输模块在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
相应的,所述处理模块从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
一个可选的实施例中,所述传输模块在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码,并基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
一个可选的实施例中,所述处理模块对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号,根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
一个可选的实施例中,所述处理模块根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号,并基于未收到的数据包对应的序列号生成所述重传响应请求;将所述重传响应请求发送至所述传输模块。
本说明书提供的数据传输方法,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
上述为本实施例的一种数据传输系统的示意性方案。需要说明的是,该数据传输方法的技术方案与上述的数据传输系统的技术方案属于同一构思,数据传输方法的技术方案未详细描述的细节内容,均可以参见上述数据传输系统的技术方案的描述。
下述结合附图5,以本说明书提供的数据传输系统在数据包传输场景中的应用为例,对所述数据传输系统进行进一步说明。其中,图5示出了本说明书一实施例提供的一种应用于数据包传输场景中的数据传输系统的结构示意图,该系统包括发送方应用,发送方网卡,接收方应用和接收方网卡,具体包括以下步骤:
步骤S502,发送方应用向发送方网卡发送目标传输请求。
步骤S504,发送方网卡接收目标传输请求,并根据目标传输请求向接收方网卡发送多个数据包。
步骤S506,接收方网卡接收目标传输请求对应的多个数据包,并提取每个数据包中包含的序列号。
步骤S508,接收方网卡确定目标传输请求对应的期望序列号,并将期望序列号和序列号对多个数据包进行乱序检测。
步骤S510,接收方网卡在乱序检测结果未通过的情况下,接收方网卡将产生包含OOS错误信息的CQE,并写入到完成队列。
步骤S512,接收方网卡从缓存中删除多个数据包。
需要说明的是,步骤S510和步骤S512同时进行,即在乱序检测结果未通过的情况下,将在生成包含OOS错误信息的CQE的同时删除目标传输请求对应的多个数据包。
步骤S514,接收方应用从完成队列中提取CQE。
步骤S516,接收方应用对CQE进行解析获得OOS错误信息。
步骤S518,接收方应用根据OOS错误信息和期望请求编号生成NAK响应。
步骤S520,接收方应用将NAK响应发送至接收方网卡。
步骤S522,接收方网卡接收NAK响应,并将NAK响应发送至发送方网卡。
步骤S524,发送方网卡接收NAK响应,并将NAK响应发送至发送方应用。
步骤S526,发送方应用接收NAK响应,并对NAK响应进行解析获得期望请求编号。
步骤S528,发送方应用根据期望请求编号生成重传目标传输请求对应的数据包的重传请求,并发送至发送方网卡。
步骤S530,发送方网卡接收重传请求,并根据重传请求将目标传输请求对应的多个数据包发送至接收方网卡。
步骤S532,接收方网卡接收多个数据包,并确定多个数据包是完整的,将向完成队列中添加传输完成请求。
步骤S534,接收方应用从完成队列中提取传输完成请求。
步骤S536,接收方应用将多个数据包写入到接收方内存。
综上所述,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
本说明书还提供另一种数据传输方法的实施例,图6示出了本说明书一实施例提供的另一种数据传输方法的处理流程图,如图6所述,具体包括以下步骤:
步骤S602,接收发送服务端针对目标传输请求提交的多个数据包;
步骤S604,提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
步骤S606,在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
步骤S608,从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
步骤S610,根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
一个可选的实施例中,所述根据所述序列号对所述多个数据包进行乱序检测,包括:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;
根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
一个可选的实施例中,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
一个可选的实施例中,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
一个可选的实施例中,所述在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求,包括:
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码;
基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
一个可选的实施例中,所述根据所述乱序检测结果确定所述目标传输请求对应的请求编号,包括:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号;
根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
一个可选的实施例中,所述基于所述请求编号生成重传响应请求,发送至所述发送服务端,包括:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号;
基于未收到的数据包对应的序列号生成所述重传响应请求,并向所述发送服务端发送所述重传响应请求。
综上数据,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
与上述方法实施例相对应,本说明书还提供了数据传输装置实施例,图7示出了本说明书一实施例提供的一种数据传输装置的结构示意图。如图7所示,该装置包括:
接收模块702,被配置为接收发送服务端针对目标传输请求提交的多个数据包;
检测模块704,被配置为提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
添加模块706,被配置为在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
提取模块708,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
发送模块710,被配置为根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
一个可选的实施例中,所述检测模块704进一步被配置为:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
一个可选的实施例中,所述数据传输装置,还包括:
删除模块,被配置为在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
一个可选的实施例中,所述数据传输装置,还包括:
写入模块,被配置为额在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
一个可选的实施例中,所述添加模块706进一步被配置为:
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码;基于所述乱序操作码创建所述完成请求,向所述完成队列中添加包含所述乱序操作码的所述完成请求。
一个可选的实施例中,所述发送模块710进一步被配置为:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询所述预设的请求编号表确定期望请求编号;根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
一个可选的实施例中,所述发送模块710进一步被配置为:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号;基于未收到的数据包对应的序列号生成所述重传响应请求,并向所述发送服务端发送所述重传响应请求。
本说明书提供的数据传输装置,在接收到发送服务端针对目标传输请求提交的多个数据包后,将提取每个数据包中包含的序列号,并根据序列号对多个数据包进行乱序检测,在检测未通过的情况下,向完成队列中添加包含乱序检测结果的完成请求,实现在发现丢包的同时直接通知处理模块,以缩短处理模块获知丢包情况的时间;之后处理模块会根据处理顺序从完成队列中提取包含乱序检测结果的完成请求,并基于乱序检测结果确定目标传输请求对应的请求编号,基于该请求编号生成重传响应请求,使得通过所述重传响应请求向所述发送服务端重新请求发送所述目标传输请求对应的数据包,从而保证在针对目标传输请求的数据包重新传输完整的情况下,可以将重传数据包的时间提前,进而促进接收服务端处理数据包的处理效率。
上述为本实施例的一种数据传输装置的示意性方案。需要说明的是,该数据传输装置的技术方案与上述的另一种数据传输方法的技术方案属于同一构思,数据传输装置的技术方案未详细描述的细节内容,均可以参见上述数据传输方法的技术方案的描述。
图8示出了根据本说明书一实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
其中,处理器820用于执行如下计算机可执行指令:
接收发送服务端针对目标传输请求提交的多个数据包;
提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的另一种数据传输方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述另一种数据传输方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
接收发送服务端针对目标传输请求提交的多个数据包;
提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
在检测未通过的情况下,向完成队列添加包含乱序检测结果的完成请求;
从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序检测结果;
根据所述乱序检测结果确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的另一种数据传输方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述另一种数据传输方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (16)
1.一种数据传输系统,应用于接收服务端,包括:
传输模块和处理模块;
所述传输模块,被配置为接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码,并基于所述乱序操作码创建完成请求,向完成队列中添加包含所述乱序操作码的所述完成请求;
所述处理模块,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序操作码;根据所述乱序操作码确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块;
所述传输模块,还被配置为向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
2.根据权利要求1所述的数据传输系统,所述传输模块,进一步被配置为:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
3.根据权利要求2所述的数据传输系统,所述传输模块,还被配置为:
在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
4.根据权利要求2所述的数据传输系统,所述传输模块,还被配置为:
在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
相应的,所述处理模块,还被配置为:
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
5.根据权利要求1所述的数据传输系统,所述处理模块,进一步被配置为:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询预设的请求编号表确定期望请求编号,根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
6.根据权利要求5所述的数据传输系统,所述处理模块,进一步被配置为:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号,并基于未收到的数据包对应的序列号生成所述重传响应请求;将所述重传响应请求发送至所述传输模块。
7.一种数据传输方法,应用于接收服务端,包括:
传输模块接收发送服务端针对目标传输请求提交的多个数据包;提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码,并基于所述乱序操作码创建完成请求,向完成队列中添加包含所述乱序操作码的所述完成请求;
处理模块从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序操作码;根据所述乱序操作码确定所述目标传输请求对应的请求编号;基于所述请求编号生成重传响应请求,并发送至所述传输模块;
所述传输模块向所述发送服务端发送所述重传响应请求,所述重传响应请求用于请求所述发送服务端重传所述目标传输请求对应的数据包。
8.一种数据传输方法,包括:
接收发送服务端针对目标传输请求提交的多个数据包;
提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码;
基于所述乱序操作码创建完成请求,向完成队列中添加包含所述乱序操作码的所述完成请求;
从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序操作码;
根据所述乱序操作码确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
9.根据权利要求8所述的数据传输方法,所述根据所述序列号对所述多个数据包进行乱序检测,包括:
确定与所述目标传输请求对应的期望序列号,并将所述期望序列号与所述序列号进行比对;
根据比对结果确定对所述多个数据包进行乱序检测的检测结果。
10.根据权利要求9所述的数据传输方法,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为未检测通过的情况下,删除所述多个数据包,并向所述发送服务端发送数据包传输请求;所述数据包传输请求用于向所述发送服务端请求所述目标传输请求的下一传输请求对应的数据包。
11.根据权利要求9所述的数据传输方法,所述根据所述序列号对所述多个数据包进行乱序检测步骤执行之后,还包括:
在检测结果为检测通过的情况下,根据所述目标传输请求生成传输完成请求,并向所述完成队列添加所述传输完成请求;
从所述完成队列中提取所述传输完成请求,并根据所述传输完成请求将所述多个数据包写入接收内存。
12.根据权利要求11所述的数据传输方法,所述根据所述乱序操作码确定所述目标传输请求对应的请求编号,包括:
对所述完成请求进行解析获得所述乱序操作码,并基于所述乱序操作码查询预设的请求编号表确定期望请求编号;
根据所述期望请求编号确定所述目标传输请求对应的所述请求编号。
13.根据权利要求12所述的数据传输方法,所述基于所述请求编号生成重传响应请求,发送至所述发送服务端,包括:
根据所述请求编号以及所述乱序操作码确定未收到的数据包对应的序列号;
基于未收到的数据包对应的序列号生成所述重传响应请求,并向所述发送服务端发送所述重传响应请求。
14.一种数据传输装置,包括:
接收模块,被配置为接收发送服务端针对目标传输请求提交的多个数据包;
检测模块,被配置为提取每个数据包中包含的序列号,并根据所述序列号对所述多个数据包进行乱序检测;
添加模块,被配置为在检测未通过的情况下,根据预设的乱序检测规则创建乱序操作码;基于所述乱序操作码创建完成请求,向完成队列中添加包含所述乱序操作码的所述完成请求;
提取模块,被配置为从所述完成队列中提取所述完成请求,并对所述完成请求进行解析获得所述乱序操作码;
发送模块,被配置为根据所述乱序操作码确定所述目标传输请求对应的请求编号,并基于所述请求编号生成重传响应请求,发送至所述发送服务端。
15.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现权利要求7所述数据传输方法的步骤或实现权利要求8至13任意一项所述数据传输方法的步骤。
16.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求7所述数据传输方法的步骤或实现权利要求8至13任意一项所述数据传输方法的步骤。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110179976.XA CN113300818B (zh) | 2021-02-08 | 2021-02-08 | 数据传输系统及方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110179976.XA CN113300818B (zh) | 2021-02-08 | 2021-02-08 | 数据传输系统及方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN113300818A CN113300818A (zh) | 2021-08-24 |
| CN113300818B true CN113300818B (zh) | 2023-04-28 |
Family
ID=77319004
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202110179976.XA Active CN113300818B (zh) | 2021-02-08 | 2021-02-08 | 数据传输系统及方法 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113300818B (zh) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114221918B (zh) * | 2022-02-22 | 2022-05-20 | 南京大学 | 一种rdma网络rc通信模式的数据流长尾优化方法 |
| CN115982090B (zh) * | 2023-03-17 | 2023-06-23 | 珠海星云智联科技有限公司 | 软硬件协同实现远端内存访问的方法和装置 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107979449A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种数据传输方法及装置 |
| CN110557677A (zh) * | 2019-09-27 | 2019-12-10 | 北京西山居互动娱乐科技有限公司 | 一种视频传输的方法及装置 |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2004192179A (ja) * | 2002-12-10 | 2004-07-08 | Fujitsu Ltd | Rdma機能を持ったnicをハードウェアメモリ保護を行わないで、専用のモニタプロセスなしにシステムに組み込むための装置 |
| CN101009537A (zh) * | 2006-01-26 | 2007-08-01 | 华为技术有限公司 | 一种数据重传方法及系统 |
| CN101068170A (zh) * | 2007-06-05 | 2007-11-07 | 华为技术有限公司 | 一种报文接收异常的检测方法、系统及其装置 |
| CN104065465B (zh) * | 2014-06-06 | 2018-03-16 | 华为技术有限公司 | 一种报文重传的方法、请求端、响应端以及系统 |
| CN104270287B (zh) * | 2014-09-30 | 2018-04-27 | 北京华为数字技术有限公司 | 一种报文乱序检测方法及装置 |
| CN106330930A (zh) * | 2016-08-29 | 2017-01-11 | 烽火通信科技股份有限公司 | 基于流媒体丢包二次重传系统及其方法 |
| CN111786748B (zh) * | 2019-08-29 | 2023-05-30 | 北京京东尚科信息技术有限公司 | 数据重传方法和系统、网卡、装置、服务器和存储介质 |
| CN111711566B (zh) * | 2020-07-03 | 2021-07-27 | 西安电子科技大学 | 多路径路由场景下的接收端乱序重排方法 |
-
2021
- 2021-02-08 CN CN202110179976.XA patent/CN113300818B/zh active Active
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107979449A (zh) * | 2016-10-25 | 2018-05-01 | 杭州海康威视数字技术股份有限公司 | 一种数据传输方法及装置 |
| CN110557677A (zh) * | 2019-09-27 | 2019-12-10 | 北京西山居互动娱乐科技有限公司 | 一种视频传输的方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN113300818A (zh) | 2021-08-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN110460412B (zh) | 用于数据传输的方法和rdma网卡 | |
| CN110061816B (zh) | 一种移动通信系统、网络设备、终端设备和数据调度方法 | |
| US8675474B2 (en) | Method and system for handling error in LPP messages exchange | |
| CN113765976B (zh) | 一种通信方法和系统 | |
| CN103141050B (zh) | 快速通道互联系统中数据包重传方法、节点 | |
| CN113300818B (zh) | 数据传输系统及方法 | |
| CN103188059A (zh) | 快速通道互联系统中数据包重传方法、装置和系统 | |
| KR101751051B1 (ko) | 통신 네트워크에서 관리 메시지 송수신을 위한 방법 및 장치 | |
| CN106470497B (zh) | 一种数据传输方法、无线链路控制发送及接收实体 | |
| CN103546258A (zh) | 一种数据传输方法及装置 | |
| WO2022083371A1 (zh) | 一种数据传输方法和装置 | |
| CN102685143B (zh) | 音频数据的传输方法以及客户端、服务器 | |
| CN101601219A (zh) | 用于改进的重传的方法和设备 | |
| EP2589176B1 (en) | Methods and devices for performing an automatic repeat request reset in a wireless communication environment | |
| CN114039702B (zh) | 数据传输方法、装置、设备和介质 | |
| CN113300874B (zh) | 网络性能检测系统及方法 | |
| US10476919B2 (en) | System and method for reliable messaging between application sessions across volatile networking conditions | |
| CN102013948A (zh) | 一种指示方法及用户设备 | |
| HK40058641A (zh) | 数据传输系统及方法 | |
| WO2022056791A1 (zh) | 一种报文重传方法和装置 | |
| US8705425B2 (en) | Wireless receiving apparatus and transmitting apparatus having a sleep control unit | |
| CN113300967B (zh) | Rdma网络传输方法、装置以及rdma网络通信系统 | |
| CN115211226A (zh) | 通信方法和通信装置 | |
| CN119512996B (zh) | 一种远程直接存储器访问设备及方法 | |
| CN111541736A (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: 40058641 Country of ref document: HK |
|
| GR01 | Patent grant | ||
| GR01 | Patent grant |