一种数据平面异常检测的方法和装置的制作方法

文档序号:6371181阅读:201来源:国知局
专利名称:一种数据平面异常检测的方法和装置的制作方法
技术领域
本发明涉及多核处理系统技术领域,尤指多核处理系统中的数据平面异常检测的实现方法和装置。
背景技术
目前,在多核网络通信设备中,通常采用数据平面和控制平面分离的一种非对称处理结构。即控制平面运行在一个或多个CPU上,并且运行一个完整的嵌入式操作系统,有完整的多任务管理、中断管理、时间管理和定时器管理等等;数据平面运行在其他的CPU上,没有操作系统或者是提供了很简单的资源管理,通常只是做简单的数据流处理和转发 工作。为了防止出现挂死现象,在控制平面上通常设有硬件看门狗(Watchdog)模块,用以检测控制平面是否出现异常情况,当控制平面出现异常时,则重新启动该控制平面,因而可以保证控制平面不会出现挂死的情况。然而,由于数据平面上缺少类似控制平面上的看门狗模块来定期检测数据平面的异常,如果数据平面进入死循环或者访问非法内存时,则会导致数据平面挂死,进而影响数据流的转发和处理。

发明内容
有鉴于此,本发明提供了一种数据平面异常检测的方法和装置,通过在控制平面上启动一个定时器进程定时对各个数据平面核的运行状态和时间戳进行检测,进而防止数据平面核挂死不转发或不处理数据的情况。为达到上述目的,本发明的技术方案具体是这样实现的一种数据平面异常检测的装置,应用于由控制平面模块和数据平面模块组成的多核处理系统中,其中所述控制平面模块进一步包括定时器模块,用以定时检测各个数据平面核共享内存中记录的运行标识位和时间戳,在定时检测时,所述定时器模块先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳之间的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者数据平面模块上的整个CPU系统。本发明还公开了一种数据平面异常检测的方法,应用于包括数据平面和控制平面的多核处理系统中,其中所述控制平面包括一定时器模块,其中所述方法包括步骤501、设定确认数据平面核挂死的时间阈值以及控制平面定时器模块检测数据平面核的检测时间,并启动所述控制平面定时器模块;步骤502、控制平面定时器模块按照设定的检测时间定时对数据平面核进行检测;步骤503、判断当前时间和共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则进入步骤504,否则返回步骤502 ;
步骤504,确认所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,重新启动该数据平面核或数据平面整个CPU系统后返回步骤502。由上述技术方案可见,本发明通过在控制平面上启动一个定时器进程定时对各个数据平面核的运行状态和时间戳进行检测,一旦当前时间与处于运行状态的数据平面核的时间戳之间的差值大于设定的时间阈值,则判断该数据平面核异常,保存该数据平面核的当前寄存器和内存中缓存的信息后,对该数据平面核或数据平面整个CPU系统进行重启。通过本发明,可以有效地防止数据平面核挂死不转发或不处理数据的情况。


