SNMP——简单网络管理协议

simple network manage pro 简单网络管理协议,利用网路管理网络

  • 屏蔽了物理设备之间的差异,实现对不同设备的统一管理
  • 设计简单
  • 基于UDP协议

主要由四个部分组成

  1. NMS 网络管理系统
  2. 代理进程agent
  3. 被管理的对象MB
  4. 管理信息库MIB

NMS

  • 发送给agent请求,查询或者修改具体的数值
  • 接受设备agent发送的trap信息,获知管理设备的状态

Agent

  • 被管理设备中的一个代理进程
  • 接受nms的指令,根据mib进行执行指令,返回操作结果给nms
  • 设备发生故障时,设备通过agent发送信息给nms
  • 代理设备使用161端口来发送接受和发送响应数据

MB

被管理的对象,每一个设备包含多个被管理的对象,可以是某个硬件,软件(路由选择协议)配置的参数集

MIB

MIB库类似于一个数据库,存储着网络元素所维持的变量,这些变量可以被管理平台查询或者设置,MIB维持着网络中所有可能被管理对象的集合的数据结构,MIB利用树的结构保证每一个元素的唯一性

在这个树的上层结构中,树的根节点也就是root节点无实际的含义,仅作为起始的节点。

除此之外还有一些标准的概念 ASN.1 BER

ASN.1:

抽象语法定义(Abstract Syntax Notation One),用于定义语法的语言,定义了SNMP中PDU(协议数据单元)和管理对象MIB的格式,SNMP使用了ASN.1的一部分内容,并且使用语言的特性定义了一些自定义类型和类型宏,组成SMI

PDU是协议数据单元,是实际传输的数据包,一个PDU对应SNMP的一次具体的操作

BER:basic encoding rule基本编码规则,描述如何将ASN.1类型的编码值转换为字符串的方法,他是ASN.1的一部分,在这个规则中数据被分为三部分:TLV Tag是类型的标识,Length是标识类型的长度,Value是具体的内容,数据按照TLV的顺序进行编码,生成字节流,SNMP使用BER将SNMP的操作请求和应答编码后进行传送,并用于接收端进行解码

常用的操作

Get:获取单个或者多个参数的值

Set:设置代理进程的一个或者多个参数值

Getnext:获取当前参数的下一个参数的值

Walk:获取所有的参数值

GetBulk:获取多个参数值,一般会连续获取十个参数值

trap:代理进程主动向管理系统发送trap消息,一般是某个设置的错误或者故障发生时进行上报,trap上报的消息如下表:

trap类型

名称

描述信息

0

coldStart

代理进程对自己初始化

1

warmStart

代理进程对自己重新初始化

2

linkDown

一个接口已从工作状态变为故障状态(报文中的第一个变量标识此接口)

3

linkUp

一个接口已从故障状态变为工作状态(报文中的第一个变量标识此接口)

4

authenticationFailure

从SNMP管理进程收到无效共同体的报文

5

egpNeighborLoss

一个EGP邻站已变为故障状态(报文中的第一个变量包含邻站IP地址)

6

enterpriseSpecific

在这个特定的代码段中查找trap信息

不同版本区别

snmp版本之间的区别:

Snmpv1支持GET,SET,GETNEXT,TRAP

Snmpv2是v1版本的演进版本,v2版本增加了GetBulk操作和Inform操作,

● GetBulk操作被用于NMS获取大量的块数据,要求agent尽量多的相应消息中的请求,但是不存在没有返回也不影响

● Inform允许一个NMS发送trap包给其他的NMS,再接受相应响应

Snmpv3增加了安全能力和远程配置的能力,snmpv3结构为消息安全和VACM引入了USM

有三个可能的安全级别:noauthnopriv:没有认证或私密性执行

authnppriv:认证被执行,但没有私密性被执行

authpriv:认证和私密性都执行

auth:支持MD5或SHA

