当前位置:文档之家› 简单网络管理协议SNMP

简单网络管理协议SNMP

SNMP1概述 (1)2SNMP的工作原理 (1)2.1网络管理模型 (1)2.2网络管理协议结构 (2)2.3网络管理服务 (3)2.4委托代理 (4)3管理信息结构SMI (4)3.1ASN.1 (4)3.2文本约定 (5)3.3对象定义 (6)3.4T RAP定义 (6)3.5对象标志符 (7)3.6表对象的定义 (8)3.7对象和对象实例的区别 (10)3.8OID的字典序 (10)4协议数据单元(PDU--PROTOCOL DATA UNIT) (10)4.1SNMP报文格式 (10)4.2SNMP报文类型 (11)4.3SNMP V2基本的PDU格式 (12)4.4SNMP消息的生成 (13)4.5SNMP消息的接受和处理 (13)5SNMP协议操作 (15)5.1G ET R EQUES T (15)5.1.1GetRequest—PDU报文格式 (15)5.1.2SNMPv2对GetRequest-PDU的处理(参考RFC1905) (15)5.1.3SNMPv1对GetRequest-PDU的处理(参考RFC1157) (16)5.2G ET N EXT R EQUEST—PDU (16)5.2.1GetNextRequest报文格式 (17)5.2.2SNMPv2对GeNextRequest-PDU的处理(参考RFC1905) (17)5.2.3SNMPv1对GeNextRequest-PDU的处理(参考RFC1157) (18)5.3R ESPONSE-PDU (18)5.3.1Response报文格式 (18)5.3.2SNMPv2对Response-PDU的处理(参考RFC1905) (20)5.3.3SNMPv1对响应报文GetResponse的处理(参考RFC1157) (20)5.4S ET R EQUES T-PDU (20)5.4.1SetRequest报文格式 (20)5.4.2SNMPv2实体对SetRequest报文的处理(参考RFC1905) (21)5.4.3SNMPv1对SetRequest报文的处理(参考RFC1157) (22)5.5G ET B ULK R EQUES T-PDU (23)5.5.1GetBulkRequest-PDU报文格式 (23)5.5.2SNMPv2对GetBulkRequest-PDU报文的处理(参考RFC1905) (24)5.6I NFORM R EQUES T-PDU (25)5.6.1InformRequest-PDU的格式 (25)5.6.2SNMPv2对InformRequest-PDU的处理(参考RFC1905) (26)5.7T RAP-PDU (26)5.7.1SNMPv1的Trap (26)5.7.2SNMPv2的SNMPv2-Trap-PDU (28)6SNMP的安全控制 (29)6.1SNMP V2-基于共同体的管理框架 (29)6.2SNMP V3的安全策略 (30)1概述简单网络管理协议(SNMP)由internet活动委员会(IAB)制定, 是Internet组织用来管理TCP/IP互联网和以太网的网络管理协议,它最初是作为一种可提供最小的网络管理功能的临时方法开发的。

SNMP使用的管理信息结构(SMI)和管理信息库(MIB)提供了一组监控网络元素的最小的,但功能强大的工具。

它的结构十分简单,能够简单快速地实现。

因而SNMP 在网络管理领域得到了广泛的接受,已经成为事实上的国际标准。

SNMP目前包括三个版本:SNMPv1、SNMPv2、SNMPv3。

SNMPv2是SNMP的后续版本,它对SNMP进行了大量的功能增强,并在某种程度上保持了简单和易于实现的特点。

IETF最初在RFC2441—RFC1452中定义了SNMP的一系列规范, 随后在RFC1901—1910中发布了更新版本, 并成为IAB的推荐标准。

稍后IETF又相继发布了网络管理的一系列标准管理信息库, 为SNMP开发人员提供了MIB定义和操作的规范。

本章将重点介绍SNMPv2,并增加了SNMPv3安全管理的内容。

2SNMP的工作原理2.1网络管理模型SNMP的体系结构是基于一个或多个网络管理站以及若干个网络元素组成的模式,见图1。

网络管理站的任务是监督和控制网络元素。

连接到网络中的、拥有一个或多个网络管理代理的任何设备,都可称为网络元素。

代理充当所有网络管理功能的智能前端处理机。

这意味着某些网络管理任务被转发给代理并在网络元素中处理。

代理与网络管理站之间的通信则是由SNMP协议控制。

在SNMP的管理者—代理模型如下图所示:,即由议S N M PM anagement S ystemS N M PM anaged S ystem,GET用来以, 从而掌握设备的全部图景。

特别值得注意的是, GetNext_Request消息为管理者提供了在不知道一个MIB对象的情况下检索该对象的能力。

管理者可以利用此消息来遍历一个未知MIB并发现它的结构。

因此, 开发人员就有可能开发出独立通用的SNMP管理程序, 在一定程度上能够管理所有的SNMP代理。

管理者使用SET操作可以对一个设备上的参数进行远程配置。

如, 设置系统的名字, 设置系统的负责人信息, 在管理上开启或关闭一个信道, 建立或拆除一个交叉联接, 设置性能数据的阈值等。

