多核系统的报文处理方法、装置及系统的制作方法

文档序号:575977阅读:155来源:国知局
专利名称:多核系统的报文处理方法、装置及系统的制作方法
技术领域
本发明实施例涉及通信系统中的报文处理技术,尤其涉及一种多核系统的报文处 理方法、装置及系统。
背景技术
多核系统是为提高数据处理速度而形成的产品。在多核系统中,每个核单元拥有 各自的执行程序及系统运行资源,各核单元的系统运行彼此相互独立。为了能让多核并行 工作来处理IP报文,多核系统中设置的网络接口在接收到IP报文后会进行轮询分发,公平 的分发给每个核单元来处理报文。当每个核单元收到分发给自身的IP报文时即进入独立 处理工作。对于一个中央处理单元(Central Processing Unit,简称CPU)来说,一个单核 CPU 一次只能处理一个IP报文,而对于多核CPU —次则能处理多个IP报文。在多核系统运行时,不能保证一条数据流的报文在同一个核单元上处理。一条数 据流的报文经过轮询分发,散落在各个核单元中进行处理,而每个核单元处理速度不会实 时一致,对于报文的处理有快有慢。当各个核单元将报文处理完毕发送到网络接口时,并不 能保证发送的顺序还是报文进入多核系统前的顺序,这样就产生了报文乱序的现象,也相 应提出了基本保序功能。报文的基本保序功能是保证从同一个网络接口进来的报文,经过 多核系统的处理后按照原先的顺序发送出去。在多核系统中,基本保序功能由基本保序模块实现,其处理流程包括网络接口为 接收到的每一个报文都打上序列号,以标识报文进入多核系统的顺序;带有序列号的报文 经过轮询分发机制分发给多核系统中的各个核单元进行处理;多核系统中的各个核单元 共同维护一个基本保序队列,通过加解锁的方式来操作队列;各个核单元经基本转发前流 程对报文处理后,根据业务决定报文的保序要求,即需保序发送还是放弃保序,将报文入 基本保序队列,即根据该报文的序列号在基本保序队列里对号入坐,随后调整索引尾(End Index);在刷队列时,从索引头(Start Index)开始,遇到需要保序的报文就发送,并调整 索引头,遇到放弃保序的报文则跳过,遇到还没入队列的报文则需要等待,以此达到报文保 序发送的功能。在索引头和索引尾之间都是已处理完或待入队列的报文。 但是,发明人在进行本发明的研究过程中,发现上述多核系统基于基本保序功能 的报文处理方法存在如下问题在报文中存在部分报文的处理时间较长,例如IP数据安 全(IP Security ;以下简称IPSec)报文为内嵌于基本转发流程中一种特殊协议处理的报 文。IP数据安全定义了 IP网络上数据安全的一整套体系结构,包括认证头(Authenticaton Header,简称 AH)、封装安全有效负载(Encapsulating Security Payload,简称 ESP)和密 钥管理协议(Internet Key Exchange,简称IKE)等协议。该协议作为三层隧道协议,是由 互联网工程任务组(The Internet Engineering Task Force ;以下简称IETF)制定的一系 列协议,它为IP数据报提供了高质量的、可互操作的、基于密码学的安全性。特定的通信方 之间在IP层通过加密与数据源验证等方式,来保证数据报在网络上传输时的私有性、完整 性、真实性和防重放。由于在处理IPSec报文时,IPSec隧道需要对IP报文进行加密和解密的处理,与一般的基本转发的普通报文相比,对IPSec报文的处理流程较复杂,处理时间 较长。由于现有技术在刷队列时遇到尚未入基本保序队列的报文会等待,所以为了不影响 整体的转发性能,核单元在识别到IPSec报文时就默认其放弃保序,并在基本保序队列对 应的序列号单元中标记其放弃保序,在刷队列时,当遇到IPSec报文则识别到其状态为放 弃保序,直接跳过,处理后续报文。因此现有技术中对IPSec报文是不进行保序的。因此,现有多核系统中,IPSec报文经过设备处理后在网络接口会出现乱序现象, 无法满足对实时报文顺序要求较高的应用,如语音业务,一旦IPSec报文出现乱序,则会有 断音、杂音等现象。

