网络管理和SNMP协议
出自:http://www.ccw.com.cn 季风 2002年07月18日 20:42
网络管理概述
目前网络技术日新月异,网络的复杂性在不断增长,对网络管理的要求也日益增加。
传统的系统管理员关心的问题是诸多问题,如安装配置、备份恢复、资源共享、系统安全和
性能优化等等,都是当今网络管理的重要方面。不仅如此,网络的复杂性使得被管理的对象
在系统中不是集中的,而是分散的。分布式的管理必然要求网络管理员在网络的协议层次结
构上对系统管理做出重新的认识,即从物理层、链路层、网络层、传输层和应用层的角度重
新考虑系统管理的涵盖内容。综合了这诸多方面,加上面向应用(或业务)的管理能力,是
当今网络管理软件的主攻方向。
有关网络管理的内涵和网络管理软件的分类是需要另外撰文叙述的,本文只是简单地介绍网
络管理软件的基本要素和网络管理协议的例子——SNMP。
网络管理系统的要素
一个典型的网络管理系统包括四个要素:管理员、管理代理、管理信息数据库、代理服务设
备。一般说来,前三个要素是必需的,第四个只是可选项。
1.管理员(Manager)
网络管理软件的重要功能之一,就是协助网络管理员完成管理整个网络的工作。网络管理软
件要求管理代理定期收集重要的设备信息,收集到的信息将用于确定独立的网络设备、部分
网络、或整个网络运行的状态是否正常。管理员应该定期查询管理代理收集到的有关主机运
转状态、配置及性能等的信息。
2.管理代理(Agent)
网络管理代理是驻留在网络设备中的软件模块,这里的设备可以是UNIX工作站、网络打印机,
也可以是其它的网络设备。管理代理软件可以获得本地设备的运转状态、设备特性、系统配
置等相关信息。管理代理软件就象是每个被管理设备的信息经纪人,它们完成网络管理员布
置的采集信息的任务。管理代理软件所起的作用是,充当管理系统与管理代理软件驻留设备
之间的中介,通过控制设备的管理信息数据库(MIB)中的信息来管理该设备。管理代理软件
可以把网络管理员发出的命令按照标准的网络格式进行转化,收集所需的信息,之后返回正
确的响应。在某些情况下,管理员也可以通过设置某个MIB对象来命令系统进行某种操作。
路由器、交换器、集线器等许多网络设备的管理代理软件一般是由原网络设备制造商提供的,
它可以作为底层系统的一部分、也可以作为可选的升级模块。设备厂商决定他们的管理代理
软件可以控制哪些MIB对象,哪些对象可以反映管理代理软件开发者感兴趣的问题。
3.管理信息数据库(MIB)
管理信息数据库(MIB)定义了一种数据对象,它可以被网络管理系统控制。MIB是一个信息
存储库,这里包括了数千个数据对象,网络管理员可以通过直接控制这些数据对象去控制、
配置或监控网络设备。网络管理系统可以通过网络管理代理软件来控制MIB数据对象。不管到
底有多少个MIB数据对象,管理代理都需要维持它们的一致性,这也是管理代理软件的任务之
一。现在已经定义的有几种通用的标准管理信息数据库,这些数据库中包括了必须在网络设备
中支持的特殊对象,所以这几种MIB可以支持简单网络管理协议(SNMP)。使用最广泛、最通
用的MIB是MIB-II。为了利用不同的网络组件和技术,又开发了一些其它种类的MIB,它们在
RFC(Request for Comments)中有所记录。
4.代理设备(Proxy)
代理设备在标准网络管理员软件和不直接支持该标准协议的系统之间起桥梁作用。利用代理设
备,不需要升级整个网络就可以实现从旧协议到新版本的过渡。
对于网络管理系统来说,重要的是管理员和代理之间所使用的协议,如SNMP,和它们共同遵循
的MIB库。下面,我们就分别介绍。
SNMP协议概述
SNMP(Simple Network Management Protocol)即简单网络管理协议,它为网络管理系统提
供了底层网络管理的框架。SNMP协议的应用范围非常广泛,诸多种类的网络设备、软件和系统中
都有所采用,主要是因为SNMP协议有如下几个特点:
首先,相对于其它种类的网络管理体系或管理协议而言,SNMP易于实现。SNMP的管理协议、MIB
及其它相关的体系框架能够在各种不同类型的设备上运行,包括低档的个人电脑到高档的大型主
机、服务器、及路由器、交换器等网络设备。一个SNMP管理代理组件在运行时不需要很大的内存
空间,因此也就不需要太强的计算能力。SNMP协议一般可以在目标系统中快速开发出来,所以它
很容易在面市的新产品或升级的老产品中出现。尽管SNMP协议缺少其它网络管理协议的某些优点,
但它设计简单、扩展灵活、易于使用,这些特点大大弥补了SNMP协议应用中的其他不足。
其次,SNMP协议是开放的免费产品。只有经过IETF的标准议程批准(IETF是IAB下设的一个组织),
才可以改动SNMP协议;厂商们也可以私下改动SNMP协议,但这样作的结果很可能得不偿失,因为他
们必须说服其他厂商和用户支持他们对SNMP协议的非标准改进,而这样做却有悖于他们的初衷。
第三,SNMP协议有很多详细的文档资料(例如RFC,以及其它的一些文章、说明书等),网络业界
对这个协议也有着较深入的理解,这些都是SNMP协议近一步发展和改进的基础。
最后,SNMP协议可用于控制各种设备。比如说电话系统、环境控制设备,以及其它可接入网络且需
要控制的设备等,这些非传统装备都可以使用SNMP协议。
正是由于有了上述这些特点,SNMP协议已经被认为是网络设备厂商、应用软件开发者及终端用户的
首选管理协议。
SNMP是一种无连接协议,无连接的意思是它不支持象TELNET或FTP这种专门的连接。通过使用请求报
文和返回响应的方式,SNMP在管理代理和管理员之间传送信息。这种机制减轻了管理代理的负担,
它不必要非得支持其它协议及基于连接模式的处理过程。因此,SNMP协议提供了一种独有的机制来
处理可靠性和故障检测方面的问题。
另外,网络管理系统通常安装在一个比较大的网络环境中,其中包括大量的不同种类的网络和网络
设备。因此,为划分管理职责,应该把整个网络分成若干个用户分区,可以把满足以下条件的网络
设备归为同一个SNMP分区:它们可以提供用于实现分区所需要的安全性方面的分界线。SNMP协议支
持这种基于分区名(community string)信息的安全模型,可以通过物理方式把它添加到选定的分
区内的每个网络设备上。目前SNMP协议中基于分区的身份验证模型被认是为很不牢靠的,它存在一
个严重的安全问题。主要原因是SNMP协议并不提供加密功能,也不保证在SNMP数据包交换过程中不
能从网络中直接拷贝分区信息。只需使用一个数据包捕获工具就可把整个SNMP数据包解密,这样分
区名就暴露无遗。因为这个原因,大多数站点禁止管理代理设备的设置操作。但这样做有一个副作
用,这样一来只能监控数据对象的值而不能改动它们,限制了SNMP协议的可用性。
SNMP的命令和报文
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的
MIB数据对象。因此,可用于处理管理代理定义的各种任务。SNMP协议之所以易于使用,这是因为它
对外提供了三种用于控制MIB对象的基本操作命令。它们是:Set 、Get 和 Trap :
Set:它是一个特权命令,因为可以通过它来改动设备的配置或控制设备的运转状态。
Get:它是SNMP协议中使用率最高的一个命令,因为该命令是从网络设备中获得管理信息的基本方式。
Trap:它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特
别的情况或问题发生了。
SNMP协议也定义了执行以上三个命令时的报文流, 但它没有定义其它的设备管理代理命令,可应用
于MIB数据对象的操作只有Set和Get命令,这两个命令的目标是数据对象的值。比如说,SNMP协议中没
有定义reboot(重启)命令;然而,管理代理软件把MIB数据对象和设备的内部命令联系起来,这样就
可以实现某些特殊的命令操作。如果现在想要重启某个设备,管理系统就把某个与重启有关的MIB数据
对象的值设为1(我们的假定)。这样就会触发管理代理执行重新启动设备的命令,同时还把这个MIB数
据对象重新设置为原来的状态。
一条SNMP报文由三个部分组成:版本域(version field),分区域(community field)和SNMP协议
数据单元域(SNMP protocol data unit field),数据包的长度不是固定的。
版本域:这个域用于说明现在使用的是哪个版本的SNMP协议。目前,version 1是使用最广泛的SNMP协议。
分区域:分区(community)是基本的安全机制,用于实现SNMP网络管理员访问SNMP管理代理时的身份验证。
分区名(Community name)是管理代理的口令,管理员被允许访问数据对象的前提就是网络管理员知道网
络代理的口令。如果把配置管理代理成可以执行Trap命令,当网络管理员用一个错误的分区名查询管理代理
时,系统就发送一个autenticationFailure trap报文。
协议数据单元域:SNMPv1的PDU有五种类型,有些是报文请求(Request),有些则是响应(Response)。它
们包括:GetRequest、GetNextRequest、SetRequest、GetResponse、Trap 。SNMPv2又增加了两种PDU:
GetBulkRequest和InformRequest 。
SNMP管理员使用GetRequest从拥有SNMP代理的网络设备中检索信息,SNMP代理以GetResponse消息响应GetRequest。
可以交换的信息很多,如系统的名字,系统自启动后正常运行的时间,系统中的网络接口数等等。GetRequest
和GetNextRequest结合起来使用可以获得一个表中的对象。GetRequest取回一个特定对象;而使用GetNextRequest
则是请求表中的下一个对象。使用SetRequest可以对一个设备中的参数进行远程配置。Set-Request可以设置
设备的名字,关掉一个端口或清除一个地址解析表中的项。Trap即SNMP陷阱,是SNMP代理发送给管理站的非请
求消息。这些消息告知管理站本设备发生了一个特定事件,如端口失败,掉电重起等,管理站可相应的作出处理。
MIB概述
管理信息数据库(MIB)是一个信息存储库,它包含了管理代理中的有关配置和性能的数据,有一个组织体系和公
共结构,其中包含分属不同组的许多个数据对象。如下图所示。
MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标
识符。上图表示的是标准MIB的组织体系,列出了从MIB结构树的树根到各层树枝的全部内容。结构树的分枝实际表
示的是数据对象的逻辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示
增加的中间分枝和增加的树叶。
使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工
具,它可以遍历整棵MIB结构树,通常以图形显示的形式来表示各个分枝和树叶对象。可以通过其数字标识符来查
找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶子节点(即数据对象)为止。
这种访问方式和文件系统的组织方式一致。两者的主要区别在于文件系统中的路径名可以以绝对也可以以相对方式
表示,而MIB数据对象只能以绝对方式表示,不能使用相对方式。例如,在图中,iso(1)位于结构树的最上方,而
sysDescr(1)处在叶子节点的位置。现在看不到树根root(.),其余所有的分枝都是从这里扩展而来的。通常用
带点的符号来表示数据对象的标识符。要访问数据对象sysDescr(1),其完整的标识符应该是这样的:
iso.org.dod.internet.mgmt.mib-2.system.sysDescr(这个标识符应该从左向右读)。数据对象也可以以另一种更
短的格式表示,即用数字形式标识符代替分枝名形式的表示形式。这样,上面的那种形式的标识符
iso.org.dod.internet.mgmt.mib-2.system.sysDescr 还可以用 1.3.6.1.2.1.1.1 来表示。这两种表达格式的作
用是一致的,都表示同一个MIB数据对象。尽管数字形式的标识符看起来更简洁,选择何种表达格式仍然是个人偏好
问题。幸运的是,许多MIB浏览器可以以两者中任何一种格式来表示数据对象,这使得两种格式间的相互转化非常容易。
MIB的访问方式
在定义MIB数据对象时,访问控制信息确定了可作用于该数据对象的操作种类。SNMP协议有如下的MIB数据对象访问方式:
只读方式(Read-only)
可读可写(Read-write)
禁止访问(Not-accessible)
网络管理系统无法改动只读方式的MIB数据对象,但可以通过Get或Trap命令读取数据对象的值。在一件产品的使用期
内,某些MIB的信息从不会改变。例如,MIB数据对象sysDescr,它代表System Description,包含了管理代理软件所
需要的厂商信息。确定某些数据对象为只读还有另一个原因,即确保有关性能的信息及其它统计数据正确,不至于因误
操作而改动它们。
SNMP作为数据传输方法,和数据的组织形式MIB结合,为网络管理系统提供了底层的保障。一个真正的网络管理系统可以
建立在SNMP之上,也可以建立在其他的网络管理协议上,如CMIP等等,不过那也是需要另外撰文叙述的了。