CN114584560B - 一种分片帧重组方法及装置 - Google Patents

一种分片帧重组方法及装置 Download PDF

Info

Publication number
CN114584560B
CN114584560B CN202210238806.9A CN202210238806A CN114584560B CN 114584560 B CN114584560 B CN 114584560B CN 202210238806 A CN202210238806 A CN 202210238806A CN 114584560 B CN114584560 B CN 114584560B
Authority
CN
China
Prior art keywords
data packet
fragments
original data
frame
data frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210238806.9A
Other languages
English (en)
Other versions
CN114584560A (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.)
Southwest University of Science and Technology
Original Assignee
Southwest University of Science and Technology
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 Southwest University of Science and Technology filed Critical Southwest University of Science and Technology
Priority to CN202210238806.9A priority Critical patent/CN114584560B/zh
Publication of CN114584560A publication Critical patent/CN114584560A/zh
Application granted granted Critical
Publication of CN114584560B publication Critical patent/CN114584560B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/163In-band adaptation of TCP data exchange; In-band control procedures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开一种分片帧重组方法及装置,该方法包括:接收第一数据帧,并确定所述第一数据帧是否为分片,该分片为第一原始数据包的部分;若第一数据帧为分片,且第一数据帧不是首个分片,根据第一数据帧的分片序号以及分片序号与地址空间的对应关系将第一数据帧存储在第一地址空间,确定属于第一原始数据包的多个分片完成重组,输出第一原始数据包。本申请中,用于存储原始数据包的空间地址与原始数据包包括的分片一一对应,从而可根据该分片的序号将分片存储在对应的空间地址。这样存储分片的过程中就已经实现了对各个分片的排序,相较于传统方法,即先存储分片再排序、重组来说,无需重新排序,提高了重组效率,能够支持并发重组量更多的传输。

Description

