网络治理概述
目前网络技术日新月异,网络的复杂性在不断增长,对网络治理的要求也日益增加。
传统的系统治理员关心的问题是诸多问题,如安装配置、备份恢复、资源共享、系统安全和性能优化等等,都是当今网络治理的重要方面。不仅如此,网络的复杂性使得被治理的对象在系统中不是集中的,而是分散的。分布式的治理必然要求网络治理员在网络的协议层次结构上对系统治理做出重新的熟悉,即从物理层、链路层、网络层、传输层和应用层的角度重新考虑系统治理的涵盖内容。综合了这诸多方面,加上面向应用(或业务)的治理能力,是当今网络治理软件的主攻方向。
有关网络治理的内涵和网络治理软件的分类是需要另外撰文叙述的,本文只是简单地介绍网络治理软件的基本要素和网络治理协议的例子——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等等,不过那也是需要另外撰文叙述的了。