发明内容
有鉴于此,本发明提供一种基于OSPF协议的平滑重启方法和路由器,能够在OSBF无备情形下进行不中断业务升级。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种基于OSPF协议的平滑重启方法,记录OSPF协议的邻居信息,所述方法包括:
路由器获得不中断业务升级ISSU消息时,记录重启原因,并通知所述记录中对应的邻居进入help状态以及处于help状态时间;
路由器的OSPF重启后,若读取到记录的重启原因,则在进行配置恢复时抑制OSPF接口UP,配置恢复后,根据记录的邻居信息进行平滑重启GR交互并同步数据库,完成所述同步数据库时,通知所述记录中的邻居结束GR流程;若未读取到重启原因,则允许OSPF接口UP。
一种路由器,可用于基于开放式最短路径优先OSPF协议的平滑重启中,所述路由器包括:记录单元、收发单元、获取单元和处理单元;
所述记录单元,用于记录OSPF协议的邻居信息;当所述收发单元接收到不中断业务升级ISSU消息时,记录重启原因;
所述收发单元,用于接收ISSU消息,若接收到ISSU消息,通知所述记录单元记录中对应的邻居进入help状态以及处于help状态时间;
所述获取单元,用于当OSPF重启后,读取所述记录单元中记录的重启原因;
所述处理单元,用于当所述获取单元读取到记录的重启原因时,则在进行配置恢复时抑制OSPF接口UP,配置恢复后,根据记录的邻居信息进行GR交互并同步数据库,完成所述同步数据库时,通知所述记录中对应的邻居结束GR流程;当未读取到重启原因,则允许OSPF接口UP。
综上所述,本发明通过预先记录邻居信息,当OSPF协议需要重启时,记录重启原因并通知记录中对应的邻居进入help流程,OSPF协议重启后根据记录的重启原因以及邻居信息进行GR流程,能够在OSPF无备的情形下进行不中断业务升级。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明提出一种基于OSPF协议的平滑重启方法,记录当前OSPF协议的邻居信息,在OSPF协议正常的时候,实时记录邻居信息,将邻居信息记录到一个存储空间,可以是磁盘,也可以是内存,具体实现时根据具体情况确定。
参加图2,图2为本发明实施例中平滑重启方法流程图。具体步骤为:
步骤101,路由器获得ISSU消息时,记录重启原因,并通知所述记录中邻居信息对应的邻居进入help状态以及处于help状态时间。
本发明具体实现时,在重启前,通知记录中邻居信息对应的所有邻居进入help状态以及处于该状态的时间。
邻居收到该通知时,进入help状态,当发现对端的OSPF处于重启状态时,保持GR会话,在该help状态时间内保留重启OSPF的拓扑或路由信息。
步骤102,路由器的OSPF重启后,若读取到记录的重启原因,则在进行配置恢复时抑制OSPF接口UP,配置恢复后,根据记录的邻居信息进行平滑重启GR交互并同步数据库,完成所述同步数据库时,通知所述记录中的邻居结束GR流程;若未读取到重启原因,则允许OSPF接口UP。
本步骤中若读取到重启原因,说明该OSPF正常重启,则要进入GR流程;若未读取到重启原因,则说明非正常重启,进行正常的OSPF交互流程。
步骤102中若读取到记录的重启原因之后,在进行配置恢复时抑制OSPF接口UP之前,进一步包括:
确定是否读取到记录的邻居信息,如果是,执行所述在进行配置恢复时抑制OSPF接口UP及后续步骤;否则,允许OSPF接口UP。
若读取到记录的邻居信息说明该OSPF重启前存在邻居,在配置恢复时应抑制OSPF接口UP,进入GR流程;否则,确定重启前该OSPF无邻居,则可以走正常的OSPF交互流程。
步骤102中根据记录的邻居信息进行GR交互并同步数据库具体为:根据记录的邻居信息获知该OSPF重启前都有哪些邻居,通过向这些邻居发送进行GR同步的消息,接收邻居响应的消息,获得重启前该OSPF的一些信息,进行GSPF GR数据库同步。
该方法进一步包括:路由器感知到OSPF进程连接断开时,进入GR重启状态,保留OSPF路由信息。
在完成同步数据库时,路由器重新计算OSPF路由信息,恢复其正常状态。
在OSPF重启时,不删除重启前的路由信息,即继续维护重启前的路由信息,当重启后,进行GR交互并同步数据库结束时,路由器重新计算当前的OSPF路由信息,并结束GR重启状态,恢复OSPF路由信息的正常状态。
若读取到记录的重启原因,则删除记录的重启原因;若读取到记录的邻居信息,则删除记录的邻居信息。当重启原因,和/或邻居信息读取时,该次重启原因已获知,重启前的邻居信息已获知,因此将其删除,用于再次保存新的邻居信息,再次获取ISSU消息时,再次记录重启原因。
记录中OSPF的邻居信息包括VLINK邻居信息和非VLINK邻居信息,其中,非VLINK邻居为广播网络、NBMA网络、P2P网络和P2MP网络中的OSPF协议的邻居。
当邻居为VLINK邻居时,记录的邻居信息为下述之一或任意组合:OSPF进程ID、OSPF域ID、接口索引、下一跳地址、邻居的IP地址,本地IP地址;
当邻居为非VLINK邻居时,记录的邻居信息为下述之一或任意组合:OSPF进程ID、接口索引、邻居ID。
记录的邻居信息用于标识邻居,获知需要给那些邻居发通知,使其进入GR help流程,以及与那些邻居同步数据库等。其中,OSPF进程ID用来标识OSPF进程,一个OSPF协议可以配置多个OSPF进程,如ospf 1,ospf2,....ospf 100,ospf 1000等等;邻居ID是OSPF协议的邻居所属路由器上的相应OSPF进程的标识,如ospf 1 router-id 3.3.3.3;OSPF域ID标识该邻居所属的区域的区域号,如ospf进程1下area 100;下一跳地址标识发邻居报文所经过路径中的第一个地址;邻居的IP地址标识目的地址;本地IP地址标识源地址。
OSPF的VLINK邻居的Hello报文是IP单播报文,这点不同于普通的OSPF的Hello报文是组播,因此GR过程中发送的OSPF报文的IP报文头都填写记录的VLINK邻居的IP地址为目的地址,本端的IP地址为源地址。这里描述的是本发明的一种具体实施例,一种记录的邻居信息组合情况,具体实现时,根据记录的邻居信息情况发送报文,填写报文头。
基于同样的发明构思,本发明还提出一种路由器,可应用基于OSPF协议的平滑重启中。参见图3,图3为本发明具体实施例中应用于平滑重启的路由器结构示意图。该路由器包括:记录单元301、收发单元302、获取单元303和处理单元304。
记录单元301,用于存在邻居信息,记录OSPF的邻居信息;当收发单元302接收到ISSU消息时,记录重启原因。
收发单元302,用于接收ISSU消息,若接收到ISSU消息,通知记录单元301记录中对应的邻居进入help状态以及处于help状态时间。
获取单元303,用于当OSPF重启后,读取记录单元301中记录的重启原因。
处理单元304,用于当获取单元303读取到记录的重启原因时,则在进行配置恢复时抑制OSPF接口UP,配置恢复后,根据记录的邻居信息进行GR交互并同步数据库,完成所述同步数据库时,通知所述记录中对应的邻居结束GR流程;当未读取到重启原因,则允许OSPF接口UP。
较佳地,
获取单元303,进一步用于读取记录单元301中记录的邻居信息。
处理单元304,进一步用于确定获取单元303是否读取到记录的邻居信息,如果是,执行所述在进行配置恢复时抑制OSPF接口UP及后续操作;否则,允许OSPF接口UP。
较佳地,该路由器进一步包括:路由管理单元305。
路由管理单元305,用于感知到OSPF进程连接断开时,进入GR重启状态,保留OSPF路由信息;当处理单元304完成同步数据库时,重新计算OSPF路由信息,恢复其正常状态。
较佳地,
记录单元301,进一步用于若获取单元303读取到记录的重启原因,则删除所述记录的重启原因;若读取到记录的邻居信息,则删除所述记录的邻居信息。
较佳地,
记录单元301记录中OSPF的邻居信息包括VLINK邻居信息和非VLINK邻居信息,其中,所述非VLINK邻居为广播网络、NBMA网络、P2P网络和P2MP网络中的OSPF协议的邻居。
较佳地,
记录单元301当记录的邻居信息对应的邻居为VLINK邻居时,记录的邻居信息为下述之一或任意组合:OSPF进程ID、OSPF域ID、接口索引、下一跳地址、邻居的IP地址,本地IP地址;当记录的邻居信息对应的邻居为非VLINK邻居时,记录的邻居信息为下述之一或任意组合:OSPF进程ID、接口索引、邻居ID。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明通过预先记录邻居信息,当OSPF协议需要重启时,记录重启原因并通知记录中邻居信息对应的邻居进入help流程,OSPF协议重启后根据记录的重启原因以及邻居信息进行GR流程,能够在OSPF无备的情形下进行不中断业务升级。感知到OSPF连接断开时,保留OSPF一段时间,防止删除OSPF路由信息。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。