一种配置规则检查方法及装置的制作方法

文档序号:7649731阅读:199来源:国知局
专利名称:一种配置规则检查方法及装置的制作方法
技术领域
本发明涉及网络设备管理技术,特别涉及一种配置规则检查方法及装置。
背景技术
在使用各种网络设备为用户提供各种网络服务时,需要对网络设备进行配置。通常,网络管理员在网元管理设备(EM,Element Manager)侧准备好配置数据,并通过批量配置的方式或以数据恢复的方式下发到网络设备单元(NE,Network Element,简称网元)。网元在根据这些配置数据更新设备配置之前必须对配置数据的有效性和一致性进行检查,以防网元管理设备侧因为管理或实现等因素下发不合法的数据,对网元的正常运行带来不安全影响。对配置数据进行有效性和一致性检查的规则称为配置规则,相应地,对配置数据的有效性和一致性所进行的检查称为配置规则检查。现有技术中存在两种进行配置规则检查的方法,下面分别予以介绍。
第一种方法使用对象约束语言(OCL,Object Constraint Language)来描述配置规则。该方法首先需要对配置数据进行对象化建模,并在对象模型的基础上描述对象配置操作的前置条件、后置条件和对象的不变式;然后开发OCL翻译器,将其翻译成JAVA、SQL或C++等目标代码,最后将翻译后的代码与目标系统的代码一起编译运行。
从性能方面考虑,该配置规则检查方法存在以下缺点1、由于OCL语言本身只是提供了一种基于不变式的用于描述约束的完整的语法,并没有考虑规则检查的效率问题,使得配置规则检查的效率很低。例如,如下所示的表示员工中至少有一人大于50岁的不变式
inv:selt.employee->select(p|p.age>50)->notEmpty()被翻译为伪代码将是如下形式For我的员工集合中的每一个成员pif(p.age>50)then将p放入临时集合SEnd for;S.size()>0;一方面,上述翻译的性能显然不如如下形式For我的员工集合中的每一个成员pif(p.age>50)then return OK;End for;而这种智能的调整优化很难在翻译过程中自动实现;另一方面,对象不变式是对象的整个生命周期都必须满足的规则,由于OCL本身并没有考虑对象不变式检查的执行时机,所以,如果不对上述规则作优化,则对对象模型的任何修改都将触发该不变式的检查,其性能损失将是非常巨大的。
2、该方法要求将OCL翻译成目标代码并与目标软件系统集成。这个翻译过程要求定义目标代码与OCL数据类型之间的映射和转换关系,定义能与OCL语法元素对应的对象数据访问接口,这将增加对数据访问的间接性和转换要求,导致配置规则检查效率的降低。
第二种方法按照OCL的思想将配置规则分为对象配置操作的前置条件、后置条件和对象的不变式,并使用普通的编程语言,例如C、C++或JAVA语言开发,然后将这些规则检查的代码编译成一个动态链接库(DLL)。规则检查对数据的访问通过预先标准化的接口进行,这个接口的实现由规则检查DLL的使用者在初始化DLL时注册。
该方法虽然使用了C、C++或JAVA语言实现,但该方法还是基于OCL的思想,没有就如何提高配置规则检查的效率提出有效的解决方案。
由上述分析可见,现有配置规则检查方法的效率较低。

发明内容
有鉴于此,本发明实施例所公开的配置规则检查方法中,提供了一种提高配置规则检查效率的方法。
本发明实施例所公开的配置规则检查装置中,提供了一种提高配置规则检查效率的装置。
为达到上述目的,本发明实施例的技术方案具体是这样实现的一种配置规则检查方法,该方法将被管理对象之间的约束关系分为三种对象自身的内部约束、不同类对象间的关系约束和同类对象间的关系约束;在对象发生配置变更时,对所述对象自身的内部约束执行不变式检查;在被依赖者的至少一个对象实例发生配置变更时,由依赖者或被依赖者中的一方对所述不同类对象间的关系约束执行不变式检查。
一种配置规则检查装置,该装置包括内部约束检查模块和不同类对象间的关系约束检查模块;所述内部约束检查模块,用于在对象发生配置变更时,对所述对象自身的内部约束执行不变式检查;所述不同类对象间的关系约束检查模块,用于在被依赖者的至少一个对象实例发生配置变更时,对所述不同类对象间的关系约束执行不变式检查。
由上述技术方案可见,本发明实施例的通过对约束关系进行分类,并通过定义配置依赖关系,使得每次配置变更之后,配置规则检查仅局限在存在配置依赖关系的对象关系上,避免了对模型中所有对象的遍历检查。并且,通过约定实现配置依赖关系检查的执行归属,避免了存在依赖关系的两个对象重复检查同一个依赖关系,提高了配置规则检查的效率。


