一种基于简单网管协议代理多变量分组设置方法转让专利

申请号 : CN200710090802.6

文献号 : CN101282234B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 叶旭光倪沈柳

申请人 : 中兴通讯股份有限公司

摘要 :

本发明提出了一种基于简单网管协议代理多变量分组设置方法,针对现有技术采用遍历设置MIB库造成的低效问题而发明,包括:形成简单网管协议代理管理信息库数据结构,当收到SNMP报文时将报文中变量分组,将具有相同实例处理方法的变量分为一组,并将每组变量存储在一链表中。本发明提出的方法可以将相同组的变量使用相同的实例处理方法一次设置完毕,极大的提高了对MIB库进行设置的效率,缩短了处理流程。

权利要求 :

1.一种基于简单网管协议代理多变量分组设置方法,包括:

步骤1、将管理信息库进行模块分类登记,形成简单网管协议代理管理信息库数据结构,该数据结构至少包括对象的基本信息、对象的模块信息、对象的索引信息、对象实例的方法,其中模块内每个表中的所有对象具有相同的实例处理方法;

步骤2、动态形成具有相同实例处理方法的所有对象的关键信息表,该关键信息表至少包括每一对象的索引信息、对象在模块内的编号、对象在结构中的编号、对象的类型、对象的值域大小、对象的名称;

步骤3、当收到简单网管协议报文时解析该报文,根据报文中每一变量的对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息;

步骤4、将上述报文中的每一变量标识为未处理状态,并将所有变量的数据结构信息保存在一链表结构中;

步骤5,对标识为未处理状态的变量进行分组,将具有相同实例处理方法的变量分为一组,并将每组变量存储在一链表中,用这组变量的实例处理方法来处理这组变量的链表结构信息,进行分组设置操作,本步骤具体包括:步骤51、取变量体中第一个未处理变量,动态申请一个链表结点来保存变量的管理信息库结构信息;

步骤52、读取下一变量,判断该变量的实例处理方法是否与步骤51中的第一个未处理变量相同,如果相同则再动态申请一链表结点以保存该变量的管理信息库结构信息,并将该变量标识为已处理,并将该结点链接到该步骤51的链表结点之后;如果不相同,则进入步骤53;

步骤53、判断当前变量是否为变量体末,如果是则进入步骤54,否则返回步骤52;

步骤54、当前组的实例处理方法中,采用结构化技术利用对象的关键信息表将传入的这组链表形式表达的变量转换成结构形式表达,调用下层设置接口,将这组变量的结构数据作为入参完成对这组变量的设置;

步骤55、判断是否还有变量标识为未处理,如果是则进入步骤51,否则执行步骤6;

步骤6、判断步骤5中的分组设置是否成功,如果有一组设置失败,则向简单网管协议管理站返回设置失败响应;如果全部分组设置成功,则向简单网管协议管理站返回设置成功响应。

2.根据权利要求1所述的一种基于简单网管协议代理多变量分组设置方法,其特征在于,上述步骤3具体为:步骤31、接收简单网管协议管理站发出的设置命令原语报文后,解析报文,检查变量体中每个变量的合法性,如果检查出错,直接返回出错信息,步骤结束;如果检查通过,进入步骤32;

步骤32、根据对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息,如果获取失败,直接返回出错信息,步骤结束;如果获取成功,则进入步骤4。

说明书 :

一种基于简单网管协议代理多变量分组设置方法

技术领域

[0001] 本发明涉及一种设置方法,特别涉及一种基于简单网管协议(SimpleNetwork Management Protocol,以下简称SNMP)代理多变量分组设置方法。

背景技术

[0002] SNMP是目前TCP/IP网络中应用最为广泛的网络管理协议,SNMP的基本管理模式为管理者-代理(Manager-Agent)模式,管理者是指发布网管命令、接收命令响应以及告警的一段程序代码,提供网管界面;而代理则是指具体执行网管命令相应动作并反馈动作执行结果或主动发起告警的一段程序代码。设置操作时,管理者采用SNMP协议提供的Set-Request设置命令原语向代理发送网管命令。在Set-Request命令原语中,一次可以绑定多个设置对象,绑定的这些设置对象被称为变量体。SNMP代理程序接收网管命令,根据其中绑定的设置对象,查找它所维护的管理信息库(Management Information Base-MIB),设置对应对象的数据值,以命令响应方式上报给SNMP管理者。因此,SNMP代理的一个重要工作就是根据网管命令,查询MIB库,设置对应的对象值。
[0003] SNMP代理处理网管命令,传统做法是在完成SNMP设置报文的解析工作后,按照变量体中变量顺序逐个设置对象的值。这种遍历设置方法简单,但是一个严重的缺陷是设置过程繁琐,效率低。实际上,在一次SNMP管理者发起设置操作中,变量体中往往有多个变量的设置方法一样,都是对同一个数据源设置相同行的数据,比如多次访问同一张数据表更新一条记录。显然,逐个设置这些对象值,就会重复执行相同的动作,不仅效率低而且浪费系统资源。

