专利名称:一种基于ospf协议的gr处理方法和设备的制作方法
技术领域:
本发明涉及通信技术领域,特别是涉及一种基于OSPF协议的GR处理方法和设备。
背景技术:
OSPF (Open Shortest Path First,开放式最短路径优先)是基于链路状态的动态路由协议,使用SPFGhortest Path First,最短路径优先)算法进行路由计算。在自治系统中,每台运行OSPF的路由器会收集各自的链路状态信息,通过Flooding (洪泛)算法在整个区域内广播自身链路状态,使得在整个区域内部维护同步的链路状态数据库;基于链路状态数据库,路由器可得到以自身为根,其它节点为叶子的最短路径树,从而根据最短路径树计算最优路由。需要注意的是,路由器的OSPF协议重启(如发生主备切换导致的重启)后,该路由器上的邻居信息会丢失,且该路由器会发送Hello报文以重新发现邻居;邻居路由器在接收到该Hello报文后,由于之前已经和该路由器建立有邻居关系,因此会将该路由器从邻居列表中删除,断开与该路由器的邻居关系,并与该路由器重新建立邻居关系,从而引起网络的路由振荡;且在路由振荡的过程中,将会发生流量中断。在路由器的OSPF协议重启后,为了保证不发生流量中断,现有技术中提出了一种 OSPF GR(Graceful Restart,平滑重启)技术。但是,在OSPF GR技术中,如果整个区域内的LSA(Link State Advertisement,链路状态信息公告)发生变化,则会导致OSPF GR失败,从而无法保证不发生流量中断。
发明内容
本发明提供一种基于OSPF协议的GR处理方法和设备,以减少流量中断的发生。为了达到上述目的,本发明提供一种基于开放式最短路径优先OSPF协议的平滑重启GR处理方法,应用于包括GR重启设备和GR辅助设备的系统中,在所述GR辅助设备与所述GR重启设备进行GR流程的过程中,该方法包括以下步骤当所述GR辅助设备确定链路状态信息公告LSA发生变化时,所述GR辅助设备获得LSA发生变化的原因;如果LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障,则所述GR辅助设备退出与所述GR重启设备之间的GR流程;如果LSA发生变化的原因不是所述GR辅助设备与所述GR重启设备之间的链路出现故障,则所述GR辅助设备继续执行与所述GR重启设备之间的GR流程。在所述GR辅助设备继续执行与所述GR重启设备之间的GR流程时,所述方法进一步包括如果当前处于邻居状态交换EXCHANGE之前,所述GR辅助设备通过链路状态信息库描述DD报文将变化后的LSA通知给所述GR重启设备;或者,如果当前处于邻居状态EXCHANGE之后,所述GR辅助设备通过更新UPDATE报文将变化后的LSA通知给所述GR重启设备。在所述GR辅助设备继续执行与所述GR重启设备之间的GR流程时,所述方法进一步包括当所述GR辅助设备确定有路由环路存在时,所述GR辅助设备退出与所述GR重启设备之间的GR流程。所述GR辅助设备确定有路由环路存在,具体包括所述GR辅助设备获得下一跳为所述GR重启设备的路由,并通过所述路由发送环路检测报文,在所述环路检测报文的IP头中,源地址为所述GR辅助设备的接口地址,在所述环路检测报文的OSPF头中,对端设备标识为所述GR辅助设备的设备标识;所述GR辅助设备在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则所述GR辅助设备确定有路由环路存在。所述环路检测报文包括基于OSPF协议的虚连接VLINK的Hello报文。本发明提供一种平滑重启GR辅助设备,应用于包括GR重启设备和所述GR辅助设备的系统中,在所述GR辅助设备与所述GR重启设备进行GR流程的过程中,所述GR辅助设备包括确定模块,用于确定链路状态信息公告LSA发生变化;获得模块,用于当确定LSA发生变化时,获得LSA发生变化的原因;处理模块,用于当LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障时,退出与所述GR重启设备之间的GR流程;当LSA发生变化的原因不是所述GR辅助设备与所述GR重启设备之间的链路出现故障时,继续执行与所述GR重启设备之间的GR流程。所述处理模块,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果当前处于邻居状态交换EXCHANGE之前,则通过链路状态信息库描述DD报文将变化后的LSA 通知给所述GR重启设备;或者,如果当前处于邻居状态EXCHANGE之后,则通过更新UPDATE报文将变化后的LSA 通知给所述GR重启设备。所述处理模块,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果确定有路由环路存在,则退出与所述GR重启设备之间的GR流程。所述确定模块,还用于获得下一跳为所述GR重启设备的路由,并通过所述路由发送环路检测报文,在所述环路检测报文的IP头中,源地址为所述GR辅助设备的接口地址, 在所述环路检测报文的开放式最短路径优先OSPF头中,对端设备标识为所述GR辅助设备的设备标识;在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则确定有路由环路存在。所述环路检测报文包括基于OSPF协议的虚连接VLINK的Hello报文。与现有技术相比,本发明至少具有以下优点通过对LSA发生变化的原因进行分析,以使OSPF协议的GR处理更加可靠,减少GR处理失败情况的发生,从而减少流量中断的发生,提高了 GR处理的可靠性和容错性。
图1是本发明提供的一种GR重启设备与GR辅助设备之间进行GR流程的示意2是本发明提供的一种基于OSPF协议的GR处理方法流程图;图3是本发明提供的一种应用场景示意图;图4是本发明提出的一种GR辅助设备的结构示意图。
具体实施例方式本发明提出一种基于OSPF协议的GR处理方法,该方法应用于包括GR重启设备 (如路由器)和GR辅助(HELPER)设备(如路由器)的系统中;该GR重启设备为重启OSPF 协议的设备,该GR辅助设备为与GR重启设备连接的设备,二者互为邻居设备;当GR重启设备上的OSPF协议重启之后,为了保证不发生流量中断,需要在GR辅助设备与GR重启设备之间进行GR流程,如图1所示,为GR重启设备与GR辅助设备之间进行GR流程的示意图, 该流程可以包括以下步骤步骤101,GR重启设备上的OSPF协议重启完成之后,基于OSPF GR协议,GR重启设备向GR辅助设备发送携带LLS (Link Local Signaling,本地链路信令)Data(数据)的 Hello 报文;在该 LLS Data 的 Hello 报文中,EO(Extended Options,扩展选项)TLV(Tag Length Value,标签长度值)的Extended Options字段中的RS (用以通知邻居当前设备进入GR流程)和LR(用以实现00B(0ut-of_band LSDB Resynchronization,带外的链路状态信息库重新同步)能力的协商)标志位均被置1。步骤102,当GR辅助设备接收到来自GR重启设备的携带有RS和LR标志位均被置 1的Hello报文后,跳过对Hello报文的2-way检查流程,即保持邻居的原有状态不变;且 GR辅助设备向GR重启设备回复一个LR标志位被置1,而RS标志位被清0的Hello报文。步骤103,当GR重启设备接收到携带有LR标志位被置1的Hello报文后,将邻居状态置为2-way,后续流程将与OSPF协议流程一致,即等待DR(Designated Router,指定路由器)选举,在DR选举后将邻居状态置为Exstart (开始交换),并开始发送第一个链路状态DD (Database Description,信息库描述)报文(R bit被置1),以正式进入00B流程;此外,在DR选举后所发送的Hello报文中,RS标志位将不再置1。步骤104,当GR辅助设备接收到来自GR重启设备的R bit被置1的DD报文后,将对应的邻居状态置为Exstart,也正式进入00B流程。之后的流程和OSPF建立邻居的过程相同,一直到FULL(完整)状态,本发明中不再赘述。在上述GR流程中,如果GR辅助设备获知整个区域内的LSA发生变化,则GR辅助设备将直接退出GR流程,并向GR重启设备发送IWAY的Hello报文,以将邻居断开,并重新建立邻居,从而导致流量中断。针对上述问题,在GR辅助设备与GR重启设备进行GR流程的过程中,本发明提供的基于OSPF协议的GR处理方法,如图2所示,包括以下步骤步骤201,GR辅助设备确定LSA发生变化。步骤202,当GR辅助设备确定LSA发生变化时,GR辅助设备获得LSA发生变化的原因。具体的,导致整个区域内的LSA发生变化的原因包括但不限于(1)当这个区域内引入的外部路由有变化时,则会导致LSA发生变化(如导致5类LSA发生变化);(2)当 OSPF的其他区域内的路由有变化时,则会导致LSA发生变化(如导致3类和4类LSA发生变化);(3)当这个区域内的链路状态或者每台路由器内OSPF使能的接口状态发生变化时, 则会导致LSA发生变化(如导致1类和2类LSA发生变化)。基于上述导致LSA发生变化的原因,本发明中,如果LSA发生变化的原因是GR辅助设备与GR重启设备之间的OSPF链路出现故障(可对应于上述(3)中的链路状态发生变化),则执行步骤203 ;如果LSA发生变化的原因不是GR辅助设备与GR重启设备之间的 OSPF链路出现故障(可对应于上述(1)或(2)导致的LSA发生变化,或上述(3)中的每台路由器上OSPF使能的环回口 DOWN或者其他路由器之间的链路断掉等),则执行步骤204。步骤203,GR辅助设备退出与GR重启设备之间的GR流程。具体的,如果GR辅助设备与GR重启设备之间的OSPF链路出现故障,则GR辅助设备需要直接退出GR流程,向GR 重启设备发送IWAY的Hello报文,以将邻居断开,并重新建立与GR重启设备之间的邻居。需要说明的是,本发明中,如果是GR辅助设备与GR重启设备之间的OSPF链路出现故障,则GR重启设备也可以感知到该情况的发生,并主动退出与GR辅助设备之间的GR 流程,向GR辅助设备发送IWAY的Hello报文,以重新建立与GR辅助设备之间的邻居。步骤204,GR辅助设备继续执行与GR重启设备之间的GR流程,即GR辅助设备并不退出与GR重启设备之间的GR流程。本发明中,在GR辅助设备继续执行与GR重启设备之间的GR流程时,在LSA发生变化后,如果当前处于邻居状态EXCHANGE (交换)之前,则GR辅助设备通过链路状态DD报文将变化后的LSA通知给GR重启设备,以由链路状态DD报文保证同步;或者,如果当前处于邻居状态EXCHANGE之后,则GR辅助设备通过UPDATE (更新)报文将变化后的LSA通知给GR重启设备,以通过发送UPDATE报文和回复ACK(确认)报文保证同步。在GR辅助设备继续执行与GR重启设备之间的GR流程时,如果GR辅助设备确定有路由环路存在,则GR辅助设备需要退出与GR重启设备之间的GR流程。具体的,GR辅助设备确定有路由环路存在包括GR辅助设备获得下一跳为GR重启设备的路由,并通过该路由发送环路检测报文(在下一跳为GR重启设备的路由中,可对应有多个地址,GR辅助设备可以从中任意选择一个或多个地址为目的地址发送环路检测报文),在环路检测报文(其包括但不限于基于OSPF协议的虚连接VLINK的Hello报文)的IP头中,源地址为GR辅助设备的接口地址,在环路检测报文的OSPF头中,对端设备标识为GR辅助设备的设备标识; GR辅助设备在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则GR辅助设备确定有路由环路存在。由于在GR流程中可能会由于LSA发生变化导致路由环路,因此本发明中需要使GR 辅助设备能够感知到有路由环路的存在,从而主动退出与GR重启设备之间的GR流程。为了实现该过程,则进行如下分析GR流程中由于LSA发生变化导致路由环路的原因为GR重启设备在GR流程内不会更新FIB (转发表)表项,不能快速感知到路由的变化;GR辅助设备在获知LSA发生变化后,会更新FIB表项;GR流程中只有GR重启设备的FIB表项不是最新的;因此由于GR重启设备的FIB表项不更新所产出的路由环路,一定会经过GR重启设备。以图3所示的应用场景为例,当GR流程中LSA发生变化时,GR辅助设备1和GR辅助设备2可以感知,且会更新路由信息并下发到FIB表项;而GR重启设备不会进行路由信息,且不会更新FIB表项;因此产出的路由环路一定会经过GR重启设备。基于上述分析,对于经过GR重启设备所产出的路由环路,在环路存在的情况下, GR辅助设备需要可以感知到路由环路的存在;其中,GR辅助设备从一个端口发出去的报文,如果又回到同一个端口,则可以确认出现路由环路;或者,GR辅助设备从一个端口发出去的报文,如果从不同的端口回到该GR辅助设备,则可以确认出现路由环路。具体的,为了检测出上述情况,GR辅助设备可以通过SPF树计算出下一跳为GR重启设备的所有路由,之后以路由对应的多个地址分别为目的地址发送指定个数(例如3-5 个)的环路检测报文(环路检测报文的构造可使用基于OSPF协议的VLINK的Hello报文); 在IP头,源地址使用发送端(GR辅助设备)的接口地址,目的地址使用匹配到的GR重启设备的路由对应的地址,TTL(Time To Live,生存时间)为255 ;在OSPF头,对端的router id 使用自身的router id。基于此,GR辅助设备一旦在GR流程中收到环路检测报文,且router id是自身的router id,源IP地址是自身的接口地址,则可以判断是收到了自身发出去的环路检测报文,说明在GR流程中由于LSA发生变化导致了路由环路。此外,如果GR辅助设备在GR 流程结束后,收到了自身发送出去的环路检测报文,则GR辅助设备直接丢掉该环路检测报文,不做其他处理。通过上述方法,即可以使GR辅助设备能够有效检测到由于LSA发生变化导致的路由环路,并可以将路由环路控制在最小的时间内,且可以控制环路检测报文的发送数量,从而可以有效的保证在GR流程中流量不中断。综上所述,本发明中,通过重新设计基于OSPF协议的GR流程,增强了 OSPF协议的容错性,加强了 OSPF协议的可靠性和可维护性,更好的保证了在GR流程中的流量不中断; 具体的,在OSPF协议的GR流程中出现外部路由震荡时,可以保证GR流程不退出,流量不中断;在OSPF协议的GR流程中出现部分拓扑变化时,可以保证GR流程不退出,流量不中断。基于与上述方法同样的发明构思,本发明还提出了一种平滑重启GR辅助设备,应用于包括GR重启设备和所述GR辅助设备的系统中,在所述GR辅助设备与所述GR重启设备进行GR流程的过程中,如图4所示,所述GR辅助设备包括确定模块11,用于确定链路状态信息公告LSA发生变化;获得模块12,用于当确定LSA发生变化时,获得LSA发生变化的原因;处理模块13,用于当LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障,退出与所述GR重启设备之间的GR流程;当LSA发生变化的原因不是所述GR辅助设备与所述GR重启设备之间的链路出现故障时,继续执行与所述GR重启设备之间的GR流程。所述处理模块13,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果当前处于邻居状态交换EXCHANGE之前,则通过链路状态信息库描述DD报文将变化后的 LSA通知给所述GR重启设备;或者,如果当前处于邻居状态EXCHANGE之后,则通过更新UPDATE报文将变化后的LSA 通知给所述GR重启设备。所述处理模块13,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果确定有路由环路存在,则退出与所述GR重启设备之间的GR流程。所述确定模块11,还用于获得下一跳为所述GR重启设备的路由,并通过所述路由发送环路检测报文,在所述环路检测报文的IP头中,源地址为所述GR辅助设备的接口地址,在所述环路检测报文的开放式最短路径优先OSPF头中,对端设备标识为所述GR辅助设备的设备标识;在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则确定有路由环路存在。所述环路检测报文包括基于OSPF协议的虚连接VLINK的Hello报文。其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明序号仅仅为了描述,不代表实施例的优劣。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种基于开放式最短路径优先OSPF协议的平滑重启GR处理方法,应用于包括GR重启设备和GR辅助设备的系统中,其特征在于,在所述GR辅助设备与所述GR重启设备进行 GR流程的过程中,该方法包括以下步骤当所述GR辅助设备确定链路状态信息公告LSA发生变化时,所述GR辅助设备获得LSA 发生变化的原因;如果LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障,则所述GR辅助设备退出与所述GR重启设备之间的GR流程;如果LSA发生变化的原因不是所述GR辅助设备与所述GR重启设备之间的链路出现故障,则所述GR辅助设备继续执行与所述GR重启设备之间的GR流程。
2.如权利要求1所述的方法,其特征在于,在所述GR辅助设备继续执行与所述GR重启设备之间的GR流程时,所述方法进一步包括如果当前处于邻居状态交换EXCHANGE之前,所述GR辅助设备通过链路状态信息库描述DD报文将变化后的LSA通知给所述GR重启设备;或者,如果当前处于邻居状态EXCHANGE之后,所述GR辅助设备通过更新UPDATE报文将变化后的LSA通知给所述GR重启设备。
3.如权利要求1所述的方法,其特征在于,在所述GR辅助设备继续执行与所述GR重启设备之间的GR流程时,所述方法进一步包括当所述GR辅助设备确定有路由环路存在时,所述GR辅助设备退出与所述GR重启设备之间的GR流程。
4.如权利要求3所述的方法,其特征在于,所述GR辅助设备确定有路由环路存在,具体包括所述GR辅助设备获得下一跳为所述GR重启设备的路由,并通过所述路由发送环路检测报文,在所述环路检测报文的IP头中,源地址为所述GR辅助设备的接口地址,在所述环路检测报文的OSPF头中,对端设备标识为所述GR辅助设备的设备标识;所述GR辅助设备在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则所述GR辅助设备确定有路由环路存在。
5.如权利要求4所述的方法,其特征在于,所述环路检测报文包括基于OSPF协议的虚连接VLINK的Hello报文。
6.一种平滑重启GR辅助设备,应用于包括GR重启设备和所述GR辅助设备的系统中, 其特征在于,在所述GR辅助设备与所述GR重启设备进行GR流程的过程中,所述GR辅助设备包括确定模块,用于确定链路状态信息公告LSA发生变化;获得模块,用于当确定LSA发生变化时,获得LSA发生变化的原因;处理模块,用于当LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障时,退出与所述GR重启设备之间的GR流程;当LSA发生变化的原因不是所述GR辅助设备与所述GR重启设备之间的链路出现故障时,继续执行与所述GR重启设备之间的GR流程。
7.如权利要求6所述的GR辅助设备,其特征在于,所述处理模块,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果当前处于邻居状态交换EXCHANGE之前,则通过链路状态信息库描述DD报文将变化后的LSA通知给所述GR重启设备;或者,如果当前处于邻居状态EXCHANGE之后,则通过更新UPDATE报文将变化后的LSA通知给所述GR重启设备。
8.如权利要求6所述的GR辅助设备,其特征在于,所述处理模块,进一步用于在继续执行与所述GR重启设备之间的GR流程时,如果确定有路由环路存在,则退出与所述GR重启设备之间的GR流程。
9.如权利要求8所述的GR辅助设备,其特征在于,所述确定模块,还用于获得下一跳为所述GR重启设备的路由,并通过所述路由发送环路检测报文,在所述环路检测报文的IP头中,源地址为所述GR辅助设备的接口地址,在所述环路检测报文的开放式最短路径优先OSPF头中,对端设备标识为所述GR辅助设备的设备标识;在收到环路检测报文后,如果OSPF头中的设备标识为自身的设备标识,且IP头中的源地址是自身的接口地址,则确定有路由环路存在。
10.如权利要求9所述的GR辅助设备,其特征在于,所述环路检测报文包括基于OSPF 协议的虚连接VLINK的Hello报文。
全文摘要
本发明公开了一种基于OSPF协议的GR处理方法和设备,该方法包括当GR辅助设备确定LSA发生变化时,所述GR辅助设备获得LSA发生变化的原因;如果LSA发生变化的原因是所述GR辅助设备与所述GR重启设备之间的链路出现故障,则所述GR辅助设备退出与所述GR重启设备之间的GR流程;否则,所述GR辅助设备继续执行与所述GR重启设备之间的GR流程。本发明中,可减少流量中断的发生。
文档编号H04L29/06GK102404228SQ201110411170
公开日2012年4月4日 申请日期2011年12月12日 优先权日2011年12月12日
发明者王海 申请人:杭州华三通信技术有限公司