SNMP网络管理协议学习笔记

SNMP

SNMP(Simple Network Management Protocol)--网络管理协议。该协议基于简单网关监视协议。它是一个标准的用于管理IP 网络上结点的协议。包括监视和控制变量集以及用于监视设备的两个数据格式 SMI 和 MIB。利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。

SNMP思想:

为不同种类设备不同厂家生产的设备不同型号的设备定义一个统一的接口和协议 使得管理员可以使用统一的外观界面对这些需要管理的网络设备进行管理。通过网络管理员可以管理位于不同物理空间的设备,从而大大提高网络管理的效益。

SNMP 是管理进程(NMS)和代理进程(Agent)之间的通信协议。它规定了在网络环境 中对设备进行监视和管理的标准化管理框架、通信的公共语言、相应的安全和访问控制 机制。网络管理员使用 SNMP 功能可以查询设备信息、修改设备的参数值、监控设备状 态、自动发现网络故障、生成报告等。

SNMP 采用了 Client/Server 模型的特殊形式:代理/管理站模型。对网络的管理与 维护是通过管理工作站与 SNMP 代理间的交互工作完成的。每个 SNMP 从代理负责回答 SNMP 管理工作站(主代理)关于 MIB 定义信息的各种查询。



NMS

(1)NMS 是网络中的管理者,是一个利用SNMP 协议对网络设备进行管理和监视的 系统。NMS 既可以指一台专门用来进行网络管理的服务器,也可以指某个设备中执行管 理功能的一个应用程序。

(2)Agent 是网络设备中的一个应用模块(可以放在设备内部,也可以放在设备外部),用于维护被管理设备的信息数据并响 应 NMS 的请求,把管理数据汇报给发送请求的 NMS。Agent 接收到 NMS 的请求信息后,完成查询或修改操作,并把操作结果发送给 NMS,完成响应。同时,当设备发生故障或者其他事件的时候,Agent 会主动发送Trap信息给NMS,通知设备当前的状态变化。

(3)管理信息库存放了该设备上被管对象资源的所有信息,每个被管对象有一个 惟一对象的对象标识符(OID)

SNMP的Manager与Agent交互

获取数据、下发指令、NMS响应

NSM和代理的关系 

NMS对网络设备(设备认为发生的故障以及重要的事故)发送各种查询报文,并接收来自被管设备的响应及陷阱(trap)报文,将结果显示出来。代理(agent)是驻留在被管设备上的 一个进程,负责接受、处理来自网管站的请求报文,然后从设备上其他协议模块中取得 管理变量的数值,形成响应报文,反送给 NMS。在一些紧急情况下,如接口状态发生改 变,呼叫成功等时候,主动通知 NMS(发送陷阱 TRAP 报文)。SNMP就是用来规定NSM和agent之间是如何传递管理信息的应用层协议。

使用传输层的UDP协议,特点是没有用IP,使用的是应用程序的端口号(161-request和response、162-trap)NSM一般安装在服务器上

SNMP的主要命令

(1) 读(READ)命令--即网络管理员可以在网络管理系统上,通过 Read 命令去了解路由器的当前运行状况,以了解到底是哪里出现了问题。

(2) 写(WRITE)命令--写命令主要就是向路由器等被管设备发送操作指令。

(3) 陷阱(Trap)命令--Trap命令用来向SNMP 管理器异步发送事件报告

(4) 通知(Inform)命令--主要就是用来做 SNMP 事件通知,Inform命令相对于trap可靠。 

第(3) 、第(4)个命令主要是路由器等被管设备发生异常情况时,自动向网络管理员报警。

SNMP版本

SNMPv1

