具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明故障检测方法实施例一的流程图,该方法包括如下步骤:
步骤101,第二线卡接收至少两个第一线卡根据预设的时间间隔发送的第一心跳报文。
步骤102,所述第二线卡将对所述第一心跳报文的接收结果信息发送给主控卡,由所述主控卡根据所述接收结果信息判断所述第一线卡和/或第二线卡是否发生故障。
本实施例通过由位第二线卡对来自于另一端的第一线卡发送的心跳报文进行接收,并将对心跳报文的接收结果信息发送给主控卡,由主控卡根据所述心跳报文的接收结果信息对线卡是否发生故障进行判断。由于本发明实施例所述方案不是直接对线卡本身进行故障检测,而是根据线卡之间转发的心跳报文的接收结果信息间接判断出线卡之间进行数据转发时是否会发生故障,与线卡之间实际转发数据时的工作状态更为接近,检测结果更加准确。另外,由于检测过程无需基于线卡资料进行,因此,检测方法更加方便、实用,有利于及时可靠地发现线卡的故障,很快定位到故障部件,以便采取相应措施。
图2为本发明故障检测方法实施例二的流程图,该方法包括如下步骤:
步骤201,主控卡接收至少两个第二线卡发送的对来自于至少两个第一线卡的心跳报文的接收结果信息。
步骤202,所述主控卡根据所述接收结果信息判断所述第一线卡和/或所述第二线卡是否发生故障。
本实施例通过主控卡对第二线卡上报的对第一线卡的接收结果信息进行判断,实现了对线卡的故障检测。由于本发明实施例所述方案不是直接对线卡本身进行故障检测,而是根据线卡之间转发的心跳报文的接收结果信息间接判断出线卡之间进行数据转发时是否会发生故障,与线卡之间实际转发数据时的工作状态更为接近,检测结果更加准确,另外,由于检测过程无需基于线卡资料进行,因此,检测方法更加方便、实用,有利于及时可靠地发现线卡的故障,很快定位到故障部件,以便采取相应措施。
图3为本发明实施例三提供的故障检测方法的流程图,如图3所示,该方法包括如下步骤:
步骤301,第一线卡根据预设的时间间隔,向第二线卡发送第一心跳报文。
其中,所述第一心跳报文中包含用于接收该第一心跳报文的对端线卡(在本实施例中也称为第二线卡)的标识,如第二线卡的MAC地址或IP地址等。
具体地,可以将所述第一心跳报文注入到所述第一线卡数据平面的转发引擎中,由该转发引擎进行发送。所述预设的时间间隔可以根据线卡检测的需要进行设置,例如可以为1s或200ms。
在检测开始前,可以由主控卡将定时信息及待检测线卡指示信息发送给各个线卡,其中,定时信息用于设定心跳报文的发送间隔,待检测线卡指示信息用于指示哪些线卡是待检测的;检测开始后,根据来自于主控卡的待检测线卡指示信息,由待检测的第一线卡构造所述第一心跳报文,并根据主控卡设定的时间间隔,向待检测的第二线卡发送所述第一心跳报文。
步骤302,所述第二线卡将对所述第一心跳报文的接收结果信息发送给主控卡。
其中,该接收结果信息可以包括接收成功、接收失败等信息。
步骤303,所述主控卡根据所述接收结果信息判断所述第一线卡和/或第二线卡是否发生故障。
具体地,该主控卡可以将接收到的接收结果信息汇总为用于表明线卡是否发生故障的线卡状态信息;然后根据预设的线卡故障判别标准,判断所述线卡是否发生故障。
其中,所述线卡故障判别标准例如为:
当所述线卡状态信息表明多个所述第二线卡对第M个第一线卡发送的心跳报文接收失败但对第N个第一线卡发送的心跳报文接收成功时,判断出所述第M个第一线卡发生故障,其中,M、N为自然数,且M不等于N;
当所述线卡状态信息表明第P个第二线卡对多个所述第一线卡发送的心跳报文接收失败但第Q个第二线卡对多个所述第一线卡发送的心跳报文接收成功时,判断出所述第P个第二线卡发生故障,其中,P、Q为自然数,且P不等于Q。
其中,为了减少误报率,可以预先设置一个连续失败次数(例如10次)。当多个所述第二线卡对第M个第一线卡连续(例如10次)接收失败,且失败次数达到设置的连续失败次数,但对第N个第一线卡发送的心跳报文连续接收成功时,判断所述第M个第一线卡发生故障;类似地,当第P个第二线卡对多个所述第一线卡以连续失败次数接收失败,但第Q个第二线卡对多个所述第一线卡发送的心跳报文连续接收成功时,才判断出所述第P个第二线卡发生故障。
具体的,当判断出某个线卡发生故障时,还可以对发生故障的第一线卡和/或第二线卡实施规避处理或恢复处理。其中,规避处理例如可以为:发出报警信号,或切换接口旁路(Bypass)等;恢复处理例如可以为:复位等。
图3所示的故障检测方法实现了对第一线卡到第二线卡的单向转发的故障检测,如果要实现对双向转发的检测,还可以由第二线卡根据所述预设的时间间隔向第一线卡发送第二心跳报文;并由第一线卡将所述第二心跳报文的接收结果信息发送给主控卡,再由所述主控卡根据所述第一心跳报文及第二心跳报文的接收结果信息判断所述第一线卡和/或第二线卡是否发生故障。也就是说,可以理解的是,本发明实施例中将线卡描述为第一线卡和第二线卡只是为了描述的清楚,并不具有对线卡功能上的限定意义,第一线卡既可以发送心跳报文,也可以接收心跳报文,第二线卡也是如此。
以下以图4所示的分布式设备为例进行说明。
如图4所示,该分布式设备中具有线卡1、线卡2、线卡3、......、及线卡N(N为大于3的自然数)等多个线卡,图中箭头表示每两个线卡之间均互相发送心跳报文。假设,通过本实施所述方法,由主控卡汇总得到的各线卡状态信息如表1所示:
表1
|
线卡1_接收 |
线卡2_接收 |
线卡3_接收 |
...... |
线卡N_接收 |
线卡1_发送 |
- |
V |
X |
...... |
V |
线卡2_发送 |
V |
V |
X |
...... |
V |
线卡3_发送 |
V |
V |
- |
...... |
V |
...... |
...... |
...... |
...... |
...... |
...... |
线卡N_发送 |
V |
V |
X |
...... |
V |
其中,“V”表示接收成功,“X”表示接收失败,“-”表示此项无汇总数据。由表1可见,线卡3对所有线卡发来的心跳报文均接收失败,如果根据线卡故障判别标准,假设该线卡3连续10次接收失败,则可以判断出线卡3的接收接口发生了故障。此后可以对该线卡3实施规避处理或恢复处理。
再假设,由主控卡汇总得到的各线卡状态信息如表2所示:
表2
|
线卡1_接收 |
线卡2_接收 |
线卡3_接收 |
...... |
线卡N_接收 |
线卡1_发送 |
- |
V |
V |
...... |
V |
线卡2_发送 |
X |
- |
X |
...... |
X |
线卡3_发送 |
V |
V |
- |
...... |
V |
...... |
...... |
...... |
...... |
...... |
...... |
线卡N_发送 |
V |
V |
V |
...... |
V |
由表2可见,所有线卡对线卡2发来的心跳报文均接收失败,对其他至少一个线卡例如线卡1、线卡3发送的报文均接收成功,则根据线卡故障判别标准,假设该线卡2连续失败次数(例如10次)接收失败,由此可以判断出线卡2的发送接口发生了故障,可以对该线卡2实施规避处理或恢复处理。
本实施例所述方法通过在线卡之间发送心跳报文,再将对心跳报文的接收结果信息发送给主控卡,由主控卡实现了对线卡故障的检测,从而根据线卡之间转发的心跳报文的接收结果信息间接判断出线卡之间进行数据转发时是否会发生故障,有利于及时可靠地发现线卡的故障,很快定位到故障部件,以便采取相应措施。检测方法更加方便、实用。
图5为本发明所述故障检测方法实施例四的流程图,如图所示,该方法包括如下步骤:
步骤401,第一线卡根据预设的时间间隔,向至少一个待检测的业务卡发送第一心跳报文。
关于所述第一心跳报文的描述与步骤301中的具体描述相同,此处不再赘述。
步骤402,所述业务卡将所述第一心跳报文转发给第二线卡。
其中,业务卡是分布式设备中用于业务处理的板卡,可以为一个或多个,如图6所示的分布式设备具有业务卡1、业务卡2、及业务卡M(其中M为大于2的自然数)等,图中箭头表示每两个线卡之间经一个业务卡转发后发送心跳报文。
步骤403,所述第二线卡接收由所述第一线卡经所述业务卡的转发而发来的第一心跳报文,并将对所述第一心跳报文的接收结果信息发送给主控卡。
其中,该接收结果信息可以包括接收成功、接收失败等信息。
步骤404,所述主控卡根据所述接收结果信息判断所述第一线卡和/或第二线卡是否发生故障。
具体地,该主控卡可以将接收到的接收结果信息汇总为用于表明所述线卡及业务卡是否发生故障的状态信息;然后根据预设的线卡故障判别标准,判断所述业务卡是否发生故障。具体的线卡故障判别标准可以参见前述实施例中的举例,此处不再赘述。
步骤405,所述主控卡将所述接收结果信息汇总为业务卡状态信息,根据预设的业务卡故障判别标准,判断所述业务卡是否发生故障。
其中,业务卡故障判别标准举例如下:
当所述业务卡状态信息表明第S个未发生故障的第二线卡对经第R个业务卡转发的第T个未发生故障的第一线卡发送的心跳报文接收失败时,则判断出所述第R个业务卡发生故障,其中,R、S、T为自然数。
以下举例说明,在图6所示的分布式设备中,由主控卡汇总得到的各线卡状态信息如表3所示:
表3
由表3可见,线卡2和线卡3对所有经业务卡2转发的心跳报文均接收失败,而对经过至少一个其他业务卡(例如,业务卡1、业务卡3)转发的心跳报文接收成功时,如果根据业务卡故障判别标准,假设连续10次均接收失败,则由此可以判断业务卡2发生了故障,可以对业务卡2实施规避处理或恢复处理。
可以理解的是,本发明实施例中的第一线卡既可以发心跳报文,也可以作为接收端接收心跳报文,也就是说,本发明实施例中描述中将线卡描述为第一线卡和第二线卡只是为了描述的清楚,并不具有对线卡功能上的限定意义,第一线卡既可以发送心跳报文,也可以接收心跳报文,第二线卡也是如此。
通过本实施例所述方法,除了实现对线卡的故障进行检测以外,还实现对转发过程中可能途经的业务卡的转发功能进行了检测。
图7为本发明所述线卡实施例一的结构示意图,如图所示,该线卡20包括:线卡接收模块21和上报模块22。其工作原理如下:
线卡接收模块21,用于接收与线卡20相应的至少两个对端线卡根据预设的时间间隔发送的第一心跳报文;
上报模块22,用于将线卡接收模块21对所述第一心跳报文的接收结果信息发送给主控卡,由所述主控卡根据所述接收结果信息判断位于所述线卡及所述对端线卡是否发生故障。
本实施例通过在线卡之间发送心跳报文,再将线卡对心跳报文的接收结果信息发送给主控卡,由主控卡实现了对线卡故障的检测。由于本发明实施例所述方案不是直接对线卡本身进行故障检测,而是根据线卡之间转发的心跳报文的接收结果信息间接判断出线卡之间进行数据转发时是否会发生故障,与线卡之间实际转发数据时的工作状态更为接近,检测结果更加准确。另外,由于检测过程无需基于线卡资料进行,因此,检测方法更加方便、实用,有利于及时可靠地发现线卡的故障,很快定位到故障部件,以便采取相应措施。
图8为本发明所述线卡实施例二的结构示意图,如图所示,该线卡20在图7所述的实施例的基础上进一步包括:
线卡发送模块23,用于根据来自于主控卡的待检测线卡指示信息及定时信息设定的时间间隔,向所述对端线卡发送第二心跳报文。
另外,所述线卡发送模块23还可以用于经每个待检测的业务卡的转发,向所述对端线卡发送所述第二心跳报文;所述线卡接收模块21还用于接收所述对端线卡根据预设的时间间隔发送的经每个待检测的业务卡转发的第一心跳报文。
通过既从对端线卡接收第一心跳报文,又向对端线卡发送第二心跳报文,从而能够要实现对双向转发的检测。
图9所示为本发明所述主控卡实施例一的结构示意图。该主控卡10包括:主控卡接收模块11和故障判断模块12,其工作原理如下:
主控卡接收模块11,用于接收至少两个第二线卡发送的对来自于至少两个第一线卡的心跳报文的接收结果信息;
故障判断模块12,用于根据所述接收结果信息及预设的线卡故障判别标准,判断所述第一线卡和/或第二线卡是否发生故障。
本实施例通过主控卡对第二线卡上报的对第一线卡的接收结果信息进行判断,实现了对线卡的故障检测。由于本发明实施例所述方案不是直接对线卡本身进行故障检测,而是根据线卡之间转发的心跳报文的接收结果信息间接判断出线卡之间进行数据转发时是否会发生故障,与线卡之间实际转发数据时的工作状态更为接近,检测结果更加准确,另外,由于检测过程无需基于线卡资料进行,因此,检测方法更加方便、实用,有利于及时可靠地发现线卡的故障,很快定位到故障部件,以便采取相应措施。
图10所示为本发明所述主控卡实施例二的结构示意图。该主控卡10中的故障判断模块12可以具体包括汇总单元1201及故障判断单元1202,其中:
汇总单元1201,用于将主控卡接收模块11接收到的所述接收结果信息汇总为所述线卡状态信息;
故障判断单元1202,用于根据所述线卡状态信息及预设的线卡故障判别标准,判断所述第一线卡和/或第二线卡是否发生故障。
具体的线卡故障判别标准请参见前述方法实施例,此处不再赘述。
另外,所述汇总单元1201还可以用于将主控卡接收模块11接收到的所述接收结果信息汇总为业务卡状态信息;所述故障判断单元1202在判断所述第一线卡和/或第二线卡是否发生故障之后,进一步根据汇总单元1201得到的所述业务卡状态信息及预设的业务卡故障判别标准,判断所述业务卡是否发生故障;具体的业务卡故障判别标准请参见前述方法实施例,此处不再赘述。
另外,如图10所示,主控卡10中还可以进一步包括指示模块13,用于向分布式设备中的所有线卡发送定时信息及待检测线卡指示信息发送给各个线卡,所述定时信息用于设定所述心跳报文的发送间隔,所述待检测线卡指示信息用于指示待检测的线卡。
图11为本发明所述分布式设备实施例一的结构示意图。包括:主控卡10及多个线卡。此处需要说明的是,本实施例所述线卡在分布式设备中为多个,各个线卡的结构均是相同的,为了方便叙述,以一个待检测的第一线卡20及第二线卡30为例进行说明,其他线卡的工作过程与此类似,不再一一赘述。
第一线卡20根据预设的时间间隔发送第一心跳报文;第二线卡30接收所述第一心跳报文,并将对所述第一心跳报文的接收结果信息发送给所述主控卡10;主控卡10根据所述接收结果信息判断位于所述第一线卡20和/或第二线卡30是否发生故障。
具体地,主控卡10可以将接收到的接收结果信息汇总为用于表明线卡是否发生故障的线卡状态信息;然后根据预设的线卡故障判别标准,判断所述线卡是否发生故障。其中,所述线卡故障判别标准请参见前述方法实施例,此处不再赘述。
通过本实施例所述设备,本发明实施例通过在线卡之间发送心跳报文来及时可靠地发现线卡的故障,以便采取相应措施;如果配合以部件组合视图分析,也可以很快定位到故障部件,并进一步采取恢复措施。
如图12所示,在实际应用中,线卡20中的线卡接收模块21和上报模块22和线卡发送模块23的功能均是由线卡的转发引擎实现的,并通过线卡的CPU进行协调控制。另外主控卡10中的上述各模块的功能均可以由主控卡的CPU进行协调控制。
图13为本发明所述分布式设备实施例二的结构示意图,该设备在图12所示结构的基础上增加了业务卡40。
所述第一线卡20中的线卡发送模块23在根据预设的时间间隔向第二线卡30发送第一心跳报文之前,先把该第一心跳报文发送每个业务卡40,由该业务卡40将来自于所述第一线卡20的第一心跳报文转发给所述第二线卡30。也就是说,第一线卡20经每个待检测的业务卡40的转发,向所述第二线卡30发送所述第一心跳报文。
类似地,当所述第一线卡20中的线卡接收模块21接收由第二线卡30之前,由业务卡40将来自于第二线卡30的第二心跳报文转发给所述第一线卡20。也就是说,第一线卡20接收由第二线卡30经所述业务卡40转发而发来的第二心跳报文。
通过由业务卡40对心跳报文进行转发后,可以由主控卡10将第一线卡20对第二心跳报文的接收结果信息及第二线卡30对第一心跳报文的接收结果信息汇总为业务卡状态信息,再根据预设的业务卡故障判别标准,判断所述业务卡是否发生故障。其中,所述业务卡故障判别标准请参见前述方法实施例,此处不再赘述。
通过本实施例所述分布式设备,除了实现对线卡的故障进行检测以外,还实现对转发过程中可能途经的业务卡的转发功能进行了检测。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。