平滑重启处理方法及装置与流程

文档序号:11234540阅读:374来源:国知局
平滑重启处理方法及装置与流程

本发明涉及数据网络通信领域,尤其是涉及到平滑重启处理方法及装置。



背景技术:

平滑重启(gracefulrestart,简称gr)主要实现的功能是在路由协议重启的时候保证数据转发层面功能的正常,以保证关键业务不中断。平滑重启技术是术语高可靠性技术的一种,高可靠性技术是一整套综合技术,主要包括冗余容错、链路保证、节点故障修复等。平滑重启是一种冗余容错技术,目前已经被广泛地使用在主备切换和系统升级等方面,从而保证关键业务不间断转发。在没有使用gr技术的时候,因为各种原因出现的主备切换,都会造成短时间的流量转发中断,并且在全网中造成路由震荡。而使用gr技术则可以避免上述一系列的问题,流量转发不会发生中断。

开放式最短路径优先(openshortestpathfirst,简称ospf)主备倒换后,重启路由器会与邻居(又称helper)路由器进行链路状态数据库同步,邻居路由器协助重启路由器完成重启前数据库的同步。当重启路由器发现自己重启前产生的链路状态通告有指向邻居路由器的连接但邻居路由器产生的链路状态通告却没有指向重启路由器连接时,重启路由器判断邻居路由器没有协助自己完成平滑重启,便会立刻退出平滑重启过程。在重启路由器错误判断邻居路由器重启前与重启中的邻居状态发生变化的情况下,将导致平滑重启异常退出。

针对相关技术中平滑重启异常退出的问题,现有技术还未提出有效的解决方案。



技术实现要素:

本发明的目的在于提供了平滑重启处理方法及装置,解决了相关技术中 平滑重启异常退出的问题。

根据本发明的一个方面,提供一种平滑重启处理方法,包括:重启路由器获取平滑重启前邻居路由器的第一邻居状态与平滑重启中邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为完全邻接(又称full);该重启路由器判断第一邻居状态与第二邻居状态是否相同;在判断结果为否的情况下,该重启路由器退出平滑重启。

进一步地,该重启路由器获取平滑重启前邻居路由器的第一邻居状态与平滑重启中邻居路由器的第二邻居状态包括:该重启路由器接收该邻居路由器发送的携带有该第一邻居状态的多个链路状态通告(linkstateadvertisement,简称lsa),和携带有该第二邻居状态的多个链路状态通告(linkstateadvertisement,简称lsa);该重启路由器从多个lsa中获取该第一邻居状态和该第二邻居状态。

进一步地,该lsa为路由器lsa,或者,该lsa为路由器lsa和网络lsa。

进一步地,该重启路由器从多个lsa中获取该第一邻居状态和该第二邻居状态包括:在该lsa为路由器lsa的情况下,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器,在判断结果为是的情况下,获取到该邻居路由器的第一邻居状态或第二邻居状态为full;或者,在该lsa为路由器lsa和网络lsa的情况下,该重启路由器判断该路由器lsa是否指向对应的接口网络的传输网络类型连接且该路由器lsa对应的网络lsa中是否记载有该重启路由器信息,在判断结果都为是的情况下,获取到该邻居路由器的第一邻居状态或第二邻居状态为full。

进一步地,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器包括:该重启路由器判断接口网络类型是否为广播网或非广播多路访问网络(non-broadcastmultipleaccess,简称nbma网络);在判断结果为否的情况下,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器;或判断结果为是且该重启路由器的接口角色为指定路由器的情况下, 该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器。

进一步地,该重启路由器判断该路由器lsa是否指向该路由器lsa对应的接口网络的传输网络类型连接且对应的网络lsa中是否记载有该重启路由器信息包括:该重启路由器判断接口网络类型是否为广播网或nbma网络;在判断结果为是且该重启路由器的接口角色不为指定路由器的情况下,该重启路由器判断该路由器lsa是否指向对应的接口网络的传输网络类型连接且该路由器lsa对应的网络lsa中是否记载有该重启路由器信息。

进一步地,在判断结果为否的情况下,该重启路由器退出平滑重启包括:在该第一邻居状态为full且该重启路由器的邻居状态与该第二邻居状态不一致的情况下,该重启路由器确定该第一邻居状态与该第二邻居状态为不同,退出平滑重启。

