摘要 本文描述了SNMP协议,MIB库和它们在Cisco路由器上的实现以及Cisco路由器对SNMPv3和SNMP over IPv6的支持状况。
了解SNMP管理框架 SNMP(Simple Network Management Protocol,简单网络管理协议)是一个应用层协议,提供了SNMP管理者和SNMP代理间报文格式的消息通信。它规定了在网络环境中对设备进行监视和管理的标准化管理框架,通信的公共语言和相对应的安全控制机制。
SNMP管理框架包含有四个组成部分:
SNMP管理者 SNMP代理 一个用于在SNMP实体间传输管理信息的管理协议
MIB库(Management Information Base,管理信息库)
SNMP管理者是一个利用SNMP协议对网络节点进行控制和监视的系统。其中网络环境中最常见的SNMP管理者被称为网络管理系统(NMS,Network Management System)。网络管理系统既可以指一台专门用来进行网络管理的服务器,也可以指某个网络设备中执行管理功能的一个应用程序。现在市场上有众多软硬件厂商提供有支持SNMP协议的网络管理系统,如Cisco公司的CiscoWorks系列网络管理软件产品。
SNMP代理是被管理设备中的一个软件模块,用来维护被管理设备的管理信息数据并可在需要时把管理数据汇报给一个SNMP管理系统。SNMP代理和相关的MIB库存在于网络设备中(如Cisco路由器,交换机,接入服务器等等)。
MIB库是一个保存网络管理信息的虚拟数据存储空间,由多组被管理对象组成。在设备MIB库中有由多个MIB模块定义的多组各自相关联的对象。每个MIB模块都是利用标准的SNMP MIB模块语言撰写的,具体遵循的标准定义在IETF(Internet Engineering Task Force,一个国际标准化组织) STD58,RFC2579和RFC2580文档中(请参见本文“MIB和RFC”一节了解STD文档和RFC
文档的解释)。需要注意的是,每一个单独的MIB模块有时也会被称为一个MIB,如设备接口组MIB(IF-MIB)就是设备MIB库中的一个MIB模块。
SNMP代理中保存有MIB对象变量,变量的数值可以被SNMP管理者通过Get或Set操作进行读取和修改。一个SNMP管理者可以从SNMP代理中读取一个变量的数值或把一个数值存储到SNMP代理的一个变量中。SNMP代理从代表设备参数和网络运行数据的MIB库中采集数据,且可以对SNMP管理者的Get和Set操作进行应答。
下图勾画出了SNMP管理者和SNMP代理间的通信关系。一个SNMP管理者可以向SNMP代理发送请求,读取(Get)或设置(Set)一个或多个MIB变量数值。SNMP代理可以应答这些请求。除了这种交互式通信方式,SNMP代理还可以主动向SNMP管理者发送通知(Trap或Inform Request)以提示管理者一个设备或网络状态。
图一:SNMP管理者与SNMP代理间的通信
SNMP通知 SNMP协议的一个重要特性是SNMP代理具有产生通知的能力。通知不需要SNMP管理者请求就会主动发送,发送采用异步方式,形式可分为Trap和Inform Request(简称Inform)两种。Trap是发送给SNMP管理者的通知网络状况的警告消息,而Inform是需要SNMP管理者确认接收的Trap。SNMP通知可以用于指示网络中出现的不正确用户授权,重启,连接关闭,设备通信中断或其它异常事件。
与Inform相比较,Trap通知方式为不可靠传输,因为接收者在收到一条Trap通知后无需回复任何确认信息,发送者无法知道Trap通知是否已经被正确接收。与此相对应,当SNMP管理者收到一条Inform通知后它需要向发送者回复一条确认信息,使用的是SNMP应答数据包(PDU)。如果SNMP管理者没有接收到Inform通知,它将不会发送任何应答,所以当发送者无法接受到期望的应答时,它将再次发送一条Inform通知给SNMP管理者。这种方式保证了Inform通知方式可以较有保证地把通知发送到期望的目的地。
图三:一条Inform通知发送给SNMP管理者
然而在多数情况下,Trap通知方式被较多采用,因为Inform方式将会耗用更多的网络和设备资源。与Trap通知方式不同的是,被管理设备不能在发送后立即把一条Inform通知丢弃,它需要把通知信息保存在系统内存中直到收到相应的确认应答或设备规定的计时器超时。由此可见一条Trap通知只会被发送一次,而Inform通知可能会被重复发送多次。这种重复发送将会增加网络流量,造成网络额