2008年12月23日星期二

SNMP协议

SNMP并不是单个协议,它由三个协议组成,这三个协议用于网络管理。组成SNMP协议的三个协议及功能如下所示:

1、管理信息库MIB:包含状态信息的数据库 management information base

2、管理信息的结构与标识SMI:定义MIB的入口 structure of management information

3、简单网络管理协议SNMP:受管理的对象与服务器间的通信方法

受SNMP管理的设备可与位于网络某处的SNMP服务器通信。设备与服务器有两种通信方式:投票与中断。

投票是由服务器按照一定的时间间隔询问被管理设备的当前状态或统计信息。

在基于中断的SNMP系统中,当受管理的设备出现异常时向服务器发送消息。

通常,我们将投票与中断结合使用以弥补各自的缺陷,我们称这种组合方式为直接自陷投票(trap-directed polling),服务器定时统计或在管理员指导下统计设备信息。同时,每个受管理的设备在某种条件发生时产生中断消息,中断发生的条件比纯粹的中断驱动系统要严格。

例如,如果用户使用中断SNMP,路由器负载每增长10%都向服务器报告。如果使用直接自陷投票SNMP,用户可以从投票中获得路由器的负载,并且当路由器负载增加很快时,将向服务器发送中断消息。当服务器接收到此中断消息后,如果需要的话,可进一步查询设备的详细信息。

SNMP服务器软件包可与SNMP代理通信、传输或请求一系列不同类型的信息。通常由服务器向代理请求统计信息,包括处理的包数量、设备的状态与设备类型相关的特殊信息等(如modem失效连接的次数)及处理器的负载。 服务器也可以向代理发送指令以修改数据库(MIB)中的项。服务器也可以设置代理方的阀值或条件,当代理超过阀值或满足条件时向服务器发送中断信息,如CPU负载达到90%。 虽然服务器与代理间的通信内容趋向于抽象,但通信本身以非常直接简单的方式完成。如:服务器发送"当前负载",代理返回"75%"。代理从不向服务器发送数据,除非产生中断消息或收到服务器请求,这意味着在没有进行投票或产生中断消息时,系统可能存在潜伏的问题。


一、MIB management information base

每个受管理的SNMP设备均维护包含统计信息及其他数据的数据库,我们称之为MIB。MIB的每一项包含一种信息:对象类型、语法、访问字段及状态字段等。MIB的项通常由协议规定,并且严格遵守抽象语法规则1(ASN.1)的格式。

1、对象类型为项的名称,通常为简单的名字。

2、语法是一个值字段,通常为字符串或整型,并不是所有的MIB的项均包含值字段。

3、访问字段用于定义项的访问权限,通常有以下四类:可读、可读/写、只可写或不可访问

4、状态字段包含指示值,标明MIB项是否为命令、可选或作废。命令表示受管理的设备必须执行该项;可选表示受管理的设备可以选择执行该项;作废表示不执行。

目前执行的MIB有两种,MIB-1和MIB-2,两者结构不同。


二、使用SNMP

SNMP被用于非同步客户/服务器应用,受管理的设备或SNMP服务器软件都可产生消息,根据需要等待响应。这些消息或响应由具体的网络软件(如IP)打包并处理。

SNMP在TCP/IP中使用UDP协议作为其消息传输协议。UDP端口161可接收除自陷外的所有消息,自陷消息由162号端口接收来自服务器的消息。代理通过UDP161号端口接收来自服务器的消息。

SNMPv1支持以下五种服务器与代理间的操作:

get----用于获取MIB项的值

get-next----用于遍历MIB项

get-response----get的响应

set----用于修改MIB的项

trap----用于设置中断条件

当发送请求时,SNMP项的某些字段为空,以便客户方填充并返回给服务器。这是一种在一个块内传送问题和答案的有效方法,避免了通过复杂的查询方法寻找与请求对应的结果。

例如:在get命令中,类型和值字段为空,客户方填充这两个字段后(除非请求失败,否则返回错误消息)将消息返回给服务器。

