一种分布式网络设备转发故障诊断方法及设备
技术领域
本发明涉及通信领域,尤其涉及一种分布式网络设备转发故障诊断方法及设备。
背景技术
当前网络设备虚拟化技术发展异常迅速,通过网络设备虚拟化技术可以将多个交换设备互联在一起,形成分布式交换架构,并作为一个逻辑交换实体运行。
如图1所示,一种典型的分布式网络设备,一般由主控板、线卡板、交换网和背板等单板组成,数据报文在进入到网络设备之后,需要经过多个单板和网络器件的转发,才能正确的转发出去。
在实际的用户网络中,流量模型非常复杂,因此在分布式网络设备内部,流量的走向路径纵横交错,形成一个密集的网状数据流模型。
由于在分布式网络设备中硬件器件众多、流量模型复杂,那么当设备中某些硬件器件存在故障时,就会影响到整个设备的转发业务,如何能够快速排查出故障所在,缩小故障范围,快速确认故障点,对于快速修复故障具有非常重要的意义。
目前常用的硬件故障诊断机制,是通过定期检测硬件器件的相关寄存器,查看是否存在异常信息,如果存在,对此硬件故障进行处理,然后修复故障。
可以看出,对于分布式网络设备,当前的故障诊断依赖于硬件器件是否有异常的信息作为判断依据。
发明内容
本发明实施例提供了一种分布式网络设备转发故障诊断方法及设备,用以对分布式网络设备中发生转发故障的路径上的硬件单元进行故障定位。
本发明实施例提供的分布式网络设备转发故障诊断方法,包括:
分别对分布式网络设备的各条转发路径进行检测,以检测发生故障的转发路径;分别遍历发生故障的各转发路径,并当遍历到转发路径上的一个转发故障分析点时,将对应的计数器计数值递增;其中,转发路径上的转发故障分析点是对该转发路径所经过的硬件单元划分得到的,每个转发故障分析点对应设置有计数器;根据各转发故障分析点对应的计数器计数值,定位转发故障位置。
本发明实施例提供的分布式网络设备,包括:
路径检测模块,用于分别对分布式网络设备的各条转发路径进行检测,以检测发生故障的转发路径;
计数处理模块,用于分别遍历发生故障的各转发路径,并当遍历到转发路径上的一个转发故障分析点时,将对应的计数器计数值递增;其中,转发路径上的转发故障分析点是对该转发路径所经过的硬件单元划分得到的,每个转发故障分析点对应设置有计数器;
故障定位模块,用于根据各转发故障分析点对应的计数器计数值,定位转发故障位置。
本发明的上述实施例,通过对转发路径上的硬件单元进行划分,划分出可用于定位故障的转发故障分析点,从而借助于对转发故障分析点的计数统计和分析,定位转发路径上的故障位置。由于无需借助于硬件器件的相关寄存器中的异常信息进行故障定位,从而避免了因需要借助于硬件器件的相关寄存器中的异常信息进行故障定位所带来的问题。
附图说明
图1为现有技术中一种典型的分布式网络设备示意图;
图2为本发明实施例中的故障分析点与实际硬件单元的对应关系示意图;
图3为本发明实施例提供的对分布式网络设备进行转发故障诊断的流程示意图;
图4为本发明实施例中转发路径检测模型中的转发路径示意图;
图5为本发明实施例中转发路径检测模型中的环回路径示意图;
图6为本发明实施例中转发路径发生故障的示意图;
图7为本发明实施例提供的分布式网络设备的结构示意图。
具体实施方式
本发明实施例针对分布式网络设备,提供了一种转发故障诊断方案,通过收集各种数据流转发异常信息,并结合故障分析算法,实现分布式网络设备上转发故障的快速诊断。
下面结合附图对本发明实施例进行详细描述。
本发明实施例中,首先针对分布式网络设备内部结构划分转发故障分析点。所谓转发故障分析点,即数据转发路径上不可分割的最小硬件单元,比如一颗独立封装的芯片。
划分转发故障分析点的基本原则可包括:
原则一:将数据转发流程中所需要的硬件器件(即数据转发路径上所需要经过的硬件器件)作为转发故障分析点,不参与数据转发的硬件器件不作为转发故障分析点。
原则二:在原则一的基础上,将逻辑上不可再分割的最小硬件单元作为转发故障分析点,其中,最小硬件单元是指不能够再进一步进行细分的硬件单元。这样做的主要目的是为了快速精确定位转发故障。
原则三:在原则一或/和原则二的基础上,转发故障分析点要能够有明确对应的故障修复和处理方式。
所有转发路径上的硬件器件均按照上面的原则分解为各个转发故障分析点,例如入端口可以作为一个故障分析点,出端口可以作为一个故障分析点,而在设备内部经过的多个交换网也可以分别独立的作为故障分析点。图2示出了一种故障分析点与实际硬件单元的对应关系示意图。
在确定各转发路径上的转发故障分析点之后,进一步对应各转发故障分析点设置对应的计数器,初始时可将各计数器清零。
本发明实施例在上述转发故障分析点划分的基础上,结合转发路径的检测模型进行转发故障检测。
通常,基于转发路径的检测模型进行故障检测是指,在分布式网络设备上,模拟用户流量的转发模型,从一个入端口按照内部固定的转发路径,发送检测报文到一个出端口,如果某个出端口没有收到报文,则可以认定该检测报文所经过的转发路径上存在故障,常见的故障类型包括:转发路径形式的转发故障(即入端口不等于出端口,其转发路径覆盖了从入设备开始一直到出设备,整个在分布式网络设备内部转发的全路径),以及环回路径形式的转发故障(即入端口等于出端口)。
本发明实施例基于各转发路径上的转发故障分析点,对各转发路径分别进行如下格式整理:
按照从入端口到出端口(或反向)顺序,并按照一定格式,用相应转发故障分析点来描述对应的转发路径,例如,对于某一从入端口到出端口方向经历了转发故障分析点1、转发故障分析点2......转发故障分析点n的转发路径,可整理成以下数据格式:
转发故障分析点1->转发故障分析点2->......->转发故障分析点n
对于从转发故障分析点1进入再从该点流出的环回路径,可整理成如下格式数据:
转发故障分析点1->......->转发故障分析点n->转发故障分析点n->......->转发故障分析点1。
其中,对于环回路径,由于其上有些器件经过了两次,因此需要对相应的转发故障分析点重复记录。
参见图3,为本发明实施例提供的,在上述转发故障分析点划分的基础上,结合转发路径的检测模型,对分布式网络设备进行转发故障诊断的流程示意图。如图所示,该流程可包括:
步骤301,对分布式网络设备中的各条转发路径进行检测,以发现存在转发故障的路径。
具体实施时,可根据分布式网络设备中的转发路径检测模型中的各条转发路径,针对其中的每条转发路径发送用于检测相应转发路径的检测报文,以检测相应转发路径是否存在转发故障。如果对于给定的检测报文(所谓给定的检测报文,其入端口、出端口和所经过的转发故障分析点都是预先规定的),若没有从期望的出端口接收到该检测报文,则认为该检测报文所检测的转发路径发生故障。
步骤302,分别遍历发生故障的各转发路径,并当遍历到转发路径上的一个转发故障分析点时,将该转发故障分析点所对应的计数器计数值递增。
具体实施时,可根据整理后的数据格式(即前述用转发故障分析点所描述的转发路径),遍历发生故障的各转发路径,当遍历到转发路径上的转发故障分析点时,将对应的计数器计数值加1。
步骤303,根据转发路径上各故障分析点对应的计数器计数值,确定出可能发生故障的转发故障分析点(以下将可能发生故障的转发故障分析点称为故障点),从而进行故障定位。
具体实施时,遍历完所有发生故障的转发路径后,将计数值最大的计数器所对应的转发故障分析点,认为是可能发生故障的位置,即,定位该转发故障分析点所对应的硬件单元为发生故障的硬件单元。
由于转发故障分析点是不可在分割的最小硬件单元,因此如果有转发故障分析点所对应的硬件单元发生故障,则经过该转发故障分析点的转发路径都不通,所有不通的转发路径都经过该转发故障分析点。基于上述分析,当根据转发路径上各转发故障分析点对应的计数器计数值,确定出故障点后,还可进一步确认是否将该故障点最终定位为故障点,具体确认方法是:对于待进一步确认是否是故障点的转发故障分析点N,遍历所有发生故障的转发路径,确认这些转发路径是否都经过转发故障分析点N;遍历所有经过转发故障分析点N的转发路径,是否这些转发路径都发生故障。若上述两个判断的结果均为是,则确认转发故障分析点N为故障点,否则不认为转发故障分析点N为故障点。
进一步的,步骤303定位出故障位置之后,还可包括以下步骤:
步骤304,根据定位出的故障点所对应的硬件单元,对该硬件单元进行故障恢复。
在本发明的另一实施例中,可设置检测周期,分布式网络设备可按照检测周期进行转发路径故障检测及定位。步骤501中,可在一个检测周期内,根据分布式网络设备中各条转发路径,针对其中的每条转发路径发送用于检测相应转发路径的检测报文,以检测当前检测周期内,相应转发路径是否存在转发故障。在步骤303中,如果计数值最大的转发故障分析点有多个,则可进一步根据前一个或若干个检测周期内所定位出的故障点,对当前检测周期内所定位出的可能发生故障的故障分析点进行确认或排除。比如,针对当前检测周期内所定位出的可能发生故障的转发故障分析点,若前一检测周期也定位出该转发故障分析点为故障点,则将该转发故障分析点确认为本检测周期内的故障点;若前一检测周期未定位出该转发故障分析点为故障点,则不认为该转发故障分析点为本检测周期内的故障点。
为了更清楚的说明本发明实施例,下面结合图4所示的分布式网络设备进行详细说明。
图4示出了一种分布式网络设备内部结构示意图,其中包含4个包处理芯片和2个交换网,该4个包处理芯片和2个交换网均被划分为转发故障分析点。任意两个包处理芯片之间,通过不同的交换网都要可以无阻塞转发,如图4所示,这样的双向转发路径总共有12条,相应的,表1示出了描述其中4条转发路径的数据结构。
表1
图5示出了两条环回路径,相应的,表2示出了描述这两条环回路径的数据结构。对于环回路径,由于其上有些器件经过了两次,因此需要对相应的转发故障分析点重复记录。
表2
如图6所示,以包处理芯片1发生故障为例,描述本发明实施例对转发故障的快速诊断流程。
当包处理芯片1故障时,会影响到转发路径1、2、3、4、5、6、13和14,其他转发路径不会受到影响。这样,在用测试报文对各转发路径进行测试时,会发现转发路径1、2、3、4、5、6、13和14发生故障,表3示出了发生故障的各转发路径所经历的转发故障分析点:
表3
遍历表3中的各条转发路径,并且每当遍历到一个转发故障分析点时,将该转发故障分析点对应的计数器数值加1,当遍历完成上述发生故障的各转发路径后,相关转发故障分析点对应的计数器计数值如表4所示:
表4
转发故障分析点 |
计数 |
包处理芯片1 |
10 |
包处理芯片2 |
2 |
包处理芯片3 |
2 |
包处理芯片4 |
2 |
交换网1 |
6 |
交换网2 |
6 |
由表4的统计信息可以看出,包处理芯片1所对应的计数值最大,因此将包处理芯片1作为故障点。
进一步的,可通过以下方式进一步对故障点进行确认:遍历所有发生故障的转发路径(表3),判断所有故障路径是否都经过包处理芯片1;遍历所有转发路径,判断所有经过包处理芯片1的转发路径是否都发生故障。若这两个判断条件的结果均为是,由此可以诊断出结论——包处理芯片1故障,然后可以进行有针对性的修复和处理。可以看出,采用本发明实施例所检测到的故障点与实际情况相符。
基于相同的技术构思,本发明还提供了一种可实现上述流程的分布式网络设备。
参见图7,为本发明实施例提供的分布式网络设备的结构示意图,该分布式网络设备中可包括:路径检测模块701、计数处理模块702和故障定位模块703,其中:
路径检测模块701,用于分别对分布式网络设备的各条转发路径进行检测,以检测发生故障的转发路径;
计数处理模块702,用于分别遍历发生故障的各转发路径,并当遍历到转发路径上的一个转发故障分析点时,将对应的计数器计数值递增;其中,转发路径上的转发故障分析点的定义以及划分原则同前所述,每个转发故障分析点对应设置有计数器;
故障定位模块703,用于根据各转发故障分析点对应的计数器计数值,定位转发故障位置。
故障定位模块703可采用以下几种方式进行故障定位:
方式一,故障定位模块703可统计各转发故障分析点对应的计数器数值,得到计数器计数值最大的转发故障分析点,将计数器计数值最大的转发故障分析点所对应的硬件单元定位为转发故障位置。
方式二:故障定位模块703可统计各转发故障分析点对应的计数器数值,得到计数器计数值最大的转发故障分析点;然后,通过遍历所有发生故障的转发路径,判断所有发生故障的转发路径是否都经过所述计数器计数值最大的转发故障分析点,通过遍历所有转发路径,判断所有经过所述计数器计数值最大的转发故障分析点的转发路径是否都发生转发故障;若所有发生故障的转发路径都经过所述计数器计数值最大的转发故障分析点,并且所有经过所述计数器计数值最大的转发故障分析点的转发路径都发生转发故障,则将所述计数器计数值最大的转发故障分析点所对应的硬件单元定位为转发故障位置。
方式三:在路径检测模块701、计数处理模块702和故障定位模块703的处理操作按照设定的检测周期执行的情况下,故障定位模块703在进行故障定位时,统计当前检测周期内各转发故障分析点对应的计数器数值,得到计数器计数值最大的转发故障分析点;若当前检测周期内统计得到的计数器计数值最大的转发故障分析点有多个,则判断当前检测周期内的所述计数器计数值最大的转发故障分析点所对应的硬件单元,在之前的检测周期内是否被定位为转发故障位置,并在判断为是时,将当前检测周期内的所述计数器计数值最大的转发故障分析点所对应的硬件单元定位为转发故障位置。
下面将本发明实施例与现有技术所提供的分布式网络设备故障诊断方案进行对比分析。
现有技术所提供的分布式网络设备故障诊断方法中,依赖于硬件器件是否有异常的信息作为判断依据,但是,硬件器件是否有异常的信息只是一个芯片内部的指示,不能够完全反映器件的运行情况,没有模拟到真正用户的数据报文转发流程。另外,各个厂商的硬件器件内部对于异常检测实现程度也千差万别,也不能够覆盖所有的异常情况。再者,如果硬件器件坏的非常严重,异常信息查询模块也可能发生故障,不一定能够查询到异常的信息。
而本发明实施例不再依赖于硬件器件固有的故障检测机制,而是通过将转发路径上的硬件器件划分为转发故障分析点,从而尽量通过模拟用户的流量,通过信息收集和整理,将其按照一定格式转化为可进行计数统计的数据格式,以便进行统计分析,从而快速的对转发故障进行快速诊断和定位。本发明实施例无需单纯依赖硬件器件的异常信息进行故障诊断,从而避免了现有技术的上述缺陷,对于分布式设备具有普适性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。