我开发的SNMP编译器和浏览器
什么是SNMP
SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
SNMP信息
MIB,Management Information Base:管理信息库,由网络管理协议访问的管理对象数据库,它包括SNMP可以通过网络设备的SNMP管理代理进行设置的变量。SMI,Structure of Management Information:管理信息结构,用于定义通过网络管理协议可访问的对象的规则。SMI定义在MIB中使用的数据类型及网络资源在MIB中的名称或表示。
使用SNMP进行网络管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网络管理工具。管理基站通常是一个独立的设备,它用作网络管理者进行网络管理的用户接口。基站上必须装备有管理软件,管理员可以使用的用户接口和从MIB取得信息的数据库,同时为了进行网络管理它应该具备将管理命令发出基站的能力。
管理代理是一种网络设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理响应基站的请求进行相应的操作,也可以在没有请求的情况下向基站发送信息。
MIB是对象的集合,它代表网络中可以管理的资源和设备。每个对象基本上是一个数据变量,它代表被管理的对象的一方面的信息。
最后一个方面是管理协议,也就是SNMP,SNMP的基本功能是:取得,设置和接收代理发送的意外信息。取得指的是基站发送请求,代理根据这个请求回送相应的数据,设置是基站设置管理对象(也就是代理)的值,接收代理发送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。
SNMP为应用层协议,是TCP/IP协议族的一部分。它通过用户数据报协议(UDP)来操作。在分立的管理站中,管理者进程对位于管理站中心的MIB的访问进行控制,并提供网络管理员接口。管理者进程通过SNMP完成网络管理。SNMP在UDP、IP及有关的特殊网络协议(如,Ethernet, FDDI, X.25)之上实现。
AAC-MIB DEFINITIONS ::= BEGIN
****************************************************************************************************
MIB文件是以DEFINITIONS ::= BEGIN 开始,最后一行以END结束。
DEFINITIONS ::= BEGIN 前面是库名称,如这里的是AAC-MIB,这里库名称就像是一个系统中的
对象名,是唯一的!
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IMPORTS
****************************************************************************************************
IMPORTS标识当前库文件需要引入其它的类文件,编译才不会出错.引入格式为[对象]FROM[库文件],像:
IpAddress
FROM RFC1155-SMI
MODULE-IDENTITY, OBJECT-TYPE
FROM SNMPv2-SMI
RowStatus,DisplayString
FROM SNMPv2-TC
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
-- EntryStatus
-- FROM RMON-MIB
dlink-common-mgmt FROM DLINK-ID-REC-MIB;
****************************************************************************************************
要引人的对象
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
swDlinkAACMIB MODULE-IDENTITY
LAST-UPDATED "9911220000Z"
ORGANIZATION "Working Group"
CONTACT-INFO
" "
DESCRIPTION
"The Link AAC module MIB."
::= { dlink-common-mgmt 5}
swAACCtrl OBJECT IDENTIFIER ::= { swDlinkAACMIB 1 }
-- -------------------------------------------------------------
-- Textual Conventions
-- -------------------------------------------------------------
swAACAuthenAdminState OBJECT-TYPE
SYNTAX INTEGER {
other(1),
disabled(2),
enabled(3)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object indicates the Access Authentication is enable or
disable."
::= { swAACCtrl 1}
****************************************************************************************************
引入文件标识结束后就是本类的对象节点描述.
其中 MODULE-IDENTITY, OBJECT-TYPE都是定义的一些宏,这些在RFC1155, RFC2578里面都可以找到,
swDlinkAACMIB 和 swAACAuthenAdminState分别是其实例。其中swAACAuthenAdminState为例:
SYNTAX INTEGER表示类型为整型,且是枚举值,其中,SYNTAX 为宏OBJECT-TYPE定义的关键字
MAX-ACCESS read-write,表示可读写
STATUS current 表示状态是可用的
DESCRIPTION 是一些描述信息
::= { swAACCtrl 1} 是swAACAuthenAdminState的值,也就是OBJECT-TYPE中定义的VALUE部分
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
END
****************************************************************************************************
最后一行以END结束
****************************************************************************************************
例子:
LOOGSON-MIB DEFINITIONS::=BEGIN
IMPORTS
enterprises,OBJECT-TYPE,Integer32,TimeTicks
FROM SNMPv2-SMI
OBJECT-GROUP, NOTIFICATION-GROUP
FROM SNMPv2-CONF
TEXTUAL-CONVENTION, DisplayString
FROM SNMPv2-TC;
loogson OBJECT IDENTIFIER ::= { enterprises 29881 }
cq8401 OBJECT IDENTIFIER ::= { loogson 3 }
test OBJECT IDENTIFIER ::= { cq8401 1 }
MachType OBJECT-TYPE
SYNTAX OCTET STRING
ACCESS read-only
STATUS current
DESCRIPTION "设备类型"
::={ test 1 }
END