简单网络管理协议(SNMP)


  作为一名网络顾问或网络管理员,在你安装完网络并且设置了用户帐号和应用程式之后,你的工作并没有完成。你的下一个职责就是网络管理,他就好比是一场永远也不会结束的战斗相同。
  
  目前存在着两种类型的网络管理问题:一种是和软件相关的,例如数据安全性和存取许可;另一种是和硬件相关的问题。这里注重讨论第二种,即通过使用简单网络管理协议(SNMP)和在处理和软件相关的管理问题时所用到的一些思想,把网络硬件作为一个整体进行管理。
  
  介绍SNMP的英文网站非常多,但相关的中文网站寥寥无几,这正是鄙人设立本站的初衷所在。这里将从基本原理着手,介绍到底什么是 SNMP,并引导新手怎么亲自动手实践。在不久的将来我将给出LINUX和SOLARIS上基于X WINDOWS的简单发布和源码。
  
  1.什么是网络管理?
  网络管理分为两类。第一类是网络应用程式、用户帐号(例如文件的使用)和存取权限(许可)的管理。他们都是和软件有关的网络管理问题。这里不作讨论。
  
  网络管理的第二类是由构成网络的硬件所组成。这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。通常情况下这些设备都离你所在的地方非常远。正是由于这个原因,如果当设备有问题发生时网络管理员能自动地被通知的话,那么一切事情都好办。不过你的路由器不会象你的用户那样,当有一个应用程式问题发生时就能打电话通知你,而当路由器拥挤时他并不能够通知你。
  
  为了解决这个问题,厂商们已在一些设备中设立了网络管理的功能,这样你就能远程地询问他们的状态,同样能够让他们在有一种特定类型的事件发生时能够向你发出警告。这些设备通常被称为"智能"设备。
  
  网络管理通常被分为四类:
  


  当设计和构造网络管理的基础结构时,你需要记住下列两条网络管理的原则:
  
  1.由于管理信息而带来的通信量不应明显的增加网络的通信量。
  2.被管理设备上的协议代理不应明显得增加系统处理的额外开销,以致 于该设备的主要功能都被削弱了。
  
  2.什么是SNMP?
  简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。许多人认为 SNMP在IP上运行的原因是Internet运行的是TCP/IP协议,然而事实并不是这样。
  
  SNMP被设计成和协议无关,所以他能在IP,IPX,AppleTalk,OSI及其他用到的传输协议上被使用。
  
  SNMP是一系列协议组和规范(见下表),他们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
  
  名字 说明
  MIB 管理信息库
  SMI 管理信息的结构和标识
  SNMP 简单网络管理协议
  
  从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。
  
  如果你只使用只轮询的方法,那么网络管理工作站总是在控制之下。而这种方法的缺陷在于信息的实时性,尤其是错误的实时性。你多久轮询一次,并且在轮询时按照什么样的设备顺序呢?如果轮询间隔太小,那么将产生太多不必要的通信量。如果轮询间隔太大,并且在轮询时顺序不对,那么关于一些大的灾难性的事件的通知又会太馒。这就违背了积极主动的网络管理目的。
  
  当有异常事件发生时,基于中断的方法能即时通知网络管理工作站(在这里假设该设备还没有崩溃,并且在被管理设备和管理工作站之间仍有一条可用的通信途径)。然而,这种方法也不是没有他的缺陷的,首先,产生错误或自陷需要系统资源。如果自陷必须转发大量的信息,那么被管理设备可能不得不消耗更多的时间和系统资源来产生自陷,从而影响了他执行主要的功能(违背了网络管理的原则2)。
  
  而且,如果几个同类型的自陷事件接连发生,那么大量网络带宽可能将被相同的信息所占用(违背了网络管理的原则1)。尤其是如果自陷是关于网络拥挤问题的时候,事情就会变得特别糟糕。克服这一缺陷的一种方法就是对于被管理设备来说,应当设置关于什么时候报告问题的阈值(threshold)。但不幸的是这种方法可能再一次违背了网络管理的原则2,因为设备必须消耗更多的时间和系统资源,来决定一个自陷是否应该被产生。
  
  结果,以上两种方法的结合:面向自陷的轮询方法(trap-directed polling)可能是执行网络管理最为有效的方法了。一般来说,网络管理工作站轮询在被管理设备中的代理来收集数据,并且在控制台上用数字或图像的表示方式来显示这些数据。这就允许网络管理员分析和管理设备及网络通信量了。
  
  被管理设备中的代理能在所有时候向网络管理工作站报告错误情况,例如预制定阈值越界程度等等。代理并不必等到管理工作站为获得这些错误情况而轮询他的时候才会报告。这些错误情况就是众所周知的SNMP自陷(trap)。
  
  在这种结合的方法中,当一个设备产生了一个自陷时,你能使用网络管理工作站来查询该设备(假设他仍然是可到达的),以获得更多的信息。
  
  3.什么是被管理设备?
  你可能听说过许多关于“SNMP可管理设备”、“和SNMP兼容的设备”或“被SNMP管理的设备”的说法。不过他们到底什么?他们和“智能设备”又是怎么差别的呢?
  
  简单地说,以上所有说法的意思都是“一个包含网络管理代理实现的网络设备”。这些话也意味着这种代理支持SNMP协议来进行信息交换。正如前面所提到的,一个智能设备可能并不必使用或支持SNMP协议。那么什么是个代理呢?
  
  代理
  管理代理(agent)是一种特别的软件(或固件),他包含了关于一个特别设备和/或该设备所处环境的信息。当一个代理被安装到一个设备上时,上述的设备就被列为“被管理的”。换句话说,代理就是个数据库。
  
  数据库中所包含的数据随被安装设备的不同而不同。举例来说,在一个路由器上,代理将包含关于路由选择表、接收和发送包的总数等信息。而对于一个网桥来说,数据库可能包含关于转发包数目和过滤表等信息。
  
  代理是和网络管理控制台通信的软件或固件。在这个控制台的“链路”上能执行以下任务:
  
  ● 网络管理工作站能从代理中获得关于设备的信息。
  ● 网络管理工作站能修改、增加或删除代理中的表项,例如在由代理所维护的数据库中的路由选择表表项。
  ● 网络管理工作站能为一个特定的自陷设置阈值。
  ● 能向网络管理工作站发送自陷。
  
  请记住,在被管理设备中的代理并不是自愿提供信息的,除非当有一个阈值被超过的事件发生时。
  
  在一些偶然的情况下,在一个特定的设备上可能因为系统资源的缺乏,或因为该设备不支持SNMP代理所需要的传输协议,而不能实现一个SNMP代理。这是否就意味着你不能监视这个设备呢?答案并不是这样的,在这种情况下并不是完全没有办法的。你能使用受托代理(proxy agent),他相当于外部设备(foreign device)。
  
  受托代理并非在被管理的外部设备上运行,而是在另一个设备上运行。网络管理工作站首先和受托代理联系,并且指出(通过某种方法)受托代理和外部设备的一致性。然后受托代理把他接收到的协议命令翻译成所有一种外部设备所支持的管理协议。在这种情况下,受托代理就被称为应用程式网关(application gateway)。
  
  如果外部设备不支持所有管理协议,那么受托代理必须使用一些被动的方法来监视这个设备。举例来说,一个令牌环网桥的受托代理能监视他的性能,并且如果他检测到所有由网桥所报告的拥挤错误时,他就会产生自陷。幸运的是,目前大多数网际互联设备类型都是支持SNMP可管理设备的,所以你能非常容易地使用一个SNMP可管理设备,例如集线器、网桥和路由器。有一些厂商甚至还在他们的网卡上提供SNMP代理。
  
  MIB
  我们通常非常少把在一个被管理设备中的数据库称为一个数据库。在SNMP术语中他通常被称为管理信息库(MIB)。
  
  一个MIB描述了包含在数据库中的对象或表项。每一个对象或表项都有以下四个属性:
  
  ● 对象类型(Object Type)
  ● 语法(Syntax)
  ● 存取(Access)
  ● 状态(Status)
  在SNMP规范之一的管理信息结构和标识(SMI;RFC 1155/1065)规范中定义了这些属性。SMI对于MIB来说就相当于模式对于数据库。SMI定义了每一个对象“看上去象什么”。
  
  对象类型
  这个属性定义了一个特定对象的名字,例如sysUpTime。他只不过是个标记。在表示数据时,SMI使用了ASN.1(Abstract Syntax Notation One)。对象必须被“标识”。对于互连网络管理MIB来说,用ASN.1记法来表示的标识符开头如下:
  
  internet OBJECT IDENTIFIER : : = { iso org(3) dod(6) 1 }
  
  或用一种简单的格式:
  
  1.3.6.1
  
  这是从ASN.1文件中抽取的。他为标识符定义了一个树形的格式。该树是由一个根及和之相连接的许多被标记的节点组成。每一个节点由一个非负整数值和尽可能简明的文字说明所标识。每一个节点可能也拥有同样被标记的子节点。
  
  当描述一个对象标识符(OBJECT INDENTIFIER)时,你能使用几种格式,最简单的格式是列出由根开始到所讨论的对象遍历该树所找到的整数值。  从根一级开始,这里有三个节点(如图):
  
  ● ccitt(0)
  ● iso(1)
  ● joint-iso-cci


 

 

你可能感兴趣的:(windows下网络编)