报文保序方法及装置的制作方法

文档序号:7745151阅读:186来源:国知局
专利名称:报文保序方法及装置的制作方法
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种报文保序方法及装置。
背景技术
目前,在多核系统中,每个核均拥有各自的执行程序及系统运行资源,在系统运 行时,多核间彼此相对独立。在多核系统并行工作处理网络协议(Internet Protocol ;以 下简称IP)报文时,网络接口接收到IP报文后,会根据轮询分发机制,将IP报文分发给 各个核,每个核接到分发的IP报文后,进行独立处理。对于一个中央处理单元(Central Processing Unit ;以下简称CPU)来说,多核CPU—次能够处理多个IP报文,由于每个核 的处理速度并不实时一致,从而导致对于IP报文的处理速度可能不一致。因此,如果不对 报文进行保序的话,则在发送报文时将会产生乱序现象。 目前多核系统中为了减少报文的乱序现象,会通过经过多核处理后的报文进行基 本保序处理,例如通过维护基本保序对列的方式对报文进行基本保序操作,使从同一个从 网络接口进入的IP报文在经过设备的处理后,能够按照进入设备时的顺序发送出去。在进 行报文的基本保序处理时,网络接口需要将接收到的每一个IP报文标记序列号,以标识IP 报文进入设备的顺序;随后,根据轮询分发机制将带有序列号的IP报文分发给各个核分别 进行处理;在实际应用中,各个核会共同维护一个基本保序队列,各个核通过基本转发流程 对IP报文进行处理,并判断该IP报文是保序发送还是放弃保序,根据判断结果以及该IP 报文的序列号将IP报文排列入基本保序队列,同时调整队尾索引(End Index),以保证队 头索引(Startlndex)到队尾索引之间均为处理过的有序IP报文;随后,基本保序队列从队 头索引开始,进行刷队列操作,刷到队尾索引为止,在刷队列的过程中,遇到需要保序的IP 报文执行发送操作,遇到放弃保序的IP报文则跳过,遇到还没入队列的IP报文需要等待, 从而实现IP报文的基本保序功能。 在实现本发明过程中,发明人发现现有技术中在遇到处理较慢的IP报文时,如果 该处理较慢的报文在预定时间内还未入队列,为了减少等待时间,基本保序功能会将处理 较慢的IP报文进行放弃保序的操作。由于需要重组的报文在系统中的处理较慢,因此,系 统对需要重组的报文往往不进行保序处理。

