关于SNMP的MIB文件的语法简述

SNMP协议的MIB文件的常见宏定义的描述

MIB文件中一些常见的宏定义的描述

1.DEFINITIONS ::= BEGIN

SNMP始终使用ASN.1概念中的描述块(module)来组织ASN.1对象的,ASN.1的描述块是一些相关描述语句的集合,module的结构如下

<<module>> DEFINITIONS ::= BEGIN

<<linkage>>

<<declarations>>

END

 

2.<<basetype>> ::= TEXTUAL-CONVENTION

定义了对标准数据类型的进行扩展的语法

很多MIB定义中都会先定义一些基于标准类型的扩展类型,如:

CiFlowDirection ::= TEXTUAL-CONVENTION

        STATUS  current

        DESCRIPTION

            "The direction of data flow thru a circuit.

 

                transmit(1) - Only transmitted data

                receive(2)  - Only received data

                both(3)     - Both transmitted and received data."

        SYNTAX  INTEGER {

                  transmit(1),

                  receive(2),

                  both(3)

                }

CiFlowDirection 是基于INTEGER的枚举类型

 

3.<<mibname>> MODULE-IDENTITY

该定义添加了一个公共的标示段来对整个信息描述块进行顶层的文字描述,以加强对管理MIB描述块的文档管理和控制,每个MIB定义中都会有该定义。

如:

circuitIfMIB MODULE-IDENTITY

 

4.OBJECT-IDENTIFIFIER

声明一个节点

如:

atmClpTaggingNoScr  OBJECT-IDENTITY

 

5.OBJECT-TYPE

如:

    ciCircuitTable  OBJECT-TYPE

        SYNTAX      SEQUENCE OF CiCircuitEntry

        MAX-ACCESS  not-accessible

        STATUS      current

        DESCRIPTION

            "The Circuit Interface Circuit Table."

        ::= { ciObjects 1 }

包括了SNMP定义该管理对象的全部信息,相当于一个模板。

表,实体,叶子都是该类型。

 

SNMPv2中对SNMP的兼容性做了规定,主要是通过引入三个宏: OBJECT-GROUP,MODULE-COMPLIANCE,AGENT-CAPABILITIES.

 

6.OBJECT-GROUP

定义相关管理对象集合以及他们彼此关联的一致性程度。OBJECT-GROUP声明的MIB对象是实现该组所必须包括的MIB对象的最小集合。也就是说,要实现这个组,必须包括这些对象。

 

7.MODULE-COMPLIANCE

通过定义模块内所包含的组来保证模块的兼容性。

规定了要实现该模块必须包含的组的最小集合。

其中MANDATORY-GROUPS规定了此模块必须实现的组的名称。GROUP子句说明条件必须活条件可选的组。

 

8.AGENT-CAPABILITIES

管理代理实现了模块中的哪些组以及这些组中的MIB对象在实现时和原定义的差别在管理信息结构中由此宏定义表示。此宏定义在实际应用中很少见。

 

9.OBJECT-IDENTITY

对象标示宏,此宏定义用于说明对象标示符(OBJECT-IDENTIFIER),给对象标示符的说明加上附加信息,包括状态,文字说明等,可用于对一个表中几个参数的不同组合的意义的说明。

 

10.NOTIFICATION-TYPE

说明了SNMPv2trap格式。定义了通知类型报文中传输的数据。




MIB file的开始和结束

所有的MIB file的都以DEFINITIONS ::= BEGIN关键字开始,以END结束。我们所有添加的节点均应在此之间。

XXX-TEST-MIB DEFINITIONS ::= BEGIN

……

……

END

 

模块引用区域

MIB开始关键字后,即是模块引用区域,利用IMPORTS标识,所有的模块引用及群组的引用均使用FROM关键字说明其出处,引用使用分号(;)结束。

注:分号,英文全角分号。

在一个MIB file中,所有引用到的数据类型均应有引用。

如:

IMPORTS

enterprises

            FROM RFC1155-SMI

        Integer32

            FROM SNMPv2-SMI            

        DisplayString

            FROM SNMPv2-TC;

MIB核心部分(对象标识,标量节点,表格对象的定义)

对象标识

对象标识用关键字OBJECT IDENTIFIER声明,它的主要功能是用来将一类功能的对象结合起来。展开或折叠此对象标识即可展开或折叠此类功能的所有对象。

在ASN.1中,对象标识符类型描述对象的抽象信息,MIB树中的每一个标号是用对象标识符描述的。

例如:

  xxx OBJECT IDENTIFIER ::= {enterprises 22566}

 

   xxx是一个子树支,它定义在enterprises树支下,“22566” 是子树xxx在父树enterprises下的一个唯一对象标识符。

其编译后的视图为:

 blog.csdn.net/shanzhizi

 


标量节点

在每一个树支下,可以定义被管理资源的管理对象,其中一类是标量节点(直观地看象树叶的节点)。利用OBJECT-TYPE定义。其定义的句法如下:

