一种快速确定OSPF接口角色的方法和设备
技术领域
本发明涉及通信技术领域,特别是涉及一种快速确定OSPF接口角色的方法和设备。
背景技术
OSPF(Open Shortest Path First,开放式最短路径优先)属于IGP(InteriorGateway Protocol,内部网关协议),用于在自治***内部发现路由,且OSPF是基于链路状态的动态路由协议,通过使用SPF(Shortest Path First,最短路径优先)算法进行路由计算。
如图1所示的整个自治***划分成若干个区域(如Area1、Area2等)的组网示意图,在自治***中,每台运行OSPF的路由器会收集各自的接口/邻接信息(即链路状态),并通过Flooding(洪泛)算法广播自身的链路状态,使得整个区域内部维护一个同步的链路状态数据库,根据链路状态数据库,路由器可计算出以自身为根,以其它网络节点为叶子的最短路径树,从而计算出自身到区域内部各节点的最短路径。
通过使用SPF算法计算路由的过程包括:1、交换需要的链路状态信息(在此之前,每台路由器需要与邻接的路由器建立OSPF邻居,只有基于OSPF邻居才能在相互之间传递链路状态信息);2、根据SPF算法计算最短路径树;3、根据最短路径树计算最优路由。
需要注意的是,当前OSPF网络可分为广播网络、NBMA(Non-BroadcastMultiple Access,非广播多路访问)网络、P2P(点到点)网络和P2MP(点到多点)网络。为了减少报文的交互量,在广播网络和NBMA网络中引入了DR(Designated Router,指定路由器)和BDR(Backup Designated Router,备份指定路由器)。
当路由器上使能OSPF协议后,路由器的接口上需维护图2所示的接口状态变换状态机和图3所示的邻居状态变换(Hello协议相关)状态机。接口状态变换状态机中,包括DOWN(停止)状态、Waiting(等待)状态、P2P(点到点)状态、DR Other(非指定路由器)状态、Backup(备份指定路由器)状态和DR状态。邻居状态变换状态机中,至少包括DOWN状态、Attempt(尝试)状态、Init(起始)状态、2-Way状态、ExStart(开始交换)状态。
现有技术中,针对接口状态变换状态机,当在DOWN状态触发InterfaceUP(接口使能)事件时,如果接口为P2P或P2MP类型,从DOWN状态迁移至P2P(Point-to-point)状态;如果接口为广播或NBMA类型,从DOWN状态迁移至Waiting状态,并等待进入DR选举流程,在DR选举流程前状态将维持在Waiting状态。
在Waiting状态下,如果接口接收到来自邻居的携带有BDR或DR信息的HELLO报文,将触发BackupSeen(发现指定路由器)事件,和其他设备一起选举出BDR和DR,并按照选举结果,从Waiting状态迁移至DR Other状态、Backup状态或DR状态;
如果接口在指定定时器(dead定时器)时间内没有接收到来自邻居的携带有BDR或DR信息的HELLO报文,如果dead定时器超时,将触发WaitTimer(等待时间)事件,利用dead定时器时间内接收到的HELLO报文(其中并不携带有BDR或DR信息)和其他设备一起选举出BDR和DR,并按照选举结果,从Waiting状态迁移至DR Other状态、Backup状态或DR状态。
针对邻居状态变换状态机,当在DOWN状态触发Start(开始)事件,从DOWN状态迁移至Attempt状态;在DOWN状态或Attempt状态下,如果触发HelloReceived(接收Hello报文)事件,状态迁移至Init状态;在Init状态下,如果触发2-WayReceived(接收2-Way报文)事件,状态迁移至2-Way状态;在2-Way状态下,如果接收到携带有BDR或DR信息的HELLO报文,则状态迁移至ExStart状态,之后可进行计算路由等后续过程。
综上所述,当接口状态变换状态机处于Waiting状态,且需要通过等待dead定时器超时才从Waiting状态迁移时,在dead定时器超时之前,由于没有接收到携带有BDR或DR信息的HELLO报文,因此邻居状态变换状态机的状态无法从2-Way状态迁移至ExStart状态,继而无法进行LSA(Link StateAdvertisement,链路状态广播)交互,各路由器之间无法交换需要的链路状态信息,无法执行路由计算等过程。
这种情况下,网络中所有邻居状态变换状态机需要等待一个dead定时器的时间来完成状态迁移至ExStart状态的过程,即需要等待dead定时器超时才能开始进行信息交互和路由计算,从而影响了网络的使用。
进一步的,由于dead定时器可以进行设置,如果dead定时器时间被设置的很大(为减少CPU负担或提高带宽利用率,最大值为68年),则可能导致邻居长时间无法建立,继而使得路由长时间内无法正常学习。
发明内容
本发明提供一种快速确定OSPF接口角色的方法和设备,以快速进行路由计算。
为了达到上述目的,本发明提供一种快速确定开放式最短路径优先OSPF接口角色的方法,该方法包括以下步骤:
网络设备判断OSPF接口是否处于等待Waiting状态;
如果处于Waiting状态,所述网络设备触发最高优先级BestPriority事件,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态,并向其他网络设备发送携带自身为DR或BDR信息的HELLO报文;由所述其他网络设备根据所述HELLO报文触发BackupSeen事件,将所述其他网络设备的OSPF接口状态从Waiting状态迁移至DR Other状态、BDR状态或DR状态;
如果不处于Waiting状态,且处于2-Way状态以上的状态,所述网络设备确定已经接收到携带DR或BDR信息的HELLO报文,并和其他网络设备交换需要的链路状态信息;所述2-Way状态以上的状态包括:开始交换ExStart状态、交换exchange状态、完整full状态、加载loading状态。
所述方法还包括:通过将所述网络设备的DR选举优先级设置为255,触发所述网络设备在Waiting状态时执行BestPriority事件。
在处于Waiting状态时,所述方法还包括:所述网络设备触发用于快速确定OSPF接口角色的定时器事件,并在到达定时器的超时时间后,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态。
一种网络设备,包括:
判断模块,用于判断OSPF接口是否处于等待Waiting状态;
处理模块,用于当判断结果为处于Waiting状态时,触发最高优先级BestPriority事件,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态,并向其他网络设备发送携带自身为DR或BDR信息的HELLO报文;由所述其他网络设备根据所述HELLO报文触发BackupSeen事件,将所述其他网络设备的OSPF接口状态从Waiting状态迁移至DR Other状态、BDR状态或DR状态;
当判断结果为不处于Waiting状态,且处于2-Way状态以上的状态时,确定已经接收到携带DR或BDR信息的HELLO报文,并和其他网络设备交换需要的链路状态信息;所述2-Way状态以上的状态包括:开始交换ExStart状态、交换exchange状态、完整full状态、加载loading状态。
通过将所述网络设备的DR选举优先级设置为255,触发所述网络设备在Waiting状态时执行BestPriority事件。
所述处理模块,还用于在处于Waiting状态时,触发用于快速确定OSPF接口角色的定时器事件,并在到达定时器的超时时间后,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态。
与现有技术相比,本发明至少具有以下优点:
通过设置BestPriority(最高优先级)事件来尽快结束Waiting状态的等待时间,节省了邻居建立过程中的时间开销,加快了收敛时间,使得OSPF协议可以更好的应用在各种特殊的组网环境中,并且允许配置更大dead定时器时间,以减弱OSPF报文对网络设备的影响。
附图说明
图1是现有技术中整个自治***划分成若干个区域的组网示意图;
图2是现有技术中接口状态变换状态机的示意图;
图3是现有技术中邻居状态变换状态机的示意图;
图4是本发明提供的一种优化的接口状态变换状态机的示意图;
图5是本发明中利用图4所示的状态机实现数据传输的方法流程图;
图6是本发明提出的一种网络设备的结构图。
具体实施方式
针对现有图2所示的接口状态变换状态机(以下简称为状态机A),本发明中提供一种优化的接口状态变换状态机(以下简称为状态机B),该状态机B如图4所示。与状态机A相比,状态机B中配置有BestPriority事件,该BestPriority事件用于在Waiting状态下触发网络设备将状态机B从Waiting状态迁移至DR状态或BDR状态。实际应用中,可通过将网络设备的DR选举优先级设置为255,触发网络设备在Waiting状态时执行BestPriority事件。
为了和状态机A兼容,状态机B可配置状态机A中所示的BackupSeen事件、WaitTimer事件以及后续的状态迁移过程,并可采用开关等方式控制状态机B基于BestPriority事件从Waiting状态迁移,或者控制状态机B基于BackupSeen事件/WaitTimer事件从Waiting状态迁移,本发明中以状态机B基于BestPriority事件从Waiting状态迁移为例进行说明。
基于图4所示的状态机B,针对广播或NBMA类型的网络,本发明提供一种快速确定OSPF接口角色的方法,应用于使能OSPF协议,且使能状态机B的网络设备(如路由器)上,如图5所示,该方法包括以下步骤:
步骤501,当状态机B在DOWN状态下触发InterfaceUP事件时,网络设备将状态机B从DOWN状态移至Waiting状态。
步骤502,网络设备触发BestPriority事件,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态。可配置网络设备以DR身份执行后续流程,此时从Waiting状态迁移至DR状态;或者,可配置网络设备以BDR身份执行后续流程,此时从Waiting状态迁移至BDR状态。
在Waiting状态下,网络设备可直接获知自身具有最高的DR选举优先级,并在状态机B中触发BestPriority事件,之后网络设备确定自身为DR或BDR,将状态机B从Waiting状态迁移至DR或BDR状态。
由于DR选举的优先级最大取值为255,当优先级为255时网络设备可能成为DR,因此可预先配置该网络设备的优先级为255,网络设备获知自身的DR选举优先级为255时可确定自身具有最高的DR选举优先级,从而触发BestPriority事件。需要注意的是,即使不将网络设备的优先级配置为255,网络设备在Waiting状态下也可直接认为自身具有最高优先级,并在状态机B中触发BestPriority事件。
步骤503,网络设备向其他网络设备发送携带自身为DR或BDR信息的HELLO报文。如果网络设备确定自身为DR,则向其他网络设备发送携带自身为DR信息的HELLO报文;如果网络设备确定自身为BDR,则向其他网络设备发送携带自身为BDR信息的HELLO报文。
步骤504,其他网络设备接收携带有DR或BDR信息的HELLO报文,并通过HELLO报文触发BackupSeen事件,将其他网络设备的OSPF接口状态从Waiting状态迁移至DR Other状态、BDR状态或DR状态。
具体的,当其他网络设备处于Waiting状态时,如果接收到带有DR或BDR信息的HELLO报文,则将触发BackupSeen事件,进行DR和BDR的选举,该过程不再赘述。
本发明中,除了BestPriority事件,还可设置用于快速确定OSPF接口角色的定时器事件,在处于Waiting状态时,网络设备直接触发该定时器事件,并在到达定时器的超时时间(该时间可以设置的很短,以保证尽快进行切换)后,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态。
需要注意的是,由于接口状态变换状态机是针对网络设备的接口所设置的,即上述的事件触发、状态迁移等过程均是针对接口的处理。
因此,(1)可在网络设备的一个接口上使能OSPF协议且使能状态机B,基于该接口可向其他网络设备发送携带有DR或BDR信息的HELLO报文,其他网络设备接收到携带有DR或BDR信息的HELLO报文后,如果处于Waiting状态,则触发BackupSeen事件,选举出BDR和DR,并按照选举结果,其他网络设备的接口状态可为DR Other状态、Backup状态或DR状态。
(2)可在网络设备的多个接口(如一个网络设备的所有接口)上使能OSPF协议且使能状态机B,基于多个接口向其他网络设备发送携带有DR或BDR信息的HELLO报文,之后的处理与一个接口的处理类似。
(3)可在多个网络设备(如网络内的所有网络设备)上使能OSPF协议且使能状态机B,各网络设备均会向其他网络设备发送携带有DR或BDR信息的HELLO报文,之后各网络设备基于接收到的HELLO报文重新选举出DR和BDR,后续处理不再赘述。
本发明中,在执行上述步骤之前,如果OSPF接口已经处于2-Way状态以上的状态(如开始交换ExStart状态、交换exchange状态、完整full状态、加载loading状态),则网络设备确定已经接收到携带DR或BDR信息的HELLO报文,并和其他网络设备交换需要的链路状态信息,该过程将按照现有流程进行处理,ExStart状态、exchange状态、full状态、loading状态的相关处理过程在此不再赘述。
综上所述,在广播或NBMA网络的邻居建立过程中,通过设置BestPriority事件来尽快结束Waiting状态的等待时间,使得各网络设备不再等待dead定时器超时时间来选举DR和BDR,各网络设备的接口可尽快拥有固定角色,且邻居状态变换状态机可直接进入Exstart状态,开始LSA交互流程。
通过将网络设备(如网络设备A)的优先级设置为255,在网络设备A发送携带自身为DR信息的HELLO报文后,各网络设备在选举DR的过程中,网络设备A会由于自身具有最高的优先级成为DR,可维持DR不变,DR不会因为状态机B的设置而频繁变更,使得网络可稳定运行。
通过尽快结束Waiting状态的等待时间,在使能了BFD(BidirectionalForwarding Detection,双向转发检测)检测链路的情况下,可将hello报文间隔设置较长,将dead定时器时间设置很大,此时仍可快速建立起OSPF邻居,加快收敛。在存在大量OSPF邻居的情况下,通过加大dead定时器时间(以减少CPU占用率),此时仍可保证OSPF邻居快速建立。
基于与上述方法同样的发明构思,本发明还提出了一种网络设备,如图6所示,该网络设备包括:
判断模块11,用于判断OSPF接口是否处于等待Waiting状态;
处理模块12,用于当判断结果为处于Waiting状态时,触发最高优先级BestPriority事件,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态,并向其他网络设备发送携带自身为DR或BDR信息的HELLO报文;由所述其他网络设备根据所述HELLO报文触发BackupSeen事件,将所述其他网络设备的OSPF接口状态从Waiting状态迁移至DR Other状态、BDR状态或DR状态;
当判断结果为不处于Waiting状态,且处于2-Way状态以上的状态时,确定已经接收到携带DR或BDR信息的HELLO报文,并和其他网络设备交换需要的链路状态信息;所述2-Way状态以上的状态包括:开始交换ExStart状态、交换exchange状态、完整full状态、加载loading状态。
本发明中,通过将所述网络设备的DR选举优先级设置为255,触发所述网络设备在Waiting状态时执行BestPriority事件。
所述处理模块12,还用于在处于Waiting状态时,触发用于快速确定OSPF接口角色的定时器事件,并在到达定时器的超时时间后,将OSPF接口状态从Waiting状态迁移至DR状态或者BDR状态。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。