图I是现有技术多核处理系统的装置示意图;图2是现有技术数据平面处理数据的方法流程图;图3是本发明实施例提供的数据平面异常检测的装置结构图; 图4是本发明实施例数据平面和控制平面共享一段物理内存的示意图;图5是本发明实施例提供的一种数据平面异常检测的方法流程图;图6是本发明某一具体应用场景下数据平面处理数据的方法流程图。
具体实施例方式为了实现本发明目的,本发明采用的核心思想为在控制平面上启用一个定时器进程,定时检测各个数据平面核共享内存中缓存的运行标识位和时间戳。在定时检测时,先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和前述共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者数据平面整个CPU系统。为了更加清楚和明白,以下结合实施例对本发明技术方案进行详细说明。在介绍本发明实施例之前,先简单地介绍一下现有技术数据平面核处理数据的流程图。如图I和图2所示,分别为现有技术多核处理系统的装置示意图和数据平面处理数据的流程图。如图I所示,所述现有技术多核处理系统包括数据平面模块和控制平面模块,其中所述控制平面模块上进一步包括防止该控制平面挂死的看门狗模块。当数据平面转发和处理数据时,其处理数据的流程如图2所示。步骤201,数据平面模块启动数据处理线程;步骤202,数据平面模块判断待处理的数据消息队列是否为空,如果为空,则进行步骤203,否则进入步骤204 ;步骤203,调用数据平面模块中CPU消息等待处理,同时进入到休眠状态;本步骤中,CUP消息是一个CPU的特殊指令,当前述数据消息队列为空时,该CPU消息指令会让CPU进入到休眠状态,直到新的消息队列出现把他唤醒,当然,实际过程中,软件有时也把它封装为函数。步骤204,数据平面模块读取待处理的消息队列内容;步骤205,数据平面模块判断待处理的消息是否正确,如果正确,则进入步骤206,否则进入步骤207 ;
由于错误的消息是不正确的数据报文,如果处理起来可能会导致系统崩溃,因此,此步骤数据平面模块必须要先判断待处理的消息是否正确。步骤206,通过数据平面模块调用该消息相应的处理函数,完成对该消息的处理,并返回到步骤202;如报文的收发,CPU核间通信等,都有相应的该消息的处理函数,需要通过数据平面模块调用该消息相应的处理函数,完成对该消息的处理。步骤207,直接丢弃该消息,并返回到步骤202。由于现有技术多核处理系统中,数据平面模块上缺少类似控制平面模块上的看门 狗模块,当数据平面模块异常时,譬如数据平面模块中的某个数据平面核进入死循环或者访问非法内存时,依据上述流程,由于没有任何检测数据平面核异常的机制,会导致数据平面核挂死的情况得不到及时的检测,进而影响数据平面模块的数据转发和处理。为了解决上述问题,本发明提供了一种数据平面异常检测的方法和装置,通过在控制平面上启用一个定时器进程,定时检测各个数据平面核共享内存中缓存的运行标识位和时间戳,在进行定时检测时,先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳之间的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者数据平面整个CPU系统。如图3所示,为本发明实施例提供的一个数据平面异常检测的装置,具体包括数据平面模块和控制平面模块,其中所述控制平面模块进一步包括定时器模块和看门狗模块。其中,所述看门狗模块用以检测控制平面模块是否异常,并在控制平面模块异常时重新启动控制平面。所述定时器模块,定时检测各个数据平面核共享内存中缓存的运行标识位和时间戳,在定时检测时,先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳之间的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者整个CPU系统。为了实现所述控制平面模块上的定时器模块能够定时检测各个数据平面核的运行标识位和时间戳。在本发明实施例中,通过在数据平面模块和控制平面模块共享的一段物理内存中记录各数据平面核的运行标识位和时间戳,并通过控制平面定时器模块定时检测当前时间与共享内存中记录的该数据平面核的时间戳之间的差值是否大于设定的时间阈值来判断数据平面核是否挂死。具体地,各数据平面核通过各自的TLB (Translationlook-aside buffers, CPU的内存管理单元,用于虚拟地址到物理地址的内存映射)将其运行标识位和时间戳映射到各自的共享内存虚拟空间,以32个核的多核处理系统为例,用一个32位的共享内存保存各数据平面核的运行状态标识,首个bit位标识控制平面核的运行状态,其余的31个bit位,每个bit位标识一个数据平面核的运行状态,当所述bit位为0时,则表明该数据平面核处在休眠状态,而当所述bit位为I时,则表明该数据平面核处在运行状态。进一步地,在本发明实施例中,还将用一个64位的共享内存保存数据平面核的时间戳,具体如图4所示。当控制平面核启动后,首先引导启动所有的数据平面核,在所有数据平面核启动以后,设定网络设备上该共享的物理内存所有标识数据平面核的bit位初始均默认为0,表示该数据平面模块上所有的核均处于休闲状态。此后,当数据平面核处理消息队列时,均需判断待处理的消息队列是否为空,如果待处理的消息队列不为空,则将共享内存中该数据平面核的检测标识位设置为1,表示数据平面核处在运行中,并读取当前时间更新共享内存中此前记录的检测该数据平面核的时间戳,同时接受该消息并判断消息的类型,调用消息相应的函数进行处理。如果为空,则表明当前的数据平面核处于空闲状态。清除之前共享内存中设置的表示该数据平面核在运行的标识位,将其重新设定为O,同时调用数据平面的CPU的消息等待处理,并进入休眠状态,此后控制平面定时器模块在该数据平面核处理新的消息队列之前,不再对其进行定时异常检测。
假定在本发明实施例中,控制平面启动定时器模块检测数据平面核的时间间隔为32秒(需要说明的是,该检测时间间隔可以根据具体要求改变,此处仅以32秒为例,不得以此作为限缩本发明的范围),控制平面定时器模块每32秒检测一次,先检测共享内存中该数据平面核对应的运行标识位,判断该数据平面核是否处于运行中,如果处于运行中,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或数据平面整个CPU系统。如图5所示,为本发明提供的一种数据平面异常检测的方法流程图,该方法应用于包括数据平面和控制平面的多核处理系统中,其中所述控制平面包括一定时器模块,所述方法包括步骤501,设定确认数据平面核挂死的时间阈值以及控制平面定时器模块检测数据平面核的检测时间,并启动控制平面定时器模块;步骤502,控制平面定时器模块按照设定的检测时间定时对数据平面核进行检测;具体地,在本发明实施例中,定时器模块是通过定时检测控制平面模块和数据平面模块共享物理内存中记录的各个数据平面核的运行标识位和时间戳来实现对数据平面核的定时检测。进一步地,所述数据平面核的运行标识位是用一个32位的内存来缓存,所述数据平面核检测的时间戳是用一个64位的内存来缓存。步骤503,判断当前时间和共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则进入步骤504,否则返回步骤502 ;具体地,当控制平面核启动后,首先引导启动所有的数据平面核,在所有数据平面核启动以后,设定网络设备上该共享的物理内存所有标识数据平面核的bit位初始均默认为0,表示该数据平面模块上所有的核均处于休眠状态。此后,当数据平面核处理消息队列时,均需判断待处理的消息队列是否为空,如果待处理的消息队列不为空,数据平面核此时退出休眠状态,并在共享内存中将其对应的运行状态位更改为1,表示该数据平面核处在运行中,并读取当前时间更新此前共享内存中记录的检测该数据平面核的时间戳,同时接受该消息并判断消息的类型,调用消息相应的函数进行处理。如果为空,则表明当前的数据平面核处于空闲状态,清除之前共享内存中设置的表示该数据平面核在运行的标识位,将其重新设定为0,同时调用数据平面的CPU的消息等待处理,并进入休眠状态,此后控制平面定时器模块在该数据平面核处理新的消息队列之前,不再对其进行定时异常检测。当控制平面依据设定的检测时间定时检测各数据平面核时,先检测共享内存中该数据平面核的运行标识位,判断该数据平面核是否处于运行中,如果处于运行中,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则进入步骤504。步骤504,确认所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,重新启动该数据平面核或整个CPU系统后返回步骤502。如图6所示,为本发明某一具体应用场景下数据平面核处理数据流的方法流程图。该方法包括步骤601,数据平面核启动数据处理线程;
步骤602,数据平面核判断待处理的数据流消息队列是否为空,如果为空,则进行步骤603,否则进入步骤604 ;步骤603,清除检测标识位,调用数据平面核CPU消息等待处理,同时进入到休眠状态;本步骤中,CUP消息是一个CPU的特殊指令,当前述数据消息队列为空时,该CPU消息指令会让CPU进入到休眠状态,直到新的消息队列出现把他唤醒,当然,实际过程中,软件有时也把它封装为函数。步骤604,数据平面核读取待处理的消息队列内容;步骤605,数据平面核判断消息是否正确,如果正确,则进入步骤606,否则进入步骤 607 ;由于错误的消息是不正确的数据报文,如果处理起来可能会导致系统崩溃,因此,此步骤数据平面模块必须要先判断待处理的消息是否正确。步骤606,设置检测标识位,同时获得当前时间,刷新检测时间戳,然后调用消息相应的处理函数,完成对该消息的处理,并返回到步骤602 ;如报文的收发,CPU核间通信等,都有相应的该消息的处理函数,需要通过数据平面模块调用该消息相应的处理函数,完成对该消息的处理。步骤607,直接丢弃该消息,并返回到步骤602。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据平面异常检测的装置,应用于由控制平面模块和数据平面模块组成的多核处理系统中,其特征在于所述控制平面模块进一步包括定时器模块,用以定时检测各个数据平面核共享内存中记录的运行标识位和时间戳,在定时检测时,所述定时器模块先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和共享内存中记录的该数据平面核的时间戳之间的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者数据平面模块上的整个CPU系统。
2.如权利要求I所述的装置,其特征在于,所述定时器模块判断各个数据平面核是否在运行具体为所述定时器模块通过读取共享内存中记录的各数据平面核的运行标识位来获知。
3.如权利要求2所述的装置,其特征在于,当所述数据平面核在启动数据处理进程后, 判断待处理的消息队列是否为空,如果待处理的消息队列不为空,则表示所述数据平面核处在运行中,否则,则表明当前的数据平面核处于空闲状态,同时将所述运行状态对应的标识位更新到前述共享内存中。
4.如权利要求3所述的装置,其特征在于,当所述数据平面核处在运行时,读取当前时间并将当前时间更新到共享内存中该数据平面核对应的时间戳内,如果数据平面核处于空闲状态,则清除此前共享内存中设置的表示该数据平面核在运行的标识位,并使该数据平面核进入到休眠状态。
5.如权利要求4所述的装置,其特征在于,当数据平面核进入到休眠状态时,所述控制平面定时器模块在该数据平面核处理新的消息队列之前,将不再对该数据平面核进行定时器检测。
6.一种数据平面异常检测的方法,应用于包括数据平面和控制平面的多核处理系统中,其中所述控制平面包括有定时器模块,其特征在于,所述方法包括 步骤501、设定确认数据平面核挂死的时间阈值以及控制平面定时器模块检测数据平面核的检测时间,并启动所述控制平面定时器模块; 步骤502、控制平面定时器模块按照设定的检测时间定时对数据平面核进行检测; 步骤503、判断当前时间和共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则进入步骤504,否则返回步骤502 ; 步骤504,确认所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,重新启动该数据平面核或数据平面整个CPU系统后返回步骤502。
7.如权利要求6所述的方法,其特征在于,步骤502控制平面定时器模块是通过定时检测各个数据平面核共享内存中记录的运行标识位和时间戳来实现的。
8.如权利要求7所述的方法,其特征在于,在定时检测时,所述定时器模块还需先判断各个数据平面核是否在运行,如果在运行,再进行步骤503。
9.如权利要求8所述的方法,其特征在于,所述定时器模块判断各个数据平面核是否在运行具体为所述定时器模块通过读取共享内存中记录的各数据平面核的运行标识位来获知。
10.如权利要求9所述的方法,其特征在于,所述数据平面核在启动数据处理进程后,判断待处理的消息队列是否为空,如果待处理的消息队列不为空,则表示所述数据平面核处在运行中,否则,则表明当前的数据平面核处于空闲状态,同时将所述运行状态对应的标识位更新到共享内存中。
11.如权利要求10所述的方法,其特征在于,当所述数据平面核处在运行时,读取当前时间并将当前时间更新到共享内存中该数据平面核对应的时间戳内,如果数据平面核处于空闲状态,则清除此前共享内存中设置的表 示该数据平面核处在运行的标识位,并使该数据平面核进入到休眠状态。
12.如权利要求11所述的方法,其特征在于,当数据平面核进入到休眠状态时,所述控制平面定时器模块在该数据平面核处理新的消息队列之前,将不再对该数据平面核进行定时器检测。
全文摘要
本发明公开了一种数据平面异常检测的实现方法和装置。在控制平面上启用一个定时器进程,定时检测各个数据平面核共享内存中记录的运行标识位和时间戳。在定时检测时,先判断各个数据平面核是否在运行,如果在运行,进一步判断当前时间和前述共享内存中记录的该数据平面核的时间戳的差值是否大于设定的时间阈值,如果大于设定的时间阈值,则判断所述数据平面核已经挂死,保存该数据平面核的当前寄存器和内存中缓存的信息,同时重新启动该数据平面核或者数据平面整个CPU系统。
文档编号G06F11/07GK102750192SQ201210188849
公开日2012年10月24日 申请日期2012年6月6日 优先权日2012年6月6日
发明者付炼, 王其勇 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1