SNMP框架组成等

目录

一、SNMP框架组成

1.物理实体角度

2.协议角度

二、SNMP的功能

SNMP的功能

5种操作

三、BER编码

四、报文解析

五、SNMP实现版本


一、SNMP框架组成

SNMP框架组成等

1.物理实体角度

使用SNMP对网络进行管理应该包含:至少一台管理工作站(NMS,Network Management Station)或主机,一个或多个代理(Agent)设备,或者其中还包括代理服务器(Proxy) 。

NMS:该实体能够产生协议命令、接收通告消息;位于管理系统的顶层。在实际的网络管理中至少包含一个这样的SNMP实体。

Agent:该实体能够响应管理节点的请求、主动产生通告消息;位于管理系统的底层。在实际的网络管理中可以存在一个或多个这样的实体。

Proxy Agent:某些情况下,如不同(子)网络间,不同版本间的通信,还存在一种特殊的代理。它用于实现SNMP请求和告警信息的转发,不同版本协议间的转换、翻译等功能。在这些情况下,Proxy对NMS是透明的,它位于管理系统的中间层。

2.协议角度

SMI(Structure of Management Information,管理信息结构):是ASN.1(Abstract Syntax Notation One,抽象语法标记)的一个子集,SMI规定了SNMP中可使用ASN.1中的元素、自定义的数据类型和宏等,由这些元素、数据类型、宏及其相关的语法可定义SNMP中的MIB。

MIB:管理信息库是Agent中对被管理对象的抽象描述,不是SNMP中特有的协议内容。在SNMP中,MIB是以树形结构组织进行查看的。树中每个节点称为OID(Object identifier,对象标识),以类似于网址域名的方式组织,以整数表示各个节点,如1.3.6.4。

简单来说:

ASN.1:一个语法

SMI:根据该语法规定的一种结构

MIB:根据该结构编写的描述被管对象的静态数据库

NMS、Agent、Proxy都认可该数据库,在此基础上通过SNMP进行通信

二、SNMP的功能

SNMP的功能:

①掌握Agent设备当前的状态、参数信息及配置情况;

②定义的重要事件发生变化时,Agent设备能主动“认错”。

 

具体实现操作有5种,可分为3类:

读取类命令:Get系列命令,即NMS发出请求,获取Agent的管理信息。

设置类命令:Set命令,即NMS将报文中携带的数据写入Agent中。

告警功能:Trap系列,Agent主动向NMS发出告警/事件报文的信息。

SNMP框架组成等

5种操作:

1)Get操作:NMS主动发起的操作,获取特定对象的值。报文携带Get请求标志、待请求的OID名称和值对。一次Get操作只能获取一个管理对象。

(2)Get-Next操作:获取按字典顺序的下一个对象的值。

(3)Set操作:对具有可写权限的OID进行参数的设置,以实现对设备的参数管理。报文携带Set请求标志、待设置的OID名称和值对以及待设置的值。

(4)Get-Response操作:是代理对NMS发出的Get和Set两类命令的响应,根据命令的不同和命令中的参数不同,相应的返回变量绑定的信息以及错误状态信息(代表命令执行成功或失败)等。

(5)Trap操作:Trap是Agent向NMS主动报告重要事件的机制。对于这种报告,NMS无需对Agent进行响应。

Trap信息中的内容主要表明以下4个部分:

地点:发送Trap的Agent端的标识信息,主要是IP地址和系统类型;

时间:系统启动时间;

事件:以一个标识符标识事件;

其他信息:用于传送更多的附加信息,如当发送流量过高的Trap时,附带占用流量前3位的IP地址信息。

三、BER编码

在具体系统中,需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。

SNMP中NMS和Agent有统一的编码规则: BER(Basic Encoding Rule,基本编码规则)

 

其数据都由三个域构成: 标识域(tag)-长度域(length)-值域(value)

标识域:指明数据的类型,占用1个字节;

长度域:指明数据的长度,不定长,一般为1-3字节;

值域:保存数据的实际编码

四、报文解析

SNMP框架组成等

版本:0=SNMPv1、1=SNMPv2c、3=SNMPv3。编码格式:02 01 版本号(0,1,3)

共同体:一个明文字符串,用于鉴权。编码格式:04 L V      

例:常用的、也是默认的共同体:        

public:  04 06 70 75 62 6c 69 63        

private:04 07 70 72 69 76 61 74 65

PDU类型:指明SNMP的请求类型。      

0-4分别表示get/get-next/get-response/set/trap

请求标识:为NMS标识该报文的唯一、随机的数字,整型。

差错状态:表示Agent对命令的响应错误状态。

差错状态

名字

说明

0

noError

一切正常

1

tooBig

代理无法将回答装入到一个SNMP报文之中

2

noSuchName

操作指明了一个不存在的变量

3

badValue

一个set操作指明了一个无效值或无效语法

4

readOnly

管理进程试图修改一个只读变量

5

genErr

其他差错

错误索引:指示第一个引起错误的位置

变量绑定列表:OID和值对

五、SNMP实现版本

语言

软件

开源?

特点

C

Net-SNMP

功能强大、接口众多、可移植性强

C++

SNMP++

高效、可移植、灵活、可扩展的面向对象的开发库

Java

jSNMP Enterprises

×

支持灵活扩展,可减少网络流量、易于管理和有效的Trap处理机制

iReasoning Java SNMP API

高性能、跨平台、线程安全和多线程环境优化

SNMP4J

企业级开发库、面向对象

AdventNet SNMP API

可开发独立的基于Web和分布式的跨平台的管理应用程序,可视化IDE,自动代码生成功能

Python

PySNMP

提供了非常简单的开发接口,需要依赖第三方Python库