CN101282234B - 一种基于简单网管协议代理多变量分组设置方法 - Google Patents
一种基于简单网管协议代理多变量分组设置方法 Download PDFInfo
- Publication number
- CN101282234B CN101282234B CN2007100908026A CN200710090802A CN101282234B CN 101282234 B CN101282234 B CN 101282234B CN 2007100908026 A CN2007100908026 A CN 2007100908026A CN 200710090802 A CN200710090802 A CN 200710090802A CN 101282234 B CN101282234 B CN 101282234B
- Authority
- CN
- China
- Prior art keywords
- variable
- information
- simple network
- group
- network management
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种基于简单网管协议代理多变量分组设置方法,针对现有技术采用遍历设置MIB库造成的低效问题而发明,包括:形成简单网管协议代理管理信息库数据结构,当收到SNMP报文时将报文中变量分组,将具有相同实例处理方法的变量分为一组,并将每组变量存储在一链表中。本发明提出的方法可以将相同组的变量使用相同的实例处理方法一次设置完毕,极大的提高了对MIB库进行设置的效率,缩短了处理流程。
Description
技术领域
本发明涉及一种设置方法,特别涉及一种基于简单网管协议(SimpleNetwork Management Protocol,以下简称SNMP)代理多变量分组设置方法。
背景技术
SNMP是目前TCP/IP网络中应用最为广泛的网络管理协议,SNMP的基本管理模式为管理者-代理(Manager-Agent)模式,管理者是指发布网管命令、接收命令响应以及告警的一段程序代码,提供网管界面;而代理则是指具体执行网管命令相应动作并反馈动作执行结果或主动发起告警的一段程序代码。设置操作时,管理者采用SNMP协议提供的Set-Request设置命令原语向代理发送网管命令。在Set-Request命令原语中,一次可以绑定多个设置对象,绑定的这些设置对象被称为变量体。SNMP代理程序接收网管命令,根据其中绑定的设置对象,查找它所维护的管理信息库(Management Information Base-MIB),设置对应对象的数据值,以命令响应方式上报给SNMP管理者。因此,SNMP代理的一个重要工作就是根据网管命令,查询MIB库,设置对应的对象值。
SNMP代理处理网管命令,传统做法是在完成SNMP设置报文的解析工作后,按照变量体中变量顺序逐个设置对象的值。这种遍历设置方法简单,但是一个严重的缺陷是设置过程繁琐,效率低。实际上,在一次SNMP管理者发起设置操作中,变量体中往往有多个变量的设置方法一样,都是对同一个数据源设置相同行的数据,比如多次访问同一张数据表更新一条记录。显然,逐个设置这些对象值,就会重复执行相同的动作,不仅效率低而且浪费系统资源。
发明内容
针对现有技术中存在的缺陷和不足,本发明的目的是提出一种基于简单网管协议代理多变量分组设置方法,能够快速的对MIB库进行设置。
为了达到上述目的,本发明提出了一种基于简单网管协议代理多变量分组设置方法,包括:
步骤1、将管理信息库进行模块分类等级,形成简单网管协议代理管理信息库数据结构,该数据结构至少包括对象的基本信息、对象的模块信息、对象的索引信息、对象实例的方法,其中模块内每个表中的所有对象具有相同的实例处理方法;
步骤2、动态形成具有相同实例处理方法的所有对象的关键信息表,该关键信息表至少包括每一对象的索引信息、对象在模块内的编号、对象在结构中的编号、对象的类型、对象的值域大小、对象的名称;
步骤3、当收到简单网管协议报文时解析该报文,根据报文中每一变量的对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息;
步骤4、将上述报文中的每一变量标识为未处理状态,并将所有变量的数据结构信息保存在一链表结构中;
步骤5、对标识为未处理状态的变量进行分组,将具有相同实例处理方法的变量分为一组,并将每组变量存储在一链表中;
步骤6、判断步骤5中的分组设置是否成功,如果有一组设置失败,则向简单网管协议管理站返回设置失败响应;如果全部分组设置成功,则向简单网管协议管理站返回设置成功响应。
其中,上述步骤5具体为:
步骤51、取变量体中第一个未处理变量,动态申请一个链表结点来保存变量的管理信息库结构信息;
步骤52、读取下一变量,判断该变量的实例处理方法是否与步骤51中的第一个未处理变量形同,如果相同则再动态申请一链表节点以保存该变量的管理信息库结构信息,并将该变量标识为已处理,并将该结点链接到该步骤51的链表的尾部;如果不相同,则进入步骤53;
步骤53、判断当前变量是否为变量体末,如果是则进入步骤54,否则返回步骤52;
步骤54、当前组的实例处理方法中,采用结构化技术利用对象的关键信息表将传入的这组链表形式表达的变量转换成结构形式表达,调用下层设置接口,将这组变量的结构数据作为入参完成对这组变量的设置;
步骤55、判断是否还有变量标识为未处理,如果是则进入步骤51,否则步骤结束。
其中,上述步骤3具体为:
步骤31、接收简单网管协议管理站发出的设置命令原语报文后,解析报文,检查变量体中每个变量的合法性,如果检查出错,直接返回出错信息,步骤结束;如果检查通过,进入步骤32;
步骤32、对象标识符查询管理信息库,获得每一变量对应的管理信息库数据结构信息,如果获取失败,直接返回出错信息,步骤结束;如果获取成功,则进入步骤4。
本发明提出了一种基于简单网管协议代理多变量分组设置方法。现有技术中,及时对同一个数据源设置相同行的数据,也必须按照变量体中变量顺序逐个设置对象的值。这种遍历设置的方式过程繁琐,效率低。本发明通过将管理信息库进行模块分类等级,形成简单网管协议代理管理信息库数据结构,并将SNMP报文中的所有变量按照实例处理方法分组,这样可以将相同组的变量使用相同的实例处理方法一次设置完毕,极大的提高了对MIB库进行设置的效率,缩短了处理流程。
下面结合附图,对本发明的具体实施方式作进一步的详细说明。对于所属技术领域的技术人员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
附图说明
图1为本发明优选实施例的流程图;
图2为本发明优选实施例中设置命令原语(Set-Request)的处理流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明优选实施例流程如图1所示,包括:
步骤一,采用模块化管理技术将MIB文件进行模块分类登记,形成了简单网管协议(SNMP)代理管理信息库(MIB库)数据结构,该数据结构包括对象的基本信息、对象的模块信息、对象的索引对象信息以及对象实例的方法。模块可以包含一个或多个MIB文件,模块内部的所有标量对象拥有相同的实例处理方法,模块内部每个表中的所有对象也都拥有相同的实例处理方法;
步骤二,采用结构化技术,根据以上的MIB库数据结构信息,动态形成相同实例处理方法的所有对象的关键信息表,该信息表包括了对象的索引信息、对象模块内编号、对象在结构中的编号、对象的类型、对象的值域大小、对象的名称等信息;
步骤三,解析SNMP报文,报文中的每个变量根据对象标识符(OID)查询管理信息库(MIB库),获取对应的MIB库数据结构信息,设定每个变量为未处理状态,并把所有变量的信息赋值给一个链表结构进行保存;
步骤四,根据变量的实例处理方法是否相同来对未处理的变量进行分组,分组形成的一组变量也用同样的一个链表结构进行保存,并作为这组变量实例处理方法的一个入参进行设置;设置操作执行后,标记未分组前链表结构信息中这组的变量为已处理状态,并将设置操作返回的成功或失败的具体信息记录到一个与组对应的一个本地结构中进行保存。如果在操作中有一组变量设置返回失败了,还要标记这次SNMP报文的设置为失败。
步骤五,在当前组的实例处理方法中,首先采用结构化技术利用对象的关键信息表将传入的这组链表形式表达的变量转换成结构形式表达,接着调用下层设置接口,将这组变量的结构数据作为入参完成对这组变量的设置。
步骤六,重复步骤四和步骤五直至所有变量工作状态为已处理状态。
在具体实施过程中,SNMP代理MIB库数据结构与对象的关键信息表起到核心的设计作用,下面做一下说明:
MIB库数据结构:
每个MIB库节点的结构信息如表1所示:
成员名称 | 类型 | 长度 | 说明 |
localId | USHORT | 模块内部的对象标识 | |
lastOidPrefixSubId | USHORT | 对象OID的最后一个值 | |
size | ULONG | 对象数据值的长度 | |
min_range | ULONG | 数值型对象取值的最小值 | |
max_range | ULONG | 数值型对象取值的最大值 | |
type | ULONG | 对象的类型 | |
access | ULONG | 对象的访问权限 | |
flags | ULONG | 对象的属性标识 | |
pObjHandler | 对象的实例处理方法 | ||
pAltObjName | char<sup>*</sup> | 对象的替代名称字符串 | |
pObjName | char<sup>*</sup> | 对象的名称字符串 | |
pNext | NODE<sup>*</sup> | 下一个结点指针 |
表1
对象的关键信息表结构:
每个对象的关键信息表结构如表2所示
成员名称 | 类型 | 长度 | 说明 |
idxFlag | BTYE | 索引标识 |
localId | LONG | 模块内对象标识值 | |
mask | BTYE | 对象在结构中的位置标识 | |
type | BTYE | 数据类型 | |
size | ULONG | 对象数据值的长度 | |
flag | BTYE | 对象的属性标识 | |
caseConvert | BTYE | 大小写转换标识 | |
name | BTYE | 101 | 对象的名称字符串 |
具体实施中,MIB库是根据MIB文件通过工具来自动生成的,对象的关键信息表与实例处理方法相同的一组变量一一对应,是根据MIB库数据结构信息在程序初始化时自动生成的。
如图1所示的本发明优选实施例中,步骤三至步骤六为对设置命令原语(Set-Request)的处理流程,该流程可以如图2所示,具体为:
步骤a,接收简单网管协议(SNMP)管理站发出的设置命令原语(Set-Request)报文,解析报文,检查变量体中每个变量的合法性,如果检查出错,直接返回出错信息;检查通过,进入步骤b;
步骤b,根据每个变量的OID,获取对应的MIB库数据结构信息,如果获取失败,直接返回出错信息;获取成功,进入步骤c;
步骤c,设置变量体中所有变量的状态为未处理状态;
步骤d,取变量体中第一个未处理变量,动态申请一个链表结点来保存变量MIB库结构信息;
步骤e,查找变量体后续未处理变量,判断该变量的实例处理方法是否和第一个未处理变量相同,如果相同,再动态申请一个链表结点来保存该变量MIB库结构信息,并把这个结点链接到前一个结点后面;
步骤f,重复步骤e,直到变量体末,最终形成分组之后的同组变量的链表结构信息;
步骤g,用这组变量的实例处理方法来处理这组变量的链表结构信息,进行分组设置操作;
步骤h,不管分组设置成功还是失败,都保存分组的设置返回结果,同时将变量体中的这组变量标记为已处理状态,并提供私有MIB接口以供SNMP管理站来获取设置操作的返回信息;
步骤i,重复步骤d、e、f、g、h,直至变量体中的每个变量状态都为已处理状态;
步骤j,多变量分组设置完成之后,如果有一组设置失败,则返回设置失败响应给简单网管协议(SNMP)管理站,只有全部分组设置成功,才返回设置成功响应给简单网管协议(SNMP)管理站。
当然,本发明还可有其他实施例,在不背离本发明精神及其实质的情况下,所属技术领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明的权利要求的保护范围。
Claims (2)
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。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100908026A CN101282234B (zh) | 2007-04-06 | 2007-04-06 | 一种基于简单网管协议代理多变量分组设置方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007100908026A CN101282234B (zh) | 2007-04-06 | 2007-04-06 | 一种基于简单网管协议代理多变量分组设置方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101282234A CN101282234A (zh) | 2008-10-08 |
CN101282234B true CN101282234B (zh) | 2010-12-29 |
Family
ID=40014529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007100908026A Expired - Fee Related CN101282234B (zh) | 2007-04-06 | 2007-04-06 | 一种基于简单网管协议代理多变量分组设置方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101282234B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101815012B (zh) * | 2009-02-20 | 2012-04-04 | 中兴通讯股份有限公司 | 一种性能数据的采集方法及装置 |
CN103117872A (zh) * | 2012-12-31 | 2013-05-22 | 广东东研网络科技股份有限公司 | 一种提高snmp数据传输效率的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1384642A (zh) * | 2001-04-29 | 2002-12-11 | 华为技术有限公司 | 在简单网络管理协议上增加用户安全验证的方法 |
CN1400775A (zh) * | 2001-08-01 | 2003-03-05 | 华为技术有限公司 | 网络拓扑结构的搜索方法 |
CN1403916A (zh) * | 2002-09-24 | 2003-03-19 | 浙江浙大网新科技股份有限公司 | 一种用snmp监视浏览内容的方法 |
CN1520095A (zh) * | 2003-01-24 | 2004-08-11 | 华为技术有限公司 | 网管标准代理中信息管理库树的加载实现方法 |
CN1753402A (zh) * | 2004-09-22 | 2006-03-29 | 中兴通讯股份有限公司 | 简单网管协议代理多变量分组查询方法 |
-
2007
- 2007-04-06 CN CN2007100908026A patent/CN101282234B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1384642A (zh) * | 2001-04-29 | 2002-12-11 | 华为技术有限公司 | 在简单网络管理协议上增加用户安全验证的方法 |
CN1400775A (zh) * | 2001-08-01 | 2003-03-05 | 华为技术有限公司 | 网络拓扑结构的搜索方法 |
CN1403916A (zh) * | 2002-09-24 | 2003-03-19 | 浙江浙大网新科技股份有限公司 | 一种用snmp监视浏览内容的方法 |
CN1520095A (zh) * | 2003-01-24 | 2004-08-11 | 华为技术有限公司 | 网管标准代理中信息管理库树的加载实现方法 |
CN1753402A (zh) * | 2004-09-22 | 2006-03-29 | 中兴通讯股份有限公司 | 简单网管协议代理多变量分组查询方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101282234A (zh) | 2008-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8751216B2 (en) | Table merging with row data reduction | |
CN110109681B (zh) | 不同平台间代码的转换方法及系统 | |
US20070220027A1 (en) | Set-based data importation into an enterprise resource planning system | |
CN105389256A (zh) | 一种单元测试方法及系统 | |
US20080270428A1 (en) | Uniform resource identifier template manipulation | |
CN110119292A (zh) | 系统运行参数查询方法、匹配方法、装置及节点设备 | |
CN100550896C (zh) | 简单网管协议代理多变量分组查询方法 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
US8892566B2 (en) | Creating indexes for databases | |
CN108629052B (zh) | Kettle任务调度方法、系统、计算机设备和存储介质 | |
CN101282234B (zh) | 一种基于简单网管协议代理多变量分组设置方法 | |
CN113487337A (zh) | 一种产品信息的保存方法、溯源方法以及区块链平台 | |
CN106126224A (zh) | 一种生成程序对象的工具、系统和方法 | |
CN114035789A (zh) | 日志解析模板的生成方法、日志解析方法、装置及设备 | |
CN113704269A (zh) | 一种数据处理方法、系统、存储介质及电子设备 | |
CN112491782B (zh) | 一种安全检测分析方法及装置 | |
CN112328231A (zh) | python字典和结构体间的快速转换方法 | |
JP2004348736A (ja) | 商用ネットワークサービスを提供するためのアクティベーションソリューションの作成技法 | |
CN115757479A (zh) | 数据库的查询优化方法、机器可读存储介质与计算机设备 | |
CN115269548A (zh) | 一种数据仓库开发模型的生成方法、系统及相关设备 | |
CN109241024A (zh) | 一种业务过程模型的特征提取方法及系统 | |
CN115544132A (zh) | 数据导入方法、系统及电子设备 | |
CN111901149B (zh) | 自动生成和检测Fabric网络配置文件的方法及系统 | |
CN113407546A (zh) | 一种适用多种场景的规则配置方法 | |
CN114661298A (zh) | 公共方法自动生成方法、系统、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101229 Termination date: 20190406 |
|
CF01 | Termination of patent right due to non-payment of annual fee |