objectname OBJECT-TYPE

     SYNTAX (syntax)

     MAX-ACCESS (access)

     STATUS (status)

     DESCRIPTION (description)

     ::= { ( parent ) ( number )

 

关键字

说明

备注

objectname

被管理对象的名字

必须以小写字母开头

OBJECT-TYPE

每一个叶子对象所必须的关键字

 

syntax

被管理对象类型的关键字

Counter(计数)

Gauge(标准)

DisplayString(显示字符串)

Interger(整数)

TimeTicks(时间戳)

NetworkAddress(网络地址)

IpAddress(Ipv4地址)

access

该节点支持的访问方式

read-only(只读)

read-write(读写)

read-create(读和创建)

no-accessible(不可访问)

status

该节点的状态

current (当前的)

deprecated (反对的)

obsolete(废弃的)

description

对被管理对象的功能、特征等进行描述的关键字

 

例如:

Xxxx OBJECT-TYPE

SYNTAX DisplayString

MAX-ACCESS read-only

STATUS current

DESCRIPTION

"

"                  

::= { xxxx 1 }

表类型

表类型是一个特殊类型的声明,表内声明的对象称为列对象,表对象可以看作是一些标量对象的集合。利用SEQUENCESEQUENCE OF定义表格和表格中的行, 通常来说,表格对象的名字后面加有后缀Table,行对象的名字后面加有后缀Entry。

其声明如下:                          

     tablename OBJECT-TYPE

SYNTAX  SEQUENCE OF Entrytype            

MAX-ACCESS  not-accessible

STATUS  current

DESCRIPTION (description)

:: ={ (parent) (number)}

 

      entryname OBJECT-TYPE

SYNTAX  Entrytype

MAX-ACCESS not-accessible            

STATUS  current

DESCRIPTION  description

    INDEX { index list }

                   :: ={ (tablename) 1}

     

     (Entrytype)  :: =

SEQUENCE {

            (column1)   (column1type),

            (column2)   (column1type),

              ( columnN)    (columnNtype) }

 

关键字

说明

备注

tablename

表格名 

xxxxTable首字母小写

Entrytype

表对象名

XxxxEntry首字母大写

not-accessible

访问方式

此处必须是not-accessible

entryname

行名

XxxxEntry名相同,首字母小写xxxxEntry

description

描述信息

 

 

源码如下:

XXX-TEST-MIB DEFINITIONS ::= BEGIN

IMPORTS

enterprises

            FROM RFC1155-SMI

        Integer32

            FROM SNMPv2-SMI            

        DisplayString

            FROM SNMPv2-TC;

  

   xxx OBJECT IDENTIFIER ::= {enterprises 22566}

  

   zkClassInfoTable OBJECT IDENTIFIER ::= {xxx 1}  

   zkClassInfoTable2 OBJECT IDENTIFIER ::= {xxx 2}  

  

zkClassInfoTable OBJECT-TYPE 

SYNTAX   SEQUENCE OF ZkClassInfoEntry 

   MAX-ACCESS not-accessible

   STATUS  current

   DESCRIPTION 

   "

   This is test table.

   "

        ::= {xxx 1}

  

   zkClassInfoEntry OBJECT-TYPE 

   SYNTAX    ZkClassInfoEntry 

   MAX-ACCESS  not-accessible    

   STATUS  current

   DESCRIPTION

   "

   This is teat entry.

   "     

   INDEX  {zkClassInfoIndex}             

   ::= {zkClassInfoTable 1}   

  

ZkClassInfoEntry ::= SEQUENCE {

zkClassInfoIndex  Integer32,

    zkClassInfoSex Integer32,

    zkClassInfoAge Integer32,

    zkCLassInfoName  DisplayString,

    zkClassInfoAddress  DisplayString

}

zkClassInfoIndex OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 1}

zkClassInfoSex OBJECT-TYPE

SYNTAX  Integer32  {

              man(1),

              woman(2)

}

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 2}   

zkClassInfoAge OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 3} 

zkCLassInfoName OBJECT-TYPE 

SYNTAX  DisplayString

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 4}

zkClassInfoAddress OBJECT-TYPE 

SYNTAX  DisplayString

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 5}   

zkClassInfoTable2 OBJECT-TYPE 

SYNTAX   SEQUENCE OF ZkClassInfoEntry2 

   MAX-ACCESS not-accessible

   STATUS  current

   DESCRIPTION 

   "

   This is test table.

   "

        ::= {xxx 2}

  

   zkClassInfoEntry2 OBJECT-TYPE 

   SYNTAX    ZkClassInfoEntry2 

   MAX-ACCESS  not-accessible    

   STATUS  current

   DESCRIPTION

   "

   This is teat entry.

   "     

   INDEX  {zkClassInfoIndex}             

   ::= {zkClassInfoTable2 1}   

  

ZkClassInfoEntry2 ::= SEQUENCE {

    zkClassInfoSex2 Integer32,

    zkClassInfoAge2 Integer32,

    zkCLassInfoName2  DisplayString,

    zkClassInfoAddress2  DisplayString

}

zkClassInfoSex2 OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry2 1}

END

 