发明内容

[0004] 针对现有技术中存在的缺陷和不足,本发明的目的是提出一种基于简单网管协议代理多变量分组设置方法,能够快速的对MIB库进行设置。
[0005] 为了达到上述目的,本发明提出了一种基于简单网管协议代理多变量分组设置方法,包括:
[0006] 步骤1、将管理信息库进行模块分类等级,形成简单网管协议代理管理信息库数据结构,该数据结构至少包括对象的基本信息、对象的模块信息、对象的索引信息、对象实例的方法,其中模块内每个表中的所有对象具有相同的实例处理方法;
[0007] 步骤2、动态形成具有相同实例处理方法的所有对象的关键信息表,该关键信息表至少包括每一对象的索引信息、对象在模块内的编号、对象在结构中的编号、对象的类型、对象的值域大小、对象的名称;
[0008] 步骤3、当收到简单网管协议报文时解析该报文,根据报文中每一变量的对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息;
[0009] 步骤4、将上述报文中的每一变量标识为未处理状态,并将所有变量的数据结构信息保存在一链表结构中;
[0010] 步骤5、对标识为未处理状态的变量进行分组,将具有相同实例处理方法的变量分为一组,并将每组变量存储在一链表中;
[0011] 步骤6、判断步骤5中的分组设置是否成功,如果有一组设置失败,则向简单网管协议管理站返回设置失败响应;如果全部分组设置成功,则向简单网管协议管理站返回设置成功响应。
[0012] 其中,上述步骤5具体为:
[0013] 步骤51、取变量体中第一个未处理变量,动态申请一个链表结点来保存变量的管理信息库结构信息;
[0014] 步骤52、读取下一变量,判断该变量的实例处理方法是否与步骤51中的第一个未处理变量形同,如果相同则再动态申请一链表节点以保存该变量的管理信息库结构信息,并将该变量标识为已处理,并将该结点链接到该步骤51的链表的尾部;如果不相同,则进入步骤53;
[0015] 步骤53、判断当前变量是否为变量体末,如果是则进入步骤54,否则返回步骤52;
[0016] 步骤54、当前组的实例处理方法中,采用结构化技术利用对象的关键信息表将传入的这组链表形式表达的变量转换成结构形式表达,调用下层设置接口,将这组变量的结构数据作为入参完成对这组变量的设置;
[0017] 步骤55、判断是否还有变量标识为未处理,如果是则进入步骤51,否则步骤结束。
[0018] 其中,上述步骤3具体为:
[0019] 步骤31、接收简单网管协议管理站发出的设置命令原语报文后,解析报文,检查变量体中每个变量的合法性,如果检查出错,直接返回出错信息,步骤结束;如果检查通过,进入步骤32;
[0020] 步骤32、对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息,如果获取失败,直接返回出错信息,步骤结束;如果获取成功,则进入步骤4。
[0021] 本发明提出了一种基于简单网管协议代理多变量分组设置方法。现有技术中,及时对同一个数据源设置相同行的数据,也必须按照变量体中变量顺序逐个设置对象的值。这种遍历设置的方式过程繁琐,效率低。本发明通过将管理信息库进行模块分类等级,形成简单网管协议代理管理信息库数据结构,并将SNMP报文中的所有变量按照实例处理方法分组,这样可以将相同组的变量使用相同的实例处理方法一次设置完毕,极大的提高了对MIB库进行设置的效率,缩短了处理流程。
[0022] 下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。

附图说明

[0023] 图1为本发明优选实施例的流程图;
[0024] 图2为本发明优选实施例中设置命令原语(Set-Request)的处理流程图。

具体实施方式

