在SNMP协议的学习中,我们一直都在对Linux SNMP这部分知识进行深化讲解。那么接下来我们主要针对两部分内容进行解析。首先是对SNMP命令的介绍,之后再对SNMP代理进行分析。希望从中能让大家掌握到Linux SNMP中重要的知识。
SNMP命令
SNMP命令是我们操作Linux SNMP的一些快捷方式。SNMP协议(Simple Network Management Protocol)即简单网络管理协议,它为网络管理系统提供了底层网络管理的框架。
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作SNMP命令。
它们是:Set 、Get 和 Trap :
Set:它是一个特权SNMP命令,因为可以通过它来改动设备的配置或控制设备的运转状态。
Get:它是SNMP协议中使用率***的一个SNMP命令,因为该SNMP命令是从网络设备中获得管理信息的基本方式。
Trap:它的功能就是在网络管理系统没有明确要求的前提下,由管理代理通知网络管理系统有一些特别的情况或问题发生了。
SNMP协议也定义了执行以上三个SNMP命令时的报文流, 但它没有定义其它的设备管理代理SNMP命令,可应用于MIB数据对象的操作只有Set和Get命令,这两个命令的目标是数据对象的值。
比如说,SNMP协议中没有定义reboot(重启)SNMP命令;然而,管理代理软件把MIB数据对象和设备的内部SNMP命令联系起来,这样就可以实现某些特殊的命令操作。如果现在想要重启某个设备,管理系统就把某个与重启有关的MIB数据对象的值设为1(我们的假定)。
这样就会触发管理代理执行重新启动设备的SNMP命令,同时还把这个MIB数据对象重新设置为原来的状态。
你可能听说过许多关于“Linux SNMP可管理设备”、“与Linux SNMP兼容的设备”或者“被Linux SNMP管理的设备”的说法。但是它们到底什么?它们与“智能设备”又是怎么区别的呢?
简单地说,以上所有说法的意思都是“一个包含网络管理代理实现的网络设备”。这些话也意味着这种代理支持Linux SNMP协议来进行信息交换。正如前面所提到的,一个智能设备可能并不需要使用或支持Linux SNMP协议。那么什么是一个代理呢?
SNMP代理
管理代理(agent)是一种特殊的软件(或固件),它包含了关于一个特殊设备和/或该设备所处环境的信息。当一个代理被安装到一个设备上时,上述的设备就被列为“被管理的”。换句话说,代理就是一个数据库。
数据库中所包含的数据随被安装设备的不同而不同。举例来说,在一个路由器上,代理将包含关于路由选择表、接收和发送包的总数等信息。而对于一个网桥来说,数据库可能包含关于转发包数目和过滤表等信息。
代理是与网络管理控制台通信的软件或固件。在这个控制台的“链路”上可以执行以下任务:
◆网络管理工作站可以从代理中获得关于设备的信息。
◆网络管理工作站可以修改、增加或者删除代理中的表项,例如在由代理所维护的数据库中的路由选择表表项。
◆网络管理工作站可以为一个特定的自陷设置阈值。
◆可以向网络管理工作站发送自陷。
请记住,在被管理设备中的代理并不是自愿提供信息的,除非当有一个阈值被超过的事件发生时。
在一些偶然的情况下,在一个特定的设备上可能因为系统资源的缺乏,或者因为该设备不支持Linux SNMP代理所需要的传输协议,而不能实现一个Linux SNMP代理。这是否就意味着你不能监视这个设备呢?答案并不是这样的,在这种情况下并不是完全没有办法的。你可以使用受托代理(proxy agent),它相当于外部设备(foreign device)。
受托代理并非在被管理的外部设备上运行,而是在另一个设备上运行。网络管理工作站首先与受托代理联系,并且指出(通过某种方法)受托代理与外部设备的一致性。然后受托代理把它接收到的协议命令翻译成任何一种外部设备所支持的管理协议。在这种情况下,受托代理就被称为应用程序网关(application gateway)。
如果外部设备不支持任何管理协议,那么受托代理必须使用一些被动的方法来监视这个设备。举例来说,一个令牌环网桥的受托代理可以监视它的性能,并且如果它检测到任何由网桥所报告的拥挤错误时,它就会产生自陷。
幸运的是,目前大多数网际互联设备类型都是支持Linux SNMP可管理设备的,所以你可以很容易地使用一个Linux SNMP可管理设备,例如集线器、网桥和路由器。有一些厂商甚至还在他们的网卡上提供Linux SNMP代理。