发明内容
本发明提供了配置信息的存储方法和一种网络设备,以提高配置信息的使用效率,避免对网络设备各个模块正常工作的影响。
本发明提供的技术方案包括:
一种配置信息的存储方法,包括:
A,网络设备中各个模块注册自身的配置生成函数至网络设备的配置管理中心;
B,网络设备中各个模块在自身的配置发生改变时,发送配置改变消息至配置管理中心;
C,配置管理中心接收到配置改变消息后,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中;
D,当需要使用所述网络设备的配置时,从所述数据库中获取该配置。
一种网络设备,包括:配置管理中心和至少一个模块;
每一模块,用于注册自身的配置生成函数至配置管理中心,并在自身的配置发生改变时,发送配置改变消息至配置管理中心;
所述配置管理中心,用于接收到模块的配置改变消息后,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中,以使在后续使用所述网络设备的配置时,从所述数据库中获取该配置。
由以上技术方案可以看出,本发明中,当需要使用配置时,直接从数据库取出相关的配置内容,不用再进行收集动作,这样提高了配置信息的使用效率,并且,由于使用数据库保存配置,使配置的使用和收集分离,并且收集时也只针对发生变化的配置才收集,没有变化的部分不用进行收集,这样提高了系统的稳定性,避免对网络设备各个模块正常工作的影响。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供的方法包括图1所示的流程:
参见图1,图1为本发明实施例提供的流程图。如图1所示,该流程可包括以下步骤:
步骤101,网络设备中各个模块注册自身的配置生成函数至网络设备的配置管理中心。
这里,网络设备中的各个模块具体实现时可为路由模块、转发模块等,可遵守现有对网络设备中各个模块的定义。
本步骤101中,网络设备中的各个模块可在启动后将自身的配置生成函数注册至网络设备的配置管理中心。此时,各个模块还没有对应的配置。
步骤102,网络设备中各个模块在自身的配置发生改变时,发送配置改变消息至配置管理中心。
步骤102中的配置改变消息可包含发送该配置改变消息的模块标识、以及发生改变的配置对应的标识,其中,发生改变的配置对应的标识可为配置发生改变的时间等,本发明并不具体限定。
需要说明的是,网络设备中各个模块在启动后没有对应的配置,此时,若当前针对某一模块进行配置,就会发布配置命令,当该配置命令被成功执行时,表示该模块被进行了配置。相对于该模块之前没有对应的配置,该模块的配置发生了改变,该模块会发送配置改变消息至配置管理中心。
步骤103,配置管理中心接收到配置改变消息后,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中。
本步骤103具体实现时可包括图2所示的流程:
参见图2,图2为本发明实施例提供的步骤103实现流程图。如图2所示,该流程可包括以下步骤:
步骤201,配置管理中心接收到配置改变消息后,判断本地消息链表中是否存在该接收的配置改变消息,如果是,执行步骤202,否则,执行步骤203。
基于步骤102描述的配置改变消息可包含发送该配置改变消息的模块标识、以及发生改变的配置对应的标识,因此,本步骤202中的判断可为:以该接收的配置改变消息所包含的标识为关键词,从本地消息链表中查找包含该关键词的配置改变消息,如果查找到,则确定本地消息链表中包含该接收的配置改变消息,否则,确定本地消息链表中不存在该接收的配置改变消息。
步骤202,直接丢弃该配置改变消息。之后执行步骤204。
步骤203,将该接收的配置改变消息添加至本地消息链表中。之后执行步骤204。
步骤204,配置管理中心每隔设定周期查看本地消息链表中是否存在配置改变消息,如果是,执行步骤205,否则,返回步骤204。
步骤205,配置管理中心依次从本地消息链表中取出配置改变消息,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中。
通过步骤205即可实现将发生改变的配置存储至数据库。从图2可以看出,当模块的配置发生改变时直接发送配置改变消息给配置管理中心,配置管理中心响应配置改变消息,收集对应的配置并更新到数据库中,即本发明仅收集发生改变的配置,没有变化的配置不用进行收集,这样提高了系统的稳定性,避免了对网络设备中各个模块正常工作的影响。
步骤104,当需要使用所述网络设备的配置时,从所述数据库中获取该需要使用的配置。
由于所述网络设备的配置都存储至数据库中,因此,当使用某一配置时,就可从所述数据库中取出并使用该配置。其中,从数据库中获取该需要使用的配置,在具体实现时可通过以下步骤实现:根据需要使用的配置的性能数据来构造用于在所述数据库中查询该配置的查询函数,利用构造的查询函数从所述数据库中查询并取出对应的配置;其中,所述配置的性能数据至少包括:配置的用途、使用范围。
至此,完成图1所示的流程。从图1所示的流程可以看出,本发明中,当需要使用配置时,直接从数据库取出相关的配置内容,不用再进行收集动作,这样提高了效率。并且,由于使用数据库保存配置,使配置的使用和收集分离,并且收集时也只针对发生变化的配置才收集,没有变化的部分不用进行收集,这样提高了系统的稳定性。
需要说明的是,本发明为支持网络设备的热插拔,可在网络设备被热拔出时将该网络设备保存在数据库中的配置加锁,对于加锁的配置在running-config中是不可见的,而当被拔出的网络设备再被插入时,对数据库中该网络设备被加锁的配置解锁,并执行这些解锁的配置,以保证恢复网络设备被拔出前的状态。
还需要说明的是,本发明中,为提高网络设备的可靠性,可为网络设备设置一个备份(此时网络设备可称为主用网络设备,而该备份可称为备用网络设备),以在主用网络设备出现故障时,进行主备切换,由备用网络设备代替该主用网络设备继续工作。基于此种情况,本发明可限定上述的数据库可为分布式数据库,由该分布式数据库实时同步主用网络设备的配置至备用网络设备。并且,当主备切换时,由备用网络设备获取并执行分布式数据库中存放的主用网络设备的配置,建立与原来主用网络设备相同的运行状态,保证业务的正常执行。可以看出,通过使用分布式数据库来实时同步配置到备用网络设备,这样可以解决现有因不能感知那些配置发生变化而进行定时同步的问题,进一步简化了配置的同步流程。
进一步地,本发明中,为保证网络设备的配置在重启时能够使用重启命名startup建立设备的运行环境,可通过用于保存配置的write命令将分布式数据库中的配置保存到非易失性的文件系统中的启动startup文件。
至此,完成本发明的方法描述,下面对本发明提供的网络设备进行描述。
参见图3,图3为本发明实施例提供的网络设备结构图。如图3所示,该网络设备可包括:
配置管理中心和至少一个模块;
每一模块,用于注册自身的配置生成函数至配置管理中心,并在自身的配置发生改变时,发送配置改变消息至配置管理中心;
所述配置管理中心,用于接收到配置改变消息后,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中,以使在后续使用所述网络设备的配置时,从所述数据库中获取该配置。
其中,所述数据库可设置在网络设备中,也可独立于网络设备,本发明并不具体限定。图3以数据库设置在网络设备为例。
优选地,所述配置管理中心具体实现时可包括:
判断单元,用于接收到配置改变消息后,判断本地消息链表中是否存在该接收的配置改变消息,如果是,则直接丢弃该配置改变消息,否则,将该配置改变消息添加至本地消息链表中;
查看单元,用于每隔设定周期查看本地消息链表中是否存在配置改变消息;
收集单元,用于在查看单元查看出本地消息链表中存在配置改变消息时,依次从本地消息链表中取出配置改变消息,调用发送该配置改变消息的模块所注册的配置生成函数来收集该模块中发生改变的配置,并存储该收集的配置至数据库中。
本发明中,所述数据库为分布式数据库;基于此,所述网络设备进一步包括:
同步单元,用于通过所述分布式数据库实时同步所述网络设备的配置至所述网络设备的备份,以使网络设备的备份在执行主备切换后,获取并执行所述分布式数据库中存放的所述网络设备的配置。
还有,本发明中,所述网络设备进一步包括:
保存单元,用于通过保存配置write命令将数据库中的配置保存到非易失性文件系统中的startup文件。这样,能够保证网络设备的配置在重启时能够使用startup建立设备的运行环境。
至此,完成图3的描述。
由以上技术方案可以看出,本发明中,当需要使用配置时,直接从数据库取出相关的配置内容,不用再进行收集动作,这样提高了配置信息的使用效率,并且,由于使用数据库保存配置,使配置的使用和收集分离,并且收集时也只针对发生变化的配置才收集,没有变化的部分不用进行收集,这样提高了系统的稳定性,避免对网络设备各个模块正常工作的影响
进一步地,本发明通过使用分布式数据库来实时同步配置到备用网络设备,这样可以解决现有因不能感知那些配置发生变化而进行定时同步的问题,进一步简化了配置的同步流程。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。