进一步地,该重启路由器接收该邻居路由器发送的携带有该第一邻居状态的多个lsa,和携带有该第二邻居状态的多个lsa之前,该平滑重启处理方法还包括:该重启路由器请求该邻居路由器的第一邻居状态;在限制的请求次数和/或预定的请求时间内未接收到该邻居路由器发送的第一邻居状态的情况下,该重启路由器推定该邻居路由器的第一邻居状态为full。

根据本发明的另一个方面,提供一种平滑重启处理方法,包括:邻居路由器向重启路由器发送平滑重启前该邻居路由器的第一邻居状态与平滑重启中该邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为full;在该第一邻居状态与该第二邻居状态不相同且该重启路由器退出平滑重启的情况下,该邻居路由器退出平滑重启协助。

根据本发明的另一个方面,提供一种平滑重启处理装置,包括:获取模块,用于获取平滑重启前邻居路由器的第一邻居状态与平滑重启中邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为full;判断模块,用于判断第一邻居状态与第二邻居状态是否相同;处理模块,用于在判断结果为否的情况下,退出平滑重启。

通过本发明,采用获取平滑重启前邻居路由器的邻居状态的技术方案, 解决了相关技术中平滑重启异常退出的问题,降低平滑重启中流量中断的发生几率。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的平滑重启处理方法的流程图一;

图2是根据本发明实施例的平滑重启处理方法的流程图二;

图3是根据本发明实施例的平滑重启处理装置的结构框图;

图4是根据本发明实施例的记录重启路由器状态为full对应的邻居路由器的流程图;

图5是根据本发明实施例的重启中重启路由器向记录的邻居路由器请求lsa的流程图;

图6是根据本发明实施例的重启路由器接收请求的lsa的流程图;

图7是根据本发明实施例的重启路由器在邻居路由器重启前与重启中邻居状态不一致情况下处理的流程图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

在本实施例中提供了一种平滑重启处理方法及装置,图1是根据本发明实施例的平滑重启处理方法的流程图一,如图1所示,该方法包括以下步骤:

步骤s102,重启路由器获取平滑重启前邻居路由器的第一邻居状态与平 滑重启中邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为full;

步骤s104,该重启路由器判断第一邻居状态与第二邻居状态是否相同;

步骤s106,在判断结果为否的情况下,该重启路由器退出平滑重启。

可选地,上述步骤s106包括:在该第一邻居状态为full且该重启路由器的邻居状态与该重启路由器对应的该邻居路由器的第二邻居状态不一致的情况下,该重启路由器确定该第一邻居状态与该第二邻居状态为不同,退出平滑重启。

可选地,该重启路由器可以通过下述方法获取上述第一邻居状态与第二邻居状态:该重启路由器接收该邻居路由器发送的携带有该第一邻居状态的多个lsa,和携带有该第二邻居状态的多个lsa。该重启路由器从上述的多个lsa中获取该第一邻居状态和该第二邻居状态。

优选地,在重启路由器接收该邻居路由器发送的携带有该第一邻居状态的多个lsa,和携带有该第二邻居状态的多个lsa之前,重启路由器向邻居路由器请求该邻居路由器的第一邻居状态。在经过限制的请求次数后仍未收到该邻居路由器发送的第一邻居状态的情况下,该重启路由器推定该邻居路由器的第一邻居状态为full。可选地,重启路由器可设置预定请求时间,在预定的请求时间后未收到该邻居路由器发送的邻居状态的情况下,该重启路由器推定该邻居路由器的第一邻居状态为full。可选地,重启路由器可限定请求次数或预定请求时间,以两者在后发生或在前发生的时间节点为准,未收到该邻居路由器发送的邻居状态的情况下,该重启路由器推定该邻居路由器的第一邻居状态为full。

进一步地,上述携带有第一邻居状态或第二邻居状态的lsa为路由器lsa,或路由器lsa和网络lsa(下面将路由器lsa,或路由器lsa和网络lsa简称为路由器/网络lsa)。

更进一步,在该lsa仅为路由器lsa不包括网络lsa的情况下,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器,在判断结果 为是的情况下,获取该邻居路由器邻居状态为full;在判断结果为否的情况下,获取该邻居路由器邻居状态不为full,该邻居状态可以为第一邻居状态或第二邻居状态。

更进一步,在该lsa为路由器lsa和网络lsa的情况下,该重启路由器判断该路由器lsa是否指向对应的接口网络的传输网络类型连接且该路由器lsa对应的网络lsa中是否记载有该重启路由器信息,在判断结果都为是的情况下,获取该邻居路由器邻居状态为full;在判断结果都为否的情况下,获取该邻居路由器邻居状态不为full,该邻居状态可以为第一邻居状态或第二邻居状态。

