[0027] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0028] 如图1所示,本发明提供一种基于OSPF协议的GR方法,包括:
[0029] 步骤S1:判断运行OSPF协议的第一路由器在进行GR时的路由器角色及GR角色;其中,所述路由器角色包括:DR(Designated Router,指定路由器)、BDR(Backup Designated Router,备份指定路由器)、及DR other(DR及BDR以外的),所述GR角色包括:GRRestarter及GR Helper。
[0030] 在一实施例中,所述GR角色的判断是根据路由器接口状态、配置信息和路由器角色来实现的;所述DR、BDR及DR other是各自具有优先级,通过优先级来选举产生DR或BDR,在广播网和NBMA网络中,任意两台路由器之间都要交换路由信息。如果网络中有n台路由器,则需要建立n(n-1)/2个邻接关系。这使得任何一台路由器的路由变化都会导致多次传递,浪费了带宽资源。为解决这一问题,OSPF协议定义了指定路由器DR(Designated Router),所有路由器都只将信息发送给DR,由DR将网络链路状态发送出去。如果DR由于某种故障而失效,则网络中的路由器必须重新选举DR,再与新的DR同步。这需要较长的时间,在这段时间内,路由的计算是不正确的。为了能够缩短这个过程,OSPF提出了BDR(Backup Designated Router,备份指定路由器)的概念。BDR实际上是对DR的一个备份,在选举DR的同时也选举出BDR,BDR也和本网络内的所有路由器建立邻接关系并交换路由信息。当DR失效后,BDR会立即成为DR。由于不需要重新选举,并且邻接关系事先已建立,所以这个过程是非常短暂的。当然这时还需要再重新选举出一个新的BDR,虽然一样需要较长的时间,但并不会影响路由的计算。DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息。
[0031] 步骤S2:通过第一路由器发送含有其自身GR角色及路由器角色信息的Grace-LSA通告至邻接的第二路由器;在判断第一路由器的GR角色为GR Restarter时,第二路由器作为GRHelper。
[0032] 在一实施例中,所述第二路由器进入GR Helper模式,以进行与GR Restarter的交互。
[0033] 现有的Grace-LSA报文结构中是不含有角色信息的;为了携带Restarter端GR角色和路由器角色,选择扩展了Grace-LSA的字段;举例来说,如图2所示,在现有Grace-LSA报文结构的基础上进行了改动,图中标识为A的扩展的两个bit用于携带路由器角色,例如00表示为DR,01表示为BDR,10表示为DR other。
[0034] 步骤S3:根据第一路由器的路由器角色,令第二路由器选择对应的路由器角色来发送携带LSA的DD报文来响应第一路由器以进行LSDB同步。
[0035] 在一实施例中,所述的基于OSPF协议的GR方法,还包括:在判断所述第一路由器的GR角色不是GR Restarter时,第二路由器拒绝作为GR Helper。
[0036] 如图3所示,大概的交互是本技术方案与原有OSPF GR流程的差异主要在GR过程的第一阶段和第二阶段,在第一阶段,GR Restarter端根据自有配置和接口情况,查询得出自己是Restarter模式,同时查询获悉本路由器的角色是DR、BDR还是DR other,并利用Grace-LSA通知邻居路由器进入Helper模式,并宣告路由器角色。第二阶段,根据Grace-LSA携带的对端邻接路由器的角色来选择合适的邻接路由器来发送携带LSA的DD报文进行LSDB同步,可选的,所述第一路由器在收到所述DD报文后,反馈LSU报文,接收端对应反馈LSACK报文。
[0037] 如图4所示,所述基于OSPF协议的GR方法,在第二路由器接收到第一路由器发来的Grace-LSA中的GR角色和路由器角色信息时,需要有对第二路由器或对端路由器的路由器角色的检测机制。
[0038] 具体来说,在OSPF GR发生时,根据路由器接口状态、配置信息和路由器角色来判断第一路由器的GR角色,将路由器角色和GR角色,通过Grace-LSA报文中字段,将路由器角色和GR角色通告给邻接的第二路由器;通过所述检测机制,邻接的第二路由器根据Grace-LSA获取的对端第一路由器角色,选择最合适的路由器角色进行LSDB的同步,其规则可以是:只能由路由器角色为DR或BDR的Helper发起DD报文来同步数据库。
[0039] 举例说明,所述步骤S3中,所述根据第一路由器的路由器角色,令第二路由器选择对应的路由器角色来发送携带LSA的DD报文来响应第一路由器以进行LSDB同步,例如可以包括:
[0040] 步骤S301:检测所述第一路由器的路由器角色,其中,所述检测可以是由第二路由器执行或连接于第二路由器的部件执行,根据检测结果进行如下中的一种:
[0041] 第一种:
[0042] 步骤S302:若所述第一路由器的路由器角色为BDR,则判断第二路由器的路由器角色;
[0043] 步骤S303:若第二路由器角色为DR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;
[0044] 步骤S304:若第二路由器角色为DR other,则等待路由器角色为DR的路由器发来的DD报文,并保持GR状态;
[0045] 第二种:
[0046] 步骤S305:若所述第一路由器的路由器角色为DR,则判断第二路由器的路由器角色;
[0047] 步骤S306:若第二路由器角色为BDR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;
[0048] 步骤S307:若第二路由器角色为DR other,则等待路由器角色为BDR的路由器发来的DD报文,并保持GR状态;
[0049] 第三种:
[0050] 步骤S308:若所述第一路由器的路由器角色为DR other,则判断第二路由器的路由器角色;
[0051] 步骤S309:若第二路由器角色为DR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;
[0052] 步骤S310:若第二路由器角色为DR other,则等待路由器角色为DR的路由器发来的DD报文,并保持GR状态。
[0053] 如此,便可实现前述的规则:只能由路由器角色为DR或BDR的Helper发起DD报文来同步数据库,当然在实现方式上并非以上述为限。
[0054] 如图5所示,本发明提供一种基于OSPF协议的GR系统1,上述实施例中的技术细节均可应用于系统实施例中,因此对相同的技术特征不作重复赘述;所述GR系统1包括:角色检测模块11,用于判断运行OSPF协议的第一路由器在进行GR时的路由器角色及GR角色,所述路由器角色包括:DR、BDR、及DR other;所述GR角色包括:GR Restarter及GRHelper;并令所述第一路由器发送含有其自身GR角色及路由器角色信息的Grace-LSA通告至邻接的第二路由器;GR角色选择模块12,用于在判断第一路由器的GR角色为GRRestarter时,第二路由器作为GR Helper;路由器角色选择模块13,根据第一路由器的路由器角色,令第二路由器选择对应的路由器角色来发送携带LSA的DD报文来响应第一路由器以进行LSDB同步。
[0055] 需说明的是,上述GR角色选择模块12是路由器角色选择模块13的基础,GR角色选择模块12可例如是在GR Restarter端的第一路由器使用,而路由器角色选择模块13对应可以是在GR Helper端的第二路由器使用。两个模块之间的联系,可以是通过GR Restarter和GRHelper之间的Grace-LSA来完成的。
[0056] 当然,在其他实施例中,所述GR系统1亦可独立出来,搭载第一路由器、第二路由器以外但与两者相连的硬件装置实现,并非以上述为限。
[0057] 在一实施例中,所述GR角色选择模块12,用于在判断所述第一路由器的GR角色不是GR Restarter时,令第二路由器拒绝作为GR Helper。
[0058] 在一实施例中,所述角色检测模块11可以是例如设于第一路由器的软件模块;所述路由器角色选择模块13的根据第一路由器的路由器角色,令第二路由器选择对应的路由器角色来发送携带LSA的DD报文来响应第一路由器以进行LSDB同步,包括:检测所述第一路由器的路由器角色,并据以进行如下中的一种;(1)若所述第一路由器的路由器角色为BDR,则判断第二路由器的路由器角色;若第二路由器角色为DR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;若第二路由器角色为DR other,则等待路由器角色为DR的路由器发来的DD报文,并保持GR状态;(2)若所述第一路由器的路由器角色为DR,则判断第二路由器的路由器角色;若第二路由器角色为BDR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;若第二路由器角色为DR other,则等待路由器角色为BDR的路由器发来的DD报文,并保持GR状态;(3)若所述第一路由器的路由器角色为DR other,则判断第二路由器的路由器角色;若第二路由器角色为DR,则执行所述发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;若第二路由器角色为DR other,则等待路由器角色为DR的路由器发来的DD报文,并保持GR状态。
[0059] 在一实施例中,所述第一路由器在收到所述DD报文后,反馈LSU报文。
[0060] 在一实施例中,所述GR角色的判断是根据路由器接口状态、配置信息和路由器角色来实现的。
[0061] 综上所述,本发明提供一种基于OSPF协议的GR方法及系统,包括:判断运行OSPF协议的第一路由器在进行GR时的路由器角色及GR角色;其中,所述路由器角色包括:DR、BDR、及DR other,所述GR角色包括:GR Restarter及GR Helper;通过第一路由器发送含有其自身GR角色及路由器角色信息的Grace-LSA通告至邻接的第二路由器;在判断第一路由器的GR角色为GR Restarter时,第二路由器作为GR Helper;根据第一路由器的路由器角色,令第二路由器选择对应的路由器角色来发送携带LSA的DD报文来响应第一路由器以进行LSDB同步;增加GR过程中的角色判断机制从而确认准确的主动DD同步,减少不必要的信息交互,提升效率。
[0062] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。