一种分片帧重组方法及装置
技术领域
本申请涉及网络传输技术领域,尤其涉及一种分片帧重组方法及装置。
背景技术
在网络中,发送端和接收端之间通常需要进行信息交互。例如,在卫星通信网络中,发送端和接收端之间可能需要传输测绘信息。但是由于网络最大传输单元(maximumtransmission unit,MTU)的限制,发送端一次不能传输较大的数据包。因此,发送端可以将原始数据包划分为多个分片发送给接收端。接收端接收到多个分片,可以判断哪些分片来自同一个数据包,并对来自同一个数据包的多个分片重组,从而恢复出发送端发送的原始数据包。
在可能的场景中,需要并行发送多个原始数据包,对于接收端来说,需要重组更多个子数据包。然而传统的分片重组方法支持的并发重组帧较少,要么重组效率较低,对于并发量较高的数据传输并不适用。
发明内容
本申请提供一种分片帧重组方法及通信装置,可提高重组效率,支持更多数量的并发重组帧,从而适用于并发量较高的数据传输。
第一方面,提供一种分片帧重组方法,该方法的执行主体为可编程逻辑器件(field programmable gate array,FPGA),该方法包括:接收第一数据帧,并确定所述第一数据帧是否为分片,该分片为第一原始数据包的部分;若第一数据帧为分片,且第一数据帧不是首个分片,根据第一数据帧的分片序号以及分片序号与地址空间的对应关系将第一数据帧存储在第一地址空间,确定属于所述第一原始数据包的多个分片完成重组,输出第一原始数据包。
本申请实施例中,可根据原始数据包划分的分片数量将用于存储原始数据包的空间地址进行划分,例如,原始数据包包括N个分片,可将用于存储原始数据包的空间地址划分为N份。一个分片对应一个空间地址。从而在确定所接收的第一数据帧属于第一原始数据包的一个分片时,可根据该分片的序号,将第一数据帧存储在对应的空间地址。由于分片序号与空间地址对应,可认为,存储第一原始数据包的分片过程就已经实现了对各个分片的排序,从而确定第一原始数据包的多个分片重组完成,即存储完成时,可以输出第一原始数据包。由于存储第一原始数据包的分片过程就已经实现了对各个分片的排序,相较于传统的重组方法,即接收多个分片之后,解析多个分片,再对多个分片排序,排序之后再重组来说,无需重新排序,提高了重组效率,能够支持并发重组量更多的数据传输。
在可能的实现方式中,所述方法还包括:根据第一原始数据包划分分片的最大个数以及分片的最大长度,将用于存储第一原始数据包的地址空间划分为多个地址空间。其中,多个地址空间与第一原始数据包划分的分片一一对应,且多个地址空间和第一原始数据包包括的分片的序号具有对应关系。
在可能的实现方式中,所述方法还包括:将第一数据帧的特征信息与m个数据块进行匹配,确定第一数据帧属于匹配成功的分片属于的原始数据包。该m个数据块是由n个分片划分的,每个数据块包括的分片个数相同,n为并发重组分片的数量。该方案中,可将一段时间内支持的并发重组分片的特征信息划分为多个数据块,例如划分为m个数据块。这样在确定第一数据帧是否属于第一原始数据包时,可同时与m个数据块中的特征信息进行匹配,相较于依次与n个特征信息进行匹配来说,可降低匹配时间,从而提高匹配效率,进而提高重组效率。
在可能的实现方式中,m是根据匹配效率和存储资源确定。可以理解的是,m越大,每个数据块包括的特征信息越少,匹配时间越少。但是m越大,需要占用的存储资源越多,因此,本申请实施例可根据匹配效率和存储资源确定m,从而在提高匹配效率的同时,提高存储资源的利用率。
在可能的实现方式中,在将第一数据帧的特征信息与m个数据块进行匹配之前,所述方法还包括:为每个数据块预设寄存器组,对预设的寄存器组内最近存储的特征信息进行移位寄存,所述寄存器组用于存储分片的特征信息。可以理解的是,通常属于同一原始数据包的多个分片到达接收端的时间间隔较小,那么按序存储的这多个分片的特征信息距离也较近。为了进一步降低匹配时间,该方案中,为每个数据块预设寄存器组,将该寄存器内的最近存储的特征信息进行移位寄存。接收端接收第一数据帧之后,可优先与该寄存器内的特征信息进行匹配,相较于与m个数据块包括的特征信息分别匹配来说,可减少匹配时间,从而提高重组效率。
在可能的实现方式中,输出第一原始数据包,包括:确定第一原始数据包包括的多个分片在对应地址空间的实际存储地址;按照分片的序号从小到大依次读取各个分片对应的实际存储地址上的数据,并输出。可以理解的是,为每个分片事先划分的地址空间可能大于分片实际占用的存储地址,因此,在输出第一原始数据包时,需要确定各个分片的实际存储地址,以避免重组第一数据包失败。
在可能的实现方式中,所述方法还包括:在输出第一原始数据包的过程中,接收第二数据帧,在第一原始数据包输出之后,存储第二数据帧。本申请实施例中,输出第一原始数据包之后可以释放存储第一原始数据包的存储资源。在读取原始数据包时,不存储分片,在存储分片时,不读取原始数据包。即可以基于时分方式(也可以称为乒乓机制)在存储分片和读取数据包之间切换。这样既可以提高存储资源利用率,又可以提高存储效率,进而提高重组效率。
在可能的实现方式中,所述方法还包括:从第一原始数据包的首个分片开始,在预设时长内,没有完成第一原始数据包的重组,删除存储的第一原始数据包包括的分片的特征信息,以及释放第一原始数据包包括的分片所占用的存储资源。可以理解的是,如果一段时间内没有完成第一原始数据包的重组,可以认为重组失败。此时释放第一原始数据包包括的分片所占用的存储资源,可以提高存储资源的利用率。
第二方面,提供了一种分片帧的重组装置,例如该分片帧的重组装置为如前所述的FPGA。该分片帧的重组装置具有实现上述第一方面方法实施例中的行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。该通信装置包括通信接口以及处理器,可选的,还包括存储器。其中,该存储器用于存储计算机程序或指令,处理器与存储器、通信接口耦合,当处理器执行所述计算机程序或指令时,使装置执行上述第一方面中的方法。
第三方面,本申请提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,当该计算机程序被运行时,实现上述第一方面方法的功能。
附图说明
图1为数据帧的帧结构示意图;
图2为分片头的结构示意图;
图3为数据帧分片以及分片重组过程的示意图;
图4为本申请实施例提供的分片帧重组方法的流程示意图;
图5为本申请实施例提供的基于并非重组帧的数量划分为多个数据块的示意图;
图6为匹配时间复杂度变化随深度h变化的曲线示意图;
图7为基于地址映射的缓存划分存储器的缓存空间划分的示意图;
图8为基于乒乓的分片帧存取机制的原理示意图;
图9为分片帧重组装置的结构示意图以及分片帧重组的流程示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
在网络中,发送端和接收端之间通常需要进行信息交互。例如,在卫星通信网络中,发送端和接收端之间可能需要传输测绘信息。但是由于网络最大传输单元(maximumtransmission unit,MTU)的限制,发送端一次不能传输较大的数据包。因此,发送端可以将原始数据包划分为多个分片发送给接收端。接收端接收到多个分片,可以判断哪些分片来自同一个数据包,并对来自同一个数据包的多个分片重组,从而恢复出发送端发送的原始数据包。
常用的分片重组方法,例如,基于TCP协议的重组方法,该方法基于FPGA对多个TCP流进行重组,然而单块FPGA能够处理的并发重组帧的最大个数不超过30个,无法满足并发重组量更大的数据传输。又例如,基于TCP/IP硬件协议栈的乱序重排方法,但是该方法支持不连续数据块记录只有3个,当到达的互不相邻的分片超过3个时只能丢弃等待重传。在并发重组分片较多的情况下,丢包率较大,且由于等待重传,重组效率低。可见该方法无法解决并发重组分片较多的排序重组。
鉴于此,提供本申请实施例的方案。在本申请实施例中,接收端存储原始数据包的分片时,可按照顺序将分片存储在对应的空间地址,这样存储原始数据包的分片过程就已经实现了对各个分片的排序,从而确定原始数据包的多个分片重组完成,即存储完成时,可以输出原始数据包。由于存储原始数据包的分片过程就已经实现了对各个分片的排序,相较于传统的重组方法,即接收多个分片之后,解析多个分片,再对多个分片排序,排序之后再重组来说,无需重新排序,提高了重组效率,能够支持并发重组量更多的数据传输。
本申请实施例中的术语“多个”是指两个或两个以上。术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。
以及,除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的大小、内容、顺序、时序、优先级或者重要程度等。例如,第一数据帧和第二数据帧,可以是同一个数据帧,也可以是不同的数据帧,且,这种名称也并不是表示这两个数据帧的信息量大小、优先级或者重要程度等的不同。
下面结合说明书附图,详细介绍本申请实施例提供的技术方案。在介绍本申请实施例提供的技首先数据帧结构,以便于本领域技术理解本申请实施例提供的技术方案。
请参见图1,为数据帧结构的示意图。从图1可以看出,数据帧结构包括同步头和链路层帧头、扩展帧头组和数据净荷(也可以认为是数据帧的负载)以及特定字段等多个字段。链路层帧头又包括源站地址字段、目的站地址字段、特定字段,类型字段、扩展帧头类型,长度域等多个字段。各个字段的长度和定义为现有技术,这里不再赘述。
分片帧重组过程只需关注分片头的具体定义,其他类型扩展头知道类型、长度等即可。分片头定义如图2所示,分片头包括的各字段定义如表1所示。其中“最近”意味着在链路层数据帧的最大近似生命周期内,包括从源到目的的传输时间和等待同一链路层数据帧的其他分片时间。相应的,数据帧分片以及分片重组过程,如图3所示。
表1分片头内容定义
请参见图4,为本申请实施例提供的分片帧重组方法的流程示意图。该方法可以由通信装置执行,该通信装置可以是可编程逻辑阵列(field programmable gate array,FPGA),也可以是能够支持FPGA功能的装置,例如芯片执行。在下文的介绍过程中,以图像处理装置是FPGA为例。当然该通信装置除了包括FPGA之外,还可以包括其余必须的功能模块,例如还可包括收发接口,用于与外部设备,例如其他装置进行数据的交互。具体的,本申请实施例提供的分片帧重组方法的流程描述如下:
S401、对接收的第一数据帧进行预处理。
第一数据帧来自发送端,可以理解的是,发送端并行发送多个数据帧。这多个数据帧所包括的数据帧可能是原始数据包,也可能是属于原始数据包的一个分片。对于接收端来说,接收来自发送端的多个数据帧,可通过预处理模块分别对每个数据帧进行预处理,以确定每个数据帧是否为分片,如果是分片,那么是否为一个原始数据包的首个分片。以接收端接收发送端发送的第一数据帧为例。也可以认为,接收端对第一数据帧进行解析,例如获取图1所示的各个字段指示的内容,从而实现对第一数据帧的预处理。举例来说,接收端可以对第一数据帧进行同步字段检测。进一步地,接收端还对第一数据帧进行循环冗余校验(Cyclic Redundancy Check,CRC)处理。CRC处理之后可以提取第一数据帧的特征信息和分片信息。特征信息可用于判断第一数据帧是原始数据包,还是分片。例如,该特征信息可以包括第一数据包的源地址、目的地址、第一数据帧的帧长、第一数据包的标识信息,等等。分片信息可以判断第一数据帧是否为原始数据包的首个分片,例如,分片信息可包括第一数据帧的分片标识、第一数据帧的分片序号,等等。
需要说明的是,在本申请实施例中,使用并行CRC对第一数据帧进行CRC处理。例如,可基于校验系数利用并行CRC中特殊矩阵的性质,将矩阵乘法的计算简化成矩阵列向量之间的线性组合,求解该线性组合的系数,即获得对第一数据帧的CRC的结果。这种情况下,确定CRC寄存器初始值以及输入的并行数据,只需要1个时钟周期就能获得CRC校验码的具体取值,也就是,只需要一个时钟就可完成并行CRC校验。相较于传统的串行CRC来说,由于每个周期只能输入一位数据进行计算,且通常使用线性反馈移位寄存器进行实现,完成CRC校验至少需要a×8个时钟周期来说,显然,本申请实施例基于并行CRC实现CRC校验,校验速率更高,能够满足高速帧流的快速检错需求。且相较于串行CRC来说,由于串行CRC的校验资源使少,只能处理串行数据,并行CRC能够实现宽位并行数据的校验。
接收端对第一数据帧进行预处理之后,可以根据第一数据帧的特征信息和分片信息等确定第一数据帧是否为分片。例如,根据分片标识可以确定第一数据帧是否为分片。如果第一数据帧不是分片,即是原始的数据包,接收端可以存储该第一数据帧,在需要发送该第一数据帧时,输出该第一数据帧。如果根据该分片标识确定第一数据帧为分片,可以进一步判断该第一数据帧是否为一个原始数据包,例如第一数据包的首个分片。例如,可根据分片序号确定第一数据帧是否为首个分片。可以理解的是,在对原始数据包的多个分配重组之前,需要存储这多个分片,并根据这多个分片的特征信息和分片信息重组这多个分片。如果第一数据帧是首个分片,那么可存储该第一数据帧的特征信息,无需存储首部信息。该第一数据帧对应的原始数据包的其他分片根据该特征信息进行分片重组。如果第一数据帧不是首个分片,那么除了存储该第一数据帧,还可以记录该第一数据帧对应的帧长、分片序号以及缓存的分片数量等,以确定第一数据帧的存储空间,为后续判断是否完成分片重组提供依据。
S402、若第一数据帧为分片,且第一数据帧不是首个分片,根据第一数据帧的分片序号以及分片序号与地址空间的对应关系将第一数据帧存储在第一地址空间。
如果第一数据帧为分片,那么可存储第一数据帧,以后续将属于同一个数据包的多个分片进行重组。在存储第一数据帧之前,可以判断该第一数据帧属于哪个原始数据包。判断一个数据帧属于哪个原始数据包的过程,实质上是将该数据帧的特性信息和该数据帧之前的分片的特征信息进行匹配,如果一个数据帧的特征信息和另一个数据帧的特征信息相同,那么这两个数据帧属于同一个原始数据包。然而在并非重组帧较多时,一个数据帧逐个与其他数据帧匹配,较为耗时。
鉴于此,本申请实施例提供了一种新的匹配方法。请参见图5,在本申请实施例中,可将一段时间内支持的n个并发重组分片的特征信息划分为多个数据块,例如划分为m个数据块,每个数据块可用于存储h个分片的特征信息。这样在确定第一数据帧是否属于第一原始数据包时,可同时与m个数据块中的特征信息进行匹配,也就是,缩小了检索范围。相较于依次与n个分片的特征信息进行匹配来说,可降低匹配时间,从而提高匹配效率,进而提高重组效率。具体到判断第一数据帧属于哪个原始数据包时,可以将第一数据帧的特征信息与m个数据块进行匹配,确定第一数据帧属于匹配成功的分片属于的原始数据包。
可以理解的是,匹配效率,也可以认为匹配的时间复杂度O(a)跟确定待匹配分片所在数据块的平均查找时间复杂度O(e),以及在数据块内匹配分片所需的平均查找时间复杂度O(b)相关。
以图5为例,当并发重组分片的个数为n,可划分m个数据块,每个数据块的深度为h,那么O(a)满足:
可以看出,时间复杂度O(a)由n和h决定。若n取20000,则其时间复杂度变化随深度h变化的曲线如图6所示。当h为140时,其时间复杂度O(a)最小为142.4,随着h的变大或变小,时间复杂度增大。由上述公式可知,匹配的时间复杂度与各数据块的深度(即h)线性相关,深度越小则匹配的时间复杂度越小。如果h的取值不合理,匹配效率仍然较低。
为了进一步提高匹配效率,本申请实施例可基于存储资源的大小确定h,进而确定m。例如h的取值合理,那么可以降低O(e),从而可提高匹配效率。例如,O(e)=0,即不需要为确定待匹配的分片是否位于数据块内而付出额外的O(e),这种情况下,匹配分片所需的平均查找时间复杂度O(g)满足:
另外,本申请实施例对m个数据块的顺序,以及各个数据块的h个深度对应的存储空间的顺序不作限制,可以降低数据分块的逻辑难度。可以理解的是,如果m较大,那么于数据分块存储需要占用更大的存储资源。因此,本申请实施例,可以根据存储资源的大小以及n和h来确定m,即可以保证匹配效率,又可以提高资源的利用率。
应理解,硬件处理平台的存储资源分类可分为片外存储器与片内存储器,片外存储器如DDR SDRAM存储器、SSD硬盘等。相对来说,片内存储资源具有开发灵活、读写简单、集成度高等优点。本申请实施例可选择使用片上BRAM资源。以BRAM资源为例,m和n与存储资源之间的关系可以参考表2。
表2
分块个数m 分块深度h BRAM使用 片上BRAM总数 资源占用比例
1000 20 2000个 1470个 136.0%
500 40 1000个 1470个 68.0%
400 50 800个 1470个 54.4%
可以理解的是,通常属于同一原始数据包的多个分片到达接收端的时间间隔较小,那么按序存储的这多个分片的特征信息距离也较近。为了进一步降低匹配时间,提高匹配效率,本申请实施例引入预匹配机制。例如,可为每个数据块预设寄存器组,将该寄存器内的最近存储的特征信息进行移位寄存。接收端接收第一数据帧之后,可优先与该寄存器内的特征信息进行匹配,相较于与m个数据块包括的特征信息分别匹配来说,可减少匹配时间,从而提高重组效率。也可以理解为,通过建立一组预索引寄存器组,将最近存入特征信息存储RAM组的若干个特征信息进行移位寄存。在对第一数据帧匹配之前,优先在预索引寄存器组中进行匹配。通过该方案,在特征信息存储RAM组中特征信息较多时,可以大大减少匹配时间,从而提高匹配效率。
确定第一数据帧属于哪个原始数据包之后,可以存储第一数据帧,以后续对属于同一个原始数据包的多个分片进行重组。
在本申请实施例中,可根据原始数据包划分的分片数量将用于存储原始数据包的空间地址进行划分,例如,原始数据包包括N个分片,可将用于存储原始数据包的空间地址划分为N份。一个分片对应一个空间地址。从而在确定所接收的第一数据帧属于第一原始数据包的一个分片时,可根据该分片的序号,将第一数据帧存储在对应的空间地址。由于分片序号与空间地址对应,可认为,存储第一原始数据包的分片过程就已经实现了对各个分片的排序,从而确定第一原始数据包的多个分片重组完成,即存储完成时,可以输出第一原始数据包。由于存储第一原始数据包的分片过程就已经实现了对各个分片的排序,相较于传统的重组方法,即接收多个分片之后,解析多个分片,再对多个分片排序,排序之后再重组来说,无需重新排序,提高了重组效率,能够支持并发重组量更多的数据传输。
举例来说,以各原始数据包支持的分片帧的最大个数为4、支持的一个分片帧最大帧长为1768Byte为例。如图7所示,示出了基于地址映射的缓存划分存储器的缓存空间划分的一个示例。即将缓存空间划分为多个存储块,每个存储块用于缓存一个原始帧的各分片帧。例如,图7中,每个存储块划分成4个分片帧缓存块。具体的,由于最大分片帧长为1768Byte,2GB的缓存空间可划分为8个存款块,且可缓存256bit的数据。其中,每个分片帧缓存块均大于最大帧长,例如为1024个地址。如图7所示,原始帧Frame-1由分片帧Slice-1,Slice-2,Slice-3,Slice-4组成,根据存储空间划分方法,其分片帧中Slice-1的缓存空间应为地址0~1023;Slice-2的缓存空间为地址1024~2047,Slice-3的缓存空间为地址2048~3071,Slice-4的缓存空间为地址3072~4095。从图7中可以看出,一个分片帧对应一个缓存地址。且每个缓存块中的多个分片帧的缓存地址和分片的序号具有对应关系,这样在存储分片帧的过程中,实现了对分片帧的排序。无需耗费额外的排序时间,从而可以提高重组效率。
在可能的实现方式中,可基于地址缓存映射的方法管理存储地址。例如,可将分片的特征信息的索引地址(存储地址)作为分片的缓存初始地址,以存储分片之后的实际初始存储地址作为分片的读取初始地址,并通过各分片的序号、帧长计算出各个分片的实际存储地址,实现分片的有序缓存与有序输出。举例来说,结合分片帧格式与存储空间划分方法,分片的存储起始地址Waddr_s满足:
Waddr_s=index_addr×4096+1024×a,其中,a为分片序号,index_addr为该分片帧特征信息的索引地址(存储地址);
分片的存储结束地址满足:
其中,L为该分片帧的帧长,[]为整除且向上取整。
输出各个分片时,各个分片的输出起始地址Raddr_s满足:
Raddr_s=sort_addr×4096+1024×a,其中,a为分片序号,sort_addr为排序结束地址。
各个分片的输出结束地址满足:
本申请实施例基于地址缓存映射的方法管理存储地址可由当前需要进行存储的分片帧直接映射出缓存地址,同时,也可由需要进行输出的分片帧的排序结束地址映射得到输出地址。从而无需执行存储资源的读写地址的存储工作,更新、删除等维护工作,大大降低缓存时间,从而提高重组效率。
可以理解的是,存储器在同一时刻只能进行分片帧的存入或读出,然而在分片帧重组过程中,在存储分片帧的同一时刻可能需要读出存储的分片帧进行重组,在读出分片帧的同一时刻也有可能需要存储其他的分片帧。为了避免读写冲突,本申请实施例提出一种基于乒乓的分片帧存取机制,可避免读写冲突,还可以提高存储以及重组效率。
请参见图8,为基于乒乓的分片帧存取机制的原理示意图。图8以存储器为DDR3L存储器为例。例如,可建立3个FIFO分别用于缓存需要操作的分片帧读出地址、存储地址、分片帧数据。当任意FIFO有操作时,对操作次数进行计数。也就是,对FIFO中的读地址个数、存储地址个数、分片帧条数进行计数。假设存入分片帧为高优先级。当FIFO中有需要存入DDR3L的分片帧流时则进行一次突发存储,将FIFO中所需要的存储的帧流全部存储到DDR3L中,再将需要读出的帧流从DDR3L中读出。之后,再回到存储控制中,将读DDR3L期间收到的帧流存储到DDR3L中。可见存储和读出以时分方式往复,皆可以满足存储的时延要求,也可以尽量降低读出的时延。
S103、确定属于第一原始数据包的多个分片完成重组,输出第一原始数据包。
当确定一个原始数据包的多个分片已完成重组,那么可输出该原始数据包。例如,可确定存储的属于一个原始数据包的分片的数量是否为该原始数据包划分的分片的数量,如果存储的属于一个原始数据包的分片数量等于该原始数据包划分的分片数量,那么该原始数据包完成重组。至于如何输出第一原始数据包可以参考前述的相关内容,例如计算各个分片的实际存储地址,这里不再赘述。
可以理解的是,发送端向接收端并行发送多个数据帧,可能会出现丢包现象,例如由于网络故障,导致有些数据帧无法到达接收端。对于接收端而言,如果一直等待数据帧,显然会造成拥塞。为此,本申请实施例还提供了一种超时机制,即通过判断是否超时而执行相应的行为,例如丢弃数据帧,从而尽量避免拥塞。
具体的,本申请实施例可预设超时阈值,如果在超过超时阈值还未接收到属于一个原始数据包的分片,那么将存储的属于该原始数据包的其余分片删除,从而释放存储资源。在可能的实现方式中,可以以固定时间间隔发起超时检测,即根据存储的分片的时间戳判断该分片是否超时,如果确定该分片超时,可以释放该分片的存储地址,甚至释放该分片所属的原始数据包包括的其他分片所占用的存储地址。另外,可删除当前时间戳,并继续检查下一个时间戳。如果确定该分片没有超时,则继续检测下一个时间戳,以此类推。需要说明的是,对于完成重组的分片的时间戳也删除,避免重复超时检测。
举例来说,本申请实施例接收分片,可记录该分片的到达时间戳,该到达时间戳为分片的接收时间,可作为特征信息,可以与特征信息一起存储,也可以与特征信息独立存储。假设超时阈值为300ms,在判断一个分片是否超时,可判断分片的时间戳与当前参考时间之间的差值是否大于超时阈值,如果分片的时间戳与当前参考时间之间的差值大于超时阈值,那么可认为超时;相反,如果分片的时间戳与当前参考时间之间的差值小于或等于超时阈值,那么没有超时。可以理解的是,如果超时阈值为300ms,那么参考时间计时需要大于300ms。可假设参考时间的范围为0~500ms。若当前的参考时间T大于时间戳S的值,那么T-S>300ms时,分片超时,若当前的参考时间T小于时间戳S的值,那么T+500ms-S>300ms时,分片超时。进一步地,可确定超时检测的周期,以避免参考时间多次溢出而长时间未能成功检测出超时的情况。举例来说,
如果参考时间的范围为0~500ms,超时阈值为300ms,工作时钟为156.25MHz1,那么假设超时检测的周期是20ms,时间戳在参考时间一次循环累加期间内就能实现超时检测。可以理解的是,因超时检测为每20ms触发一次,故对该时间戳进行超时检测时,参考时间分别为20ms、40ms……300ms、320ms、340ms、……480ms、500ms、20ms、40ms……,而当时间参考时间大于300ms时均可检测出该时间戳超时,不会出现超时漏检,提高了系统的准确性。
在本申请实施例中,从原始数据包的第一个分片到达开始计时,若规定最大延时后该原始数据包仍未成功重组,则删除所存储的该原始数据包的特征信息,并释放存储该原始数据包的存储资源。由于原始数据包占用的存储资源是按照帧长以及分片数进行存取的,因此,释放分片的存储资源可以用于存储下一分片。但是如果原始数据包超时,由于该原始数据包会直接覆盖已超时的数据帧,因此,原始数据包超时时不用对存储器的存储空间进行清理。
具体的,本申请实施例可以设置一个超时地址FIFO,用于存储需要销毁时间戳对应的分片的存储地址(简称为超时地址)。当前无需要销毁的排序完成帧和首个到达分片帧时间戳时,则读出超时地址并对相应时间戳进行销毁。这样可以避免出现排序完成帧时间戳来不及销毁而被检测出超时的问题。
进一步地,可建立排序完成地址FIFO用于缓存当前的排序完成地址。若当前输入的排序完成地址有效,则排序完成地址存入到排序完成地址FIFO的同时存入到排序完成地址寄存器组的第一个寄存器中,并将已存的排序完成地址信息向后移动到其他寄存器;否则寄存器组中的值不变。当检测到有效超时地址时,将该超时地址并与排序完成寄存器组中的排序完成地址进行比较,若与寄存器中的某一个排序完成地址相同,则不清空该地址的特征信息;若无一相同,则并写入0到特征信息存储RAM相应地址中清空特征信息,并输出该地址作为有效销毁地址输出。从而避免超时地址销毁不及时,造成超时地址与排序完成地址重复销毁,回收同一个地址问题,进而保证系统稳定运行。本申请实施例还可以将销毁的超时地址写入空闲地址FIFO中,作为新的重组帧首个分片到来时的起始地址。
当并发重组帧较多时,例如,并发重组帧的个数远大于20000时,为了使高速链路层分片帧重组系统稳定工作,本申请实施例还引入了丢包机制。例如,满足如下的一项或多项,那么丢弃当前帧:(1)该帧帧长HEC字段校验错误;(2)该帧帧长字段与实际帧长不相等;(3)该帧为重组帧的首个到达分片帧且索引地址管理器中的空闲地址FIFO为空。
在本申请实施例中,接收端存储原始数据包的分片时,可按照顺序将分片存储在对应的空间地址,这样存储原始数据包的分片过程就已经实现了对各个分片的排序,从而确定原始数据包的多个分片重组完成,即存储完成时,可以输出原始数据包。由于存储原始数据包的分片过程就已经实现了对各个分片的排序,相较于传统的重组方法,即接收多个分片之后,解析多个分片,再对多个分片排序,排序之后再重组来说,无需重新排序,提高了重组效率,能够支持并发重组量更多的数据传输。
在确定一个分片属于哪个原始数据包时,可以基于一段时间内并发重组帧的数量划分多个数据块,从而同时多个数据块中的特征信息进行匹配,相较于进行并发重组帧数量次匹配来说,可降低匹配时间,从而提高匹配效率,进而提高重组效率。且为了进一步降低匹配时间,为每个数据块预设寄存器组,将该寄存器内的最近存储的特征信息进行移位寄存。接收端接收第一数据帧之后,可优先与该寄存器内的特征信息进行匹配,相较于与多个数据块包括的特征信息分别匹配来说,可进一步减少匹配时间,从而提高重组效率。
可以理解的是,同一个原始数据包的不同分片到达接收端的时间间隔越大,同一时间段内并发重组帧的数量就会越多,为了降低时延,需要快递确定哪些分片属于同一个原始数据包,也需要及时释放重组完成的数据包的资源。由于本申请实施例可以提高匹配效率以及重组效率,所以能够快递确定哪些分片属于同一个原始数据包,并及时释放重组完成的数据包的资源,从而在并发重组帧较多的情况下,相较于传统重组方式可以降低时延。
另外,本申请实施例提供的分片帧重组方法支持的吞吐率更高。例如,基于FPGA的IP碎片重组模块仅支持最大2.5Gbps接口流量。基于TCP/IP硬件协议栈的乱序重排方法的TCP协议栈处理能力虽然达到10Gb/s,但不连续数据块记录只有3个,吞吐率也较低。而本申请实施例在并发重组帧较多、时延较高的情况下,由于能够对帧流进行快速重组输出,有效吞吐率最高可达6.9Gbps。
下面结合附图介绍本申请实施例中用来实现上述方法的装置。因此,上文中的内容均可以用于后续实施例中,重复的内容不再赘述。
本申请实施例还提供了一种分片帧重组装置,该装置可以包括用于实现上述各个方法实施例中实现的功能或者步骤的模块。例如,该装置至少包括帧流预处理模块、排序重组模块和帧流输出控制模块。这些模块可以执行上述方法示例中的相应功能,具体参见方法示例中的详细描述,此处事不再赘述。例如,请参见图9,为该装置的各个模块的流程。具体的,帧流预处理模块可用于执行上述S401的步骤,具体可参考前述S401的相关内容。图9中的帧参数即为特征信息和分片信息。排序重组模块可用于执行上述S402的步骤,具体可参考前述S402的相关内容。帧流输出控制模块可用于执行上述S403的步骤,具体可参考前述S402和S403的相关内容,这里不再赘述。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行上述方法示例中的方法,具体参见方法示例中的详细描述,此处事不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (9)

