发明内容
有鉴于此,本发明的目的在于提供一种网络故障平滑恢复方法,该方法能够防止网络故障恢复时流量丢失。
为了达到上述目的,本发明提供了一种网络故障平滑恢复方法,该方法包括:
向邻居路由设备发送携带当前转发保持时间的转发保持报文;其中所述转发保持时间初始时为表征本设备处理性能的本地处理时间;
接收到邻居路由设备发送的转发保持报文时,如果该转发保持报文中携带的转发保持时间大于当前转发保持时间,则将当前转发保持时间修改为该转发保持报文中携带的转发保持时间;
接收到邻居路由设备发布的路由信息时,对于所述路由信息中的每条路由,如果需要将该条路由下发到转发表,先判断当前转发保持时间与本地处理时间的差值是否大于0,如果是,则等待所述差值时间后将该条路由下发到转发表;如果否,则将该条路由下发到转发表。
本发明还提供了一种网络故障平滑恢复装置,该装置包括:存储器、处理器、通信接口,以及耦合存储器、处理器和通信接口的互联机构;
所述存储器,存储有已获取的本地处理时间,存储当前转发保持时间;
所述处理器至少包括:
转发保持单元,用于在收发单元接收到邻居路由设备发送的转发保持报文后,如果该转发保持报文中携带的转发保持时间大于当前转发保持时间,则将存储器中的当前转发保持时间修改为该转发保持报文中携带的转发保持时间;
收发单元,用于通过所述通信接口向邻居路由设备发送携带当前转发保持时间的转发保持报文,其中所述转发保持时间初始时为表征本设备处理性能的本地处理时间;用于通过所述通信接口接收邻居路由设备发送的转发保持报文;用于通过所述通信接口接收邻居路由设备发布的路由信息;
路由下发单元,用于在收发单元接收到邻居路由设备发布的路由信息后,对于所述路由信息中的每条路由,如果需要将该条路由下发到转发表,先判断当前转发保持时间与本地处理时间的差值是否大于0,如果是,则等待所述差值时间后将该条路由下发到转发表,如果否,则将该条路由下发到转发表。
由上面的技术方案可知,本发明中,路由设备通过发布转发保持时间,协调各路由设备在接收到其它路由设备发布的路由信息后,对路由信息进行转发表下发处理的时间,从而能够防止网络故障恢复时流量丢失。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图,并举实施例,对本发明的技术方案进行详细说明。
参见图2,图2是本发明实施例网络故障平滑恢复方法流程图,包括以下步骤:
步骤201、向邻居路由设备发送携带当前转发保持时间的转发保持报文,其中所述转发保持时间初始时为表征本设备处理性能的本地处理时间。
这里,所述本地处理时间是指将一条路由下发到转发表所需要的处理时间,可以根据实际情况预先配置,也可以由路由发布方(这里是指当前路由设备)根据本机的处理性能计算获取,例如假设本机的处理性能为每毫秒下发S条路由到转发表,则处理一条路由的时间(也即本地处理时间)为:1/S。这样,如果当前路由设备的处理性能比较高,则本地处理时间就比较短,邻居路由设备在接收到当前路由设备发布的路由信息后,需要延迟下发路由的时间就比较短;如果当前路由设备的处理性能比较低,则本地处理时间就比较长,邻居路由设备在接收到当前路由设备发布的路由信息后,需要延迟下发路由的时间就比较长。
在首次向邻居路由设备发送转发保持报文时,如果尚未接收到其他邻居路由设备的转发保持报文,则直接将预先计算或配置的本地处理时间作为当前转发保持时间携带在转发保持报文中。
本步骤中,向邻居路由设备发送的转发保持报文可以在首次向邻居路由设备发布路由信息之前发送,从而使得邻居路由设备在接收到当前路由设备发布的路由后,可以根据转发保持报文中携带的转发保持时间,延迟下发路由。
在实际应用中,不同的路由协议,其首次发布路由信息的时间也不相同,例如,对于OSPF协议来说,路由设备之间在建立OSPF协议连接的过程中发布路由信息,并在发布路由信息之后,协议连接完成,因此,路由设备首次发布路由信息的时间是在建立OSPF协议连接的过程中;对于BGP协议、IS-IS协议来说,路由设备则在建立协议连接完成之后才发布路由信息,因此,路由设备首次发布路由信息的时间是在协议连接建立完成之后。但是,无论首次发布路由信息的时间是在建立协议连接的过程中,还是在协议连接建立完成之后,均可以在首次发布路由信息之前向邻居路由设备发送携带转发保持时间的转发保持报文。
对于转发保持报文的格式,可以根据各路由协议的不同设置不同的报文格式,本实施例中对此不做限制。
步骤202、接收到邻居路由设备发送的转发保持报文时,如果该转发保持报文中携带的转发保持时间大于当前转发保持时间,则将当前转发保持时间修改为该转发保持报文中携带的转发保持时间。
这里,所述当前转发保持时间,在初始时可以设置为0。当接收到邻居路由设备发送的转发保持报文时,可以根据当前转发保持时间和接收到的转发保持报文中携带的转发保持时间的大小,选择其中较大的作为当前转发保持时间,如果接收到多个邻居路由设备发送的转发保持报文,则当前转发保持时间将会取其中最大的转发保持时间。这样,当接收到任何邻居路由设备发布的路由信息时,当前路由设备可以在该邻居路由设备完成路由下发之后完成路由下发,从而保证当前路由设备接收到数据报文时,不会把数据报文发送到与本机的转发路径不一致的邻居路由设备。
步骤203、接收到邻居路由设备发布的路由信息时,对于所述路由信息中的每条路由,如果需要将该条路由下发到转发表,先当前转发保持时间与本地处理时间的差值是否大于0,如果是,则等待所述差值时间后将该条路由下发到转发表,如果否,则将该条路由下发到转发表。
在实际应用中,路由设备在接收到其他路由设备发布路由信息时,首先会进行路由计算,然后对于每条路由,判断确定该条路由是否是到达该条路由的前缀(也即目的IP地址)的最优路径,如果是,则会把该条路由下发到转发表中,如果不是,则不会将该条路由下发到转发表中。
本步骤中,对于所述路由信息中的每条路由,在判断确定需要将该条路由下发到转发表(例如,判断确定该条路由市到达该条路由的前缀的最优路径)之后,还需要进一步判断当前转发保持时间与本地处理时间的差值是否大于0,如果大于0,则说明当前路由设备执行完路由下发之后,邻居路由设备可能还未能完成路由下发,因此,当前路由设备需要等待所述差值时间后再执行路由下发;如果不大于0,则说明当前路由设备执行完路由下发之前,邻居路由设备能够完成路由下发,因此不需要等待,可以直接执行路由下发。
图2所示本发明实施例中,如果当前路由设备先向邻居路由设备发送了转发保持报文,并在之后接收到其中一个邻居路由设备的转发保持报文,且该接收到的转发保持报文中携带的转发保持时间大于当前转发保持时间,则当前路由设备还可以将当前转发保持时间修改为该接收到的转发保持报文中携带的转发保持时间,并将该接收到的转发保持报文中携带的转发保持时间通知其它邻居路由设备,否则,可能会出现问题。
下面以图1为例进行说明,假设路由器C和F的本地处理时间均为2秒,初始时,均将自身的当前转发保持时间设置为2秒;路由器C向路由器F发送了转发保持报文,其中携带的转发保持时间为2秒,路由器F接收到路由器C的转发保持报文后,当前转发保持时间不变,仍为2秒;之后,路由器C又收到了路由器B发送的转发保持报文,其中携带的转发保持时间为3秒,路由器C的当前转发保持时间变为3秒;
那么,当路由器C收到路由器B发布的路由信息后,会将该路由信息发布到路由器F,同时等待1秒后将该路由信息下发到转发表;而路由器F则在接收到该路由器C发布的路由信息后,直接将路由下发到转发表。因此,就出现路由器F已经学到路由器C发布的路由并下发相应的路由表项到转发表,而路由器C上仍有部分路由表项还未下发到转发表的情况,导致路由器C和路由器F上的转发路径不一致,当路由器F将流量发送到路由器C后,流量将在路由器C丢失。
为了解决上述问题,步骤202中所述将当前转发保持时间修改为该转发保持报文中携带的转发保持时间时,还可以进一步将该转发保持报文中携带的转发保持时间通知其它邻居路由设备;
该方法进一步包括:当前路由设备接收到邻居路由设备通知的转发保持时间时,如果该邻居路由设备通知的转发保持时间大于当前转发保持时间,则将当前转发保持时间修改为该邻居路由设备通知的转发保持时间,并将该邻居路由设备通知的转发保持时间通知其它邻居路由设备。
图2所示本发明实施例中,当前路由设备接收到邻居路由设备发布的路由信息后,可以只对存在次优路径的路由执行下发延迟。对于不存在次优路径的路由来说,只有两种情况:
第一种,当前路由设备中还不存在与该条路由具有相同前缀的路由。这种情况下,无论是立刻下发或是延迟下发该路由,均只有在该条路径上的所有节点的转发路径一致时,才能实现流量发送,否则,流量会丢失;
第二种,当前路由设备中存在与该条路由具有相同前缀的路由,该条路由不是到达该条路由的前缀的最优路径;已经存在的具有相同前缀的路由是到达该条路由的前缀的最优路径。这种情况下,流量只会沿由于该条路由的路径转发,不会下发该条路由到转发表。
因此,步骤203中所述等待所述差值时间后将该条路由下发到转发表之前,进一步包括:判断本地路由表中是否存在与该条路由具有相同前缀的其它路由,如果是,则等待所述差值时间后将该条路由下发到转发表,否则,直接将该条路有下发到转发表。
此外,本实施例中,还可以在配置转发保持开关,当需要支持转发保持功能时,开启转发保持开关,不需要支持转发保持功能时,关闭转发保持开关。如果配置了转发保持开关,则步骤201所述向邻居路由设备发送携带转发保持时间的转发保持报文前,进一步包括:判断所述转发保持开关是否开启,如果是,则向邻居路由设备发送携带转发保持时间的转发保持报文,否则,不向邻居路由设备发送携带转发保持时间的转发保持报文;同样,当前路由设备在接收到邻居路由设备发送的转发保持报文后,如果所述转发保持开关未开启,则丢弃该转发保持报文。
以上对本发明实施例网络故障平滑恢复方法进行了说明,本发明还提供了一种网络故障平滑恢复装置,应用于路由设备中。
参见图3,图3是本发明实施例网络故障平滑恢复装置300的结构示意图,该装置包括:存储器310、处理器320、通信接口330,以及耦合存储器310、处理器320和通信接口330的互联机构340;其中,
所述存储器310,用于存储有已获取的本地处理时间,以及当前转发保持时间;
所述处理器320至少包括:
转发保持单元322,用于在收发单元321接收到邻居路由设备发送的转发保持报文后,如果该转发保持报文中携带的转发保持时间大于当前转发保持时间,则将存储器310中的当前转发保持时间修改为该转发保持报文中携带的转发保持时间;
收发单元321,用于通过所述通信接口330向邻居路由设备发送携带当前转发保持时间的转发保持报文,其中所述转发保持时间初始时为表征本设备处理性能的本地处理时间;用于通过所述通信接口330接收邻居路由设备发送的转发保持报文;用于通过所述通信接口330接收邻居路由设备发布的路由信息;
路由下发单元323,用于在收发单元321接收到邻居路由设备发布的路由信息后,对于所述路由信息中的每条路由,如果需要将该条路由下发到转发表,先判断当前转发保持时间与本地处理时间的差值是否大于0,如果是,则等待所述差值时间后将该条路由下发到转发表,如果否,则将该条路由下发到转发表。
所述转发保持单元322在将存储器310中的当前转发保持时间修改为该转发保持报文中携带的转发保持时间时,进一步向收发单元321发送第一通知指示;用于在收发单元321接收到邻居路由器通知的转发保持时间后,如果该邻居路由设备通知的转发保持时间大于存储器310中的当前转发保持时间,则将存储器310中的当前转发保持时间修改为该邻居路由设备通知的转发保持时间,并向收发单元321发送第二通知指示。
所述收发单元321,用于接收到转发保持单元322的第一通知指示后,通过通信接口330将该转发保持报文中携带的转发保持时间通知其它邻居路由设备;用于通过通信接口330接收邻居路由设备通知的转发保持时间;用于接收到转发保持单元322的第二通知指示后,通过通信接口330将邻居路由设备通知的转发保持时间通知其它邻居路由设备。
所述路由下发单元323在等待所述差值时间后将该条路由下发到转发表之前,进一步用于:判断本地路由表中是否存在与该条路由具有相同前缀的其它路由,如果是,则等待所述差值时间后将该条路由下发到转发表,否则,直接将该条路由下发到转发表。
所述收发单元321向邻居路由设备发送的转发保持报文是在首次向邻居路由设备发布路由信息之前发送的。
所述存储器310,用于预先设置转发保持开关;
所述收发单元321在向邻居路由设备发送携带转发保持时间的转发保持报文前,进一步用于:判断所述转发保持开关是否开启,如果是,则向邻居路由设备发送携带转发保持时间的转发保持报文,否则,不向邻居路由设备发送携带转发保持时间的转发保持报文;用于在接收到邻居路由设备发送的转发保持报文后,如果所述转发保持开关未开启,则丢弃该转发保持报文。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。