priv:支持DES或RSA

SNMP抓包分析

snmp基于udp协议,因此snmp数据包中含有udp头部和ip头部,

snmp还需要配置版本标识、community团体名等信息

PDU类型包含两个字节:第一个字节是数据的类型,第二个字节是数据的长度

请求报文:get-response

目的mac地址 源mac地址

协议类型0x0800

IP头部

udp头部

snmp内容

02 01 01 表示版本号,02表示字段为INTEGER类型,01表示占1个字节,01表示版本号 版本为v2c

04 06 70 75 63 6c 69 63 其中04表示该字段为OCTET STRING类型,06表示长度有6个字节,70之后的表示团体名,此处为public

a2 24 中a2表示这是一个get-response报文,24表示后面还有36个字节

02 04 2c ac bc 9e 使用BER编码了一个值request-id后面的数据类似

get-request操作的数据包

snmpv2 snmpv1更多的区别

对象的定义

除了操作有增加之外,不同版本支持的数据类型也不同:

SNMPv2 增加了 Unsigned32 和 Counter64 两种新的数据类型,Counter64 与 Counter32一样,都表示计数器,只能增加不能减少。当计数器增加到上限时回零,从头再增加。SNMPv2 规定计数器没有定义的初始值,所以只有连续两次读计数器得到的增加值才是有意义的。

OBJECT-TYPE MACRO::= BEGIN
TYPE NOTATION::="SYNTAX" Syntax
                UnitsPart
                "MAX-ACCESS" Access
                "STATUS"Status
                "DESCRIPTION" Text
                ReferPart
                IndexPart
                DefValPart
VALUE NOTATION::=value (VALUE ObjectName)
END

snmpv2增加了UNITS子句,用文字说明与对象有关的度量单位

MAX-ACCESS子句:SNMPv2 定义的访问类型中去掉了write-only 类,增加了一个与概念行有关的访问类型 read-create,表示可读、可写、可生成。SNMPv2的5种访问级别由小到大排列依次是:not-accessible、accessible-for-notify、read-only、 read-write、read-create。

STATUS子句:STATUS 子句指明对象的状态。新标准去掉了 SNMPvl 中的 optional 和mandatory,只有 3 种可选的状态。

STATUS

说明

Current

当前标准中有效

Obsolete

废弃,不必实现此对象

deprecated

过时,但为了兼容应该实现此对象

与snmpv1相同,snmpv2的管理操作只能作用于标量对象(节点),复杂的信息使用表来标识,表是行的序列,行是列对象的序列

  1. 禁止删除和生成行的表,表的最高访问级别是read-write,在很多情况下这种表由代理进行控制,表中只包含read-only类型的对象
  2. 允许删除和生成行的表,这种表开始时可能没有行,由管理站生成和删除行

snmpv2表的定义中必须存在INDEX或者AUGMENTS子句,INDEX子句定义了一个基本概念行,AUGMENTS的子句的作用是代替INDEX子句,表示概念行的扩展。

INDEX子句中的索引对象确定了一个概念行实例,作为索引的列对象叫做辅助对象,是不可访问的,如表中存在petType和petIndex实例,这是每行中的唯一一对标识

如果要引用第2行和第4列的对象实例,实例的标识符为:

petCharacteristic2.DOG.5

其中“DOG”是无修饰符IMPLIED的变长度字符串,编码为3.68.79.71,因此实例的标识为

A.1.4.3.68.79.71.5

表的操作

状态列

允许生成和删除行的表必须有一个列对象,这种列叫做概念行的状态列,其SYNTAX子句的值为RowStatus,MAX-ACCESS子句的值为read-write,状态列可取6个值:

状态列

读写限制

说明

active

可读写

被管理设备可以使用概念行

notInService

可读写

概念行存在,但由于其他原因不能使用

notReady

只读

概念行存在,但因没有信息而不能使用

createAndGo

只写不读

