SNMP
1. SNMP
SNMP是"Simple Network Management Protocol",SNMP主要用于网络设备的管理。
SNMP协议是TCP/IP协议簇的一个应用层协议,在1988年被制定,并被Internet体系结构委员会(IAB,Internet Architecture Board)采纳,作为一个短期的网络管理解决方案,由于SNMP的简单性,在Internet时代得到了蓬勃的发展
1.1 SNMP的基本思想
为不同种类的设备、不同厂家生产的设备、不同型号的设备,定义了一个统一的接口和协议,实现了不同种类和厂商的网络设备的统一管理。通过网络,管理员可以管理位于不同物理空间的设备,大大提高网络管理的效率,简化网络管理员的工作。网络管理员可以利用SNMP平台在网络上的任意节点完成信息查询、信息修改和故障排查等工作
SNMP是广泛应用于TCP/IP网络的网络管理标准协议,该协议能够支持网络管理系统,用以监测连接到网络上的设备。
SNMP采用轮询机制,提供最基本的功能集,适合小型、快速、低价格的环境使用,而且SNMP以用户数据报协议(UDP)报文为承载,因而受到绝大多数设备的支持,同时保证管理信息在任意两点传送,便于管理员在网络上的任何节点检索信息,进行故障排查。
屏蔽了设备间的物理差异,SNMP仅提供最基本的功能集,使得管理任务与被管理设备的物理特性、网络类型相互独立,因而可以实现对不同设备的统一管理,管理成本低。
设计简单、运行代价低,SNMP采用“尽可能简单”的设计思想,其在设备上添加的软件/硬件、报文的种类和报文的格式都力求简单,因而运行SNMP给设备造成的影响和代价都被最小化。
2. SNMP 版本
SNMP协议分为三个版本:SNMPv1、SNMPv2c和SNMPv3。
SNMPv1:
SNMP的第一个版本,它提供了一种监控和管理计算机网络的系统方法,它基于Community Name认证(团体名用来定义SNMP NMS和SNMP Agent的关系,如果SNMP报文携带的团体名没有得到设备的认可,丢弃该报文,团体名起到了类似于密码的作用,用来限制SNMP NMS对SNMPAgent的访问)安全性较差,且返回报文的错误码也较少。SNMPv1在RFC 1155和RFC 1157中定义。
SNMPv2c:
第二个版本SNMPv2c 引入了GetBulk和Inform操作,支持更多的标准错误码信息,支持更多的数据类型(Counter64、Counter32)。SNMPv2c也采用团体名认证。SNMPv2c在RFC 1901,RFC 1905和RFC 1906中定义。
SNMPv3:
鉴于SNMPv2c在安全性方面没有得到改善,IETF颁布了SNMPv3版本,提供了基于USM(User Security Module)的认证加密和基于VACM(View-based Access Control Model)的访问控制,用户可以设置认证和加密功能,认证用于验证报文发送方的合法性,避免非法用户的访问,加密则是对NMS和Agent之间的传输报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为SNMP NMS和SNMP Agent之间的通信提供更高的安全性。SNMPv3版本支持的操作和SNMPv2c版本支持的操作一样。SNMPv3在RFC 1905,RFC 1906,RFC 2571,RFC 2572,RFC 2574和RFC 2575中定义。
3. SNMP的基本组件
SNMP基本组件包括网络管理系统NMS(Network Management System)、代理进程(Agent)、被管对象(Managed Object)和管理信息库MIB(Management Information Base)四部分。
如图所示他们共同构成SNMP的管理模型,在SNMP的体系结构中都起着至关重要的作用。

NMS作为整个网络的网管中心,对设备进行管理。每个被管理设备中都包含驻留在设备上的SNMP Agent进程、MIB和多个被管对象。NMS通过与运行在被管理设备上的SNMP Agent交互,由SNMP Agent通过对设备端的MIB进行操作,完成NMS的指令。
SNMP网络元素分为NMS和Agent两种:
NMS(Network Management Station,网络管理站)是运行SNMP客户端管理程序的工作站,能够提供非常友好的人机交互界面,方便网络管理员完成绝大多数的网络管理工作。
Agent是驻留在设备上的一个进程,负责接收、处理来自NMS的请求报文。在一些紧急情况下,如接口状态发生改变等,Agent也会主动通知NMS。
NMS是SNMP网络的管理者,Agent是SNMP网络的被管理者。NMS和Agent之间通过SNMP协议来交互管理信息。
3.1 NMS
NMS在网络中扮演管理者角色,是一个采用SNMP协议对网络设备进行管理/监视的系统,运行在NMS服务器上。
NMS可以向设备上的Agent发出请求,查询或修改一个或多个具体的参数值。
NMS可以接收设备上的SNMP Agent主动发送的SNMP Traps,以获知被管理设备当前的状态。
3.2 Agent
Agent是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自NMS的请求,把管理数据汇报给发送请求的NMS。
Agent接收到NMS的请求信息后,通过MIB表完成相应指令后,并把操作结果响应给NMS。
当设备发生故障或者其它事件时,设备会通过SNMP Agent主动发送SNMP Traps给NMS,向NMS报告设备当前的状态变化。
3.3 Managed Object
Managed Object指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件,也可以是在硬件、软件(如路由选择协议)上配置的参数集合。
3.3 MIB
MIB是一个数据库,指明了被管理设备所维护的变量,是能够被Agent查询和设置的信息。MIB在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。MIB也可以看作是NMS和SNMP Agent之间的一个接口,通过这个接口,NMS对被管理设备所维护的变量进行查询/设置操作。
通过MIB,可以完成以下功能:
Agent通过查询MIB,可以获知设备当前的状态信息。
Agent通过修改MIB,可以设置设备的状态参数。
MIB以树状结构进行存储的,如下图所示的是MIB的一部分,它又称为对象命名树。根在最上面,根没有名字。树的节点表示被管理对象,每个对象标识符OID(object identifier)对应于树中的一个管理对象,该树的每个分支都有一个数字和一个名称,并且每个点都以从该树的根到该点的完整路径命名,它可以用从根开始的一条路径唯一地识别,这条路径就称为OID,如system的OID为1.3.6.1.2.1.1,interfaces的OID为1.3.6.1.2.1.2。
子树可以用该子树根节点的OID来标识。如以private为根节点的子树的OID为private的OID——{1.3.6.1.4}。

