SNMP协议基础

SNMP基础简介

近来,公司产品开发涉及到SNMP方面的知识, 在此作一些总结,或许对您现在或者将来有用。

在目前越来越复杂的网络环境中,整个环境有各种各样的网络设备,为了能更好的对这些设备进行管理,及早的发现网络中已经存在或未来可能存在的问题,SNMP提供了一种对这些网络设备进行有效管理的技术基础。

一 SNMP简介

SNMP,Simple Network Management Protocol,即简单网络管理协议,,是有IETF(Internet Engineeriing Task Force,互联网工程任务组)定义的一套基于SGMP(Simple Gateway Monitor Protocol,简单网关监视协议)的网络管理协议。以SNMP为技术的网络管理系统(NMS)中,管理工作站利用SNMP进行远程监控管理网络上的所有支持这种协议的设备(如计算机工作站、终端、路由器、Hub、网络打印机等),主要负责监视设备状态、修改设备配置、接受事件警告等。

三 SNMP环境安装配置

SNMP服务安装:

1) 打开"控制面板";
2) 进入"添加与删除程序";
3) 点击"添加与删除Windows组件";
4) 选择"管理和监控工具箱";
5) 点击"详细";
6) 选择"简单网络管理协议(SNMP)",并点击击确定;
7) 点击下一步继续直到完成。

SNMP服务配置:

1) 打开"管理工具";
2) 进入"服务";
3) 选择SNMP Service ;
4) 编辑属性,选择代理标签;
5) 确认Contact和location均被选中;
6) 选择陷井标签;
7) 输入Community Name,默认为public,加入到列表;
8) 在陷井目的地,单击Add,并填入Agent端的IP地址,单击确定;
9) 选择安全标签
10) 单击public编辑,将Community Rightes改为Read Create,单击确定;
11) 设置SNMP Trap Service的启动方式为"自动"
12) 重新启动SNMP Service和SNMP Trap Service。

三 SNMP消息

在OSI模型中,传输层的数据单元也称为数据包(packets)。SNMP采用的是UDP(用户数据报协议)作为其传输层协议,并为SNMP提供网络服务,UDP协议的数据单元称为数据报(datagrams)。因为UDP是一种不可靠的数据报服务,所以并不能保证UDP数据报一定能达到目的,但是掉包问题并不对网络管理产生大的影响。SNMP消息包含两个部分:SNMP报头和协议数据单元PDU(Protocol Data Unit),其中SNMP报头包括SNMP版本号和团体名。SNMP版本号目前有三种:Version1、Version2、Version3。团体标识可以作为SNMP消息的口令,缺省值为"public"。如图1。

图1:SNMP消息格式

SNMP消息有五种类型:

1) Get_Request:Manager端向Agent端发送读取信息的请求;
2) Get_Next_Request:Manager端向Agent端发送读取信息的请求;
3) Get_Response:Agent端对Manager端请求的响应;
4) Set_Request:Manager端向Agent端发送设备设置信息,Agent端可根据设置信息来改变设备状态;
5) Trap:当Agent端发生某些事件时,Agent端主动向Manager端发送陷阱信息,如关机事件。

SNMP消息采用ASN.1定义为:
SNMP-Message∶∶=
 SEQUENCE {
  version INTERER{
      version 1
         },
  community
      public,
 pud
      data
        }

PDU则定义为:
  PDU∶∶=
   CHOICE{
    get_request
      Getrequest_PDU
    get_next_request
      GetNextRequest_PDU
    get_response
      Getresponse_PDU
    set_request
      Setrequest_PDU
    trap
      Trap_PDU
      }
例如Getrequest_PDU定义为:
  GetRequest_PDU∶∶=[0]
   IMPLICIT SEQUENCE{
      Request_ID
        requestid,
      Error_Status,
        errorstatus,
      Error_Index,
        errorindex,
      Varialle_Bindings
        varbildlist
        }

PDU有五种类型:Getrequest_PDU、GetNextRequest_PDU、Getresponse_PDU、Setrequest_PDU和Trap_PDU,分别对应SNMP消息的五种类型。PDU提供两种格式:


第一种格式PDU用于描述Getrequest_PDU、GetNextRequest_PDU、Getresponse_PDU、Setrequest_PDU等四种消息类型,这种格式的PUD分为五个部分:
1) PDU类型值:用于表示PDU类型,0表示Get_Request,1表示Get_Next_Request,2表示Get_Response,3表示Set_Request;
2) 请求ID:由四个字节整数组成,用于请求的唯一编号,以便使响应消息和请求消息匹配;
3) 错误状态:用于表示发生错误,0表示NoError,1表示oobig,2表示NoSuchName,3表示BadValue,4表示ReadOnly,5表示Generr;
4) 错误索引:由一个字节整数组成,用于指出变量表中哪一个变量引起了错误;
5) 变量表:一系列变量名和相应值组成的序偶的序列。

注意,当PDU类型为Getrequest_PDU、etNextRequest_PDU、Getresponse_PDU时,错误状态和错误索引均为0,变量表中的值部分为null。

第二类格式PDU用于Trap_PDU消息类型,这种格式分为七部分:
PDU类型值:用于表示PDU类型,4表示Trap_PDU;
陷阱对象的类型:产生陷阱的被管理对象的类型
陷阱对象的地址:提供产生陷阱的被管理对象的地址
陷阱类型:
陷阱性质:
变量表:同上。
四 网络管理系统工作原理

一个SNMP管理的网络包含三个主要部分:被管理设备、代理和网络管理系统(NMS)。被管理设备就是处于被管理的网络中的多个设备,负责收集和存储管理信息;代理是安装在被管理设备中的软件程序;网络管理系统就是用于监控被管理设备执行状态的软件系统。SNMP进行网络管理时,一般采用Client/Server结构或Manager/Agent结构集中式管理信息的方式,管理工作站为Server端或Manager端,网络中的各个设备为Cient端或Agent端,如下图1。

图2:SNMP网络管理结构

从图2中,我们可以看出Manager端通过162端口进行通讯,而Agent端通过161端口进行通讯。具体的通讯过程是:Manager端向Agent端发送请求(Getrequest消息、GetNextRequest消息和Setrequest消息,这些消息符合SNMP格式要求),Agent端接受到请求之后对Manager端的IP地址进行认证;如果认证失败,Agent端向Manager端的发送Trap异常信息;如果认证通过,Agent端向Manager端的发送Response信息。

五 MIB 管理信息库

在复杂的网络环境中,网络设备的类型各式各样,所以设备的信息也因设备类型不同而不同,为了将这些信息能通过网络管理系统进行管理,必须采用一套标准来描述这些设备的信息,所以SNMP定义了MIB(Management Information Base)。MIB分为标准MIB和私有MIB,标准MIB适用于所有网络设备,而私有的MIB则由设备厂家向有关机构申请后自行定义。MIB采用树状结构,每个节点每个结点分配了一个字符串和一个小整数作为标号,即OID(Object Identifier)。如图3。

图3:MIB结构图

MIB结构树中任一对象的名字就是从根到对象结点的路径上各个节点的标号序列,标号之间用点分隔。如被管理设备中每个网络接口的IP地址信息表示为:iso.org.dod.internet.mgmt.mid.ip,它的数字表示为:1.3.6.1.2.1.4。

标准MIB的基本OID以为1.3.6.1.2.1前缀,而私有的MIB的基本OID以为1.3.6.1.4.1前缀。如果在某一节点下有多个信息,则以列表方式存在,比如IP地址信息中包括子网掩码、网关地址等。
 

你可能感兴趣的:(snmp)