一种处理路由器控制平面配置残留的方法
技术领域
本发明涉及路由器的控制平面,具体涉及一种处理路由器控制平面配置残留的方法。
背景技术
在IPRAN(无线接入网IP化)移动回传本地网中,业务都是通过网管或者CLI(command-line interface,命令行界面)进行配置和创建的。当业务量不断增加,特别是像移动静态场景,设备配置也成线性增加。由于网管数据库问题、人为操作、业务割接等原因,会导致配置的残留;配置残留会引发后续新增配置的失败,需要人工清除残留后,才能新增配置,可见,配置残留降低了新业务开通的效率。
发明内容
本发明所要解决的技术问题是配置残留会引发后续新增配置的失败,需要人工清除残留后,才能新增配置,导致新业务开通效率降低的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种处理路由器控制平面配置残留的方法,包括以下步骤:
步骤S10、先通过工具从网管数据库读取单个网元的数据,并生成一个完整的标准配置文件,称right配置文件;下载可能存在残留配置的现网配置文件,称now配置文件;
步骤S20、对比right配置文件与now配置文件的配置块的关键字、子配置关键字和子配置条目关键字,识别出不同的配置、残留的配置、丢失的配置,并分别标记为D、R、M;
步骤S30、在被标记为R的残留配置中找出与right配置文件具有关联的关联残留配置,并标记为DR;
步骤S40、对于标记为D的配置,生成更新配置的脚本;对于仅标记为R的配置,生成删除配置的脚本;对于标记为M的配置,生成添加配置的脚本;对于标记为R和DR的配置,生成相应的日志;
步骤S50、把三个脚本汇总成一个脚本,提供给工人维护人员处理现网存在问题的配置。
在上述方法中,right配置文件和now配置文件可分为配置块、子配置和子配置条目为三个层级;
right配置文件和now配置文件的配置块的类型具体包括接口配置块、OAM配置块、L2VPN业务配置块、L3VPN业务配置块、协议配置块、静态路由配置块;
每个类型的配置块包括多个子配置,每个子配置由多个配置条目构成。
在上述方法中,对比right配置文件与now配置文件的配置块的关键字、子配置关键字和子配置条目关键字,识别出不同的配置、残留的配置、丢失的配置,是通过分别遍历比较right配置文件和now配置文件中的配置块、子配置和子配置条目来完成的,具体为:
先遍历配置块,将right配置文件存在,now配置文件不存在的配置块,直接标记为丢失的配置M;right配置文件不存在,now配置文件存在,标记为残留的配置R;
对于right配置文件存在,now配置文件存在的配置块,分别遍历这些配置块的子配置;对于right配置块存在,now配置块不存在的子配置,标记为丢失的配置M;right配置块不存在,now配置块存在的子配置,标记为残留的配置R;
对于right配置块存在,now配置块存在的子配置,分别遍历这些子配置的子配置条目;对于right子配置存在,now子配置不存在的子配置条目,标记为丢失的配置M;right子配置不存在,now子配置存在的子配置条目,标记为残留的配置R;
对于right子配置存在,now子配置存在的子配置条目,比较相应的两个子配置条目是否相同,如果不同,将该子配置条目标记为不同的配置D,如果相同,不进行标记。
在上述方法中,遍历比较配置块具体包括以下步骤:
步骤S210、通过配置块关键字i_key识别出right配置文件中存在的所有配置块;
步骤S211、依次从right配置文件取出一个配置块right_i,根据配置块right_i的关键字i_key遍历now配置文件;
步骤S212、判断在now配置文件中是否存在与配置块right_i名称一致的配置块now_i,如果存在,执行步骤S213,否则,执行步骤S214;
步骤S213、在标准配置块文件right_config_i和现网配置块文件now_config_i中分别保存配置块right_i和配置块now_i,并分别从right配置文件和now配置文件中删除配置块right_i和配置块now_i,然后执行步骤S215;
步骤S214、将right配置文件中的整个配置块right_i标记为丢失的配置标识M;
步骤S215、判断是否已经遍历完right配置文件中所有配置块right_i,如果是,执行步骤S216;否则,执行步骤S211;
步骤S216、将now配置文件中剩余的所有配置块标记为残留的配置标识R;
步骤S217、对标准配置块文件right_config_i和现网配置块文件now_config_i进行子配置遍历比较。
在上述方法中,遍历比较子配置,具体包括以下步骤:
步骤S220、依次从标准配置块文件right_config_i中取出一个子配置right_i_j,并根据子配置right_i_j的关键字i_j_key遍历现网配置块文件now_config_i;
步骤S221、判断现网配置块文件now_config_i中是否存在与子配置right_i_j名称一致的子配置now_i_j;如果存在,执行步骤S222;否则,执行步骤S223;
步骤S222、分别在标准子配置文件right_config_i_j和现网子配置文件now_config_i_j中保存子配置right_i_j和right_i_j,并从标准配置块文件right_config_i和现网配置块文件now_config_i中删除子配置right_i_j和now_i_j,然后执行步骤S224;
步骤S223、将标准配置块文件right_config_i中的子配置right_i_j标记为丢失的配置标识M;
步骤S224、判断是否遍历完标准配置块文件right_config_i中所有子配置,如果是,执行步骤S225;否则,执行步骤S220;
步骤S225、将现网子配置文件now_config_i_j中剩余的所有子配置为标记为残留的配置标识R;
步骤S226、对标准子配置文件right_config_i_j和现网子配置文件now_config_i_j进行子配置条目遍历比较。
在上述方法中,遍历比较子配置条目,具体包括以下步骤:
步骤S230、依次从标准子配置文件right_config_i_j中取出子配置条目right_i_j_k,并根据子配置条目right_i_j_k的关键字i_j_k_key遍历现网子配置文件now_config_i_j;
步骤S231、判断现网子配置文件now_config_i_j中是否存在与子配置条目right_i_j_k名称一致的子配置条目存now_i_j_k,如果存在,执行步骤S232;否则,执行S235;
步骤S232、判断名称一致的子配置条目right_i_j_k和now_i_j_k内容是否相同,如果相同,执行步骤S233;否则,执行步骤S234;
步骤S233、从标准子配置文件right_config_i_j和现网子配置文件now_config_i_j中分别删除相同的子配置条目right_i_j_k和now_i_j_k,然后执行步骤S236;
步骤S234、将标准子配置文件right_config_i_j中的子配置条目right_i_j_k标记为不同的配置标记D,然后执行步骤S236;
步骤S235、将标准子配置文件right_config_i_j中的子配置条目right_i_j_k标记为丢失的配置标记M;
步骤S236、判断是否遍历完标准子配置文件right_config_i_j中所有的子配置条目right_i_j_k,如果是,执行步骤S237;否则,执行步骤S230;
步骤S237、将现网子配置文件now_config_i_j中剩余的子配置条目now_i_j_k标记为残留的配置标记R;
步骤S238、结束识别。
在上述方法中,在遍历完成后,将标记为不同的配置D的配置、标记为残留的配置R的配置、标记为丢失的配置M的配置分别写入临时文件的不同的配置文件different、残留的配置文件remain、丢失的配置文件miss,并根据不同的配置文件different生成更新配置的脚本,根据丢失的配置文件miss生成添加配置的脚本,根据残留的配置文件remain生成相应日志,根据删除标记为残留配置R的残留的配置文件remain生成删除配置的脚本。
在上述方法中,遍历完成后,对被标记为R的残留配置块进行被依赖关系优先级排序,按照被依赖关系由低到高的顺序,遍历所有残留子配置,找出与right配置文件具有关联的关联残留配置,并标记关联残留配置DR。
在上述方法中,遍历所有残留子配置,标记关联残留配置,具体为:
步骤S301、从残留的配置文件remain的残留配置块remain_i中取出子配置remain_i_j,根据上一级被关联配置,产生一个关键字m_n_key;
步骤S302、通过关键字m_n_key在right和now备份配置文件中查找上一级被关联子配置right_m_n和now_m_n;
步骤S303、完成遍历标记关联的上一级子配置之后,对其关联的下一级的子配置进行遍历标记;
步骤S304、比较判断是否存在子配置right_m_n和now_m_n,如果子配置right_m_n和now_m_n都存在,执行步骤S305;如果只有子配置right_m_n存在,执行步骤S305;如果子配置right_m_n和now_m_n都不存在,执行步骤S306;如果只有子配置now_m_n存在,执行步骤S306;
步骤S305、标记子配置remain_i_j为DR;
步骤S306、判断是否遍历完所有配置块remain_i的所有子配置;如果是,执行步骤S308;否则,执行步骤S307;
步骤S307、令j=j+1,执行步骤S301;
步骤S308,判断是否遍历完残留的配置文件remain的所有配置块,如果不是,执行步骤S309;否则,流程结束;
步骤S309、则令i=i+1,执行步骤S301。
本发明,通过将可能存在残留配置的现网配置文件与标准配置文件按照不同级进行层层遍历,识别出现网配置文件中的残留配置,并进行标记,再根据残留配置分别在其上、下级中查找到关联配置,并进行标记,最后对标记的残留配置进行统一处理,从而实现批量处理残留的配置,减少新增配置冲突,提高新增配置的效率,为工程人员维护设备带来便利。
附图说明
图1为本发明提供的一种处理路由器控制平面配置残留的方法的流程图;
图2为本发明中遍历比较配置块的流程图;
图3为本发明中遍历比较子配置的流程图;
图4为本发明中遍历比较子配置条目的流程图
图5为本发明中标记关联关系配置的流程图。
具体实施方式
下面结合说明书附图和具体实施例对本发明做出详细的说明。
如图1所示,本发明提供的一种处理路由器控制平面配置残留的方法,包括以下步骤:
步骤S10、先通过工具从网管数据库读取单个网元的数据,并生成一个完整的标准配置文件,称right配置文件;下载可能存在残留配置的现网配置文件,称now配置文件。
步骤S20、对比right配置文件与now配置文件的配置块的关键字、子配置关键字和子配置条目关键字,识别出不同的配置、残留的配置、丢失的配置,并分别标记为D(Different)、R(Remain)、M(Miss)。
在本发明中,right配置文件和now配置文件可分为配置块(right_i和now_i)、子配置(right_i_j和now_i_j)和子配置条目(right_i_j_k和now_i_j_k)为三个层级,right配置文件和now配置文件包括很多不同类型配置块,不同类型配置块具体包括接口配置块、OAM配置块、L2VPN业务配置块、L3VPN业务配置块、协议配置块(包括OSPF、ISIS、BGP、LDP、RSVP-TE等)、静态路由配置块等,每个类型的配置块包括多个子配置,每个子配置由多个配置条目构成;例如所有接口配置是一个配置块,单个接口配置是一个子配置,每个接口配置下的一条命令是一个子配置条目。
步骤S30、在被标记为R的残留配置中找出与right配置文件具有关联的关联残留配置,并标记为DR(Dependency Relationship)。
步骤S40、根据存在问题配置的标记,做不同处理,对于标记为D的配置,生成更新配置的脚本;对于仅标记为R的配置,生成删除配置的脚本;对于标记为M的配置,生成添加配置的脚本;对于标记为R和DR的配置,生成相应的日志,提示用户这些配置存在关联关系,在对相应脚本处理时会影响业务,需要查看日志,人工识别手动处理。
步骤S50、把三个脚本汇总成一个脚本,提供给工人维护人员处理现网存在问题的配置。
在本发明中,对比right配置文件与now配置文件的配置块的关键字、子配置关键字和子配置条目关键字,识别出不同的配置、残留的配置、丢失的配置,是通过分别遍历比较right配置文件和now配置文件中的配置块、子配置和子配置条目来完成的,具体为:
先遍历配置块,将right配置文件存在,now配置文件不存在的配置块,直接标记为丢失的配置M;right配置文件不存在,now配置文件存在,标记为残留的配置R;
对于right配置文件存在,now配置文件存在的配置块,分别遍历这些配置块的子配置;对于right配置块存在,now配置块不存在的子配置,标记为丢失的配置M;right配置块不存在,now配置块存在的子配置,标记为残留的配置R;
对于right配置块存在,now配置块存在的子配置,分别遍历这些子配置的子配置条目;对于right子配置存在,now子配置不存在的子配置条目,标记为丢失的配置M;right子配置不存在,now子配置存在的子配置条目,标记为残留的配置R;
对于right子配置存在,now子配置存在的子配置条目,比较相应的两个子配置条目是否相同,如果不同,将该子配置条目标记为不同的配置D,如果相同,不进行标记。
如图2所示,遍历比较配置块具体包括以下步骤:
步骤S210、通过配置块关键字i_key识别出right配置文件中存在的所有配置块;
步骤S211、依次从right配置文件取出一个配置块right_i,根据配置块right_i的关键字i_key遍历now配置文件;
步骤S212、判断在now配置文件中是否存在与配置块right_i名称一致的配置块now_i,如果存在,执行步骤S213,否则,执行步骤S214;
步骤S213、在标准配置块文件right_config_i和现网配置块文件now_config_i中分别保存配置块right_i和配置块now_i,并分别从right配置文件和now配置文件中删除配置块right_i和配置块now_i,然后执行步骤S215;
步骤S214、将right配置文件中的整个配置块right_i标记为丢失的配置标识M;
步骤S215、判断是否已经遍历完right配置文件中所有配置块right_i,如果是,执行步骤S216;否则,执行步骤S211;
步骤S216、将now配置文件中剩余的所有配置块标记为残留的配置标识R;
步骤S217、对标准配置块文件right_config_i和现网配置块文件now_config_i进行子配置遍历比较。
如图3所示,遍历比较子配置,具体包括以下步骤:
步骤S220、依次从标准配置块文件right_config_i中取出一个子配置right_i_j,并根据子配置right_i_j的关键字i_j_key遍历现网配置块文件now_config_i;
步骤S221、判断现网配置块文件now_config_i中是否存在与子配置right_i_j名称一致的子配置now_i_j;如果存在,执行步骤S222;否则,执行步骤S223;
步骤S222、分别在标准子配置文件right_config_i_j和现网子配置文件now_config_i_j中保存子配置right_i_j和right_i_j,并从标准配置块文件right_config_i和现网配置块文件now_config_i中删除子配置right_i_j和now_i_j,然后执行步骤S224;
步骤S223、将标准配置块文件right_config_i中的子配置right_i_j标记为丢失的配置标识M;
步骤S224、判断是否遍历完标准配置块文件right_config_i中所有子配置,如果是,执行步骤S225;否则,执行步骤S220;
步骤S225、将现网子配置文件now_config_i_j中剩余的所有子配置为标记为残留的配置标识R;
步骤S226、对标准子配置文件right_config_i_j和现网子配置文件now_config_i_j进行子配置条目遍历比较。
如图4所示,遍历比较子配置条目,具体包括以下步骤:
步骤S230、依次从标准子配置文件right_config_i_j中取出子配置条目right_i_j_k,并根据子配置条目right_i_j_k的关键字i_j_k_key遍历现网子配置文件now_config_i_j;
步骤S231、判断现网子配置文件now_config_i_j中是否存在与子配置条目right_i_j_k名称一致的子配置条目存now_i_j_k,如果存在,执行步骤S232;否则,执行S235;
步骤S232、判断名称一致的子配置条目right_i_j_k和now_i_j_k内容是否相同,如果相同,执行步骤S233;否则,执行步骤S234;
步骤S233、从标准子配置文件right_config_i_j和现网子配置文件now_config_i_j中分别删除相同的子配置条目right_i_j_k和now_i_j_k,然后执行步骤S236;
步骤S234、将标准子配置文件right_config_i_j中的子配置条目right_i_j_k标记为不同的配置标记D,然后执行步骤S236;
步骤S235、将标准子配置文件right_config_i_j中的子配置条目right_i_j_k标记为丢失的配置标记M;
步骤S236、判断是否遍历完标准子配置文件right_config_i_j中所有的子配置条目right_i_j_k,如果是,执行步骤S237;否则,执行步骤S230;
步骤S237、将现网子配置文件now_config_i_j中剩余的子配置条目now_i_j_k标记为残留的配置标记R;
步骤S238、结束遍历。
在遍历完成后,将标记为不同的配置D的配置、标记为残留的配置R的配置、标记为丢失的配置M的配置分别写入临时文件的不同的配置文件different、残留的配置文件remain、丢失的配置文件miss,并根据不同的配置文件different生成更新配置的脚本,根据丢失的配置文件miss生成添加配置的脚本,根据残留的配置文件remain生成相应日志,根据删除标记为残留配置R的残留的配置文件remain生成删除配置的脚本。
遍历完成后,对被标记为R的残留配置块进行被依赖关系优先级排序,按照被依赖关系由低到高的顺序,遍历所有残留子配置;找出与right配置文件具有关联的关联残留配置,并标记关联残留配置DR。如图5为标记关联关系配置实现流程。具体包括以下步骤:
步骤S301、从残留的配置文件remain的残留配置块remain_i中取出子配置remain_i_j,根据上一级被关联配置,产生一个关键字m_n_key;
步骤S302、通过关键字m_n_key在right和now备份配置文件中查找上一级被关联子配置right_m_n和now_m_n;
步骤S303、完成遍历标记关联的上一级子配置之后,对其关联的下一级的子配置进行遍历标记;
步骤S304、比较判断是否存在子配置right_m_n和now_m_n,如果子配置right_m_n和now_m_n都存在,执行步骤S305;如果只有子配置right_m_n存在,执行步骤S305;如果子配置right_m_n和now_m_n都不存在,执行步骤S306;如果只有子配置now_m_n存在,执行步骤S306;
步骤S305、标记子配置remain_i_j为DR;
步骤S306、判断是否遍历完所有配置块remain_i的所有子配置;如果是,执行步骤S308;否则,执行步骤S307;
步骤S307、令j=j+1,执行步骤S301,继续遍历下一个子配置;
步骤S308,判断是否遍历完残留的配置文件remain的所有配置块,如果不是,执行步骤S309;否则,流程结束;
步骤S309、则令i=i+1,执行步骤S301,遍历下一个配置块。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。