XXX-TEST_MIB DEFINITIONS ::= BEGIN

IMPORTS

enterprises

            FROM RFC1155-SMI

        Integer32

            FROM SNMPv2-SMI            

        DisplayString

            FROM SNMPv2-TC;

  

   xxx OBJECT IDENTIFIER ::= {enterprises 40256}

  

   zkClassInfoTable OBJECT IDENTIFIER ::= {xxx 1}  

   zkClassInfoTable2 OBJECT IDENTIFIER ::= {xxx 2}  

  

zkClassInfoTable OBJECT-TYPE 

SYNTAX   SEQUENCE OF ZkClassInfoEntry 

   MAX-ACCESS not-accessible

   STATUS  current

   DESCRIPTION 

   "

   This is test table.

   "

        ::= {xxx 1}

  

   zkClassInfoEntry OBJECT-TYPE 

   SYNTAX    ZkClassInfoEntry 

   MAX-ACCESS  not-accessible    

   STATUS  current

   DESCRIPTION

   "

   This is teat entry.

   "     

   INDEX  {zkClassInfoIndex}             

   ::= {zkClassInfoTable 1}   

  

ZkClassInfoEntry ::= SEQUENCE {

zkClassInfoIndex  Integer32,

    zkClassInfoSex Integer32,

    zkClassInfoAge Integer32,

    zkCLassInfoName  DisplayString,

    zkClassInfoAddress  DisplayString

}

zkClassInfoIndex OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 1}

zkClassInfoSex OBJECT-TYPE

SYNTAX  Integer32  {

              man(1),

              woman(2)

}

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 2}   

zkClassInfoAge OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 3} 

zkCLassInfoName OBJECT-TYPE 

SYNTAX  DisplayString

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 4}

zkClassInfoAddress OBJECT-TYPE 

SYNTAX  DisplayString

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry 5}   

zkClassInfoTable2 OBJECT-TYPE 

SYNTAX   SEQUENCE OF ZkClassInfoEntry2 

   MAX-ACCESS not-accessible

   STATUS  current

   DESCRIPTION 

   "

   This is test table.

   "

        ::= {xxx 2}

  

   zkClassInfoEntry2 OBJECT-TYPE 

   SYNTAX    ZkClassInfoEntry2 

   MAX-ACCESS  not-accessible    

   STATUS  current

   DESCRIPTION

   "

   This is teat entry.

   "     

   INDEX  {zkClassInfoIndex}             

   ::= {zkClassInfoTable2 1}   

  

ZkClassInfoEntry2 ::= SEQUENCE {

    zkClassInfoSex2 Integer32,

    zkClassInfoAge2 Integer32,

    zkCLassInfoName2  DisplayString,

    zkClassInfoAddress2  DisplayString

}

zkClassInfoSex2 OBJECT-TYPE 

SYNTAX  Integer32

MAX-ACCESS read-write

STATUS current

DESCRIPTION 

"

"

::= {zkClassInfoEntry2 1}

END


  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AdventNet SNMP API 4概述 AdventNet SNMP API为基于SNMP的网络管理应用提供了一个全面的开发工具包。AdventNet的SNMP栈包含一系列强大的Java SNMP库,用来为监控和跟踪网络元素创建实时的应用程序,这些应用程序是可靠的、可伸展的且独立于OS的。 开发人员可以利用AdventNet的SNMP库来创建独立的、基于web的和分布式(EJB、CORBA或RMI)基于SNMP的网络管理应用程序。Java SNMP库除了提供基本的SNMP操作,如:SNMP GET、SNMP GETNEXT、SNMP GETBULK和SNMP SET,还为陷阱和表格处理提供了现成的组件。这些组件便于简单和快速地开发和部署SNMPv1、SNMPv2c和SNMPv3管理应用程序。 使用基于Java的SNMP API构建的SNMP管理应用程序(管理器)能够接收SNMP陷阱,并能基于预定义的标准来处理这些陷阱,实现有效的SNMP管理。 用于SNMP应用开发的可视IDE: AdventNet SNMP API集成了一个易于使用的可视化IDE(Integrated Development Environment) SNMP Design Studio,大大简化了SNMP管理应用程序的开发和部署。自动的代码生成功能减少了源代码中的人为错误,从而改进了产品的质量并降低了开发的时间和成本。SNMP Design Studio还为代码编辑、调试、维护和封装提供了内置的工具。 AdventNet SNMP API重要特征: 多语言支持: 完全支持SNMPv1、SNMPv2c和SNMPv3 SNMPv3安全: 支持HMAC-SHA-96,HMAC-MD5-96,CBC-DES和128位AES加密。 稳健的SMIv1和SMIv2 MIB解析器: 无缝解析任何OEM供应商的MIB定义。 MIB加载: 可以选择从预编译文件、串行文件或数据库加载MIB文件以增强性能。 IPv6(Internet Protocol Version 6): 提供与基于IPv6和IPv4的设备之间的连通性。 SNMP广播: 面向网络广播SNMP数据包,从而自动发现网络中的SNMP设备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值