管理站生成一个概念行实例时先设置成 createAndGo,生成过程结束时自动变为 active

createAndWait

只写不读

管理站生成一个概念行实例时先设置成这种状态,但不会自动变成 active

destroy

只写不读

管理站需删除所有的概念行实例时设置成这种状态

状态行的生成

四个步骤:

  1. 选择索引对象的实例标识符
  2. 管理站通过事务处理产生和激活概念行,管理站通过事务处理产生,与代理协商后生成
  3. 初始化非默认值对象,Get操作查询所有列,根据返回值确定是否设置为列对象的值
  4. 激活概念行,Set操作设置状态列对象为active
概念行的挂起

当概念行处于active状态时,如果管理站希望概念行脱离服务,以便进行修改,则可以发出Set命令,将状态列由active置为notInService。这时有两种可能:

  1. 代理不执行该操作,返回WrongValue
  2. 代理可以执行该操作,返回noError
概念行的删除

管理站发出Set命令,将状态置为destroy,如果操作成功,概念行立即被删除

通知和信息模块

SNMPv2提供了通知类型的宏定义NOTIFICATION-TYPE,用于定义一场条件出现时,SNMPv2实体发送的信息。

NOTIFICATION-TYPE MACRO::=BEGIN
TYPE NOTATION::=ObjectsPart
    "STATUS" Status
    "DESCRIPTION" Text
    ReferPart
VALUE NOTATION::=value(VALUE NotificationName)
ObjectsPart::="OBJECTS""{"Objects"}"lempty
Objects::=Object|Object","Object
Object::=value(Name ObjectName)
Status::="current"|"deprecated"|"obsolete"
ReferPart::="REFERENCE” Textlempty
Text::="string""
END

任选的 OBJECT 子句定义了包含在通知实例中的 MIB 对象序列,当 SNMPv2 实体发送通知时这些对象的值被传给管理站。DESCRIPTION 子句说明了通知的语义,任选的 REFERENCE 子句包含对其他 MIB 模块的引用。
SNMPv2 还引入了信息模块的概念,用于说明一组有关的定义。信息模块共有以下 3 种:

MIB 模块

包含一组有关的管理对象的定义

MIB 的一致性声明模块

说明有关管理对象实现方面的最小要求

代理能力说明模块

说明代理实体应该实现的能力

SNMPv2的管理信息库

snmpv2 mib拓展和细化了mib-2中定义的管理对象,又增加了新的管理对象。

其中SNMP 组是由 MIB-2 的对应组改造而成的,去掉了许多对排错作用不大的变量。

其中接口组增加了 4 张表,它们是接口扩展表、接口堆栈表、接口测试表、接口地址表。

协议数据单元

SNMPv2 提供了 3 种访问管理信息的方法,分别是:

  1. 管理站和代理之间的请求/响应通信:同 SNMPv1
  2. 管理站和管理站之间的请求/响应通信:SNMPv2 特有(分布式)
  3. 代理到管理站的非确认通信(Trap):同 SNMPv1
1.网络管理基本概念...............................................................................................................3 2. 简单网络管理协议SNMP 概述..........................................................................................4 2.1 SNMP 的发展..............................................................................................................4 2.2 SNMP 的配置..............................................................................................................5 3. 管理信息库MIB..................................................................................................................6 4. SNMP 的5 种协议数据单元................................................................................................8 5.管理信息结构SMI..............................................................................................................11 6. SNMPv2 协议......................................................................................................................12 6.1 SNMPv2 标准中的安全机制....................................................................................14 6.2 SNMPv2 Party.........................................................................................................14 6.3 SNMPv2 协议操作....................................................................................................15 7. SNMPv3 的体系结构..........................................................................................................15 8. 公共管理信息CMIP..........................................................................................................17 9. SNMP 与CMIP 的比较........................................................................................................18 10.网络管理协议的前景.......................................................................................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值