【资料图】

随着网络技术的飞速发展,在网络不断普及的同时也给网络管理带来了一些问题:

网络设备数量成几何级数增加,使得网络管理员对设备的管理变得越来越困难。网络设备种类多种多样,不同设备厂商提供的管理接口各不相同,这使得网络管理变得愈发复杂。

在这种背景下,SNMP应运而生。通过“利用网络管理网络”的方式,SNMP实现了对网络设备的高效和批量的管理;同时,SNMP协议也屏蔽了不同产品之间的差异,实现了不同种类和厂商的网络设备之间的统一管理。

SNMP简介

SNMP(Simple Network Management Protocol) 简单网络管理协议,从字面意思可以看出它是用于网络管理的协议。不同种类不同型号的设备(如交换机、路由器、服务器、打印机等)只要遵循这个SNMP协议,那么管理员就可以通过一些网络管理系统NMS(Network Management System)来对设备进行管控了。默认SNMP是通过UDP161和162端口进行通信的。目前SNMP共有v1、v2、v3三个版本,其中SNMPv1,v2采用的是明文进行传送的,SNMPv3是通过加密进行传送的。如果对安全要求比较高就选用SNMPv3版本。

SNMP组成

SNMP系统是由网络管理系统NMS、SNMP Agent、被管对象Management object和管理信息库MIB(Management Information Base)四部分组成。NMS作为整个网络的网管中心,对设备进行管理。每个被管理设备中都包含驻留在设备上的SNMP Agent进程、MIB和多个被管对象。NMS通过与运行在被管理设备上的SNMP Agent交互,由SNMP Agent通过对设备端的MIB进行操作,完成NMS的指令。

NMS:网络中的管理者,是一个采用SNMP协议对网络设备进行管理监视的系统,运行在NMS服务器上。NMS可以向设备上的SNMP Agent发出请求,查询或修改一个或多个具体的参数值。NMS也可以接收设备上的SNMP Agent主动发送的SNMP Traps,以获知被管理设备当前的一些状态信息。SNMP Agent:被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。SNMP Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。当设备发生故障或者其它事件时,设备会通过SNMP Agent主动发送SNMP Traps给NMS,向NMS报告设备当前的状态变化。Managed Object:被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件如cpu、内存等,也可以是在硬件、软件如路由选择协议上配置的参数集合。MIB:一个数据库,指明了被管理设备所维护的变量。MIB在数据库中定义了被管理设备的一系列属性,如对象的名称、对象的状态、对象的访问权限和对象的数据类型等。MIB也可以看作是NMS和SNMP Agent之间的一个接口,通过这个接口,NMS对被管理设备所维护的变量进行查询设置操作。

MIB是以树状结构进行存储的。树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID对象标识符(Obiect Identifier),如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。

SNMP操作

管理员需要向设备获取数据,所以 SNMP 提供了“读”操作;管理员需要向设备执行设置操作,所以 SNMP 提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以 SNMP 提供了“Trap”操作。SNMP协议主要提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。

1.Get:网络管理系统NMS主动向SNMP Agent发送查询请求。NMS读取Agent处对象的值如内存使用率,接口流量等。SNMP Agent接收到查询请求后,通过MIB表完成相应指令,并将结果反馈给NMS。

2.Set:NMS主动向SNMP Agent发送对设备进行Set设置操作的请求管理端。可以通过它来改动设备的配置或控制设备的运行状态。比如可以设置设备的名称,关掉一个端口等。SNMP Agent接收到Set请求后,通过MIB表完成相应指令,并将结果反馈给NMS。

3.Trap:SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。如果发生意外情况,Agent会向NMS的UDP162端口发送一个消息,告知NMS指定的变量值发生了变化。Trap 消息可以用来通知NMS如线路的故障、硬件故障、认证失败等消息。这样管理员可相应的作出处理。

SNMP报文

SNMP报文主要由版本、团体名、SNMP PDU组成。

版本:版本标识符用于说明现在使用的是哪个版本的 SNMP。如果是SNMPv1报文则对应字段值为0,SNMPv2c则为1。团体名:用于在SNMP Agent与NMS之间完成认证,字符串形式,类似于密码,默认值为 public,可自行定义。团体名包括“read”和“write”两种,执行SNMP查询Get操作时,采用“read”团体名进行认证;执行SNMP设置Set操作时,则采用“write”团体名进行认证。SNMP PDU:协议数据单元PDU是 SNMP 消息中的数据区,即 Snmp 通信时报文数据的载体。PDU 指明了 SNMP 的消息类型及其相关参数。各类SNMP操作如Get、Set、Trap的报文封装在SNMP PDU中。

关键词: