发明内容
本发明的发明目的是提供一种利用设置标准数据配置接口对通讯设备进行数据配置的方法及系统,其数据接收方处理方便,操作简单,扩展性好,易维护
为了实现上述目的,本发明提供了一种对通信设备进行数据配置的方法,主要包括如下步骤:配置工具通过数据接口向配置数据最终目标模块发出配置数据流,所述配置数据最终目标模块执行配置指令并将含有处理结果的数据流通过所述数据接口返回给配置工具,所述数据流通过数据接口以公用信息包的格式传输;其特点在于:设置一个统一标准的配置数据格式,将由多个配置工具发出的配置数据流统一转化成所述标准配置数据格式,再将采用标准格式的配置数据流发给多个配置数据最终目标模块;所述配置数据最终目标模块的处理结果也经所述标准配置数据格式转换后返回给所述配置工具。
上述数据配置的方法,其特点在于:所述标准的配置数据格式是标准CMO格式,所述标准CMO格式按如下方法生成:根据配置数据最终目标模块定义配置管理对象CMO,将配置管理功能以配置数据项的形式转换成对CMO的标准操作。
上述数据配置的方法,其特点在于:所述CMO是按如步骤定义:
(1)确认所述配置数据最终目标模块已有的标准MIB定义;
(2)将标准MIB库中的每一个叶节点都定义成一个CMO,并设定所述叶节点具有相同的模块号;
(3)令属于同一窗体的叶节点定义成的CMO具有相同的表号;
(4)令CMO在窗体中的索引由叶节点在MIB树中的排列顺序决定。
上述数据配置的方法,其特点在于:所述CMO是按如方法定义:
(1)列出配置功能所需的每一个参数,确认其在标准MIB中不存在定义;
(2)给所述参数定义CMO,并将所述CMO具有与MIB定义CMO相同的模块号和表号。
(3)将多个配置参数组成窗体,并设置Status状态CMO定义,将所述Status状态CMO与同窗体中的其它CMO具有相同的模块号和表号。
上述数据配置的方法,其特点在于:同一个配置数据项可由多个不同类型的CMO进行表达。
上述数据配置的方法,其特点在于:非表型变量的表号选择可有如下两种方法:
(1)每个配置数据项只占用一个表号,并根据表号来确定CMO的配置功能;
(2)多个配置数据项共享一个表号,并根据CMO在表中的索引来确定配置的功能。
上述数据配置的方法,其特点在于:对配置工具的参数定义是以CMO为基础,并建立有所述参数与CMO之间的映像关系,每个CMO都由一个按指定规则生成的数值来唯一标识,所述标识为OID。
为了更好地实现上述发明目的,本发明还提供了一种对通讯设备进行数据配置的系统,主要由配置工具层和配置数据层组成,所述配置工具层与所述配置数据层之间设置有交互通讯的数据通讯接口;其特征点在于:在所述配置工具层与所述配置数据层之间还设置一个虚拟配置平面,所述配置平面提供一个统一标准的数据格式,来自所述配置工具层与所述配置数据层的交互数据通过所述配置平面被转换成所述统一标准的数据格式。
上述的数据配置的系统,其特点在于:所述配置平面是一个能够提供配置管理对象CMO的定义规则及其标准的操作程序的配置接口。
上述的数据配置的系统,其特点在于:所述配置工具层可以是命令行终端用户、网管用户、数据库管理用户。
采用上述方法和系统,可以克服现有技术中存在的问题。在本发明的主要构思中,设备配置平面层是配置管理的核心,它定义了配置工具层和配置数据层进行交互的一些规则和方法。
具体实施方式
下面结合附图进一步说明本发明的具体实施方法和系统
在附图1中,对通讯设备进行数据配置系统主要由配置工具层1和配置数据层3组成,在配置工具层1中,命令行终端用户、网管用户、数据库管理用户分别通过数据接口向数据配置层3发出配置数据流2,数据配置层3由多个配置数据最终目标模块4组成,配置数据最终目标模块4接收配置数据流2后执行配置指令并将配置处理结果返回给配置工具层1。
在附图2中,本发明对通讯设备进行数据配置的系统主要由配置工具层1、配置平面层5和配置数据层3组成,在配置工具层1中,配置工具:命令行终端用户、网管用户、数据库管理用户分别通过数据接口向配置平面层5发出配置数据流2,配置平面层5提供标准配置数据格式,配置工具层1中的各配置工具必须按指定的规则将内部数据转化成统一格式,再向下传递。配置数据最终目标模块4接收配置数据流2后执行配置指令并将配置处理结果返回给配置工具层1。配置平面层5实现的主要功能包括:提供配置管理对象(CMO,Config Management Object的缩写)的定义规则;提供配置工具层1到配置数据层3的通信接口。
在图3中,本发明对通讯设备进行数据配置的方法主要包括如下三个工作内容:各配置数据的目标模块预备工作I、配置工具打包与配置管理平面消息包下发工作II、各配置数据的目标模块执行配置III。
在图2和图3中,本发明设置的配置管理平面的工作流程如下:
1)根据各配置数据的目标模块定义CMO
2)各配置数据的目标模块向配置平面注册配置数据处理方式
3)各配置工具,如命令行或网管调用配置平面的函数,组织成配置平面的消息包格式
4)配置管理平面调用各配置数据的目标模块向配置管理平面注册配置数据处理方式,对消息包处理
5)各配置数据的目标模块对消息包中的CMO进行处理
6)配置管理平面将各配置数据的目标模块的处理结果返回给配置工具
本发明设置的配置平面层5是配置管理的核心层次,它定义了配置工具层1和配置数据层3进行交互的一些规则和方法,配置平面层5是一个逻辑上的虚拟层次。
配置平面将所有的配置管理的功能的实现转化为对配置管理对象(CMO)的操作。配置管理对象(CMO)做为配置功能划分和配置数据管理的一个基本单位。
配置平面层5的主要功能是:提供配置管理对象(CMO,Config ManagementObject的缩写)的定义规则及其标准的操作方法;提供配置工具层1到配置数据层3的通信机制。
在本发明中,为了实现配置数据层3-套接口适用于不同配置工具的目标,需要完成以下两项工作:将配置功能转化为对配置管理对象的标准操作,即组织和定义CMO;配置工具层1利用已有的CMO信息,生成统一的配置消息。这需要有公共的配置消息处理接口,并要解决不同配置工具的配置数据项与CMO标识相互转换的问题。产品的配置功能是定义和划分CMO的基础,一个产品包含哪些功能可以从配置工具上得到体现,在本发明的实施例中,配置工具主要是网管和命令行。
任何一种配置管理功能都是对一些配置数据的操作,在本发明中,把完成某个特定的功能所操作的每一个配置数据,称为一个配置管理对象,简称为CMO(ConfigManagement Object)。将配置数据的操作进行分类后,每一项配置管理功能都可抽象成配置数据项的标准操作(Set、Get、Get Next、Get Bulk)之一。
下面以通讯设备中路由器的路由表配置功能为例,进一步说明CMO的组织方法。通过分析配置工具输入、输出参数,可以得知路由表所需数据如表1所示:
表1 配置路由表需要的参数
目的地 | 屏蔽 |
路由协议 |
优先级 |
度量值 | 下一跳 | 转发接口 | 属性 |
127.0.0.0.0 |
255.255.255.0 | static | 0 | 0 | 127.0.0.1 |
127.0.0.1LOOP路由 | |
138.102.128.0 | 255.255.0.0 | direct | 0 | 0 |
138.102.129.7 |
138.102.129.7(以太网口) |
reject |
以上表格中的每一个配置数据项都可定义成一个CMO,但对于配置路由表来说,仅有这些可见的配置参数是不够的,上述配置参数并不能使路由模块明白是要添加还是删除路由表。为此本发明还专门定义了一个新的状态数据项,以标明对这些数据的操作是为了完成什么功能,这种状态标识定义成一个标准CMO,称为状态CMO。
由于上述多个CMO在逻辑上组成了一张表,并具有表格特征(能执行添加、删除表项动作),本发明将这一类CMO称为表型CMO,并约定:对表型CMO进行操作的配置功能必须增加状态CMO定义。
状态CMO的标准值如表2所示,当一项配置功能是为了完成创建或者修改操作时,状态CMO的值不在消息中发送。
表2 “Status”CMO标准设置值
创建或者修改 |
删除或恢复缺省值 |
激活 |
去激活 |
3 |
4 |
1 |
2 |
当然,应特别提出的是,尽管配置管理对象(CMO)大都直接对应于一个模块内部的某个数据表格或者变量,但在本发明中并不是直接以这些数据表格来确定CMO,其中主要原因是这些表格可能包含许多数据,但是可以提供给外部进行配置管理的数据并不多,而只有将可以进行配置和浏览的数据定义一个对应的CMO才有实际的意义。
与上述的路由表配置功能相比,还有另一类配置功能没有参数或者只需要一个配置数据项,例如reboot、write功能不需要如何参数,本发明对这种配置功能也要定义一个CMO,但这个CMO所标识的数据项只允许有一个固定的值。对于设置系统时间、设置路由器域名等功能则只需要一个参数,本发明将这个唯一的配置参数定义成CMO,这些CMO所标识的数据项可以设置成任意合法的值,如域名可以是任意字符串。本发明将此类CMO统称为非表型CMO。
在本发明的实施例中,以路由表的操作为例具体说明CMO的抽象方法,即CMO定义步骤。
步骤1:首先向网管人员查询是否存在本模块的标准MIB定义,如果有,则按如下步骤定义CMO。
标准MIB库中的每一个叶节点都要定义成一个CMO,它们具有相同的模块号;
属于同一表的叶节点定义成的CMO具有相同的表号;
CMO在表中的索引由叶节点在MIB树中排列顺序决定。
IP模块的标准MIB已经在RFC1213中定义,IP路由表是IP表的第0x15号子表,IP路由表包含的叶节点定义如下所示,根据这些叶节点定义的CMO具有相同的模块号、表号:
ipRouteDest 目的IP位元址, CMO 索引:0x1
ipRouteIfIndex 转发接口索引, CMO 索引:0x2
ipRouteMetric1 路由度量值, CMO 索引:0x3
ipRouteMetric2 备份路由度量值 CMO 索引:0x4
ipRouteMetric3 备份路由度量值 CMO 索引:0x5
ipRouteMetric4 备份路由度量值 CMO 索引:0x6
ipRouteNextHop 下一跳IP位元址 CMO 索引:0x7
ipRouteType 路由类型(直接、间接) CMO 索引:0x8
ipRouteProto 路由协议 CMO 索引:0x9
ipRouteAge 路由存在时间 CMO 索引:0xa
ipRouteMask 路由屏蔽 CMO 索引:0xb
ipRouteMetric5 备份路由度量值 CMO 索引:0xc
ipRouteInfo 路由信息 CMO 索引:0xd
假设IP模块的模块ID为:0x00230000,则根据MIB定义的IP路由表CMO OID为:
#define CMO_ipRouteDest 0x00231501
#define CMO_ipRouteIfIndex 0x00231502
#define CMO_ipRouteMetricl 0x00231503
#define CMO_ipRouteMetric2 0x00231504
#define CMO_ipRouteMetric3 0x00231505
#define CMO_ipRouteMetric4 0x00231506
#define CMO_ipRouteNextHop 0x00231507
#define CMO_ipRouteType 0x00231508
#define CMO_ipRouteProto 0x00231509
#define CMO_ipRouteAge 0x0023150a
#define CMO_ipRouteMask 0x0023150b
#define CMO_ipRouteMetric5 0x0023150c
#define CMO_ipRouteInfo 0x0023150d
CMO OID由一个ULONG类型数值表示,前两个字节是模块ID,第三个字节是表号,第四个字节代表CMO在表中的索引。
建立一条路由所需基本参数的CMO OID标识已经齐备,可以完成路由添加、参数查询等功能,但还不能实现路由的删除,路由优先级别设置、路由属性设置,为此需要定义私有的MIB和与此MIB相对应的CMO,私有MIB定义和管理可由网管或者SNMPAgent设计人员负责。
步骤2:为标准MIB不能实现的功能定义私有MIB和CMO。
列出配置功能所需的每一个参数,并在标准MIB中检查是否已经定义,如果没有,则对这些参数定义CMO,这些CMO具有和MIB定义CMO相同的模块号和表号。
如果多个配置参数组成窗体,则增加Status状态CMO定义,它与同表中的其它CMO具有相同的模块号和表号。
在定义私有MIB和CMO以前,还需要注意配置管理平面的约定:一项配置功能如果需要多个参数,则这些参数的CMO OID都具有相同的模块号和表号。这会影响不同情况下的CMO定义方法。为此应注意如下两点;第一,协议模块CMO定义有标准MIB可参考,但某项配置功能有部分参数在MIB中没有定义,则对这部分参数定义CMO时,其表号必须和标准MIB已定义CMO保持一致。例如下面说明的IP路由表的CMO定义就是一例。第二,协议模块没有标准MIB可参考,则可将一项配置功能所需参数都定义在同一张表中,其CMO表号可以任意选择,在定义时不要和其它已存在表号相冲突,否则会给协议模块的配置消息解析带来困难。
一条真正路由表除了上述标准MIB定义的参数以外,还应包括,路由优先级(ipRoutePref)、路由属性(ipRouteAttr)。由此本发明还增加了如下CMO定义:
#define CMO_ipRoutePref 0x0023150e
#define CMO_ipRouteAttr 0x0023150f
由于路由表是表型变量,则需要增加状态CMO来标识表的状态(添加、删除、激活、去激活)。
#define CMO_ipRouteStatus 0x00231510
步骤3:允许配置数据项引申,即允许同一个配置数据项由多个不同类型的CMO进行表达。确定最终应该定义多少个CMO。
再重新看一下表1,可以发现:配置数据项“屏蔽”,可以有两种表达方式:除了用标准点分格式表达以外,还可以用屏蔽长度表示。为此本发明对屏蔽长度也定义一个CMO。
#define CMO_ipRouteMaskLen 0x00231511
至此IP路由表的所有CMO定义已经完成,如表3所示:
表3 IP路由表CMO定义
CMO描述 |
CMO宏定义 |
CMO OID |
目的IP地址 |
CMO_ipRouteDest |
0x00231501 |
转发接口索引 |
CMO_ipRouteIfIndex |
0x00231502 |
路由度量信 |
CMO_ipRouteMetric1 |
0x00231503 |
备份路由度量值 |
CMO_ipRouteMetric2 |
0x00231504 |
备份路由度量值 |
CMO_ipRouteMetric3 |
0x00231505 |
备份路由度量值 |
CMO_ipRouteMetric4 |
0x00231506 |
下一跳IP地址 |
CMO_ipRouteNextHop |
0x00231507 |
路由类型(直接、间接) |
CMO_ipRouteType |
0x00231508 |
路由协议 |
CMO_ipRouteProto |
0x00231509 |
路由存在时间 |
CMO_ipRouteAge |
0x0023150a |
路由屏蔽 |
CMO_ipRouteMask |
0x0023150b |
备份路由度量值 |
CMO_ipRouteMetric5 |
0x0023150c |
路由信息 |
CMO_ipRouteInfo |
0x0023150d |
路由优先级 |
CMO_ipRoutePref |
0x0023150e |
路由属性(reject、blackhole) |
CMO_ipRouteAttr |
0x0023150f |
路由表状态 |
CMO_ipRouteStatus |
0x00231510 |
路由屏蔽长度 |
CMO_ipRouteMaskLen |
0x00231511 |
对于非表型CMO,只需定义一个CMO即可。
表4 系统重启动
CMO描述 |
CMO OID标识 |
允许值 |
系统重起标识 |
CMO_REBOOT |
1 |
表5 配置系统时间
CMO描述 |
类型 |
允许值 |
系统时间 |
CMO_SYSTIME |
任意合法时间 |
在本发明的实施例中,对非表型变量的表号选择可采用两种方法:第一种方法,每个配置数据项都占用一个表号,根据表号来确定此CMO的配置功能。第二种方法,多个配置数据项共享一个表号,根据CMO在表中的索引来确定配置功能。
在本发明的实施例中,本发明进一步利用CMO生成了统一的配置消息
在产品中实现一项配置功能,其需要的配置参数通常都是固定的,这些配置参数可以有不同的来源,包括命令行、网管、或者是数据库。为了将配置转化为对CMO的标准操作,这就需要所有配置工具的参数定义都要以CMO为基础,建立参数与CMO之间的映像关系。
每个CMO都由一个按指定规则生成的数值来唯一标识,简称为OID(ObjectIdentifier)。
命令行模块保存命令行参数与CMO标识之间的映像关系,并负责把参数与指定CMO标识相关联,然后利用配置平面提供的公用消息组装函数,将CMO OID和参数值组成一条配置消息。
对于网管来说,其配置数据项体现为MIB库中的Object对象的值,Object标识为SNMP标准点分格式地址,为了完成MIB Object点分地址到CMO标识的转换,需要由网管代理负责人编写一个同时包含SNMP Object标识和CMO OID的映像数据结构。当Agent任务接收到网管发送的配置消息时,通过搜索数据库,完成点分地址到CMO OID的转换。
从上面操作可以看出,每增加一种配置工具,就需要有一套参数到CMO的映像关系。这种映像属于配置工具的特性,不需要配置数据层负责。对于各配置数据层的模块来说,只需负责解析标准CMO格式的消息,并按消息要求完成特定操作即可,它不必看见配置工具的差别。
下面以路由配置功能进一步举例说明命令行和网管两种不同配置工具如何形成相同的配置消息。假设路由表配置功能经过抽象后形成CMO列表,如表3所示。
一、首先以命令行为例:
为了实现添加路由表,命令行定义了这样的命令:
ip route ip-address{mask/mask-length }{interface-name /gateway-address}
[preference preference-value][reject/blackhole]
路由模块为支持此条命令,需要向命令行模块按上述语法注册此命令,由注册函数标明每个命令参数和CMO OID之间的对应关系。
1、假设命令行输入为:ip route 10.10.11.11 255.255.0.0 20.20.30.30100经过命令行解析后可以得到各CMO OID对应的值为:
表6 命令行解析后OID与参数值的对应关系
CMO定义 |
参数值 |
OID标识 |
目的IP |
10.10.11.11 |
CMO_ipRouteDest |
屏蔽IP |
255.255.0.0 |
CMO_ipRouteMask |
下一跳IP |
20.20.30.30 |
CMO_ipRouteNextHop |
优先级 |
100 |
CMO_ipRoutePref |
2、命令行模块以OID标识和命令行输入值为参数,调用公用的消息组装函数,生成统一的配置消息发送给配置模块。
二、以网管增加一条路由表项为例进一步说明本发明的实施方案
由于网管配置数据项MIB Object是静态定义的,对于一个配置数据项有多种表达方式,分别定义多个CMO的情况下,MIB Object只能在多个CMO中选择其一,MIBObject的定义只能是CMO集合的一个子集。最后由MIB库编写人员形成MIB对象标识与CMO OID标识的对应数据结构,如表7所示:
表7 网管根据CMO定义得到的MIB Object标识与CMO标识的对应关系
配置数据项 |
数据类型 |
MIB对象标识 |
OID |
目的IP |
CMO_IPV4 |
1.3.6.1.4.1.2011.2.1.3.1.1.1 |
CMO_ipRouteDst |
屏蔽IP |
CMO_IPV4 |
1.3.6.1.4.1.2011.2.1.3.1.1.2 |
CMO_ipRouteMask |
路由协议 |
CMO_IPV4 |
1.3.6.1.4.1.2011.2.1.3.1.1.3 |
CMO_ipRouteProto |
下一跳IP |
CMO_IPV4 |
1.3.6.1.4.1.2011.2.1.3.1.1.4 |
CMO_ipRouteNextHop |
优先级 |
CMO_INTEGER |
1.3.6.1.4.1.2011.2.1.3.1.1.5 |
CMO_ipRoutePref |
度量值 |
CMO_INTEGER |
1.3.6.1.4.1.2011.2.1.3.1.1.6 |
CMO_ipRouteMetric1 |
路由属性 |
CMO_INTEGER |
1.3.6.1.4.1.2011.2.1.3. |
CMO_ipRouteAttr |
| |
1.1.7 | |
Status |
CMO_INTEGER |
1.3.6.1.4.1.2011.2.1.3.1.1.8 |
CMO_ipRouteStatus |
1、假设网管执行了与命令行:ip route 10.10.11.11 255.255.0.020.20.30.30 100一样的功能,当然在网管接口上主要以复选框、编辑框作为输入手段。执行此命令后,网管配置消息以SNMP报文的格式发送到路由器,报文主要内容如表8所示:
表8网管发送的配置消息报内容
MIB对象标识 |
数值 |
1.3.6.1.4.1.2011.2.1.3.1.1.1 |
10.10.11.11 |
1.3.6.1.4.1.2011.2.1.3.1.1.2 |
255.255.0.0 |
1.3.6.1.4.1.2011.2.1.3.1.1.4 |
20.20.30.30 |
1.3.6.1.4.1.2011.2.1.3.1.1.5 |
100 |
2、路由器上的Agent任务接收到此配置消息后,根据MIB对象标识在表7中查找,将MIB对象标识替换为CMO标识,最后得到如下的CMO OID与参数值的对应关系,如表9所示。
表9 网管命令解析后OID与参数值的对应关系
CMO定义 |
参数值 |
OID标识 |
目的IP |
10.10.11.11 |
CMO_ipRouteDest |
屏蔽IP |
255.255.0.0 |
CMO_ipRouteMask |
下一跳IP |
20.20.30.30 |
CMO_ipRouteNextHop |
优先级 |
100 |
CMO_ipRoutePref |
3、Agent任务与命令行模块一样调用公用的消息组装函数,以OID标识和参数值为参数,组装成统一的配置消息发送给配置模块。
从上面操作流程可以看出,通过引入CMO概念,不同配置工具的配置数据最终都转化为了标准的配置消息,配置平面层最核心的功能已经实现。
总之,本发明通过屏蔽配置数据的来源,不论配置数据是来自命令行、SNMPAGENT或者DB,各接收数据的模块只需要提供一套配置接口即可,数据接收方处理方便,容易扩展。
在不背离本发明主要技术方案和其构思实质特点的情况下,本发明的多种实施方案可在多种通讯设备中得到广泛应用。