具体实施方式
下面通过具体实施例并结合附图对本发明做进一步的详细描述。
实施例一
图1为本发明实施例一提供的多核系统的报文处理方法的流程图。执行报文转发前处理是多核系统的基本功能之一,本实施例的技术方案可以由多核系统中的保序模块来执行,保序模块可以通过硬件和/或软件方式来实现,通常可以集成于各个核单元中。本实施例的方法具体包括如下步骤:
步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将该报文分配给核单元进行转发前处理;
基本序列号是连续递增的序号,用于标识报文进入多核系统的顺序,一般可以设置为在一定范围内循环使用,例如循环使用20比特(bit)的序号,由于当前处理的报文的数量远小于20bit,所以可以看作当前的基本序列号是连续的,并且唯一标识报文。分配报文时,可以按照轮询等规则将报文分配给各个核单元。
步骤200、保序模块对报文进行识别;
步骤A10、当保序模块识别到报文为特定报文时,将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中。
其中,特定报文可以是任何需要进行特殊处理的报文,相比于非特定报文而言,特定报文的处理速度较慢。在不同情况下,特定报文可以有不同的定义,所以从接收到的报文中识别出特定报文也可以有多种形式。可以是根据报文中携带的参数进行识别;或者还可以是根据对报文进行的转发前处理次数进行识别;或者还可以根据对报文进行的特定转发前处理进行识别。例如,对于IPSec报文,一方面可以根据报文协议头中的参数识别到该报文为IPSec报文;或者也可以当监测到该报文进行第二次转发前处理时判断该报文为IPSec报文;再或者,当监测到对该报文进行IPSec转发流程处理时,即识别该报文为IPSec报文。
其中,该特定保序队列包括至少两个序列号单元,序列号单元用于存储与特定序列号对应的特定报文的状态信息,特定序列号是特定保序队列中各个序列号单元的队列元素,状态信息一般包括该报文是否为特定,是否已处理,以及保序要求(即需保序还是放弃保序),状态信息还可以包括该报文在内存中的地址指针、长度和发送端口等信息,以便刷队列时能够提取报文进行发送;
步骤A20、保序模块对特定保序队列执行刷队列操作,按照特定报文在特定保序队列中的顺序进行发送。
在本实施例的基础上,若在步骤200中在保序模块对报文进行识别,且识别到报文为非特定报文时,则可以执行如下步骤:
步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定报文的状态信息按该非特定报文的基本序列号存入基本保序队列的序列号单元中。
其中,基本保序队列包括连续的至少两个序列号单元,各序列号单元用于存储与基本序列号对应的报文的状态信息,只有标识有相同基本序列号的报文的状态信息才能存入对应的序列号单元中。由于特定报文和非特定报文均具备基本序列号,所以序列号单元中存储非特定报文的状态信息之外,还可以选择性地存储特定报文的状态信息。状态信息类似的包括是否为特定、是否已处理、保序要求,以及报文的地址指针、长度和发送端口等信息。
步骤B20、保序模块对基本保序队列执行刷队列操作,按照非特定报文在基本保序队列中的顺序进行发送。
为实现基本保序队列刷队列过程中无须等待特定报文的处理结果,可以在步骤200之后,进一步包括:
当保序模块识别到该报文为特定报文时,在基本保序队列中进行注册,即在特定报文的基本序列号所对应的序列号单元中记录状态信息为特定。
则在进行基本保序队列的刷队列操作时,若识别到该序列号单元对应的报文为特定报文,可以直接跳过,以提高对非特定报文发送的处理速率。
上述步骤A10、A20与步骤B10、B20的先后顺序并不限定,步骤A10和步骤B10可统称为入队列操作,步骤A20和步骤B20可统称为出队列操作。具体应用中,各核单元独立地对报文进行转发前处理,当对报文完成转发前处理后就进行入队列操作,而后即可以执行出队列操作。
在本发明实施例所描述的多核系统中,进行转发前处理的各个核单元共同维护基本保序队列和特定保序队列,任何一个核单元开始对基本保序队列或特定保序队列进行入队列操作时都需要先进行加锁,防止别的核单元同时操作,成功加锁后,其他核单元如也要操作该队列,则需要等待。当目前操作的核单元操作完毕进行解锁后,抢到锁资源的其他核单元才可以对该队列进行操作。在入队列操作之后,需要相应地调整索引尾的位置。定义基本保序队列具有第一索引头和第一索引尾,定义特定保序队列具有第二索引头和第二索引尾,在初始时,设定第一索引头和第二索引头分别为第一个序列号单元。多核系统中,每个核单元完成一个报文的转发前处理之后都可以进行刷队列操作。刷队列同样需要加解锁操作,即在一个核单元刷队列时进行加锁,避免其他核单元同时对队列的操作。与入队列操作不同的是,请求刷队列时,如果核单元抢不到锁资源,则可以退出进行后续操作,而不必等待锁资源,因为抢到锁资源的核单元已经能够将当前可发送的报文通过刷队列发送了。
由于相比于非特定报文而言,特定报文的处理速度较慢,若将特定报文放弃保序则可能导致乱序的缺陷,但若等待特定报文转发前处理完成之后再发送后续报文,又会影响非特定报文的转发效率。本实施例的技术方案通过增设特定保序队列来实现特定报文的保序发送,对特定报文和非特定报文进行独立的保序操作。这样既能够满足特定报文的保序要求,又可以不影响非特定报文的转发前处理效率,本实施例的技术方案尤其是解决了现有的IPSec报文转发前处理问题。
实施例二
图2为本发明实施例二提供的多核系统的报文处理方法的流程图,本实施例可以以实施例一为基础,具体包括如下步骤:
步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行转发前处理;
具体的,多核系统中的核单元对分配给自身的报文进行转发前处理,例如转发前处理可以包括常规的基本转发流程等,核单元根据业务类型等参数可确定该报文的状态信息为需要保序或放弃保序。
步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤C10,当识别出该报文为非特定报文时,进入步骤B10;
步骤C10、将特定报文在基本保序队列中进行注册,进入步骤A10;
步骤C10具体的可以在特定报文的基本序列号所对应的序列号单元中记录状态信息为特定,这种方式是将特定报文与基本保序队列进行关联的具体实施方式之一。例如:图3为基本保序队列和特定保序队列的局部结构示意图,第一行示出了第一索引头和第一索引尾之间的序列号单元,其中,“?”代表未处理的报文,“○”代表非特定、已处理且需保序的报文,“△”代表非特定、已处理且放弃保序的报文,“■”代表特定的报文。
步骤A10、当保序模块识别到报文为特定报文时,将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中,进入步骤A20;
步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定报文的状态信息按非特定报文的基本序列号存入基本保序队列的序列号单元中,进入步骤B20;
上述步骤A10和B10的顺序不作限制,是随着转发前处理是否完成的进度来进行的。
当各核单元完成入队列操作后,还需要进行刷队列操作,以便将完成转发前处理的报文按照顺序发送出去。具体的,基本保序队列和特定保序队列的刷队列操作可以独立地进行,其中,当某个核单元抢到执行基本保序队列的刷队列操作的锁资源之后,步骤B20具体包括如下步骤:
步骤B21、在基本保序列队中进行第一索引头识别,第一索引头识别包括对第一索引头所指向的当前序列号单元中的状态信息进行识别;
步骤B22、当识别到当前序列号单元中状态信息为非特定、已处理且需保序时,将当前基本序列号对应的非特定报文进行发送,并将第一索引头加一,而后返回步骤B21,执行第一索引头识别;或
步骤B23、当识别到当前序列号单元中状态信息为非特定、已处理且放弃保序时,跳过当前序列号单元,将第一索引头加一,而后返回步骤B21,执行第一索引头识别;或
步骤B24、当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元,将第一索引头加一,而后返回步骤B21,执行第一索引头识别;或
步骤B25、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。
也就是说,正在执行刷队列操作的核单元遇到报文没有入队列的序列号单元时,则结束该核单元的本次刷队列操作,释放锁资源,多核系统等待下一次任意一个核单元继续执行刷队列操作。
上述步骤B25中,状态信息为未处理,则表示该序列号单元对应的报文还未完成转发前处理,尚未执行入队列操作,还不能确定其保序要求等信息,需要等待报文完成转发前处理后入队列,在执行下一次刷队列时再发送。
上述步骤实现了基本保序队列的刷队列操作,当识别到非特定、已处理且需保序的非特定报文时,在状态信息中查询该非特定报文在内存中的地址指针、长度以及发送端口等,而后提取该报文进行发送。上述刷队列操作无须对特定报文进行处理,直接跳过。当特定报文为处理速度较慢的IPSec报文时,不会影响非特定报文的转发前处理速率。
为保证特定保序队列刷队列操作的顺利执行,在上述步骤B24中,当识别到当前序列号单元中状态信息为特定时,还进一步执行下述操作:
步骤B26、从当前序列号单元开始,顺序地搜索出下一个状态信息为特定的序列号单元,并将搜索到的序列号单元的基本序列号存入特定保序队列中与当前序列号对应的序列号单元相邻的下一个序列号单元中,作为序列号索引。
具体的,所谓序列号索引,也可以是状态信息的一种,用于指示下一个存储有特定报文的序列号单元。
在上述技术方案的基础上,对特定保序队列执行刷队列操作,按照特定报文在特定保序队列中的顺序进行发送包括如下步骤。图3还示出了特定保序队列的局部结构,第二行示出了第二索引头和第二索引尾之间的序列号单元,其中,“●”代表特定、已处理且需保序的报文,“▲”代表特定、已处理且放弃保序的报文,“?”代表未处理的报文,“□”代表非特定的报文。
当某个核单元抢到执行特定保序队列的刷队列操作的锁资源之后,步骤A20具体包括如下步骤:
步骤A21、在特定保序列队中进行第二索引头识别,第二索引头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;
步骤A22、当识别到当前序列号单元中状态信息为特定、已处理且需保序时,将当前序列号单元对应的特定报文进行发送,并将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或
步骤A23、当识别到当前序列号单元中状态信息为特定、已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或
步骤A24、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。也就是说正在执行刷队列操作的核单元遇到报文没有入队列的序列号单元时,则该核单元结束本次刷队列操作,释放锁资源,多核系统等待下一次任意一个核单元继续执行刷队列操作。或
步骤A25a、当识别到当前序列号单元中状态信息为序列号索引时,将第二索引头更新至序列号索引指向的序列号单元,而后返回步骤A21,执行第二索引头识别。
夹在两个特定报文中间的非特定报文可称为特定报文空隙,例如夹在两个IPSec报文中间的普通报文就可称为IPSec空隙。采用本实施例的技术方案,将下一个特定报文的基本序列号记录到特定保序队列中当前特定报文下一个序列号单元中,使得识别下一个序列号单元中状态信息时,不仅可以获知此序列号单元对应的报文为非特定报文,而且可以直接索引至下一个特定报文的位置,使得在进行特定保序队列刷队列操作时,可以快速地将非特定报文忽略,并快速地索引下一个需要发送的特定报文。当然,若下一个特定报文此时还没有注册到基本保序队列之中,则按照未处理的情况进行处理。
本实施例的技术方案,可以使特定保序队列利用基本序列号兼作特定序列号。非特定报文无论其保序要求为需保序还是放弃保序,都要进行入基本保序队列的操作,特定报文无论其保序要求为需保序还是放弃保序,都要进行入特定保序队列的操作。并且,识别出为特定报文之后,预先在基本保序队列中进行注册,则在基本保序队列进行刷队列操作时,无需等待特定报文完成转发前处理并入队列后就可以获知该序列号单元对应的是特定报文,从而直接跳过,该技术方案可以显著提高对非特定报文的发送速度。
实施例三
图4为本发明实施例三提供的多核系统的报文处理方法的流程图,本实施例可以以实施例一为基础,具体包括如下步骤:
步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行转发前处理;
步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤C10,当识别出该报文为非特定报文时,进入步骤C20;
步骤C10、将特定报文在基本保序队列中进行注册,在特定报文的基本序列号所对应的序列号单元中记录状态信息为特定,进入步骤A10;
步骤C20、当保序模块识别到该报文为非特定报文时,在特定保序队列中与非特定报文的基本序列号所对应的序列号单元中记录状态信息为非特定,进入步骤B10。
步骤A10、将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中;
步骤B10、将完成转发前处理的非特定报文的状态信息按非特定报文的基本序列号存入基本保序队列的序列号单元中;
基本保序队列和特定保序队列的刷队列操作可以独立进行,其中,当某个核单元抢到执行基本保序队列的刷队列操作的锁资源之后,基本保序队列的刷队列操作包括上述的步骤B21~步骤B25。
上述步骤实现了基本保序队列的刷队列操作,无须对特定报文进行处理,直接跳过。当特定报文为处理速度较慢的IPSec报文时,不会影响非特定报文的转发前处理速率。
在上述技术方案的基础上,当某个核单元抢到执行特定保序队列的刷队列操作的锁资源之后,对特定保序队列执行刷队列操作,按照特定报文在特定保序队列中的顺序进行发送包括上述类似的步骤A21~步骤A24,且上述的步骤A25a替换为执行A25b:
步骤A25b、当识别到当前序列号单元中状态信息为非特定时,跳过当前序列号单元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别。
本实施例的技术方案,一方面将识别到的特定报文在基本保序队列中进行注册,另一方面将识别到的非特定报文在特定保序队列中进行注册,则基本保序队列的刷队列操作不必等待特定报文是否完成转发前处理,而可以直接跳过,类似的,特定保序队列的刷队列操作必等待非特定报文是否完成转发前处理,可以直接跳过。对于特定报文与非特定报文的处理速度相近,基于其他原因独立对特定报文进行保序的情况尤为适用。
实施例四
图5为本发明实施例四提供的多核系统的报文处理方法的流程图,本实施例与实施例二所采用的特定序列号分配方式不同。本实施例的方法具体包括如下步骤:
步骤100、保序模块为通过网络接口接收的报文标记连续的基本序列号,并将报文分配给核单元进行转发前处理;
步骤200、保序模块对报文进行识别,当识别出该报文为特定报文时,进入步骤C10,当识别出该报文为非特定报文时,进入步骤B10;
步骤C10、将特定报文在基本保序队列中进行注册,在特定报文的基本序列号所对应的序列号单元中记录状态信息为特定,进入步骤A10;
在将报文关联至保序队列的同时,多核系统中的核单元对分配给自身的报文进行转发前处理。
步骤A10、将完成转发前处理的特定报文的状态信息按该特定报文的特定序列号存入特定保序队列的序列号单元中,进入步骤A20;
步骤B10、当保序模块识别到该报文为非特定报文时,将完成转发前处理的非特定报文的状态信息按非特定报文的基本序列号存入基本保序队列的序列号单元中,进入步骤B20;
而后可以独立地进行刷队列操作。
对基本保序队列进行刷队列操作的流程具体包括上述的步骤B21、步骤B22、步骤B23和步骤B25,且步骤B24替换为执行步骤B24c:
步骤B24c、当识别到当前序列号单元中状态信息为特定时,跳过当前序列号单元,将第一索引头加一,同时为当前基本序列号对应的特定报文分配连续的特定序列号,以在特定保序队列中增加与分配的特定序列号对应的序列号单元。
由于特定报文的特定序列号在整个多核系统中应是唯一的,所以在基本保序队列中为特定报文分配特定序列号时需要进行加解锁处理。
本实施例的技术方案不用预先识别报文是否为特定报文,而是在报文经过转发前处理之后入基本保序队列时,保序模块可以识别到已处理的报文为特定报文,则为特定报文分配独立于基本序列号的特定序列号;
基于上述技术方案,对特定保序队列进行刷队列操作的流程包括如下步骤:
步骤A21、在特定保序队列中进行第二索引头识别,第二索引头识别包括对第二索引头所指向的当前序列号单元中的状态信息进行识别;
步骤A22c、当识别到当前序列号单元中状态信息为已处理且需保序时,将所述当前序列号单元对应的特定报文进行发送,并将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或
步骤A23c、当识别到当前序列号单元中状态信息为已处理且放弃保序时,跳过当前序列号单元,将第二索引头加一,而后返回步骤A21,执行第二索引头识别;或
步骤A24c、当识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。
本实施例的技术方案,在进行基本保序队列的刷队列操作时为已注册的、且已处理的特定报文按顺序分配特定序列号。由于特定报文的状态信息是按照特定序列号连续存储的,所以在特定保序队列中只需识别特定报文是否已处理,或是否需要保序,而无须识别是否为特定报文,因此实现方案更为简单。
本发明各实施例所提供的多核系统的报文处理方法,实现了特定报文和非特定报文的保序功能,既能够保证非特定报文的转发前处理效率,又能够实现特定报文高可靠性隧道报文传输,保障按序发送报文要求较高的应用。
本发明的技术方案尤其适用于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识别到当前序列号单元中状态信息为未处理时,结束本次刷队列操作。
本实施例多核系统的报文处理装置可以执行本发明多核系统的报文处理方法,具有相应的功能模块,而且由于特定报文的状态信息是按照特定序列号连续存储的,所以在特定保序队列中只需识别特定报文是否已处理,或是否需要保序,而无须识别是否为特定报文,实现方案简单。
实施例十
本发明实施例十还提供一种多核系统。该多核系统包括网络接口和至少两个核单元,网络接口用于接收报文,还可以包括一分配模块,分配模块用于为接收到的报文标记连续的基本序列号,并将报文分配给所述核单元进行转发前处理。核单元可以包括本发明实施例所提供的任意一种多核系统的报文处理装置。
本实施例可采用本发明提供的多核系统的报文处理装置,处理装置的各功能模块可以是多核系统中的独立模块或集成在各个核单元中的模块,以软件和/或硬件的形式实现。本实施例多核系统可以执行本发明多核系统的报文处理方法,具有相应的功能模块,采用设置独立于基本保序队列的特定保序队列来实现特定报文的保序功能的技术手段,保证了非特定报文在基本保序队列中发送的转发前处理效率,且通过特定保序队列实现了特定报文的保序功能,避免了特定报文乱序现象的发生,改善了多核系统的报文处理性能。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。