发明内容
本发明实施例提供一种报文保序方法及装置,可以实现对重组后的报文的保序处 理。 本发明实施例提供一种报文保序方法,包括
接收报文分片; 为所述报文分片分配序列号,并确定所述报文分片所属的待重组的报文; 在接收到所述待重组的报文的所有报文分片的情况下,将所述待重组的报文进行
重组,并将重组后的报文加入基本保序队列进行保序,其中,所述重组后的报文在所述基本保序队列中的序列号为所述报文分片的序列号。
本发明实施例提供一种报文保序装置,包括 接收模块,用于接收报文分片; 分配模块,用于为所述报文分片分配序列号; 确定模块,用于确定所述报文分片所属的待重组的报文; 重组模块,用于在接收到所述待重组的报文的所有报文分片的情况下,将所述待重组的报文进行重组; 第一处理模块,用于将重组后的报文加入基本保序队列进行保序,其中,所述重组后的报文在所述基本保序队列中的序列号为所述报文分片的序列号。 本发明实施例的报文保序方法及装置,在接收到待重组的报文的所有报文分片时,重组所有报文分片,并根据待重组的报文中最后一个接收到的报文分片的序列号,将重组后的报文加入基本保序队列进行保序。改变了现有技术中不能对重组后的报文进行保序的问题,实现了对重组后报文的保序。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 图1是本发明提供的报文保序方法实施例一的流程 图2是本发明提供的报文保序方法实施例二的流程图; 图3是本发明提供的报文保序方法实施例二中报文分片经过多核系统重组后保序发送的示意图; 图4是本发明提供的报文保序方法实施例三中从接收报文到发送报文的过程示意图; 图5是本发明提供的报文保序装置实施例一的结构示意 图6是本发明提供的报文保序装置实施例二的结构示意 图7是本发明提供的报文保序装置实施例三的结构示意图。
具体实施例方式
下面结合附图和具体实施例进一步说明本发明实施例的技术方案。 为了解决现有技术的上述问题,根据本发明的实施例,提供了一种报文保序方法,
图l是本发明提供的报文保序方法实施例一的流程图,如图l所示,根据本发明实施例的报
文保序方法包括 步骤ll :接收报文分片; 步骤12 :为报文分片分配序列号,并确定报文分片所属的待重组的报文; 其中,为报文分片分配的序列号用于标识通过同一个网络接口接收的报文的顺
序,即,报文进入设备的顺序; 在步骤12中,确定报文分片所属的待重组的报文可以包括如下处理
5
根据报文分片中的五元组信息查找分片会话。在查找到与报文分片中的五元组信息相匹配的分片会话的情况下,则确定报文分片属于与相匹配的分片会话对应的待重组的报文。 具体的,在实际应用中,设备在接收到某个待重组的报文的第一个报文分片(即,首分片)时,会创建一个分片会话,分片会话中包括该报文分片的源IP、目标IP、重组信息等五元组信息。通过查询之前创建的多个分片会话,可以确定该报文分片与已经缓存的报文分片的关系以及该报文分片所属的待重组的报文。因此,如果查询结果为该报文分片命中一分片会话,则可以确定该报文分片属于该分片会话对应的待重组的报文。将命中的该分片会话的报文分片与该分片会话对应的待重组的报文进行挂接。如果查询结果为报文分片未命中分片会话,则根据该报文分片中的五元组信息重新创建一个分片会话。
步骤13 :在接收到待重组的报文的所有报文分片的情况下,将待重组的报文进行重组,并将重组后的报文加入基本保序队列进行保序,其中,重组后的报文在基本保序队列中的序列号为报文分片的序列号。
具体的,在步骤12确定了接收到的该报文分片所属的待重组报文后,在步骤13中
可以判断此时是否已经接收到该待重组报文的所有报文分片,或者说,判断当前接收到的
报文分片是否为待重组报文中最后一个被接收到的报文分片,在接收到待重组的报文的所
有报文分片的情况下,则可以对待重组的报文进行重组,形成重组后的报文。对待重组报文
进行重组,也就是把所有属于该待重组报文的分片组合起来,形成一个完整的报文。 由于从网络接口接收到的每个报文分片都有自己的序列号,该序列号是保序队列
对报文保序的依据,因此,如果通过对每个报文分片都进行保序的方式实现对重组后的报
文的保序,则当多个报文分片经重组形成一个重组后的报文后,原来每个报文分片的报文
序列号将无法获取,导致在刷保序队列时。由于不能获取到这些报文分片的序列号,会误以
为是尚未入队列的报文,则会持续等待这些报文分片的到来,从而导致基本保序队列的保
序工作终止。因此,本发明实施例对重组后的报文进行保序处理时,根据待重组的报文中最
后一个被接收到的报文分片的序列号,将重组后的报文加入基本保序队列进行保序。 本发明实施例,通过为接收的报文分片分配序列号,并在确定接收到待重组的报
文的所有分片的情况下,将所述待重组的报文进行重组,并将重组后的报文使用为最后一
个被接收到的报文分片分配的序列号加入保序队列进行保序,从而有效的保证了重组后的
报文的发送顺序,实现了需重组的报文的保序。 需要说明的是,上述报文分片可以为IP数据安全(IP Security,以下简称IPSec)隧道报文的报文分片;由于IPSec隧道报文的报文分片需要进行报文重组后再进行IPSec处理,因此,报文保序对于IPSec隧道报文十分重要,下面,以IPSec隧道报文为例,对本发明实施例的上述技术方案进行详细的说明。 图2是本发明提供的报文保序方法实施例二的流程图,如图2所示,本实施例包括如下处理 步骤201,从网络接口接收IPSec隧道报文的报文分片;
步骤202,为报文分片分配序列号; 其中,序列号用于标识通过同一个网络接口接收的报文的顺序,S卩,报文进入设备的顺序;
步骤203,查询分片会话,判断接收到的报文分片是否命中分片会话,如果命中,执行步骤204,如果未命中,执行步骤205 ; 具体的,在实际应用中,设备在接收到某个待重组的报文的第一个报文分片(即,首分片)时,会创建一个分片会话,分片会话中包括该报文分片的源IP、目标IP、重组信息等五元组信息。因此,当接收到后续报文分片时,可以根据报文分片中的五元组信息查找对应的分片会话,从而可以确定该报文分片与已经缓存的报文分片的关系以及该报文分片所属的待重组的报文。当查找到与报文分片中的五元组信息相匹配的分片会话时,则确定报文分片属于与相匹配的分片会话对应的待重组的报文。 步骤204,将该报文分片与命中的分片会话对应的报文分片进行挂接,执行步骤206 ; 步骤205,根据该报文分片创建新的分片会话,执行步骤206 ; 具体的,可以根据该报文分片中的五元组信息创建一个新的分片会话。 步骤206,判断是否接收到该IPSec隧道报文的所有报文分片,如果判断为否,执
行步骤207,如果判断为是,则执行步骤209 ; 具体的,判断是否已经接收到该待重组报文的所有报文分片,是为了判断该待重组报文是否满足重组要求,或者说,判断当前接收到的报文分片是否为待重组报文中最后一个被接收到的报文分片,如果该待重组报文满足重组要求,则可以对待重组的报文进行重组,形成重组后的报文。具体可根据报文分片IP头中的分片标记和分片偏移来确定所有报文分片都已到齐。 步骤207,将该报文分片进行缓存,执行步骤208 ; 在最后一个被接收到的报文分片到来之前,缓存其它的所有报文分片并放弃保序。 步骤208,对该报文分片放弃保序,返回执行步骤201 ; 步骤209,将接收到该IPSec隧道报文的所有报文分片进行重组,并对重组后的IPSec隧道报文进行IPSec处理,执行步骤210 ;
IPSec处理指对IP报文进行加解密等处理。 步骤210,将重组后的IPSec隧道报文加入基本保序队列进行保序,其中,重组后的IPSec隧道报文在基本保序队列中的序列号为最后一个被接收到的报文分片的序列号。
通过上述处理,重组后的IPSec隧道报文能够参与基本保序队列的保序,有效的保证了重组后IPSec隧道报文经IPSec处理后的发送顺序,图3是本发明提供的报文保序方法实施例二中报文分片经过多核系统重组后保序发送的示意图,如图3所示,网络中的第一设备通过网络将报文按照报文1、报文2、报文3分片a、报文3分片b、报文3分片c、报文4的顺序发送到了第二设备,第二设备中设置有多核系统,第二设备根据上述顺序接收了第一设备发送的报文,在多核处理系统中,需要对报文3分片a、报文3分片b、报文3分片c三个报文分片进行重组,并根据本发明实施例的技术方案对重组后的报文进行保序,在第二设备的多核系统对上述报文处理完成后,按照报文1、报文2、重组后的报文3、报文4的顺序将报文发送出去,实现了重组后的报文的保序发送。
进一步的,步骤210之后,还可以包括 步骤211 ,按照所述重组后的报文在所述基本保序队列中的顺序进行发送。
本发明实施例,为接收到的IPSec隧道报文分片分配序列号后,根据该报文分片 的五元组信息,查询与该报文分片中的五元组信息相匹配的分片分话,以确定该报文分片 所属的待重组的报文,如果没有查询到相匹配的分片会话则为该报文分片建立分片会话。 在确定接收到待重组的报文的所有报文分片的情况下,将所述待重组的报文进行重组,并 根据为最后一个被接收到的报文分片分配的序列号,将重组后的报文加入保序队列进行保 序,并在刷队列时,按照重组后的报文在所述基本保序队列中的顺序进行发送,从而有效的 保证了重组后的报文的发送顺序,实现了需重组的报文的保序。 图4是本发明提供的报文保序方法实施例三中从接收报文到发送报文的过程示 意图,本实施例以对一个待重组的报文为例,对该待重组报文中的报文分片在系统中入队 列、出队列的过程进行描述,如图4所示,本实施例包括
步骤41 :从网络接口接收报文分片;
步骤42 :为报文分片分配序列号; 设备在从网络接口接收到报文分片后,根据进入设备的顺序会首先为每个报文分 片分配一个序列号。 步骤43 :未接收到待重组的报文的所有报文分片时,缓存当前接收到的报文分 片; 在未接收到待重组的报文的所有报文分片时,缓存当前接收到的报文分片,直到
接收到待重组的报文的所有报文分片。例如,如图4所示,基本保序队列中的位置12为最
后一个被接收到的报文分片之前的报文分片所对应的位置,将该位置设置为放弃保序。
步骤44 :接收到待重组的报文的所有报文分片时,重组所有报文分片; 接收到待重组的报文的所有报文分片即待重组的报文的所有报文分片均到齐时,
将所有的报文分片进行重组,得到重组后的报文。 步骤45 :根据最后一个被接收到的报文分片的序列号,将重组后的报文加入基本 保序队列; 对于属于待重组的报文的报文分片,在基本保序队列中,将最后一个被接收到报
文分片之前的所有报文分片所对应的位置上均设置为放弃保序;在接收到待重组的报文的
所有报文分片时,重组所有报文分片,将重组后的报文加入到基本保序队列中最后一个被
接收到的报文分片所对应的位置上进行保序。如图4所示,基本保序队列中的位置13为最
后一个被接收到的报文分片对应的位置,则需要在该位置上插入重组后的报文并设置为保
序。在图4中,使用"X "表示放弃保序的报文,使用"〇"表示需要保序的报文,使用"?"
表示基本保序队列中的该位置还未加入报文,该报文的保序要求未知。 以IPSec隧道报文为列,重组后的IPSec隧道报文经过IPSec处理之后,根据最后
一个被接收到的IPSec隧道报文分片的序列号将处理后的IPSec隧道报文加入到基本保序
队列中的相应位置上。 步骤46 :从队头索引开始进行刷队列的操作,直到队尾索引为止。 在进行刷队列时,遇到需要保序发送的报文则从网络接口进行发送,遇到放弃保
序的报文则跳过,遇到保序要求未知的报文则等待,从而达到报文保序的功能。 图5是本发明提供的报文保序装置实施例一的结构示意图,如图5所示,根据本发
明实施例的报文保序装置可以包括接收模块50、分配模块51、确定模块52、重组模块53、第一处理模块54。其中 接收模块50,用于接收报文分片; 分配模块51,用于为接收模块50接收到的报文分片分配序列号; 其中,分配模块51为报文分片分配的序列号用于标识通过同一个网络接口接收
的报文的顺序,即,报文进入设备的顺序。 确定模块52,用于确定接收模块50接收到的报文分片所属的待重组的报文。
重组模块53,用于在接收模块50接收到待重组的报文的所有报文分片的情况下, 将待重组的报文进行重组。 第一处理模块54,用于将重组模块53重组得到的重组后的报文加入基本保序队 列进行保序。其中,重组后的报文在基本保序队列中的序列号为当前接收到的报文分片的 序列号。 在接收到待重组的报文的所有报文分片的情况下,表明待重组的报文满足重组要 求,在此情况下当前接收到的报文分片为待重组报文中最后一个被接收到的报文分片。第 一处理模块54对重组后的报文进行保序处理时,根据待重组的报文中最后一个被接收到 的报文分片的序列号,将重组后的报文加入基本保序队列进行保序。 本发明实施例,通过分配模块51为接收模块50接收的报文分片分配序列号,在确 定模块52确定接收模块50接收到待重组的报文的所有分片的情况下,重组模块53将所 述待重组的报文进行重组,第一处理模块54将重组后的报文使用为最后一个被接收到的 报文分片分配的序列号加入保序队列进行保序,从而有效的保证了重组后的报文的发送顺 序,实现了需重组的报文的保序。 图6是本发明提供的报文保序装置实施例二的结构示意图,如图6所示,在图5所 示的实施例基础上,本发明实施例的报文保序装置还包括 第二处理模块55,用于在接收模块50没有接收到待重组的报文的所有报文分片 的情况下,缓存报文分片,并对报文分片放弃保序。 由于需要接收到待重组的报文的所有报文分片后,才能够进行报文重组,并对重 组后的报文进行处理。因此,在接收到最后一个到来的报文分片之前,其他所有的报文分片 都被缓存并放弃保序。
进一步的,本发明实施例还可以包括 发送模块56,用于按照所述重组后的报文在所述基本保序队列中的顺序进行发 送。 具体的,当第一处理模块54将重组模块53重组得到的重组后的报文加入基本保 序队列进行保序后,发送模块56对所述基本保序队列进行刷队列操作,按照所述重组后的 报文在所述基本保序队列中的顺序(也就是最后一个接收到的该待重组的报文分片的发 送顺序)进行发送,实现待重组后的报文的保序发送。 本发明实施例,在确定模块52确定接收模块50没有接收到待重组的报文的所有 分片时,第二处理模块55将当前接收的报文分片进行缓存并放弃保序,直至接收模块50接 收到所有分片时,重组模块53才会将所有报文分片进行重组。第一处理模块54根据为最 后一个被接收到的报文分片分配的序列号,将重组后的报文加入保序队列进行保序,发送 模块56对所述基本保序队列进行刷队列操作,按照所述重组后的报文在所述基本保序队列中的顺序进行发送。从而有效的保证了重组后的报文的发送顺序,实现了重组后的报文 的保序。 图7是本发明提供的报文保序装置实施例三的结构示意图,如图7所示,本发明实 施例在上述实施例基础上,详细描述了报文保序装置中的确定模块的具体结构,如图7所 示,确定模块52包括 查询子模块521,用于根据接收模块50接收到的报文分片中的五元组信息查找分 片会话,分片会话中包含有待重组的报文的五元组信息。 确定子模块522,用于在查询子模块521查找到与报文分片中的五元组信息相匹 配的分片会话时,确定报文分片属于与相匹配的分片会话对应的待重组的报文,将该报文 分片与该分片会话对应的报文分片进行挂接。
进一步的,所述确定模块52还可以包括 创建子模块523,用于在查询子模块521没有查找到与报文分片中的五元组信息
相匹配的分片会话时,根据报文分片中的五元组信息创建新的分片会话。 上述各模块的工作机理,可以参见报文保序方法实施例一至实施例三中的描述,
在此不再赘述。 需要说明的是,优选地,该报文分片可以为IPSec隧道报文的报文分片。对IPSec 隧道报文的报文分片进行重组并保序发送的操作可以参照图3对应实施例的处理进行理 解,在此不再赘述。 以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是 或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即 可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的 部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳 动的情况下,即可以理解并实施。 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的 软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器 (ROM)、电可编程R0M、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或任意其它 形式的存储介质中。 最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
一种报文保序方法,其特征在于,包括接收报文分片;为所述报文分片分配序列号,并确定所述报文分片所属的待重组的报文;在接收到所述待重组的报文的所有报文分片的情况下,将所述待重组的报文进行重组,并将重组后的报文加入基本保序队列进行保序,其中,所述重组后的报文在所述基本保序队列中的序列号为所述报文分片的序列号。
2. 根据权利要求1所述的报文保序方法,其特征在于,还包括在没有接收到所述待重组的报文的所有报文分片的情况下,缓存所述报文分片,并对 所述报文分片放弃保序。
3. 根据权利要求1或2所述的报文保序方法,其特征在于,还包括 按照所述重组后的报文在所述基本保序队列中的顺序进行发送。
4. 根据权利要求1或2所述的报文保序方法,其特征在于,所述确定所述报文分片所属 的待重组的报文包括根据所述报文分片中的五元组信息查找分片会话,所述分片会话中包含有待重组的报 文的五元组信息;若查找到与所述报文分片中的五元组信息相匹配的分片会话,则所述报文分片属于与 所述相匹配的分片会话对应的待重组的报文。
5. 根据权利要求4所述的报文保序方法,其特征在于,所述方法还包括 若没有查找到与所述报文分片中的五元组信息相匹配的分片会话,则根据所述报文分片中的五元组信息创建新的分片会话。
6. —种报文保序装置,其特征在于,包括 接收模块,用于接收报文分片; 分配模块,用于为所述报文分片分配序列号; 确定模块,用于确定所述报文分片所属的待重组的报文;重组模块,用于在接收到所述待重组的报文的所有报文分片的情况下,将所述待重组 的报文进行重组;第一处理模块,用于将重组后的报文加入基本保序队列进行保序,其中,所述重组后的 报文在所述基本保序队列中的序列号为所述报文分片的序列号。
7. 根据权利要求6所述的报文保序装置,其特征在于,所述装置还包括 第二处理模块,用于在没有接收到所述待重组的报文的所有报文分片的情况下,缓存所述报文分片,并对所述报文分片放弃保序。
8. 根据权利要求6或7所述的报文保序装置,其特征在于,还包括 发送模块,用于按照所述重组后的报文在所述基本保序队列中的顺序进行发送。
9. 根据权利要求6或7所述的报文保序装置,其特征在于,所述确定模块包括 查询子模块,用于根据所述报文分片中的五元组信息查找分片会话,所述分片会话中包含有待重组的报文的五元组信息;确定子模块,用于若查找到与所述报文分片中的五元组信息相匹配的分片会话,则确 定所述报文分片属于与所述相匹配的分片会话对应的待重组的报文。
10. 根据权利要求9所述的报文保序装置,其特征在于,所述确定模块还包括创建子模块,用于若没有查找到与所述报文分片中的五元组信息相匹配的分片会话, 则根据所述报文分片中的五元组信息创建新的分片会话。
全文摘要
本发明提供一种报文保序方法及装置,该方法包括接收报文分片;为报文分片分配序列号,并确定报文分片所属的待重组的报文;在接收到待重组的报文的所有报文分片的情况下,将待重组的报文进行重组,并将重组后的报文加入基本保序队列进行保序,其中,重组后的报文在基本保序队列中的序列号为报文分片的序列号。本发明改变了现有技术中不能对重组后的报文进行保序的问题,在不影响基本保序队列等待时间的基础上,实现了对重组后报文的保序。
文档编号H04L12/56GK101795236SQ20101013878
公开日2010年8月4日 申请日期2010年3月31日 优先权日2010年3月31日
发明者谢文辉, 陆晓萍 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1