SNMPv1 是 SNMP 协议的最初版本,提供最小限度的网络管理功能。SNMPv1 的 SMI 和 MIB 都比较简单,且存在较多安全缺陷。SNMPv1 采用团体名认证。团体名的作用类似于密码,用来限制NMS对Agent 的访问。如果 SNMP 报文携带的团体名没有得到 NMS/Agent 的认可,该报文将被丢弃。SNMPV1 是一种简单的请求/响应协议。网络管理系统发出一个请求,管理器则返回一个响应。这一行为的实现是通过使用四种协议操作中的其中任一种完成的。这四种操作分别是 GET、GETNEXT、SET 和 TRAP。NMS 通过 GET 操作,从 SNMP 代理处得到一个或 更多的对象(实例)值。如果代理处不能提供请求列表中所有的对象(实例)值,它也就不提供任何值。 NMS 使用 GETNEXT 操作请求代理从请求列表或对象列表中取出下一 个对象实例值。NMS 通过 SET 操作向 SNMP 代理发送命令,要求对对象值重新配置。SNMP 代理通过 TRAP 操作不定时的通知 NMS 所发生的特定事件 SNMP 是一种应用程序协议。

SNMPv2

SNMPv2c 也采用团体名认证。在兼容 SNMPv1 的同时又扩充了 SNMPv1 的功能:它提 供了更多的操作类型(GetBulk--批量获取操作等);支持更多的数据类型(Counter32等),提供了更丰富的错误代码,能够更细致地区分错误。

SNMPV1 中的 GET、GETNEXT 及 SET 操作同样适用于 SNMPV2,只是 SNMPV2 添加和增强了有关协议操作。例如 SNMPV2 中的 TRAP 操作,不但具备 SNMPV1 中 TRAP 的相同功能,而且它采用了一种不同的消息格式,它用于替换 SNMPV1 中的 TRAP。

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)。这种安全管理方式支持不同安全性,访问控制安全性认证和隐私授权和访问控制管理框架人员和政策用户名及密钥管理通知目标文件代理关系实体命名。

SNMPV3 使用 SNMP SET 命令配置MIB对象,使之能动态配置SNMP代理。这种动态配置方式支持本地或远程地配置实体的添加、删除及修改。

SNMP报文

SNMPv1报文

SNMP 消息主要由 Version、Community、SNMP PDU 几部分构成。其中,报文中的主 要字段定义:

1PDU类型:0-get-request

1-get-next-request

2-get-response

3-set-request

4-trap

2Community:团体名,用于Agent 与NMS之间的认证。团体名有可读和可写两种, 如果是执行Get、GetNext 操作,则采用可读团体名进行认证;如果是执行 Set 操作,则采用可写团体名进行认证。

3 Request ID:用于匹配请求和响应,SNMP 给每个请求分配全局唯一的 ID。

4Error status:用于表示在处理请求时出现的状况,包括 noError(没有错误)、tooBig(代理进程无法把响应放在一个SNMP消息中发送)、noSuchName(操作一个不存在的变量)、badValue(set操作的值或者语义有错误)、readOnly(管理进程,试图修改一个只读变量)、genErr(其他错误)。

Error index:差错索引。差错状态字段是一个整数,它是由代理进程标注的, 指明有差错发生。当出现异常情况时,提供变量绑定列表(Variable bindings) 中导致异常的变量的信息。差错索引字段是一个整数偏移量,指明当有差错发生 时,差错发生在哪个参数。它是由代理进程标注的,并且只有在发生 2、3、4 差错时才进行标注。

SNMPv2报文

SNMPv2c 新增了GetBulk 操作报文。GetBulk 操作所对应的基本操作类型是 GetNext 操作,通过对 Non repeaters 和 Max repetitions 参数的设定,高效率地从 Agent 获取大量管理对象数据。

SNMPv2c 修改了 Trap 报文格式。SNMPv2c Trap PUD 采用 SNMPv1 Get/GetNext/Set PDU 的格式,并将 sysUpTime 和 snmpTrapOID 作为Variable bindings 中的变量来构造 报文。

SNMPv3报文