SNMPv2在v1的基础上增加了一些新的功能,对于服务器来说,最方便的命令是get-bulk操作,它使客户方在一条信息中发送大量MIB项的信息(v1则需要多条get-next操作才可完成相同功能)。此外,v2比v1有更强的安全性,可防止入侵者监视受管理的设备的状态。SNMPv2既支持加密也支持认证。因此,V2远比V1复杂,也没用V1应用广泛。

SNMP支持代理管理,即包含SNMP代理和MIB的设备可以与安装有SNMP代理软件的设备进行通信。基于代理的管理可以将设备的MIB放在客户方的内存中,通过连接远程机器对设备进行管理。

例如:通过代理管理打印机,将打印机的客户方SNMP软件及MIB放在代理工作站中,通过代理工作站对打印机进行管理。

基于代理的管理可以减轻负载过重的设备的工作量。

SNMP的不足:最主要的是UDP的可靠性,因为UDP是无连接机制。因此,不能对消息进行过滤,这有可能导致接收消息的软件负载过重。最后一点不足是SNMP从某种程度上说仍然使用投票方式,这将消耗大量的带宽。

网络管理的将来属于OSI网络管理标准:通用管理信息服务(CMIS)及通用管理信息协议(CMIP),它们建立在TCP/IP之上。IAB发布了基于TCP/IP的通用管理信息服务与协议CMOT作为TCP/IP及OSI管理的标准。 SNMP及CMOT都使用网络管理者与网络设备(如工作站、网桥、路由器等)交换信息。主管理工作站与不同的管理进程通信获取网络的状态信息。SNMP及CMOT的体系结构都将收集的信息以某种方式存储以便供其他协议读取。 SNMP管理者处理所有使用SNMP的设备间的通信和软件。支持软件提供用户接口,使网络管理员可观察整个系统的状态及单个设备的状态,并可监视特定的网络设备。


三、在UNIX和LINUX上安装SNMP

大多数UNIX系统本身包含客户和服务器软件。客户软件通过SNMPD守护进程执行,当在网络上使用SNMP时,客户方软件就始终执行。通常SNMPD守护进程在程序启动时运行。这主要决定于RC系列启动文件。当SNMP启动时,守护进程读取配置文件。对于大多数SNMP代理,SNMPD读取文件下:/etc/inet/snmpd.conf ;/etc/inet/snmpd.comm ;/etc/inet/snmpd.trap 文件所处的目录根据UNIX版本的不同而不同,用户需要检查文件系统以得到正确的位置。


snmpd.conf文件包含四个系统MIB对象。在大多数情况下,这些对象在安装时设置,但用户也可以修改对象的内容。在许多snmpd.conf文件中,用户需要填入用户及位置字段(它说明系统的用户及位置),但descr及objid字段不需作修改。snmpd.conf文件定义的变量及相应的MIB变量如下: descr----sysDescr

objid----sysObjectID

contact----sysContact (contact 联系 接触)

location----sysLocation (location 位置,区域,场所)


snmpd.comm(community)文件提供认证信息及可访问本地数据库的主机列表。远程主机访问本地SNMP数据的权限由snmpd.comm文件指定。snmpd.comm文件每一行包含三个字段:组织名称、远程主机的IP地址及组织的访问权限。权限可以是READ只读、WRITE可读写及NONE禁止访问三种形式,可读写表示可修改该MIB数据而不是文件系统。 eg:public 0.0.0.0 read


snmp.trap文件为当发生自陷时,需向哪些主机发送消息。snmpd.trap文件的示例如下: superduck 129.0.0.3 162 snmpd.trap文件的每一行包含三个字段:组织名称、IP地址及发送自陷消息的UDP端口。


四、SNMP命令

UNIX提供一组基于SNMP的命令,使网络管理员可获得MIB的信息或SNMP设备的信息。确切命令依赖于具体的实现,但大多数SNMP系统都支持下列命令:
命令 描述

getone 使用SNMP get命令获取变量的值

getnext 使用SNMP

getnext命令获取下一个变量的值

getid 获取sysDescr、sysObjectID及sysUpTime的值

getmany 获取一组MIB变量的值

snmpstat 获取SNMP数据结构

getroute 获取路由信息

setany 使用SNMP

set命令设置变量的值

大多数SNMP命令都需要参数指明设置或读取变量

没有评论:

发表评论