1.一种分片帧重组方法,其特征在于,包括:
接收第一数据帧,并确定所述第一数据帧是否为分片,所述分片为第一原始数据包的部分;
若所述第一数据帧为分片,且所述第一数据帧不是首个分片,根据所述第一数据帧的分片序号以及分片序号与地址空间的对应关系将所述第一数据帧存储在与所述分片序号对应的第一地址空间,所述第一地址空间属于用于存储所述第一原始数据包的地址空间;
确定属于所述第一原始数据包的多个分片完成重组,输出所述第一原始数据包;
所述方法还包括:将所述第一数据帧的特征信息与m个数据块进行匹配,所述m个数据块是由n个分片划分的,每个数据块包括的分片个数相同,每个数据块用于存储h个分片的特征信息所述n为并发重组分片的数量;确定所述第一数据帧属于匹配成功的分片属于的原始数据包。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第一原始数据包划分分片的最大个数以及分片的最大长度,将用于存储所述第一原始数据包的地址空间划分为多个地址空间,所述多个地址空间与所述第一原始数据包划分的分片一一对应,且所述多个地址空间和所述第一原始数据包包括的分片的序号具有对应关系。
3.如权利要求1所述的方法,其特征在于,所述m根据匹配效率以及存储资源确定。
4.如权利要求1所述的方法,其特征在于,在将所述第一数据帧的特征信息与m个数据块进行匹配之前,所述方法还包括:
为每个数据块预设寄存器组,对预设的寄存器组内最近存储的特征信息进行移位寄存,所述寄存器组用于存储分片的特征信息。
5.如权利要求1所述的方法,其特征在于,输出所述第一原始数据包,包括:
确定所述第一原始数据包包括的多个分片在对应地址空间的实际存储地址;
按照分片的序号从小到大依次读取各个分片对应的实际存储地址上的数据,并输出。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
在输出所述第一原始数据包的过程中,接收第二数据帧,在所述第一原始数据包输出之后,存储所述第二数据帧。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
从所述第一原始数据包的首个分片开始,在预设时长内,没有完成所述第一原始数据包的重组,删除存储的所述第一原始数据包包括的分片的特征信息,以及释放所述第一原始数据包包括的分片所占用的存储资源。
8.一种分片帧重组装置,其特征在于,包括处理器,所述处理器与存储器相连,所述存储器用于存储计算机程序,所述处理器用于执行所述存储器中存储的所述计算机程序,使得所述装置实现如权利要求1~7中任一项所述的方法。
9.一种计算机存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被计算机执行时,使所述计算机执行如权利要求1~7中任一项所述的方法。
CN202210238806.9A 2022-03-11 2022-03-11 一种分片帧重组方法及装置 Active CN114584560B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210238806.9A CN114584560B (zh) 2022-03-11 2022-03-11 一种分片帧重组方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210238806.9A CN114584560B (zh) 2022-03-11 2022-03-11 一种分片帧重组方法及装置

