标签:动态配置 family info udp协议 sde cut 索引 dnv 密码
术语
术语 | 解释 |
SNMP (Simple Network Management Protocol) | 简单网络管理协议 |
NMS(Network Management System) | snmp网络管理系统 |
Agent | snmp代理服务 |
MIB | |
SMI(Structure of management information) | 管理信息结构,是一种语言 |
USM |
基于用户安全模型 |
VACM | 基于视图访问控制模型 |
一、什么是snmp
SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB体系结构,改进后的协议就是著名的SNMP。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。
SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。
SNMP管理站和SNMP代理之间是松散耦合。他们之间的通信是通过UDP协议完成的。一般情况下,SNMP管理站通过UDP协议向SNMP代理发送各种命令,当SNMP代理收到命令后,返回SNMP管理站需要的参数。但是当SNMP代理检测到网络元素异常的时候,也可以主动向SNMP管理站发送消息,通告当前异常状况。
SNMP的基本思想:为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义为一个统一的接口和协议,使得管理员可以是使用统一的外观面对这些需要管理的网络设备进行管理。通过网络,管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效率,简化网络管理员的工作。
SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了【GET】操作;管理员需要向设备执行设置操作,所以SNMP提供了【SET】操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了【Trap】操作。
二、SNMP 和 UDP
SNMP采用UDP协议在管理端和agent之间传输信息。 SNMP采用UDP 161端口接收和发送请求,162端口接收trap。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。
三、snmp的实现结构
在具体实现上,SNMP为管理员提供了一个网管平台(NMS),又称为【管理站】,负责网管命令的发出、数据存储、及数据分析。【被】监管的设备上运行一个SNMP代理(Agent)),代理实现设备与管理站的SNMP通信。
管理站指的是运行了可以执行网络管理任务软件的服务器,通常被称作为网络管理工作站(NMS),NMS负责采样网络中代理(Agent)的信息,并接收代理(Agent)的trap。代理(Agent)是实际网络设备中用来实现SNMP功能的部分。代理(Agent)在UDP的161端口接收管理站(NMS)的读写请求消息,管理站(NMS)在UDP的162端口接收代理(Agent)的事件通告消息。所以一旦获取设备的访问权限(community,默认为public),就可以访问设备信息、改写和配置设备参数。由于采用UDP协议,不需要在代理(Agent)和管理站(NMS)之间保持连接。
管理站(NMS)与代理端(Agent)通过MIB进行接口统一,MIB定义了设备中的被管理对象。管理站(NMS)和代理(Agent)都实现了相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站(NMS)向代理(Agent)申请MIB中定义的数据,代理(Agent)识别后,将管理设备提供的相关状态或参数等数据转换为MIB定义的格式,应答给管理站(NMS),完成一次管理操作。
SNMP协议之所以易于使用,这是因为它对外提供了三种用于控制MIB对象的基本操作命令。它们是:Get、Set 和 Trap。
四、snmp版本
SNMP目前共有v1,v2c,v3这三个版本
SNMPv1
SNMPv1 是 SNMP 协议的最初版本,提供最小限度的网络管理功能。SNMPv1 的 SMI 和 MIB 都比较简单,且存在较多安全缺陷。SNMPv1 采用团体名认证。团体名的作用类似于密码,用来限制NMS对Agent 的访问。如果 SNMP 报文携带的团体名没有得到 NMS/Agent 的认可,该报文将被丢弃。SNMPV1 是一种简单的请求/响应协议。网络管理系统发出一个请求,snmp代理则返回一个响应。这一行为的实现是通过使用四种协议操作中的其中任一种完成的。这四种操作分别是 GET、GETNEXT、SET 和 TRAP。
NMS 通过 GET 操作,从 SNMP 代理处得到一个或更多的对象(实例)值。如果代理处不能提供请求列表中所有的对象(实例)值,它也就不提供任何值。
NMS 使用 GETNEXT 操作,请求代理从请求列表或对象列表中取出下一 个对象实例值。
NMS 通过 SET 操作向 SNMP 代理发送命令,要求对对象值重新配置。
SNMP 代理通过 TRAP 操作不定时的通知 NMS 所发生的特定事件
SNMPV2
SNMPV2 中还定了两种新操作,即 GET BULK 和 INFORM。NMS 通过 GET BULK 操作能有效地获取大块数据,如对象列表中的多行。请求多少数据 GETBULK 返回一个包含尽可能多的请求数据的应答消息。INFORM 操作使一个NMS 能发送 TRAP 给另一个 NMS 并收到回复。SNMPV2中,如果回复 GET BULK 操作的 SNMP 代理不能提供请求表中所有变量值,那么SNMP代理只提供部分结果。
SNMPV3
SNMPv3主要在安全性方面进行了增强,它采用了 USM(基于用户的安全控制模型)和 VACM(基于视图的访问控制模型) 技术。USM 提供了认证和加密功能,VACM 确定用户是否被允许访问特定的 MIB 对象以及访问方式。
SNMPV3 中增加了安全管理方式及远程控制。SNMPV3 结构引入了基于用户的安全模型(USM)用于保证消息安全,基于视图的访问控制模型(VACM)用于访问控制。
SNMPV3 使用 SNMP SET 命令配置MIB对象,使之能动态配置SNMP代理。这种动态配置方式支持本地或远程地配置实体的添加、删除及修改。
五、管理信息库MIB
任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS和Agent之间的沟通桥梁。它们之间的关系如图所示。
MIB Tree
MIB数据对象以一种树状分层结构进行组织,这个树状结构中的每个分枝都有一个专用的名字和一个数字形式的标识符。上图表示的是标准MIB的组织体系,列出了从MIB结构树的树根到各层树枝的全部内容。结构树的分枝实际表示的是数据对象的逻辑分组。而树叶,有时候也叫节点(node),代表了各个数据对象。在结构树中使用子树表示增加的中间分枝和增加的树叶。
使用这个树状分层结构,MIB浏览器能够以一种方便而且简洁的方式访问整个MIB数据库。MIB浏览器是这样一种工具,他能够遍历整棵MIB结构树,通常以图像显示的形式来表示各个分枝和树叶对象。能够通过其数字标识符来查找MIB中的数据对象,这个数字标识符号从结构树的顶部(或根部)开始,直到各个叶子节点(即数据对象)为止。这种访问方式和文档系统的组织方式一致。两者的主要区别在于文档系统中的路径名能够以绝对也能够以相对方式表示,而MIB数据对象只能以绝对方式表示,不能使用相对方式。例如,在图中,有三个顶级对象,即ISO、ITU-T和这两个组织的联合体。iso(1)位于结构树的最上方,而sysDescr(1)处在叶子节点的位置,现在看不到。通常用带点的符号来表示数据对象的标识符。要访问数据对象sysDescr(1),其完整的标识符应该是这样的:iso.org.dod.internet.mgmt.mib-2.system.sysDescr(这个标识符应该从左向右读)。数据对象也能够以另一种更短的格式表示,即用数字形式标识符代替分枝名形式的表示形式。这样,上面的那种形式的标识符iso.org.dod.internet.mgmt.mib-2.system.sysDescr 还能够用 1.3.6.1.2.1.1.1 来表示。这两种表达格式的作用是一致的,都表示同一个MIB数据对象。dod指Department of Defense美国国防部,mgmt表示管理,以前用mib表示管理信息库,现在改名为mib-2,system表示主机或路由器的操作系统这一类的信息。
当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。如sysName的实例数字表示为:1.3.6.1.2.1.1.5.0
OID(Object Identifier):每个管理对象都有自己的OID(Object Identifier),管理对象通过树状结构进行组织,OID由树上的一系列整数组成,整数之间用点( . )分隔开,树的叶子节点才是真正能够被管理的对象。
SMI定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础。
SMI定义的数据类型:
◆ 简单类型(simple)
INTEGER:整型是-232-1~232的有符号整数
OCTER STRING: 字符串是0~65535个字节的有序序列
DisplayString:0~多个8bit字节,每个字节必须是ASCII码,相当于字符串
OBJECT IDENTIFIER: 来自按照ASN.1规则分配的对象标识符集
◆ 简单结构类型(simple-constructed)
SEQUENCE :用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型
SEQUENCE OF :用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。
◆ 应用类型(application-wide)
IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;
Counter:计数器是一个非负的整数,它递增至最大值,而后回零。在SNMPv1中定义的计数器是32位的,即最大值为4294967295;
Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为232-1;
Time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;
SNMP协议定义了数据包的格式,及网络管理员和管理代理之间的信息交换,它还控制着管理代理的MIB数据对象。因此,可用于处理管理代理定义的各种任务。
一条SNMP消息由"版本号"、"SNMP共同体名"和"协议数据单元(PDU)"构成,数据包的长度不是固定的。
1 、SNMP的5种协议数据单元
SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。
(1)Get-Request 、Get-Next-Request与Get-Response
SNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。
(2)Set-Request
SNMP管理站用Set-Request 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
(3)Trap
SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。
上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP封装。SNMP工作流程如图:
下图是封装成UDP数据报的5种操作的SNMP报文格式。可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部、trap首部、变量绑定。
(1)公共SNMP首部
共三个字段:
PDU类型 | 名称 |
0 | get-request |
1 | get-next-request |
2 | get-response |
3 | set-request |
4 | trap |
(2)get/set首部
差错状态描述 | ||
差错状态 | 名称 | 说明 |
0 | noError | 一切正常 |
1 | tooBig | 代理无法将回答装入一个SNMP报文之中 |
2 | noSuchName | 操作指明了一个不存在的变量 |
3 | badValue | 一个set操作指明了一个无效值或无效语法 |
4 | readOnly | 管理进程试图修改一个只读变量 |
5 | genErr | 其他的差错 |
差错索引(error index)
当出现noSuchName、badValue或readOnly的差错时,由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。
(3)trap首部
trap报文格式如下:
trap类型 | 名字 | 说明 |
0 | coldStart | 代理进行了初始化 |
1 | warmStart | 代理重新进行了初始化 |
2 | linkDown | 一个接口从工作状态变为故障状态 |
3 | linkUp | 一个接口从故障状态变为工作状态 |
4 | authenticationFailure | 从SNMP管理进程收到无效共同体的报文 |
5 | egpNeighborLoss | 一个EGP相邻路由器变为故障状态 |
6 | enterpriseSpecific | 代理自定义的事件,需要用后面的"特定代码"来指明 |
当使用上述类型2、3、5时,在报文后面变量部分的第一个变量应标识响应的接口。
(4)变量绑定(variable-bindings)
指明一个或多个变量的名和对应的值。在get或get-next报文中,变量的值应忽略。
标签:动态配置 family info udp协议 sde cut 索引 dnv 密码
原文地址:https://www.cnblogs.com/kiko2014551511/p/13360538.html