Network Working Group                                         F. Strauss
Request for Comments: 3781                               TU Braunschweig
Category: Experimental                                  J. Schoenwaelder
                                         International University Bremen
                                                                May 2004
        
Network Working Group                                         F. Strauss
Request for Comments: 3781                               TU Braunschweig
Category: Experimental                                  J. Schoenwaelder
                                         International University Bremen
                                                                May 2004
        

Next Generation Structure of Management Information (SMIng) Mappings to the Simple Network Management Protocol (SNMP)

到简单网络管理协议(SNMP)的下一代管理信息结构(SMIng)映射

Status of this Memo

本备忘录的状况

This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.

这份备忘录为互联网社区定义了一个实验性协议。它没有规定任何类型的互联网标准。要求进行讨论并提出改进建议。本备忘录的分发不受限制。

Copyright Notice

版权公告

Copyright (C) The Internet Society (2004). All Rights Reserved.

版权所有(C)互联网协会(2004年)。版权所有。

Abstract

摘要

SMIng (Structure of Management Information, Next Generation) (RFC3780), is a protocol-independent data definition language for management information. This memo defines an SMIng language extension that specifies the mapping of SMIng definitions of identities, classes, and their attributes and events to dedicated definitions of nodes, scalar objects, tables and columnar objects, and notifications, for application to the SNMP management framework.

SMIng(下一代管理信息结构)(RFC3780)是一种与协议无关的管理信息数据定义语言。此备忘录定义了一个SMIng语言扩展,该扩展指定将标识、类及其属性和事件的SMIng定义映射到节点、标量对象、表和列对象以及通知的专用定义,以应用于SNMP管理框架。

Table of Contents

目录

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  SNMP Based Internet Management . . . . . . . . . . . . . . . .  3
       2.1.   Kinds of Nodes. . . . . . . . . . . . . . . . . . . . .  4
       2.2.   Scalar and Columnar Object Instances. . . . . . . . . .  5
       2.3.   Object Identifier Hierarchy . . . . . . . . . . . . . .  7
   3.  SMIng Data Type Mappings . . . . . . . . . . . . . . . . . . .  8
       3.1.   ASN.1 Definitions . . . . . . . . . . . . . . . . . . .  9
   4.  The snmp Extension Statement . . . . . . . . . . . . . . . . . 10
       4.1.   The oid Statement . . . . . . . . . . . . . . . . . . . 10
       4.2.   The node Statement. . . . . . . . . . . . . . . . . . . 10
              4.2.1. The node's oid Statement . . . . . . . . . . . . 10
              4.2.2. The node's represents Statement. . . . . . . . . 10
              4.2.3. The node's status Statement. . . . . . . . . . . 11
              4.2.4. The node's description Statement . . . . . . . . 11
              4.2.5. The node's reference Statement . . . . . . . . . 11
        
   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2.  SNMP Based Internet Management . . . . . . . . . . . . . . . .  3
       2.1.   Kinds of Nodes. . . . . . . . . . . . . . . . . . . . .  4
       2.2.   Scalar and Columnar Object Instances. . . . . . . . . .  5
       2.3.   Object Identifier Hierarchy . . . . . . . . . . . . . .  7
   3.  SMIng Data Type Mappings . . . . . . . . . . . . . . . . . . .  8
       3.1.   ASN.1 Definitions . . . . . . . . . . . . . . . . . . .  9
   4.  The snmp Extension Statement . . . . . . . . . . . . . . . . . 10
       4.1.   The oid Statement . . . . . . . . . . . . . . . . . . . 10
       4.2.   The node Statement. . . . . . . . . . . . . . . . . . . 10
              4.2.1. The node's oid Statement . . . . . . . . . . . . 10
              4.2.2. The node's represents Statement. . . . . . . . . 10
              4.2.3. The node's status Statement. . . . . . . . . . . 11
              4.2.4. The node's description Statement . . . . . . . . 11
              4.2.5. The node's reference Statement . . . . . . . . . 11
        
              4.2.6. Usage Examples . . . . . . . . . . . . . . . . . 11
       4.3.   The scalars Statement . . . . . . . . . . . . . . . . . 11
              4.3.1. The scalars' oid Statement . . . . . . . . . . . 12
              4.3.2. The scalars' object Statement  . . . . . . . . . 12
              4.3.3. The scalars' status Statement  . . . . . . . . . 13
              4.3.4. The scalars' description Statement . . . . . . . 14
              4.3.5. The scalars' reference Statement . . . . . . . . 14
              4.3.6. Usage Example. . . . . . . . . . . . . . . . . . 14
       4.4.   The table Statement . . . . . . . . . . . . . . . . . . 14
              4.4.1. The table's oid Statement. . . . . . . . . . . . 15
              4.4.2. Table Indexing Statements. . . . . . . . . . . . 15
              4.4.3. The table's create Statement . . . . . . . . . . 17
              4.4.4. The table's object Statement . . . . . . . . . . 17
              4.4.5. The table's status Statement . . . . . . . . . . 19
              4.4.6. The table's description Statement  . . . . . . . 19
              4.4.7. The table's reference Statement  . . . . . . . . 19
              4.4.8. Usage Example  . . . . . . . . . . . . . . . . . 19
       4.5.   The notification Statement  . . . . . . . . . . . . . . 20
              4.5.1. The notification's oid Statement . . . . . . . . 20
              4.5.2. The notification's signals Statement . . . . . . 20
              4.5.3. The notification's status Statement  . . . . . . 20
              4.5.4. The notification's description Statement . . . . 21
              4.5.5. The notification's reference Statement . . . . . 21
              4.5.6. Usage Example. . . . . . . . . . . . . . . . . . 21
       4.6.   The group Statement . . . . . . . . . . . . . . . . . . 21
              4.6.1. The group's oid Statement  . . . . . . . . . . . 22
              4.6.2. The group's members Statement  . . . . . . . . . 22
              4.6.3. The group's status Statement . . . . . . . . . . 22
              4.6.4. The group's description Statement  . . . . . . . 22
              4.6.5. The group's reference Statement  . . . . . . . . 22
              4.6.6. Usage Example  . . . . . . . . . . . . . . . . . 22
       4.7.   The compliance Statement. . . . . . . . . . . . . . . . 23
              4.7.1. The compliance's oid Statement . . . . . . . . . 23
              4.7.2. The compliance's status Statement  . . . . . . . 23
              4.7.3. The compliance's description Statement . . . . . 23
              4.7.4. The compliance's reference Statement . . . . . . 23
              4.7.5. The compliance's mandatory Statement . . . . . . 24
              4.7.6. The compliance's optional Statement. . . . . . . 24
              4.7.7. The compliance's refine Statement  . . . . . . . 24
              4.7.8. Usage Example  . . . . . . . . . . . . . . . . . 26
   5.  NMRG-SMING-SNMP-EXT  . . . . . . . . . . . . . . . . . . . . . 26
   6.  NMRG-SMING-SNMP  . . . . . . . . . . . . . . . . . . . . . . . 33
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 46
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 46
        
              4.2.6. Usage Examples . . . . . . . . . . . . . . . . . 11
       4.3.   The scalars Statement . . . . . . . . . . . . . . . . . 11
              4.3.1. The scalars' oid Statement . . . . . . . . . . . 12
              4.3.2. The scalars' object Statement  . . . . . . . . . 12
              4.3.3. The scalars' status Statement  . . . . . . . . . 13
              4.3.4. The scalars' description Statement . . . . . . . 14
              4.3.5. The scalars' reference Statement . . . . . . . . 14
              4.3.6. Usage Example. . . . . . . . . . . . . . . . . . 14
       4.4.   The table Statement . . . . . . . . . . . . . . . . . . 14
              4.4.1. The table's oid Statement. . . . . . . . . . . . 15
              4.4.2. Table Indexing Statements. . . . . . . . . . . . 15
              4.4.3. The table's create Statement . . . . . . . . . . 17
              4.4.4. The table's object Statement . . . . . . . . . . 17
              4.4.5. The table's status Statement . . . . . . . . . . 19
              4.4.6. The table's description Statement  . . . . . . . 19
              4.4.7. The table's reference Statement  . . . . . . . . 19
              4.4.8. Usage Example  . . . . . . . . . . . . . . . . . 19
       4.5.   The notification Statement  . . . . . . . . . . . . . . 20
              4.5.1. The notification's oid Statement . . . . . . . . 20
              4.5.2. The notification's signals Statement . . . . . . 20
              4.5.3. The notification's status Statement  . . . . . . 20
              4.5.4. The notification's description Statement . . . . 21
              4.5.5. The notification's reference Statement . . . . . 21
              4.5.6. Usage Example. . . . . . . . . . . . . . . . . . 21
       4.6.   The group Statement . . . . . . . . . . . . . . . . . . 21
              4.6.1. The group's oid Statement  . . . . . . . . . . . 22
              4.6.2. The group's members Statement  . . . . . . . . . 22
              4.6.3. The group's status Statement . . . . . . . . . . 22
              4.6.4. The group's description Statement  . . . . . . . 22
              4.6.5. The group's reference Statement  . . . . . . . . 22
              4.6.6. Usage Example  . . . . . . . . . . . . . . . . . 22
       4.7.   The compliance Statement. . . . . . . . . . . . . . . . 23
              4.7.1. The compliance's oid Statement . . . . . . . . . 23
              4.7.2. The compliance's status Statement  . . . . . . . 23
              4.7.3. The compliance's description Statement . . . . . 23
              4.7.4. The compliance's reference Statement . . . . . . 23
              4.7.5. The compliance's mandatory Statement . . . . . . 24
              4.7.6. The compliance's optional Statement. . . . . . . 24
              4.7.7. The compliance's refine Statement  . . . . . . . 24
              4.7.8. Usage Example  . . . . . . . . . . . . . . . . . 26
   5.  NMRG-SMING-SNMP-EXT  . . . . . . . . . . . . . . . . . . . . . 26
   6.  NMRG-SMING-SNMP  . . . . . . . . . . . . . . . . . . . . . . . 33
   7.  Security Considerations  . . . . . . . . . . . . . . . . . . . 46
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 46
        
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 47
       9.1.   Normative References. . . . . . . . . . . . . . . . . . 47
       9.2.   Informative References. . . . . . . . . . . . . . . . . 47
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48
   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 49
        
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 47
       9.1.   Normative References. . . . . . . . . . . . . . . . . . 47
       9.2.   Informative References. . . . . . . . . . . . . . . . . 47
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48
   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 49
        
1. Introduction
1. 介绍

SMIng (Structure of Management Information, Next Generation) [RFC3780] is a protocol-independent data definition language for management information. This memo defines an SMIng language extension that specifies the mapping of SMIng definitions of identities, classes, and their attributes and events to dedicated definitions of nodes, scalar objects, tables and columnar objects, and notifications for application in the SNMP management framework. Section 2 introduces basics of the SNMP management framework. Section 3 defines how SMIng data types are mapped to the data types supported by the SNMP protocol. It introduces some new ASN.1 [ASN1] definitions which are used to represent new SMIng base types such as floats in the SNMP protocol.

SMIng(管理信息结构,下一代)[RFC3780]是一种用于管理信息的独立于协议的数据定义语言。此备忘录定义了一个SMIng语言扩展,用于指定标识、类及其属性和事件的SMIng定义与SNMP管理框架中的节点、标量对象、表和列对象以及应用程序通知的专用定义之间的映射。第2节介绍SNMP管理框架的基础知识。第3节定义了SMIng数据类型如何映射到SNMP协议支持的数据类型。它引入了一些新的ASN.1[ASN1]定义,这些定义用于表示新的SMIng基本类型,例如SNMP协议中的浮动。

Section 4 describes the semantics of the SNMP mapping extensions for SMIng. The formal SMIng specification of the extension is provided in Section 5.

第4节描述了SMIng的SNMP映射扩展的语义。第5节提供了扩展的正式SMIng规范。

Section 6 contains an SMIng module which defines derived types (such as RowStatus) that are specific to the SNMP mapping.

第6节包含一个SMIng模块,该模块定义特定于SNMP映射的派生类型(如RowStatus)。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“应”、“不应”、“建议”、“可”和“可选”应按照[RFC2119]中所述进行解释。

2. SNMP-Based Internet Management
2. 基于SNMP的Internet管理

The SNMP network management framework [RFC3410] is based on the concept of "managed objects". Managed objects represent real or synthesized variables of systems that are to be managed. Note that in spite of these terms this model is not object-oriented. For naming purposes, the managed objects are organized hierarchically in an "object identifier tree", where only leaf nodes may represent objects.

SNMP网络管理框架[RFC3410]基于“受管对象”的概念。托管对象表示要管理的系统的真实或合成变量。请注意,尽管有这些术语,但该模型不是面向对象的。出于命名目的,托管对象在“对象标识符树”中分层组织,其中只有叶节点可以表示对象。

Nodes in the object identifier tree may also identify conceptual tables, rows of conceptual tables, notifications, groups of objects and/or notifications, compliance statements, modules or other information. Each node is identified by an unique "object identifier" value which is a sequence of non-negative numbers, named "sub-identifiers", where the left-most sub-identifier refers to the

对象标识符树中的节点还可以标识概念表、概念表行、通知、对象组和/或通知、符合性声明、模块或其他信息。每个节点由唯一的“对象标识符”值标识,该值是一系列非负数,称为“子标识符”,其中最左边的子标识符指

node next to the root of the tree and the right-most sub-identifier refers to the node that is identified by the complete object identifier value. Each sub-identifier has a value between 0 and 2^32-1 (4294967295).

树根旁边的节点和最右边的子标识符指的是由完整对象标识符值标识的节点。每个子标识符都有一个介于0和2^32-1(4294967295)之间的值。

The SMIng extensions described in this document are used to map SMIng data definitions to SNMP compliant managed objects. This mapping is designed to be readable to computer programs, named MIB compilers, as well as to human readers.

本文档中描述的SMIng扩展用于将SMIng数据定义映射到符合SNMP的托管对象。此映射设计为计算机程序(名为MIB编译器)以及人类读者都可以读取。

2.1. Kinds of Nodes
2.1. 节点类型

Each node in the object identifier tree is of a certain kind and may represent management information or not:

对象标识符树中的每个节点都属于某种类型,可以表示管理信息,也可以不表示管理信息:

o Simple nodes, that do not represent management information, but may be used for grouping nodes in a subtree. Those nodes are defined by the `node' statement. This statement can also be used to map an SMIng `identity' to a node.

o 简单节点,不表示管理信息,但可用于对子树中的节点进行分组。这些节点由“node”语句定义。此语句还可用于将SMIng“identity”映射到节点。

o Nodes representing the identity of a module to allow references to a module in other objects of type `ObjectIdentifier'. Those nodes are defined by the `snmp' statement,

o 表示模块标识的节点,以允许在“ObjectIdentifier”类型的其他对象中引用模块。这些节点由“snmp”语句定义,

o Scalar objects, which have exactly one object instance and no child nodes. See Section 2.2 for scalar objects' instances. A set of scalar objects is mapped from one or more SMIng classes using the `scalars' statement. The statement block of the `scalars' statement contains one `implements' statement for each class. The associated statement blocks in turn contain `object' statements that specify the mapping of attributes to scalar objects. Scalar objects MUST not have any child node.

o 标量对象,它只有一个对象实例,没有子节点。有关标量对象的实例,请参见第2.2节。使用“scalars”语句从一个或多个SMIng类映射一组标量对象。'scalars'语句的语句块为每个类包含一个'implements'语句。关联的语句块依次包含指定属性到标量对象的映射的“object”语句。标量对象不能有任何子节点。

o Tables, which represent the root node of a collection of information structured in table rows. Table nodes are defined by the `table' statement. A table object identifier SHOULD not have any other child node than the implicitly defined row node (see below).

o 表,表示表行中结构化信息集合的根节点。表节点由“Table”语句定义。表对象标识符不应有隐式定义的行节点以外的任何其他子节点(见下文)。

o Rows, which belong to a table (that is, row's object identifier consists of the table's full object identifier plus a single `1' sub-identifier) and represent a sequence of one or more columnar objects. A row node is implicitly defined for each table node.

o 属于表的行(即,行的对象标识符由表的完整对象标识符加上单个“1”子标识符组成),表示一个或多个列对象的序列。为每个表节点隐式定义一个行节点。

o Columnar objects, which belong to a row (that is, the columnar objects' object identifier consists of the row's full object identifier plus a single column-identifying sub-identifier) and have zero or more object instances and no child nodes. They are defined as follows: The classes that are implemented by a `table' statement are identified by `implements' statements. The statement block of each `implements' statement contains `object' statements that specify the mapping of attributes to columnar objects of this table. Columnar objects MUST not have any child node.

o 列对象,它属于一行(即,列对象的对象标识符由行的完整对象标识符加上一个列标识子标识符组成),并且具有零个或多个对象实例,并且没有子节点。它们的定义如下:由“table”语句实现的类由“implements”语句标识。每个“implements”语句的语句块都包含“object”语句,这些语句指定属性到该表的列对象的映射。列对象不能有任何子节点。

o Notifications, which represent information that is sent by agents within unsolicited transmissions. The `notification' statement is used to map an SMIng event to a notification. A notification's object identifier SHOULD not have any child node.

