第4章 SNMP网络管理体系结构CMIP网络管理体系结构对系统模型、信息模型和通信协议几个方面都提出了比较完备和理想的解决方案,为其他网络管理体系结构建立了理想参考标准。
SNMP网络管理体系结构是为了管理基于TCP/IP协议的网络而提出的,与TCP/IP协议与OSI协议的关系类似,SNMP与CMIP相比,突出的特点是简单。
这一特点使SNMP得到了广泛的支持和应用,特别是在Internet上的成功应用,使得它的重要性越来越突出,目前已经成为CMIP之外的最重要的网络管理体系结构。
4.1 SNMP体系结构4.1.1 TCP/IP网络管理的发展在TCP/IP的早期开发中,网络管理问题并未得到太大的重视。
直到70年代,还一直没有网络管理协议,只有互联网络控制信息协议(ICMP)可以作为网络管理的工具。
ICMP提供了从路由器或其它主机向主机传送控制信息的方法,可用于所有支持IP的设备。
从网络管理的观点来看,ICMP最有用的特性是回声(echo)和回声应答(echo reply)消息对。
这个消息对为测试实体间能否通信提供了一个机制。
echo消息要求其接收者在echo reply消息中返回接收到的内容。
另一个有用的消息对是时间戳(timestamp)和时间戳应答(timestamp reply),这个消息对为测试网络延迟特性提供了机制。
与各种IP头选项结合,这些ICMP消息可用来开发一些简单有效的管理工具。
典型的例子是广泛应用的分组互联网络探索(PING)程序。
利用ICMP加上另外的选项如请求间隔和一个请求的发送次数,PING能够完成多种功能。
包括确定一个物理网络设备能否寻址,验证一个网络能够寻址,和验证一个主机上的服务器操作。
PING在一些工具的配合下满足了TCP/IP网络初期的管理要求。
但是到了80年代后期,当互联网络的发展呈指数增加时,人们感到需要开发比PING功能更强并易于普通网络管理人员学习和使用的标准协议。
因为当网络中的主机数量上百万,独立网络数量上千的时候,已不能只依靠少数网络专家解决管理问题了。
1987年11月发布了简单网关监控协议(SGMP),成为提供专用网络管理工具的起点。
SGMP提供了一个直接监控网关的方法。
随着对通用网络管理工具需求的增长,出现了3个有影响的方法。
1.高层实体管理系统(HEMS):主机监控协议(HMP)的一般化。
2.简单网络管理协议(SNMP):SGMP的升级版。
3.TCP/IP上的CMIP(CMOT):最大限度地与OSI标准的CMIP、服务以及数据库结构保持一致。
1988年,互联网络活动会议(IAB)确定了将SNMP作为近期解决方案进一步开发,而把CMOT作为远期解决方案的策略。
当时普遍认为:TCP/IP不久将会过渡到OSI,因而不应在TCP/IP的应用层协议和服务上花费太多的精力。
SNMP开发速度快,并能为网络管理经验库的开发提供一些基本的工具,可用来满足眼前的需要。
为了强化这一策略,IAB要求SNMP和CMOT使用相同的被管对象数据库。
即在任何主机、路由器、网桥以及其它管理设备中,两个协议都以相同的格式使用相同的监控变量。
因此,两个协议有一个公共的管理信息结构(SMI),和一个管理信息库MIB。
但是,人们很快发现这两个协议在对象级的兼容是不现实的。
在OSI的网络管理中,被管对象是很成熟的,它具有属性、相关的过程、通报以及其它一些与面向对象有关的复杂的特性。
而SNMP为了保持简单性,没有这样复杂的概念。
实际上,SNMP的对象在面向对象的概念下根本就不能称为对象,它们只是带有一些如数据类型、读写特性等基本特性的变量。
因此IAB最终放松了公共SMI/MIB的条件,并允许SNMP 独立于CMOT发展。
从对OSI的兼容性的束缚中解脱后,SNMP取得了迅速的发展,很快被众多的厂商设备所支持,并在互联网络中活跃起来。
而且,普通用户也选择了SNMP作为标准的管理协议。
SNMP最重要的进展是远程监控(RMON)能力的开发。
RMON为网络管理者提供了监控整个子网而不是各个单独设备的能力。
除了RMON,还对基本SNMP MIB进行了扩充。
有些扩充采用标准的网络接口,例如令牌环(token ring)和光纤分布数据接口(FDDI),这种扩充是独立于厂商的。
但是,单靠定义新的或更细致的MIB扩充SNMP是有限的。
当SNMP被用于大型或复杂网络时,它在安全和功能方面的不足就变得明显了。
为了弥补这些不足,1992年7月发表了3个增强SNMP安全性的文件作为建议标准。
增强版与原来的SNMP是不兼容的,它需要改变外部消息句柄及一些消息处理过程。
但实际定义协议操作并包含SNMP消息的协议数据单元(PDU)保持不变,并且没有增加新的PDU。
目的是尽量实现向SNMP的安全版本的平滑过渡。
但是这个增强版受到了另一个方案的冲击。
同样是在1992年7月,四名SNMP的关键人物提出一个称为SMP的SNMP新版本。
并实现了四个可互操作的方案。
两个是商业产品,两个是公开软件。
SMP在功能和安全性两方面提高了SNMP,特别是SMP增加了一些PDU。
所有的消息头和安全功能都与提议的安全性增强标准相似。
最终SMP被接受为定义第二代SNMP即SNMPv2的基础。
1993年安全版SNMPv2发布。
经过几年试用以后,IETF(Internet Engineering Task Force) 决定对SNMPv2进行修订。
1996年发布了一组新的RFC (Request For Comments),在这组新的文档中,SNMPv2的安全特性被取消了,消息格式也重新采用SNMPv1的基于“共同体(community)”概念的格式。
删除SNMPv2中的安全特性是SNMPv2发展过程中最大的失败。
主要原因是厂商和用户对1993版的SNMPv2的安全机制不感兴趣,同时IETF要求的修订时间也非常紧迫,设计者们来不及对安全机制进行改善,甚至来不及对存在的严重缺陷进行修改。
因此不得不在1996年版的SNMPv2中放弃了安全特性。
1999年4月IETF SNMPv3工作组提出了RFC2571~RFC2576,形成了SNMPv3的建议。
目前,这些建议正在进行标准化。
SNMPv3提出了SNMP管理框架的一个统一的体系结构。
在这个体系结构中,采用User-based安全模型和View-based访问控制模型提供SNMP网络管理的安全性。
安全机制是SNMPv3的最具特色的内容。
4.1.2 SNMP基本框架1) 网络管理体系结构SNMP的网络管理模型包括以下关键元素:管理站、代理者、管理信息库、网络管理协议。
管理站一般是一个分立的设备,也可以利用共享系统实现。
管理站被作为网络管理员与网络管理系统的接口。
它的基本构成为:·一组具有分析数据、发现故障等功能的管理程序;·一个用于网络管理员监控网络的接口;·将网络管理员的要求转变为对远程网络元素的实际监控的能力;·一个从所有被管网络实体的MIB中抽取信息的数据库。
网络管理系统中另一个重要元素是代理者。
装备了SNMP的平台,如主机、网桥、路由器及集线器均可作为代理者工作。
代理者对来自管理站的信息请求和动作请求进行应答,并随机地为管理站报告一些重要的意外事件。
与CMIP体系相同,网络资源也被抽象为对象进行管理。
但SNMP中的对象是表示被管资源某一方面的数据变量。
对象被标准化为跨系统的类,对象的集合被组织为管理信息库(MIB)。
MIB作为设在代理者处的管理站访问点的集合,管理站通过读取MIB中对象的值来进行网络监控。
管理站可以在代理者处产生动作,也可以通过修改变量值改变代理者处的配置。
管理站和代理者之间通过网络管理协议通信,SNMP通信协议主要包括以下能力:Get:管理站读取代理者处对象的值;Set:管理站设置代理者处对象的值;Trap:代理者向管理站通报重要事件。
在标准中,没有特别指出管理站的数量及管理站与代理者的比例。
一般地,应至少要有两个系统能够完成管理站功能,以提供冗余度,防止故障。
另一个实际问题是一个管理站能带动多少代理者。
只要SNMP 保持它的简单性,这个数量可以高达几百。
2) 网络管理协议体系结构SNMP为应用层协议,是TCP/IP协议族的一部分。
它通过用户数据报协议(UDP)来操作。
在分立的管理站中,管理者进程对位于管理站中心的MIB的访问进行控制,并提供网络管理员接口。
管理者进程通过SNMP 完成网络管理。
SNMP在UDP、IP及有关的特殊网络协议(如,Ethernet, FDDI, X.25)之上实现。
每个代理者也必须实现SNMP、UDP和IP。
另外,有一个解释SNMP的消息和控制代理者MIB的代理者进程。
SNMP管理站SNMP代理者图4.1 SNMP的协议环境图4.1描述了SNMP的协议环境。
从管理站发出3类与管理应用有关的SNMP的消息GetRequest、GetNextRequest、SetRequest。
3类消息都由代理者用GetResponse消息应答,该消息被上交给管理应用。
另外,代理者可以发出Trap消息,向管理者报告有关MIB及管理资源的事件。
由于SNMP依赖UDP,而UDP是无连接型协议,所以SNMP也是无连接型协议。
在管理站和代理者之间没有在线的连接需要维护。
每次交换都是管理站和代理者之间的一个独立的传送。
3) 陷阱引导轮询(Trap-directed polling)如果管理站负责大量的代理者,而每个代理者又维护大量的对象,则靠管理站及时地轮询所有代理者维护的所有可读数据是不现实的。
因此管理站采取陷阱引导轮询技术对MIB进行控制和管理。
所谓陷阱引导轮询技术是:在初始化时,管理站轮询所有知道关键信息(如接口特性、作为基准的一些性能统计值,如发送和接收的分组的平均数)的代理者。
一旦建立了基准,管理站将降低轮询频度。
相反地,由每个代理者负责向管理站报告异常事件。
例如,代理者崩溃和重启动、连接失败、过载等。
这些事件用SNMP的trap消息报告。
管理站一旦发现异常情况,可以直接轮询报告事件的代理者或它的相邻代理者,对事件进行诊断或获取关于异常情况的更多的信息。
陷阱引导轮询可以有效地节约网络容量和代理者的处理时间。
网络基本上不传送管理站不需要的管理信息,代理者也不会无意义地频繁应答信息请求。
4) 代管(Proxies)利用SNMP需要管理站及其所有代理者支持UDP和IP。
这限制了在不支持TCP/IP协议的设备(如网桥、调制解调器)上的应用。
并且,大量的小系统(PC、工作站、可编程控制器)虽然支持TCP/IP协议,但不希望承担维护SNMP、代理者软件和MIB的负担。
为了容纳没有装载SNMP的设备,SNMP提出了代管的概念。