基于snmp的mib库访问实现.

上传人:今*** 文档编号:105865927 上传时间:2019-10-13 格式:DOC 页数:8 大小:193.50KB
返回 下载 相关 举报
基于snmp的mib库访问实现._第1页
第1页 / 共8页
基于snmp的mib库访问实现._第2页
第2页 / 共8页
基于snmp的mib库访问实现._第3页
第3页 / 共8页
基于snmp的mib库访问实现._第4页
第4页 / 共8页
基于snmp的mib库访问实现._第5页
第5页 / 共8页
点击查看更多>>
资源描述

《基于snmp的mib库访问实现.》由会员分享,可在线阅读,更多相关《基于snmp的mib库访问实现.(8页珍藏版)》请在金锄头文库上搜索。

1、基于SNMP的MIB库访问实现-本文摘自 北京工商大学 计算机学院 蔡国森 基于SNMP的MIB库访问实现的研究摘要 SNMP是用于网络管理代理之间的请求应答协议。管理信息库(MIB)定义了由代理者维护的各种变量,它们由管理者来进行存取操作,从而实现具体的网络管理。本文在对MIB的分析之后,给出了对MIB库变量访问的C语言程序实例.关键词 简单网络管理协议,模型,信息库,访问实现1 引言简单网络管理协议(SNMP)是Internet组织用来管理Internet的网络协议,随着Internet所使用的TCP/IP协议族成为事实上的网间网互连协议标准,SNMP也成为计算机网络管理方面大家实际遵循的

2、标准。几乎所有的Internet网络设备的生产厂家都在开发与SNMP有关的产品并投放市场。2 SNMP 的管理模型在SNMP管理模型中有三个基本组成部分:管理者(Manager),被管代理(Agent)和管理信息库(MIB)。管理站一般是一个单机设备或一个共享网络中的一员,它是网络管理员和网络管理系统的接口,能将网络管理员的命令转换成对远程网络元素的监视和控制,同时从网上所有被管实体的MIB (管理信息库) 中提取出信息数据。作为管理站,它还必须拥有能进行数据分析、故障发现等管理应用软件。整个管理站的管理工作是通过轮询代理来完成的。管理者可以通过SNMP 操作直接与管理代理通信,获得即时的设备

3、信息,对网络设备进行远程配置管理或者操作;也可以通过对数据库的访问获得网络设备的历史信息,以决定网络配置变化等操作。SNMP管理代理指的是用于跟踪监测被管理设备状态的特殊软件或硬件,每个代理都拥有自己本地的MIB。实际上,SNMP 的管理任务是移交给管理代理来执行的。代理翻译来自管理站的请求,验证操作的可执行性,通过直接与相应的功能实体通信来执行信息处理任务, 同时向管理站返回响应信息。3 管理信息库MIB信息为网管中被管资源,而网络管理中的资源是以对象表示的,每个对象表示被管资源的某方面属性,这些对象形成了MIB库。每个MIB变量记录了每个相连网络的状态、通信量统计数据、发生差错的次数以及内

4、部数据结构的当前内容等。网络管理者通过对MIB库的存取访问,来实现五大管理功能。3.1 MIB对象定义格式ASN.1是一种用于描述结构化客体的结构和内容的语言,基于编码规则BER(Basic Encoding Rules)是ASN.1标准定义的一种传送文法。每个MIB变量格式是SMI规定的,用ASN.1描述如下:OBJECTNAME BOJECT-TYPEDESCRIPTION:(description)SYNTAX: (syntax)ACCESS: (access)STATUS: (status):=(Parent)numberOBJECTNAME是被管对象的名字,ASN.1要求所有对象的名

5、字在MIB中必须是唯一的;BOJECT-TYPE 是每一个节点对象所必需的关键字;SYNTAX是被管对象类型的关键字,随后跟着的是一个类型(syntax);ACCESS是被管对象的访问方式关键字,在SNMP 第二版中为MAX-ACCESS 关键字,(access)是被管对象的访问方式,可为如下列举值之一: read-only、read-write、no-accessible, SNMP 第2 版中又增加了read-create;STATUS是被管对象关键字,(status)是被管对象的状态,如必备的、可选的或废弃的;DESCRIPTION是对被管对象的功能、特征等进行描述的关键字,(descr

6、iption)是被管对象的文本描述,在:=(Parent)number 中,Parent表示位于MIB树中的父节点,number表示是第几个子节点。3.2 MIB 树每个MIB对象都用对象标识符(OID)来唯一的标识,这是用定义在ASN.1语法中的树型结构来组织的可用信息,其中每个可用信息是一个带标号的节点,每个节点用数字和字符两种方式显示,其中对象标识符OID是由句点隔开的一组整数,也就是从根节点通向它的路径,它命名节点并指示它在ASN.1树中的准确位置。一个带标号节点可以拥有包含其它带标号节点为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。图3是带有ASN.1编号的MIB

7、树实例:可以看出MIB-的OID是:1.3.6.1.2.1或者iso.org.dod.internet.mgmt.mib2。在SNMP中,实现应用到的MIB对象都是MIB-的子树节点。3.3 MIB 对象及变量Internet MIB是一树形结构的数据库, MIB-I定义了8个管理信息类别,MIB-是在MIB-I基础上的扩展,增加了SNMP和CMOT两项。MIB类别说明见表1。表1 MIB类别表MIB类别 包含有关信息System 关于实体所在系统的数据Interface 用于管理的网络接口信息AT 地址转换信息IP 网络协议ICMP 为IP设备携带错误和控制的协议TCP 传输控制协议UDP