o 通知,表示代理在未经请求的传输中发送的信息。“notification”语句用于将SMIng事件映射到通知。通知的对象标识符不应具有任何子节点。

o Groups of objects and notifications, which may be used for compliance statements. They are defined using the `group' statement.

o 对象和通知组,可用于符合性声明。它们是使用“group”语句定义的。

o Compliance statements which define requirements for MIB module implementations. They are defined using the `compliance' statement.

o 定义MIB模块实现要求的合规性声明。它们是使用“遵守”声明定义的。

2.2. Scalar and Columnar Object Instances
2.2. 标量和列对象实例

Instances of managed objects are identified by appending an instance-identifier to the object's object identifier. Scalar objects and columnar objects use different ways to construct the instance-identifier.

托管对象的实例是通过将实例标识符附加到对象的对象标识符来标识的。标量对象和列对象使用不同的方法来构造实例标识符。

Scalar objects have exactly one object instance. It is identified by appending a single `0' sub-identifier to the object identifier of the scalar object.

标量对象只有一个对象实例。通过将单个“0”子标识符附加到标量对象的对象标识符来标识它。

Within tables, different instances of the same columnar object are identified by appending a sequence of one or more sub-identifiers to the object identifier of the columnar object which consists of the values of object instances that unambiguously distinguish a table row. These indexing objects can be columnar objects of the same and/or another table, but MUST NOT be scalar objects. Multiple applications of the same object in a single table indexing specification are strongly discouraged.

在表中,同一列对象的不同实例通过向列对象的对象标识符追加一个或多个子标识符序列来标识,该对象标识符由明确区分表行的对象实例的值组成。这些索引对象可以是同一个表和/或另一个表的列对象,但不能是标量对象。强烈反对在单个表索引规范中使用同一对象的多个应用程序。

The base types of the indexing objects indicate how to form the instance-identifier:

索引对象的基本类型指示如何形成实例标识符:

o integer-valued or enumeration-valued: a single sub-identifier taking the integer value (this works only for non-negative integers and integers of a size of up to 32 bits),

o 整数值或枚举值:取整数值的单个子标识符(仅适用于非负整数和大小不超过32位的整数),

o string-valued, fixed-length strings (or variable-length with compact encoding): `n' sub-identifiers, where `n' is the length of the string (each octet of the string is encoded in a separate sub-identifier),

o 字符串值、固定长度字符串(或压缩编码的可变长度):`n'子标识符,其中`n'是字符串的长度(字符串的每个八位字节在单独的子标识符中编码),

o string-valued, variable-length strings or bits-valued: `n+1' sub-identifiers, where `n' is the length of the string or bits encoding (the first sub-identifier is `n' itself, following this, each octet of the string or bits is encoded in a separate sub-identifier),

o 字符串值、可变长度字符串或位值:`n+1'子标识符,其中`n'是编码的字符串或位的长度(第一个子标识符为`n'本身,在此之后,字符串或位的每个八位字节编码在一个单独的子标识符中),

o object identifier-valued (with compact encoding): `n' sub-identifiers, where `n' is the number of sub-identifiers in the value (each sub-identifier of the value is copied into a separate sub-identifier),

o 对象标识符值(采用压缩编码):`n'子标识符,其中`n'是值中的子标识符数量(值的每个子标识符复制到单独的子标识符中),

o object identifier-valued: `n+1' sub-identifiers, where `n' is the number of sub-identifiers in the value (the first sub-identifier is `n' itself, following this, each sub-identifier in the value is copied),

o 对象标识符值:`n+1'子标识符,其中`n'是值中的子标识符数(第一个子标识符为`n'本身,然后复制值中的每个子标识符),

Note that compact encoding can only be applied to an object having a variable-length syntax (e.g., variable-length strings, bits objects or object identifier-valued objects). Further, compact encoding can only be associated with the last object in a list of indexing objects. Finally, compact encoding MUST NOT be used on a variable-length string object if that string might have a value of zero-length.

请注意,压缩编码只能应用于具有可变长度语法的对象(例如,可变长度字符串、位对象或对象标识符值对象)。此外,压缩编码只能与索引对象列表中的最后一个对象相关联。最后,如果可变长度字符串对象的值可能为零,则不能在该字符串对象上使用压缩编码。

Instances identified by use of integer-valued or enumeration-valued objects are RECOMMENDED to be numbered starting from one (i.e., not from zero). Integer objects that allow negative values, Unsigned64 objects, Integer64 objects and floating point objects MUST NOT be used for table indexing.

建议使用整数值或枚举值对象标识的实例从一开始编号(即,不是从零开始编号)。允许负值、无符号64对象、整数64对象和浮点对象的整数对象不得用于表索引。

Objects which are both specified for indexing in a row and also columnar objects of the same row are termed auxiliary objects. Auxiliary objects SHOULD be non-accessible, except in the following circumstances:

指定用于在一行中建立索引的对象以及同一行的列对象称为辅助对象。辅助对象应不可访问,但以下情况除外:

o within a module originally written to conform to SMIv1, or

o 在最初编写为符合SMIv1的模块内,或

o a row must contain at least one columnar object which is not an auxiliary object. In the event that all of a row's columnar objects are also specified to be indexing objects then one of them MUST be accessible.

o 行必须至少包含一个非辅助对象的列对象。如果行的所有列对象也被指定为索引对象,则其中一个对象必须是可访问的。

2.3. Object Identifier Hierarchy
2.3. 对象标识符层次结构

The layers of the object identifier tree near the root are well defined and organized by standardization bodies. The first level next to the root has three nodes:

靠近根的对象标识符树的层由标准化机构很好地定义和组织。根旁边的第一层有三个节点:

0: ccitt

0:ccitt

1: iso

1:iso

2: joint-iso-ccitt

2:联合iso ccitt

Note that the renaming of the Commite Consultatif International de Telegraphique et Telephonique (CCITT) to International Telecommunications Union (ITU) had no consequence on the names used in the object identifier tree.

请注意,将国际电信和电话咨询委员会(CCITT)更名为国际电信联盟(ITU),对对象标识符树中使用的名称没有影响。

The root of the subtree administered by the Internet Assigned Numbers Authority (IANA) for the Internet is `1.3.6.1' which is assigned with the identifier `internet'. That is, the Internet subtree of object identifiers starts with the prefix `1.3.6.1.'.

互联网分配号码管理局(IANA)为互联网管理的子树的根为“1.3.6.1”,该子树的标识符为“互联网”。也就是说,对象标识符的Internet子树以前缀“1.3.6.1”开头。

Several branches underneath this subtree are used for network management:

此子树下的几个分支用于网络管理:

The `mgmt' (internet.2) subtree is used to identify "standard" definitions. An information module produced by an IETF working group becomes a "standard" information module when the document is first approved by the IESG and enters the Internet standards track.

“管理”(internet.2)子树用于识别“标准”定义。IETF工作组制作的信息模块在文件首次获得IESG批准并进入互联网标准轨道时成为“标准”信息模块。

The `experimental' (internet.3) subtree is used to identify experimental definitions being designed by working groups of the IETF or IRTF. If an information module produced by a working group becomes a "standard" module, then at the very beginning of its entry onto the Internet standards track, the definitions are moved under the mgmt subtree.

“实验”(internet.3)子树用于识别IETF或IRTF工作组正在设计的实验定义。如果工作组生成的信息模块成为“标准”模块,则在其进入互联网标准轨道的一开始,定义将移动到管理子树下。

The `private' (internet.4) subtree is used to identify definitions defined unilaterally. The `enterprises' (private.1) subtree beneath private is used, among other things, to permit providers of networking subsystems to register information modules of their products.

“私有”(internet.4)子树用于识别单方面定义的定义。private下的“enterprises”(private.1)子树除其他外用于允许网络子系统的提供商注册其产品的信息模块。

These and some other nodes are defined in the SMIng module NMRG-SMING-SNMP-EXT (Section 5).

这些节点和其他一些节点在SMIng模块NMRG-SMIng-SNMP-EXT(第5节)中定义。

3. SMIng Data Type Mappings
3. SMIng数据类型映射

SMIng [RFC3780] supports the following set of base types: OctetString, Pointer, Integer32, Integer64, Unsigned32, Unsigned64, Float32, Float64, Float128, Enumeration, Bits, and ObjectIdentifier.

SMIng[RFC3780]支持以下一组基类型:八进制字符串、指针、整数32、整数64、无符号32、无符号64、浮点32、浮点64、浮点128、枚举、位和ObjectIdentifier。

The SMIng core module NMRG-SMING ([RFC3780], Appendix A) defines additional derived types, among them Counter32 (derived from Unsigned32), Counter64 (derived from Unsigned64), TimeTicks32 and TimeTicks64 (derived from Unsigned32 and Unsigned64), IpAddress (derived from OctetString), and Opaque (derived from OctetString).

SMIng核心模块NMRG-SMIng([RFC3780],附录A)定义了其他派生类型,其中包括Counter32(派生自Unsigned32)、Counter64(派生自Unsigned64)、TimeTicks32和TimeTicks64(派生自Unsigned32和Unsigned64)、IpAddress(派生自OctetString)和不透明(派生自OctetString)。

The version 2 of the protocol operations for SNMP document [RFC3416] defines the following 9 data types which are distinguished by the protocol: INTEGER, OCTET STRING, OBJECT IDENTIFIER, IpAddress, Counter32, TimeTicks, Opaque, Counter64, and Unsigned32.

SNMP文档[RFC3416]的协议操作版本2定义了以下9种数据类型,这些数据类型由协议区分:整数、八位字节字符串、对象标识符、IpAddress、Counter32、TimeTicks、不透明、Counter64和Unsigned32。

The SMIng base types and their derived types are mapped to SNMP data types according to the following table:

SMIng基本类型及其派生类型根据下表映射到SNMP数据类型:

         SMIng Data Type    SNMP Data Type         Comment
         ---------------    -------------------    -------
         OctetString        OCTET STRING           (1)
         Pointer            OBJECT IDENTIFIER
         Integer32          INTEGER
         Integer64          Opaque (Integer64)     (2)
         Unsigned32         Unsigned32             (3)
         Unsigned64         Opaque (Unsigned64)    (2) (4)
         Float32            Opaque (Float32)       (2)
         Float64            Opaque (Float64)       (2)
         Float128           Opaque (Float128)      (2)
         Enumeration        INTEGER
         Bits               OCTET STRING
         ObjectIdentifier   OBJECT IDENTIFIER
        
         SMIng Data Type    SNMP Data Type         Comment
         ---------------    -------------------    -------
         OctetString        OCTET STRING           (1)
         Pointer            OBJECT IDENTIFIER
         Integer32          INTEGER
         Integer64          Opaque (Integer64)     (2)
         Unsigned32         Unsigned32             (3)
         Unsigned64         Opaque (Unsigned64)    (2) (4)
         Float32            Opaque (Float32)       (2)
         Float64            Opaque (Float64)       (2)
         Float128           Opaque (Float128)      (2)
         Enumeration        INTEGER
         Bits               OCTET STRING
         ObjectIdentifier   OBJECT IDENTIFIER
        

Counter32 Counter32 Counter64 Counter64 TimeTicks32 TimeTicks TimeTicks64 Opaque (Unsigned64) (2) IpAddress IpAddress Opaque Opaque

counter 32 counter 32 counter 64 counter 64 TimeTicks 32 TimeTicks TimeTicks 64不透明(Unsigned64)(2)IpAddress IpAddress不透明

(1) This mapping includes all types derived from the OctetString type except those types derived from the IpAddress and Opaque SMIng types defined in the module NMRG-SMING.

(1) 此映射包括从OctetString类型派生的所有类型,但从IpAddress派生的类型和模块NMRG-SMIng中定义的不透明SMIng类型除外。

(2) This type is encoded according to the ASN.1 type with the same name defined in Section 3.1. The resulting BER encoded value is then wrapped in an Opaque value.

(2) 该类型根据第3.1节中定义的具有相同名称的ASN.1类型进行编码。然后将得到的BER编码值包装为不透明值。

(3) This mapping includes all types derived from the Unsigned32 type except those types derived from the Counter32 and TimeTicks32 SMIng types defined in the module NMRG-SMING.

(3) 此映射包括从Unsigned32类型派生的所有类型,但从模块NMRG-SMIng中定义的Counter32和TimeTicks32 SMIng类型派生的类型除外。

(4) This mapping includes all types derived from the Unsigned64 type except those types derived from the Counter64 SMIng type defined in the module NMRG-SMING.

(4) 此映射包括从Unsigned64类型派生的所有类型,但从模块NMRG-SMIng中定义的Counter64 SMIng类型派生的类型除外。

3.1. ASN.1 Definitions
3.1. ASN.1定义

The ASN.1 [ASN1] type definitions below introduce data types which are used to map the new SMIng base types into the set of ASN.1 types supported by the second version of SNMP protocol operations [RFC3416].

下面的ASN.1[ASN1]类型定义引入了用于将新的SMIng基本类型映射到第二版SNMP协议操作[RFC3416]支持的ASN.1类型集中的数据类型。

   NMRG-SMING-SNMP-MAPPING DEFINITIONS ::= BEGIN
        
   NMRG-SMING-SNMP-MAPPING DEFINITIONS ::= BEGIN
        
   Integer64 ::=
       [APPLICATION 10]
           IMPLICIT INTEGER (-9223372036854775808..9223372036854775807)
        
   Integer64 ::=
       [APPLICATION 10]
           IMPLICIT INTEGER (-9223372036854775808..9223372036854775807)
        

Unsigned64 [APPLICATION 11] IMPLICIT INTEGER (0..18446744073709551615)

无符号64[应用程序11]隐式整数(0..18446744073709551615)

Float32 [APPLICATION 12] IMPLICIT OCTET STRING (SIZE (4))

Float32[应用程序12]隐式八位字节字符串(大小(4))

Float64 [APPLICATION 13] IMPLICIT OCTET STRING (SIZE (8))

Float64[应用程序13]隐式八位字节字符串(大小(8))

Float128 [APPLICATION 14] IMPLICIT OCTET STRING (SIZE (16))

Float128[应用程序14]隐式八位字节字符串(大小(16))

END

终止

The definitions of Integer64 and Unsigned64 are consistent with the same definitions in the SPPI [RFC3159]. The floating point types Float32, Float64 and Float128 support single, double and quadruple

Integer64和Unsigned64的定义与SPPI[RFC3159]中的相同定义一致。浮点类型Float32、Float64和Float128支持单精度、双精度和四精度

IEEE floating point values. The encoding of the values follows the "IEEE Standard for Binary Floating-Point Arithmetic" as defined in ANSI/IEEE Standard 754-1985 [IEEE754].

IEEE浮点值。值的编码遵循ANSI/IEEE标准754-1985[IEEE754]中定义的“二进制浮点运算IEEE标准”。

4. The snmp Extension Statement
4. snmp扩展语句

The `snmp' statement is the main statement of the SNMP mapping specification. It gets one or two arguments: an optional lower-case identifier that specifies a node that represents the module's identity, and a mandatory statement block that contains all details of the SNMP mapping. All information of an SNMP mapping are mapped to an SNMP conformant module of the same name as the containing SMIng module. A single SMIng module must not contain more than one `snmp' statement.

“snmp”语句是snmp映射规范的主语句。它获取一个或两个参数:一个可选的小写标识符,用于指定表示模块标识的节点;一个必需的语句块,包含SNMP映射的所有详细信息。SNMP映射的所有信息都映射到与包含的SMIng模块同名的符合SNMP的模块。单个SMIng模块不能包含多个“snmp”语句。

4.1. The oid Statement
4.1. 旧声明

The snmp's `oid' statement, which must be present, if the snmp statement contains a module identifier and must be absent otherwise, gets one argument which specifies the object identifier value that is assigned to this module's identity node.

如果snmp语句包含模块标识符,则必须存在snmp的“oid”语句,否则该语句必须不存在。该语句获取一个参数,该参数指定分配给该模块标识节点的对象标识符值。

4.2. The node Statement
4.2. node语句

The `node' statement is used to name and describe a node in the object identifier tree, without associating any class or attribute information with this node. This may be useful to group definitions in a subtree of related management information, or to uniquely define an SMIng `identity' to be referenced in attributes of type Pointer. The `node' statement gets two arguments: a lower-case node identifier and a statement block that holds detailed node information in an obligatory order.

“node”语句用于命名和描述对象标识符树中的节点,而不将任何类或属性信息与该节点关联。这对于将相关管理信息的子树中的定义分组,或者唯一地定义要在指针类型的属性中引用的SMIng“identity”可能很有用。“node”语句获取两个参数:小写节点标识符和按强制顺序保存详细节点信息的语句块。

See the `nodeStatement' rule of the grammar (Section 5) for the formal syntax of the `node' statement.

有关“node”语句的形式语法,请参见语法中的“nodeStatement”规则(第5节)。

4.2.1. The node's oid Statement
4.2.1. 节点的oid语句

The node's `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to this node.

节点的“oid”语句(必须存在)获取一个参数,该参数指定分配给该节点的对象标识符值。

4.2.2. The node's represents Statement
4.2.2. 节点的“表示”语句

The node's `represents' statement, which need not be present, makes this node represent an SMIng identity, so that objects of type Pointer can reference that identity. The statement gets one argument which specifies the identity name.

