简单网络管理协议(Simple Network Management Protocol,SNMP)是在应用层上进行网络设备间通信的管理协议,可以用于网络状态监视、网络参数设定、网络流量统计与分析、发现网络故障等。SNMP基于UDP协议,由SNMP协议、管理信息库和管理信息结构组成。
1、SNMP协议
1.1 SNMP PDU
SNMP规定了5个重要的协议数据单元PDU,也叫SNMP报文。SNMP报文可以分为从管理站到代理的SNMP报文和从代理到管理站的SNMP报文(SNMP报文建议不超过484个字节)。常见的SNMP报文如下表所示:
从管理站到代理的SNMP报文 | 从代理到管理站的SNMP报文 | |
从一个数据项取数据 | 把值存储到一个数据项 | |
Get-Request | Set-Request | Get-Response |
Get-Next-Request | Trap |
SNMP协议实体发送请求和应答报文的默认端口号是161,SNMP代理发送陷阱报文(Trap)的默认端口号是162。
1.2 SNMP版本
目前SNMP有SNMPv1、SNMPv2、SNMPv3三个版本,各版本的特点如下所示:
版本 | 特点 |
SNMPv1 | 易于实现:使用团体名认证(属于同一团体的管理站和被管理站才能互相认证) |
SNMPv2 | 可以实现分布和集中两种方式的管理:增加管理站之间的信息交换;改进管理信息机构;增加多协议支持;引入信息模块的概念(包括MIB模块、MIB的依从性声明模块、代理能力说明模块) |
SNMPv3 | 模块化设计;提供安全的支持;基于用户的安全模型 |
1.3 SNMPv2接收报文和发送报文
SNMPv2接收报文的过程:
1)对报文进行语法检查,丢弃出错的报文;
2)把SNMP报文部分、源端口号和目标端口号交给认证服务。如果认证失败,发送一个陷阱,丢弃报文;
3)如果认证通过,则把SNMP报文转换成ASN.1的形式(抽象语法标记,描述了一种对数据进行表示、编码、传输和解码的数据格式);
4)协议实体对SNMP报文做语法检查。如果通过检查,则根据团体名和适当的访问策略作相应的处理。
SNMPv2发送报文的过程:
1)根据要实现的协议操作构造SNMP报文;
2)把SNMP报文、源端口、目标端口以及要加入的团体名传送给认证服务,认证服务产生认证码或对数据进行加密,返回结果;
3)加入版本号和团体名构造报文;
4)进行BER编码(将 ASN.1 类型的值编码成比特流),产生0/1比特串并发送出去。
1.4 SNMPv3安全分类
在SNMPv3中有两类安全威胁是一定要提供防护的:主要安全威胁和次要安全威胁。
1)主要安全威胁:修改信息和假冒。修改信息是指擅自修改SNMP报文,篡改管理操作,伪造管理对象;假冒就是冒充用户标识。
2)次要安全威胁:修改报文流和消息泄露。修改报文流可能出现乱序、延长、重放的威胁;消息泄露则可能造成SNMP之间的信息被窃听。
另外有两种服务不被保护或者无法保护:拒绝服务和通信分析。
1.5 SNMP轮询监控
SNMP采用轮询监控方式,管理者按一定时间间隔向代理获取管理信息,并根据管理信息判断是否有异常事件发生。当管理对象发生紧急情况时,可以使用名为Trap信息的报文主动报告。轮询监控的主要优点是对代理资源要求不高,缺点是管理通信开销大。SNMP的基本功能包括网络性能监控、网络差错检测和网络配置。
假定在SNMP网络管理中,轮询周期是N,单个设备轮询时间为T,网络没有拥塞,则
支持的设备数
2、管理信息库
管理信息库(Management Information Base,MIB)指定主机和路由器等被管设备需要保存的数据项和可以对这些数据项进行的操作。也就是说只有MIB中的对象才能被SNMP管理。目前使用的是MIB-2,常见的MIB-2信息如下表所示:
类别(标号) | 描述 |
system(1) | 主机、路由器操作系统 |
interface(2) | 网络接口信息 |
address translation(3) | 地址转换(废弃多年) |
ip(4) | IP信息 |
icmp(5) | ICMP信息 |
tcp(6) | TCP信息 |
udp(7) | UDP信息 |
egp(8) | EGP信息 |
cmot(9) | CMOT信息(废弃多年) |
每个MIB-2信息下面包含若干个MIB变量,如system组下的sysuptime表示距上次启动的时间,ip组下的ipDefaultTTL表示IP在生存时间字段的值。SNMP MIB中被管对象的访问方式有 只读、读写、只写和不可访问四种,不包括可执行。
3、管理信息结构
信息管理结果(Structure of Manaement Information,SMI)定义了命名管理对象和定义对象类型(包括范围和长度)的通用规则,以及对对象和对象的值进行编码的规则。SMI的功能有命名被管理对象、存储被管对象的数据类型、编码管理数据。