SNMP简单网络管理协议(转载)
SNMP
SNMP
网络管理的历史
美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事。在80年代未和90年代初,网络迅速发展,许多子网数目的增多使监视网络活动成为一种必须。
在网络管理的初期,对网络的管理停留在使用ICMP和PING的基础上,但是随着网络内主机数据的不断增多,这种简单的工具已经不可能完成网络管理的工作了。
SNMP历史
随着网络数目与网络内主机数目的日益增多,单纯依靠一些网络专业进行网络管理已经不可能了,必须有一种通行的网络管理标准以及相应的管理工具使普通人也能够管理网络。第一个相关的协议是SGMP,它提供了一种直接监视网关的方法,也因此成了一种通用的网络管理工具。下来,有三种可供选择的管理工具:HEMS,SNMP和建立在TCP/IP基础上的CMIP(CMOT),因为需要使用ISO/OSI模型进行网络管理,SNMP首选CMOT作为管理工具。基本的SNMP已经被广泛使用了,所有的网络产品都提供对SNMP的支持,新开发的具有远程管理能力的SNMP是RMON,它使管理人员可以将整个子网进行管理,而不是对整个子网内的设备进行管理。
一些定义
- SNMP,Simple Network Management Protocol:简单网络管理协议
- 它是一个标准的用于管理IP网络上结点的协议。此协议包括了监视和控制变量集以及用于监视设备的两个数据格式:SMI和MIB。
- MIB,Management Information Base:管理信息库
- 由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量。
- SMI,Structure of Management Information:管理信息结构
- 用于定义通过网络管理协议可访问的对象的规则。SMI定义在MIB中使用的数据类型及网络资源在MIB中的名称或表示。
- ASN.1,Abstract Syntax Notation One:抽象语法定义
- 用于定义语法的正式语言,在SNMP中它用于定义SNMP协议数据单元和对象的格式。
- PDU,Protocol Data Unit:协议数据单元
- 在网络中传送的数据包。
- BER,basic encoding rules:基本编码规则
- 由CCITT (X.209)和ISO (ISO 8825)指定的编码规则,它描述了如何将ASN.1类型表示为字符串。
SNMP介绍
使用SNMP进行网络管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网络管理工具。管理基站通常是一个独立的设备,它用作网络管理者进行网络管理的用户接口。基站上必须装备有管理软件,管理员可以使用的用户接口和从MIB取得信息的数据库,同时为了进行网络管理它应该具备将管理命令发出基站的能力。
管理代理是一种网络设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理响应基站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。
MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。
最后一个方面是管理协议,也就是SNMP,SNMP的基本功能是:取得,设置和接收代理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据,设置是基站设置管理对象(也就是代理)的值,接收收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。
MIB和对象
MIB包括了对象列表,这些对象与指示对象类型的OBJECT IDENTIFIER相关。MIB的结构是树形结构,有两种方式可以访问MIB中对象的值,一种是快速访问,另一种慢速访问,快速访问时只用输入一些数据,慢速访问时要加上其它信息。
SNMP MIB是对象的定义是十分严格的,定义指定了对象的数据类型,允许的形式,取值范围和与其它MIB对象的关系。ASN.1定义方法用来定义每个对象,同时也定义整个MIB结构。
有两种不同对象数据结构:通用类型的专用类型,通用类型指的是整数,字符串,空值,对象标识,序列和序列号;专用类型是指网络地址,IP地址,记数器,标准等。
若要定义对象自身,必须使用ASN.1。下面是一个基本的定义结构:
<模块名> DEFINITIONS ::= BEGIN EXPORTS IMPORTS AssignmentList End
软件
应用程序可以显示SNMP数据,NAS公司开发的应用程序HNMS就是这方面的一个比较好的工具。详细情况请参阅:http://www.nas.nasa.gov/Groups/LAN/Trouble/HNMS.html
如果不想花钱可以在下面一些地方取得免费的管理软件
ftp://ftp.ida.liu.se/pub/isode-snmpV2/isode-8.tar.gz
ftp://allspice.lcs.mit.edu/pub/snmp/
ftp://ftp.net.cmu.edu/pub/snmp-dist/cmu-snmp2.1.2.tar
ftp://ftp.cs.utwente.nl:/pub/src/snmp
ftp://ftp.ece.ucdavis.edu/pub/snmp/ucd-snmp.tar.gz
http://www.cs.tu-bs.de/ibr/projects/nm/tkined/
http://www.cs.tu-bs.de/ibr/projects/nm/scotty/
体系结构
- 所有在应用层下的TCP/IP层都有它自己的SNMP结构
- 硬件制造商可以在它的产品中实现了相应的管理结构
- 从图上可以看到有许多MIB,但服务器只有一台
服务器处理过程
- 基站发送的请求仅有两种类型,取值和赋值
- 一个请求可以进行多个操作
ASN.1
- ASN.1是用于定义MIB对象的高层计算机语言
- SNMP使用ASN.1子集的基本类型:整数,字符串,对象标识符,序列和空值
- BER用于将ASN.1编译为SNMP可以传送的字符串,在SNMP代理间传送。对于变量ASN.1使用词典顺序进行有序排列,并定义了层次状态的名字空间
- 词典式排序可以使服务器不需要知道被请求的变量的大小而直接响应请求。
- 所有的变量都有后后缀iso.org.dod.internet.mgmt.mib或1.3.6.1.2.1
PDU
- 客户可以发送以下三个基本命令:设置,读取和取下一个
- 设置和读取指令使服务器进行直接变量映射
- 取下一个指令指定要取的变量名,服务器根据变量当前所排的字典序返回指定变量名下一个变量的值,在不知道表大小的时候这条指令十分有用
- 在层次的树状结构中可以一定前进一个结点,当然这样会因为要多次发送请求和相应于请求的数据而对网络造成不必要的压力,也可以在树状结构中一次取得多个点的数据
- 如果发生意外情况,客户会向服务器的162端口发送一个消息,告知服务器指定的变量值发生了变化。通常由服务器请求而获得的数据由服务器的161端口接收。
Hash表设计
- Hash表用于快速查找变量,Hash表是一个指针数组,每个数组指向一组具有相同Hash值的结点。
- 如果需要查找MIB变量的值,服务器根据变量名的数字表示经过Hash函数计算后得到数组索引值,通过查找数组相应元素指向的结点可以找到需要的数据
- 而在MIB中的每个元素除了使用字典序进行排序之外,还拥有一个指向下一个元素的指针,这个指针在执行取下一个指令时特别有用,在其中还包括了ASN.1名称,和能够作于此变量的所有函数的地址以及内部变量地址
- 在服务器启动时初始化这些变量的值
SNMP总结
SNMP是一种易于实现的基本的网络管理工具,它能够满足短期的管理要求。因为基于OSI的管理协议现在进展缓慢,所以它起到了一个重要的补充作用。
SNMP协议提供了用于定义网络信息和框架和用于交换信息的协议标准。SNMP模型引入了管理器和代理的概念,管理器指的是以人类管理员身份负责所有网络(或部分网络)的软件。代理指的被管理设备中的软件,它用以完成管理器所需要进行的局部管理和应急通知管理器的功能。