SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
从被管理设备中收集数据有两种:一种是轮询(polling-only),另一种基于中断(interrupt-based)。如果只使用只轮询,那么网络管理工作站总是在控制之下。而这种方法的缺陷在于信息的实时性,尤其是错误的实时性。你多久轮询一次,并且在轮询时按照什么样的设备顺呢?如果轮询间隔太小,那么将产生太多不必要的通信量。如果轮询间隔太大,并且在轮询时顺序不对,那么关于一些大的灾难性的事件的通知又会太馒。这就违背了积极主动的网络管理目的。当有异常事件发生时,基于中断的方法可以立即通知网络管理工作站(在这里假设该设备还没有崩溃,并且在被管理设备和管理工作站之间仍有一条可用的通信途径)。然而,这种方法也不是没有他的缺陷的,首先,产生错误或陷需要系统资源。如果自陷必须转发大量的信息,那么被管理设备可能不得不消耗更多的时间和系统资源来产生自陷,从而影响了它执行主要的功能(违背了网络管理的原则 2)。 而且,如果几个同类型的自陷事件接连发生,那么大量网络带宽可能将被相同的信息所占用(违背了网络管理的原则 1)。尤其是如果自陷是关于网络拥挤问题的时候,事情就会变得特别糟糕。
SNMP主要动作:get/set/getnext/GetResponse/trap
自陷大概就是trap,我的理解是:被管理的设备在发生某些致命错误是,主动向工作站发信息。
trap不完全都是告警,准确的说是一种通知,是agent主动向manager上报,且这种操作与GetRequest等不同的是他不需要对方确认。snmp还是以轮循为主,因为trap更加不可靠。
Trap被agent用来向manager报告某一异常事件的发生。这些事件在MIB中事先经过定义。RFC里定义了7个TRAP,其中enterpriseSpecific是企业可以自己定义的。当然,根据需要,各个厂商也可以自定义TRAP。
MIB-II中预定义的7个陷阱:
1. ColdStart(0):代理进程重新初始化,配置和协议实体可能变化
2. WarmStart(1) :代理进程重新初始化,配置和协议实体没有变化
3. LinkDown(2):某一条通讯链路失效。
4. LinkUp(3):通讯链路恢复正常
5. AuthenticationFail(4):代理收到没有通过授权鉴别的报文
6. EgpneighborLoss(5):和EGP相邻节点的连接中断。
7. EnterpriseSpecific(6):发生企业自定义的事件。