发明内容
本发明实施例提供了一种多核系统的报文处理方法、装置和系统,以改善多核系 统的报文处理性能,并减少报文乱序问题。本发明实施例提供了一种多核系统的报文处理方法,包括为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行 转发前处理;对所述报文进行识别;当识别到所述报文为特定报文时,将完成转发前处理的所述特定报文的状态信息 按所述特定报文的特定序列号存入特定保序队列的序列号单元中;对所述特定保序队列执行刷队列操作,按照特定报文在所述特定保序队列中的顺 序进行发送。本发明实施例还提供了一种多核系统的报文处理装置,包括转发前处理模块,用于对接收到的标记有连续基本序列号的报文进行转发前处 理;识别模块,用于对所述报文进行识别;特定报文入队列模块,用于当识别模块识别到所述报文为特定报文时,将完成转 发前处理的所述特定报文的状态信息按所述特定报文的特定序列号存入特定保序队列的 序列号单元中;特定报文刷队列模块,用于对所述特定保序队列执行刷队列操作,按照特定报文 在所述特定保序队列中的顺序进行发送。本发明实施例还提供了一种多核系统,包括网络接口和至少两个核单元,其中,所 述核单元包括上述的多核系统的报文处理装置,所述网络接口包括分配模块,用于为接收 到的报文标记连续的基本序列号,并将报文分配给所述核单元进行转发前处理。由以上技术方案可知,本发明实施例采用设置独立于基本保序队列的特定保序队 列来实现特定报文的保序功能的技术手段,在保证了非特定报文在基本保序队列中发送的 转发前处理效率的前提下,通过特定保序队列实现了特定报文的保序功能,避免了特定报 文乱序现象的发生,改善了多核系统的报文处理性能。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本发明实施例一提供的多核系统的报文处理方法的流程图;图2为本发明实施例二提供的多核系统的报文处理方法的流程图;图3为基本保序队列和特定保序队列的局部结构示意图;图4为本发明实施例三提供的多核系统的报文处理方法的流程图;图5为本发明实施例四提供的多核系统的报文处理方法的流程图;图6为本发明实施例五提供的多核系统的报文处理装置的结构示意图;图7为本发明实施例六提供的多核系统的报文处理装置的结构示意图;图8为本发明实施例七提供的多核系统的报文处理装置的结构示意图;图9为本发明实施例八提供的多核系统的报文处理装置的结构示意图;图10为本发明实施例九提供的多核系统的报文处理装置的结构示意图。
具体实施例方式下面通过具体实施例并结合附图对本发明做进一步的详细描述。实施例一图1为本发明实施例一提供的多核系统的报文处理方法的流程图。执行报文转发 前处理是多核系统的基本功能之一,本实施例的技术方案可以由多核系统中的保序模块来 执行,保序模块可以通过硬件和/或软件方式来实现,通常可以集成于各个核单元中。本实 施例的方法具体包括如下步骤步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将该报 文分配给核单元进行转发前处理;基本序列号是连续递增的序号,用于标识报文进入多核系统的顺序,一般可以设 置为在一定范围内循环使用,例如循环使用20比特(bit)的序号,由于当前处理的报文的 数量远小于20bit,所以可以看作当前的基本序列号是连续的,并且唯一标识报文。分配报 文时,可以按照轮询等规则将报文分配给各个核单元。步骤200、保序模块对报文进行识别;步骤A10、当保序模块识别到报文为特定报文时,将完成转发前处理的特定报文的 状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中。其中,特定报文可以是任何需要进行特殊处理的报文,相比于非特定报文而言,特 定报文的处理速度较慢。在不同情况下,特定报文可以有不同的定义,所以从接收到的报 文中识别出特定报文也可以有多种形式。可以是根据报文中携带的参数进行识别;或者还 可以是根据对报文进行的转发前处理次数进行识别;或者还可以根据对报文进行的特定转 发前处理进行识别。例如,对于IPSec报文,一方面可以根据报文协议头中的参数识别到 该报文为IPSec报文;或者也可以当监测到该报文进行第二次转发前处理时判断该报文为 IPSec报文;再或者,当监测到对该报文进行IPSec转发流程处理时,即识别该报文为IPSec 报文。 其中,该特定保序队列包括至少两个序列号单元,序列号单元用于存储与特定序列号对应的特定报文的状态信息,特定序列号是特定保序队列中各个序列号单元的队列元 素,状态信息一般包括该报文是否为特定,是否已处理,以及保序要求(即需保序还是放弃 保序),状态信息还可以包括该报文在内存中的地址指针、长度和发送端口等信息,以便刷 队列时能够提取报文进行发送;步骤A20、保序模块对特定保序队列执行刷队列操作,按照特定报文在特定保序队 列中的顺序进行发送。在本实施例的基础上,若在步骤200中在保序模块对报文进行识别,且识别到报 文为非特定报文时,则可以执行如下步骤步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定 报文的状态信息按该非特定报文的基本序列号存入基本保序队列的序列号单元中。其中,基本保序队列包括连续的至少两个序列号单元,各序列号单元用于存储与 基本序列号对应的报文的状态信息,只有标识有相同基本序列号的报文的状态信息才能存 入对应的序列号单元中。由于特定报文和非特定报文均具备基本序列号,所以序列号单元 中存储非特定报文的状态信息之外,还可以选择性地存储特定报文的状态信息。状态信息 类似的包括是否为特定、是否已处理、保序要求,以及报文的地址指针、长度和发送端口等 fn息ο步骤B20、保序模块对基本保序队列执行刷队列操作,按照非特定报文在基本保序 队列中的顺序进行发送。为实现基本保序队列刷队列过程中无须等待特定报文的处理结果,可以在步骤 200之后,进一步包括当保序模块识别到该报文为特定报文时,在基本保序队列中进行注册,即在特定 报文的基本序列号所对应的序列号单元中记录状态信息为特定。则在进行基本保序队列的刷队列操作时,若识别到该序列号单元对应的报文为特 定报文,可以直接跳过,以提高对非特定报文发送的处理速率。上述步骤A10、A20与步骤BIO、B20的先后顺序并不限定,步骤AlO和步骤BlO可 统称为入队列操作,步骤A20和步骤B20可统称为出队列操作。具体应用中,各核单元独立 地对报文进行转发前处理,当对报文完成转发前处理后就进行入队列操作,而后即可以执 行出队列操作。在本发明实施例所描述的多核系统中,进行转发前处理的各个核单元共同维护基 本保序队列和特定保序队列,任何一个核单元开始对基本保序队列或特定保序队列进行入 队列操作时都需要先进行加锁,防止别的核单元同时操作,成功加锁后,其他核单元如也要 操作该队列,则需要等待。当目前操作的核单元操作完毕进行解锁后,抢到锁资源的其他核 单元才可以对该队列进行操作。在入队列操作之后,需要相应地调整索引尾的位置。定义 基本保序队列具有第一索引头和第一索引尾,定义特定保序队列具有第二索引头和第二索 引尾,在初始时,设定第一索引头和第二索引头分别为第一个序列号单元。多核系统中,每 个核单元完成一个报文的转发前处理之后都可以进行刷队列操作。刷队列同样需要加解锁 操作,即在一个核单元刷队列时进行加锁,避免其他核单元同时对队列的操作。与入队列操 作不同的是,请求刷队列时,如果核单元抢不到锁资源,则可以退出进行后续操作,而不必 等待锁资源,因为抢到锁资源的核单元已经能够将当前可发送的报文通过刷队列发送了。
由于相比 于非特定报文而言,特定报文的处理速度较慢,若将特定报文放弃保序 则可能导致乱序的缺陷,但若等待特定报文转发前处理完成之后再发送后续报文,又会影 响非特定报文的转发效率。本实施例的技术方案通过增设特定保序队列来实现特定报文的 保序发送,对特定报文和非特定报文进行独立的保序操作。这样既能够满足特定报文的保 序要求,又可以不影响非特定报文的转发前处理效率,本实施例的技术方案尤其是解决了 现有的IPSec报文转发前处理问题。实施例二图2为本发明实施例二提供的多核系统的报文处理方法的流程图,本实施例可以 以实施例一为基础,具体包括如下步骤步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文 分配给核单元进行转发前处理;具体的,多核系统中的核单元对分配给自身的报文进行转发前处理,例如转发前 处理可以包括常规的基本转发流程等,核单元根据业务类型等参数可确定该报文的状态信 息为需要保序或放弃保序。步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤 C10,当识别出该报文为非特定报文时,进入步骤B10;步骤C10、将特定报文在基本保序队列中进行注册,进入步骤AlO ;步骤ClO具体的可以在特定报文的基本序列号所对应的序列号单元中记录状态 信息为特定,这种方式是将特定报文与基本保序队列进行关联的具体实施方式
之一。例如 图3为基本保序队列和特定保序队列的局部结构示意图,第一行示出了第一索引头和第一 索引尾之间的序列号单元,其中,“?”代表未处理的报文,“〇”代表非特定、已处理且需保 序的报文,“Δ”代表非特定、已处理且放弃保序的报文,“· ”代表特定的报文。步骤A10、当保序模块识别到报文为特定报文时,将完成转发前处理的特定报文的 状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中,进入步骤A20;步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定 报文的状态信息按非特定报文的基本序列号存入基本保序队列的序列号单元中,进入步骤 B20 ;上述步骤AlO和BlO的顺序不作限制,是随着转发前处理是否完成的进度来进行 的。当各核单元完成入队列操作后,还需要进行刷队列操作,以便将完成转发前处理 的报文按照顺序发送出去。具体的,基本保序队列和特定保序队列的刷队列操作可以独立 地进行,其中,当某个核单元抢到执行基本保序队列的刷队列操作的锁资源之后,步骤B20 具体包括如下步骤步骤B21、在基本保序列队中进行第一索引头识别,第一索引头识别包括对第一索 弓丨头所指向的当前序列号单元中的状态信息进行识别;步骤B22、当识别到当前序列号单元中状态信息为非特定、已处理且需保序时,将 当前基本序列号对应的非特定报文进行发送,并将第一索引头加一,而后返回步骤B21,执 行第一索引头识别;或步骤B23、当识别到当前序列号单元中状态信息为非特定、已处理且放弃保序时,跳过当前序列号单元,将第一索引头加一,而后返回步骤B21,执行第一索引头识别;或步骤B24、当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元, 将第一索引头加一,而后返回步骤B21,执行第一索引头识别;或步骤B25、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。也就是说,正在执行刷队列操作的核单元遇到报文没有入队列的序列号单元时, 则结束该核单元的本次刷队列操作,释放锁资源,多核系统等待下一次任意一个核单元继 续执行刷队列操作。上述步骤B25中,状态信息为未处理,则表示该序列号单元对应的报文还未完成 转发前处理,尚未执行入队列操作,还不能确定其保序要求等信息,需要等待报文完成转发 前处理后入队列,在执行下一次刷队列时再发送。上述步骤实现了基本保序队列的刷队列操作,当识别到非特定、已处理且需保序 的非特定报文时,在状态信息中查询该非特定报文在内存中的地址指针、长度以及发送端 口等,而后提取该报文进行发送。上述刷队列操作无须对特定报文进行处理,直接跳过。当 特定报文为处理速度较慢的IPSec报文时,不会影响非特定报文的转发前处理速率。为保证特定保序队列刷队列操作的顺利执行,在上述步骤B24中,当识别到当前 序列号单元中状态信息为特定时,还进一步执行下述操作步骤B26、从当前序列号单元开始,顺序地搜索出下一个状态信息为特定的序列号 单元,并将搜索到的序列号单元的基本序列号存入特定保序队列中与当前序列号对应的序 列号单元相邻的下一个序列号单元中,作为序列号索引。具体的,所谓序列号索引,也可以是状态信息的一种,用于指示下一个存储有特定 报文的序列号单元。在上述技术方案的基础上,对特定保序队列执行刷队列操作,按照特定报文在特 定保序队列中的顺序进行发送包括如下步骤。图3还示出了特定保序队列的局部结构,第 二行示出了第二索引头和第二索引尾之间的序列号单元,其中,“ ”代表特定、已处理且需 保序的报文,“▲”代表特定、已处理且放弃保序的报文,“ ?,,代表未处理的报文,“ □,,代表 非特定的报文。当某个核单元抢到执行特定保序队列的刷队列操作的锁资源之后,步骤A20具体 包括如下步骤步骤A21、在特定保序列队中进行第二索引头识别,第二索引头识别包括对第二索 弓I头所指向的当前序列号单元中的状态信息进行识别;步骤A22、当识别到当前序列号单元中状态信息为特定、已处理且需保序时,将当 前序列号单元对应的特定报文进行发送,并将第二索引头加一,而后返回步骤A21,执行第 二索引头识别;或步骤A23、当识别到当前序列号单元中状态信息为特定、已处理且放弃保序时,跳 过当前序列号单元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或步骤A24、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操 作。也就是说正在执行刷队列操作的核单元遇到报文没有入队列的序列号单元时,则该核 单元结束本次刷队列操作,释放锁资源,多核系统等待下一次任意一个核单元继续执行刷队列操作。或步骤、当识别到当前序列号单元中状态信息为序列号索引时,将第二索引头 更新至序列号索引指向的序列号单元,而后返回步骤A21,执行第二索引头识别。夹在两个特定报文中间的非特定报文可称为特定报文空隙,例如夹在两个IPkc 报文中间的普通报文就可称为IPkc空隙。采用本实施例的技术方案,将下一个特定报文 的基本序列号记录到特定保序队列中当前特定报文下一个序列号单元中,使得识别下一个 序列号单元中状态信息时,不仅可以获知此序列号单元对应的报文为非特定报文,而且可 以直接索引至下一个特定报文的位置,使得在进行特定保序队列刷队列操作时,可以快速 地将非特定报文忽略,并快速地索引下一个需要发送的特定报文。当然,若下一个特定报文 此时还没有注册到基本保序队列之中,则按照未处理的情况进行处理。本实施例的技术方案,可以使特定保序队列利用基本序列号兼作特定序列号。非 特定报文无论其保序要求为需保序还是放弃保序,都要进行入基本保序队列的操作,特定 报文无论其保序要求为需保序还是放弃保序,都要进行入特定保序队列的操作。并且,识别 出为特定报文之后,预先在基本保序队列中进行注册,则在基本保序队列进行刷队列操作 时,无需等待特定报文完成转发前处理并入队列后就可以获知该序列号单元对应的是特定 报文,从而直接跳过,该技术方案可以显著提高对非特定报文的发送速度。实施例三图4为本发明实施例三提供的多核系统的报文处理方法的流程图,本实施例可以 以实施例一为基础,具体包括如下步骤步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文 分配给核单元进行转发前处理;步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤 C10,当识别出该报文为非特定报文时,进入步骤C20 ;步骤C10、将特定报文在基本保序队列中进行注册,在特定报文的基本序列号所对 应的序列号单元中记录状态信息为特定,进入步骤AlO ;步骤C20、当保序模块识别到该报文为非特定报文时,在特定保序队列中与非特定 报文的基本序列号所对应的序列号单元中记录状态信息为非特定,进入步骤B10。步骤A10、将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号 存入特定保序队列的序列号单元中;步骤B10、将完成转发前处理的非特定报文的状态信息按非特定报文的基本序列 号存入基本保序队列的序列号单元中;基本保序队列和特定保序队列的刷队列操作可以独立进行,其中,当某个核单元 抢到执行基本保序队列的刷队列操作的锁资源之后,基本保序队列的刷队列操作包括上述 的步骤B21 步骤B25。上述步骤实现了基本保序队列的刷队列操作,无须对特定报文进行处理,直接跳 过。当特定报文为处理速度较慢的IPSec报文时,不会影响非特定报文的转发前处理速率。在上述技术方案的基础上,当某个核单元抢到执行特定保序队列的刷队列操作的 锁资源之后,对特定保序队列执行刷队列操作,按照特定报文在特定保序队列中的顺序进 行发送包括上述类似的步骤A21 步骤A24,且上述的步骤替换为执行
步骤A25b、当识别到当前序列号单元中状态信息为非特定时,跳过当前序列号单 元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别。本实施例的技术方案,一方面将识别到的特定报文在基本保序队列中进行注册, 另一方面将识别到的非特定报文在特定保序队列中进行注册,则基本保序队列的刷队列操 作不必等待特定报文是否完成转发前处理,而可以直接跳过,类似的,特定保序队列的刷队 列操作必等待非特定报文是否完成转发前处理,可以直接跳过。对于特定报文与非特定报 文的处理速度相近,基于其他原因独立对特定报文进行保序的情况尤为适用。实施例四图5为本发明实施例四提供的多核系统的报文处理方法的流程图,本实施例与实 施例二所采用的特定序列号分配方式不同。本实施例的方法具体包括如下步骤步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文 分配给核单元进行转发前处理;步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤 C10,当识别出该报文为非特定报文时,进入步骤B10;步骤C10、将特定报文在基本保序队列中进行注册,在特定报文的基本序列号所对 应的序列号单元中记录状态信息为特定,进入步骤AlO ;在将报文关联至保序队列的同时,多核系统中的核单元对分配给自身的报文进行 转发前处理。步骤A10、将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号 存入特定保序队列的序列号单元中,进入步骤A20 ;步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定 报文的状态信息按非特定报文的基本序列号存入基本保序队列的序列号单元中,进入步骤 B20 ;而后可以独立地进行刷队列操作。对基本保序队列进行刷队列操作的流程具体包括上述的步骤B21、步骤B22、步骤 B23和步骤B25,且步骤B24替换为执行步骤B24c 步骤B24c、当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元, 将第一索引头加一,同时为当前基本序列号对应的特定报文分配连续的特定序列号,以在 特定保序队列中增加与分配的特定序列号对应的序列号单元。由于特定报文的特定序列号在整个多核系统中应是唯一的,所以在基本保序队列 中为特定报文分配特定序列号时需要进行加解锁处理。本实施例的技术方案不用预先识别报文是否为特定报文,而是在报文经过转发前 处理之后入基本保序队列时,保序模块可以识别到已处理的报文为特定报文,则为特定报 文分配独立于基本序列号的特定序列号;基于上述技术方案,对特定保序队列进行刷队列操作的流程包括如下步骤步骤A21、在特定保序队列中进行第二索引头识别,第二索引头识别包括对第二索 弓丨头所指向的当前序列号单元中的状态信息进行识别; 步骤A22c、当识别到当前序列号单元中状态信息为已处理且需保序时,将所述当 前序列号单元对应的特定报文进行发送,并将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或步骤A23C、当识别到当前序列号单元中状态信息为已处理且放弃保序时,跳过当 前序列号单元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或步骤、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。本实施例的技术方案,在进行基本保序队列的刷队列操作时为已注册的、且已处 理的特定报文按顺序分配特定序列号。由于特定报文的状态信息是按照特定序列号连续存 储的,所以在特定保序队列中只需识别特定报文是否已处理,或是否需要保序,而无须识别 是否为特定报文,因此实现方案更为简单。本发明各实施例所提供的多核系统的报文处理方法,实现了特定报文和非特定报 文的保序功能,既能够保证非特定报文的转发前处理效率,又能够实现特定报文高可靠性 隧道报文传输,保障按序发送报文要求较高的应用。本发明的技术方案尤其适用于IPSec报文的保序处理。实施例五图6为本发明实施例五提供的多核系统的报文处理装置的结构示意图。该装置可 以包括转发前处理模块10、识别模块20、特定报文入队列模块30和特定报文刷队列模块 40。其中转发前处理模块10用于对接收到的标记有连续基本序列号的报文进行转发前处 理;识别模块20,用于对报文进行识别;特定报文入队列模块30,用于当识别模块20识别到报文为特定报文时,将完成转 发前处理的特定报文的状态信息按特定报文的特定序列号存入特定保序队列的序列号单 元中,特定保序队列包括至少两个序列号单元,各序列号单元用于存储与特定序列号对应 的特定报文的状态信息;特定报文刷队列模块40,用于对特定保序队列执行刷队列操作,按照特定报文在 特定保序队列中的顺序进行发送。本实施例采用了增设特定保序队列的技术方案,能够在按照基本序列号实现基本 保序功能的基础上,对特定报文实现独立的保序功能。在上述技术方案的基础上,该报文处理装置还可以包括非特定报文入队列模块 50和非特定报文刷队列模块60。其中非特定报文入队列模块50,用于当识别模块20识别到报文为非特定报文时,将完 成转发前处理的非特定报文的状态信息按非特定报文的基本序列号存入基本保序队列的 序列号单元中,基本保序队列包括连续的至少两个序列号单元,各序列号单元用于存储与 基本序列号对应的报文的状态信息;非特定报文刷队列模块60,用于对基本保序队列执行刷队列操作,按照非特定报 文在基本保序队列中的顺序进行发送。该装置还可以进一步包括特定报文注册模块70。特定报文注册模块70,用于当识别模块20识别到报文为特定报文时,在基本保序 队列中,在特定报文的基本序列号所对应的序列号单元中记录状态信息为特定。
本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具 有相应的功能模块,能够以特定保序队列实现特定报文的保序,避免出现乱序问题,同时在 基本保序队列中仅实现非特定报文的保序发送,无须等待特定报文的处理,而可以直接跳 过,保证了非特定报文的转发前处理效率。本实施例多核系统的报文处理装置可以是多核 系统中的多个功能模块,也可以集成在核单元中。实施例六图7为本发明实施例六提供的多核系统的报文处理装置的结构示意图。本实施例 可以实施例五为基础,非特定报文刷队列模块60具体可以包括第一索引头识别单元601、 第一发送单元602、第一非特定报文跳过单元603、第一特定报文跳过单元604和第一未处 理单元605。其中 第一索引头识别单元601,用于在基本保序列队中进行第一索引头识别,第一索引 头识别包括对第一索引头所指向的当前序列号单元中的状态信息进行识别;第一发送单元602,用于当第一索引头识别单元601识别到当前序列号单元中状 态信息为非特定、已处理且需保序时,将当前基本序列号对应的非特定报文进行发送,并将 第一索引头加一,而后触发第一索引头识别单元601 ;第一非特定报文跳过单元603,用于当第一索引头识别单元601识别到当前序列 号单元中状态信息为非特定、已处理且放弃保序时,跳过当前序列号单元,将第一索引头加 一,而后触发第一索引头识别单元601 ;第一特定报文跳过单元604,用于当第一索引头识别单元601识别到当前序列号 单元中状态信息为特定时,跳过当前序列号单元,将第一索引头加一,而后触发第一索引头 识别单元601 ;第一未处理单元605,用于当第一索引头识别单元601识别到当前序列号单元中 状态信息为未处理时,结束本次刷队列操作。本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具 有相应的功能模块,能够以特定保序队列实现特定报文的保序,避免出现乱序问题,同时在 基本保序队列中仅实现非特定报文的保序发送,无须等待特定报文的处理,而可以直接跳 过,保证了非特定报文的转发前处理效率。实施例七图8为本发明实施例七提供的多核系统的报文处理装置的结构示意图。本实施例 可以上述实施例六为基础,其中,非特定报文刷队列模块60还包括第一索引设定单元606,用于当第一索引头识别单元601识别到当前序列号单元 中状态信息为特定时,从当前序列号单元开始,顺序搜索下一个状态信息为特定的序列号 单元,并将搜索到的序列号单元的基本序列号存入特定保序队列中与当前序列号对应的序 列号单元相邻的下一个序列号单元中,作为序列号索引。本实施例中具体采用基本序列号作为特定序列号,且特定报文刷队列模块40具 体包括第二索引头识别单元401、第二发送单元402、第二特定报文跳过单元403、第二未 处理单元404和第二索引更新单元405。其中第二索引头识别单元401,用于在特定保序列队中进行第二索引头识别,第二索引 头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;
第二发送单元402,用于当第二索引头识别单元401识别到当前序列号单元中状 态信息为特定、已处理且需保序时,将当前序列号单元对应的特定报文进行发送,并将第二 索引头加一,而后触发第二索引头识别单元401 ;第二特定报文跳过单元403,用于当第二索引头识别单元401识别到当前序列号 单元中状态信息为特定、已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一, 而后触发第二索引头识别单元401 ;第二未处理单元404,用于当第二索引头识别单元401识别到当前序列号单元中 状态信息为未处理时,结束本次刷队列操作;第二索引更新单元405,用于当第二索引头识别单元401识别到当前序列号单元 中状态信息为序列号索引时,将第二索引头更新至序列号索引指向的序列号单元,而后触 发第二索引头识别单元401。本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具 有相应的功能模块,不仅可以获知此序列号单元对应的报文为非特定报文,而且可以直接 索引至下一个特定报文的位置,使得在进行特定保序队列刷队列操作时,可以快速地将非 特定报文忽略,并快速地索引下一个需要发送的特定报文。实施例八图9为本发明实施例八提供的多核系统的报文处理装置的结构示意图。本实施例 可以上述实施例六为基础,该装置还包括非特定报文注册模块80。其中,非特定报文注册模 块80用于当识别到报文为非特定报文时,在特定保序队列中与非特定报文的基本序列号 所对应的序列号单元中记录状态信息为非特定。本实施例中具体采用基本序列号作为特定序列号,且特定报文刷队列模块40具 体包括第二索引头识别单元401、第二发送单元402、第二特定报文跳过单元403、第二未 处理单元404和第二非特定报文跳过单元406。其中第二索引头识别单元401,用于在特定保序列队中进行第二索引头识别,第二索引 头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;第二发送单元402,用于当第二索引头识别单元401识别到当前序列号单元中状 态信息为特定、已处理且需保序时,将当前序列号单元对应的特定报文进行发送,并将第二 索引头加一,而后触发第二索引头识别单元401 ;第二特定报文跳过单元403,用于当第二索引头识别单元401识别到当前序列号 单元中状态信息为特定、已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一, 而后触发第二索引头识别单元401 ;第二未处理单元404,用于当第二索引头识别单元401识别到当前序列号单元中 状态信息为未处理时,结束本次刷队列操作;第二非特定报文跳过单元406,用于当第二索引头识别单元401识别到当前序列 号单元中状态信息为非特定时,跳过当前序列号单元,将第二索引头加一,而后触发第二索 引头识别单元401。本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具 有相应的功能模块,一方面将识别到的特定报文在基本保序队列中进行注册,另一方面将 识别到的非特定报文在特定保序队列中进行注册,则基本保序队列的刷队列操作不必等待特定报文是否完成转发前处理,而可以直接跳过,类似的,特定保序队列的刷队列操作必等 待非特定报文是否完成转发前处理,可以直接跳过。对于特定报文与非特定报文的处理速 度相近,基于其他原因独立对特定报文进行保序的情况尤为适用。实施例九 图10为本发明实施例九提供的多核系统的报文处理装置的结构示意图。本实施 例可以实施例五为基础,非特定报文刷队列模块60中的第一特定报文跳过单元604还用于 为当前基本序列号对应的特定报文分配连续的特定序列号,以在特定保序队列中增加与分 配的特定序列号对应的序列号单元。相应的,该特定报文刷队列模块40具体包括第四索引头识别单元411、第四发送 单元412、第四特定报文跳过单元413和第四未处理单元414。其中第四索引头识别单元411,用于在特定保序队列中进行第二索引头识别,第二索引 头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;第四发送单元412,用于当第四索引头识别单元411识别到当前序列号单元中状 态信息为已处理且需保序时,将当前序列号单元对应的特定报文进行发送,并将第二索引 头加一,而后触发第四索引头识别单元411 ;第四特定报文跳过单元413,用于当第四索引头识别单元411识别到当前序列号 单元中状态信息为已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后触 发第四索引头识别单元411 ;第四未处理单元414,用于当第四索引头识别单元411识别到当前序列号单元中 状态信息为未处理时,结束本次刷队列操作。本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具 有相应的功能模块,而且由于特定报文的状态信息是按照特定序列号连续存储的,所以在 特定保序队列中只需识别特定报文是否已处理,或是否需要保序,而无须识别是否为特定 报文,实现方案简单。实施例十本发明实施例十还提供一种多核系统。该多核系统包括网络接口和至少两个核单 元,网络接口用于接收报文,还可以包括一分配模块,分配模块用于为接收到的报文标记连 续的基本序列号,并将报文分配给所述核单元进行转发前处理。核单元可以包括本发明实 施例所提供的任意一种多核系统的报文处理装置。本实施例可采用本发明提供的多核系统的报文处理装置,处理装置的各功能模块 可以是多核系统中的独立模块或集成在各个核单元中的模块,以软件和/或硬件的形式实 现。本实施例多核系统可以执行本发明多核系统的报文处理方法,具有相应的功能模块,采 用设置独立于基本保序队列的特定保序队列来实现特定报文的保序功能的技术手段,保证 了非特定报文在基本保序队列中发送的转发前处理效率,且通过特定保序队列实现了特定 报文的保序功能,避免了特定报文乱序现象的发生,改善了多核系统的报文处理性能。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过 程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序 在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者 光盘等各种可以存储程序代码的介质。
最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然 可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替 换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精 神和范围。
权利要求
1.一种多核系统的报文处理方法,其特征在于,包括为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行转发 前处理;对所述报文进行识别;当识别到所述报文为特定报文时,将完成转发前处理的所述特定报文的状态信息按所 述特定报文的特定序列号存入特定保序队列的序列号单元中;对所述特定保序队列执行刷队列操作,按照特定报文在所述特定保序队列中的顺序进 行发送。
2.根据权利要求1所述的多核系统的报文处理方法,其特征在于,对所述报文进行识 别包括根据所述报文中携带的参数对所述报文进行识别;或 根据对所述报文进行的转发前处理次数对所述报文进行识别;或 根据对所述报文进行的特定转发前处理对所述报文进行识别。
3.根据权利要求1所述的多核系统的报文处理方法,其特征在于,还包括当识别到所述报文为非特定报文时,将完成转发前处理的所述非特定报文的状态信息 按所述非特定报文的基本序列号存入基本保序队列的序列号单元中;对所述基本保序队列执行刷队列操作,按照非特定报文在所述基本保序队列中的顺序 进行发送。
4.根据权利要求3所述的多核系统的报文处理方法,其特征在于,在对所述报文进行 识别之后,还包括当识别到所述报文为特定报文时,在所述基本保序队列中,在所述特定报文的基本序 列号所对应的序列号单元中记录状态信息为特定。
5.根据权利要求4所述的多核系统的报文处理方法,其特征在于,对所述基本保序队 列执行刷队列操作,按照所述非特定报文在所述基本保序队列中的顺序进行发送包括在所述基本保序列队中进行第一索引头识别,所述第一索引头识别包括对第一索引头 所指向的当前序列号单元中的状态信息进行识别;当识别到当前序列号单元中状态信息为非特定、已处理且需保序时,将当前基本序列 号对应的非特定报文进行发送,并将第一索引头加一,而后返回执行第一索引头识别;或当识别到当前序列号单元中状态信息为非特定、已处理且放弃保序时,跳过当前序列 号单元,将第一索引头加一,而后返回执行第一索引头识别;或当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元,将第一索引头 加一,而后返回执行第一索引头识别;或当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。
6.根据权利要求5所述的多核系统的报文处理方法,其特征在于当所述特定序列号与所述基本序列号相同时,则对所述基本保序队列执行刷队列操作 还包括当识别到当前序列号单元中状态信息为特定时,从当前序列号单元开始,顺序搜索下 一个状态信息为特定的序列号单元,并将搜索到的序列号单元的基本序列号存入特定保序 队列中与当前序列号对应的序列号单元相邻的下一个序列号单元中,作为序列号索引;对所述特定保 序队列执行刷队列操作,按照特定报文在所述特定保序队列中的顺序进 行发送包括在所述特定保序列队中进行第二索引头识别,所述第二索引头识别包括对第二索引头 所指向的当前序列号单元中的状态信息进行识别;当识别到当前序列号单元中状态信息为特定、已处理且需保序时,将所述当前序列号 单元对应的特定报文进行发送,并将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为特定、已处理且放弃保序时,跳过当前序列号 单元,将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作;或 当识别到当前序列号单元中状态信息为序列号索引时,将第二索引头更新至所述序列 号索引指向的序列号单元,而后返回执行第二索引头识别。
7.根据权利要求5所述的多核系统的报文处理方法,其特征在于 当所述特定序列号与所述基本序列号相同时,还包括当识别到所述报文为非特定报文时,在所述特定保序队列中与所述非特定报文的基本 序列号所对应的序列号单元中记录状态信息为非特定;对所述特定保序队列执行刷队列操作,按照特定报文在所述特定保序队列中的顺序进 行发送包括在所述特定保序列队中进行第二索引头识别,所述第二索引头识别包括对第二索引头 所指向的当前序列号单元中的状态信息进行识别;当识别到当前序列号单元中状态信息为特定、已处理且需保序时,将所述当前序列号 单元对应的特定报文进行发送,并将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为特定、已处理且放弃保序时,跳过当前序列号 单元,将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作;或 当识别到当前序列号单元中状态信息为非特定时,跳过当前序列号单元,将第二索引 头加一,而后返回执行第二索引头识别。
8.根据权利要求5所述的多核系统的报文处理方法,其特征在于所述当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元,将第一索 引头加一,而后返回执行第一索引头识别还包括为当前序列号对应的特定报文分配连续 的特定序列号,以在所述特定保序队列中增加与分配的特定序列号对应的序列号单元;对所述特定保序队列执行刷队列操作,按照特定报文在所述特定保序队列中的顺序进 行发送包括在所述特定保序队列中进行第二索引头识别,第二索引头识别包括对第二索引头所指 向的当前序列号单元中的状态信息进行识别;当识别到当前序列号单元中状态信息为已处理且需保序时,将所述当前序列号单元对 应的特定报文进行发送,并将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为已处理且放弃保序时,跳过当前序列号单元, 将第二索引头加一,而后返回执行第二索引头识别;或当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。
9.一种多核系统的报文处理装置,其特征在于,包括转发前处理模块,用于对接收到的标记有连续基本序列号的报文进行转发前处理;识别模块,用于对所述报文进行识别;特定报文入队列模块,用于当识别模块识别到所述报文为特定报文时,将完成转发前 处理的所述特定报文的状态信息按所述特定报文的特定序列号存入特定保序队列的序列 号单元中;特定报文刷队列模块,用于对所述特定保序队列执行刷队列操作,按照特定报文在所 述特定保序队列中的顺序进行发送。
10.根据权利要求9所述的多核系统的报文处理装置,其特征在于,还包括非特定报文入队列模块,用于当识别模块识别到所述报文为非特定报文时,将完成转 发前处理的所述非特定报文的状态信息按所述非特定报文的基本序列号存入基本保序队 列的序列号单元中;非特定报文刷队列模块,用于对所述基本保序队列执行刷队列操作,按照非特定报文 在所述基本保序队列中的顺序进行发送。
11.根据权利要求10所述的多核系统的报文处理装置,其特征在于,还包括特定报文注册模块,用于当识别模块识别到所述报文为特定报文时,在所述基本保序 队列中,在所述特定报文的基本序列号所对应的序列号单元中记录状态信息为特定。
12.根据权利要求11所述的多核系统的报文处理装置,其特征在于,所述非特定报文 刷队列模块包括第一索引头识别单元,用于在所述基本保序列队中进行第一索引头识别,所述第一索 引头识别包括对第一索引头所指向的当前序列号单元中的状态信息进行识别;第一发送单元,用于当第一索引头识别单元识别到当前序列号单元中状态信息为非特 定、已处理且需保序时,将当前基本序列号对应的非特定报文进行发送,并将第一索引头加 一,而后触发所述第一索引头识别单元;第一非特定报文跳过单元,用于当第一索引头识别单元识别到当前序列号单元中状态 信息为非特定、已处理且放弃保序时,跳过当前序列号单元,将第一索引头加一,而后触发 所述第一索引头识别单元;第一特定报文跳过单元,用于当第一索引头识别单元识别到当前序列号单元中状态 信息为特定时,跳过当前序列号单元,将第一索引头加一,而后触发所述第一索引头识别单 元;第一未处理单元,用于当第一索引头识别单元识别到当前序列号单元中状态信息为未 处理时,结束本次刷队列操作。
13.根据权利要求12所述的多核系统的报文处理装置,其特征在于所述非特定报文刷队列模块还包括第一索引设定单元,用于当第一索引头识别单元识 别到当前基本序列号单元中状态信息为特定时,从当前序列号单元开始,顺序搜索下一个 状态信息为特定的序列号单元,并将搜索到的序列号单元的基本序列号存入特定保序队列 中与当前序列号对应的序列号单元相邻的下一个序列号单元中,作为序列号索引;采用基本序列号作为所述特定序列号,且所述特定报文刷队列模块包括第二索引头识别单元,用于在所述特定保序列队中进行第二索引头识别,第二索引头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;第二发送单元,用于当第二索引头识别单元识别到当前序列号单元中状态信息为特 定、已处理且需保序时,将所述当前序列号单元对应的特定报文进行发送,并将第二索引头 加一,而后触发所述第二索引头识别单元;第二特定报文跳过单元,用于当第二索引头识别单元识别到当前序列号单元中状态信 息为特定、已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后触发所述 第二索引头识别单元;第二未处理单元,用于当第二索引头识别单元识别到当前序列号单元中状态信息为未 处理时,结束本次刷队列操作;第二索引更新单元,用于当第二索引头识别单元识别到当前序列号单元中状态信息为 序列号索引时,将第二索引头更新至所述序列号索引指向的序列号单元,而后触发所述第 二索引头识别单元。
14.根据权利要求12所述的多核系统的报文处理装置,其特征在于还包括非特定报文注册模块,用于当识别到所述报文为非特定报文时,在所述特定 保序队列中与所述非特定报文的基本序列号所对应的序列号单元中记录状态信息为非特 定;采用基本序列号作为所述特定序列号,且所述特定报文刷队列模块包括 第二索引头识别单元,用于在所述特定保序列队中进行第二索引头识别,第二索引头 识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;第二发送单元,用于当第二索引头识别单元识别到当前序列号单元中状态信息为特 定、已处理且需保序时,将所述当前序列号单元对应的特定报文进行发送,并将第二索引头 加一,而后触发所述第二索引头识别单元;第二特定报文跳过单元,用于当第二索引头识别单元识别到当前序列号单元中状态信 息为特定、已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后触发所述 第二索引头识别单元;第二未处理单元,用于当第二索引头识别单元识别到当前序列号单元中状态信息为未 处理时,结束本次刷队列操作;第二非特定报文跳过单元,用于当第二索引头识别单元识别到当前序列号单元中状态 信息为非特定时,跳过当前序列号单元,将第二索引头加一,而后触发所述第二索引头识别 单元。
15.根据权利要求12所述的多核系统的报文处理装置,其特征在于所述第一特定报文跳过单元还用于为当前基本序列号对应的特定报文分配连续的特 定序列号,以在所述特定保序队列中增加与分配的特定序列号对应的序列号单元, 所述特定报文刷队列模块包括第四索引头识别单元,用于在所述特定保序队列中进行第二索引头识别,第二索引头 识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;第四发送单元,用于当第四索引头识别单元识别到当前序列号单元中状态信息为已处 理且需保序时,将所述当前序列号单元对应的特定报文进行发送,并将第二索引头加一,而 后触发所述第四索引头识别单元;第四特定报文跳过单元,用于当第四索引头识别单元识别到当前序列号单元中状态信 息为已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后触发所述第四索 引头识别单元;第四未处理单元,用于当第四索引头识别单元识别到当前序列号单元中状态信息为未 处理时,结束本次刷队列操作。
16. 一种多核系统,包括网络接口和至少两个核单元,其特征在于所述核单元包括权 利要求9 15任一所述的多核系统的报文处理装置,所述网络接口包括分配模块,用于为 接收到的报文标记连续的基本序列号,并将报文分配给所述核单元进行转发前处理。
全文摘要
本发明实施例涉及一种多核系统的报文处理方法、装置和系统。该方法包括为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行转发前处理;对报文进行识别;当识别到报文为特定报文时,将完成转发前处理的特定报文的状态信息按特定报文的特定序列号存入特定保序队列中的序列号单元;对特定保序队列执行刷队列操作,按照特定报文在特定保序队列中的顺序进行发送。本发明实施例采用设置独立于基本保序队列的特定保序队列的技术手段,避免了特定报文乱序现象的发生,改善了多核系统的报文处理性能。
文档编号H04L12/56GK102055649SQ200910208808
公开日2011年5月11日 申请日期2009年10月29日 优先权日2009年10月29日
发明者李珅, 陆晓萍 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1