4. SNMP端口
SNMP端口是SNMP通信端点,SNMP消息传输通过UDP进行,通常使用UDP端口号161/162。有时也使用传输层安全性(TLS)或数据报传输层安全性(DTLS)协议。
SNMP端口使用介绍
| 过程 | 协议 | 端口号 |
|---|---|---|
| 代理进程接收请求信息 | UDP协议 | 161 |
| NMS与代理进程之间的通信 | UDP协议 | 161 |
| NMS接收通知信息 | UDP协议 | 162 |
| 代理进程生成通知信息 | - | 任何可用的端口 |
| 接收请求信息 | TLS/DTLS | 10161 |
| 接收通知信息 | TLS/DTLS | 10162 |
5. SNMP工作原理
网络中启动SNMP协议后,NMS作为整个网络的网管中心,会对设备进行管理。
每个被管理设备都包含驻留在设备上的Agent、多个被管对象和MIB,NMS通过与运行在被管理设备上的Agent交互,由Agent通过对设备端的MIB的操作,完成NMS的指令。
SNMP的工作原理是将协议数据单元(也称为SNMP GET请求)发送到响应SNMP的网络设备。用户通过网络监控工具可以跟踪所有通信过程,并从SNMP获取数据。
SNMP规定了几个操作类型来完成各组件之间的信息交换,如下表所示:
SNMP操作类型
| 操作类型 | 描述 |
|---|---|
| Get | Get操作可以从Agent中提取一个或多个参数值。 |
| GetNext | GetNext操作可以从Agent中按照字典序提取下一个参数值。 |
| Set | Set操作可以设置Agent的一个或多个参数值。 |
| Response | Response操作可以返回一个或多个参数值。这个操作是由Agent发出的,它是GetRequest、GetNextRequest、SetRequest和GetBulkRequest四种操作的响应操作。Agent接收到来自NMS的Get/Set指令后,通过MIB完成相应的查询/修改操作,然后利用Response操作将信息回应给NMS。 |
| Trap | Trap信息是Agent主动向NMS发出的信息,告知管理进程设备端出现的情况。 |
| GetBulk | GetBulk操作实现了NMS对被管理设备的信息群查询。 |
| Inform | InformRequest也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS回复InformResponse来进行确认。 |
Note:SNMPv1版本不支持GetBulk 、Inform操作
6. SNMP Traps
SNMP Traps是指SNMP Agent主动将设备产生的告警或事件上报给NMS,以便网络管理员及时了解设备当前运行的状态。
SNMP Agent上报SNMP Traps有两种方式:Trap和Inform。
Trap和Inform的区别在于,SNMP Agent通过Inform向NMS发送告警或事件后,NMS需要回复InformResponse进行确认。
6.1 Trap操作工作原理
Trap不属于NMS对被管理设备的基本操作,它是被管理设备的自发行为。当被管理设备达到告警的触发条件时,会通过SNMP Agent向NMS发送Trap消息,告知设备侧出现的异常情况,便于网络管理人员及时处理。例如被管理设备热启动后,SNMP Agent会向NMS发送warmStart的Trap。
这种Trap信息是受限制的。只有在设备端的模块达到模块预定义的告警触发条件时,SNMP Agent才会向管理进程报告。这种方法的好处是仅在严重事件发生时才发送Trap信息,减少报文交互产生的流量。
6.2 Inform操作工作原理
Inform操作也是被管理设备向NMS主动发送告警。与Trap告警不同的是,被管理设备发送Inform告警后,需要NMS进行接收确认。如果被管理设备没有收到确认信息则:
- 将告警或事件暂时保存在Inform缓存中。
- 重复发送该告警或事件,直到NMS确认收到该告警或者发送次数达到最大重传次数。
- 被管设备上会生成相应的告警或事件日志。
7. SNMP的应用
网管可以通过SNMP协议管理设备,如下图所示,管理员要对整个网络的设备进行配置和管理,这些设备分布较为分散,管理员到现场进行设备配置是不现实的。当这些网络设备来自不同的厂商,而每个厂商都提供一套独立的管理接口(比如使用不同的命令行),将使得批量配置网络设备的工作量巨大。因此,在这种情况下,如果采用传统的人工方式,将会带来成本高、效率低的弊端,此时网络管理员可以利用SNMP远程管理和配置其下属设备,并对这些设备进行实时监控。

在组网中配置SNMP协议,首先需要在管理端配置SNMP管理程序NMS,同时在被管理设备端配置SNMP的Agent。
通过SNMP协议:
- NMS可以通过Agent在任何时候及时地获得设备的状态信息,实现远端控制被管理设备。
- Agent可以及时地向NMS报告设备的当前状态信息。
Reference:
https://info.support.huawei.com/info-finder/encyclopedia/zh/SNMP.html
https://support.huawei.com/hedex/hdx.do?docid=EDOC1100087046&id=ZH-CN_TASK_0177878325

浙公网安备 33010602011771号