Publications (2)

Publication Number Publication Date
CN114584560A CN114584560A (zh) 2022-06-03
CN114584560B true CN114584560B (zh) 2023-12-22

Family

ID=81781420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210238806.9A Active CN114584560B (zh) 2022-03-11 2022-03-11 一种分片帧重组方法及装置

Country Status (1)

Country Link
CN (1) CN114584560B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115348253A (zh) * 2022-06-28 2022-11-15 高德软件有限公司 数据传输系统的数据传输方法及数据传输系统
CN115225593B (zh) * 2022-06-30 2023-11-28 中科驭数(北京)科技有限公司 分片报文重组方法、装置、设备和介质
CN115695582A (zh) * 2022-10-31 2023-02-03 天翼数字生活科技有限公司 一种低延时传输控制的方法、接收终端和发送终端
CN116418734B (zh) * 2023-06-09 2023-08-18 湖北微源卓越科技有限公司 一种低时延的小包发送方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1713637A (zh) * 2004-06-27 2005-12-28 华为技术有限公司 一种分片报文的重组方法
CN101447928A (zh) * 2008-12-31 2009-06-03 华为技术有限公司 分片信息处理的方法和装置
CN101662461A (zh) * 2008-08-27 2010-03-03 华为技术有限公司 一种多链路协议分片数据的重组方法、装置及系统
US9667720B1 (en) * 2014-03-31 2017-05-30 EMC IP Holding Company LLC Shard reorganization based on dimensional description in sharded storage systems
CN110147351A (zh) * 2019-05-20 2019-08-20 中国刑事警察学院 一种Office文件数据分片识别、排序、重组方法
CN113691469A (zh) * 2021-07-27 2021-11-23 新华三技术有限公司合肥分公司 报文乱序重排方法及单板

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7835356B2 (en) * 2007-11-15 2010-11-16 Intel Corporation Method and device for fragmented packet routing in virtualized environments

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1713637A (zh) * 2004-06-27 2005-12-28 华为技术有限公司 一种分片报文的重组方法
CN101662461A (zh) * 2008-08-27 2010-03-03 华为技术有限公司 一种多链路协议分片数据的重组方法、装置及系统
CN101447928A (zh) * 2008-12-31 2009-06-03 华为技术有限公司 分片信息处理的方法和装置
US9667720B1 (en) * 2014-03-31 2017-05-30 EMC IP Holding Company LLC Shard reorganization based on dimensional description in sharded storage systems
CN110147351A (zh) * 2019-05-20 2019-08-20 中国刑事警察学院 一种Office文件数据分片识别、排序、重组方法
CN113691469A (zh) * 2021-07-27 2021-11-23 新华三技术有限公司合肥分公司 报文乱序重排方法及单板

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
移动互联网端到端数据包分片优化思路及研究;刘华;金志坚;;移动通信(第04期);全文 *

