ASN.1在网络管理中的应用研究
时间:2021-04-07 07:51:36 来源:达达文档网 本文已影响 人
【 摘 要 】 ASN.1语言定义了网络管理信息结构、网络管理信息库、简单网络管理协议。以这些网络管理相关RFC文档为例,对应用于网络管理中的常用ASN.1语法进行了总结性研究。
【 关键词 】 抽象语法标记语言;网络管理信息结构;网络管理信息库;简单网络管理协议
【 中图分类号 】 TP393 【 文献标识码 】 A
1 简介
在电信和计算机网络领域,抽象语法标记语言(Abstract Syntax Notation one, ASN.1) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法。它提供了一套正式、无歧义和精确的规则形式化描述独立于特定计算机硬件的对象结构。
简单网络管理协议(Simple Network Management Protocol, SNMP)构成了互联网工程工作小组(Internet Engineering Task Force ,IETF)定义的Internet协议簇的一部分。该协议支持网络管理系统,用以监测连接到网络上的设备是否有任何引起管理上关注的情况。它由一组网络管理的标准组成,包含一个应用层协议SNMP、管理信息结构(Structure of Management Information, SMI)和网络管理信息库(Management Information Base , MIB)。
本文通过对以上网络管理相关的RFC文档的研究,总结了ASN.1的基本使用规则。
2 管理信息结构文档(RFC1155)
RFC1155主要定义了TCP/IP网络中网络管理信息的结构和标识,其定义主要使用ASN.1通用的数据类型。网络是由一个一个基本对象组成,这些基本对象可以概括为多种对象类型,要描述对象类型,通常要有对象类型的名字、语法和编码。
ASN.1中的OBJECT IDENTIFIER类型,它是一种为管理方便而分配的以”.”号分割的数字序列,该数字序列唯一定义了在网络中的对象类型。
对象类型的语法采用ASN.1定义该对象类型所对应的抽象数据结构,例如,简单的对象类型可以直接使用ASN.1中的基本数据类型如INTEGER、OCTET STRING、OBJECT IDENTIFIER、NULL。
对象的编码可以采用ASN.1中定义的BER、PER等编码规则,编码规则在本文暂不讨论。
下面主要阐述OBJECT IDENTIFIER基本类型的使用和OBJECT-TYPE宏以及其的使用方法。
(1)OBJECT IDENTIFIER定义可管理的树型层次结构对象
例如,Internet对象定义为:
internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
该定义表示internet对象子树以数字序列1.3.6.1.开始,是iso树中的一个分支。如果需要在该分支下继续定义其子分支,同样采用OBJECT IDENTIFIER来定义,左边给出该分支节点的名字,右边给出该节点在此分支的排序。例如,在internet分支下的第二个节点名字定义为mgmt,则语法格式如下:
mgmt OBJECT IDENTIFIER ::= { internet 2 }
(2)对象类型的语法
在网络管理中,管理对象成千上万,不断发展。因此,需要对网络管理对象统一建模,规范网络管理对象的形式化定义。ASN.1提供的MACRO宏定义可以用来定义被管理对象宏定义OBJECT-TYPE,其形式化描述如下:
OBJECT-TYPE MACRO ::=BEGIN
TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
"ACCESS" Access
"STATUS" Status
VALUE NOTATION ::= value (VALUE ObjectName)
Access ::= "read-only"| "read-write" | "write-only"| "not-accessible"
Status ::= "mandatory" | "optional"| "obsolete"
END
OBJECT-TYPE宏定义规范了宏实例的基本定义方式,包括语法类型、访问方式、状态等,其中对访问方式和状态分别规定了其可能的取值。
通过该OBJECT-TYPE宏定义,可以规范网络管理对象的定义。例如,sysLocation对象定义如下:
该定义说明sysLocation管理对象的语法为长度为0到255字节的字符串,访问方式为read-only(只读),状态是mandatory(必须实现)。
3 管理信息库文档(RFC1213)
RFC1213主要定义了网络管理中的管理对象。所有的网络管理对象处于iso树型结构中的mgmt子树的第一个子节点mib-2子树的叶子节点。在mib-2子树下定义了11颗子树,分别是system、interfaces、at、ip、icmp、tcp、udp、egp、cmot、transmission、snmp子树。这些树型结构中中间节点对象的定义都借助于OBJECT IDENTIFIER,叶子节点的定义都借助于宏定义OBJECT-TYPE。
一个完整的定义在ASN.1中称之为模块。模块的主要结构如下:
在网络管理标准中,这些模块的名字都以RFC开头,加上文档编号和中划线-,最后是该文档所描述的内容,如RFC1155-SMI、RFC1213-MIB、RFC1157-SNMP等模块。模块中定义的内容借助关键词EXPORTS可以被其他模块所引用,借助关键词IMPORTS可以引入其他模块所定义的内容。
例如,在RFC1213-MIB模块中引入模块RFC1155-SMI中定义的mgmt、NetworkAddress等,从RFC-1212模块中引入OBJECT-TYPE的基本模块定义如下:
RFC1213-MIB DEFINITIONS ::= BEGIN
IMPORTS mgmt,NetworkAddress,IpAddress,Counter,Gauge,TimeTicks FROM RFC1155-SMI
OBJECT-TYPE FROM RFC-1212;
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
......
END
4 简单网络管理协议文档(RFC1157)
RFC1157主要定义了网络管理中网络管理程序和代理程序通信时所遵从的规约。该规约主要规定了管理程序和代理程序通信时所采用的报文结构,数据的语义信息。
报文结构等类型的定义都需要借助于ASN.1中的基本数据类型或构造类型。在RFC1157中,主要借助于SEQUENCE、INTEGER、OCTET STRING、ANY等类型。在借助这些ASN.1已有类型定义新类型时,语法形式如下:
新类型::=已有类型
类型所定义的变量语法形式如下:
类型变量 类型
例如,定义Message为SEQUENCE类型,OCTET STRING类型变量community如下:
Message ::=SEQUENCE {
version INTEGER {version-1(0)},
community OCTET STRING,
data ANY
}
5 结束语
ASN.1是一种形式化定义语言。该语言无歧义地定义了网络管理相关的网络管理对象层次结构关系、管理对象、通信协议等。通过研究这些相关的RFC文档,可快速掌握ASN.1在实践中的应用,为应用其定义新的协议等奠定理论和实践基础。
参考文献
[1]A Simple Network Management Protocol (SNMP) [S/OL]. http://.cn/qkpdf/xxaq/xxaq201306/xxaq20130631-1.pdf" style="color:red" target="_blank">原版全文