SNMP协议基础原理
<The rest of contents | 余下全文>
SNMP协议基础与原理
(一)SNMP基础
网络管理和SNMP
早期的计算机网络规模小,结构简单。随着计算机网络技术的迅速发展,网络规模日益庞大,结构越来越复杂,管理方式难以适应现代计算机网络设备种类繁多庞杂的特点。因此网络管理向高度集中和高度智能化的方向发展趋势逐渐凸显。 在此之前先后出现了多种网络管理标准,最早致力于网络管理标准化的组织是国际标准化组织ISO。 其制定的第一个网络标准为CMIS/CMIP。同期出现的其它网络管理协议还有高层实体管理系统HEMS、简单网关监控协议SGMP等。最终随着TCP/IP协议的普及新的网络管理标准的推出缓慢,最终IAB决定将已有的SGMP修订完善,发展为今天普遍的SNMP协议,目前SNMP已经发展到SNMPv3 网络管理的目的是能保证一个网络系统正常的运行。其在维护网络正常运行的基础上,还需能够采集和分析网络中的数据。能够查看网络中各节点的网络设备的性能,以及运行状况,并且能向相应的设备发送管理指令,再者能够及时的发现网络故障,为网络故障的排查以及网络的优化提供数据支持等。 根据网络的组成,国际标准化组织将网络管理划分为五部分① 故障管理② 配置管理③ 性能管理④ 安全管理⑤ 计费管理故障管理和性能管理是其他管理活动的基础。早期的网络管理相对简单,大多是命令行式的手工管理。不同的网络设备,命令格式不同,管理方式不同。这种管理方式网络管理员不能主动发现问题,基本总是问题发生以后才察觉网络出现问题。网络管理的实质是网络管理人员从设备中获取正在运行的信息,再对信息进行分析、判断,从而确定整个网络的运行状态并采取措施的过程。网络管理协议有两个基本问题:一是管理信息表示与标识,二是网络设备与网络管理软件之间传递信息的管理协议。目前在实践中广泛应用的网络管理协议有三个。分别是SNMPv1、SNMPv2c、SNMPv3。
SNMPv1简单易于实施,被业界广泛接受,但是其有非常致命的安全性缺点。唯一的安全机制是基于共同体字符串。SNMPv2c结合了SNMPv1的安全机制,同时在数据定义、协议操作类型等方面也做了较大变动。SNMPv3显著增加了安全性。增加了SNMP消息加密和认证,并加强了MIB访问控制。
SNMP概述
SNMP组成从功能上可以分为两大部分:管理信息定义与标识和SNMP实体间通信协议。管理信息定义与标识的核心内容是管理信息结构与标识(SMI)和许多管理信息库(MIB)。SMI规定如何定义、标识管理信息。MIB遵循SMI规定,定义具体的管理信息。SNMP协议不同版本的通信协议操作和通信协议安全机制不同。运行网络管理程序的计算机称为网络管理工作站(NMS)。运行在被管理的网络设备上完成SNMP功能的进程称为代理(Agent)。管理工作站向代理发起查询操作,获取网络设备的工作状态信息。代理则负责响应和处理来自管理工作站的服务请求,并向管理工作站报告本地发生的网络事件。这些设备可以是路由器、交换机、服务器、网络打印机等。在SNMPv3中,没有管理工作站与代理的概念。它们被统一称为SNMP应用程序实体。
委托代理(Proxy Agent)是一种特殊的SNMP代理。其有三种用途(1)转发SNMP请求,其可以转发一个SNMP请求到另外一个SNMP应用程序实体。不同的网络传输域不同的SNMP版本之间,需要委托代理进行请求消息转发。
SNMP是应用层协议,SNMP定义了一套自己的抽象语法。协议的语意和语法一般通过PDU(协议数据单元)实现。SNMP使用抽象语法标记(ASN.1)定义抽象语法和PDU。依据SMI定义一组标准的数据类型,这些数据类型的取值,表示一些对网络管理活动有意义的网络资源,定义这些数据的文本称为MIB。SIM、MIB和SNMP构成SNMP协议簇的基石。
利用SMI,可以根据实际需要定义出更多类型的MIB。SNMP规定这些数据如何在应用程序之间交互,包括交互时的PDU格式、意义和消息顺序。
SNMP操作
SNMP是管理工作站和代理之间的通信协议。工作站获取信息的方式有两种模式:查询和事件报告。查询是工作站主动发起,事件报告机制是代理向工作站报告情况。通信协议的功能操作通过定义不同的PDU来实现。常见的分别是get、getnext、set、response和Trap。get、getnext、set三种用于工作站发起主动操作,response PDU用于代理应答上面三种消息。Trap PDU用于代理主动向工作站报告网络事件。从C/S模式来看,工作站和代理都扮演真双重身份。查询操作,工作站是客户端,代理是服务端采用UDP 161端口。报告时间爱你操作中代理是客户端,工作站是服务端,端口采用 UDP 162端口。在实际的生产环境中其UDP端口是可配置的
(二)抽象语法标记
概述
ASN.1(抽象语法标记)是一套用于描述独立于任何平台和编程语言的数据类型的标准语言。包括两部分内容:数据描述语言和数据编码规则。SNMP使用ASN.1定义数据。在计算机科学中,巴柯斯范式专门用来定义计算机语言。ASN.1也是由一系列巴柯斯范式定义的。
ASN.1基础
ASN.1定义的数据类型分为简单类型和结构类型。它不同于其他高级语言,它只用来定义数据类型,且每种数据类型都有对应的传输编码。数据是需要定义类型和赋值的。ASN.1的类型分为简单类型、结构类型、定义类型和其他类型。
简单的结构类型有以下几种:
INTEGER 整形
BOOLEAN 布尔型
REAL 实型
OCTECT STRING 字节串型
OBJECT IDENTIFIRE 标识符型
ENUMERATED 枚举型
ASN.1提供了4种结构类型,它们是:
SET 集合结构
SEQUENCE 序列结构
SET OF 元素相同的集合结构
SEQUENCE OF 元素相同的序列结构
其他类型有下面2种,除这两种以外其他ASN.1类型都有传输标识,称为类型标签(Tag):
CHOICE 选择类型
ANY 任意一种一直类型
上面这些类型是ASN.1已经定义好的ASN.1内置类型。定义类型并没有产生新的ASN.1。定义类型只是为类型重新起个名字以便引用它。 值是某个类型取值范围内一个特定值,通常在定义名时完成赋值操作。在SNMP中,不仅有ASN.1定义的类型和值,还会遇到使用一系列产生式定义的宏。产生式中经常出现一些关键字和基本符号。它们在ASN.1标准中具有特定的意义。