节点的“represents”语句(不需要出现)使该节点表示一个SMIng标识,因此指针类型的对象可以引用该标识。该语句获取一个指定标识名的参数。

4.2.3 The node's status Statement
4.2.3 节点的状态语句

The node's `status' statement, which must be present, gets one argument which is used to specify whether this node definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

节点的“status”语句(必须存在)获取一个参数,该参数用于指定此节点定义是当前定义还是历史定义。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或在以前实施的情况下可以删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

4.2.4. The node's description Statement
4.2.4. 节点的描述语句

The node's `description' statement, which need not be present, gets one argument which is used to specify a high-level textual description of this node.

节点的“description”语句(不需要存在)获取一个参数,该参数用于指定此节点的高级文本描述。

It is RECOMMENDED to include all semantics and purposes of this node.

建议包含此节点的所有语义和用途。

4.2.5. The node's reference Statement
4.2.5. 节点的引用语句

The node's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this node.

节点的“reference”语句(不需要存在)获取一个参数,该参数用于指定对某些其他文档的文本交叉引用,或者是定义相关定义的另一个模块,或者是提供与此节点相关的其他信息的某个文档。

4.2.6. Usage Examples
4.2.6. 用法示例
   node iso                            { oid 1;     status current; };
   node   org                          { oid iso.3; status current; };
   node     dod                        { oid org.6; status current; };
   node       internet                 { oid dod.1; status current; };
        
   node iso                            { oid 1;     status current; };
   node   org                          { oid iso.3; status current; };
   node     dod                        { oid org.6; status current; };
   node       internet                 { oid dod.1; status current; };
        
   node   zeroDotZero {
       oid         0.0;
       represents  NMRG-SMING::null;
       status      current;
       description "A null value used for pointers.";
   };
        
   node   zeroDotZero {
       oid         0.0;
       represents  NMRG-SMING::null;
       status      current;
       description "A null value used for pointers.";
   };
        
4.3. The scalars Statement
4.3. 标量语句

The `scalars' statement is used to define the mapping of one or more classes to a group of SNMP scalar managed objects organized under a common parent node. The `scalars' statement gets two arguments: a

“scalars”语句用于定义一个或多个类到在公共父节点下组织的一组SNMP标量管理对象的映射。'scalars'语句得到两个参数:a

lower-case scalar group identifier and a statement block that holds detailed mapping information of this scalar group in an obligatory order.

小写标量组标识符和一个语句块,该语句块按强制顺序保存此标量组的详细映射信息。

See the `scalarsStatement' rule of the grammar (Section 5) for the formal syntax of the `scalars' statement.

有关“scalars”语句的形式语法,请参见语法中的“scalarsStatement”规则(第5节)。

4.3.1. The scalars' oid Statement
4.3.1. 标量的oid语句

The scalars' `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to the common parent node of this scalar group.

标量'oid'语句(必须存在)获取一个参数,该参数指定分配给此标量组的公共父节点的对象标识符值。

4.3.2. The scalars' object Statement
4.3.2. 标量的object语句

The scalars' `object' statement, which must be present at least once, makes this scalar group contain a given scalar object. It gets two arguments: the name of the scalar object to be defined and a statement block that holds additional detailed information in an obligatory order.

标量'object'语句(必须至少出现一次)使此标量组包含给定的标量对象。它得到两个参数:要定义的标量对象的名称和一个语句块,该语句块按强制顺序保存附加的详细信息。

4.3.2.1. The object's implements Statement
4.3.2.1. 对象的implements语句

The `implements' statement, which must be present, is used to specify a single leaf attribute of a class that is implemented by this scalar object. The type of this attribute must be a simple type, i.e., not a class.

必须存在的“implements”语句用于指定由该标量对象实现的类的单个叶属性。此属性的类型必须是简单类型,即不是类。

4.3.2.2. The object's subid Statement
4.3.2.2. 对象的subid语句

The `subid' statement, which need not be present, is used to specify the sub-identifier that identifies the scalar object within this scalar group, i.e., the object identifier of the scalar object is the concatenation of the values of this scalar group's oid statement and of this subid statement.

“subid”语句(不需要存在)用于指定标识此标量组内标量对象的子标识符,即标量对象的对象标识符是此标量组的oid语句和此subid语句的值的串联。

If this statement is omitted, the sub-identifier is the one of the previous object statement within this scalar group plus 1. If the containing object statement is the first one within the containing scalar group and the subid statement is omitted, the sub-identifier is 1.

如果省略此语句,则子标识符是此标量组中的上一个对象语句加1。如果包含的object语句是包含标量组中的第一个语句,并且省略了subid语句,则子标识符为1。

4.3.2.3. The object's status Statement
4.3.2.3. 对象的状态语句

The object's `status' statement, which need not be present, gets one argument which is used to specify whether this scalar object definition is current or historic. The value `current' means that

对象的“status”语句(不需要存在)获取一个参数,该参数用于指定此标量对象定义是当前的还是历史的。值“current”表示

the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或在以前实施的情况下可以删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

Scalar objects SHOULD NOT be defined as `current' if the implemented attribute definition is `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as `deprecated' if the implemented attribute is `obsolete'. Nevertheless, subsequent revisions of used class definitions cannot be avoided, but SHOULD be taken into account in subsequent revisions of the local module.

如果实现的属性定义为“不推荐”或“过时”,则标量对象不应定义为“当前”。同样,如果实现的属性为“过时”,则不应将它们定义为“不推荐”。然而,不能避免对所使用的类定义进行后续修订,但应在本地模块的后续修订中予以考虑。

Note that it is RECOMMENDED to omit the status statement which means that the status is inherited from the containing scalars statement. However, if the status of a scalar object varies from the containing scalar group, it has to be expressed explicitly, e.g., if the implemented attribute has been deprecated or obsoleted.

注意,建议省略status语句,这意味着status是从包含标量的语句继承的。但是,如果标量对象的状态与包含的标量组不同,则必须显式表示它,例如,如果已实现的属性已被弃用或废弃。

4.3.2.4. The object's description Statement
4.3.2.4. 对象的描述语句

The object's `description' statement, which need not be present, gets one argument which is used to specify a high-level textual description of this scalar object.

对象的“description”语句(不需要存在)获取一个参数,该参数用于指定此标量对象的高级文本描述。

Note that in contrast to other definitions this description statement is not mandatory and it is RECOMMENDED to omit it, if the object is fully described by the description of the implemented attribute.

请注意,与其他定义相比,此描述语句不是强制性的,如果对象由实现属性的描述完全描述,则建议省略它。

4.3.2.5. The object's reference Statement
4.3.2.5. 对象的引用语句

The object's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this scalar object.

对象的“reference”语句(不需要存在)获取一个参数,该参数用于指定对某个其他文档、定义相关定义的另一个模块或提供与此标量对象相关的附加信息的某个其他文档的文本交叉引用。

It is RECOMMENDED to omit this statement, if the object's references are fully described by the implemented attribute.

如果对象的引用由implemented属性完全描述,则建议省略此语句。

4.3.3. The scalars' status Statement
4.3.3. 标量的状态语句

The scalars' `status' statement, which must be present, gets one argument which is used to specify whether this scalar group definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be

scalars'status'语句(必须存在)获取一个参数,该参数用于指定此标量组定义是当前的还是历史的。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或可以实施

removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

如果以前实施过,则删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

4.3.4. The scalars' description Statement
4.3.4. 标量描述语句

The scalars' `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of this scalar group.

scalars'description'语句(必须存在)获取一个参数,该参数用于指定此标量组的高级文本描述。

It is RECOMMENDED to include all semantic definitions necessary for the implementation of this scalar group.

建议包含实现此标量组所需的所有语义定义。

4.3.5. The scalars' reference Statement
4.3.5. 标量的引用语句

The scalars' `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this scalars statement.

scalars'reference'语句(不需要存在)获取一个参数,该参数用于指定对某个其他文档的文本交叉引用,或者是定义相关定义的另一个模块,或者是提供与此scalars语句相关的附加信息的某个其他文档。

4.3.6. Usage Example
4.3.6. 用法示例
   scalars ip {
     oid             mib-2.4;
     object ipForwarding { implements Ip.forwarding; };
     object ipDefaultTTL { implements Ip.defaultTTL; };
     // ...
     status          current;
     description
             "This scalar group implements the Ip class.";
   };
        
   scalars ip {
     oid             mib-2.4;
     object ipForwarding { implements Ip.forwarding; };
     object ipDefaultTTL { implements Ip.defaultTTL; };
     // ...
     status          current;
     description
             "This scalar group implements the Ip class.";
   };
        
4.4. The table Statement
4.4. 表格语句

The `table' statement is used to define the mapping of one or more classes to a single SNMP table of columnar managed objects. The `table' statement gets two arguments: a lower-case table identifier and a statement block that holds detailed mapping information of this table in an obligatory order.

“table”语句用于定义一个或多个类到列式托管对象的单个SNMP表的映射。“table”语句获取两个参数:小写的表标识符和一个语句块,该语句块以强制顺序保存该表的详细映射信息。

See the `tableStatement' rule of the grammar (Section 5) for the formal syntax of the `table' statement.

有关“table”语句的形式语法,请参见语法中的“tableStatement”规则(第5节)。

4.4.1. The table's oid Statement
4.4.1. 表的oid语句

The table's `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to this table's node.

表的“oid”语句(必须存在)获取一个参数,该参数指定分配给该表节点的对象标识符值。

4.4.2. Table Indexing Statements
4.4.2. 表索引语句

SNMP table mappings offers five methods to supply table indexing information: ordinary tables, table augmentations, sparse table augmentations, table expansions, and reordered tables use different statements to denote their indexing information. Each table definition must contain exactly one of the following indexing statements.

SNMP表映射提供了五种方法来提供表索引信息:普通表、表扩充、稀疏表扩充、表扩展和重新排序的表使用不同的语句来表示它们的索引信息。每个表定义必须正好包含以下索引语句之一。

4.4.2.1. The table's index Statement for Table Indexing
4.4.2.1. 用于表索引的表索引语句

The table's `index' statement, which is used to supply table indexing information of base tables, gets one argument that specifies a comma-separated list of objects, that are used for table indexing, enclosed in parenthesis.

表的'index'语句用于提供基表的表索引信息,它获取一个参数,该参数指定用于表索引的对象的逗号分隔列表,并用括号括起来。

The elements of the `unique' statement of the implemented class(es) and their order should be regarded as a hint for the index elements of the table.

应将已实现类的“unique”语句的元素及其顺序视为表的索引元素的提示。

In case of modules that should be compatible on the SNMP protocol level to SMIv2 versions of the module, an optional `implied' keyword may be added in front of the list to indicate a compact encoding of the last object in the list. See Section 2.2 for details.

如果模块在SNMP协议级别上应与模块的SMIv2版本兼容,则可在列表前面添加可选的“隐含”关键字,以指示列表中最后一个对象的压缩编码。详见第2.2节。

4.4.2.2. The table's augments Statement for Table Indexing
4.4.2.2. 表的augments语句用于表索引

The table's `augments' statement, which is used to supply table indexing information of tables that augment a base table, gets one argument that specifies the identifier of the table to be augmented. Note that a table augmentation cannot itself be augmented. Anyhow, a base table may be augmented by multiple table augmentations.

表的“augments”语句用于提供扩充基表的表的表索引信息,它获取一个参数,该参数指定要扩充的表的标识符。请注意,表扩充本身不能被扩充。无论如何,一个基表可以通过多个表扩充来扩充。

A table augmentation makes instances of subordinate columnar objects identified according to the index specification of the base table corresponding to the table named in the `augments' statement. Further, instances of subordinate columnar objects of a table augmentation exist according to the same semantics as instances of subordinate columnar objects of the base table being augmented. As such, note that creation of a base table row implies the

表扩充使从属列对象的实例根据与“augments”语句中命名的表相对应的基表的索引规范进行标识。此外,表扩充的从属列对象的实例根据与被扩充的基表的从属列对象的实例相同的语义存在。因此,请注意,创建基表行意味着

correspondent creation of any table row augmentations. Table augmentations MUST NOT be used in table row creation and deletion operations.

相应地创建任何表行扩充。不能在表行创建和删除操作中使用表扩充。

4.4.2.3. The table's extends Statement for Table Indexing
4.4.2.3. 表的extends语句用于表索引

The table's `extends' statement, which is used to supply table indexing information of tables that sparsely augment a base table, gets one argument that specifies the identifier of the table to be sparsely augmented. Note that a sparse table augmentation cannot itself be augmented. Anyhow, a base table may be augmented by multiple table augmentations, sparsely or not.

表的“extends”语句用于提供稀疏扩充基表的表的表索引信息,它获取一个参数,该参数指定要稀疏扩充的表的标识符。请注意,稀疏表扩充本身不能进行扩充。无论如何,一个基表可以通过多个表扩充来扩充,不管是稀疏的还是不稀疏的。

A sparse table augmentation makes instances of subordinate columnar objects identified, if present, according to the index specification of the base table corresponding to the table named in the `extends' statement. Further, instances of subordinate columnar objects of a sparse table augmentation exist according to the semantics as instances of subordinate columnar objects of the base table and the (non-formal) rules that confine the sparse relationship. As such, note that creation of a sparse table row augmentation may be implied by the creation of a base table row as well as done by an explicit creation. However, if a base table row gets deleted, any dependent sparse table row augmentations get also deleted implicitly.

稀疏表扩充根据与“extends”语句中命名的表相对应的基表的索引规范来标识从属列对象的实例(如果存在)。此外,稀疏表扩充的从属列对象的实例根据语义作为基表的从属列对象的实例和限制稀疏关系的(非形式)规则而存在。因此,请注意,稀疏表行扩充的创建可以通过创建基表行来暗示,也可以通过显式创建来完成。但是,如果删除了一个基表行,那么任何依赖的稀疏表行扩充也会被隐式删除。

4.4.2.4. The table's reorders Statement for Table Indexing
4.4.2.4. 用于表索引的表的reorders语句

The table's `reorders' statement is used to supply table indexing information of tables, that contain exactly the same index objects of a base table but in a different order. It gets at least two arguments. The first one specifies the identifier of the base table. The second one specifies a comma-separated list of exactly those object identifiers of the base table's `index' statement, but in the order to be used in this table. Note that a reordered table cannot itself be reordered. Anyhow, a base table may be used for multiple reordered tables.

表的“reorders”语句用于提供表的表索引信息,这些表包含与基表完全相同但顺序不同的索引对象。它至少有两个参数。第一个指定基表的标识符。第二个语句指定了一个逗号分隔的列表,该列表正好是基表的'index'语句的对象标识符,但顺序与在该表中使用的顺序相同。请注意,重新排序的表本身不能重新排序。无论如何,一个基表可以用于多个重新排序的表。

Under some circumstances, an optional `implied' keyword may be added in front of the list to indicate a compact encoding of the last object in the list. See Section 2.2 for details.

在某些情况下,可在列表前面添加可选的“隐含”关键字,以指示列表中最后一个对象的压缩编码。详见第2.2节。

Instances of subordinate columnar objects of a reordered table exist according to the same semantics as instances of subordinate columnar objects of the base table. As such, note that creation of a base table row implies the correspondent creation of any related reordered table row. Reordered tables MUST NOT be used in table row creation and deletion operations.

重新排序的表的从属列对象的实例根据与基表的从属列对象的实例相同的语义存在。因此,请注意,创建基表行意味着相应地创建任何相关的重新排序表行。在表行创建和删除操作中不得使用重新排序的表。

4.4.2.5. The table's expands Statement for Table Indexing
4.4.2.5. 表的EXPLATES语句用于表索引

The table's `expands' statement is used to supply table indexing information of table expansions. Table expansions use exactly the same index objects of another table together with additional indexing objects. Thus, the `expands' statement gets at least two arguments. The first one specifies the identifier of the base table. The second one specifies a comma-separated list of the additional object identifiers used for indexing. Note that an expanded table may itself be expanded, and base tables may be used for multiple table expansions.

表的“expanses”语句用于提供表扩展的表索引信息。表扩展使用与另一个表完全相同的索引对象以及其他索引对象。因此,“expanses”语句至少会获得两个参数。第一个指定基表的标识符。第二个指定用于索引的附加对象标识符的逗号分隔列表。请注意,扩展表本身可以扩展,而基表可以用于多个表扩展。

Under some circumstances, an optional `implied' keyword may be added in front of the list to indicate a compact encoding of the last object in the list. See Section 2.2 for details.

在某些情况下,可在列表前面添加可选的“隐含”关键字,以指示列表中最后一个对象的压缩编码。详见第2.2节。

4.4.3. The table's create Statement
4.4.3. 表的create语句

The table's `create' statement, which need not be present, gets no argument. If the `create' statement is present, table row creation (and deletion) is possible.

该表的“create”语句不需要存在,也不获取任何参数。如果存在“create”语句,则可以创建(和删除)表行。

4.4.4. The table's object Statement
4.4.4. 表的对象语句

The table's `object' statement, which must be present at least once, makes this table contain a given columnar object. It gets two arguments: the name of the columnar object to be defined and a statement block that holds additional detailed information in an obligatory order.