SNMP同样以Get-Response消息响应管理者的SET命令。

SNMP 陷阱(TRAP)是代理主动发送给管理者的非请求消息。

这些消息通知管理者发生了一个特定的事件, 所有可以发送的陷阱消息也必须是MIB已经定义的。

发送的陷阱消息可以是告警, 如温度过高, 联接失败等, 也可以是一些事件通知, 如系统启动, 联接建立等。

轮询和TRAP机制相结合, 使基于SNMP的管理达到较好的管理效果。

以节省网络带宽和代理的处理时间。

2.4委托代理使用SNMP要求所有管理者和代理都支持UDP和IP,这就限制了它对其它不支持TCP/IP 协议的网络设备的直接管理。

为了实现对这些设备的管理,提出了委托代理(proxy)的概念。

委3,类型用一个字节表示,它决定了内容如何解释。

内容有0到多个字节表示。

为简单起见, SNMP并不支持ASN.1的全部数据类型, 而是只使用了它的一个子集. 在RFC1902中, 定义了SNMP使用的全部标量数据类型,包括ASN.1定义的基本数据类型和SNMP在此基础上扩充的数据类型. 企业自定义的MIB标量对象必须是以下这些数据类型.●INTEGER:32Bit整数,(-2147483648..2147483647)。

●Integer32:32Bit整数,(-2147483648..2147483647)。

●Unsigned32:无符号32Bit整数,(0..4294967295)。

●OCTET STRING :字符串,SIZE (0..65535)。

最好在255以内。

●NULL:空类型。

●ObjectID:对象标识,最大32Bit。

●IPAddress:32Bit的IP地址。

●Counter32:32Bit的计数器,从0递增,到达最大值后回到0,然后再递增.●Counter64:64Bbit计数器。

其中,各部分的解释为:●DISPLAY-HINT:该类型的数据的显示格式。

●STATUS:该文本约定的状态。

"current"表明正在使用,"obsolete"表明该定义已经过时了,"deprecated"表明虽然该定义已经过时了,但是出于兼容性的考虑仍然可以予以实现。

●DESCRIPTION:文字描述。

●REFERENCE:参考。

●SYNTAX:该文本约定的基本数据类型。

3.3对象定义在SNMP中,采用如下格式定义一个管理对象。

何3.4Trap定义在SNMP中,采用如下格式定义一个通知:其中,OBJECT子句表明了该通知中应该附带的对象。

在一条通知的实例中,附带的第一个对象实例是当前时间,然后是该通知的标志,然后顺序天加上OBJECT子句中列出的对象的实例。

其他子句的解释同对象定义的相同,这里就不再多说。

3.5对象标志符所有采用ASN.1描述的MIB都使用ASN.1定义的属性结构组织管理信息。

每一个管理信息是树中的一个节点,每个节点的标志包括:一个整数和一个字符串描述。

对于每一个节点,从树根到该节点都有一条唯一路径,这条路径上的每一个节点都对应到一个整数。

这样,从树的根部开始,每一个节点都唯一对应到一组整数,这一组整数就是该节点的对象标识符(Object Identifier)OID。

这样的一棵树成为管理信息树MIT或MIB树。

在SNMP中,所有的管理对象都是MIB树的叶子节点。

这样,每一个管理对象都拥有一个唯一的OID,在SNMP的报文中就通过这个OID标志该管理对象,使得发送方和接收方都能够理解,而且不会产生歧义。

在对象的定义中,{xxx n}就指明了该对象的OID,其中xxx为它在MIT中的父亲节点,n 为一个整数。

注意,该整数在它的兄弟节点中不能重复,以保证惟一性。

由父亲节点的OID 加上这个整数,就构成了该节点的OID。

OID的显示格式为:依次排列各个整数,各个数字之间用句点隔开。

ASN.1的MIT是唯一的,所有采用ASN.1作为表示层协议的应用层协议都拥有这棵树的一部分。

例如:Q3和SNMP中定义的管理对象都能够在这棵树中找到自己的位置而不重复。

下图是MIT的一部分::SysOREntry ::= SEQUENCE {sysORIndex INTEGER,sysORID OBJECT IDENTIFIER,sysORDescr DisplayString,sysORUpTime TimeStamp}sysORIndex OBJECT-TYPESYNTAX INTEGER (1..2147483647)MAX-ACCESS not-accessibleSTATUS currentDESCRIPTION "……"::= { sysOREntry 1 }sysORID OBJECT-TYPESYNTAX OBJECT IDENTIFIERMAX-ACCESS read-onlySTATUS currentDESCRIPTION "……"::= { sysOREntry 2 }sysORDescr OBJECT-TYPESYNTAX DisplayStringMAX-ACCESS read-onlySTATUS currentDESCRIPTION "……"::= { sysOREntry 3 }sysORUpTime OBJECT-TYPESYNTAX TimeStampMAX-ACCESS read-onlySTATUS currentDESCRIPTION "……"::= { sysOREntry 4 }在上例中,定义了四个简单对象sysORIndex,sysORID,sysORDescr,sysORUpTime,我们称之为列对象。

相关主题