[0025] 下面结合附图对本发明做进一步说明。
[0026] 本发明优选实施例流程如图1所示,包括:
[0027] 步骤一,采用模块化管理技术将MIB文件进行模块分类登记,形成了简单网管协议(SNMP)代理管理信息库(MIB库)数据结构,该数据结构包括对象的基本信息、对象的模块信息、对象的索引对象信息以及对象实例的方法。模块可以包含一个或多个MIB文件,模块内部的所有标量对象拥有相同的实例处理方法,模块内部每个表中的所有对象也都拥有相同的实例处理方法;
[0028] 步骤二,采用结构化技术,根据以上的MIB库数据结构信息,动态形成相同实例处理方法的所有对象的关键信息表,该信息表包括了对象的索引信息、对象模块内编号、对象在结构中的编号、对象的类型、对象的值域大小、对象的名称等信息;
[0029] 步骤三,解析SNMP报文,报文中的每个变量根据对象标识符(OID)查询管理信息库(MIB库),获取对应的MIB库数据结构信息,设定每个变量为未处理状态,并把所有变量的信息赋值给一个链表结构进行保存;
[0030] 步骤四,根据变量的实例处理方法是否相同来对未处理的变量进行分组,分组形成的一组变量也用同样的一个链表结构进行保存,并作为这组变量实例处理方法的一个入参进行设置;设置操作执行后,标记未分组前链表结构信息中这组的变量为已处理状态,并将设置操作返回的成功或失败的具体信息记录到一个与组对应的一个本地结构中进行保存。如果在操作中有一组变量设置返回失败了,还要标记这次SNMP报文的设置为失败。
[0031] 步骤五,在当前组的实例处理方法中,首先采用结构化技术利用对象的关键信息表将传入的这组链表形式表达的变量转换成结构形式表达,接着调用下层设置接口,将这组变量的结构数据作为入参完成对这组变量的设置。
[0032] 步骤六,重复步骤四和步骤五直至所有变量工作状态为已处理状态。
[0033] 在具体实施过程中,SNMP代理MIB库数据结构与对象的关键信息表起到核心的设计作用,下面做一下说明:
[0034] MIB库数据结构:
[0035] 每个MIB库节点的结构信息如表1所示:
[0036]成员名称 类型 长度 说明
localId USHORT 模块内部的对象标识
lastOidPrefixSubIdUSHORT 对象OID的最后一个值
size ULONG 对象数据值的长度
min_range ULONG 数值型对象取值的最小值
max_range ULONG 数值型对象取值的最大值
type ULONG 对象的类型
access ULONG 对象的访问权限
flags ULONG 对象的属性标识
pObjHandler 对象的实例处理方法
*
pAltObjName char 对象的替代名称字符串
pObjName char* 对象的名称字符串
*
pNext NODE 下一个结点指针
[0037] 表1
[0038] 对象的关键信息表结构:
[0039] 每个对象的关键信息表结构如表2所示
[0040]成员名称 类型 长度 说明
idxFlag BTYE 索引标识
[0041]localId LONG 模块内对象标识值
mask BTYE 对象在结构中的位置标识
type BTYE 数据类型
size ULONG 对象数据值的长度
flag BTYE 对象的属性标识
caseConvert BTYE 大小写转换标识
name BTYE 101 对象的名称字符串
[0042] 具体实施中,MIB库是根据MIB文件通过工具来自动生成的,对象的关键信息表与实例处理方法相同的一组变量一一对应,是根据MIB库数据结构信息在程序初始化时自动生成的。
[0043] 如图1所示的本发明优选实施例中,步骤三至步骤六为对设置命令原语(Set-Request)的处理流程,该流程可以如图2所示,具体为:
[0044] 步骤a,接收简单网管协议(SNMP)管理站发出的设置命令原语(Set-Request)报文,解析报文,检查变量体中每个变量的合法性,如果检查出错,直接返回出错信息;检查通过,进入步骤b;
[0045] 步骤b,根据每个变量的OID,获取对应的MIB库数据结构信息,如果获取失败,直接返回出错信息;获取成功,进入步骤c;
[0046] 步骤c,设置变量体中所有变量的状态为未处理状态;
[0047] 步骤d,取变量体中第一个未处理变量,动态申请一个链表结点来保存变量MIB库结构信息;
[0048] 步骤e,查找变量体后续未处理变量,判断该变量的实例处理方法是否和第一个未处理变量相同,如果相同,再动态申请一个链表结点来保存该变量MIB库结构信息,并把这个结点链接到前一个结点后面;
[0049] 步骤f,重复步骤e,直到变量体末,最终形成分组之后的同组变量的链表结构信息;
[0050] 步骤g,用这组变量的实例处理方法来处理这组变量的链表结构信息,进行分组设置操作;
[0051] 步骤h,不管分组设置成功还是失败,都保存分组的设置返回结果,同时将变量体中的这组变量标记为已处理状态,并提供私有MIB接口以供SNMP管理站来获取设置操作的返回信息;
[0052] 步骤i,重复步骤d、e、f、g、h,直至变量体中的每个变量状态都为已处理状态;
[0053] 步骤j,多变量分组设置完成之后,如果有一组设置失败,则返回设置失败响应给简单网管协议(SNMP)管理站,只有全部分组设置成功,才返回设置成功响应给简单网管协议(SNMP)管理站。
[0054] 当然,本发明还可有其他实施例,在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。