表的“object”语句(必须至少出现一次)使该表包含给定的列对象。它得到两个参数:要定义的列对象的名称和一个语句块,该语句块按强制顺序保存附加的详细信息。

4.4.4.1. The object's implements Statement
4.4.4.1. 对象的implements语句

The `implements' statement, which must be present, is used to specify a single leaf attribute of a class that is implemented by this columnar object. The type of this attribute must be a simple type, i.e., not a class.

必须存在的“implements”语句用于指定由该列对象实现的类的单个叶属性。此属性的类型必须是简单类型,即不是类。

4.4.4.2. The object's subid Statement
4.4.4.2. 对象的subid语句

The `subid' statement, which need not be present, is used to specify the sub-identifier that identifies the columnar object within this table, i.e., the object identifier of the columnar object is the concatenation of the values of this table's oid statement and of this subid statement.

“subid”语句(不需要存在)用于指定标识此表中列对象的子标识符,即,列对象的对象标识符是此表oid语句和此subid语句的值的串联。

If this statement is omitted, the sub-identifier is the one of the previous object statement within this table plus 1. If the containing object statement is the first one within the containing table and the subid statement is omitted, the sub-identifier is 1.

如果省略此语句,则子标识符为该表中上一条对象语句加1。如果包含对象语句是包含表中的第一个语句,并且省略了subid语句,则子标识符为1。

4.4.4.3. The object's status Statement
4.4.4.3. 对象的状态语句

The object's `status' statement, which need not be present, gets one argument which is used to specify whether this columnar object definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

对象的“status”语句(不需要存在)获取一个参数,该参数用于指定此列对象定义是当前的还是历史的。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或在以前实施的情况下可以删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

Columnar objects SHOULD NOT be defined as `current' if the implemented attribute definition is `deprecated' or `obsolete'. Similarly, they SHOULD NOT be defined as `deprecated' if the implemented attribute is `obsolete'. Nevertheless, subsequent revisions of used class definitions cannot be avoided, but SHOULD be taken into account in subsequent revisions of the local module.

如果实现的属性定义为“不推荐”或“过时”,则不应将列对象定义为“当前”。同样,如果实现的属性为“过时”,则不应将它们定义为“不推荐”。然而,不能避免对所使用的类定义进行后续修订,但应在本地模块的后续修订中予以考虑。

Note that it is RECOMMENDED to omit the status statement which means that the status is inherited from the containing table statement. However, if the status of a columnar object varies from the containing table, it has to be expressed explicitly, e.g., if the implemented attribute has been deprecated or obsoleted.

请注意,建议省略status语句,这意味着status是从包含table语句继承的。但是,如果列对象的状态与包含表不同,则必须显式表示它,例如,如果已实现的属性已被弃用或废弃。

4.4.4.4. The object's description Statement
4.4.4.4. 对象的描述语句

The object's `description' statement, which need not be present, gets one argument which is used to specify a high-level textual description of this columnar object.

对象的“description”语句(不需要存在)获取一个参数,该参数用于指定此列对象的高级文本描述。

Note that in contrast to other definitions this description statement is not mandatory and it is RECOMMENDED to omit it, if the object is fully described by the description of the implemented attribute.

请注意,与其他定义相比,此描述语句不是强制性的,如果对象由实现属性的描述完全描述,则建议省略它。

4.4.4.5. The object's reference Statement
4.4.4.5. 对象的引用语句

The object's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this columnar object.

对象的“reference”语句(不需要存在)获取一个参数,该参数用于指定对某个其他文档的文本交叉引用,或者是定义相关定义的另一个模块,或者是提供与此列对象相关的其他信息的某个文档。

It is RECOMMENDED to omit this statement, if the object's references are fully described by the implemented attribute.

如果对象的引用由implemented属性完全描述,则建议省略此语句。

4.4.5. The table's status Statement
4.4.5. 表的状态语句

The table's `status' statement, which must be present, gets one argument which is used to specify whether this table definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

表的“status”语句(必须存在)获取一个参数,该参数用于指定此表定义是当前定义还是历史定义。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或在以前实施的情况下可以删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

4.4.6. The table's description Statement
4.4.6. 表的描述语句

The table's `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of this table.

表的“description”语句(必须存在)获取一个参数,该参数用于指定此表的高级文本描述。

It is RECOMMENDED to include all semantic definitions necessary for the implementation of this table.

建议包括实现此表所需的所有语义定义。

4.4.7. The table's reference Statement
4.4.7. 表的引用语句

The table's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this table statement.

该表的“reference”语句(不需要存在)获取一个参数,该参数用于指定对某个其他文档的文本交叉引用,或者是定义相关定义的另一个模块,或者是提供与该表语句相关的其他信息的某个其他文档。

4.4.8. Usage Example
4.4.8. 用法示例
   table ifTable {
     oid             interfaces.2;
     index           (ifIndex);
     object ifIndex { implements Interface.index;       };
     object ifDescr { implements Interface.description; };
     // ...
     status          current;
     description
             "This table implements the Interface class.";
   };
        
   table ifTable {
     oid             interfaces.2;
     index           (ifIndex);
     object ifIndex { implements Interface.index;       };
     object ifDescr { implements Interface.description; };
     // ...
     status          current;
     description
             "This table implements the Interface class.";
   };
        
4.5. The notification Statement
4.5. 通知声明

The `notification' statement is used to map events defined within classes to SNMP notifications. The `notification' statement gets two arguments: a lower-case notification identifier and a statement block that holds detailed notification information in an obligatory order.

“notification”语句用于将类中定义的事件映射到SNMP通知。“notification”语句获得两个参数:小写通知标识符和按强制顺序保存详细通知信息的语句块。

See the `notificationStatement' rule of the grammar (Section 5) for the formal syntax of the `notification' statement.

有关“通知”语句的正式语法,请参见语法中的“notificationStatement”规则(第5节)。

4.5.1. The notification's oid Statement
4.5.1. 通知的oid语句

The notification's `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to this notification.

通知的“oid”语句(必须存在)获取一个参数,该参数指定分配给此通知的对象标识符值。

4.5.2. The notification's signals Statement
4.5.2. 通知的信号声明

