简单网络管理协议(SNMP)(简单网络管理协议snmp处于网络体系结构的哪一层)
简单网络管理协议(SNMP)
本文内容来自于互联网,分享简单网络管理协议(SNMP)(简单网络管理协议snmp处于网络体系结构的哪一层)
简单网络管理协议(SNMP)
简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。许多人认为 SNMP在IP上运行的原因是Internet运行的是TCP/IP协议,然而事实并不是这样。
SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。
SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。
如果你只使用只轮询的方法,那么网络管理工作站总是在控制之下。而这种方法的缺陷在于信息的实时性,尤其是错误的实时性。你多久轮询一次,并且在轮询时按照什么样的设备顺序呢?如果轮询间隔太小,那么将产生太多不必要的通信量。如果轮询间隔太大,并且在轮询时顺序不对,那么关于一些大的灾难性的事件的通知又会太馒。这就违背了积极主动的网络管理目的。
当有异常事件发生时,基于中断的方法可以立即通知网络管理工作站(在这里假设该设备还没有崩溃,并且在被管理设备和管理工作站之间仍有一条可用的通信途径)。然而,这种方法也不是没有他的缺陷的,首先,产生错误或自陷需要系统资源。如果自陷必须转发大量的信息,那么被管理设备可能不得不消耗更多的时间和系统资源来产生自陷,从而影响了它执行主要的功能(违背了网络管理的原则2)。
而且,如果几个同类型的自陷事件接连发生,那么大量网络带宽可能将被相同的信息所占用(违背了网络管理的原则1)。尤其是如果自陷是关于网络拥挤问题的时候,事情就会变得特别糟糕。克服这一缺陷的一种方法就是对于被管理设备来说,应当设置关于什么时候报告问题的阈值(threshold)。但不幸的是这种方法可能再一次违背了网络管理的原则2,因为设备必须消耗更多的时间和系统资源,来决定一个自陷是否应该被产生。
结果,以上两种方法的结合:面向自陷的轮询方法(trap-directed polling)可能是执行网络管理最为有效的方法了。一般来说,网络管理工作站轮询在被管理设备中的代理来收集数据,并且在控制台上用数字或图形的表示方式来显示这些数据。这就允许网络管理员分析和管理设备以及网络通信量了。
被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。这些错误情况就是众所周知的SNMP自陷(trap)。
在这种结合的方法中,当一个设备产生了一个自陷时,你可以使用网络管理工作站来查询该设备(假设它仍然是可到达的),以获得更多的信息。
简单网络管理协议允许网络管理工作站软件与被管理设备中的代理进行通信。这种通信可以包括来自管理工作站的询问消息、来自代理的应答消息或者来自代理给管理工作站的自陷消息。为了保证因网络管理而带来的通信量是最小的(网络管理原则1),SNMP使用了一种异步客户机/服务器方法。这意味着一个SNMP实体(管理工作站或被管理设备)在发出一条消息后不需要等待一个应答;然而,除了自陷的情况以外应答都是要被产生的。如果需要的话该实体可以发送另一条消息,或者也可以继续它预先被定义的功能。SNMPv1实现起来很简单并且对资源占用不多,它只有5个请求/响应原语:
get-request
set-request
get-next-request
get-reponse
trap
网络管理工作站可以把感兴趣的变量值提取到其应用程序中,只要发出get-request或get-next-request报文即可。前者是指定对象的读操作,后者则提供了一个树遍历操作符,便于确定一个代理进程支持哪些对象。网络管理工作站可以修改代理进程中的变量值,只要发出set-request报文即可。
如果没有发生错误,代理进程可以用get-reponse原语回答这些请求。另外,利用trap原语,代理进程可以异步地发送告警给网络管理工作站,告诉它发生了某个满足预设条件的事件。
实现中的经验和设计过程中的不断完善给SNMPv2带来了协议改进意见,即给网络管理工作站增加一个成块读操作get-bulk-request报文。当需要用一个请求原语提取大量数据(如读取某个表的内容)时就可以调用它以提高效率。SNMPv2也引进管理进程和管理进程之间的通信进行状况报告,为此增加了一条原语inform-request,并把get-response简化成更加合理的名称reponse。trap报文则已改为snmpv2-trap,并与所有的协议报文具有同样的格式。