SNMPv3 修改了消息的格式,但是 PDU 部分的格式同 SNMPv2c 是保持一致的。SNMPv3 消息可以使用认证机制,并对 EngineID、ContextName、PDU 消息体部分进行加密。RequestID、MaxSize、Flags、SecurityModel、

SecurityParameters 构成 SNMPv3 消息头。

报文:V1、v2都是以版本号开始,然后加共同体,然后是PDU

SNMP消息类型

Get-Request

管理站向 Agent 发起读的操作读取管理对象的值,以取得设备或网络的支运行数据 以及配置信息的,进而规划网络管理。SNMP 不支持一次读取一张表或一张表中的一行数据。SNMP 的设计动机就是简单官能性,这就是简单性的一个体现。但是,当需要一 次读取多个数据时,如果分多次读取公增加网络负担,所以 GetRequest 支持一次提交多个对象标识 ,以便一次获取它们的值。提高带宽利用率。

GetNextRequest

GetRequest 不支持一次读取一张表,GetNextRequest 提供了一种实现上更为简单 的的方法,对 OID 进行 GetNextRequest 操作,将会收到下一个可读取对象的实例标识, 接着对这个实例标识执行 GetNextRequest,会得到再下一实例标识,不断执行下去就 可以读取完整张表。GetNextRequest 遍历表时先列后行。

 SetRequest

在网络管理中,有时需要对设备的一些参数配置状态等进行重新配置,这时就需要一种远程的管理机制,SetRequest 就是这样的操作,Set 操作可以对 MIB 中权限为 writer-only read-writer 的对象进行 Set 操作,比如,MIB-II 中对组的 sysContact sysName 和 sysLocation 都是 read-write 访问类型,NMS 可以使用 SetRequest 操作改 变这些对象。

 GetResponse

GetResponse 对 get set 和 getNext 进行应答,由 Agent 被动地产生发出。当操作 成功地执行后,GetResponsePDU 里面包含操作中请求操作的对象 OID 和相应的值。

 Trap

网络中存在大量的设备,NMS 轮询一次需要一段时间,如果设备发生了重要的状态改变,等到下一次轮询到来时,可能已经失去实时性,导致 NMS 不能及时掌握设备数据获状态变化。另一方面,考虑到对网络的占用,又不可能以很小的间隔轮询设备,所以需要一种机制让设备能够主动地发出警报,通知状态获配置的改变以及其它一些重要事件。Trap 就是实现这种需求的机制。Trap是由代理主动发出的警报,向管理站通报设备的重要改变。


MIB管理信息库

定义了被管对象的一系列属性:对象类型、语法、访问字段及状态字段等。MIB是以树状结构进行存储的,树的节点表示被管理对象,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID。管理信息库常见组

System组:用于存放设备的基本信息,如设备的描述,所用的操作系统, 生产商联系人和联系方式,及提供的服务类型等等;

Interfaces组:用来存放接口设备状态,使用一个标量指出系统中有多少网络接口,另外使用一张表存放具体的接口数据,网络接口设备可以是网卡,调制解调器,无线接口等; 

IP组:保存IP层状态数制,包含一组标量和3个表格变量。SNMP要求所 有设备实现IP组;

TCP组:表示tcp状态实现TCP的系统要求实现TCP组,由一个表和其它标量组tcpConnTable保存本机每一个TCP连接信息 TCP连接表每个TCP连接对应表的一条记录,每个记录包含5个变量:连 接状态本地IP地址本地端口远端IP地址远端端口号。

  管理信息库常见组

UDP组:存放UDP相关的状态数据实现UPD协议的机器必须实现UDP组。 网桥组:Bridge MIB是一个定义网桥管理对象的MIB,它包括一般网桥管 理信息、生成树网桥管理信息和透明网桥管理信息。它主要对OLT设备中 所具有的生成树网桥的设置、监测提供网络管理手段,用于管理支持通信级别和虚拟局域网的智能设备。


转载于:https://my.oschina.net/u/3311443/blog/848800

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值