The notification's `signals' statement, which must be present, denotes the event that is signaled by this notification. The statement gets two arguments: the event to be signaled (in the qualified form `Class.event') and a statement block that holds detailed information on the objects transmitted with this notification in an obligatory order.

通知的“signals”语句(必须存在)表示此通知发出信号的事件。该语句获得两个参数:要发出信号的事件(以限定形式“Class.event”)和一个语句块,该语句块保存有关此通知以强制顺序传输的对象的详细信息。

4.5.2.1. The signals' object Statement
4.5.2.1. 信号的对象语句

The signals' `object' statement, which can be present zero, one or multiple times, makes a single instance of a class attribute be contained in this notification. It gets one argument: the specific class attribute. The namespace of attributes not specified by qualified names is the namespace of the event's class specified in the `signals' statement.

signals'`object'语句可以出现零次、一次或多次,使类属性的单个实例包含在此通知中。它得到一个参数:特定的class属性。未由限定名称指定的属性的命名空间是在“signals”语句中指定的事件类的命名空间。

4.5.3. The notification's status Statement
4.5.3. 通知的状态声明

The notification's `status' statement, which must be present, gets one argument which is used to specify whether this notification definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and should not be implemented and/or can be removed if previously implemented. While the value `deprecated' also indicates an obsolete definition, it permits new/continued implementation in order to foster interoperability with older/existing implementations.

通知的“status”语句(必须存在)获取一个参数,该参数用于指定此通知定义是当前的还是历史的。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应实施和/或在以前实施的情况下可以删除。虽然值“deprecated”也表示过时的定义,但它允许新的/继续的实施,以促进与旧的/现有的实施的互操作性。

4.5.4. The notification's description Statement
4.5.4. 通知的描述声明

The notification's `description' statement, which need not be present, gets one argument which is used to specify a high-level textual description of this notification.

通知的“description”语句(不需要存在)获取一个参数,该参数用于指定此通知的高级文本描述。

It is RECOMMENDED to include all semantics and purposes of this notification.

建议包含此通知的所有语义和目的。

4.5.5. The notification's reference Statement
4.5.5. 通知的参考声明

The notification's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related definitions, or some other document which provides additional information relevant to this notification statement.

通知的“reference”语句(不需要存在)获取一个参数,该参数用于指定对某些其他文档的文本交叉引用,或者是定义相关定义的另一个模块,或者是提供与此通知语句相关的其他信息的某个文档。

4.5.6. Usage Example
4.5.6. 用法示例
   notification linkDown {
       oid         snmpTraps.3;
       signals     Interface.linkDown {
           object      ifIndex;
           object      ifAdminStatus;
           object      ifOperStatus;
       };
       status      current;
       description
             "This notification signals the linkDown event
              of the Interface class.";
   };
        
   notification linkDown {
       oid         snmpTraps.3;
       signals     Interface.linkDown {
           object      ifIndex;
           object      ifAdminStatus;
           object      ifOperStatus;
       };
       status      current;
       description
             "This notification signals the linkDown event
              of the Interface class.";
   };
        
4.6. The group Statement
4.6. 集团声明

The `group' statement is used to define a group of arbitrary nodes in the object identifier tree. It gets two arguments: a lower-case group identifier and a statement block that holds detailed group information in an obligatory order.

“group”语句用于在对象标识符树中定义一组任意节点。它得到两个参数:小写的组标识符和按强制顺序保存详细组信息的语句块。

Note that the primary application of groups are compliance statements, although they might be referred in other formal or informal documents.

请注意,组的主要应用是合规声明,尽管它们可能会在其他正式或非正式文件中提及。

See the `groupStatement' rule of the grammar (Section 5) for the formal syntax of the `group' statement.

有关“group”语句的正式语法,请参见语法中的“groupStatement”规则(第5节)。

4.6.1. The group's oid Statement
4.6.1. 该组织的声明

The group's `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to this group.

组的“oid”语句(必须存在)获取一个参数,该参数指定分配给该组的对象标识符值。

4.6.2. The group's members Statement
4.6.2. 小组成员声明

The group's `members' statement, which must be present, gets one argument which specifies the list of nodes by their identifiers to be contained in this group. The list of nodes has to be comma-separated and enclosed in parenthesis.

组的'members'语句(必须存在)获取一个参数,该参数通过组中包含的节点标识符指定节点列表。节点列表必须用逗号分隔并用括号括起来。

4.6.3. The group's status Statement
4.6.3. 小组的状况说明

The group's `status' statement, which must be present, gets one argument which is used to specify whether this group definition is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and the group should no longer be used. While the value `deprecated' also indicates an obsolete definition, it permits new/continued use of this group.

组的“status”语句(必须存在)获取一个参数,该参数用于指定此组定义是当前的还是历史的。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不应再使用该组。虽然值“deprecated”也表示过时的定义,但它允许新的/继续使用此组。

4.6.4. The group's description Statement
4.6.4. 小组的说明说明

The group's `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of this group. It is RECOMMENDED to include any relation to other groups.

组的“description”语句(必须存在)获取一个参数,该参数用于指定此组的高级文本描述。建议包括与其他组的任何关系。

4.6.5. The group's reference Statement
4.6.5. 专家组的参考陈述

The group's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related groups, or some other document which provides additional information relevant to this group.

该组的“reference”语句(不需要出现)获取一个参数,该参数用于指定对某个其他文档的文本交叉引用,或者是定义相关组的另一个模块,或者是提供与该组相关的其他信息的某个其他文档。

4.6.6. Usage Example
4.6.6. 用法示例

The snmpGroup, originally defined in [RFC3418], may be described as follows:

最初在[RFC3418]中定义的snmpGroup可描述如下:

   group snmpGroup {
     oid             snmpMIBGroups.8;
     objects         (snmpInPkts, snmpInBadVersions,
                      snmpInASNParseErrs,
                      snmpSilentDrops, snmpProxyDrops,
        
   group snmpGroup {
     oid             snmpMIBGroups.8;
     objects         (snmpInPkts, snmpInBadVersions,
                      snmpInASNParseErrs,
                      snmpSilentDrops, snmpProxyDrops,
        
                      snmpEnableAuthenTraps);
     status          current;
     description
             "A collection of objects providing basic
              instrumentation and control of an agent.";
   };
        
                      snmpEnableAuthenTraps);
     status          current;
     description
             "A collection of objects providing basic
              instrumentation and control of an agent.";
   };
        
4.7. The compliance Statement
4.7. 合规声明

The `compliance' statement is used to define a set of conformance requirements, named a `compliance statement'. It gets two arguments: a lower-case compliance identifier and a statement block that holds detailed compliance information in an obligatory order.

“合规性”声明用于定义一组合规性要求,称为“合规性声明”。它得到两个参数:小写的符合性标识符和按强制顺序保存详细符合性信息的语句块。

See the `complianceStatement' rule of the grammar (Section 5) for the formal syntax of the `compliance' statement.

有关“合规性”声明的正式语法,请参见语法中的“合规性声明”规则(第5节)。

4.7.1. The compliance's oid Statement
4.7.1. 合规部的oid声明

The compliance's `oid' statement, which must be present, gets one argument which specifies the object identifier value that is assigned to this compliance statement.

法规遵从性的“oid”语句(必须存在)获取一个参数,该参数指定分配给该法规遵从性语句的对象标识符值。

4.7.2. The compliance's status Statement
4.7.2. 合规部的状态声明

The compliance's `status' statement, which must be present, gets one argument which is used to specify whether this compliance statement is current or historic. The value `current' means that the definition is current and valid. The value `obsolete' means the definition is obsolete and no longer specifies a valid definition of conformance. While the value `deprecated' also indicates an obsolete definition, it permits new/continued use of the compliance specification.

合规性的“status”语句必须存在,它获取一个参数,用于指定此合规性语句是当前的还是历史的。值“current”表示该定义是当前有效的。值“过时”表示该定义已过时,不再指定有效的一致性定义。虽然值“deprecated”也表示过时的定义,但它允许新的/继续使用合规性规范。

4.7.3. The compliance's description Statement
4.7.3. 合规性说明声明

The compliance's `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of this compliance statement.

合规性的“description”语句(必须存在)获取一个参数,该参数用于指定此合规性语句的高级文本描述。

4.7.4. The compliance's reference Statement
4.7.4. 合规部的参考声明

The compliance's `reference' statement, which need not be present, gets one argument which is used to specify a textual cross-reference to some other document, either another module which defines related compliance statements, or some other document which provides additional information relevant to this compliance statement.

合规性的“参考”声明(无需提供)获取一个参数,该参数用于指定对其他文档的文本交叉引用,或者是定义相关合规性声明的另一个模块,或者是提供与本合规性声明相关的附加信息的其他文档。

4.7.5. The compliance's mandatory Statement
4.7.5. 合规部的强制性声明

The compliance's `mandatory' statement, which need not be present, gets one argument which is used to specify a comma-separated list of one or more groups (Section 4.6) of objects and/or notifications enclosed in parenthesis. These groups are unconditionally mandatory for implementation.

合规性的“强制性”语句(无需出现)获取一个参数,该参数用于指定括号中包含的一个或多个对象组和/或通知组(第4.6节)的逗号分隔列表。这些组是无条件强制执行的。

If an agent claims compliance to a MIB module then it must implement each and every object and notification within each group listed in the `mandatory' statement(s) of the compliance statement(s) of that module.

如果代理声称符合MIB模块,则它必须在该模块的符合性声明的“强制性”声明中列出的每个组内实现每个对象和通知。

4.7.6. The compliance's optional Statement
4.7.6. 合规部的任择声明

The compliance's `optional' statement, which need not be present, is repeatedly used to name each group which is conditionally mandatory for compliance to the compliance statement. It can also be used to name unconditionally optional groups. A group named in an `optional' statement MUST be absent from the correspondent `mandatory' statement. The `optional' statement gets two arguments: a lower-case group identifier and a statement block that holds detailed compliance information on that group.

合规性的“可选”声明(无需存在)被反复用于命名符合合规性声明的有条件强制性的每个组。它还可用于无条件命名可选组。在“可选”语句中命名的组必须不在相应的“强制性”语句中。“optional”语句获取两个参数:小写的组标识符和保存该组详细符合性信息的语句块。

Conditionally mandatory groups include those groups which are mandatory only if a particular protocol is implemented, or only if another group is implemented. The `description' statement specifies the conditions under which the group is conditionally mandatory.

条件强制组包括仅当实现特定协议或仅当实现另一个组时才强制的组。“description”语句指定了该组在哪些条件下是有条件强制的。

A group which is named in neither a `mandatory' statement nor an `optional' statement, is unconditionally optional for compliance to the module.

在“强制”语句和“可选”语句中均未命名的组,对于符合模块的要求而言,是无条件可选的。

See the `optionalStatement' rule of the grammar (Section 5) for the formal syntax of the `optional' statement.

有关“可选”语句的形式语法,请参见语法中的“可选语句”规则(第5节)。

4.7.6.1. The optional's description Statement
4.7.6.1. 选项的描述语句

The optional's `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of the conditions under which this group is conditionally mandatory or unconditionally optional.

optional的“description”语句(必须存在)获取一个参数,该参数用于指定此组在哪些条件下是有条件强制或无条件可选的高级文本描述。

4.7.7. The compliance's refine Statement
4.7.7. 合规部的改进声明

The compliance's `refine' statement, which need not be present, is repeatedly used to specify each object for which compliance has a refined requirement with respect to the module definition. The

合规性的“细化”声明(无需存在)被反复用于指定合规性对模块定义有细化要求的每个对象。这个

object must be present in one of the conformance groups named in the correspondent `mandatory' or `optional' statements. The `refine' statement gets two arguments: a lower-case identifier of a scalar or columnar object and a statement block that holds detailed refinement information on that object.

对象必须出现在相应的“强制”或“可选”语句中指定的一个一致性组中。“refine”语句获得两个参数:标量或列对象的小写标识符和保存该对象详细细化信息的语句块。

See the `refineStatement' rule of the grammar (Section 5) for the formal syntax of the `refine' statement.

有关“refine”语句的形式语法,请参见语法中的“refineStatement”规则(第5节)。

4.7.7.1. The refine's type Statement
4.7.7.1. refine的类型语句

The refine's `type' statement, which need not be present, gets one argument that is used to provide a refined type for the correspondent object. Type restrictions may be applied by appending subtyping information according to the rules of the base type. See [RFC3780] for SMIng base types and their type restrictions. In case of enumeration or bitset types the order of named numbers is not significant.

refine的'type'语句(不需要存在)获取一个参数,该参数用于为相应对象提供精制类型。根据基类型的规则,可以通过附加子类型信息来应用类型限制。有关SMIng基类型及其类型限制,请参见[RFC3780]。对于枚举或位集类型,命名数字的顺序不重要。

Note that if a `type' and a `writetype' statement are both present then this type only applies when instances of the correspondent object are read.

请注意,如果同时存在“type”和“writetype”语句,则此类型仅在读取对应对象的实例时适用。

4.7.7.2. The refine's writetype Statement
4.7.7.2. refine的writetype语句

The refine's `writetype' statement, which need not be present, gets one argument that is used to provide a refined type for the correspondent object, only when instances of that object are written. Type restrictions may be applied by appending subtyping information according to the rules of the base type. See [RFC3780] for SMIng base types and their type restrictions. In case of enumeration or bitset types the order of named numbers is not significant.

refine的'writetype'语句(不需要存在)获取一个参数,该参数仅在写入相应对象的实例时用于为该对象提供精炼类型。根据基类型的规则,可以通过附加子类型信息来应用类型限制。有关SMIng基类型及其类型限制,请参见[RFC3780]。对于枚举或位集类型,命名数字的顺序不重要。

4.7.7.3. The refine's access Statement
4.7.7.3. 服务器的访问语句

The refine's `access' statement, which need not be present, gets one argument that is used to specify the minimal level of access that the correspondent object must implement in the sense of its original `access' statement. Hence, the refine's `access' statement MUST NOT specify a greater level of access than is specified in the correspondent object definition.

refine的“access”语句(不需要存在)获取一个参数,该参数用于指定对应对象在其原始“access”语句的意义上必须实现的最小访问级别。因此,refine的“access”语句不能指定比相应对象定义中指定的更高的访问级别。

An implementation is compliant if the level of access it provides is greater or equal to the minimal level in the refine's `access' statement and less or equal to the maximal level in the object's `access' statement.

如果实现提供的访问级别大于或等于refine的“access”语句中的最小级别,小于或等于对象的“access”语句中的最大级别,则该实现是兼容的。

4.7.7.4. The refine's description Statement
4.7.7.4. 精炼的描述语句

The refine's `description' statement, which must be present, gets one argument which is used to specify a high-level textual description of the refined compliance requirement.

refine的“description”语句(必须存在)获取一个参数,该参数用于指定精炼合规性需求的高级文本描述。

4.7.8. Usage Example
4.7.8. 用法示例

The compliance statement contained in the SNMPv2-MIB [RFC3418], converted to SMIng:

SNMPv2 MIB[RFC3418]中包含的合规性声明转换为SMIng:

      compliance snmpBasicComplianceRev2 {
        oid             snmpMIBCompliances.3;
        status          current;
        description
                "The compliance statement for SNMP entities which
                 implement this MIB module.";
        
      compliance snmpBasicComplianceRev2 {
        oid             snmpMIBCompliances.3;
        status          current;
        description
                "The compliance statement for SNMP entities which
                 implement this MIB module.";
        

mandatory (snmpGroup, snmpSetGroup, systemGroup, snmpBasicNotificationsGroup);

强制性(snmpGroup、snmpSetGroup、systemGroup、snmpBasicNotificationsGroup);

        optional snmpCommunityGroup {
          description
                "This group is mandatory for SNMP entities which
                 support community-based authentication.";
        };
        optional snmpWarmStartNotificationGroup {
          description
                "This group is mandatory for an SNMP entity which
                 supports command responder applications, and is
                 able to reinitialize itself such that its
                 configuration is unaltered.";
        };
      };
        
        optional snmpCommunityGroup {
          description
                "This group is mandatory for SNMP entities which
                 support community-based authentication.";
        };
        optional snmpWarmStartNotificationGroup {
          description
                "This group is mandatory for an SNMP entity which
                 supports command responder applications, and is
                 able to reinitialize itself such that its
                 configuration is unaltered.";
        };
      };
        
5. NMRG-SMING-SNMP-EXT
5. NMRG-SMING-SNMP-EXT

The grammar of the snmp statement (including all its contained statements) conforms to the Augmented Backus-Naur Form (ABNF) [RFC2234]. It is included in the abnf statement of the snmp SMIng extension definition in the NMRG-SMING-SNMP-EXT module below.

snmp语句(包括其包含的所有语句)的语法符合扩充的Backus Naur格式(ABNF)[RFC2234]。它包含在下面的NMRG-SMIng-snmp-EXT模块中snmp SMIng扩展定义的abnf语句中。

module NMRG-SMING-SNMP-EXT {

模块NMRG-SMING-SNMP-EXT{

organization "IRTF Network Management Research Group (NMRG)";

组织“IRTF网络管理研究小组(NMRG)”;

      contact         "IRTF Network Management Research Group (NMRG)
                       http://www.ibr.cs.tu-bs.de/projects/nmrg/
        
      contact         "IRTF Network Management Research Group (NMRG)
                       http://www.ibr.cs.tu-bs.de/projects/nmrg/
        

Frank Strauss TU Braunschweig Muehlenpfordtstrasse 23 38106 Braunschweig Germany Phone: +49 531 391 3266 EMail: strauss@ibr.cs.tu-bs.de

Frank Strauss TU Braunschweig Muehlenpfordtstrasse 23 38106 Braunschweig Germany电话:+49 531 391 3266电子邮件:strauss@ibr.cs.tu-理学士

Juergen Schoenwaelder International University Bremen P.O. Box 750 561 28725 Bremen Germany Phone: +49 421 200 3587 EMail: j.schoenwaelder@iu-bremen.de";

Juergen Schoenwaeld国际大学不来梅邮政信箱750 561 28725不来梅德国电话:+49 421 200 3587电子邮件:j。schoenwaelder@iu-不来梅德”;

description "This module defines a SMIng extension to define the mapping of SMIng definitions of class and their attributes and events to SNMP compatible definitions of modules, node, scalars, tables, and notifications, and additional information on module compliances.

description“此模块定义了一个SMIng扩展,用于定义类及其属性和事件的SMIng定义到模块、节点、标量、表和通知的SNMP兼容定义的映射,以及关于模块遵从性的其他信息。

Copyright (C) The Internet Society (2004). All Rights Reserved. This version of this module is part of RFC 3781, see the RFC itself for full legal notices.";

版权所有(C)互联网协会(2004年)。版权所有。本模块的此版本是RFC 3781的一部分,有关完整的法律通知,请参阅RFC本身。“;

      revision {
          date        "2003-12-16";
          description "Initial revision, published as RFC 3781.";
      };
        
      revision {
          date        "2003-12-16";
          description "Initial revision, published as RFC 3781.";
      };
        
      //
      //
      //
        
      //
      //
      //
        

extension snmp {

扩展snmp{

          status          current;
          description
             "The snmp statement maps SMIng definitions to SNMP
              conformant definitions.";
          abnf "
 ;;
 ;; sming-snmp.abnf -- Grammar of SNMP mappings in ABNF
 ;;                    notation (RFC 2234).
        
          status          current;
          description
             "The snmp statement maps SMIng definitions to SNMP
              conformant definitions.";
          abnf "
 ;;
 ;; sming-snmp.abnf -- Grammar of SNMP mappings in ABNF
 ;;                    notation (RFC 2234).
        
 ;;
 ;; @(#) $Id: sming-snmp.abnf,v 1.14 2003/10/23 19:31:55 strauss Exp $
 ;;
 ;; Copyright (C) The Internet Society (2004). All Rights Reserved.
 ;;
        
 ;;
 ;; @(#) $Id: sming-snmp.abnf,v 1.14 2003/10/23 19:31:55 strauss Exp $
 ;;
 ;; Copyright (C) The Internet Society (2004). All Rights Reserved.
 ;;
        
 ;;
 ;; Statement rules.
 ;;
        
 ;;
 ;; Statement rules.
 ;;
        
 snmpStatement           = snmpKeyword *1(sep lcIdentifier) optsep
                               \"{\" stmtsep
                               *1(oidStatement stmtsep)
                               *(nodeStatement stmtsep)
                               *(scalarsStatement stmtsep)
                               *(tableStatement stmtsep)
                               *(notificationStatement stmtsep)
                               *(groupStatement stmtsep)
                               *(complianceStatement stmtsep)
                               statusStatement stmtsep
                               descriptionStatement stmtsep
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        
 snmpStatement           = snmpKeyword *1(sep lcIdentifier) optsep
                               \"{\" stmtsep
                               *1(oidStatement stmtsep)
                               *(nodeStatement stmtsep)
                               *(scalarsStatement stmtsep)
                               *(tableStatement stmtsep)
                               *(notificationStatement stmtsep)
                               *(groupStatement stmtsep)
                               *(complianceStatement stmtsep)
                               statusStatement stmtsep
                               descriptionStatement stmtsep
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        
 nodeStatement           = nodeKeyword sep lcIdentifier optsep
                               \"{\" stmtsep
                               oidStatement stmtsep
                               *1(representsStatement stmtsep)
                               statusStatement stmtsep
                               *1(descriptionStatement stmtsep)
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        
 nodeStatement           = nodeKeyword sep lcIdentifier optsep
                               \"{\" stmtsep
                               oidStatement stmtsep
                               *1(representsStatement stmtsep)
                               statusStatement stmtsep
                               *1(descriptionStatement stmtsep)
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        

representsStatement = representsKeyword sep qucIdentifier optsep \";\"

representsStatement=representsKeyword sep查询器optsep\“;\”

scalarsStatement = scalarsKeyword sep lcIdentifier optsep \"{\" stmtsep oidStatement stmtsep 1*(objectStatement stmtsep) statusStatement stmtsep descriptionStatement stmtsep *1(referenceStatement stmtsep) \"}\" optsep \";\"

scalarsStatement=scalarsKeyword sep lcIdentifier optsep\“{\”stmtsep OIDTEStatement stmtsep 1*(objectStatement stmtsep)statusStatement stmtsep Description Statement stmtsep*1(referenceStatement stmtsep)\“}\”optsep\”;\”

tableStatement = tableKeyword sep lcIdentifier optsep \"{\" stmtsep oidStatement stmtsep

tableStatement=tableKeyword sep lcIdentifier optsep\“{\”STMTSP oidStatement STMTSP

anyIndexStatement stmtsep *1(createStatement stmtsep) 1*(objectStatement stmtsep) statusStatement stmtsep descriptionStatement stmtsep *1(referenceStatement stmtsep) \"}\" optsep \";\"

anyIndexStatement stmtsep*1(createStatement stmtsep)1*(objectStatement stmtsep)Statement stmtsep Descriptions语句stmtsep*1(referenceStatement stmtsep)\“}\”optsep\”;\”

 objectStatement         = objectKeyword sep lcIdentifier optsep
                               \"{\" stmtsep
                               implementsStatement stmtsep
                               *1(subidStatement stmtsep)
                               *1(statusStatement stmtsep)
                               *1(descriptionStatement stmtsep)
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        
 objectStatement         = objectKeyword sep lcIdentifier optsep
                               \"{\" stmtsep
                               implementsStatement stmtsep
                               *1(subidStatement stmtsep)
                               *1(statusStatement stmtsep)
                               *1(descriptionStatement stmtsep)
                               *1(referenceStatement stmtsep)
                           \"}\" optsep \";\"
        

implementsStatement = implementsKeyword sep qcattrIdentifier optsep \";\"

implementsStatement=implementsKeyword sep qcattrIdentifier optsep\“;\”

notificationStatement = notificationKeyword sep lcIdentifier optsep \"{\" stmtsep oidStatement stmtsep signalsStatement stmtsep statusStatement stmtsep descriptionStatement stmtsep *1(referenceStatement stmtsep) \"}\" optsep \";\"

notificationStatement=notificationKeyword sep lcIdentifier optsep \“{\”STMTSP oidStatement STMTSP Signals语句STMTSP Statement STMTSP Statement STMTSP Descriptions语句STMTSP*1(referenceStatement STMTSP)\”}\\“optsep\”;\”

signalsStatement = signalsKeyword sep qattrIdentifier optsep \"{\" stmtsep *(signalsObjectStatement) \"}\" optsep \";\"

signalsStatement=signalsKeyword sep QattIdentifier optsep\“{\”STMTSP*(signalsObjectStatement)\“}\”optsep\”;\”

signalsObjectStatement = objectKeyword sep qattrIdentifier optsep \";\"

signalsObjectStatement=objectKeyword sep qattrIdentifier optsep\“;\”

groupStatement = groupKeyword sep lcIdentifier optsep \"{\" stmtsep oidStatement stmtsep membersStatement stmtsep statusStatement stmtsep descriptionStatement stmtsep *1(referenceStatement stmtsep) \"}\" optsep \";\"

groupStatement=groupKeyword sep lcIdentifier optsep\“{\”stmtsep oidStatement stmtsep Members语句stmtsep Status语句stmtsep Descriptions语句stmtsep*1(referenceStatement stmtsep)\“}\”optsep\”;\”

complianceStatement = complianceKeyword sep lcIdentifier optsep \"{\" stmtsep

complianceStatement=complianceKeyword sep lcIdentifier optsep \“{\”STMTSP

oidStatement stmtsep statusStatement stmtsep descriptionStatement stmtsep *1(referenceStatement stmtsep) *1(mandatoryStatement stmtsep) *(optionalStatement stmtsep) *(refineStatement stmtsep) \"}\" optsep \";\"

OID语句stmtsep状态语句stmtsep描述语句stmtsep*1(引用语句stmtsep)*1(强制语句stmtsep)*(可选语句stmtsep)*(细化语句stmtsep)\“}\”optsep\“;\”

anyIndexStatement = indexStatement / augmentsStatement / reordersStatement / extendsStatement / expandsStatement

anyIndexStatement=指数陈述/增加陈述/重新陈述陈述/扩展陈述/扩展陈述

 indexStatement          = indexKeyword *1(sep impliedKeyword) optsep
                               \"(\" optsep qlcIdentifierList
                               optsep \")\" optsep \";\"
        
 indexStatement          = indexKeyword *1(sep impliedKeyword) optsep
                               \"(\" optsep qlcIdentifierList
                               optsep \")\" optsep \";\"
        

augmentsStatement = augmentsKeyword sep qlcIdentifier optsep \";\"

augmentsStatement=augmentsKeyword sep qlcIdentifier optsep\“;\”

reordersStatement = reordersKeyword sep qlcIdentifier *1(sep impliedKeyword) optsep \"(\" optsep qlcIdentifierList optsep \")\" optsep \";\"

REORDERSSTATENT=reordersKeyword sep qlcIdentifier*1(sep隐含单词)optsep\“(\“optsep qlcIdentifierList optsep\”)\“optsep\”;\”

extendsStatement = extendsKeyword sep qlcIdentifier optsep \";\"

extendsStatement=extendsSep关键字qlcIdentifier optsep\“;\”

expandsStatement = expandsKeyword sep qlcIdentifier *1(sep impliedKeyword) optsep \"(\" optsep qlcIdentifierList optsep \")\" optsep \";\"

expandsStatement=expandsKeyword sep qlcIdentifier*1(sep隐含单词)optsep\“(\“optsep qlcIdentifierList optsep\”)\“optsep\”;”

createStatement = createKeyword optsep \";\"

createStatement=createKeyword optsep\“;\”

membersStatement = membersKeyword optsep \"(\" optsep qlcIdentifierList optsep \")\" optsep \";\"

membersStatement=membersKeyword optsep\“(\“optsep qlcIdentifierList optsep\”)\“optsep\”;\”

mandatoryStatement = mandatoryKeyword optsep \"(\" optsep qlcIdentifierList optsep \")\" optsep \";\"

mandatoryStatement=mandatoryKeyword optsep\“(\“optsep qlcIdentifierList optsep\”)\“optsep\”;\”

optionalStatement = optionalKeyword sep qlcIdentifier optsep \"{\" descriptionStatement stmtsep

optionalStatement=optionalKeyword sep qlcIdentifier optsep\“{\”描述语句STMTSP

\"}\" optsep \";\"

\“}\“optsep\”;\”

 refineStatement         = refineKeyword sep qlcIdentifier optsep \"{\"
                               *1(typeStatement stmtsep)
                               *1(writetypeStatement stmtsep)
                               *1(accessStatement stmtsep)
                               descriptionStatement stmtsep
                           \"}\" optsep \";\"
        
 refineStatement         = refineKeyword sep qlcIdentifier optsep \"{\"
                               *1(typeStatement stmtsep)
                               *1(writetypeStatement stmtsep)
                               *1(accessStatement stmtsep)
                               descriptionStatement stmtsep
                           \"}\" optsep \";\"
        

typeStatement = typeKeyword sep (refinedBaseType / refinedType) optsep \";\"

typeStatement=typeKeyword sep(refinedBaseType/refinedType)optsep\“;\”

writetypeStatement = writetypeKeyword sep (refinedBaseType / refinedType) optsep \";\"

writetypeStatement=writetypeKeyword sep(refinedBaseType/refinedType)optsep\“;\”

oidStatement = oidKeyword sep objectIdentifier optsep \";\"

oidStatement=OIDSEP objectIdentifier optsep\“;\”

subidStatement = subidKeyword sep subid optsep \";\"

subidStatement=subidKeyword sep subid optsep\“;\”

 ;;
 ;; Statement keywords.
 ;;
        
 ;;
 ;; Statement keywords.
 ;;
        
 snmpKeyword         =  %x73 %x6E %x6D %x70
 nodeKeyword         =  %x6E %x6F %x64 %x65
 representsKeyword   =  %x72 %x65 %x70 %x72 %x65 %x73 %x65 %x6E %x74
                        %x73
 scalarsKeyword      =  %x73 %x63 %x61 %x6C %x61 %x72 %x73
 tableKeyword        =  %x74 %x61 %x62 %x6C %x65
 implementsKeyword   =  %x69 %x6D %x70 %x6C %x65 %x6D %x65 %x6E %x74
                        %x73
 subidKeyword        =  %x73 %x75 %x62 %x69 %x64
 objectKeyword       =  %x6F %x62 %x6A %x65 %x63 %x74
 notificationKeyword =  %x6E %x6F %x74 %x69 %x66 %x69 %x63 %x61 %x74
                        %x69 %x6F %x6E
 signalsKeyword      =  %x73 %x69 %x67 %x6E %x61 %x6C %x73
 oidKeyword          =  %x6F %x69 %x64
 groupKeyword        =  %x67 %x72 %x6F %x75 %x70
 complianceKeyword   =  %x63 %x6F %x6D %x70 %x6C %x69 %x61 %x6E %x63
                        %x65
 impliedKeyword      =  %x69 %x6D %x70 %x6C %x69 %x65 %x64
 indexKeyword        =  %x69 %x6E %x64 %x65 %x78
 augmentsKeyword     =  %x61 %x75 %x67 %x6D %x65 %x6E %x74 %x73
 reordersKeyword     =  %x72 %x65 %x6F %x72 %x64 %x65 %x72 %x73
 extendsKeyword      =  %x65 %x78 %x74 %x65 %x6E %x64 %x73
 expandsKeyword      =  %x65 %x78 %x70 %x61 %x6E %x64 %x73
        
 snmpKeyword         =  %x73 %x6E %x6D %x70
 nodeKeyword         =  %x6E %x6F %x64 %x65
 representsKeyword   =  %x72 %x65 %x70 %x72 %x65 %x73 %x65 %x6E %x74
                        %x73
 scalarsKeyword      =  %x73 %x63 %x61 %x6C %x61 %x72 %x73
 tableKeyword        =  %x74 %x61 %x62 %x6C %x65
 implementsKeyword   =  %x69 %x6D %x70 %x6C %x65 %x6D %x65 %x6E %x74
                        %x73
 subidKeyword        =  %x73 %x75 %x62 %x69 %x64
 objectKeyword       =  %x6F %x62 %x6A %x65 %x63 %x74
 notificationKeyword =  %x6E %x6F %x74 %x69 %x66 %x69 %x63 %x61 %x74
                        %x69 %x6F %x6E
 signalsKeyword      =  %x73 %x69 %x67 %x6E %x61 %x6C %x73
 oidKeyword          =  %x6F %x69 %x64
 groupKeyword        =  %x67 %x72 %x6F %x75 %x70
 complianceKeyword   =  %x63 %x6F %x6D %x70 %x6C %x69 %x61 %x6E %x63
                        %x65
 impliedKeyword      =  %x69 %x6D %x70 %x6C %x69 %x65 %x64
 indexKeyword        =  %x69 %x6E %x64 %x65 %x78
 augmentsKeyword     =  %x61 %x75 %x67 %x6D %x65 %x6E %x74 %x73
 reordersKeyword     =  %x72 %x65 %x6F %x72 %x64 %x65 %x72 %x73
 extendsKeyword      =  %x65 %x78 %x74 %x65 %x6E %x64 %x73
 expandsKeyword      =  %x65 %x78 %x70 %x61 %x6E %x64 %x73
        
 createKeyword       =  %x63 %x72 %x65 %x61 %x74 %x65
 membersKeyword      =  %x6D %x65 %x6D %x62 %x65 %x72 %x73
 mandatoryKeyword    =  %x6D %x61 %x6E %x64 %x61 %x74 %x6F %x72 %x79
 optionalKeyword     =  %x6F %x70 %x74 %x69 %x6F %x6E %x61 %x6C
 refineKeyword       =  %x72 %x65 %x66 %x69 %x6E %x65
 writetypeKeyword    =  %x77 %x72 %x69 %x74 %x65 %x74 %x79 %x70 %x65
        
 createKeyword       =  %x63 %x72 %x65 %x61 %x74 %x65
 membersKeyword      =  %x6D %x65 %x6D %x62 %x65 %x72 %x73
 mandatoryKeyword    =  %x6D %x61 %x6E %x64 %x61 %x74 %x6F %x72 %x79
 optionalKeyword     =  %x6F %x70 %x74 %x69 %x6F %x6E %x61 %x6C
 refineKeyword       =  %x72 %x65 %x66 %x69 %x6E %x65
 writetypeKeyword    =  %x77 %x72 %x69 %x74 %x65 %x74 %x79 %x70 %x65
        
 ;; End of ABNF
               ";
     };
     //
     //
     //
        
 ;; End of ABNF
               ";
     };
     //
     //
     //
        

snmp {

snmp{

         node ccitt                       { oid 0;          };
        
         node ccitt                       { oid 0;          };
        
         node   zeroDotZero {
             oid         0.0;
             description "A null value used for pointers.";
         };
        
         node   zeroDotZero {
             oid         0.0;
             description "A null value used for pointers.";
         };
        
         node iso                         { oid 1;          };
         node   org                       { oid iso.3;      };
         node     dod                     { oid org.6;      };
         node       internet              { oid dod.1;      };
         node         directory           { oid internet.1; };
         node         mgmt                { oid internet.2; };
         node           mib-2             { oid mgmt.1;     };
         node             transmission    { oid mib-2.10;   };
         node         experimental        { oid internet.3; };
         node         private             { oid internet.4; };
         node           enterprises       { oid private.1;  };
         node         security            { oid internet.5; };
         node         snmpV2              { oid internet.6; };
         node           snmpDomains       { oid snmpV2.1;   };
         node           snmpProxys        { oid snmpV2.2;   };
         node           snmpModules       { oid snmpV2.3;   };
        
         node iso                         { oid 1;          };
         node   org                       { oid iso.3;      };
         node     dod                     { oid org.6;      };
         node       internet              { oid dod.1;      };
         node         directory           { oid internet.1; };
         node         mgmt                { oid internet.2; };
         node           mib-2             { oid mgmt.1;     };
         node             transmission    { oid mib-2.10;   };
         node         experimental        { oid internet.3; };
         node         private             { oid internet.4; };
         node           enterprises       { oid private.1;  };
         node         security            { oid internet.5; };
         node         snmpV2              { oid internet.6; };
         node           snmpDomains       { oid snmpV2.1;   };
         node           snmpProxys        { oid snmpV2.2;   };
         node           snmpModules       { oid snmpV2.3;   };
        
         node joint-iso-ccitt             { oid 2;          };
        
         node joint-iso-ccitt             { oid 2;          };
        
         status          current;
         description
            "This set of nodes defines the core object
             identifier hierarchy";
         reference
            "RFC 2578, Section 2.";
        
         status          current;
         description
            "This set of nodes defines the core object
             identifier hierarchy";
         reference
            "RFC 2578, Section 2.";
        

};

};

};

};

6. NMRG-SMING-SNMP
6. NMRG-SMING-SNMP

The module NMRG-SMING-SNMP specified below defines derived types that are specific to the SNMP mapping.

下面指定的模块NMRG-SMING-SNMP定义特定于SNMP映射的派生类型。

module NMRG-SMING-SNMP {

模块NMRG-SMING-SNMP{

organization "IRTF Network Management Research Group (NMRG)";

组织“IRTF网络管理研究小组(NMRG)”;

    contact         "IRTF Network Management Research Group (NMRG)
                     http://www.ibr.cs.tu-bs.de/projects/nmrg/
        
    contact         "IRTF Network Management Research Group (NMRG)
                     http://www.ibr.cs.tu-bs.de/projects/nmrg/
        

Frank Strauss TU Braunschweig Muehlenpfordtstrasse 23 38106 Braunschweig Germany Phone: +49 531 391 3266 EMail: strauss@ibr.cs.tu-bs.de

Frank Strauss TU Braunschweig Muehlenpfordtstrasse 23 38106 Braunschweig Germany电话:+49 531 391 3266电子邮件:strauss@ibr.cs.tu-理学士

Juergen Schoenwaelder International University Bremen P.O. Box 750 561 28725 Bremen Germany Phone: +49 421 200 3587 EMail: j.schoenwaelder@iu-bremen.de";

Juergen Schoenwaeld国际大学不来梅邮政信箱750 561 28725不来梅德国电话:+49 421 200 3587电子邮件:j。schoenwaelder@iu-不来梅德”;

description "Core type definitions for the SMIng SNMP mapping. These definitions are based on RFC 2579 definitions that are specific to the SNMP protocol and its naming system.

description“SMIng SNMP映射的核心类型定义。这些定义基于特定于SNMP协议及其命名系统的RFC 2579定义。

Copyright (C) The Internet Society (2004). All Rights Reserved. This version of this module is part of RFC 3781, see the RFC itself for full legal notices.";

版权所有(C)互联网协会(2004年)。版权所有。本模块的此版本是RFC 3781的一部分,有关完整的法律通知,请参阅RFC本身。“;

    revision {
        date        "2003-12-16";
        description "Initial version, published as RFC 3781.";
    };
        
    revision {
        date        "2003-12-16";
        description "Initial version, published as RFC 3781.";
    };
        
    typedef TestAndIncr {
        type        Integer32 (0..2147483647);
        description
            "Represents integer-valued information used for atomic
             operations.  When the management protocol is used to
             specify that an object instance having this type is to
             be modified, the new value supplied via the management
             protocol must precisely match the value presently held by
             the instance.  If not, the management protocol set
             operation fails with an error of `inconsistentValue'.
             Otherwise, if the current value is the maximum value of
             2^31-1 (2147483647 decimal), then the value held by the
             instance is wrapped to zero; otherwise, the value held by
             the instance is incremented by one.  (Note that
             regardless of whether the management protocol set
             operation succeeds, the variable-binding in the request
             and response PDUs are identical.)
        
    typedef TestAndIncr {
        type        Integer32 (0..2147483647);
        description
            "Represents integer-valued information used for atomic
             operations.  When the management protocol is used to
             specify that an object instance having this type is to
             be modified, the new value supplied via the management
             protocol must precisely match the value presently held by
             the instance.  If not, the management protocol set
             operation fails with an error of `inconsistentValue'.
             Otherwise, if the current value is the maximum value of
             2^31-1 (2147483647 decimal), then the value held by the
             instance is wrapped to zero; otherwise, the value held by
             the instance is incremented by one.  (Note that
             regardless of whether the management protocol set
             operation succeeds, the variable-binding in the request
             and response PDUs are identical.)
        

The value of the SNMP access clause for objects having this type has to be `readwrite'. When an instance of a columnar object having this type is created, any value may be supplied via the management protocol.

具有此类型的对象的SNMP access子句的值必须为“readwrite”。当创建具有此类型的柱状对象的实例时,可以通过管理协议提供任何值。

When the network management portion of the system is re-initialized, the value of every object instance having this type must either be incremented from its value prior to the re-initialization, or (if the value prior to the re-initialization is unknown) be set to a pseudo-randomly generated value."; };

当系统的网络管理部分重新初始化时,具有此类型的每个对象实例的值必须从重新初始化之前的值递增,或者(如果重新初始化之前的值未知)设置为伪随机生成的值。“;};

    typedef AutonomousType {
        type        Pointer;
        description
            "Represents an independently extensible type
             identification value.  It may, for example, indicate a
             particular OID sub-tree with further MIB definitions, or
             define a particular type of protocol or hardware.";
    };
        
    typedef AutonomousType {
        type        Pointer;
        description
            "Represents an independently extensible type
             identification value.  It may, for example, indicate a
             particular OID sub-tree with further MIB definitions, or
             define a particular type of protocol or hardware.";
    };
        
    typedef VariablePointer {
        type        Pointer;
        description
            "A pointer to a specific object instance.  For example,
             sysContact.0 or ifInOctets.3.";
    };
        
    typedef VariablePointer {
        type        Pointer;
        description
            "A pointer to a specific object instance.  For example,
             sysContact.0 or ifInOctets.3.";
    };
        
    typedef RowPointer {
        type        Pointer;
        
    typedef RowPointer {
        type        Pointer;
        

description "Represents a pointer to a conceptual row. The value is the name of the instance of the first accessible columnar object in the conceptual row.

description”表示指向概念行的指针。该值是概念行中第一个可访问列对象的实例的名称。

             For example, ifIndex.3 would point to the 3rd row in the
             ifTable (note that if ifIndex were not-accessible, then
             ifDescr.3 would be used instead).";
    };
        
             For example, ifIndex.3 would point to the 3rd row in the
             ifTable (note that if ifIndex were not-accessible, then
             ifDescr.3 would be used instead).";
    };
        
    typedef RowStatus {
        type        Enumeration (active(1), notInService(2),
                        notReady(3), createAndGo(4),
                        createAndWait(5), destroy(6));
        description
        "The RowStatus type is used to manage the creation and
         deletion of conceptual rows, and is used as the type for the
         row status column of a conceptual row.
        
    typedef RowStatus {
        type        Enumeration (active(1), notInService(2),
                        notReady(3), createAndGo(4),
                        createAndWait(5), destroy(6));
        description
        "The RowStatus type is used to manage the creation and
         deletion of conceptual rows, and is used as the type for the
         row status column of a conceptual row.
        

The status column has six defined values:

“状态”列有六个定义的值:

- `active', which indicates that the conceptual row is available for use by the managed device;

- `active',表示概念行可供受管设备使用;

- `notInService', which indicates that the conceptual row exists in the agent, but is unavailable for use by the managed device (see NOTE below);

- `notInService',表示代理中存在概念行,但不可供受管设备使用(参见下面的注释);

- `notReady', which indicates that the conceptual row exists in the agent, but is missing information necessary in order to be available for use by the managed device;

- `notReady',表示代理中存在概念行,但缺少可供受管设备使用的必要信息;

- `createAndGo', which is supplied by a management station wishing to create a new instance of a conceptual row and to have its status automatically set to active, making it available for use by the managed device;

- `createAndGo',由希望创建概念行的新实例并将其状态自动设置为活动的管理站提供,使其可供受管设备使用;

- `createAndWait', which is supplied by a management station wishing to create a new instance of a conceptual row (but not make it available for use by the managed device); and,

- `createAndWait',由希望创建概念行的新实例的管理站提供(但不使其可供受管设备使用);和

- `destroy', which is supplied by a management station wishing to delete all of the instances associated with an existing conceptual row.

- `destroy',由希望删除与现有概念行关联的所有实例的管理站提供。

Whereas five of the six values (all except `notReady') may be specified in a management protocol set operation, only three values will be returned in response to a management protocol retrieval operation: `notReady', `notInService' or `active'. That is, when queried, an existing conceptual row has only three states: it is either available for use by the managed device (the status column has value `active'); it is not available for use by the managed device, though the agent has sufficient information to make it so (the status column has value `notInService'); or, it is not available for use by the managed device, and an attempt to make it so would fail because the agent has insufficient information (the state column has value `notReady').

虽然在管理协议集操作中可以指定六个值中的五个值(除“notReady”外),但在响应管理协议检索操作时只返回三个值:“notReady”、“notInService”或“active”。也就是说,在查询时,现有概念行只有三种状态:它要么可供受管设备使用(status列的值为“active”);它不可供受管设备使用,尽管代理具有足够的信息(状态列的值为“notInService”);或者,它不可供受管设备使用,尝试这样做将失败,因为代理没有足够的信息(state列的值为“notReady”)。

NOTE WELL

注意

This textual convention may be used for a MIB table, irrespective of whether the values of that table's conceptual rows are able to be modified while it is active, or whether its conceptual rows must be taken out of service in order to be modified. That is, it is the responsibility of the DESCRIPTION clause of the status column to specify whether the status column must not be `active' in order for the value of some other column of the same conceptual row to be modified. If such a specification is made, affected columns may be changed by an SNMP set PDU if the RowStatus would not be equal to `active' either immediately before or after processing the PDU. In other words, if the PDU also contained a varbind that would change the RowStatus value, the column in question may be changed if the RowStatus was not equal to `active' as the PDU was received, or if the varbind sets the status to a value other than 'active'.

此文本约定可用于MIB表,无论该表的概念行的值是否可以在其处于活动状态时修改,或其概念行是否必须停止使用才能修改。也就是说,status列的DESCRIPTION子句负责指定status列是否不能为“active”,以便修改同一概念行的其他列的值。如果制定了此类规范,如果在处理PDU之前或之后,RowStatus不等于“active”,则SNMP集PDU可能会更改受影响的列。换句话说,如果PDU还包含一个会更改RowStatus值的varbind,则如果收到PDU时RowStatus不等于“active”,或者如果varbind将状态设置为“active”以外的值,则可能会更改相关列。

Also note that whenever any elements of a row exist, the RowStatus column must also exist.

还要注意,只要行的任何元素存在,RowStatus列也必须存在。

To summarize the effect of having a conceptual row with a column having a type of RowStatus, consider the following state diagram:

为了总结一个具有行状态的列的概念行的效果,请考虑下面的状态图:

                                         STATE
              +--------------+-----------+-------------+-------------
              |      A       |     B     |      C      |      D
              |              |status col.|status column|
              |status column |    is     |      is     |status column
    ACTION    |does not exist|  notReady | notInService|  is active
--------------+--------------+-----------+-------------+-------------
set status    |noError    ->D|inconsist- |inconsistent-|inconsistent-
column to     |       or     |   entValue|        Value|        Value
createAndGo   |inconsistent- |           |             |
              |         Value|           |             |
--------------+--------------+-----------+-------------+-------------
set status    |noError  see 1|inconsist- |inconsistent-|inconsistent-
column to     |       or     |   entValue|        Value|        Value
createAndWait |wrongValue    |           |             |
--------------+--------------+-----------+-------------+-------------
set status    |inconsistent- |inconsist- |noError      |noError
column to     |         Value|   entValue|             |
active        |              |           |             |
              |              |     or    |             |
              |              |           |             |
              |              |see 2   ->D|see 8     ->D|          ->D
--------------+--------------+-----------+-------------+-------------
set status    |inconsistent- |inconsist- |noError      |noError   ->C
column to     |         Value|   entValue|             |
notInService  |              |           |             |
              |              |     or    |             |      or
              |              |           |             |
              |              |see 3   ->C|          ->C|see 6
--------------+--------------+-----------+-------------+-------------
set status    |noError       |noError    |noError      |noError   ->A
column to     |              |           |             |      or
destroy       |           ->A|        ->A|          ->A|see 7
--------------+--------------+-----------+-------------+-------------
set any other |see 4         |noError    |noError      |see 5
column to some|              |           |             |
value         |              |      see 1|          ->C|          ->D
--------------+--------------+-----------+-------------+-------------
        
                                         STATE
              +--------------+-----------+-------------+-------------
              |      A       |     B     |      C      |      D
              |              |status col.|status column|
              |status column |    is     |      is     |status column
    ACTION    |does not exist|  notReady | notInService|  is active
--------------+--------------+-----------+-------------+-------------
set status    |noError    ->D|inconsist- |inconsistent-|inconsistent-
column to     |       or     |   entValue|        Value|        Value
createAndGo   |inconsistent- |           |             |
              |         Value|           |             |
--------------+--------------+-----------+-------------+-------------
set status    |noError  see 1|inconsist- |inconsistent-|inconsistent-
column to     |       or     |   entValue|        Value|        Value
createAndWait |wrongValue    |           |             |
--------------+--------------+-----------+-------------+-------------
set status    |inconsistent- |inconsist- |noError      |noError
column to     |         Value|   entValue|             |
active        |              |           |             |
              |              |     or    |             |
              |              |           |             |
              |              |see 2   ->D|see 8     ->D|          ->D
--------------+--------------+-----------+-------------+-------------
set status    |inconsistent- |inconsist- |noError      |noError   ->C
column to     |         Value|   entValue|             |
notInService  |              |           |             |
              |              |     or    |             |      or
              |              |           |             |
              |              |see 3   ->C|          ->C|see 6
--------------+--------------+-----------+-------------+-------------
set status    |noError       |noError    |noError      |noError   ->A
column to     |              |           |             |      or
destroy       |           ->A|        ->A|          ->A|see 7
--------------+--------------+-----------+-------------+-------------
set any other |see 4         |noError    |noError      |see 5
column to some|              |           |             |
value         |              |      see 1|          ->C|          ->D
--------------+--------------+-----------+-------------+-------------
        

(1) go to B or C, depending on information available to the agent.

(1) 根据代理可用的信息,转到B或C。

(2) if other variable bindings included in the same PDU, provide values for all columns which are missing but required, then return noError and goto D.

(2) 如果同一PDU中包含其他变量绑定,请为缺少但必需的所有列提供值,然后返回noError和goto D。

(3) if other variable bindings included in the same PDU, provide values for all columns which are missing but required, then return noError and goto C.

(3) 如果同一PDU中包含其他变量绑定,请为缺少但必需的所有列提供值,然后返回noError和goto C。

(4) at the discretion of the agent, the return value may be either:

(4) 由代理行自行决定,返回值可以是:

inconsistentName: because the agent does not choose to create such an instance when the corresponding RowStatus instance does not exist, or

不一致名称:因为代理不选择在相应的RowStatus实例不存在时创建这样的实例,或者

inconsistentValue: if the supplied value is inconsistent with the state of some other MIB object's value, or

不一致值:如果提供的值与其他MIB对象值的状态不一致,或

noError: because the agent chooses to create the instance.

noError:因为代理选择创建实例。

If noError is returned, then the instance of the status column must also be created, and the new state is B or C, depending on the information available to the agent. If inconsistentName or inconsistentValue is returned, the row remains in state A.

如果返回noError,则还必须创建status列的实例,新状态为B或C,具体取决于代理可用的信息。如果返回unconsistentname或unconsistentValue,则行将保持状态A。

(5) depending on the MIB definition for the column/table, either noError or inconsistentValue may be returned.

(5) 根据列/表的MIB定义,可能会返回noError或inconsistentValue。

(6) the return value can indicate one of the following errors:

(6) 返回值可能指示以下错误之一:

wrongValue: because the agent does not support createAndWait, or

错误值:因为代理不支持createAndWait,或

inconsistentValue: because the agent is unable to take the row out of service at this time, perhaps because it is in use and cannot be de-activated.

值不一致:因为代理此时无法使该行停止服务,可能是因为该行正在使用且无法取消激活。

(7) the return value can indicate the following error:

(7) 返回值可能指示以下错误:

inconsistentValue: because the agent is unable to remove the row at this time, perhaps because it is in use and cannot be de-activated.

值不一致:因为代理此时无法删除该行,可能是因为该行正在使用且无法取消激活。

NOTE: Other processing of the set request may result in a response other than noError being returned, e.g., wrongValue, noCreation, etc.

注意:set请求的其他处理可能会导致返回noError以外的响应,例如错误值、noCreation等。

Conceptual Row Creation

概念行创建

There are four potential interactions when creating a conceptual row: selecting an instance-identifier which is not in use; creating the conceptual row; initializing any objects for which the agent does not supply a default; and, making the conceptual row available for use by the managed device.

创建概念行时有四种可能的交互:选择未使用的实例标识符;创建概念行;初始化代理未提供默认值的任何对象;以及,使概念行可供受管设备使用。

Interaction 1: Selecting an Instance-Identifier

交互1:选择实例标识符

The algorithm used to select an instance-identifier varies for each conceptual row. In some cases, the instance-identifier is semantically significant, e.g., the destination address of a route, and a management station selects the instance-identifier according to the semantics.

用于选择实例标识符的算法因每个概念行而异。在一些情况下,实例标识符在语义上是重要的,例如,路由的目的地地址,并且管理站根据语义选择实例标识符。

In other cases, the instance-identifier is used solely to distinguish conceptual rows, and a management station without specific knowledge of the conceptual row might examine the instances present in order to determine an unused instance-identifier. (This approach may be used, but it is often highly sub-optimal; however, it is also a questionable practice for a naive management station to attempt conceptual row creation.)

在其他情况下,实例标识符仅用于区分概念行,没有概念行特定知识的管理站可能会检查存在的实例,以确定未使用的实例标识符。(可以使用这种方法,但它通常是高度次优的;然而,对于一个幼稚的管理站来说,尝试概念性的行创建也是一种值得怀疑的做法。)

Alternately, the MIB module which defines the conceptual row might provide one or more objects which provide assistance in determining an unused instance-identifier. For example, if the conceptual row is indexed by an integer-value, then an object having an integer-valued SYNTAX clause might be defined for such a purpose, allowing a management station to issue a management protocol retrieval operation. In order to avoid unnecessary collisions between competing management stations, `adjacent' retrievals of this object should be different.

或者,定义概念行的MIB模块可以提供一个或多个对象,这些对象可以帮助确定未使用的实例标识符。例如,如果概念行由一个整数值索引,则可以为此目的定义具有整数值语法子句的对象,从而允许管理站发出管理协议检索操作。为了避免竞争管理站之间不必要的冲突,此对象的“相邻”检索应该不同。

Finally, the management station could select a pseudo-random number to use as the index. In the event that this index was already in use and an inconsistentValue was returned in response to the management protocol set operation, the management station should simply select a new pseudo-random number and retry the operation.

最后,管理站可以选择一个伪随机数作为索引。如果此索引已在使用,并且响应管理协议集操作返回了不一致的值,则管理站只需选择一个新的伪随机数,然后重试该操作。

A MIB designer should choose between the two latter algorithms based on the size of the table (and therefore the efficiency of each algorithm). For tables in which a large number of entries are expected, it is recommended that a MIB

MIB设计者应该根据表的大小(以及每个算法的效率)在后两种算法之间进行选择。对于需要大量条目的表,建议使用MIB

object be defined that returns an acceptable index for creation. For tables with small numbers of entries, it is recommended that the latter pseudo-random index mechanism be used.

对象,该对象将返回可接受的创建索引。对于条目数较少的表,建议使用后一种伪随机索引机制。

Interaction 2: Creating the Conceptual Row

交互2:创建概念行

Once an unused instance-identifier has been selected, the management station determines if it wishes to create and activate the conceptual row in one transaction or in a negotiated set of interactions.

一旦选择了未使用的实例标识符,管理站将确定是否希望在一个事务或协商的交互集合中创建和激活概念行。

Interaction 2a: Creating and Activating the Conceptual Row

交互2a:创建和激活概念行

The management station must first determine the column requirements, i.e., it must determine those columns for which it must or must not provide values. Depending on the complexity of the table and the management station's knowledge of the agent's capabilities, this determination can be made locally by the management station. Alternately, the management station issues a management protocol get operation to examine all columns in the conceptual row that it wishes to create. In response, for each column, there are three possible outcomes:

管理站必须首先确定列要求,即必须确定其必须或不得提供值的列。根据表的复杂性和管理站对代理能力的了解,管理站可以在本地进行此确定。或者,管理站发出管理协议get操作,以检查其希望创建的概念行中的所有列。作为回应,每一列都有三种可能的结果:

- a value is returned, indicating that some other management station has already created this conceptual row. We return to interaction 1.

- 返回一个值,指示其他某个管理工作站已创建此概念行。我们回到互动1。

- the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it should supply a value for this column when the conceptual row is to be created.

- 返回异常“noSuchInstance”,表示代理实现了与此列关联的对象类型,并且如果此列存在,则至少一个概念行中的此列可以在检索使用的MIB视图中访问。对于代理提供读取-创建访问权限的列,“noSuchInstance”异常告诉管理站,在创建概念行时,它应该为此列提供一个值。

- the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column.

- 返回异常“noSuchObject”,表示代理未实现与此列关联的对象类型,或者在检索所使用的MIB视图中没有可访问此列的概念行。因此,管理站不能发出任何管理协议集操作来创建此列的实例。

Once the column requirements have been determined, a management protocol set operation is accordingly issued. This operation also sets the new instance of the status column to `createAndGo'.

一旦确定了列要求,就会相应地发布管理协议集操作。此操作还将状态列的新实例设置为“createAndGo”。

When the agent processes the set operation, it verifies that it has sufficient information to make the conceptual row available for use by the managed device. The information available to the agent is provided by two sources: the management protocol set operation which creates the conceptual row, and, implementation-specific defaults supplied by the agent (note that an agent must provide implementation-specific defaults for at least those objects which it implements as read-only). If there is sufficient information available, then the conceptual row is created, a `noError' response is returned, the status column is set to `active', and no further interactions are necessary (i.e., interactions 3 and 4 are skipped). If there is insufficient information, then the conceptual row is not created, and the set operation fails with an error of `inconsistentValue'. On this error, the management station can issue a management protocol retrieval operation to determine if this was because it failed to specify a value for a required column, or, because the selected instance of the status column already existed. In the latter case, we return to interaction 1. In the former case, the management station can re-issue the set operation with the additional information, or begin interaction 2 again using `createAndWait' in order to negotiate creation of the conceptual row.

当代理处理set操作时,它将验证是否有足够的信息使概念行可供受管设备使用。代理可用的信息由两个来源提供:创建概念行的管理协议集操作,以及代理提供的特定于实现的默认值(请注意,代理必须至少为其以只读方式实现的对象提供特定于实现的默认值)。如果有足够的可用信息,则创建概念行,返回“无错误”响应,状态列设置为“活动”,并且不需要进一步交互(即跳过交互3和4)。如果没有足够的信息,则不会创建概念行,并且set操作失败,并出现错误“UnconsistentValue”。在出现此错误时,管理站可以发出管理协议检索操作,以确定这是因为它未能为所需列指定值,还是因为状态列的选定实例已存在。在后一种情况下,我们返回到交互1。在前一种情况下,管理站可以使用附加信息重新发出set操作,或者使用“createAndWait”再次开始交互2,以便协商概念行的创建。

NOTE WELL

注意

Regardless of the method used to determine the column requirements, it is possible that the management station might deem a column necessary when, in fact, the agent will not allow that particular columnar instance to be created or written. In this case, the management protocol set operation will fail with an error such as `noCreation' or `notWritable'. In this case, the management station decides whether it needs to be able to set a value for that particular columnar instance. If not, the management station re-issues the management protocol set operation, but without setting

不管用于确定列需求的方法是什么,管理站可能认为列是必要的,而实际上,代理不允许创建或编写特定的列实例。在这种情况下,管理协议集操作将失败,并出现“noCreation”或“notWritable”等错误。在这种情况下,管理站决定是否需要能够为特定的列实例设置值。如果不是,则管理站重新发出管理协议集操作,但不进行设置

a value for that particular columnar instance; otherwise, the management station aborts the row creation algorithm.

特定列实例的值;否则,管理站将中止行创建算法。

Interaction 2b: Negotiating the Creation of the Conceptual Row

交互2b:协商创建概念行

The management station issues a management protocol set operation which sets the desired instance of the status column to `createAndWait'. If the agent is unwilling to process a request of this sort, the set operation fails with an error of `wrongValue'. (As a consequence, such an agent must be prepared to accept a single management protocol set operation, i.e., interaction 2a above, containing all of the columns indicated by its column requirements.) Otherwise, the conceptual row is created, a `noError' response is returned, and the status column is immediately set to either `notInService' or `notReady', depending on whether it has sufficient information to make the conceptual row available for use by the managed device. If there is sufficient information available, then the status column is set to `notInService'; otherwise, if there is insufficient information, then the status column is set to `notReady'. Regardless, we proceed to interaction 3.

管理站发出管理协议集操作,将状态列的所需实例设置为“createAndWait”。如果代理不愿意处理此类请求,则set操作将失败,并出现“错误值”错误。(因此,此类代理必须准备好接受单个管理协议集操作,即上面的交互2a,包含其列要求指示的所有列。)否则,创建概念行时,将返回“无错误”响应,状态列立即设置为“notInService”或“notReady”,这取决于它是否有足够的信息使概念行可供受管设备使用。如果有足够的可用信息,则状态列设置为“notInService”;否则,如果信息不足,则状态列设置为“notReady”。不管怎样,我们继续进行交互3。

Interaction 3: Initializing non-defaulted Objects

交互3:初始化非默认对象

The management station must now determine the column requirements. It issues a management protocol get operation to examine all columns in the created conceptual row. In the response, for each column, there are three possible outcomes:

管理站现在必须确定列要求。它发出一个管理协议get操作来检查所创建概念行中的所有列。在答复中,每一列都有三种可能的结果:

- a value is returned, indicating that the agent implements the object-type associated with this column and had sufficient information to provide a value. For those columns to which the agent provides read-create access (and for which the agent allows their values to be changed after their creation), a value return tells the management station that it may issue additional management protocol set operations, if it desires, in order to change the value associated with this column.

- 返回一个值,指示代理实现与此列关联的对象类型,并且具有足够的信息来提供值。对于代理提供读-创建访问权限的列(以及代理允许在创建后更改其值的列),值返回告诉管理站,如果需要,可以发出其他管理协议集操作,以更改与此列关联的值。

- the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. However,

- 返回异常“noSuchInstance”,表示代理实现了与此列关联的对象类型,并且如果此列存在,则至少一个概念行中的此列可以在检索使用的MIB视图中访问。然而

the agent does not have sufficient information to provide a value, and until a value is provided, the conceptual row may not be made available for use by the managed device. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it must issue additional management protocol set operations, in order to provide a value associated with this column.

代理没有足够的信息来提供值,在提供值之前,概念行可能无法供受管设备使用。对于代理提供读取-创建访问权限的列,“noSuchInstance”异常告诉管理站,它必须执行其他管理协议集操作,以便提供与此列关联的值。

- the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column.

- 返回异常“noSuchObject”,表示代理未实现与此列关联的对象类型,或者在检索所使用的MIB视图中没有可访问此列的概念行。因此,管理站不能发出任何管理协议集操作来创建此列的实例。

If the value associated with the status column is `notReady', then the management station must first deal with all `noSuchInstance' columns, if any. Having done so, the value of the status column becomes `notInService', and we proceed to interaction 4.

如果与状态列关联的值为“notReady”,则管理站必须首先处理所有“noSuchInstance”列(如果有)。完成此操作后,status列的值变为“notInService”,我们继续进行交互4。

Interaction 4: Making the Conceptual Row Available

交互4:使概念行可用

Once the management station is satisfied with the values associated with the columns of the conceptual row, it issues a management protocol set operation to set the status column to `active'. If the agent has sufficient information to make the conceptual row available for use by the managed device, the management protocol set operation succeeds (a `noError' response is returned). Otherwise, the management protocol set operation fails with an error of `inconsistentValue'.

一旦管理站对与概念行的列相关联的值感到满意,它就会发出管理协议集操作,将状态列设置为“活动”。如果代理具有足够的信息使概念行可供受管设备使用,则管理协议集操作将成功(返回“noError”响应)。否则,管理协议集操作失败,错误为“不一致值”。

NOTE WELL

注意

A conceptual row having a status column with value `notInService' or `notReady' is unavailable to the managed device. As such, it is possible for the managed device to create its own instances during the time between the management protocol set operation which sets the status column to `createAndWait' and the management protocol set operation which sets the status column to `active'. In this case, when the management protocol set operation is issued to set the status column to `active', the values held in the agent

具有值为“notInService”或“notReady”的状态列的概念行对受管设备不可用。因此,在将状态列设置为“createAndWait”的管理协议集操作和将状态列设置为“active”的管理协议集操作之间的时间内,受管设备可以创建自己的实例。在这种情况下,当发出管理协议设置操作以将状态列设置为“活动”时,代理中保存的值

supersede those used by the managed device.

取代受管设备使用的设备。

If the management station is prevented from setting the status column to `active' (e.g., due to management station or network failure) the conceptual row will be left in the `notInService' or `notReady' state, consuming resources indefinitely. The agent must detect conceptual rows that have been in either state for an abnormally long period of time and remove them. It is the responsibility of the DESCRIPTION clause of the status column to indicate what an abnormally long period of time would be. This period of time should be long enough to allow for human response time (including `think time') between the creation of the conceptual row and the setting of the status to `active'. In the absence of such information in the DESCRIPTION clause, it is suggested that this period be approximately 5 minutes in length. This removal action applies not only to newly-created rows, but also to previously active rows which are set to, and left in, the notInService state for a prolonged period exceeding that which is considered normal for such a conceptual row.

如果管理站无法将状态列设置为“活动”(例如,由于管理站或网络故障),则概念行将处于“notInService”或“notReady”状态,无限期地消耗资源。代理必须检测处于任一状态的概念行异常长的时间,并将其删除。status列的DESCRIPTION子句负责指示异常长的时间段。这段时间应足够长,以便在创建概念行和将状态设置为“活动”之间留出人类响应时间(包括“思考时间”)。在描述条款中没有此类信息的情况下,建议这段时间大约为5分钟。此删除操作不仅适用于新创建的行,而且也适用于以前处于活动状态的行,这些行被设置为notInService状态并保持在notInService状态的时间超过了此类概念行的正常时间。

Conceptual Row Suspension

概念行悬挂

When a conceptual row is `active', the management station may issue a management protocol set operation which sets the instance of the status column to `notInService'. If the agent is unwilling to do so, the set operation fails with an error of `wrongValue' or `inconsistentValue'. Otherwise, the conceptual row is taken out of service, and a `noError' response is returned. It is the responsibility of the DESCRIPTION clause of the status column to indicate under what circumstances the status column should be taken out of service (e.g., in order for the value of some other column of the same conceptual row to be modified).

当概念行为“活动”时,管理站可发出管理协议集操作,该操作将状态列的实例设置为“notInService”。如果代理不愿意这样做,则set操作将失败,错误为“错误值”或“不一致值”。否则,概念行将停止服务,并返回“noError”响应。status列的DESCRIPTION子句负责指出在什么情况下应该停止使用status列(例如,为了修改同一概念行的其他列的值)。

Conceptual Row Deletion

概念行删除

         For deletion of conceptual rows, a management protocol set
         operation is issued which sets the instance of the status
         column to `destroy'.  This request may be made regardless of
         the current value of the status column (e.g., it is possible
         to delete conceptual rows which are either `notReady',
         `notInService' or `active'.) If the operation succeeds, then
         all instances associated with the conceptual row are
         immediately removed.";
    };
        
         For deletion of conceptual rows, a management protocol set
         operation is issued which sets the instance of the status
         column to `destroy'.  This request may be made regardless of
         the current value of the status column (e.g., it is possible
         to delete conceptual rows which are either `notReady',
         `notInService' or `active'.) If the operation succeeds, then
         all instances associated with the conceptual row are
         immediately removed.";
    };
        
    typedef StorageType {
        type        Enumeration (other(1), volatile(2),
                        nonVolatile(3), permanent(4),
                        readOnly(5));
        description
            "Describes the memory realization of a conceptual row.  A
             row which is volatile(2) is lost upon reboot.  A row
             which is either nonVolatile(3), permanent(4) or
             readOnly(5), is backed up by stable storage.  A row which
             is permanent(4) can be changed but not deleted.  A row
             which is readOnly(5) cannot be changed nor deleted.
        
    typedef StorageType {
        type        Enumeration (other(1), volatile(2),
                        nonVolatile(3), permanent(4),
                        readOnly(5));
        description
            "Describes the memory realization of a conceptual row.  A
             row which is volatile(2) is lost upon reboot.  A row
             which is either nonVolatile(3), permanent(4) or
             readOnly(5), is backed up by stable storage.  A row which
             is permanent(4) can be changed but not deleted.  A row
             which is readOnly(5) cannot be changed nor deleted.
        

If the value of an object with this syntax is either permanent(4) or readOnly(5), it cannot be modified. Conversely, if the value is either other(1), volatile(2) or nonVolatile(3), it cannot be modified to be permanent(4) or readOnly(5). (All illegal modifications result in a 'wrongValue' error.)

如果具有此语法的对象的值为永久(4)或只读(5),则无法修改。相反,如果该值为其他(1)、易失性(2)或非易失性(3),则不能将其修改为永久性(4)或只读(5)。(所有非法修改都会导致“错误值”错误。)

             Every usage of this textual convention is required to
             specify the columnar objects which a permanent(4) row
             must at a minimum allow to be writable.";
    };
        
             Every usage of this textual convention is required to
             specify the columnar objects which a permanent(4) row
             must at a minimum allow to be writable.";
    };
        
    typedef TDomain {
        type        Pointer;
        description
            "Denotes a kind of transport service.
        
    typedef TDomain {
        type        Pointer;
        description
            "Denotes a kind of transport service.
        

Some possible values, such as snmpUDPDomain, are defined in the SNMPv2-TM MIB module. Other possible values are defined in other MIB modules." reference "The SNMPv2-TM MIB module is defined in RFC 3417." };

一些可能的值,如snmpUDPDomain,在SNMPv2 TM MIB模块中定义。其他可能的值在其他MIB模块中定义。“参考”SNMPv2 TM MIB模块在RFC 3417中定义;

    typedef TAddressOrZero {
        type        OctetString (0..255);
        description
            "Denotes a transport service address.
        
    typedef TAddressOrZero {
        type        OctetString (0..255);
        description
            "Denotes a transport service address.
        

A TAddress value is always interpreted within the context of a TDomain value. Thus, each definition of a TDomain value must be accompanied by a definition of a textual convention for use with that TDomain. Some possible textual conventions, such as SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM MIB module. Other possible textual conventions are defined in other

TAddress值始终在TDomain值的上下文中进行解释。因此,TDomain值的每个定义都必须附带一个与该TDomain一起使用的文本约定的定义。一些可能的文本约定,如snmpUDPDomain的SnmpUDPAddress,在SNMPv2 TM MIB模块中定义。其他可能的文本约定在其他文档中定义

MIB modules.

MIB模块。

A zero-length TAddress value denotes an unknown transport service address." reference "The SNMPv2-TM MIB module is defined in RFC 3417." };

长度为零的TADRESS值表示未知的传输服务地址。“参考”SNMPv2 TM MIB模块在RFC 3417中定义;

    typedef TAddress {
        type        TAddressOrZero (1..255);
        description
            "Denotes a transport service address.
        
    typedef TAddress {
        type        TAddressOrZero (1..255);
        description
            "Denotes a transport service address.
        

This type does not allow a zero-length TAddress value." };

此类型不允许长度为零的TadAddress值。“};

};

};

7. Security Considerations
7. 安全考虑

This document presents an extension of the SMIng data definition language which supports the mapping of SMIng data definitions so that they can be used with the SNMP management framework. The language extension and the mapping itself has no security impact on the Internet.

本文档介绍了SMIng数据定义语言的扩展,该语言支持SMIng数据定义的映射,以便可以与SNMP管理框架一起使用。语言扩展和映射本身对Internet没有安全影响。

8. Acknowledgements
8. 致谢

Since SMIng started as a close successor of SMIv2, some paragraphs and phrases are directly taken from the SMIv2 specifications [RFC2578], [RFC2579], [RFC2580] written by Jeff Case, Keith McCloghrie, David Perkins, Marshall T. Rose, Juergen Schoenwaelder, and Steven L. Waldbusser.

由于SMIng最初是SMIv2的继承者,因此一些段落和短语直接取自由Jeff Case、Keith McCloghrie、David Perkins、Marshall T.Rose、Juergen Schoenwaeld和Steven L.Waldbusser编写的SMIv2规范[RFC2578]、[RFC2579]、[RFC2580]。

The authors would like to thank all participants of the 7th NMRG meeting held in Schloss Kleinheubach from 6-8 September 2000, which was a major step towards the current status of this memo, namely Heiko Dassow, David Durham, Keith McCloghrie, and Bert Wijnen.

作者要感谢2000年9月6日至8日在Schloss Kleinheubach举行的第七次NMRG会议的所有与会者,这是朝着本备忘录现状迈出的重要一步,即Heiko Dassow、David Durham、Keith McLoghrie和Bert Wijnen。

Furthermore, several discussions within the SMING Working Group reflected experience with SMIv2 and influenced this specification at some points.

此外,SMING工作组内的几次讨论反映了SMIv2的经验,并在某些方面影响了本规范。

9. References
9. 工具书类
9.1. Normative References
9.1. 规范性引用文件

[RFC3780] Strauss, F. and J. Schoenwaelder, "SMIng - Next Generation Structure of Management Information", RFC 3780, May 2004.

[RFC3780]Strauss,F.和J.Schoenwaeld,“SMIng-下一代管理信息结构”,RFC 3780,2004年5月。

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,1997年3月。

[RFC2234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.

[RFC2234]Crocker,D.和P.Overell,“语法规范的扩充BNF:ABNF”,RFC 2234,1997年11月。

9.2. Informative References
9.2. 资料性引用

[RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart, "Introduction and Applicability Statements for Internet Standard Management Framework", RFC 3410, December 2002.

[RFC3410]Case,J.,Mundy,R.,Partain,D.和B.Stewart,“互联网标准管理框架的介绍和适用性声明”,RFC 34102002年12月。

[RFC2578] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.

[RFC2578]McCloghrie,K.,Perkins,D.和J.Schoenwaeld,“管理信息的结构版本2(SMIv2)”,STD 58,RFC 2578,1999年4月。

[RFC2579] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 59, RFC 2579, April 1999.

[RFC2579]McCloghrie,K.,Perkins,D.和J.Schoenwaeld,“SMIv2的文本约定”,STD 59,RFC 2579,1999年4月。

[RFC2580] McCloghrie, K., Perkins, D. and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 60, RFC 2580, April 1999.

[RFC2580]McCloghrie,K.,Perkins,D.和J.Schoenwaeld,“SMIv2的一致性声明”,STD 60,RFC 25801999年4月。

[ASN1] International Organization for Standardization, "Specification of Abstract Syntax Notation One (ASN.1)", International Standard 8824, December 1987.

[ASN1]国际标准化组织,“抽象语法符号1规范(ASN.1)”,国际标准88241987年12月。

[RFC3159] McCloghrie, K., Fine, M., Seligson, J., Chan, K., Hahn, S., Sahita, R., Smith, A. and F. Reichmeyer, "Structure of Policy Provisioning Information (SPPI)", RFC 3159, August 2001.

[RFC3159]McCloghrie,K.,Fine,M.,Seligson,J.,Chan,K.,Hahn,S.,Sahita,R.,Smith,A.和F.Reichmeyer,“策略供应信息的结构(SPPI)”,RFC 3159,2001年8月。

[IEEE754] Institute of Electrical and Electronics Engineers, "IEEE Standard for Binary Floating-Point Arithmetic", ANSI/IEEE Standard 754-1985, August 1985.

[IEEE754]电气和电子工程师协会,“二进制浮点运算的IEEE标准”,ANSI/IEEE标准754-1985,1985年8月。

[RFC3418] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Management Information Base (MIB) for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3418, December 2002.

[RFC3418]Presohn,R.,Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“简单网络管理协议(SNMP)的管理信息库(MIB)”,STD 62,RFC 3418,2002年12月。

[RFC3416] Presuhn, R., Case, J., McCloghrie, K., Rose, M. and S. Waldbusser, "Version 2 of the Protocol Operations for the Simple Network Management Protocol (SNMP)", STD 62, RFC 3416, December 2002.

[RFC3416]Presohn,R.,Case,J.,McCloghrie,K.,Rose,M.和S.Waldbusser,“简单网络管理协议(SNMP)的协议操作版本2”,STD 62,RFC 3416,2002年12月。

Authors' Addresses

作者地址

Frank Strauss TU Braunschweig Muehlenpfordtstrasse 23 38106 Braunschweig Germany

法兰克·施特劳斯·图布伦瑞克·穆埃伦普福尔茨塔斯23 38106德国布伦瑞克

   Phone: +49 531 391 3266
   EMail: strauss@ibr.cs.tu-bs.de
   URI:   http://www.ibr.cs.tu-bs.de/
        
   Phone: +49 531 391 3266
   EMail: strauss@ibr.cs.tu-bs.de
   URI:   http://www.ibr.cs.tu-bs.de/
        

Juergen Schoenwaelder International University Bremen P.O. Box 750 561 28725 Bremen Germany

德国不来梅Juergen Schoenwaeld国际大学邮政信箱750 561 28725不来梅

   Phone: +49 421 200 3587
   EMail: j.schoenwaelder@iu-bremen.de
   URI:   http://www.eecs.iu-bremen.de/
        
   Phone: +49 421 200 3587
   EMail: j.schoenwaelder@iu-bremen.de
   URI:   http://www.eecs.iu-bremen.de/
        

Full Copyright Statement

完整版权声明

Copyright (C) The Internet Society (2004). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

版权所有(C)互联网协会(2004年)。本文件受BCP 78中包含的权利、许可和限制的约束,除其中规定外,作者保留其所有权利。

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

本文件及其包含的信息是按“原样”提供的,贡献者、他/她所代表或赞助的组织(如有)、互联网协会和互联网工程任务组不承担任何明示或暗示的担保,包括但不限于任何保证,即使用本文中的信息不会侵犯任何权利,或对适销性或特定用途适用性的任何默示保证。

Intellectual Property

知识产权

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

IETF对可能声称与本文件所述技术的实施或使用有关的任何知识产权或其他权利的有效性或范围,或此类权利下的任何许可可能或可能不可用的程度,不采取任何立场;它也不表示它已作出任何独立努力来确定任何此类权利。有关RFC文件中权利的程序信息,请参见BCP 78和BCP 79。

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

向IETF秘书处披露的知识产权副本和任何许可证保证,或本规范实施者或用户试图获得使用此类专有权利的一般许可证或许可的结果,可从IETF在线知识产权存储库获取,网址为http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

IETF邀请任何相关方提请其注意任何版权、专利或专利申请,或其他可能涵盖实施本标准所需技术的专有权利。请将信息发送至IETF的IETF-ipr@ietf.org.

Acknowledgement

确认

Funding for the RFC Editor function is currently provided by the Internet Society.

RFC编辑功能的资金目前由互联网协会提供。