具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明以下实施例的序号仅仅为了描述,不代表实施例的优劣。
图1为本发明实施例一提供的检测路由设备故障的方法流程图。本实施例提供的方法的执行主体为某一路由设备。如图1所示的方法包括:
步骤11:建立检测会话;所述检测会话的源端口为路由设备的任一端口,所述检测会话的目的端口为所述路由设备与外部邻接设备的通信端口。
本步骤中的路由设备需要进行设备内部模块故障检测。外部邻接设备为与该路由设备通信连接的周边设备,该外部邻接设备作为路由设备进行设备内部模块故障检测的辅助设备。
路由设备建立的检测会话可为一条或多条。
对于每条检测会话而言:检测会话的源端口为路由设备的任一端口;该检测会话的目的端口为路由设备与外部邻接设备的通信端口;源端口和目的端口可以相同,也可以不同。检测会话的源地址和目的地址,可分别为路由设备的IP地址和外部邻接设备的IP地址;或者,当所述检测会话的源端口为所述通信端口时,检测会话的源地址和目的地址,可均为该路由设备选定的所述通信端口的IP地址。
步骤12:根据所述检测会话覆盖的所述路由设备的内部模块,建立所述检测会话的会话标识与所述检测会话覆盖的内部模块之间的映射关系。
每条检测会话都分配有会话标识,且每条会话覆盖路由设备的部分内部模块。在检测会话建立完成之后,可建立各检测会话的会话标识以及该检测会话覆盖的路由设备的内部模块之间的映射关系。
步骤13:针对所述检测会话,向所述外部邻接设备周期性发送第一检测报文。
第一检测报文的源地址和目的地址,分别与该第一检测报文对应的检测会话的源地址和目的地址相同。
步骤14:根据所述映射关系以及第二检测报文的报文接收和检测情况,确定所述检测会话覆盖的内部模块的故障状态;所述第二检测报文为所述外部邻接设备在接收到所述第一检测报文之后,向所述路由设备返回的报文。
路由设备可根据某一检测会话对应的第二检测报文的报文接收和检测情况,确定该检测会话的故障状态;并根据该检测会话的故障状态以及上述映射关系,确定与该检测会话的会话标识对应的内部模块的故障状态。在确定了发生故障的内部模块之后,可对该路由设备发生故障的内部模块进行故障恢复处理。
如果路由设备建立有多条检测会话,可根据各检测会话覆盖的内部模块之间的关联,精确定位路由设备中发生故障的具体内部模块。具体的,可根据多条检测会话中,第一检测会话和第二检测会话分别对应的所述第二检测报文的报文接收和检测情况,分别确定第一检测报文和第二检测报文的故障状态;根据第二检测会话的故障状态以及映射关系,确定第一检测会话覆盖的内部模块的故障状态;其中:第一检测会话为多条检测会话中的任一检测会话;第二检测会话为多条检测会话中,与第一检测会话覆盖的内部模块部分相同的至少一条检测会话。
本实施例提供的检测路由设备故障的方法,将该路由设备的外部邻接设备,作为本路由设备内部模块故障检测的辅助设备,通过在路由设备内建立检测会话并建立会话标识与所述检测会话覆盖的内部模块之间的映射关系,周期性向外部邻接设备发送检测报文,并根据返回报文的接收和检测情况以及上述映射关系,确定内部模块的故障状态。该方法可实现如路由设备与外部设备的通信端口所在模块等内部模块的故障检测,提高了路由设备可进行故障检测的内部模块的覆盖范围,因此降低了路由设备内部故障的漏检率,从而提高路由设备的可靠性。
图2为本发明实施例二提供的检测路由设备故障的方法流程图。本实施例中,所述检测会话的源端口与其目的端口可以相同或不同,所述第一检测报文为第一PING报文,所述第二检测报文为第二PING报文。具体的,如图2所示,本实施例提供的方法包括:
步骤21:路由设备的主控CPU建立n条检测会话,n为大于或等于1的整数;为每条检测会话选定一台该路由设备的外部邻接设备作为辅助检测设备,且该检测会话的目的端口为路由设备与该外部邻接设备的通信端口,该检测会话的源端口为该路由设备的任一端口。
本发明实施例中,将在一路由设备以及与该路由设备连接的一外部邻接设备之间建立的用于进行检测的连接,称为一所述检测会话。检测会话的建立方式可由用户主动配置,还可由路由设备软件系统自动生成等。每条检测会话的源端口与目的端口,可以相同也可以不同。不同检测会话的目的端口,可以相同也可以不同。
步骤22:路由设备的主控CPU根据各检测会话覆盖的路由设备的内部模块,建立各检测会话的会话标识及其覆盖的内部模块之间的映射关系。
路由设备的内部模块可具体为该路由设备的单板,或可具体为该路由设备的某单板上的子模块,或可为该路由设备内的其他类型模块。
每条检测会话从其源端口到其目的端口均覆盖了一个或多个路由设备的内部模块;在检测会话建立完成之后,建立各检测会话的会话标识与各检测会话覆盖的内部模块之间的映射关系。
步骤23:路由设备的主控CPU针对某条检测会话如第一检测会话,分别向该第一检测会话对应的外部连邻接设备周期性发送PING报文,向外部邻接设备发送的PING报文不妨称为第一PING报文。
该第一PING报文的源地址和目的地址,分别与该第一检测会话的源地址和目的地址相同;且该第一检测会话的源地址为该路由设备选定的所述源端口的IP地址,该第一检测会话的目的地址为该第一检测会话对应的外部邻接设备的IP地址。
步骤24:路由设备的主控CPU发送的第一PING报文,经该第一检测会话覆盖的某单板的网络处理器等内部模块处理之后,经该第一检测会话的目的端口向相应外部邻接设备发送。
步骤25:外部邻接设备接收到第一PING报文之后,通过查询路由表,向第一PING报文的源IP地址返回PING回应报文,外部邻接设备返回的PING回应报文不妨称为第二PING报文。
外部邻接设备接收到第一PING报文之后,对第一PING报文的内容不进行处理,通过查询路由表可获知第一PING报文中源IP地址指向的路由设备,并向该路由设备返回第二PING报文。
步骤26:如果路由设备与外部邻接设备的某通信端口接收到第二PING报文,则将接收到的第二PING报文上传给该路由设备的主控CPU。
路由设备可具体为路由器、交换机等。一种应用于骨干IP网络的路由设备通常可包括:主控单板和一块或多块转发单板,各转发单板与主控单板连接,不同转发单板之间也可以根据实际需要建立连接;主控单板主要承担对整个路由设备的控制和管理;每个转发单板包括网络处理器等模块,主要承担IP数据报文的转发,包括路由设备与外部设备之间的数据交换,还可包括不同转发单板间的数据交换。在路由设备包括多块转发单板的情形下,该路由设备还可包括一块或多块交换单板,各交换单板分别于主控单板连接,还可根据实际需要与一块或多块转发单板连接。交换单板主要承担不同单板之间的数据交换。
在实际应用中,路由设备将其通信端口接收到的第二PING报文上传到主控CPU的具体路由,可经该通信端口所在的转发单板发送给交换单板,再由交换单板发送给所述检测会话的源端口所在的转发单板,再由所述检测会话的源端口所在的转发单板转发给主控单板的主控CPU;或者,路由设备通过某通信端口接收到的第二PING报文,可经该通信端口所在的转发单板直接发送给主控单板的主控CPU;等等。
步骤27:路由设备的主控CPU根据该第一检测会话对应的第二PING报文的报文接收和检测情况,确定第一检测会话的故障状态。
路由设备的主控CPU可在针对第一检测会话发送第一PING报文之后,启动定时器。
如果在定时器超时前,主控CPU没有接收到外部邻接设备基于第一PING报文返回的第二PING报文时,主控CPU则认为第一PING报文丢弃,并对该第一检测会话的丢失报文数进行累加计数。如果主控CPU记录的第一检测会话的丢失报文数的数量,大于预设阈值,则主控CPU确定第一检测会话故障。
如果在定时器定时范围内,主控CPU接收到外部邻接设备返回的第二PING报文,则主控CPU对第二PING报文进行检测,例如对第二PING报文进行CRC校验,或将第二PING报文与第一PING报文进行内容(Payload)比较等检测,根据检测结果确定第一检测会话的故障状态。
路由设备对其他检测会话的故障状态的确定方法,与上述步骤23-27相似,在此不再赘述。
步骤28:如果第一检测会话故障,路由设备的主控CPU根据第二检测会话的故障状态以及上述映射关系,确定第一检测会话覆盖的内部模块中发生故障的模块。
第二检测会话包括与第一检测会话覆盖的内部模块部分相同的至少一条检测会话。路由设备的主控CPU根据第一检测会话的故障状态,与第一检测会话关联的第二检测会话的故障状态,以及上述映射关系,可确定第一检测会话覆盖的内部模块的故障状态。
例如假设:第一检测会话的源端口为转发单板1的端口1,其目的端口为转发单板2的端口2;第二检测会话的源端口为转发单板3的端口1,其目的端口为转发单板2的端口2;如果第二检测会话没有故障,而第一检测会话故障,则主控CPU可确定第一检测会话覆盖的内部模块中,端口1所在的转发单板1发生故障,由此实现路由设备内部模块故障的精确定位。
步骤29:根据确定的路由设备的内部模块的故障状态,对相应模块进行故障恢复处理。
本实施例提供的检测路由设备故障的方法,将该路由设备的外部邻接设备,作为本路由设备内部模块故障检测的辅助设备,通过在路由设备的主控CPU建立检测会话并建立会话标识与覆盖的内部模块之间的映射关系,周期性向外部邻接设备发送PING报文,并根据返回PING报文的接收和检测情况以及上述映射关系,确定内部模块的故障状态。该方法可实现如路由设备与外部设备的通信端口所在模块等内部模块的故障检测,提高了路由设备可进行故障检测的内部模块的覆盖范围,因此降低了路由设备内部故障的漏检率,从而提高路由设备的可靠性。
图3为本发明实施例三提供的检测路由设备故障的方法流程图。本实施例中,所述检测会话的源端口与其目的端口相同,所述第一检测报文为第一心跳检测报文,所述第二检测报文为所述第二心跳检测报文。如图3所示,本实施例提供的检测路由设备故障的方法包括:
步骤31:路由设备的某转发单板的CPU建立n条检测会话,n为大于或等于1的整数;为每条检测会话选定路由设备该转发单板的外部邻接设备作为辅助检测设备,且该检测会话的目的端口为路由设备该转发单板与该外部邻接设备的通信端口,该检测会话的源端口与其目的端口相同,且该检测会话的源地址和目的地址,均为选定的所述通信端口的IP地址。
检测会话的建立方式可由用户主动配置,还可由路由设备软件系统自动生成等。
步骤32:路由设备的该转发单板的CPU,根据各检测会话覆盖的路由设备的内部模块,建立各检测会话的会话标识及其覆盖的内部模块之间的映射关系。
路由设备的内部模块可具体为该路由设备的单板,或可具体为该路由设备的某单板上的子模块,或可为该路由设备内的其他类型模块。
步骤33:路由设备的该转发单板CPU,针对某条检测会话如第一检测会话,分别向该第一检测会话对应的外部连邻接设备周期性发送心跳检测报文,向外部邻接设备发送的心跳检测报文不妨称为第一心跳检测报文。
该第一心跳检测报文的源地址和目的地址,分别与该第一检测会话的源地址和目的地址相同;且该第一检测会话的源地址和目的地址,均为该路由设备选定的所述通信端口的IP地址。
步骤34:路由设备的该转发单板CPU发送的第一心跳检测报文,经该转发单板的上如网络处理器等内部模块处理之后,从第一检测会话的目的端口即该转发单板与外部邻接设备的通信端口,向外部邻接设备发送第一心跳检测报文。
步骤35:外部邻接设备接收到第一心跳检测报文之后,通过查询路由表,向第一心跳检测报文的源IP地址返回报文,外部邻接设备返回的报文不妨称为第二心跳检测报文。
外部邻接设备接收到第一心跳检测报文之后,对第一心跳检测报文的内容不进行处理,通过查询路由表可获知第一心跳检测报文中目的IP地址指向的路由设备,并向目的IP地址指向的路由设备返回第二心跳检测报文。由于第一心跳检测报文目的地址与源地址相同,均为该路由设备选定的所述通信端口的IP地址,因此,外部邻接设备向该路由设备返回第二心跳检测报文。
步骤36:如果路由设备经该转发单板与外部邻接设备的某通信端口接收到第二心跳检测报文,则将接收到的第二心跳检测报文上传给该转发单板的CPU。
步骤37:路由设备该转发单板的CPU根据该第一检测会话对应的第二心跳检测报文的报文接收和检测情况,确定第一检测会话的故障状态。
路由设备该转发单板的CPU接收到外部邻接设备返回的第二心跳检测报文,则该转发单板的CPU对第二心跳检测报文进行检测,例如对第二心跳检测报文进行CRC校验,或将第二心跳检测报文与第一心跳检测报文进行数值(Payload)比较等检测,根据检测结果确定第一检测会话的故障状态。
路由设备对其他检测会话的故障状态的确定方法,与上述步骤33-37相似,在此不再赘述。
步骤38:如果第一检测会话故障,路由设备该转发单板的CPU根据第二检测会话的故障状态以及上述映射关系,确定第一检测会话覆盖的内部模块中发生故障的模块。
第二检测会话包括与第一检测会话覆盖的内部模块部分相同的至少一条检测会话。路由设备该转发单板的CPU根据第一检测会话的故障状态,与第一检测会话关联的第二检测会话的故障状态,以及上述映射关系,可确定第一检测会话覆盖的内部模块的故障状态。
步骤39:根据确定的路由设备的内部模块的故障状态,对相应模块进行故障恢复处理。
本实施例提供的检测路由设备故障的方法,将该路由设备的外部邻接设备,作为本路由设备内部模块故障检测的辅助设备,通过在路由设备某转发单板的CPU建立检测会话并建立会话标识与覆盖的内部模块之间的映射关系,周期性向外部邻接设备发送心跳检测报文,并根据返回心跳检测报文的接收和检测情况以及上述映射关系,确定内部模块的故障状态。该方法可实现如路由设备与外部设备的通信端口所在模块等内部模块的故障检测,提高了路由设备可进行故障检测的内部模块的覆盖范围,因此降低了路由设备内部故障的漏检率,从而提高路由设备的可靠性。
图4为本发明实施例四提供的检测路由设备故障的装置的结构示意图。如图4所述的装置包括:检测会话建立模块41、映射关系建立模块42、检测报文发送模块43和故障状态确定模块44。
检测会话建立模块41可用于建立检测会话;所述检测会话的源端口为路由设备的任一端口,所述检测会话的目的端口为所述路由设备与外部邻接设备的通信端口。所述检测会话的源端口和目的端口,可以相同或不同。
映射关系建立模块42可用于根据所述检测会话覆盖的所述路由设备的内部模块,建立所述检测会话的会话标识与所述检测会话覆盖的内部模块之间的映射关系。
检测报文发送模块43可用于针对所述检测会话,向所述外部邻接设备周期性发送第一检测报文。所述第一检测报文的源地址和目的地址,分别与所述第一检测报文对应的所述检测会话的源地址和目的地址相同。所述检测会话的源地址为所述路由设备选定的源端口的IP地址,所述检测会话的目的地址为所述检测会话对应的所述外部邻接设备的IP地址;或者,当所述检测会话的源端口为所述通信端口时,所述检测会话的源地址和目的地址,均为所述路由设备选定的所述通信端口的IP地址。
故障状态确定模块44可用于根据所述映射关系以及第二检测报文的报文接收和检测情况,确定所述检测会话覆盖的内部模块的故障状态;所述第二检测报文为所述外部邻接设备在接收到所述第一检测报文之后,向所述路由设备返回的报文。故障状态确定模块44可具体用于根据某一检测会话对应的所述第二检测报文的报文接收和检测情况,分别确定该检测会话的故障状态,并根据该检测会话的故障状态以及上述映射关系,确定该检测会话覆盖的内部模快的故障状态。
可选的,检测会话建立模块建立的检测会话可为多条。该情形下,故障状态确定模块可进一步包括:会话故障确定单元和模块故障确定单元。其中:会话故障确定单元可用于根据多条所述检测会话中,第一检测会话和第二检测会话分别对应的所述第二检测报文的报文接收和检测情况,分别确定所述第一检测会话和所述第二检测会话的故障状态。模块故障确定单元可用于根据所述第二检测会话的故障状态以及所述映射关系,确定所述第一检测会话覆盖的内部模块的故障状态;其中:所述第一检测会话为多条所述检测会话中的任一检测会话;所述第二检测会话为多条所述检测会话中,与所述第一检测会话覆盖的内部模块部分相同的至少一条检测会话。该技术方案基于多条检测会话所覆盖的内部模块之间的关联,可实现路由设备内部模块的精确定位。
本实施例提供的检测路由设备故障的装置,将该路由设备的外部邻接设备,作为本路由设备内部模块故障检测的辅助设备,通过在路由设备内建立检测会话并建立会话标识与覆盖的内部模块之间的映射关系,周期性向外部邻接设备发送检测报文,并根据返回报文的接收和检测情况以及上述映射关系,确定内部模块的故障状态。该方法可实现如路由设备与外部设备的通信端口所在模块等内部模块的故障检测,提高了路由设备可进行故障检测的内部模块的覆盖范围,因此降低了路由设备内部故障的漏检率,从而提高路由设备的可靠性。
本实施例提供的检测路由设备故障的装置,可用于实现本发明上述实施例提供的方法。在实际应用中,本实施例提供的检测路由设备故障的装置可集成在待检测的路由设备入路由器或交换机中,该装置接收路由设备主控CPU或转发单板的CPU的控制,对路由器或交换机的内部故障进行检测。该装置的工作机理可参见本发明图1-图3对应实施例的记载,在此不受赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。