值得一提的是,在接口网络类型不为广播网或nbma网络的情况下,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器。在接口网络类型为广播网或nbma网络且接口角色为指定路由器的情况下,该重启路由器判断该邻居路由器的路由器lsa是否指向该重启路由器。在接口网络类型为广播网或nbma网络且接口角色不为指定路由器的情况下,判断该路由器lsa是否指向对应的接口网络的传输网络类型连接且该路由器lsa对应的网络lsa中是否记载有该重启路由器信息。网络中可能同时存在接口网络类型为广播网和nbma网络的接口。

图2是根据本发明实施例的平滑重启处理方法的流程图二,如图2所示,该方法包括以下步骤:

步骤s202,邻居路由器向重启路由器发送平滑重启前该邻居路由器的第一邻居状态与平滑重启中该邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为full;

步骤s204,在该第一邻居状态与该第二邻居状态不相同且该重启路由器退出平滑重启的情况下,该邻居路由器退出平滑重启协助。

图3是根据本发明实施例的平滑重启处理装置的结构框图,如图3所示,该装置包括:

获取模块32,用于获取平滑重启前邻居路由器的第一邻居状态与平滑重 启中邻居路由器的第二邻居状态,其中,该重启路由器平滑重启前的邻居状态为full;

判断模块34,用于判断第一邻居状态与第二邻居状态是否相同;

处理模块36,用于在判断结果为否的情况下,退出平滑重启。

下面结合具体实施例对本发明进行进一步说明。

本发明实施例提供了一种避免错误退出平滑重启的方法,开放式最短路径优先(openshortestpathfirst,简称ospf)主备倒换前,记录接口下处于full状态的邻居路由器,主备倒换后向记录的邻居路由器请求路由器链路状态通告(linkstateadvertisement,简称lsa),或路由器lsa和网络lsa。如果记录的邻居路由器的lsa没有指向重启路由器的连接,标记该邻居路由器的邻居状态不为full。链路状态数据库同步过程中,在接收到邻居路由器当前的路由器的lsa的情况下,如果邻居路由器的lsa没有指向重启路由器连接并且重启路由器lsa有指向邻居路由器连接,判断该邻居路由器的邻居状态是否被标记不为full,若该邻居路由器的邻居状态被标记不为full,则忽略双方连接不一致,重启路由器不退出平滑重启过程,避免了可能错误退出平滑重启的问题,从而保证平滑重启过程顺利完成。

该实施例包括以下步骤:

主备倒换前,重启路由器记录接口下状态处于full的邻居路由器。如果接口网络类型为广播网或nbma(nonbroadcastmultipleaccess)网络,并且接口角色不为指定路由器(designatedrouter,简称dr),只记录邻居状态为full的dr邻居路由器和标记接口角色为非指定路由器;其余情况下,记录所有状态处于full的邻居路由器;

重启路由器主备倒换后,向接口上先前记录的邻居路由器请求发送其对应的路由器lsa/网络lsa。如果接口网络类型为广播网或nbma网络,并且接口角色不为指定路由器,向接口上记录的dr邻居路由器请求发送路由器lsa和网络lsa;其余情况下向接口上记录的邻居路由器请求发送路由器lsa;

重启路由器接收到邻居路由器发来的路由器lsa/网络lsa,标记重启前邻居路由器的lsa连接的真实状态。其中,如果接口网络类型不为广播网/nbma网络,或者网络类型为广播网/nbma网络并且接口角色为指定路由器dr,判断对应的路由器lsa是否有指向重启路由器的连接,如果对应的路由器lsa没有指向重启路由器的连接,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致的检查。如果接口网络类型为广播网/nbma网络,并且接口角色不为指定路由器dr,判断路由器lsa是否有指向对应接口网络的传输网络类型连接,如果路由器lsa没有指向对应接口网络的传输网络类型连接,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致的检查;如果路由器lsa有指向对应接口网络的传输网络类型连接,并且存在路由器lsa通告者dr邻居路由器产生的网络lsa,判断网络lsa是否有重启路由器记录,如果网络lsa没有重启路由器记录,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致的检查;

重启路由器发送平滑重启grlsa,请求邻居路由器协助重启路由器完成平滑重启,平滑重启grlsa发送完毕后开始和邻居路由器重新建立邻居关系,进行数据库同步。

