5.1SNMP的基本概念5.2SNMPv25.3SNMPv3第5章简单网络管理协议5.4应用实例简单网络管理协议SNMP(SimpleNetworkManagementProtocol)是1990年5月问世的,主要是为当时的ARPANET变成了全球范围的Internet,拥有了众多的主干和众多的用户的网络管理而研制的。RFC1157定义了SNMP的第一个版本,简称为SNMPv1,SNMP提供了一种监控和管理计算机网络的系统方法。SNMP是由IAB(InternetAdvertisingBureau:Internet广告局)制订,基于TCP协议的各种互联网络的管理标准。由于它满足了人们长期以来对通用网络管理标准的需求,而且它本身简单明了,实现起来比较容易,占用的系统资源较少,所以得到了众多网络产品厂家的支持,目前已成为事实上的网络管理工业标准,基于它的网络管理产品在市场上占有统治地位。随着实践的检验,SNMP第1个版本的缺点逐渐暴露出来,于是,人们又提出了一个SNMP的加强版本SNMPv2,并逐渐成为Internet标准。但是SNMPv2在安全协议操作方面没有提供有效的解决方案,针对这一问题,又开发出了SNMP的第3个版本SNMPv3。这个框架和协议被广泛地应用,并成为21世纪网络管理的标准。本章将在介绍SNMP协议的基础上,分别对SNMPv1,SNMPv2和SNMPv3进行介绍。5.1SNMP的基本概念5.1.1SNMP的基本概念1.基本概念l被管设备:又被称为网络元素,是指计算机、路由器、转换器等硬件设备。l代理(Agent):驻留在网络元素中的软件模块,它们收集并存储管理信息,如网络收到的错误包的数量等。l管理对象:管理对象是能被管理的所有实体(网络、设备、线路、软件)。例如,在特定的主机之间的一系列现有活动的TCP线路是一个管理对象。管理对象不同于变量,变量只是管理对象的实例。l管理信息库(MIB):把网络资源看成对象,每一个对象实际上就是一个代表被管理的一个特征的变量,这些变量构成的集合就是MIB。MIB存放报告对象的管理参数;MIB函数提供了从管理工作站到代理的访问点,管理工作站通过查询MIB中多值对来实现监测功能,通过改变MIB对象的值来实现控制功能。每个MIB应包括系统与设备的状态信息,运行的数据统计和配置参数等。l语法:一个语法可使用一种独立于机器的格式来描述MIB管理对象的语言。Internet管理系统利用ISO的OSIASN.1(抽象语言表示记法)来定义管理协议间相互交换的包和被管理的对象。l管理信息结构(SMI):SMI定义了描述管理信息的规则,SMI由ASN.1定义报告对象及在MIB中的表示,这样就使得这些信息与所存放设备的数据存储表示形式无关。l网络管理工作站(NMS):又称为控制台,这些设施运行管理应用来监视和控制网络元素,在物理上NMS通常是具有高速CPU、大内存、大硬盘等工作站,作为网络管理工作站管理网络的界面,在管理环境中至少需要一台NMS。l部件:部件是一个逻辑上的SNMPv2实体,它能初始化SNMPv2的通信,并能接收SNMPv2的通信,每个SNMPv2实体包括一个惟一的实体标识。SNMPv2的信息是在两个实体间实现通信的。一个SNMPv2的实体可以定义多个部件,每个部件具有不同的参数。l管理协议:管理协议是用来在代理和NMS之间转换管理信息,提供在网络管理站和被管设备间交互信息的方法。l网络管理系统:真正的网络管理功能的实现,它驻留在网络管理工作站中,通过对被管对象中的MIB信息变量的操作实现各种网络管理功能。2.SNMP的管理对象SMI采用ASN.1描述形式,定义了Internet的6个主要管理对象类:l网络地址;lIP地址;l时间标记;l计数器;l计量器;l非透明数据类型。3.SNMP的相关概念SNMPPDU格式RFC1157给出了SNMPv1协议的定义,这个定义是用ASN.1表示的,在SNMP管理中,管理站和代理之间交换的管理信息构成了SNMP报文。报文由3部分组成,即版本号、团体名和协议数据单元(PDU)。报文头中的版本号是指SNMP的版本,RFC1157为第一版。团体名用于身份认证。SNMP共有5种管理操作:但只有4种PDU格式。管理站发出的3种请求报文GetRequest、GetNextRequest和SetRequest采用的格式是一样的,代理的应答报文格式只有一种:tResponsePDU,从而减少了PDU的种类。(1)团体名:SNMP网络管理是一种分布式应用。这种应用的特点是管理站和被管理站之间的关系可以是一对多关系,即一个管理站可以管理多个代理,从而管理多个被管理设备。另一方面,管理站和代理之间还可能存在多对一的关系。代理控制自己的管理信息库,也控制多个管理站对管理信息库的访问,例如,只有授权的管理站才允许访问管理信息库,或者限制不同的管理站可以访问管理信息库的不同部分。另外,委托代理也可能按照预定的访问策略控制对其代理的设备的访问。RFC1157为此提供的认证和控制机制就是这种最初等最基本的团体名验证功能。团体的概念:SNMP网络管理是一种分布式应用,这种应用的特点是管理站和被管理站之间的关系可以是一对多的关系,即一个管理站可以管理多个代理,从而管理多个被管理设备。只有属于同一团体的管理站和被管理站才能互相作用,发送给不同团体的报文被忽略。SNMP的团体是一个代理和多个管理站之间的认证和访问控制关系。团体是一个在代理上定义的局部概念。一个代理可以定义若干个团体,每个团体使用唯一的团体名。而每个SNMP团体是一个在SNMP代理和多个SNMP管理者之间定义的认证、访问控制和转换代理的关系。在每条SNMPv1信息中都包括community字段,在该域中填入团体名,团体名起密码的作用。SNMPv1假设,如果发送者知道这个密码,就认为该信息通过了认证,是可靠的。SNMP支持普通的鉴别,它使用了一种类似于密码的东西,叫做团体名(communityname)。最简单的解释就是使用get(提取信息)或get-next(通过遍历提取信息)操作来读团体名,从而获取对象;使用set(写信息并控制)操作来写团体名,从而修改对象。大多数设备都将支持两个团体名:一个读团体名和一个写团体名。更精确地说,是使用一个团体名来访问该团体内的对象。通常一个网管代理定义两个团体:一个用于可以读取的管理对象(具有只读或读写权限的对象),另一个用于可改的管理对象(具有读写权限的对象)。团体可以是一个设备的MIB内的任何对象的集合。一个代理支持的最多团体数目取决于它的实现。(2)变量绑定变量绑定用于指定要收集或修改的管理对象。更精确地说,变量绑定是一个OBJECTIDENTIFIER值对应的列表。对于get或get-next请求,将忽略该值部分。RFC1157建议在get和get-next协议数据单元中发送实体把变量置为ASN.1的NULL值,接收实体处理时忽略它,在返回的应答协议数据单元中设置为变量的实际值。由于get-next操作用变量绑定中提供的管理对象执行一次MIB树遍历,所以可以指定MIB树中的任何对象。4.SNMPv1报文格式SNMPv1是SNMP最初的版本,在SNMPv1管理中,管理者和代理之间信息的交换都是通过SNMP报文实现的。管理者和代理之间交换的管理信息构成了SNMP报文,所有SNMPv1操作都嵌入在一个SNMP报文中。SNMPv1报文由三部分构成,格式如下所示。参数含义:l版本号:指定SNMP的版本号(对于SNMPv1,版本号为0)。l团体名:用于身份认证的一个字符串。lPDU:是协议数据单元(ProtocolDataUnit)的缩写。版本号团体名SNMPPDU在SNMPv1中,只有命令(get,get-next,set)和响应(get-response)两种PDU格式拥有共同的结构。由于Trap-PDU包含的信息不同,这两种UDP结构上有细微的差别。第一种PDU格式中共同结构包含的4个字段,如下所示:PDU类型请求标识符差错状态差错索引变量绑定表参数含义:•PDU类型字段:上述拥有共同结构的PDU类型的一种。•请求标识符(requestID)字段:赋予每个请求报文惟一的整数,用于区分不同的请求。•差错状态(errorstatus)字段:表示代理处理管理者的请求时可能出现的各种错误。该字段只在GetResponse-PDU中使用,在其他类型的PDU中,这个值必须是0。•差错索引(errorindex)字段:当差错状态非0时,指向变量绑定表中第一个导致差错的变量。该字段只在代理进程发送GetResponse-PDU时使用,在其他类型的PDU中,这个值必须是0。•变量绑定列表(variablebindinglist)字段:变量名和对应值的表,说明要检索或设置的所有变量及其值。第二种PDU格式,即TrapPDU,如下所示。PDU类型制造商ID代理地址通用陷阱特殊陷阱时间戳变量绑定表参数含义:lPDU类型:TrapPDU。l制造商ID:表示设备制造商的标识,与MIB-Ⅱ中的对象sysObjectID的值相同。l代理地址:产生陷阱的代理的IP地址。l通用陷阱:SNMP定义的陷阱共分7类。l特殊陷阱:与设备有关的特殊陷阱代码。l时间戳:代理发出陷阱的时间,与MIB-Ⅱ中的对象sysUpTime的值相同。变量绑定表:变量名和对应的表,说明要检索或设置的所有变量及其值。5.1.2SNMPv1的基本操作SNMPv1主要涉及通信报文的操作处理,协议规定Management如何与Agent通信,定义了它们之间交换报文的格式和含义,以及每种报文该怎样处理等。关于管理进程和代理进程之间的交互信息,SNMPv1定义了以下5种报文,分别对应5种基本操作:lGetRequest操作:被manager进程用来从代理进程处提取一个或多个参数值。lGetNextRequest操作:从代理进程处提取一个或多个参数的下一个参数值。lSetRequest操作:设置(或改变)代理进程的一个或多个参数值。lGetResponse操作:返回的一个或多个参数值。这个操作是由代理进程发出的。它是前面3种操作的响应操作。lTrap操作:代理进程主动发出的报文,通知管理进程有某些异常事件的发生。1.get操作get,get-next或setPDU有相同的格式,其格式如下所示。其中PDU类型是16进制数,0xAO表示get,0xA1表示get-next,0xA3表示set。2.get-next操作get-next比get功能更强,不但允许你遍历MIB树,并能判断哪些对象存在,哪些行在表中存在。get-next是如何工作的呢?对于变量绑定中指定的每一个对象标识符,都将执行一次MIB树遍历,并按字典次序获取下一个叶子对象。3.set操作set请求用于修改或创建管理对象。在set请求中提供的变量绑定定义了要设置的变量以及要设置的值。set操作是整体性的,要么全部变量设置成功,要么没有变量设置成功。因此,如果有一个变量不能设置或提供了一个错误值,则将不设置任何变量,并发送差错状态和差错索引的指示。若设置成功,则在响应消息中将包含与请求中相同的变量绑定。如何在表中添加或删除行呢?这取决于表中对象的定义方式。如果使用的是RowStatus对象,则可以用标准方式添加或删除行。4.traps操作代理可以查找特定的事件并检测它们,发送一个陷阱消息给预先配置好的管理工作站。与SNMPRequest和Response消息不同的是,trap消息被发送到UDP端口162上。TrapPDU的格式如下所示。代理可以查找特定的事件并检测它们,发送一个陷阱消息给预先配置好的管理工作站。与SNMPRequest和Response消息不同的是,trap消息被发送到UDP端口162上。TrapPDU的格式如下所示。0xA4制造商ID代理地址通用陷阱特殊陷阱时间戳变量绑定表参数含义:l0xA4:第一个字段的值为16进制的OxA4,指示该SNMPPDU是一个trap。l制