专利名称:误入平滑重启状态的检测方法及路由器的制作方法
技术领域:
本发明涉及平滑重启技术领域,具体涉及一种误入平滑重启状态的4全测 方法及路由器。
背景技术:
平滑重启(GR, Graceful Restart)指的是在协议重启时保证数据转发正 常进行,保证关键业务不中断。GR技术属于高可靠性(HA, High Availability ) 技术的一种。HA是一整套综合技术,主要包括冗余容错、链路保证、节点 故障修复及流量工程。GR是一种冗余容错技术,目前已被广泛使用在主备 切换和系统升级方面,以保证关键业务的不间断转发。
目前,支持GR的多协议标签交换(MPLS)协议包括标签分发协议 (LDP)和资源预留协议(RSVP)。该两协议在支持GR时,在协议的初 始化消息中增加与GR相关的参数,这些参数在路由器之间建立邻居关系时 交互,用于帮助GR的进行。
以LDP为例,对现有的GR过程进行说明,如图1所示,其具体步骤 如下
步骤101:路由器A确定邻居路由器B重启,进入GR状态,将自身作 为helper端,同时启动连接定时器。
步骤102:路由器A在自身查找邻居路由器B的LSP,并在该LSP上 作标记。
路由器A和路由器B在建立邻居关系时,会交互LSP。 步骤103:路由器A向邻居路由器B发送邻居关系建立报文。 步骤104:路由器A判断是否在连接定时器超时前,收到邻居路由器B
发来的邻居关系建立报文,若是,执行步骤105;否则,执行步骤106。
步骤105:路由器A继续保持GR状态,将所述已作标记的LSP发送给
邻居路由器B,本流程结束。
步骤106:路由器A删除所述已作标记的LSP,退出GR状态。
目前,支持LDP的路由器主要通过以下方式确定邻居路由器发生重启
方式一 、路由器检测到与邻居路由器的传输控制协议(TCP )接口关闭,
则确定邻居重启。
由于LDP运行在TCP之上,所以当TCP连接断掉,LDP连接自然断掉。 方式二、路由器检测到维护邻居关系的HoldTime定时器超时,则确定 邻居路由器重启。
HoldTime定时器是用来维护邻居关系的定时器,若在HoldTime的定时 时长内未收到邻居路由器发来的握手(Hello)报文,则路由器认为邻居路 由器重启。
支持RSVP的路由器则在连续3次未收到邻居路由器发来的Hello报文 时,确定邻居关系断掉,从而认为邻居路由器重启。
可以看出无论是支持LDP的路由器还是支持RSVP的路由器,都是 通过检测到邻居关系的断掉,来确定邻居路由器发生重启的。而实际上,邻 居关系断掉时,邻居路由器有可能未发生重启。例如邻居路由器可能由于 系统较忙或本身协议处理的问题导致无法及时发出Hello报文,此时本端路 由器检测到邻居关系断掉,就会认为邻居路由器发生重启;或者,在两台路 由器通过交换机相连时,当其中一台路由器的物理链路发生故障时,另外一 台路由器也会由于检测到邻居关系断掉,而认为邻居路由器发生重启。以上 情况都会使得路由器误入GR状态。
误入GR状态会带来以下缺点
一、 会引起路由器之间不必要的信令、数据交互,占用CPU的资源。
二、 可能会引起数据转发失败,原因是考虑到路由器在处于GR状态 时,与该路由器相关的某些路由可能会发生震荡,因此,现有协议规定当
路由器处于GR状态时,该路由器上新产生的路由不能使用进入GR状态前 分配、但在处于GR状态时失效的路由对应的LSP,即在路由.器进入GR 状态后,若检测到某个已分配的LSP对应的路由失效,则该LSP不被立刻 释放,而是一直保留到GR状态结束,当GR状态结束时,若该LSP对应的 路由仍不可用,则将该LSP释放,以分配给新产生的路由使用。显然,这 样会引起如下问题若在路由器处于GR状态时,路由器新产生的路由的数 量较大,则有可能会造成由于路由器的LSP不够用,而使得新产生的路由 因无法被分配到LSP而不可用,从而导致数据转发失败。例如某路由器 最多可支持10万条LSP,在路由器进入GR状态前,已经为已产生的路由 分配了9万条LSP,则路由器处于GR状态时,只能再分配1万条LSP,若 在处于GR状态时新产生的路由数大于1万如为3万,则会有2万条路由 因无法被分配到LSP而不可用,造成2万个目的地址在GR状态期间不可达。 因此,在误入GR状态时,必须要及时检测到并退出,以减少错误的 GR状态的持续时长。目前,还没有解决该问题的方案。
发明内容
本发明实施例的目的在于提供一种误入GR状态检测的方法及路由器,以 减少错误的GR状态的持续时长。
本发明的技术方案是这样实现的 一种误入GR状态的检测方法,在邻居关系建立报文中设置路由器是否 发生重启的指示,包括
当前路由器检测到与邻居路由器的邻居关系断掉且自身未发生重启,则进 入GR状态,并在自身保存的邻居路由器的标签交换路径LSP上作标记,接收 邻居路由器发来的邻居关系建立报文,检测到该报文未携带邻居路由器发生重 启的指示时,则退出GR状态,并删除所述LSP上的标记。
所述路由器接收邻居路由器发来的邻居关系建立报文之后进一步包括
检测到该报文携带邻居路由器发生重启的指示时,则将所述已作标记的
LSP发送给邻居路由器。
所述在邻居关系建立报文中设置路由器是否发生重启的指示为在邻居关 系建立报文的保留位中设置。
所述在邻居关系建立报文中设置路由器发生重启的指示为将邻居关系建 立报文中的任意一个保留位设置为1;
或者为将邻居关系建立报文中的一个以上的保留位设置为1。
所述路由器进入GR状态的同时,进一步包括所述路由器向邻居路由器 发送邻居关系建立报文,该报文中携带有指示自身未发生重启的信息,同时启 动连接定时器;
且所述路由器进入GR状态之后进一步包括当所述连接定时器超时,路 由器未收到邻居路由器发来的邻居关系建立报文,则删除所述已作标记的LSP, 退出GR状态。
所述方法进一步包括当前路由器检测到自身重启时,向邻居路由器发送 携带有自身发生重启指示的邻居关系建立报文。
一种路由器,包括邻居关系检测模块、重启检测模块、关系报文接收处 理模块和GR模块,其中
所述邻居关系检测模块用于在检测到与邻居路由器的邻居关系断掉后,向 所述重启检测模块发送重启查询指示,若收到所述重启检测模块返回的未重启 指示,则向所述GR模块发送进入指示,并在LSP存储模块中保存的该邻居路 由器的LSP上作标记,同时向关系报文接收处理模块发送重启信息上报指示;
所述重启检测模块用于在收到所述重启查询指示后,若检测到自身未发生 重启,则向所述邻居关系检测模块返回未重启指示;
所述关系报文接收处理模块用于在收到所述重启信息上报指示后,若检测 到邻居路由器发来的邻居关系建立报文未携带邻居路由器发生重启的指示,则 向所述GR模块发送退出指示,并删除所述LSP存储模块中的LSP上的标记;
所述GR模块用于在收到所述进入指示后,进入GR状态;在收到所述退 出指示后,退出GR状态。 所述关系报文接收处理模块包括关系报文接收模块、未重启处理模块和 重启处理模块,其中
关系报文接收模块用于在收到邻居关系检测模块发来的重启信息上报指示 后,检测邻居路由器发来的邻居关系建立报文是否携带邻居路由器发生重启的 指示,若是,向重启处理模块发送启动指示;否则,向未重启处理模块发送启 动指示;
重启处理模块用于在收到所述关系报文接收模块发来的启动指示后,将所 述LSP存储模块中已作标记的LSP发送给邻居路由器;
未重启处理模块用于在收到所述关系报文接收模块发来的启动指示后,向 所述GR模块发送退出指示,并删除所述LSP存储模块中的LSP上的标记。
该路由器进一步包括关系报文发送处理模块,用于在收到所述重启才全测 模块发来的重启发送指示后,向邻居路由器发送携带自身发生重启指示的邻居 关系建立报文;
且,所述重启检测模块进一步用于,检测到自身发生重启,则向所述关系 报文发送处理模块发送重启发送指示。
该路由器进一步包括连接定时器,用于在收到邻居关系检测模块发来的 启动指示后,开始定时,并在定时超时时,向关系报文接收处理模块发送超时 指示;
所述关系报文接收处理模块包括关系报文接收模块和超时处理模块,其
中
关系报文接收模块用于在收到所述邻居关系检测模块发来的重启信息上报 指示后,若检测到在收到所述连接定时器发来的超时指示前,未收到邻居路由 器发来的邻居关系建立报文,则向超时处理模块发送启动指示;
超时处理模块用于在收到所述关系报文接收模块发来的启动指示后,将所 述LSP存储模块中的已作标记的LSP删除,并向GR模块发送退出指示;
且,所述邻居关系检测模块进一步用于,在收到所述重启检测模块发来 的未重启指示后,向所述连接定时器发送启动指示。与现有4支术相比,本发明中,路由器在进入GR状态后,通过检测邻居 路由器发来的邻居关系建立报文是否携带指示邻居路由器的信息,来判断自 身是否误入了 GR状态,若是,则退出GR状态,从而在误入GR状态时, 能够及时检测到并退出,减少了错误的GR状态的持续时长,减少了不必要 的信令、数据交互,降低了 CPU资源的占用;同时也使得在GR状态期间 失效的路由对应的LSP能够被及时分配给新产生的路由,提高数据转发成 功率。
图1为现有的GR过程执行流程图2为本发明实施例提供的误入GR状态的检测流程图3为本发明实施例提供的检测误入GR状态的路由器的结构示意图4为本发明实施例提供的关系报文接收处理模块的结构示意图5为本发明应用实例一中的链路故障示意图6为本发明应用实例二中的路由器故障示意图。
具体实施例方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。 图2为本发明实施例提供的误入GR状态检测流程图,如图2所示,其 具体步骤如下
步骤201:路由器A检测到与邻居路由器B的邻居关系断掉,且自身未 发生重启,则进入GR状态,将自身作为Helper端,同时启动连接定时器。
步骤202:路由器A在自身保存的邻居路由器B的LSP上作标记。
步骤203:路由器A向邻居路由器B发送携带指示自身未发生重启的信 息的邻居关系建立报文。
本发明中,具体可通过以下方式在邻居关系建立报文中设置指示本端路 由器是否发生重启的信息方式一、在邻居关系建立报文中新增加一个用于指示本端路由器是否发
生重启的比特位。当该比特位为0时,表示本端路由器未发生重启;当该比 特位为1时,表示本端路由器发生重启;
方式二、将邻居关系建立报文中的任意一个保留位用于指示本端路由器
是否发生重启,当该保留位为0时,表示本端路由器未发生重启;当该保留 位为1时,表示本端路由器发生重启;
方式三、将邻居关系建立报文中的特定的一个以上的保留位用于指示本 端路由器是否发生重启,当该特定的一个以上的保留位都为0时,表示本端 路由器未发生重启;当该特定的一个以上的保留位都为1时,表示本端路由 器发生重启。
步骤204:路由器A判断是否在连接定时器超时前,收到邻居路由器B 发来的邻居关系建立报文,若是,执行步骤206;否则,执行步骤205。
步骤205:路由器A删除所述已作标记的LSP,退出GR状态,本流程结束。
步骤206:路由器A判断该报文是否携带指示邻居路由器B发生重启的 信息,若是,执行步骤207;否则,执行步骤208。
邻居路由器B在重启后,会向路由器A发送邻居关系建立报文,该报 文要携带指示路由器B发生重启的信息。
步骤207:路由器A继续保持GR状态,将所述已作标记的LSP发送给 邻居路由器B,转至步骤209。
步骤208:路由器A删除所述LSP上的标记,退出GR状态。
邻居路由器B收到路由器A发来的LSP,保存该LSP,根据该LSP进 行数据转发。
从图2所示流程可以看出路由器A在进入GR状态后,若收到路由器 B发来的指示路由器B未发生重启的信息,则路由器A会及时退出GR状态, 从而减少了错误的GR状态的持续时长,减少了不必要的信令、数据交互,
降低了 CPU资源的占用;同时也使得新产生的路由能够被及时分配到LSP,从而提高了数据转发的成功率。
图3为本发明实施例提供的检测误入GR状态的路由器的结构示意图, 如图3所示,其主要包括邻居关系检测模块31、连接定时器32、重启检 测模块33、关系报文发送处理模块34、关系报文接收处理模块35、 GR模 块36和LSP存储模块37,其中
邻居关系检测模块31:用于在检测到与邻居路由器的邻居关系断掉以 后,向重启检测模块33发送重启查询指示,在收到重启检测模块33返回的 未重启指示后,向GR模块36发送进入指示,同时向连接定时器32发送启 动指示,并向关系报文发送处理模块34发送未重启发送指示,同时在LSP 存储模块37中存储的邻居路由器的LSP上作标记,并向关系报文接收处理 模块35发送重启信息上报指示。
连接定时器32:用于在收到邻居关系检测模块31发来的启动指示后开 始定时,并在定时超时时,向关系报文接收处理模块35发送超时指示。
重启检测模块33:用于在收到邻居关系检测模块31发来的重启查询指 示后,若检测到自身未发生重启,则向邻居关系检测模块31返回未重启指 示;在检测到自身发生重启后,向关系报文发送处理模块34发送重启发送 指示。
关系报文发送处理模块34:用于在收到邻居关系检测模块31发来的未 重启发送指示后,向邻居路由器发送携带指示自身未发生重启的信息的邻居 关系建立报文;在收到重启检测模块33发来的重启发送指示后,向邻居路 由器发送携带指示自身发生重启的信息的邻居关系建立报文。
关系报文接收处理模块35:用于在收到邻居关系检测模块31发来的重 启信息上报指示后,若检测到在收到连接定时器32发来的超时指示前,未 收到邻居路由器发来的邻居关系建立报文,则将LSP存储模块37中已作标 记的LSP删除,并向GR模块36发送退出指示;若检测到在收到连接定时 器32发来的超时指示前,收到邻居路由器发来的邻居关系建立报文,则判 断该报文是否携带指示邻居路由器发生重启的信息,若是,则将LSP存储
模块37中存储的已作标记的LSP发送给邻居路由器;若否,则向GR模块 36发送退出指示,同时将LSP存储模块37中保存的LSP上的标记删除。
GR模块36:用于在收到邻居关系检测模块31发来的进入指示后,进 入GR状态;在收到关系报文接收处理模块35发来的退出指示后,退出GR 状态。
LSP存储模块37:用于存储邻居路由器的LSP。
具体地,如图4所示,关系报文接收处理模块35主要包括关系报文 接收模块351、超时处理模块352、未重启处理模块353和重启处理模块354, 其中
关系报文接收模块351:用于在收到邻居关系检测模块31发来的重启 信息上报指示后,若检测到在收到连接定时器32发来的超时指示前,未收 到邻居路由器发来的邻居关系建立报文,则向超时处理模块351发送启动指 示;若检测到在收到连接定时器32发来的超时指示前,收到邻居路由器发 来的邻居关系建立报文,则判断该报文是否携带指示邻居路由器发生重启的 信息,若是,则向重启处理模块354发送启动指示,否则,则向未重启处理 模块353发送启动指示。
超时处理模块352:用于在收到关系报文接收模块351发来的启动指示 后,将LSP存储模块37中已作标记的LSP删除,并向GR模块36发送退 出指示。
未重启处理模块353:用于在收到报文接收模块351发来的启动指示后, 向GR模块36发送退出指示,同时将LSP存储模块37中保存的LSP上的 标记删除。
重启处理模块354:用于在收到关系报文接收模块351发来的启动指示 后,将LSP存储模块37中已作标记的LSP发送给邻居路由器。 以下给出两个应用本发明的具体实例
实例一、该实例给出的是交换机发生链路故障、而路由器未发生重启时 的GR过程。如图5所示,路由器RTA与路由器RTB通过交换机Sl和S2相连,当 SI和S2之间的链路发生故障时,RTB和RTA都会发现同对端路由器的邻 居关系断掉,则RTB和RTA都会认为自己为对端的Helper端,都会进入 GR状态,保持与对端的邻居关系,并在自身保存的对端的LSP上作标记, 同时不断向对端发出邻居关系建立报文,该报文中用于指示本端是否发生重 启的保留位被设置为O,以表示本端未发生重启。
当SI和S2之间的链路恢复时,RTB、 RTA都会收到对端发来的指示 对端未发生重启的邻居关系建立报文,则RTB、 RTA都会把原来已作标记 的LSP上的标记删除,退出GR状态;同时进入重新建立邻居关系的流程。
实例二、该实例给出的是路由器发生重启时的GR过程。
如图6所示,路由器RTA和路由器RTB之间通过交换机S连接。当 RTB发生故障时,RTA会发现同RTB的邻居关系断掉,则认为自己为Helper 端,进入GR状态,并在自身保存的RTB的LSP上作标记,同时不断向RTB 发送携带指示自身未发生重启的信息的邻居关系建立报文。
当RTB重启后,向RTA发送携带指示自身发生重启的信息的邻居关系 建立报文,RTA收到该报文后,得知RTB发生重启,则将已作标记的LSP 发给RTB,此时,RTA和RTB都处于GR状态。
应当理解,实现本发明方法的软件可以存储于一计算机可读取存储介质 中,该软件的在执行时,包括如下步骤在邻居关系建立报文中设置路由器 是否发生重启的指示;当前路由器检测到与邻居路由器的邻居关系断掉且自 身未发生重启,则进入GR状态,并在自身保存的邻居路由器的LSP上作标 记,接收邻居路由器发来的邻居关系建立报文,检测到该报文未携带邻居路 由器发生重启的指示时,则退出GR状态,并删除所述LSP上的标记。所述 的存储介质,如ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的过程及方法实施例,并不用以限制本发明,凡在 本发明的精神和原则之内所做的任何修改、等同替换、改进等,均应包含在 本发明的保护范围之内。
权利要求
1、一种误入平滑重启GR状态的检测方法,其特征在于,在邻居关系建立报文中设置路由器是否发生重启的指示,包括当前路由器检测到与邻居路由器的邻居关系断掉且自身未发生重启,则进入GR状态,并在自身保存的邻居路由器的标签交换路径LSP上作标记,接收邻居路由器发来的邻居关系建立报文,检测到该报文未携带邻居路由器发生重启的指示时,则退出GR状态,并删除所述LSP上的标记。
2、 如权利要求l所述的方法,其特征在于,所述路由器接收邻居路由器发 来的邻居关系建立报文之后进一步包括检测到该报文携带邻居路由器发生重启的指示时,则将所述已作标记的 LSP发送给邻居路由器。
3、 如权利要求1或2所述的方法,其特征在于,所述在邻居关系建立l艮文 中设置路由器是否发生重启的指示为在邻居关系建立报文的保留位中设置。
4、 如权利要求1或3所述的方法,其特征在于,所述在邻居关系建立报文 中设置路由器发生重启的指示为将邻居关系建立报文中的任意一个保留位设 置为1;或者为将邻居关系建立报文中的一个以上的保留位设置为1。
5、 如权利要求1或2所述的方法,其特征在于,所述路由器进入GR状态 的同时,进一步包括所述路由器向邻居路由器发送邻居关系建立报文,该报 文中携带有指示自身未发生重启的信息,同时启动连接定时器;且所述路由器进入GR状态之后进一步包括当所述连接定时器超时,路 由器未收到邻居路由器发来的邻居关系建立报文,则删除所述已作标记的LSP, 退出GR状态。
6、 如权利要求1或2所述的方法,其特征在于,所述方法进一步包括 当前路由器检测到自身重启时,向邻居路由器发送携带有自身发生重启指示的邻居关系建立报文。
7、 一种路由器,其特征在于,包括邻居关系检测模块、重启检测模块、 关系报文接收处理模块和GR模块,其中所述邻居关系检测模块用于在检测到与邻居路由器的邻居关系断掉后,向 所述重启检测模块发送重启查询指示,若收到所述重启检测模块返回的未重启 指示,则向所述GR模块发送进入指示,并在LSP存储模块中保存的该邻居路 由器的LSP上作标记,同时向关系报文接收处理模块发送重启信息上报指示;所述重启检测模块用于在收到所述重启查询指示后,若检测到自身未发生 重启,则向所述邻居关系检测模块返回未重启指示;所述关系报文接收处理模块用于在收到所述重启信息上报指示后,若检测 到邻居路由器发来的邻居关系建立报文未携带邻居路由器发生重启的指示,则 向所述GR模块发送退出指示,并删除所述LSP存储模块中的LSP上的标记;所述GR模块用于在收到所述进入指示后,进入GR状态;在收到所述退 出指示后,退出GR状态。
8、 如权利要求7所述的路由器,其特征在于,所述关系报文接收处理模块 包括关系报文接收模块、未重启处理模块和重启处理模块,其中关系报文接收模块用于在收到邻居关系检测模块发来的重启信息上报指示 后,检测邻居路由器发来的邻居关系建立报文是否携带邻居路由器发生重启的 指示,若是,向重启处理模块发送启动指示;否则,向未重启处理模块发送启 动指示;重启处理模块用于在收到所述关系报文接收模块发来的启动指示后,将所 述LSP存储模块中已作标记的LSP发送给邻居路由器;未重启处理模块用于在收到所述关系报文接收模块发来的启动指示后,向 所述GR模块发送退出指示,并删除所述LSP存储模块中的LSP上的标记。
9、 如权利要求7或8所述的路由器,其特征在于,该路由器进一步包括 关系报文发送处理模块,用于在收到所述重启检测模块发来的重启发送指示后, 向邻居路由器发送携带自身发生重启指示的邻居关系建立报文;且,所述重启检测模块进一步用于,检测到自身发生重启,则向所述关系报文发送处理模块发送重启发送指示。
10、如权利要求7所述的路由器,其特征在于,该路由器进一步包括连 接定时器,用于在收到邻居关系检测模块发来的启动指示后,开始定时,并在 定时超时时,向关系报文接收处理模块发送超时指示;所述关系报文接收处理模块包括关系报文接收模块和超时处理模块,其中关系报文接收模块用于在收到所述邻居关系检测模块发来的重启信息上报 指示后,若检测到在收到所述连接定时器发来的超时指示前,未收到邻居路由 器发来的邻居关系建立报文,则向超时处理模块发送启动指示;超时处理模块用于在收到所述关系报文接收模块发来的启动指示后,将所 述LSP存储模块中的已作标记的LSP邻'J除,并向GR模块发送退出指示;且,所述邻居关系检测模块进一步用于,在收到所述重启检测模块发来的 未重启指示后,向所述连接定时器发送启动指示。
全文摘要
本发明公开了一种误入GR状态的检测方法,包括在邻居关系建立报文中设置路由器是否发生重启的指示,当路由器检测到与邻居路由器的邻居关系断掉且自身未发生重启时,进入GR状态,并在自身保存的邻居路由器的LSP上作标记,接收邻居路由器发来的邻居关系建立报文,检测到该报文未携带邻居路由器发生重启的指示,则退出GR状态,并删除所述LSP上的标记;本发明同时公开了一种路由器,包括邻居关系检测模块、重启检测模块、关系报文接收处理模块和GR模块。本发明在误入GR状态时能够及时检测到,减少了不必要的信令、数据交互,降低了CPU资源的占用;且可使得新产生的路由能够被及时分配到LSP,提高数据转发成功率。
文档编号H04L12/26GK101179448SQ20061014713
公开日2008年5月14日 申请日期2006年11月6日 优先权日2006年11月6日
发明者王丽星 申请人:华为技术有限公司