Also Published As

Publication number Publication date
CN114584560A (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN114584560B (zh) 一种分片帧重组方法及装置
US11249688B2 (en) High-speed data packet capture and storage with playback capabilities
US11836385B2 (en) High speed data packet flow processing
US20240171507A1 (en) System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic)
US7751404B2 (en) Method, system, and computer program product for high performance bonding resequencing
US7664112B2 (en) Packet processing apparatus and method
US7477644B2 (en) Method and system of efficient packet reordering
JP5863076B2 (ja) パケットを再構築し再順序付けするための方法、装置、およびシステム
US8441940B2 (en) Parallel packet processor with session active checker
US6208651B1 (en) Method and system for masking the overhead of protocol layering
KR100920651B1 (ko) 네트워크 프로세서 내에서 데이터 블록들의 재조합 방법및 장치
CN109257143B (zh) 用于有长度限制的网络传输协议中分片传输数据包的方法
US20050276230A1 (en) Communication statistic information collection apparatus
CN111711566B (zh) 多路径路由场景下的接收端乱序重排方法
US11704063B2 (en) Efficient storage architecture for high speed packet capture
EP1157502A2 (en) Method and apparatus for early random discard of packets
CN112084136A (zh) 队列缓存管理方法、系统、存储介质、计算机设备及应用
CN101141296A (zh) 通道化逻辑单通道统计的方法和装置
CN106533976A (zh) 一种数据包处理方法及装置
US20240053930A1 (en) High Speed Data Packet Flow Processing with Offload
CN117424866A (zh) 一种基于乱序重排的数据存储方法、装置及介质
CN114501548A (zh) 一种数据级联的传输方法、装置、设备及介质
JP2021034801A (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