SNMP 的定义与组成
通过网络管理软件可以集中式对多台设备进行统一管理,并且可以直观的看到网络设备的运行情况。而且可以通过网管软件对设备进行相应的配置, SNMP 系统包括网络管理系统 NMS(Network Management System)、代理进程 Agent、被管对象 Management object 和管理信息库 MIB(Management Information Base)四部分组成。
NMS 作为整个网络的网管中心,对设备进行管理。每个被管理设备中都包含驻留在设备上的 Agent 进程、MIB 和多个被管对象。NMS 通过与运行在被管理设备上的 Agent 交互,由 Agent 通过对设备端的MIB 的操作,完成 NMS 的指令
各版本间操作的差异
SNMPv1:
包括 Get、GetNext、Set、Response 和 Trap
SNMPv2c:
包括 Get、GetNext、Set、Response 、Trap、Getbulk、inform
SMMPv3:
包括 Get、GetNext、Set、Response 、Trap、Getbulk、inform
SNMP 管理模型
SNMP 系统包括网络管理系统 NMS(Network Management System)华为网管软件Esight 作为 NMS 对设备进行管理、代理进程 Agent、被管对象 Management object 和管 理信息库 MIB(Management Information Base)四部分组成。
下面介绍网络管理系统中各主要元素:
NMS:
NMS 在网络中扮演管理者角色,是一个采用 SNMP 协议对网络设备进行管理/监视的系统,运行在 NMS 服务器上。
NMS 可向设备上的 Agent 发出请求,查询或修改一个或多个具体的参数值。也可以接收 Agent 主动发送的 Trap 信息,以获知被管理设备当前的状态。
Agent:
Agent 是被管理设备中的一个代理进程,用于维护被管理设备的信息数据并响应来自 NMS 的请求。Agent 接收到 NMS 的请求信息后,通过 MIB 表完成相应指令后,并把操作结果响应给 NMS。
当设备发生故障或者其它事件时,设备会通过 Agent 主动发送信息给 NMS,向NMS报告设备当前的状态变化。
MIB:
MIB 是一个数据库,指明了被管理设备所维护的变量(即能够被 Agent 查询和设置的信息)。MIB 在数据库中定义了被管理设备的一系列属性:对象的名称、对象的状态、对象的访问权限和对象的数据类型等。
通过 MIB,可以完成以下功能:
◆ Agent 通过 get 消息查询 MIB,可以获知设备当前的状态信息。
◆ Agent 通过 set 消息修改 MIB,可以设置设备的状态参数。
Management object:
Management object 指被管理对象。每一个设备可能包含多个被管理对象,被管理对象可以是设备中的某个硬件(如一块接口板),也可以是某些硬件,软件(如路由选择协议)及其的配置参数的集合。
2、SNMPv1/SNMPv2c
SNMPv1/SNMPv2c 报文主要由版本、团体名、SNMP PDU 三部分构成。
报文中的主要字段定义如下:
版本:表示 SNMP 的版本,如果是 SNMPv1 报文则对应字段值为 0,SNMPv2c 则为1。
团体名:用于在 Agent 与 NMS 之间完成认证。团体名包括“可读”和“可写”两种执行GetRequest、GetNextRequest 操作时,采用“可读团体名”进行认证;执行 Set 操作时,则采用“可写团体名”认证。
SNMPv1/SNMPv2c PDU:包含 PDU 类型、请求标识符、变量绑定列表等信息。
SNMPv1/SNMPv2c 规定了7 种操作类型,用来完成 NMS 和 Agent 之间的信息交换。
Get | Get 用于查询一个或多个参数值。 |
---|---|
GetNext | GetNext 操作按照字典序提取下一个参数值。 |
Set | Set 操作可以设置 Agent 的一个或多个参数值。 |
Response | 它是 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 来进行确认。 |
SNMPv1 版本不支持 GetBulk 和 Inform 操作
3、SNMPv1/SNMPv2c 工作原理
SNMPv1 和 SNMPv2c 的工作原理基本一致。SNMPv1/SNMPv2c 的工作原理如图所示。
◆ NMS 向Agent 发送 Get、GetNext 或 Set 请求报文时,报文中各字段的设置如下:
版本号为所使用的 SNMP 版本;团体名为 public(当请求报文为 Get 和 GetNext 时)或 private(当请求报文为 set 时);PDU 中 PDU 类型为 Get、GetNext 或 Set 类型,绑定变量填入 MIB 节点名 sysContact。
◆ Agent:首先对报文中携带版本号和团体名进行认证,认证成功后,如果是 get 或 getnext 操作,Agent 根据请求查询 MIB 中的 sysContact 节点,得到 sysContact 的值并将其封装到 Response 报文中的 PDU,向 NMS 发送响应;如果是 set 操作,Agent 根据请求设置管理变量在管理信息库 MIB 中对应的节点,设置成功后向NMS 发送响应;
Trap 操作
当被管理设备达到告警的触发条件时,会通过 Agent 向 NMS 上运行的 NMS 发送Trap 消息,告知设备侧出现的异常情况,便于网络管理人员及时处理。
SNMPv2c 新增的操作如图所示:
GetBulk 操作
基于GetNext 实现,相当于连续执行多次 GetNext 操作。在NMS 上可以设置被管理设备在一次GetBulk 报文交互时,执行 GetNext 操作的次数。
Inform 操作
Inform 操作也是被管理设备向NMS 主动发送告警。与trap 告警不同的是,被管理设备发送 Inform 告警后,需要NMS 进行接收确认。如果被管设备没有收到确认信息则:
◆ 将告警暂时保存在 Inform 缓存中,然后重复发送,直到 NMS 确认收到该告警或 重传达到最大次数,并且被管设备上会生成相应的告警日志。由此可知,使用 Inform 告警可能会占用较多的系统资源
4、SNMPv3
SNMPv3 定义了新的报文格式,其报文结构如图所示。
SNMP 报文中的主要字段定义如下:
版本:表示 SNMP 的版本,SNMPv3 报文则对应字段值为2。
报头数据:主要包含消息发送者所能支持的最大消息尺寸、消息采用的安全模式等描述内容。
安全参数:包含 SNMP 实体引擎的相关信息、用户名、认证参数、加密参数等安全信息。SNMPv3 的实现原理和SNMPv1/SNMPv2c 基本一致,唯一的区别是 SNMPv3 增加了身份验证和加密处理。
身份验证:身份验证是指 Agent 或 NMS 接到信息时首先必须确认信息是否来自有权限的 NMS 或 Agent 并且信息在传输过程中未被改变。
加密:采用数据加密标准(DES)的密码组链接(CBC)码,使用 128 位的 privKey 作为输入。NMS 使用密钥计算验证码,然后将其加入信息中,而 Agent 则使用同一密钥从接收的信息中提取出验证码,从而得到信息。加密的过程与身份验证类似,也需要管理站和代理共享同一密钥来实现信息的加密和解密。
扩展问题1:现网中常用的是SNMPv2c,但是还一直使用SNMPv1的trap报文,而不常用inform报文?
因为现网中丢包的情况很少出现,所以使用 trap 报文即可实现被管理设备的告警,而使用 inform 报文的话虽然也能实现告警,但是会增加报文的交互数量、消耗设备的处理性能;
因为 infrom-request 报文会重复的发送给到 NMS,直到重传时间超时或者 NMS 发送 infrom-response 报文给到 Agent 时,infrom 报文才会停止发送;
扩展问题2:Agent是什么?代理一台设备还几台设备?
Agent 是一台运行了 Agent 进程的设备(路由器或者交换机等),主要是管理本台设备上的接口、CPU、内存等;代理的其实是本台设备;
扩展问题3、SNMP v1、v2c、v3 各自的特点?
SNMPv1:
SNMP协议的最初版本,容易实现且成本低。读取效率慢
缺少大量读取数据的能力,没有足够的安全机制。基于团体名认证,安全性较差,且返回报文的错误码也较少。
适合规模较小,设备较少,安全性要求不高或本身就比较安全的网络,如校园网,小型企业网。
SNMPv2c:
扩充了SNMPv1的功能,增加GetBulk和inform操作。
GetBulk:实现了NMS对被管理设备的信息群查询。
Inform:被管理设备向NMS(Network Management System,网络管理系统)主动发送告警,需要NMS进行接收确认。
1、支持更多的标准错误码信息,支持更多的数据类型。
2、没有足够的安全机制。提高读取效率
3、适合规模较大,设备较多,安全性要求不高或本身就比较安全,但业务比较繁忙,有可能发生流量拥塞的网络。
SNMPv3:
版本提供了基于 USM(User Security Module)的 基于 VACM(View-based Access Control Model)的访问控制
a)基于用户认证(针对不同的用户分配密码,访问权限), 提高安全性 对报文传输过程中进行可选加密
b)USM:提供身份验证和数据加密服务(新加入了用户 名和对数据进行加密,防止数据被窃取)
c)VACM:对用户组或者团体名实现基于视图的访问控制
1、适应性强:适用于多种操作环境,既可以管理最简单的网络,又能够满足复杂网络的管理需求。
2、方便管理:SNMP框架体系由多个功能相对独立的子系统或应用程序集合而成,因而可以很方便地对其进行管理。例如,若系统发生了故障,可以根据发生故障的功能类型,定位到相应的子系统。
3、扩展性好:可以很方便地进行系统扩展。比如,为了应用新的安全协议,就可以在安全子系统中为其定义单独的模块,从而在SNMP中支持该协议。