一 SNMP协议介绍
简单网络管理协议( SNMP : Simple Network Management Protocol )是由互联网工程任务组( IETF : Internet Engineering Task Force )定义的一套网络管理协议。该协议基于简单网关监视协议( SGMP : Simple Gateway Monitor Protocol )。利用 SNMP ,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。虽然 SNMP 开始是面向基于 IP 的网络管理,但作为一个工业标准也被成功用于电话网络管理。
1. SNMP 基本原理
SNMP 采用了 Client/Server 模型的特殊形式:代理 / 管理站模型。对网络的管理与维护是通过 管理工作站 与 SNMP 代理 间的交互工作完成的。每个 SNMP 从代理负责回答 SNMP 管理工作站(主代理)关于 MIB 定义信息的各种查询。下图 10 是 NMS 公司网络产品中 SNMP 协议的实现模型。
图 10
SNMP 代理和管理站通过 SNMP 协议中的标准消息进行通信,每个消息都是一个单独的数据报。 SNMP 使用 UDP (用户数据报协议)作为第四层协议(传输协议),进行无连接操作。 SNMP 消息报文包含两个部分: SNMP 报头和协议数据单元 PDU 。数据报结构如下图 11 。
图 11
- 版本识别符( version identifier ): 确保 SNMP 代理使用相同的协议,每个 SNMP 代理都直接抛弃与自己协议版本不同的数据报。
- 团体名( Community Name ): 用于 SNMP 从代理对 SNMP 管理站进行认证;如果网络配置成要求验证时, SNMP 从代理将对团体名和管理站的 IP 地址进行认证,如果失败, SNMP 从代理将向管理站发送一个认证失败的 Trap 消息( 见后 );
- 协议数据单元( PDU ): 其中 PDU 指明了 SNMP 的消息类型及其相关参数。
2. 管理信息库 MIB
IETF 规定的管理信息库 MIB (由中定义了可访问的网络设备及其属性,由对象识别符( OID : Object Identifier )唯一指定。 MIB 是一个树形结构, SNMP 协议消息通过遍历 MIB 树形目录中的节点来访问网络中的设备。
下图给出了 NMS 系统中 SNMP 可访问网络设备的对象识别树( OID : Object Identifier )结构。
图 12
下图 13 给出了对一个 DS1 线路状态进行查询的 OID 设置例子。
图 13
图 14 中左图给出了 RFC2495 对 DS1/E1 中继线的 MIB 信息树图,右图是 NMS 系统中对机架 Chassis 管理 MIB 约定。
3. SNMP 的五种消息类型
SNMP 中定义了五种消息类型: Get-Request 、 Get-Response 、 Get-Next-Request 、 Set-Request 、 Trap 。
- Get-Request 、 Get-Next-Request 与 Get-Response
SNMP 管理站用 Get-Request 消息从拥有 SNMP 代理的网络设备中检索信息,而 SNMP 代理则用 Get-Response 消息响应。 Get-Next-Request 用于和 Get-Request 组合起来查询特定的表对象中的列元素。如:
首先通过下面的原语获得所要查询的设备的接口数:
{ iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)}
然后再通过下面的原语,进行查询(其中第一次用 Get-Request ,其后用 Get-Next-Request ):
{ iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)}
- Set-Request
SNMP 管理站用 Set-Request 可以对网络设备进行远程配置(包括 设备名 、 设备属性 、 删除设备 或使某一个 设备属性有效 / 无效 等)。
- Trap
SNMP 代理使用 Trap 向 SNMP 管理站发送非请求消息,一般用于描述某一事件的发生。