第三章简单网络管理协议-SNMP
SNMP(Simple Network Management Protocol,简单网络管理协议)是由Internet活动委员会(IAB)制订的,被采纳为基于TCP/IP协议的各种互联网络的管理标准。由于它满足了人们长久以来对通用网络管理标准的需求,而且它本身简单明了,实现起来比较容易,占用的系统资源少,所以得到了众多网络产品厂家的支持,成为实际上的工业标准,基于它的网络管理产品在市场上占有统治地位。1993年它的更新版本SNMP V ersion 2(SNMPv2)又被推出,改进了SNMP的不少缺陷。
本章及下一章在介绍SNMP协议的基础上,着重讨论SNMPv2协议的特点,并就作者自己开发的基于SNMPv2协议的网络计费管理软件作了介绍。
3.1 SNMP
3.1.1SNMP协议的工作原理
SNMP的管理结构如图3.1所示。它的核心思想是在每个网络节点上存放一个管理信息库( MIB),由节点上的代理(agent)负责维护,管理站(manager)通过应用层协议对这些信息库进行管理。SNMP最大的特点就是其简单性。它的设计原则是尽量减少网络管理所带来的对系统资源的需求,尽量减少agent的复杂性。它的整个管理策略和体系结构的设计都体现了这一原则。
管理工作站
图3.1:SNMP管理模型
3.1.2SNMP通信报文的操作处理
SNMP标准主要由三部分组成:简单网络管理协议(SNMP);管理信息结构(Structure ofa nagement Information,简称SMI)和管理信息库(Management Information Base,简称MIB) 。SNMP主要涉及通信报文的操作处理,协议规定manager如何与agent通信,定义了它们之间交换报文的格式和含义,以及每种报文该怎样处理等等。
SNMP中规定的网络管理操作有五种,分别是:
(1)Get-Request;
(2)Get-Next-Request;
(3)Set-Request;
(4)Get-Response;
(5)Trap。
Get-Request被manager用来从agent取回某些变量的值;Get-Next-Request被manager 用来从agent取回某变量的下一个变量的值;Set-Request被manager用来设置(或改变)agent上某变量的取值;Get-Response是agent向manager发送的应答;Trap被agent用来向manage r报告某一异常事件的发生。
Get-Request、Get-Next-Request和Set-Request这三种操作都具有原子(atomic)特性,即如果一个SNMP报文中包括了对多个变量的操作,agent不是执行所有操作,就是都不执行(例如,一旦对其中某个变量的操作失败,其它的操作都不再执行,已执行过了的也要恢复)。
SNMP的报文格式为:
version community data
version域表示SNMP协议的版本,在SNMP中它是version-1(0);
data域存放实际传送的报文,报文有五种,分别对应上述五种操作。
community域是为增加系统的安全性而引入的,它的作用相当于口令(password)。3.1.3 SNMP的安全机制
SNMP网络管理由几个特征,它包含一个管理站和一组代理之间的一对多的关系:管理站能够取得和设置代理中的对象,并从代理接收陷阱。因此,从操作或控制的观点来看,管理站“管理”多个代理。也可能有多个管理站,其中的每一个管理站管理全部代理或这些代理的一个子集,这些子集可能重叠。
我们也可以把SNMP网络管理看作是一个在一个代理和多个管理站之间的一对多的关系。每个代理控制它自己的本地MIB,而且必须能够控制多个管理站对该MIB 的使用。该控制有3个方面:
1.认证服务:代理可以把对MIB的访问限制在授权的管理站。
2.访问策略:代理可以给不同的管理站不同的访问特权。
3.转换代理服务:一个代理可以作为其它被管理站的转换代理。这可能包含在转换代理系统中,位其它的被管理系统实现认证服务和/或访问策略。
所有的这几方面都和安全考虑有关。代理需要保护自身和它的MIB,使它们不受到未被授权的访问。SNMP,对这种安全性,提供了团体的概念。
SNMP团体是一个在SNMP代理和多个SNMP管理者之间定义了认证、访问控制和转换代理特性的关系。团体的概念是一个在代理上定义的局部概念。代理为每个需要的认证、访问控制和转换代理特征的结合建立一个团体。每个团体有一个唯一的(在这个代理内部)团体名字,在那个团体内的管理站必须在所有Get和Set操作中使用该团体的名字。一个代理可以建立许多团体,这些团体可以包括重叠的管理站成员。
由于团体定义在代理本地上,不同的代理可以用相同的名字。名字的相同是无关紧要的,不表明在被定义的团体之间有任何相似之处。因此,管理站必须保持那些它所希望访问的代理的团体名字。
因为SNMP中的团体名字是一个字符串的形式,所以该名字又被称为团体字符串。
3.1.4 认证服务
认证服务的目的是要保证通信是被授权的。对于一个SNMP消息,认证服务的功能是保证接收消息来自于这个消息所声称的源。SNMP提供了一个简单的认证方案。从一个管理站到一个代理的每一个消息(获取或设置请求)都包括一个团体名字(community)。这个名字起到一个密码的作用,如果发送者知道这个密码,消息就认为是可靠的。代理可以要求管理站在其发来的报文中填写这一项,以验证管理站是否有权访问它上面的MIB信息。团体名字的缺点是没有加密功能,由于是明码传送的,所以很容易被监听者窃取。SNMPv2中改进了这一点。
3.1.5访问策略
通过定义一个团体,代理把对它的MIB的访问限制在被选择的管理站。通过使用多个团体,代理可以为不同的管理站提供不同的MIB访问类别。访问控制由两个方面:1.SNMP MIB视域:在MIB中的一个对象子集。每个团体,可以定义不同的MIB视域。在一个视域中的对象集不必属于MIB的单个子树。
2.SNMP访问模式:集合{只读,读写}的一个元素。每个团体,只定义一个访