数据库同步过程中,重启路由器接收到邻居路由器发来的重启路由器重启前产生的路由器lsa,或路由器lsa和网络lsa和邻居路由器产生的lsa,或路由器lsa和网络lsa,如果重启路由器lsa有指向邻居路由器连接但是邻居路由器的lsa没有指向重启路由器连接时,检查对应邻居的状态是否标记为不为full,如果邻居的状态标记为不为full,则忽略连接不一致,不退出平滑重启过程;否则,立刻退出平滑重启过程。

附图4是根据本发明实施例的记录重启路由器状态为full对应的邻居路由器的流程图,如图4所示。

当重启路由器的邻居状态到达full时,重启路由器在产生的路由器,或路由器lsa和网络lsa中添加指向邻居路由器的连接。如果接口网络类型是广播网/nbma网络,会添加指向传输网络类型的连接;如果接口网络类型不是广播网/nbma网络,会添加指向路由器点到点类型的连接。

由于接口网络类型的差别,每种接口网络类型产生的路由器lsa的连接类型也不一样,当接口网络类型为广播网/nbma网络,路由器lsa连接类型为传输网络,邻居状态到达full时,路由器lsa添加指向dr路由器的传输网络类型连接;当接口网络类型不为广播网/nbma网络,路由器lsa连接类型为点到点网络,邻居状态到达full时,路由器lsa添加指向邻居路由器的点到点类型连接。

主备倒换前,重启路由器需要区分接口的网络类型,来记录接口上状态处于full的邻居路由器。如果接口类型为广播网/nbma网络,并且接口角色不为指定路由器dr,只记录邻居状态为full的dr邻居路由器和标记接口角色为非指定路由器;其余情况下,记录所有状态处于full的邻居路由器。

具体而言,该方法包括如下步骤:

步骤s402,处理未遍历到接口;

步骤s404,判断接口网络类型为广播网/nbma,在判断结果为是的情况下,跳转执行步骤s414,在判断结果为否的情况下,执行步骤s406;

步骤s406,遍历接口下未处理的邻居;

步骤s408,判断邻居状态为full,在判断结果为是的情况下,执行步骤s410,在判断结果为否的情况下,跳转执行步骤s412;

步骤s410,记录邻居与接口的对应关系;

步骤s412,判断接口下还有未处理的邻居;

步骤s414,判断接口为指定路由器,在判断结果为是的情况下,执行步骤s406,在判断结果为否的情况下,执行步骤s416;

步骤s416,判断指定路由器邻居状态为full,在判断结果为是的情况下,执行步骤s418,在判断结果为否的情况下,跳转执行步骤s420;

步骤s418,记录邻居与接口的对应关系和接口角色为非指定路由器;

步骤s420,判断所有接口处理完,在判断结果为是的情况下,结束流程,在判断结果为否的情况下,执行步骤s402。

附图5是根据本发明实施例的重启中重启路由器向记录的邻居路由器请求lsa的流程图,如图5所示。

重启路由器主备倒换后,向接口上先前记录的邻居路由器请求发送其对应的路由器lsa/网络lsa。如果接口网络类型为广播网/nbma网络,并且接口角色不为指定路由器,向接口上记录的dr邻居路由器请求发送路由器lsa和网络lsa;其余情况下向接口上记录的邻居路由器请求发送路由器lsa。

主备倒换过程中,如果邻居路由器离开网络,会导致重启路由器一直得不到该邻居路由器发送的路由器lsa/网络lsa,为避免该问题,限制向邻居路由器发送请求路由器lsa/网络lsa的次数,当设置次数内还没接收到邻居路由器发送的路由器lsa/网络lsa,后续数据库同步过程中按照原有判断原则处理邻居路由器的lsa不一致现象,即发现自己先前产生的路由器lsa/网络lsa有指向邻居路由器的连接但是邻居路由器的lsa却没有指向重启路由器的连接,重启路由器立刻退出平滑重启过程。

具体而言,该方法包括如下步骤:

步骤s502,处理未遍历到接口;

步骤s504,判断接口网络类型为广播网/nbma,在判断结果为是的情况下,执行步骤s506;在判断结果为否的情况下,跳转执行步骤s508;

步骤s506,判断接口先前为指定路由器dr,在判断结果为是的情况下,执行步骤s508,在判断结果为否的情况下,跳转执行步骤s510;

步骤s508,向接口记录下的邻居路由器发送相应路由器链路状态请求lsa 的请求;

步骤s510,向接口记录下的邻居路由器发送相应路由器/网络lsa请求;

步骤s512,判断所有接口处理完,在判断结果为是的情况下,结束流程,在判断结果为否的情况下,执行步骤s502。

