发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种前缀列表实时刷新方法及系统,实时刷新前缀列表对应的路由过滤条件,同时又不影响原来已经生效的业务。
为达到以上目的,本发明采取的技术方案是:一种前缀列表实时刷新方法,包括以下步骤:
各协议模块向前缀列表处理模块注册前缀列表变更消息;前缀列表发生变化时,前缀列表处理模块将发生变化后的前缀列表变更消息发送至已注册的协议模块;
各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用时,触发对应的路由刷新操作;
协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,路由管理模块执行对应的添加或删除路由操作。
在上述技术方案的基础上,各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用时,触发对应的路由刷新操作,具体包括以下步骤:
各协议模块收到前缀列表变更消息后,根据变更内容查找本地对应的前缀列表;
查看当前是否有前一个前缀列表正在刷新,若否,启动定时器,定时器到期时,根据前缀列表变更消息触发对应的路由刷新操作;若是,则终止当前刷新流程,启动定时器,重新等待定时器到期时,再根据前缀列表变更消息触发对应的路由刷新操作。
在上述技术方案的基础上,协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,路由管理模块执行对应的添加或删除路由操作,具体包括以下步骤:
协议模块向路由管理模块获取许可,若获得许可,则向路由管理模块发送添加或删除路由消息,若未获得许可,则将当前要发送的添加或删除路由消息放到队列中,等到获得许可时,从队列中获取到添加或删除路由消息,发送给路由管理模块;
路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
在上述技术方案的基础上,各协议模块收到前缀列表变更消息后,通过索引方式查询是否引用该前缀列表。
在上述技术方案的基础上,所述前缀列表变更消息包括发生变化后的前缀列表名称或前缀列表ID。
本发明还公开了一种前缀列表实时刷新系统,包括多个协议模块、前缀列表处理模块和路由管理模块:
各所述协议模块用于:向前缀列表处理模块注册前缀列表变更消息;
所述前缀列表处理模块用于:前缀列表发生变化时,将发生变化后的前缀列表变更消息发送至已注册的协议模块;
各所述协议模块还用于:收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用时,触发对应的路由刷新操作;根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息;
所述路由管理模块用于:执行对应的添加或删除路由操作。
在上述技术方案的基础上,各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用时,触发对应的路由刷新操作,具体过程为:
各协议模块收到前缀列表变更消息后,根据变更内容查找本地对应的前缀列表;
查看当前是否有前一个前缀列表正在刷新,若否,启动定时器,定时器到期时,根据前缀列表变更消息触发对应的路由刷新操作;若是,则终止当前刷新流程,启动定时器,重新等待定时器到期时,再根据前缀列表变更消息触发对应的路由刷新操作。
在上述技术方案的基础上,所述协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,具体过程为:
协议模块向路由管理模块获取许可,若获得许可,则向路由管理模块发送添加或删除路由消息,若未获得许可,则将当前要发送的添加或删除路由消息放到队列中,等到获得许可时,从队列中获取到添加或删除路由消息,发送给路由管理模块;
所述路由管理模块执行对应的添加或删除路由操作,具体过程为:
路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
在上述技术方案的基础上,各协议模块收到前缀列表变更消息后,通过索引方式查询是否引用该前缀列表。
在上述技术方案的基础上,所述前缀列表变更消息包括发生变化后的前缀列表名称或前缀列表ID。
与现有技术相比,本发明的优点在于:
(1)本发明中的各协议模块向前缀列表处理模块注册前缀列表变更消息;前缀列表发生变化时,前缀列表处理模块将发生变化后的前缀列表变更消息发送至已注册的协议模块;各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用,触发对应的路由刷新操作;协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,执行对应的添加或删除路由操作,实现了修改前缀列表的操作更人性化,不会为了修改前缀列表而对无关的大量引用操作进行删除重新引用,减少重复操作,同时不影响已有业务,避免已有业务受损。
(2)本发明为避免用户多次修改前缀列表造成的反复刷新,每次修改触发刷新动作使用定时器进行延时,使用户的多次修改一次触发,避免长时间CPU占用。
(3)本发明执行路由更新操作时,协议模块需先向路由管理模块获取许可,获得许可才可以向路由管理模块发送添加或删除路由消息,实现按路由量进行分批过滤,避免CPU长时间占用。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
实施例1:
参见图1所示,本发明实施例提供一种前缀列表实时刷新方法,包括以下步骤:
S1,各协议模块向前缀列表处理模块注册前缀列表变更消息;所述前缀列表变更消息包括发生变化后的前缀列表名称或前缀列表ID。前缀列表发生变化时,前缀列表处理模块将发生变化后的前缀列表变更消息发送至已注册的协议模块;协议模块指ISIS\OSPF\BGP等用到前缀列表的协议模块。ISIS(Intermediate system to intermediate system,中间系统到中间系统);OSPF(Open Shortest Path First,开放式最短路径优先);BGP(Border GatewayProtocol,边界网关协议)。
S2,各协议模块收到前缀列表变更消息后,通过索引方式查询是否引用该前缀列表。若协议模块对变化后的前缀列表有引用,触发对应的路由刷新操作;
S3,协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,路由管理模块执行对应的添加或删除路由操作。路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
本发明实施例中的各协议模块向前缀列表处理模块注册前缀列表变更消息;前缀列表发生变化时,前缀列表处理模块将发生变化后的前缀列表变更消息发送至已注册的协议模块;各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用,触发对应的路由刷新操作;协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,执行对应的添加或删除路由操作,实现了修改前缀列表的操作更人性化,不会为了修改前缀列表而对无关的大量引用操作进行删除重新引用,减少重复操作,同时不影响已有业务,避免已有业务受损。
实施例2:
在实施例1的基础上,各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用,进行对应的路由刷新操作,具体包括以下步骤:
各协议模块收到前缀列表变更消息后,根据变更内容查找本地对应的前缀列表;
查看当前是否有前一个前缀列表正在刷新,若否,启动定时器,定时器到期时,根据前缀列表变更消息触发对应的路由刷新操作;若是,则终止当前刷新流程,启动定时器,重新等待定时器到期时,再根据前缀列表变更消息触发对应的路由刷新操作。
协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,路由管理模块执行对应的添加或删除路由操作,具体包括以下步骤:
协议模块向路由管理模块获取许可,若获得许可,则向路由管理模块发送添加或删除路由消息,若未获得许可,则将当前要发送的添加或删除路由消息放到队列中,等到获得许可时,从队列中获取到添加或删除路由消息,发送给路由管理模块;路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
实施例3:
在实施例1的基础上,前缀列表实时刷新方法具体包括以下步骤:
1、各协议模块向前缀列表处理模块注册前缀列表变更消息,前缀列表发生变化时,将发生变化的前缀列表名称或ID发送到注册消息的协议模块;
2、协议模块收到前缀列表变更消息后,通过索引方式查询是否引用该信息,如果引用该前缀列表,则进行刷新操作;
3、模块刷新操作实际上是对各协议路由按新的条件进行重新过滤,对所有路由进行遍历,按新的前缀列表差异部分进行路由的添加和删除操作;
4、在进行刷新的过程中,如果有新的前缀列表改动与正在刷新条件相关,则停止正在进行的刷新过程,重新进行新一次刷新;
5、路由重新过滤时,按路由量进行分批过滤,避免CPU长时间占用。
为避免用户多次修改前缀列表造成的反复刷新,每次修改触发刷新动作使用定时器进行延时,使用户的多次修改一次触发,避免长时间CPU占用。
实施例4:
在实施例1的基础上,如图2所示,前缀列表处理模块与各协议模块间存在消息接口,当协议模块对前缀列表有引用时,注册接收前缀列表变更消息,当前缀列表处理模块有前缀列表发生变更时,前缀列表处理模块向注册消息的协议模块发送变更消息。
如图3所示,协议模块收到前缀列表的变更消息后处理流程如下:
S201,收到前缀列表更新消息;
S202,根据变更消息查找本地所使用的前缀列表,判断是否存在对应的前缀列表;若是,进入步骤S203;若否,结束;
S203,查找到对应的前缀列表,则查看是否有前一个前缀列表的更新正在刷新;若是,进入步骤S204;若否,进入步骤S205;
S204,跳出刷新流程,进入步骤S205;
S205,启动定时器;进入步骤S206;
S206,定时器到期时根据前缀列表内容进行相应路由或LSA(Link-StateAdvertisement,链路状态广播)的刷新操作,结束。
如图4所示,对路由进行刷新操作,实际上是将协议模块当前路由重新进行过滤,处理流程如下:
S301,触发路由或LSP刷新操作;
S302,向路由管理模块获取许可;
S303,判断是否获得许可,若是,进入步骤S305;若否,进入步骤S304;
S304,添加或删除路由消息放到队列中;等待一段时间,重新进入步骤302;
S305,向路由管理模块发送添加或删除路由消息;
S306,路由管理模块执行对应的添加或删除路由操作;
S307,判断是否还有路由未处理,若是,返回步骤S302;若否,结束。
本发明实施例执行路由更新操作时,协议模块需先向路由管理模块获取许可,获得许可才可以向路由管理模块发送添加或删除路由消息,实现按路由量进行分批过滤,避免CPU长时间占用。
实施例5:
本发明实施例公开了一种前缀列表实时刷新系统,包括多个协议模块、前缀列表处理模块和路由管理模块:
各所述协议模块用于:向前缀列表处理模块注册前缀列表变更消息;所述前缀列表变更消息包括发生变化后的前缀列表名称或前缀列表ID。
所述前缀列表处理模块用于:前缀列表发生变化时,将发生变化后的前缀列表变更消息发送至已注册的协议模块;
各协议模块收到前缀列表变更消息后,通过索引方式查询是否引用该前缀列表。若协议模块对变化后的前缀列表有引用,触发对应的路由刷新操作;根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息;
所述路由管理模块用于:执行对应的添加或删除路由操作。具体来说,路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
实施例6:
在实施例5的基础上,各协议模块收到前缀列表变更消息后,且协议模块对变化后的前缀列表有引用,进行对应的路由刷新操作,具体包括以下步骤:
各协议模块收到前缀列表变更消息后,根据变更内容查找本地对应的前缀列表;
查看当前是否有前一个前缀列表正在刷新,若否,启动定时器,定时器到期时,根据前缀列表变更消息触发对应的路由刷新操作;若是,则终止当前刷新流程,启动定时器,重新等待定时器到期时,再根据前缀列表变更消息触发对应的路由刷新操作。
协议模块根据前缀列表变更消息,向路由管理模块发送添加或删除路由消息,路由管理模块执行对应的添加或删除路由操作,具体包括以下步骤:
协议模块向路由管理模块获取许可,若获得许可,则向路由管理模块发送添加或删除路由消息,若未获得许可,则将当前要发送的添加或删除路由消息放到队列中,等到获得许可时,从队列中获取到添加或删除路由消息,发送给路由管理模块;路由管理模块对所有路由进行遍历,根据添加或删除路由消息进行路由的添加或删除操作。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。