图1为本发明实施例中对象之间的配置依赖关系模型示意图。
图2为本发明实施例中对对象A的配置变更操作进行不变式检查的执行流程示意图。
图3为本发明实施例中对对象B的配置变更操作进行不变式检查的执行流程示意图。
图4为本发明实施例中配置规则检查装置的组成结构示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
本发明主要针对现有基于不变式的配置规则检查方案,提出提高配置规则检查效率的配置规则检查方法。
按照OCL的定义,对象不变式是指对同类所有对象实例在任意时刻都必需满足的约束,也可以理解为对象在整个生命周期都必须满足的规则。
如果不考虑检查效率,遵循对象不变式的概念,一种最简单通用的方式就是完成任意配置操作之后,都将网元中所有配置对象的不变式检查执行一遍,用伪码表示为如下形式for(each对象in配置模型){执行不变式检查;if(检查失败)return配置操作失败;}return配置操作成功;若假设网元已经创建的对象数是10000个,每个对象的不变式有5条,每条不变式的检查执行时间平均为0.1ms(假设对象模型的所有数据存放在数据库中,并且使用性能最高的内存数据库,即索引和数据全部在内存中,不需要访问硬盘,0.1ms为从10000条记录中找到和查询条件匹配的一条记录的时间),那么每个修改对象模型的操作仅为了执行规则检查需要消耗5s。而由于网元的大量数据更新一般会影响或中断业务,用户对该过程有较高的性能要求,例如在基站系统中,要求网元每秒能够执行30条以上的配置操作(单条配置操作是对一个配置对象的增删改操作),上述方式中,每个修改对象模型的操作仅为了执行规则检查就需要消耗5s,远远达不到每秒执行30条以上操作的性能需求。
配置规则检查就是检查用户对配置对象的配置变更,保证所作的配置变更符合各类对象之间的约束关系。为了提高配置规则检查的效率,并保证配置规则检查能够全面覆盖所有约束关系,本发明在分析被管理对象(MO)配置模型的基础上,将MO之间的约束关系,即不变式分成了三类,并根据这三类约束关系的不同特点采取了不同的不变式检查方式。三类约束关系的定义如下1、对象自身的内部约束这种约束关系是某个对象实例自身的内部约束关系。例如,对象属性的取值范围、对象内不同属性之间的约束关系等。
2、不同类对象间的关系约束这种约束关系是存在配置依赖关系的不同类型对象之间的关联约束关系。例如,对象A依赖于对象B的属性必须满足某些条件、对象A依赖于对象B的个数限制等。
3、同类对象间的关系约束这种约束关系是相同类型、不同对象实例之间的约束关系。例如。同类型对象的最大实例个数、同类型对象的某种属性必须唯一等。
对于上述对象自身的内部约束,在对象发生配置变更时执行对象自身的不变式检查。由于对象自身的不变式检查只涉及对象自身属性的约束检查,不需要访问对象配置模型的其他数据(即不需要访问数据库),执行效率较高,因此,本发明技术方案优化这类约束关系的执行时机所取得的优化效果是显而易见的。这里,配置变更是指对对象进行增加、删除或修改的操作。
对于上述不同类对象间的关系约束,在被依赖者的至少一个对象实例发生配置变更时,由依赖者或被依赖者中的一方对所述不同类对象间的关系约束执行不变式检查。
图1为本发明实施例中对象之间的配置依赖关系模型示意图。参见图1,A、B、C表示三类MO,图中的单向箭头表示配置依赖关系。配置依赖关系的语义为若A配置依赖于B,则说明当B的一个或多个对象实例发生配置变更时,可能破坏A与B之间的配置约束关系;此时,除了对B进行对象自身的内部约束不变式检查之外,还必需对A和B的不同类对象间的关系约束进行检查,这样才能保证整个配置模型的一致性。
为了实现对图1所示不同类对象间的关系约束进行高效率的配置规则检查,本发明约定当两个对象之间存在一个配置依赖时,由依赖者或被依赖中中的一方对该配置依赖关系进行不变式检查。该约定能够有效避免依赖者和被依赖者双方都执行重复的检查。
同时,为方便起见,本发明为每一个配置依赖关系指定一个名字,约定为<source><target>。例如,B依赖于A的配置依赖关系,在图中表示为B指向A的箭头,命名为ba。按照上面约定其配置依赖关系的不变式检查可以由B实现,也可以由A实现。
基于上述对约束关系的分类,以及图1所示对配置依赖关系的定义,可以为每一个MO定义如下所示的三个不变式检查接口以实现配置规则检查class MOItf{… …bool inner_invarant();//对象自身的内部约束检查bool asso_invarant(ASSO_NAME asso);//不同类对象间的关系约束检查bool class_invarant();//同类对象间的关系约束检查… …}上述伪代码中,ASSO_NAME表示关联关系名,例如,图1所示ab、ba和ca即为关联关系名。
下面以图1所示对象模型和配置依赖关系为例对本发明执行对象不变式检查的时机进行举例说明。
图2为本发明实施例中对对象A的配置变更操作进行不变式检查的执行流程示意图。参见图2,ENV表示执行环境,MIB为管理信息库,属性列表表示配置变更所涉及的属性列表,所有对MO的配置变更操作都表现为ENV对MIB的操作,这些配置变更操作包括如图所示的增加(Create)、修改(Modify)和删除(Delete)。
对图2所示执行流程的说明如下第1步ENV向MIB下发针对对象A的配置变更,这些配置变更可能包括对对象A某些属性的增加、删除或修改。
第2步MIB对对象A进行配置变更。
第3步MIB通知对象A执行对象自身的内部约束检查。
本步骤中,可以使用上述伪代码中的接口函数inner_invarant()实现对象自身的内部约束检查。
第4步由于对象B配置依赖于对象A,因此,本步骤中需要对象A与对象B之间的不同类对象间的关系约束检查。如前所述,这个检查可以由依赖者实现,也可以由被依赖者实现,这里,以由依赖者实现为例,因此,MIB通知对象B执行对象A与对象B之间的不同类对象间的关系约束检查。
本步骤中,可以使用上述伪代码中的接口函数asso_invarant()实现对象自身的内部约束检查,参数为ba。
第5步本步骤与第4步类似,由于对象C配置依赖于对象A,因此,MIB通知对象C执行对象A与对象C之间的不同类对象间的关系约束检查。
至此,结束图2所示不变式检查的执行流程。
按照与图2相同的思想,可以得到如图3所示的对对象B的配置变更操作进行不变式检查的执行流程示意图。对图3所示流程的说明如下第1步ENV向MIB下发针对对象B的配置变更,这些配置变更可能包括对对象B某些属性的增加、删除或修改。
第2步MIB对对象B进行配置变更。
第3步MIB通知对象B执行对象自身的内部约束检查。
本步骤中,可以使用上述伪代码中的接口函数inner_invarant()实现对象自身的内部约束检查。
第4步由于对象A配置依赖于对象B,因此,MIB通知对象A执行对象A与对象B之间的不同类对象间的关系约束检查。
本步骤中,可以使用上述伪代码中的接口函数asso_invarant()实现对象自身的内部约束检查,参数为ab。
至此,结束图3所示不变式检查的执行流程。
下面对本发明配置规则检查装置的具体实施方式
进行说明。
图4为本发明实施例中配置规则检查装置的组成结构示意图。参见图4,该装置包括内部约束检查模块401和不同类对象间的关系约束检查模块402。
其中,内部约束检查模块401,用于在对象发生配置变更时,对对象自身的内部约束执行不变式检查;不同类对象间的关系约束检查模块402,用于在被依赖者的至少一个对象实例发生配置变更时,对不同类对象间的关系约束执行不变式检查。
在图4所示装置中还可以进一步包括同类对象间的关系约束模块,用于对同类对象间的关系约束进行不变式检查。
由上述实施例可见,本发明实施例通过对约束关系进行分类,并通过定义配置依赖关系,使得每次配置变更之后,配置规则检查仅局限在存在配置依赖关系的对象关系上,避免了对模型中所有对象的遍历检查。并且,通过约定实现配置依赖关系检查的执行归属,避免了存在依赖关系的两个对象重复检查同一个依赖关系,提高了配置规则检查的效率。
下面以图1所示配置依赖关系为例,对比说明本发明技术方案与现有配置规则检查方法的执行效率。
假设为A、B和C每个类型各创建2个对象,采用现有技术方案所需的配置规则检查次数如表1所示

表1按照本发明技术方案,根据不变式类型和配置依赖关系对配置规则检查方案进行优化之后,所需的配置规则检查次数如表2所示

表2可见,本发明技术方案对减少配置规则检查次数的优化效率是非常明显的,特别是当系统中的对象类型个数和对象实例个数增加时,本发明技术方案与现有技术方案的差距将迅速上升。将一个网元的配置对象类型和实例个数参数化,可以通过公式看出优化前后的效率比。
假设对象类型个数为M,当前所有类型对象实例个数为N,任意两个对象类型之间存在一个单向的配置依赖关系。此时模型内存在的依赖关系总数为M(M-1)/2,平均每个对象类型对外存在(M-1)/2个依赖关系,在此基础上执行单个对象的增加操作。
现有技术的执行次数为N+1..............................(自身不变式检查次数)+(N+1)M(M-1)/2............(每个对象检查时将对外关联关系检查一遍)=(N+1)(1+M(M-1)/2)=O(N*M2) (1)采用本发明技术方案优化之后的执行次数为1................................(自身不变式检查次数)+M/2............................(不同类对象间的关系约束检查次数)=1+M/2=O(M) (2)上述式子中,O()表示时间复杂度。由(1)式和(2)式可见,采用本发明技术方案优化后,配置规则检查的时间复杂度降低了N*M倍。在一个典型网元系统中,可能M=100,N=10000甚至更多,这种效率提升将是非常明显的。
由上述分析可见,本发明技术方案通过区分不变式的类型,定义配置依赖关系,并根据各类不变式的不同特点为其确定不同的执行时机,极大地提高了基于不变式的配置规则检查的效率,解决了批量配置对性能的要求。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种配置规则检查方法,其特征在于,该方法将被管理对象之间的约束关系分为三种对象自身的内部约束、不同类对象间的关系约束和同类对象间的关系约束;在对象发生配置变更时,对所述对象自身的内部约束执行不变式检查;在被依赖者的至少一个对象实例发生配置变更时,由依赖者或被依赖者中的一方对所述不同类对象间的关系约束执行不变式检查。
2.根据权利要求1所述的方法,其特征在于,所述对象自身的内部约束为对象实例自身的内部约束关系。
3.根据权利要求1所述的方法,其特征在于,所述不同类对象间的关系约束为存在配置依赖关系的不同类型对象之间的关联约束关系。
4.根据权利要求1所述的方法,其特征在于,所述同类对象间的关系约束为相同类型、不同对象实例之间的约束关系。
5.根据权利要求3所述的方法,其特征在于,所述配置依赖关系表示当被依赖者的至少一个对象实例发生配置变更时,对被依赖者进行对象自身的内部约束执行不变式检查,并对所述被依赖者与依赖者之间的配置依赖关系执行不变式检查。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述配置变更为进行增加、删除或修改操作。
7.一种配置规则检查装置,其特征在于,该装置包括内部约束检查模块和不同类对象间的关系约束检查模块;所述内部约束检查模块,用于在对象发生配置变更时,对所述对象自身的内部约束执行不变式检查;所述不同类对象间的关系约束检查模块,用于在被依赖者的至少一个对象实例发生配置变更时,对所述不同类对象间的关系约束执行不变式检查。
8.根据权利要求7所述的装置,其特征在于,所述装置进一步包括同类对象间的关系约束模块;所述同类对象间的关系约束模块,用于对同类对象间的关系约束进行不变式检查。
9.根据权利要求7或8所述的装置,其特征在于,所述配置变更为进行增加、删除或修改操作。
全文摘要
本发明实施例中公开了一种配置规则检查方法,该方法将被管理对象之间的约束关系分为三种对象自身的内部约束、不同类对象间的关系约束和同类对象间的关系约束;在对象发生配置变更时,对所述对象自身的内部约束执行不变式检查;在被依赖者的至少一个对象实例发生配置变更时,由依赖者或被依赖者中的一方对所述不同类对象间的关系约束执行不变式检查。本发明实施例中还公开了一种配置规则检查装置。应用本发明能够极大地提高基于不变式的配置规则检查的效率,解决批量配置对性能的要求。
文档编号H04L29/06GK101013966SQ20071008010
公开日2007年8月8日 申请日期2007年2月9日 优先权日2007年2月9日
发明者郑铭, 陈春媛 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1