基于SNMP的MIB库研究.

上传人:206****923 文档编号:43731822 上传时间:2018-06-07 格式:DOCX 页数:12 大小:166.20KB
返回 下载 相关 举报
基于SNMP的MIB库研究._第1页
第1页 / 共12页
基于SNMP的MIB库研究._第2页
第2页 / 共12页
基于SNMP的MIB库研究._第3页
第3页 / 共12页
基于SNMP的MIB库研究._第4页
第4页 / 共12页
基于SNMP的MIB库研究._第5页
第5页 / 共12页
点击查看更多>>
资源描述

《基于SNMP的MIB库研究.》由会员分享,可在线阅读,更多相关《基于SNMP的MIB库研究.(12页珍藏版)》请在金锄头文库上搜索。

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

2、ernet 网络设备的生产厂家都在开发与 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)numberOBJECT

5、NAME 是被管对象的名字,ASN.1 要求所有对象的名字在 MIB 中必须是唯一的;BOJECT-TYPE 是每一个节点对象所必需的关键字;SYNTAX是被管对象类型的关键字,随后跟着的是一个类型(syntax);ACCESS 是被管对象的访问方式关键字,在SNMP 第二版中为 MAX-ACCESS 关键字,(access)是被管对象的访问方式,可为如下列举值之一: read-only、read-write、no-accessible, SNMP 第 2 版中又增加了 read-create;STATUS 是被管对象关键字,(status)是被管对象的状态,如必备的、可选的或废弃 的;DES

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

7、为它的子树,如果没有子树它就是叶子节点,它包含一个值并被称为对象。图 3 是带有 ASN.1 编号的 MIB 树实例:可以看出 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 关于实体

8、所在系统的数据Interface 用于管理的网络接口信息AT 地址转换信息IP 网络协议ICMP 为 IP 设备携带错误和控制的协议TCP 传输控制协议UDP 用户数据报协议EGP 外部网关协议CMOT 公共管理信息与服务协议SNMP 简单网络管理协议MIB 库中每一个变量都符合 ASN.1 语法规则,MIB 库中只使用了 ASN.1诸多类型中的 INTEGER,OCTET STRING,OBJECT IDENTIFIER,NULL 作为基本类型,同时定义了 IpAddress,Counter,Gauge,TimeTicks,Opaque 类型,大体上说,MIB 中变量可分为两大部分,简单变量

9、(Simple variable)和表格(Table)。简单变量是常见的整型及字符串,也包括一些数据集合,通过在变量的对象标识符末尾附加.0 来引用。表格对应一组数组,可包含变量的多个实例,表格中的每个表项可以用多个字段,这些字段本身可能是简单变量也可能是表格,表格不能直接进行存取。4 MIB 访问实现访问实现4.1 SNMP 报文操作由于 SNMP 是工作在 UDP 上的协议,即无连接的报文通信方式,它不保证报文是否正确到达(SNMP 的报文格式如图 4 所示)。与其他网络管理协议不同的是,SNMP 使用一种称作“取存”的范例来实现各种操作。主要有以下 3 种信息:(1) Get :由管理站

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

11、nitySNMP PDUSNMP 消息消息PDU typeRequest-id00Variable-bindingsGet-Request PDU,Get-Next-Request PDU,Set-Request PDUPDU typeRequest-idError-statusError-statusVariable-bindingsGet-Response PDUPDU typeEnterpriseAgent-addrGeneric-trapSpecific-trapTime-stampVariable-bindingsTrap PDUName1Value1Name2Value2.Name

12、 nValue n图 4 SNMP 消息格式(3) Trap :使得代理能够向管理站通告重要事件,是属于非请求的消息,这些消息通知管理站发生了特定事件。Trap 消息可以用来通知管理站线路的故障、连接的终端和恢复、认证失败等消息。 一个 SNMP 实体在接收 SNMP 报文时,一般要进行基本的语法检查、版本号的验证、认证(若成功就以 ASN. 1 的形式返回一个 PDU) 、对返回的 PDU 再进行语法检查。当所有的验证和语法解析成功以后,实体就选择适当的访问策略,对该 PDU 进行相应的处理。管理系统工作时,管理站周期性地发送 Get - Request/ Get-Next-Request

13、报文来轮询各个代理,获取各个 MIB 中的管理信息,同时,管理站也接收代理发来的 Trap 报文,并记录在一个数据库中。网络管理员可以通过专用的应用软件从管理站上查看每个代理提供的管理信息。各个节点的代理程序驻留在工作站内存中,负责收集 被管对象的网络状态信息。当代理接收到管理站的 Get 报文后,代理将根据请求的内容从本地 MIB 中提取所需信息,并以 Get - Response 报文方式将结果回送给管理站。代理一方面在 161 端口上(SNMP 的默认端口) 循环侦听来自管理站的Get-Request/ Get-Next-Request 报文,并做出相应的响应,读取或修改 MIB 中的变

14、量值,将结果返回给管理站,另一方面,它也不断地检查本地的状态,适当地发送Trap 报文。4.2 MIB 访问流程及原理首 先根据自变量接收一个要访问的被管理对象主机名,并接收要查询的对象标识符的简略定义形式. 过程首先生成 SNMP 报文,一旦报文生成,再把报文简单反转过来,发送出去. 这其中要将请求标识符段内容及标识符长度保存起来,留待以后进行匹配检查. 生成 SNMP 报文后,建立代理地址,创建套接字连接,以便代理能将响应发回. 然后,启动警告信号处理器,将 SNMP 请求报文发给代理 ,等待一个响应的到来.因为 SNMP 是工作在 UDP 之上的,所以在 SNMP 应用实体间通信时,无需

15、先建立连接,这样虽降低了系统开销,但 UDP 传输是不可靠的,为此,网络管理站采取了相应的超时和重发策略. 本系统在发出请求报文之后,启动超时计数器,等待响应的到来,并设置重发次数为 3. 若 3 次之后仍没有收到响应,则关闭套接字,并返回一个“接收失败”错误代码. 反之,若确定收到一个响应,则调用一过程来把响应转换成为内部表示形式, 即对 SNMP 报文进行译码. 再用已保存的 Request-id 与响应 Request-id 段进行比较,来验证这个报文是否是刚才发出的请求报文的响应. 若是,就调用另一个过程,把每段对象标识符的 ASN.1 表示形式转换成自己的内部形式,并显示其值. 由于

16、 SNMP 报文对各个段都使用可变长度编码,这就使得即便是从 SNMP 报文中提取一简单整数段,也要进行许多计算,因而,所开发的系统原码程序中包含了一个语言较长、结构复杂的特殊句法分析程序,用于提取报文的各个段并进行 译码,此句法分析软件必须把一指针移遍报文中所有各段,以找出各段长度并提取其数值.MIB 访问的主流程图如下:4.3 结合自己的开发经验,列举了访问 MIB 的一个具体实现以下介绍一个访问 MIB 库中 SysDescr 变量的程序。该程序在 Stratus 容错机(BSD UNIX 4.3)上运行通过。读者根据这个例子不难编写对 MIB 库的其他变量的操作, 从而实现一个具体的网络管理系统。# include stdio.h# include sys/types.h# include sys/socket.h# include netinet/in.h# include netdb.h# define snmp_port 161 /* SNMP UDP 端口号*/# define destaddress “192

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

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