8、用户数据报协议EGP 外部网关协议CMOT 公共管理信息与服务协议SNMP 简单网络管理协议MIB库中每一个变量都符合ASN.1语法规则,MIB库中只使用了ASN.1诸多类型中的INTEGER,OCTET STRING,OBJECT IDENTIFIER,NULL作为基本类型,同时定义了IpAddress,Counter,Gauge,TimeTicks,Opaque类型,大体上说,MIB中变量可分为两大部分,简单变量(Simple variable)和表格(Table)。简单变量是常见的整型及字符串,也包括一些数据集合,通过在变量的对象标识符末尾附加.0来引用。表格对应一组数组,可包含变量的多

9、个实例,表格中的每个表项可以用多个字段,这些字段本身可能是简单变量也可能是表格,表格不能直接进行存取。4 MIB 访问实现4.1 SNMP 报文操作由于SNMP 是工作在UDP 上的协议,即无连接的报文通信方式,它不保证报文是否正确到达(SNMP的报文格式如图4所示)。与其他网络管理协议不同的是,SNMP 使用一种称作“取存”的范例来实现各种操作。主要有以下3种信息:(1) Get :由管理站去获取代理管理信息库的值,通过发送Get - Request , Get - Next Request两种消息来实现。管理站通过发送Get - Request 报文从拥有SNMP 管理代理的网络设备中获取

10、指定对象的信息,而管理代理用Get - Response 报文来响应Get - Request 报文。Get - Next - Request 是获取一个表中指定对象的下一个对象,因此通常用它来获取一个表中的所有对象信息。(2) Set :由管理站设置代理的管理信息库的对象值,通过发送Set - request 来实现,它可以对一个网络设备进行远程参数配置。VersionCommunitySNMP PDUSNMP消息PDU typeRequest-id00Variable-bindingsGet-Request PDU,Get-Next-Request PDU,Set-Request PDUP

11、DU typeRequest-idError-statusError-statusVariable-bindingsGet-Response PDUPDU typeEnterpriseAgent-addrGeneric-trapSpecific-trapTime-stampVariable-bindingsTrap PDUName1Value1Name2Value2.Name nValue n图4 SNMP消息格式(3) Trap :使得代理能够向管理站通告重要事件,是属于非请求的消息,这些消息通知管理站发生了特定事件。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消

12、息。一个SNMP 实体在接收SNMP 报文时,一般要进行基本的语法检查、版本号的验证、认证(若成功就以ASN. 1 的形式返回一个PDU) 、对返回的PDU 再进行语法检查。当所有的验证和语法解析成功以后,实体就选择适当的访问策略,对该PDU 进行相应的处理。管理系统工作时,管理站周期性地发送Get - Request/ Get-Next-Request 报文来轮询各个代理,获取各个MIB 中的管理信息,同时,管理站也接收代理发来的Trap 报文,并记录在一个数据库中。网络管理员可以通过专用的应用软件从管理站上查看每个代理提供的管理信息。各个节点的代理程序驻留在工作站内存中,负责收集被管对象的

13、网络状态信息。当代理接收到管理站的Get 报文后,代理将根据请求的内容从本地MIB 中提取所需信息,并以Get - Response 报文方式将结果回送给管理站。代理一方面在161 端口上(SNMP 的默认端口) 循环侦听来自管理站的Get-Request/ Get-Next-Request 报文,并做出相应的响应,读取或修改MIB 中的变量值,将结果返回给管理站,另一方面,它也不断地检查本地的状态,适当地发送Trap 报文。4.2 MIB访问流程及原理首先根据自变量接收一个要访问的被管理对象主机名,并接收要查询的对象标识符的简略定义形式. 过程首先生成SNMP 报文,一旦报文生成,再把报文简

14、单反转过来,发送出去. 这其中要将请求标识符段内容及标识符长度保存起来,留待以后进行匹配检查. 生成SNMP 报文后,建立代理地址,创建套接字连接,以便代理能将响应发回. 然后,启动警告信号处理器,将SNMP 请求报文发给代理 ,等待一个响应的到来.因为SNMP 是工作在UDP 之上的,所以在SNMP 应用实体间通信时,无需先建立连接,这样虽降低了系统开销,但UDP 传输是不可靠的,为此,网络管理站采取了相应的超时和重发策略. 本系统在发出请求报文之后,启动超时计数器,等待响应的到来,并设置重发次数为3. 若3 次之后仍没有收到响应,则关闭套接字,并返回一个“接收失败”错误代码. 反之,若确定

15、收到一个响应,则调用一过程来把响应转换成为内部表示形式, 即对SNMP 报文进行译码. 再用已保存的Request-id与响应Request-id段进行比较,来验证这个报文是否是刚才发出的请求报文的响应. 若是,就调用另一个过程,把每段对象标识符的ASN.1 表示形式转换成自己的内部形式,并显示其值. 由于SNMP 报文对各个段都使用可变长度编码,这就使得即便是从SNMP 报文中提取一简单整数段,也要进行许多计算,因而,所开发的系统原码程序中包含了一个语言较长、结构复杂的特殊句法分析程序,用于提取报文的各个段并进行译码,此句法分析软件必须把一指针移遍报文中所有各段,以找出各段长度并提取其数值.MIB访问的主流程图如下:4.3 结合自己的开发经验,列举了访问MIB的一个具体实现以下介绍一个访问MIB 库中SysDescr变量的程序。该程序在Stratus 容错机(BSD UNIX 4.3)上运行通过。读者根据这个例子不难编写对MIB 库的其他变量的操作, 从而实现一个具体的网络管理系统。# includestdio.h# includesys/types.h# includesys/socket.h# includenetinet/in.h# includenetdb.h# definesnmp_port161/* SNMP UDP

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号