附图6是根据本发明实施例的重启路由器接收请求的lsa的流程图,如图6所示。

重启路由器向先前记录的邻居路由器发送请求路由器lsa/网络lsa后,邻居路由器发送相应的路由器lsa/网络lsa给重启路由器,重启路由器接收到邻居路由器发送的路由器lsa/网络lsa,解析路由器lsa/网络lsa标记重启前邻居路由器连接的真实状态。

如果接口网络类型不为广播网/nbma网络,或者网络类型为广播网/nbma网络并且接口角色为指定路由器dr,判断对应的路由器lsa是否有指向重启路由器的连接,如果对应的路由器lsa没有指向重启路由器的连接,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致,即出现重启路由器有指向邻居路由器连接但邻居路由器却没有指向重启路由器连接时,重启路由器不退出平滑重启过程;

如果接口网络类型为广播网/nbma网络,并且接口角色不为指定路由器dr,判断路由器lsa是否有指向对应接口网络的传输网络类型连接,如果路由器lsa没有指向对应接口网络的传输网络类型连接,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致;如果路由器lsa有指向对应接口网络的传输网络类型连接,并且存在路由器lsa通告者dr邻居产生的网络lsa,判断网络lsa是否有重启路由器记录,如果网络lsa没有重启路由器记录,说明重启前邻居路由器关于重启路由器的邻居状态还没到达full,标记接口上该邻居的状态不为full,后续忽略该邻居连接不一致。

具体而言,该方法包括如下步骤:

步骤s602,判断接收到路由器/网络链路状态通告lsa,在判断结果为是的情况下,执行步骤s604,在判断结果为否的情况下,结束流程;

步骤s604,判断接口为广播网/nbma且接口不为指定路由器,在判断结果为是的情况下,执行步骤s606,在判断结果为否的情况下,跳转执行步骤s614;

步骤s606,判断路由器lsa指向接口网络传输网络类型,在判断结果为是的情况下,执行步骤s608,在判断结果为否的情况下,跳转执行步骤s616;

步骤s608,判断存在对应邻居网络lsa,在判断结果为是的情况下,执行步骤s610,在判断结果为否的情况下,结束流程;

步骤s610,判断网络lsa有重启路由器记录,在判断结果为否的情况下,执行步骤s612,在判断结果为是的情况下,结束流程;

步骤s612,标记接口上该邻居的状态不为full;

步骤s614,判断路由器lsa有指向重启路由器连接,在判断结果为是的情况下,结束流程,在判断结果为否的情况下,执行步骤s616;

步骤s616,标记接口上该邻居的状态不为full,结束流程。

附图7是根据本发明实施例的重启路由器在邻居路由器重启前与重启中邻居状态不一致情况下处理的流程图,如图7所示。

主备倒换后,邻居路由器协助重启路由器完成数据库同步,会将数据库中lsa发送给重启路由器,包括重启路由器先前产生的路由器lsa/网络lsa。当重启路由器接收到邻居路由器发来的自己重启前产生的路由器lsa/网络lsa和邻居路由器产生的路由器lsa/网络lsa,如果重启路由器的lsa有指向邻居路由器连接但是邻居路由器的lsa却没有指向重启路由器连接时,检查对应邻居的状态是否标记为不为full,如果邻居的状态标记不为full,则忽略连接不一致,不退出平滑重启过程;如果邻居的状态没有标记为full,则立刻退出平滑重启过程。

通过获取邻居路由器重启前真实的连接状态,可以比较邻居路由器重启 前后真实的连接状态,判断邻居路由器重启前后是否发生变化,避免了先前没有获取邻居路由器重启前真实的连接状态,仅从重启路由器重启前的连接状态推断邻居路由器重启前的连接状态,后续可能出现重启路由器错误判断导致退出平滑重启过程的问题,从而保证平滑重启过程顺利完成。

具体而言,该方法包括如下步骤:

步骤s702,平滑重启中与邻居路由器进行数据库同步;

步骤s704,接收到邻居发来的路由器/网络lsa;

步骤s706,判断lsa未指向重启路由器且重启路由器指向邻居,在判断结果为是的情况下,执行步骤s708,在判断结果为否的情况下,结束流程;

步骤s708,判断邻居被打上状态不为full的标识,在判断结果为是的情况下,执行步骤s710,在判断结果为否的情况下,跳转执行步骤s712;

步骤s710,忽略连接不一致;

步骤s712,退出平滑重启gr。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1