简单网络管理协议(SNMP)

来源:互联网 发布:手机淘宝我是商家在哪 编辑:程序博客网 时间:2024/06/04 09:00

         Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。SNMP被设计成与协议无关,所以它可以在IPIPXAppleTalkOSI以及其他用到的传输协议上被使用。

    SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。

    SNMP协议组包含:

        管理信息库(MIB)

        管理信息的结构和标识(SMI)

        简单网络管理协议(SNMP)

    从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。

    如果你只使用只轮询的方法,那么网络管理工作站总是在控制之下。而这种方法的缺陷在于信息的实时性,尤其是错误的实时性。你多久轮询一次,并且在轮询时按照什么样的设备顺序呢?如果轮询间隔太小,那么将产生太多不必要的通信量。如果轮询间隔太大,并且在轮询时顺序不对,那么关于一些大的灾难性的事件的通知又会太馒。

    当有异常事件发生时,基于中断的方法可以立即通知网络管理工作站(在这里假设该设备还没有崩溃,并且在被管理设备和管理工作站之间仍有一条可用的通信途径)。然而,这种方法也不是没有他的缺陷的,首先,产生错误或自陷需要系统资源。如果自陷必须转发大量的信息,那么被管理设备可能不得不消耗更多的时间和系统资源来产生自陷,从而影响了它执行主要的功能。

    注意:在被管理设备中的代理并不是自愿提供信息的,除非当有一个阈值被超过的事件发生时。

    在一些偶然的情况下,在一个特定的设备上可能因为系统资源的缺乏,或者因为该设备不支持SNMP代理所需要的传输协议,而不能实现一个SNMP代理。这是否就意味着你不能监视这个设备呢?答案并不是这样的,在这种情况下并不是完全没有办法的。你可以使用受托代理(proxy agent),它相当于外部设备(foreign device)。

    MIB:管理信息库     

    一个MIB描述了包含在数据库中的对象或表项。每一个对象或表项都有以下四个属性:
·   对象类型(Object Type)
·   语法(Syntax)
·   存取(Access)
·   状态(Status)

    SMI:定义了MIB中4个属性。

    SNMP:允许网络管理工作站软件与被管理设备中的代理进行通信,这种通信可以包括来自管理工作站的询问消息、来自代理的应答消息或者来自代理给管理工作站的自陷消息。

    为保证因网络管理而带来的通信量是最小,SNMP使用了一种异步客户机/服务器方法。这意味着一个SNMP实体(管理工作站或被管理设备)在发出一条消息后不需要等待一个应答;然而,除了自陷的情况以外应答都是要被产生的。如果需要的话该实体可以发送另一条消息,或者也可以继续它预先被定义的功能。SNMPv1实现起来很简单并且对资源占用不多,它只有5个请求/响应原语:

   

1、 get-request
2、 set-request
3、get-next-request
4、 get-reponse
5、trap
    网络管理工作站提取所需变量值到其应用程序中,只要发出get-request或get-next-request报文即可。前者是指定对象的读操作,后者则提供了一个树遍历操作符,便于确定一个代理进程支持哪些对象。
    网络管理工作站可以修改代理进程中的变量值,只要发出set-request报文即可。
    如果没有发生错误,代理进程可以用get-reponse原语回答这些请求。
    另外,利用trap原语,代理进程可以异步地发送告警给网络管理工作站,告诉它发生了某个满足预设条件的事件。
    实现中的经验和设计过程中的不断完善给SNMPv2带来了协议改进意见,即给网络管理工作站增加一个成块读操作get-bulk-request报文。当需要用一个请求原语提取大量数据(如读取某个表的内容)时就可以调用它以提高效率。SNMPv2也引进管理进程和管理进程之间的通信进行状况报告,为此增加了一条原语inform-request,并把get-response简化成更加合理的名称reponse。trap报文则已改为snmpv2-trap,并与所有的协议报文具有同样的格式。

    而且,如果几个同类型的自陷事件接连发生,那么大量网络带宽可能将被相同的信息所占用。尤其是如果自陷是关于网络拥挤问题的时候,事情就会变得特别糟糕。克服这一缺陷的一种方法就是对于被管理设备来说,应当设置关于什么时候报告问题的阈值(threshold)。但不幸的是这种方法可能再一次违背了网络管理的原则2,因为设备必须消耗更多的时间和系统资源,来决定一个自陷是否应该被产生。
    结果,以上两种方法的结合:面向自陷的轮询方法(trap-directed polling)可能是执行网络管理最为有效的方法了。一般来说,网络管理工作站轮询在被管理设备中的代理来收集数据,并且在控制台上用数字或图形的表示方式来显示这些数据。这就允许网络管理员分析和管理设备以及网络通信量了。
    被管理设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。这些错误情况就是众所周知的SNMP自陷(trap)。
   
    在这种结合的方法中,当一个设备产生了一个自陷时,你可以使用网络管理工作站来查询该设备(假设它仍然是可到达的),以获得更多的信息。
    被管理设备:一个包含网络管理代理实现的网络设备
    代理:管理代理(agent)是一种特殊的软件(或固件),它包含了关于一个特殊设备和/或该设备所处环境的信息。当一个代理被安装到一个设备上时,上述的设备就被列为被管理的
     
    代理是与网络管理控制台通信的软件或固件。在这个控制台的“链路”上可以执行以下任务:
     网络管理工作站可以从代理中获得关于设备的信息。
    网络管理工作站可以修改、增加或者删除代理中的表项。
    网络管理工作站可以为一个特定的自陷设置阈值。
    代理可以向网络管理工作站发送自陷。