2542 lines
88 KiB
Plaintext
2542 lines
88 KiB
Plaintext
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Network Working Group Editors of this version:
|
||
Request for Comments: 2578 K. McCloghrie
|
||
STD: 58 Cisco Systems
|
||
Obsoletes: 1902 D. Perkins
|
||
Category: Standards Track SNMPinfo
|
||
J. Schoenwaelder
|
||
TU Braunschweig
|
||
Authors of previous version:
|
||
J. Case
|
||
SNMP Research
|
||
K. McCloghrie
|
||
Cisco Systems
|
||
M. Rose
|
||
First Virtual Holdings
|
||
S. Waldbusser
|
||
International Network Services
|
||
April 1999
|
||
|
||
|
||
Structure of Management Information Version 2 (SMIv2)
|
||
|
||
|
||
Status of this Memo
|
||
|
||
This document specifies an Internet standards track protocol for the
|
||
Internet community, and requests discussion and suggestions for
|
||
improvements. Please refer to the current edition of the "Internet
|
||
Official Protocol Standards" (STD 1) for the standardization state
|
||
and status of this protocol. Distribution of this memo is unlimited.
|
||
|
||
Copyright Notice
|
||
|
||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||
|
||
|
||
Table of Contents
|
||
|
||
1 Introduction .................................................3
|
||
1.1 A Note on Terminology ......................................4
|
||
2 Definitions ..................................................4
|
||
2.1 The MODULE-IDENTITY macro ..................................5
|
||
2.2 Object Names and Syntaxes ..................................5
|
||
2.3 The OBJECT-TYPE macro ......................................8
|
||
2.5 The NOTIFICATION-TYPE macro ...............................10
|
||
2.6 Administrative Identifiers ................................11
|
||
3 Information Modules .........................................11
|
||
3.1 Macro Invocation ..........................................12
|
||
3.1.1 Textual Values and Strings ..............................13
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 1]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
3.2 IMPORTing Symbols .........................................14
|
||
3.3 Exporting Symbols .........................................14
|
||
3.4 ASN.1 Comments ............................................14
|
||
3.5 OBJECT IDENTIFIER values ..................................15
|
||
3.6 OBJECT IDENTIFIER usage ...................................15
|
||
3.7 Reserved Keywords .........................................16
|
||
4 Naming Hierarchy ............................................16
|
||
5 Mapping of the MODULE-IDENTITY macro ........................17
|
||
5.1 Mapping of the LAST-UPDATED clause ........................17
|
||
5.2 Mapping of the ORGANIZATION clause ........................17
|
||
5.3 Mapping of the CONTACT-INFO clause ........................18
|
||
5.4 Mapping of the DESCRIPTION clause .........................18
|
||
5.5 Mapping of the REVISION clause ............................18
|
||
5.5.1 Mapping of the DESCRIPTION sub-clause ...................18
|
||
5.6 Mapping of the MODULE-IDENTITY value ......................18
|
||
5.7 Usage Example .............................................18
|
||
6 Mapping of the OBJECT-IDENTITY macro ........................19
|
||
6.1 Mapping of the STATUS clause ..............................19
|
||
6.2 Mapping of the DESCRIPTION clause .........................20
|
||
6.3 Mapping of the REFERENCE clause ...........................20
|
||
6.4 Mapping of the OBJECT-IDENTITY value ......................20
|
||
6.5 Usage Example .............................................20
|
||
7 Mapping of the OBJECT-TYPE macro ............................20
|
||
7.1 Mapping of the SYNTAX clause ..............................21
|
||
7.1.1 Integer32 and INTEGER ...................................21
|
||
7.1.2 OCTET STRING ............................................21
|
||
7.1.3 OBJECT IDENTIFIER .......................................22
|
||
7.1.4 The BITS construct ......................................22
|
||
7.1.5 IpAddress ...............................................22
|
||
7.1.6 Counter32 ...............................................23
|
||
7.1.7 Gauge32 .................................................23
|
||
7.1.8 TimeTicks ...............................................24
|
||
7.1.9 Opaque ..................................................24
|
||
7.1.10 Counter64 ..............................................24
|
||
7.1.11 Unsigned32 .............................................25
|
||
7.1.12 Conceptual Tables ......................................25
|
||
7.1.12.1 Creation and Deletion of Conceptual Rows .............26
|
||
7.2 Mapping of the UNITS clause ...............................26
|
||
7.3 Mapping of the MAX-ACCESS clause ..........................26
|
||
7.4 Mapping of the STATUS clause ..............................27
|
||
7.5 Mapping of the DESCRIPTION clause .........................27
|
||
7.6 Mapping of the REFERENCE clause ...........................27
|
||
7.7 Mapping of the INDEX clause ...............................27
|
||
7.8 Mapping of the AUGMENTS clause ............................29
|
||
7.8.1 Relation between INDEX and AUGMENTS clauses .............30
|
||
7.9 Mapping of the DEFVAL clause ..............................30
|
||
7.10 Mapping of the OBJECT-TYPE value .........................31
|
||
7.11 Usage Example ............................................32
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 2]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
8 Mapping of the NOTIFICATION-TYPE macro ......................34
|
||
8.1 Mapping of the OBJECTS clause .............................34
|
||
8.2 Mapping of the STATUS clause ..............................34
|
||
8.3 Mapping of the DESCRIPTION clause .........................35
|
||
8.4 Mapping of the REFERENCE clause ...........................35
|
||
8.5 Mapping of the NOTIFICATION-TYPE value ....................35
|
||
8.6 Usage Example .............................................35
|
||
9 Refined Syntax ..............................................36
|
||
10 Extending an Information Module ............................37
|
||
10.1 Object Assignments .......................................37
|
||
10.2 Object Definitions .......................................38
|
||
10.3 Notification Definitions .................................39
|
||
11 Appendix A: Detailed Sub-typing Rules ......................40
|
||
11.1 Syntax Rules .............................................40
|
||
11.2 Examples .................................................41
|
||
12 Security Considerations ....................................41
|
||
13 Editors' Addresses .........................................41
|
||
14 References .................................................42
|
||
15 Full Copyright Statement ...................................43
|
||
|
||
1. Introduction
|
||
|
||
Management information is viewed as a collection of managed objects,
|
||
residing in a virtual information store, termed the Management
|
||
Information Base (MIB). Collections of related objects are defined
|
||
in MIB modules. These modules are written using an adapted subset of
|
||
OSI's Abstract Syntax Notation One, ASN.1 (1988) [1]. It is the
|
||
purpose of this document, the Structure of Management Information
|
||
(SMI), to define that adapted subset, and to assign a set of
|
||
associated administrative values.
|
||
|
||
The SMI is divided into three parts: module definitions, object
|
||
definitions, and, notification definitions.
|
||
|
||
(1) Module definitions are used when describing information modules.
|
||
An ASN.1 macro, MODULE-IDENTITY, is used to concisely convey the
|
||
semantics of an information module.
|
||
|
||
(2) Object definitions are used when describing managed objects. An
|
||
ASN.1 macro, OBJECT-TYPE, is used to concisely convey the syntax
|
||
and semantics of a managed object.
|
||
|
||
(3) Notification definitions are used when describing unsolicited
|
||
transmissions of management information. An ASN.1 macro,
|
||
NOTIFICATION-TYPE, is used to concisely convey the syntax and
|
||
semantics of a notification.
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 3]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
1.1. A Note on Terminology
|
||
|
||
For the purpose of exposition, the original Structure of Management
|
||
Information, as described in RFCs 1155 (STD 16), 1212 (STD 16), and
|
||
RFC 1215, is termed the SMI version 1 (SMIv1). The current version
|
||
of the Structure of Management Information is termed SMI version 2
|
||
(SMIv2).
|
||
|
||
2. Definitions
|
||
|
||
SNMPv2-SMI DEFINITIONS ::= BEGIN
|
||
|
||
|
||
-- the path to the root
|
||
|
||
org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
|
||
dod OBJECT IDENTIFIER ::= { org 6 }
|
||
internet OBJECT IDENTIFIER ::= { dod 1 }
|
||
|
||
directory OBJECT IDENTIFIER ::= { internet 1 }
|
||
|
||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
||
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
|
||
transmission OBJECT IDENTIFIER ::= { mib-2 10 }
|
||
|
||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
||
|
||
private OBJECT IDENTIFIER ::= { internet 4 }
|
||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
||
|
||
security OBJECT IDENTIFIER ::= { internet 5 }
|
||
|
||
snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
|
||
|
||
-- transport domains
|
||
snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
|
||
|
||
-- transport proxies
|
||
snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
|
||
|
||
-- module identities
|
||
snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
|
||
|
||
-- Extended UTCTime, to allow dates with four-digit years
|
||
-- (Note that this definition of ExtUTCTime is not to be IMPORTed
|
||
-- by MIB modules.)
|
||
ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
|
||
-- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 4]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
-- where: YY - last two digits of year (only years
|
||
-- between 1900-1999)
|
||
-- YYYY - last four digits of the year (any year)
|
||
-- MM - month (01 through 12)
|
||
-- DD - day of month (01 through 31)
|
||
-- HH - hours (00 through 23)
|
||
-- MM - minutes (00 through 59)
|
||
-- Z - denotes GMT (the ASCII character Z)
|
||
--
|
||
-- For example, "9502192015Z" and "199502192015Z" represent
|
||
-- 8:15pm GMT on 19 February 1995. Years after 1999 must use
|
||
-- the four digit year format. Years 1900-1999 may use the
|
||
-- two or four digit format.
|
||
|
||
-- definitions for information modules
|
||
|
||
MODULE-IDENTITY MACRO ::=
|
||
BEGIN
|
||
TYPE NOTATION ::=
|
||
"LAST-UPDATED" value(Update ExtUTCTime)
|
||
"ORGANIZATION" Text
|
||
"CONTACT-INFO" Text
|
||
"DESCRIPTION" Text
|
||
RevisionPart
|
||
|
||
VALUE NOTATION ::=
|
||
value(VALUE OBJECT IDENTIFIER)
|
||
|
||
RevisionPart ::=
|
||
Revisions
|
||
| empty
|
||
Revisions ::=
|
||
Revision
|
||
| Revisions Revision
|
||
Revision ::=
|
||
"REVISION" value(Update ExtUTCTime)
|
||
"DESCRIPTION" Text
|
||
|
||
-- a character string as defined in section 3.1.1
|
||
Text ::= value(IA5String)
|
||
END
|
||
|
||
|
||
OBJECT-IDENTITY MACRO ::=
|
||
BEGIN
|
||
TYPE NOTATION ::=
|
||
"STATUS" Status
|
||
"DESCRIPTION" Text
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 5]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
ReferPart
|
||
|
||
VALUE NOTATION ::=
|
||
value(VALUE OBJECT IDENTIFIER)
|
||
|
||
Status ::=
|
||
"current"
|
||
| "deprecated"
|
||
| "obsolete"
|
||
|
||
ReferPart ::=
|
||
"REFERENCE" Text
|
||
| empty
|
||
|
||
-- a character string as defined in section 3.1.1
|
||
Text ::= value(IA5String)
|
||
END
|
||
|
||
|
||
-- names of objects
|
||
-- (Note that these definitions of ObjectName and NotificationName
|
||
-- are not to be IMPORTed by MIB modules.)
|
||
|
||
ObjectName ::=
|
||
OBJECT IDENTIFIER
|
||
|
||
NotificationName ::=
|
||
OBJECT IDENTIFIER
|
||
|
||
-- syntax of objects
|
||
|
||
-- the "base types" defined here are:
|
||
-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
|
||
-- 8 application-defined types: Integer32, IpAddress, Counter32,
|
||
-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
|
||
|
||
ObjectSyntax ::=
|
||
CHOICE {
|
||
simple
|
||
SimpleSyntax,
|
||
|
||
-- note that SEQUENCEs for conceptual tables and
|
||
-- rows are not mentioned here...
|
||
|
||
application-wide
|
||
ApplicationSyntax
|
||
}
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 6]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
-- built-in ASN.1 types
|
||
|
||
SimpleSyntax ::=
|
||
CHOICE {
|
||
-- INTEGERs with a more restrictive range
|
||
-- may also be used
|
||
integer-value -- includes Integer32
|
||
INTEGER (-2147483648..2147483647),
|
||
|
||
-- OCTET STRINGs with a more restrictive size
|
||
-- may also be used
|
||
string-value
|
||
OCTET STRING (SIZE (0..65535)),
|
||
|
||
objectID-value
|
||
OBJECT IDENTIFIER
|
||
}
|
||
|
||
-- indistinguishable from INTEGER, but never needs more than
|
||
-- 32-bits for a two's complement representation
|
||
Integer32 ::=
|
||
INTEGER (-2147483648..2147483647)
|
||
|
||
|
||
-- application-wide types
|
||
|
||
ApplicationSyntax ::=
|
||
CHOICE {
|
||
ipAddress-value
|
||
IpAddress,
|
||
|
||
counter-value
|
||
Counter32,
|
||
|
||
timeticks-value
|
||
TimeTicks,
|
||
|
||
arbitrary-value
|
||
Opaque,
|
||
|
||
big-counter-value
|
||
Counter64,
|
||
|
||
unsigned-integer-value -- includes Gauge32
|
||
Unsigned32
|
||
}
|
||
|
||
-- in network-byte order
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 7]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
-- (this is a tagged type for historical reasons)
|
||
IpAddress ::=
|
||
[APPLICATION 0]
|
||
IMPLICIT OCTET STRING (SIZE (4))
|
||
|
||
-- this wraps
|
||
Counter32 ::=
|
||
[APPLICATION 1]
|
||
IMPLICIT INTEGER (0..4294967295)
|
||
|
||
-- this doesn't wrap
|
||
Gauge32 ::=
|
||
[APPLICATION 2]
|
||
IMPLICIT INTEGER (0..4294967295)
|
||
|
||
-- an unsigned 32-bit quantity
|
||
-- indistinguishable from Gauge32
|
||
Unsigned32 ::=
|
||
[APPLICATION 2]
|
||
IMPLICIT INTEGER (0..4294967295)
|
||
|
||
-- hundredths of seconds since an epoch
|
||
TimeTicks ::=
|
||
[APPLICATION 3]
|
||
IMPLICIT INTEGER (0..4294967295)
|
||
|
||
-- for backward-compatibility only
|
||
Opaque ::=
|
||
[APPLICATION 4]
|
||
IMPLICIT OCTET STRING
|
||
|
||
-- for counters that wrap in less than one hour with only 32 bits
|
||
Counter64 ::=
|
||
[APPLICATION 6]
|
||
IMPLICIT INTEGER (0..18446744073709551615)
|
||
|
||
|
||
-- definition for objects
|
||
|
||
OBJECT-TYPE MACRO ::=
|
||
BEGIN
|
||
TYPE NOTATION ::=
|
||
"SYNTAX" Syntax
|
||
UnitsPart
|
||
"MAX-ACCESS" Access
|
||
"STATUS" Status
|
||
"DESCRIPTION" Text
|
||
ReferPart
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 8]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
IndexPart
|
||
DefValPart
|
||
|
||
VALUE NOTATION ::=
|
||
value(VALUE ObjectName)
|
||
|
||
Syntax ::= -- Must be one of the following:
|
||
-- a base type (or its refinement),
|
||
-- a textual convention (or its refinement), or
|
||
-- a BITS pseudo-type
|
||
type
|
||
| "BITS" "{" NamedBits "}"
|
||
|
||
NamedBits ::= NamedBit
|
||
| NamedBits "," NamedBit
|
||
|
||
NamedBit ::= identifier "(" number ")" -- number is nonnegative
|
||
|
||
UnitsPart ::=
|
||
"UNITS" Text
|
||
| empty
|
||
|
||
Access ::=
|
||
"not-accessible"
|
||
| "accessible-for-notify"
|
||
| "read-only"
|
||
| "read-write"
|
||
| "read-create"
|
||
|
||
Status ::=
|
||
"current"
|
||
| "deprecated"
|
||
| "obsolete"
|
||
|
||
ReferPart ::=
|
||
"REFERENCE" Text
|
||
| empty
|
||
|
||
IndexPart ::=
|
||
"INDEX" "{" IndexTypes "}"
|
||
| "AUGMENTS" "{" Entry "}"
|
||
| empty
|
||
IndexTypes ::=
|
||
IndexType
|
||
| IndexTypes "," IndexType
|
||
IndexType ::=
|
||
"IMPLIED" Index
|
||
| Index
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 9]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
Index ::=
|
||
-- use the SYNTAX value of the
|
||
-- correspondent OBJECT-TYPE invocation
|
||
value(ObjectName)
|
||
Entry ::=
|
||
-- use the INDEX value of the
|
||
-- correspondent OBJECT-TYPE invocation
|
||
value(ObjectName)
|
||
|
||
DefValPart ::= "DEFVAL" "{" Defvalue "}"
|
||
| empty
|
||
|
||
Defvalue ::= -- must be valid for the type specified in
|
||
-- SYNTAX clause of same OBJECT-TYPE macro
|
||
value(ObjectSyntax)
|
||
| "{" BitsValue "}"
|
||
|
||
BitsValue ::= BitNames
|
||
| empty
|
||
|
||
BitNames ::= BitName
|
||
| BitNames "," BitName
|
||
|
||
BitName ::= identifier
|
||
|
||
-- a character string as defined in section 3.1.1
|
||
Text ::= value(IA5String)
|
||
END
|
||
|
||
|
||
-- definitions for notifications
|
||
|
||
NOTIFICATION-TYPE MACRO ::=
|
||
BEGIN
|
||
TYPE NOTATION ::=
|
||
ObjectsPart
|
||
"STATUS" Status
|
||
"DESCRIPTION" Text
|
||
ReferPart
|
||
|
||
VALUE NOTATION ::=
|
||
value(VALUE NotificationName)
|
||
|
||
ObjectsPart ::=
|
||
"OBJECTS" "{" Objects "}"
|
||
| empty
|
||
Objects ::=
|
||
Object
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 10]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
| Objects "," Object
|
||
Object ::=
|
||
value(ObjectName)
|
||
|
||
Status ::=
|
||
"current"
|
||
| "deprecated"
|
||
| "obsolete"
|
||
|
||
ReferPart ::=
|
||
"REFERENCE" Text
|
||
| empty
|
||
|
||
-- a character string as defined in section 3.1.1
|
||
Text ::= value(IA5String)
|
||
END
|
||
|
||
-- definitions of administrative identifiers
|
||
|
||
zeroDotZero OBJECT-IDENTITY
|
||
STATUS current
|
||
DESCRIPTION
|
||
"A value used for null identifiers."
|
||
::= { 0 0 }
|
||
|
||
END
|
||
|
||
3. Information Modules
|
||
|
||
An "information module" is an ASN.1 module defining information
|
||
relating to network management.
|
||
|
||
The SMI describes how to use an adapted subset of ASN.1 (1988) to
|
||
define an information module. Further, additional restrictions are
|
||
placed on "standard" information modules. It is strongly recommended
|
||
that "enterprise-specific" information modules also adhere to these
|
||
restrictions.
|
||
|
||
Typically, there are three kinds of information modules:
|
||
|
||
(1) MIB modules, which contain definitions of inter-related managed
|
||
objects, make use of the OBJECT-TYPE and NOTIFICATION-TYPE macros;
|
||
|
||
(2) compliance statements for MIB modules, which make use of the
|
||
MODULE-COMPLIANCE and OBJECT-GROUP macros [2]; and,
|
||
|
||
(3) capability statements for agent implementations which make use of
|
||
the AGENT-CAPABILITIES macros [2].
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 11]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
This classification scheme does not imply a rigid taxonomy. For
|
||
example, a "standard" information module will normally include
|
||
definitions of managed objects and a compliance statement.
|
||
Similarly, an "enterprise-specific" information module might include
|
||
definitions of managed objects and a capability statement. Of
|
||
course, a "standard" information module may not contain capability
|
||
statements.
|
||
|
||
The constructs of ASN.1 allowed in SMIv2 information modules include:
|
||
the IMPORTS clause, value definitions for OBJECT IDENTIFIERs, type
|
||
definitions for SEQUENCEs (with restrictions), ASN.1 type assignments
|
||
of the restricted ASN.1 types allowed in SMIv2, and instances of
|
||
ASN.1 macros defined in this document and its companion documents [2,
|
||
3]. Additional ASN.1 macros must not be defined in SMIv2 information
|
||
modules. SMIv1 macros must not be used in SMIv2 information modules.
|
||
|
||
The names of all standard information modules must be unique (but
|
||
different versions of the same information module should have the
|
||
same name). Developers of enterprise information modules are
|
||
encouraged to choose names for their information modules that will
|
||
have a low probability of colliding with standard or other enterprise
|
||
information modules. An information module may not use the ASN.1
|
||
construct of placing an object identifier value between the module
|
||
name and the "DEFINITIONS" keyword. For the purposes of this
|
||
specification, an ASN.1 module name begins with an upper-case letter
|
||
and continues with zero or more letters, digits, or hyphens, except
|
||
that a hyphen can not be the last character, nor can there be two
|
||
consecutive hyphens.
|
||
|
||
All information modules start with exactly one invocation of the
|
||
MODULE-IDENTITY macro, which provides contact information as well as
|
||
revision history to distinguish between versions of the same
|
||
information module. This invocation must appear immediately after
|
||
any IMPORTs statements.
|
||
|
||
3.1. Macro Invocation
|
||
|
||
Within an information module, each macro invocation appears as:
|
||
|
||
<descriptor> <macro> <clauses> ::= <value>
|
||
|
||
where <descriptor> corresponds to an ASN.1 identifier, <macro> names
|
||
the macro being invoked, and <clauses> and <value> depend on the
|
||
definition of the macro. (Note that this definition of a descriptor
|
||
applies to all macros defined in this memo and in [2].)
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 12]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
For the purposes of this specification, an ASN.1 identifier consists
|
||
of one or more letters or digits, and its initial character must be a
|
||
lower-case letter. Note that hyphens are not allowed by this
|
||
specification (except for use by information modules converted from
|
||
SMIv1 which did allow hyphens).
|
||
|
||
For all descriptors appearing in an information module, the
|
||
descriptor shall be unique and mnemonic, and shall not exceed 64
|
||
characters in length. (However, descriptors longer than 32
|
||
characters are not recommended.) This promotes a common language for
|
||
humans to use when discussing the information module and also
|
||
facilitates simple table mappings for user-interfaces.
|
||
|
||
The set of descriptors defined in all "standard" information modules
|
||
shall be unique.
|
||
|
||
Finally, by convention, if the descriptor refers to an object with a
|
||
SYNTAX clause value of either Counter32 or Counter64, then the
|
||
descriptor used for the object should denote plurality.
|
||
|
||
3.1.1. Textual Values and Strings
|
||
|
||
Some clauses in a macro invocation may take a character string as a
|
||
textual value (e.g., the DESCRIPTION clause). Other clauses take
|
||
binary or hexadecimal strings (in any position where a non-negative
|
||
number is allowed).
|
||
|
||
A character string is preceded and followed by the quote character
|
||
("), and consists of an arbitrary number (possibly zero) of:
|
||
|
||
- any 7-bit displayable ASCII characters except quote ("),
|
||
- tab characters,
|
||
- spaces, and
|
||
- line terminator characters (\n or \r\n).
|
||
|
||
The value of a character string is interpreted as ASCII.
|
||
|
||
A binary string consists of a number (possibly zero) of zeros and
|
||
ones preceded by a single (') and followed by either the pair ('B) or
|
||
('b), where the number is a multiple of eight.
|
||
|
||
A hexadecimal string consists of an even number (possibly zero) of
|
||
hexadecimal digits, preceded by a single (') and followed by either
|
||
the pair ('H) or ('h). Digits specified via letters can be in upper
|
||
or lower case.
|
||
|
||
Note that ASN.1 comments can not be enclosed inside any of these
|
||
types of strings.
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 13]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
3.2. IMPORTing Symbols
|
||
|
||
To reference an external object, the IMPORTS statement must be used
|
||
to identify both the descriptor and the module in which the
|
||
descriptor is defined, where the module is identified by its ASN.1
|
||
module name.
|
||
|
||
Note that when symbols from "enterprise-specific" information modules
|
||
are referenced (e.g., a descriptor), there is the possibility of
|
||
collision. As such, if different objects with the same descriptor
|
||
are IMPORTed, then this ambiguity is resolved by prefixing the
|
||
descriptor with the name of the information module and a dot ("."),
|
||
i.e.,
|
||
|
||
"module.descriptor"
|
||
|
||
(All descriptors must be unique within any information module.)
|
||
|
||
Of course, this notation can be used to refer to objects even when
|
||
there is no collision when IMPORTing symbols.
|
||
|
||
Finally, if any of the ASN.1 named types and macros defined in this
|
||
document, specifically:
|
||
|
||
Counter32, Counter64, Gauge32, Integer32, IpAddress, MODULE-
|
||
IDENTITY, NOTIFICATION-TYPE, Opaque, OBJECT-TYPE, OBJECT-
|
||
IDENTITY, TimeTicks, Unsigned32,
|
||
|
||
or any of those defined in [2] or [3], are used in an information
|
||
module, then they must be imported using the IMPORTS statement.
|
||
However, the following must not be included in an IMPORTS statement:
|
||
|
||
- named types defined by ASN.1 itself, specifically: INTEGER,
|
||
OCTET STRING, OBJECT IDENTIFIER, SEQUENCE, SEQUENCE OF type,
|
||
- the BITS construct.
|
||
|
||
3.3. Exporting Symbols
|
||
|
||
The ASN.1 EXPORTS statement is not allowed in SMIv2 information
|
||
modules. All items defined in an information module are
|
||
automatically exported.
|
||
|
||
3.4. ASN.1 Comments
|
||
|
||
ASN.1 comments can be included in an information module. However, it
|
||
is recommended that all substantive descriptions be placed within an
|
||
appropriate DESCRIPTION clause.
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 14]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
ASN.1 comments commence with a pair of adjacent hyphens and end with
|
||
the next pair of adjacent hyphens or at the end of the line,
|
||
whichever occurs first. Comments ended by a pair of hyphens have the
|
||
effect of a single space character.
|
||
|
||
3.5. OBJECT IDENTIFIER values
|
||
|
||
An OBJECT IDENTIFIER value is an ordered list of non-negative
|
||
numbers. For the SMIv2, each number in the list is referred to as a
|
||
sub-identifier, there are at most 128 sub-identifiers in a value, and
|
||
each sub-identifier has a maximum value of 2^32-1 (4294967295
|
||
decimal).
|
||
|
||
All OBJECT IDENTIFIER values have at least two sub-identifiers, where
|
||
the value of the first sub-identifier is one of the following well-
|
||
known names:
|
||
|
||
Value Name
|
||
0 ccitt
|
||
1 iso
|
||
2 joint-iso-ccitt
|
||
|
||
(Note that this SMI does not recognize "new" well-known names, e.g.,
|
||
as defined when the CCITT became the ITU.)
|
||
|
||
3.6. OBJECT IDENTIFIER usage
|
||
|
||
OBJECT IDENTIFIERs are used in information modules in two ways:
|
||
|
||
(1) registration: the definition of a particular item is registered as
|
||
a particular OBJECT IDENTIFIER value, and associated with a
|
||
particular descriptor. After such a registration, the semantics
|
||
thereby associated with the value are not allowed to change, the
|
||
OBJECT IDENTIFIER can not be used for any other registration, and
|
||
the descriptor can not be changed nor associated with any other
|
||
registration. The following macros result in a registration:
|
||
|
||
OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-GROUP,
|
||
OBJECT-IDENTITY, NOTIFICATION-GROUP, MODULE-COMPLIANCE,
|
||
AGENT-CAPABILITIES.
|
||
|
||
(2) assignment: a descriptor can be assigned to a particular OBJECT
|
||
IDENTIFIER value. For this usage, the semantics associated with
|
||
the OBJECT IDENTIFIER value is not allowed to change, and a
|
||
descriptor assigned to a particular OBJECT IDENTIFIER value cannot
|
||
subsequently be assigned to another. However, multiple descriptors
|
||
can be assigned to the same OBJECT IDENTIFIER value. Such
|
||
assignments are specified in the following manner:
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 15]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
mib OBJECT IDENTIFIER ::= { mgmt 1 } -- from RFC1156
|
||
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- from RFC1213
|
||
fredRouter OBJECT IDENTIFIER ::= { flintStones 1 1 }
|
||
barneySwitch OBJECT IDENTIFIER ::= { flintStones bedrock(2) 1 }
|
||
|
||
Note while the above examples are legal, the following is not:
|
||
|
||
dinoHost OBJECT IDENTIFIER ::= { flintStones bedrock 2 }
|
||
|
||
A descriptor is allowed to be associated with both a registration and
|
||
an assignment, providing both are associated with the same OBJECT
|
||
IDENTIFIER value and semantics.
|
||
|
||
3.7. Reserved Keywords
|
||
|
||
The following are reserved keywords which must not be used as
|
||
descriptors or module names:
|
||
|
||
ABSENT ACCESS AGENT-CAPABILITIES ANY APPLICATION AUGMENTS BEGIN
|
||
BIT BITS BOOLEAN BY CHOICE COMPONENT COMPONENTS CONTACT-INFO
|
||
CREATION-REQUIRES Counter32 Counter64 DEFAULT DEFINED
|
||
DEFINITIONS DEFVAL DESCRIPTION DISPLAY-HINT END ENUMERATED
|
||
ENTERPRISE EXPLICIT EXPORTS EXTERNAL FALSE FROM GROUP Gauge32
|
||
IDENTIFIER IMPLICIT IMPLIED IMPORTS INCLUDES INDEX INTEGER
|
||
Integer32 IpAddress LAST-UPDATED MANDATORY-GROUPS MAX MAX-ACCESS
|
||
MIN MIN-ACCESS MINUS-INFINITY MODULE MODULE-COMPLIANCE MODULE-
|
||
IDENTITY NOTIFICATION-GROUP NOTIFICATION-TYPE NOTIFICATIONS NULL
|
||
OBJECT OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE OBJECTS OCTET OF
|
||
OPTIONAL ORGANIZATION Opaque PLUS-INFINITY PRESENT PRIVATE
|
||
PRODUCT-RELEASE REAL REFERENCE REVISION SEQUENCE SET SIZE STATUS
|
||
STRING SUPPORTS SYNTAX TAGS TEXTUAL-CONVENTION TRAP-TYPE TRUE
|
||
TimeTicks UNITS UNIVERSAL Unsigned32 VARIABLES VARIATION WITH
|
||
WRITE-SYNTAX
|
||
|
||
4. Naming Hierarchy
|
||
|
||
The root of the subtree administered by the Internet Assigned Numbers
|
||
Authority (IANA) for the Internet is:
|
||
|
||
internet OBJECT IDENTIFIER ::= { iso 3 6 1 }
|
||
|
||
That is, the Internet subtree of OBJECT IDENTIFIERs starts with the
|
||
prefix:
|
||
|
||
1.3.6.1.
|
||
|
||
Several branches underneath this subtree are used for network
|
||
management:
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 16]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
mgmt OBJECT IDENTIFIER ::= { internet 2 }
|
||
experimental OBJECT IDENTIFIER ::= { internet 3 }
|
||
private OBJECT IDENTIFIER ::= { internet 4 }
|
||
enterprises OBJECT IDENTIFIER ::= { private 1 }
|
||
|
||
However, the SMI does not prohibit the definition of objects in other
|
||
portions of the object tree.
|
||
|
||
The mgmt(2) subtree is used to identify "standard" objects.
|
||
|
||
The experimental(3) subtree is used to identify objects being
|
||
designed by working groups of the IETF. If an information module
|
||
produced by a working group becomes a "standard" information module,
|
||
then at the very beginning of its entry onto the Internet standards
|
||
track, the objects are moved under the mgmt(2) subtree.
|
||
|
||
The private(4) subtree is used to identify objects defined
|
||
unilaterally. The enterprises(1) subtree beneath private is used,
|
||
among other things, to permit providers of networking subsystems to
|
||
register models of their products.
|
||
|
||
5. Mapping of the MODULE-IDENTITY macro
|
||
|
||
The MODULE-IDENTITY macro is used to provide contact and revision
|
||
history for each information module. It must appear exactly once in
|
||
every information module. It should be noted that the expansion of
|
||
the MODULE-IDENTITY macro is something which conceptually happens
|
||
during implementation and not during run-time.
|
||
|
||
Note that reference in an IMPORTS clause or in clauses of SMIv2
|
||
macros to an information module is NOT through the use of the
|
||
'descriptor' of a MODULE-IDENTITY macro; rather, an information
|
||
module is referenced through specifying its module name.
|
||
|
||
5.1. Mapping of the LAST-UPDATED clause
|
||
|
||
The LAST-UPDATED clause, which must be present, contains the date and
|
||
time that this information module was last edited.
|
||
|
||
5.2. Mapping of the ORGANIZATION clause
|
||
|
||
The ORGANIZATION clause, which must be present, contains a textual
|
||
description of the organization under whose auspices this information
|
||
module was developed.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 17]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
5.3. Mapping of the CONTACT-INFO clause
|
||
|
||
The CONTACT-INFO clause, which must be present, contains the name,
|
||
postal address, telephone number, and electronic mail address of the
|
||
person to whom technical queries concerning this information module
|
||
should be sent.
|
||
|
||
5.4. Mapping of the DESCRIPTION clause
|
||
|
||
The DESCRIPTION clause, which must be present, contains a high-level
|
||
textual description of the contents of this information module.
|
||
|
||
5.5. Mapping of the REVISION clause
|
||
|
||
The REVISION clause, which need not be present, is repeatedly used to
|
||
describe the revisions (including the initial version) made to this
|
||
information module, in reverse chronological order (i.e., most recent
|
||
first). Each instance of this clause contains the date and time of
|
||
the revision.
|
||
|
||
5.5.1. Mapping of the DESCRIPTION sub-clause
|
||
|
||
The DESCRIPTION sub-clause, which must be present for each REVISION
|
||
clause, contains a high-level textual description of the revision
|
||
identified in that REVISION clause.
|
||
|
||
5.6. Mapping of the MODULE-IDENTITY value
|
||
|
||
The value of an invocation of the MODULE-IDENTITY macro is an OBJECT
|
||
IDENTIFIER. As such, this value may be authoritatively used when
|
||
specifying an OBJECT IDENTIFIER value to refer to the information
|
||
module containing the invocation.
|
||
|
||
Note that it is a common practice to use the value of the MODULE-
|
||
IDENTITY macro as a subtree under which other OBJECT IDENTIFIER
|
||
values assigned within the module are defined. However, it is legal
|
||
(and occasionally necessary) for the other OBJECT IDENTIFIER values
|
||
assigned within the module to be unrelated to the OBJECT IDENTIFIER
|
||
value of the MODULE-IDENTITY macro.
|
||
|
||
5.7. Usage Example
|
||
|
||
Consider how a skeletal MIB module might be constructed: e.g.,
|
||
|
||
FIZBIN-MIB DEFINITIONS ::= BEGIN
|
||
|
||
IMPORTS
|
||
MODULE-IDENTITY, OBJECT-TYPE, experimental
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 18]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
FROM SNMPv2-SMI;
|
||
|
||
|
||
fizbin MODULE-IDENTITY
|
||
LAST-UPDATED "199505241811Z"
|
||
ORGANIZATION "IETF SNMPv2 Working Group"
|
||
CONTACT-INFO
|
||
" Marshall T. Rose
|
||
|
||
Postal: Dover Beach Consulting, Inc.
|
||
420 Whisman Court
|
||
Mountain View, CA 94043-2186
|
||
US
|
||
|
||
Tel: +1 415 968 1052
|
||
Fax: +1 415 968 2510
|
||
|
||
E-mail: mrose@dbc.mtview.ca.us"
|
||
|
||
DESCRIPTION
|
||
"The MIB module for entities implementing the xxxx
|
||
protocol."
|
||
REVISION "9505241811Z"
|
||
DESCRIPTION
|
||
"The latest version of this MIB module."
|
||
REVISION "9210070433Z"
|
||
DESCRIPTION
|
||
"The initial version of this MIB module, published in
|
||
RFC yyyy."
|
||
-- contact IANA for actual number
|
||
::= { experimental xx }
|
||
|
||
END
|
||
|
||
6. Mapping of the OBJECT-IDENTITY macro
|
||
|
||
The OBJECT-IDENTITY macro is used to define information about an
|
||
OBJECT IDENTIFIER assignment. All administrative OBJECT IDENTIFIER
|
||
assignments which define a type identification value (see
|
||
AutonomousType, a textual convention defined in [3]) should be
|
||
defined via the OBJECT-IDENTITY macro. It should be noted that the
|
||
expansion of the OBJECT-IDENTITY macro is something which
|
||
conceptually happens during implementation and not during run-time.
|
||
|
||
6.1. Mapping of the STATUS clause
|
||
|
||
The STATUS clause, which must be present, indicates whether this
|
||
definition is current or historic.
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 19]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
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.
|
||
|
||
6.2. Mapping of the DESCRIPTION clause
|
||
|
||
The DESCRIPTION clause, which must be present, contains a textual
|
||
description of the object assignment.
|
||
|
||
6.3. Mapping of the REFERENCE clause
|
||
|
||
The REFERENCE clause, which need not be present, contains a textual
|
||
cross-reference to some other document, either another information
|
||
module which defines a related assignment, or some other document
|
||
which provides additional information relevant to this definition.
|
||
|
||
6.4. Mapping of the OBJECT-IDENTITY value
|
||
|
||
The value of an invocation of the OBJECT-IDENTITY macro is an OBJECT
|
||
IDENTIFIER.
|
||
|
||
6.5. Usage Example
|
||
|
||
Consider how an OBJECT IDENTIFIER assignment might be made: e.g.,
|
||
|
||
fizbin69 OBJECT-IDENTITY
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The authoritative identity of the Fizbin 69 chipset."
|
||
::= { fizbinChipSets 1 }
|
||
|
||
7. Mapping of the OBJECT-TYPE macro
|
||
|
||
The OBJECT-TYPE macro is used to define a type of managed object. It
|
||
should be noted that the expansion of the OBJECT-TYPE macro is
|
||
something which conceptually happens during implementation and not
|
||
during run-time.
|
||
|
||
For leaf objects which are not columnar objects (i.e., not contained
|
||
within a conceptual table), instances of the object are identified by
|
||
appending a sub-identifier of zero to the name of that object.
|
||
Otherwise, the INDEX clause of the conceptual row object superior to
|
||
a columnar object defines instance identification information.
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 20]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
7.1. Mapping of the SYNTAX clause
|
||
|
||
The SYNTAX clause, which must be present, defines the abstract data
|
||
structure corresponding to that object. The data structure must be
|
||
one of the following: a base type, the BITS construct, or a textual
|
||
convention. (SEQUENCE OF and SEQUENCE are also possible for
|
||
conceptual tables, see section 7.1.12). The base types are those
|
||
defined in the ObjectSyntax CHOICE. A textual convention is a
|
||
newly-defined type defined as a sub-type of a base type [3].
|
||
|
||
An extended subset of the full capabilities of ASN.1 (1988) sub-
|
||
typing is allowed, as appropriate to the underlying ASN.1 type. Any
|
||
such restriction on size, range or enumerations specified in this
|
||
clause represents the maximal level of support which makes "protocol
|
||
sense". Restrictions on sub-typing are specified in detail in
|
||
Section 9 and Appendix A of this memo.
|
||
|
||
The semantics of ObjectSyntax are now described.
|
||
|
||
7.1.1. Integer32 and INTEGER
|
||
|
||
The Integer32 type represents integer-valued information between
|
||
-2^31 and 2^31-1 inclusive (-2147483648 to 2147483647 decimal). This
|
||
type is indistinguishable from the INTEGER type. Both the INTEGER
|
||
and Integer32 types may be sub-typed to be more constrained than the
|
||
Integer32 type.
|
||
|
||
The INTEGER type (but not the Integer32 type) may also be used to
|
||
represent integer-valued information as named-number enumerations.
|
||
In this case, only those named-numbers so enumerated may be present
|
||
as a value. Note that although it is recommended that enumerated
|
||
values start at 1 and be numbered contiguously, any valid value for
|
||
Integer32 is allowed for an enumerated value and, further, enumerated
|
||
values needn't be contiguously assigned.
|
||
|
||
Finally, a label for a named-number enumeration must consist of one
|
||
or more letters or digits, up to a maximum of 64 characters, and the
|
||
initial character must be a lower-case letter. (However, labels
|
||
longer than 32 characters are not recommended.) Note that hyphens
|
||
are not allowed by this specification (except for use by information
|
||
modules converted from SMIv1 which did allow hyphens).
|
||
|
||
7.1.2. OCTET STRING
|
||
|
||
The OCTET STRING type represents arbitrary binary or textual data.
|
||
Although the SMI-specified size limitation for this type is 65535
|
||
octets, MIB designers should realize that there may be implementation
|
||
and interoperability limitations for sizes in excess of 255 octets.
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 21]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
7.1.3. OBJECT IDENTIFIER
|
||
|
||
The OBJECT IDENTIFIER type represents administratively assigned
|
||
names. Any instance of this type may have at most 128 sub-
|
||
identifiers. Further, each sub-identifier must not exceed the value
|
||
2^32-1 (4294967295 decimal).
|
||
|
||
7.1.4. The BITS construct
|
||
|
||
The BITS construct represents an enumeration of named bits. This
|
||
collection is assigned non-negative, contiguous (but see below)
|
||
values, starting at zero. Only those named-bits so enumerated may be
|
||
present in a value. (Thus, enumerations must be assigned to
|
||
consecutive bits; however, see Section 9 for refinements of an object
|
||
with this syntax.)
|
||
|
||
As part of updating an information module, for an object defined
|
||
using the BITS construct, new enumerations can be added or existing
|
||
enumerations can have new labels assigned to them. After an
|
||
enumeration is added, it might not be possible to distinguish between
|
||
an implementation of the updated object for which the new enumeration
|
||
is not asserted, and an implementation of the object prior to the
|
||
addition. Depending on the circumstances, such an ambiguity could
|
||
either be desirable or could be undesirable. The means to avoid such
|
||
an ambiguity is dependent on the encoding of values on the wire;
|
||
however, one possibility is to define new enumerations starting at
|
||
the next multiple of eight bits. (Of course, this can also result in
|
||
the enumerations no longer being contiguous.)
|
||
|
||
Although there is no SMI-specified limitation on the number of
|
||
enumerations (and therefore on the length of a value), except as may
|
||
be imposed by the limit on the length of an OCTET STRING, MIB
|
||
designers should realize that there may be implementation and
|
||
interoperability limitations for sizes in excess of 128 bits.
|
||
|
||
Finally, a label for a named-number enumeration must consist of one
|
||
or more letters or digits, up to a maximum of 64 characters, and the
|
||
initial character must be a lower-case letter. (However, labels
|
||
longer than 32 characters are not recommended.) Note that hyphens
|
||
are not allowed by this specification.
|
||
|
||
7.1.5. IpAddress
|
||
|
||
The IpAddress type represents a 32-bit internet address. It is
|
||
represented as an OCTET STRING of length 4, in network byte-order.
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 22]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
Note that the IpAddress type is a tagged type for historical reasons.
|
||
Network addresses should be represented using an invocation of the
|
||
TEXTUAL-CONVENTION macro [3].
|
||
|
||
7.1.6. Counter32
|
||
|
||
The Counter32 type represents a non-negative integer which
|
||
monotonically increases until it reaches a maximum value of 2^32-1
|
||
(4294967295 decimal), when it wraps around and starts increasing
|
||
again from zero.
|
||
|
||
Counters have no defined "initial" value, and thus, a single value of
|
||
a Counter has (in general) no information content. Discontinuities
|
||
in the monotonically increasing value normally occur at re-
|
||
initialization of the management system, and at other times as
|
||
specified in the description of an object-type using this ASN.1 type.
|
||
If such other times can occur, for example, the creation of an object
|
||
instance at times other than re-initialization, then a corresponding
|
||
object should be defined, with an appropriate SYNTAX clause, to
|
||
indicate the last discontinuity. Examples of appropriate SYNTAX
|
||
clause include: TimeStamp (a textual convention defined in [3]),
|
||
DateAndTime (another textual convention from [3]) or TimeTicks.
|
||
|
||
The value of the MAX-ACCESS clause for objects with a SYNTAX clause
|
||
value of Counter32 is either "read-only" or "accessible-for-notify".
|
||
|
||
A DEFVAL clause is not allowed for objects with a SYNTAX clause value
|
||
of Counter32.
|
||
|
||
7.1.7. Gauge32
|
||
|
||
The Gauge32 type represents a non-negative integer, which may
|
||
increase or decrease, but shall never exceed a maximum value, nor
|
||
fall below a minimum value. The maximum value can not be greater
|
||
than 2^32-1 (4294967295 decimal), and the minimum value can not be
|
||
smaller than 0. The value of a Gauge32 has its maximum value
|
||
whenever the information being modeled is greater than or equal to
|
||
its maximum value, and has its minimum value whenever the information
|
||
being modeled is smaller than or equal to its minimum value. If the
|
||
information being modeled subsequently decreases below (increases
|
||
above) the maximum (minimum) value, the Gauge32 also decreases
|
||
(increases). (Note that despite of the use of the term "latched" in
|
||
the original definition of this type, it does not become "stuck" at
|
||
its maximum or minimum value.)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 23]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
7.1.8. TimeTicks
|
||
|
||
The TimeTicks type represents a non-negative integer which represents
|
||
the time, modulo 2^32 (4294967296 decimal), in hundredths of a second
|
||
between two epochs. When objects are defined which use this ASN.1
|
||
type, the description of the object identifies both of the reference
|
||
epochs.
|
||
|
||
For example, [3] defines the TimeStamp textual convention which is
|
||
based on the TimeTicks type. With a TimeStamp, the first reference
|
||
epoch is defined as the time when sysUpTime [5] was zero, and the
|
||
second reference epoch is defined as the current value of sysUpTime.
|
||
|
||
The TimeTicks type may not be sub-typed.
|
||
|
||
7.1.9. Opaque
|
||
|
||
The Opaque type is provided solely for backward-compatibility, and
|
||
shall not be used for newly-defined object types.
|
||
|
||
The Opaque type supports the capability to pass arbitrary ASN.1
|
||
syntax. A value is encoded using the ASN.1 Basic Encoding Rules [4]
|
||
into a string of octets. This, in turn, is encoded as an OCTET
|
||
STRING, in effect "double-wrapping" the original ASN.1 value.
|
||
|
||
Note that a conforming implementation need only be able to accept and
|
||
recognize opaquely-encoded data. It need not be able to unwrap the
|
||
data and then interpret its contents.
|
||
|
||
A requirement on "standard" MIB modules is that no object may have a
|
||
SYNTAX clause value of Opaque.
|
||
|
||
7.1.10. Counter64
|
||
|
||
The Counter64 type represents a non-negative integer which
|
||
monotonically increases until it reaches a maximum value of 2^64-1
|
||
(18446744073709551615 decimal), when it wraps around and starts
|
||
increasing again from zero.
|
||
|
||
Counters have no defined "initial" value, and thus, a single value of
|
||
a Counter has (in general) no information content. Discontinuities
|
||
in the monotonically increasing value normally occur at re-
|
||
initialization of the management system, and at other times as
|
||
specified in the description of an object-type using this ASN.1 type.
|
||
If such other times can occur, for example, the creation of an object
|
||
instance at times other than re-initialization, then a corresponding
|
||
object should be defined, with an appropriate SYNTAX clause, to
|
||
indicate the last discontinuity. Examples of appropriate SYNTAX
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 24]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
clause are: TimeStamp (a textual convention defined in [3]),
|
||
DateAndTime (another textual convention from [3]) or TimeTicks.
|
||
|
||
The value of the MAX-ACCESS clause for objects with a SYNTAX clause
|
||
value of Counter64 is either "read-only" or "accessible-for-notify".
|
||
|
||
A requirement on "standard" MIB modules is that the Counter64 type
|
||
may be used only if the information being modeled would wrap in less
|
||
than one hour if the Counter32 type was used instead.
|
||
|
||
A DEFVAL clause is not allowed for objects with a SYNTAX clause value
|
||
of Counter64.
|
||
|
||
7.1.11. Unsigned32
|
||
|
||
The Unsigned32 type represents integer-valued information between 0
|
||
and 2^32-1 inclusive (0 to 4294967295 decimal).
|
||
|
||
7.1.12. Conceptual Tables
|
||
|
||
Management operations apply exclusively to scalar objects. However,
|
||
it is sometimes convenient for developers of management applications
|
||
to impose an imaginary, tabular structure on an ordered collection of
|
||
objects within the MIB. Each such conceptual table contains zero or
|
||
more rows, and each row may contain one or more scalar objects,
|
||
termed columnar objects. This conceptualization is formalized by
|
||
using the OBJECT-TYPE macro to define both an object which
|
||
corresponds to a table and an object which corresponds to a row in
|
||
that table. A conceptual table has SYNTAX of the form:
|
||
|
||
SEQUENCE OF <EntryType>
|
||
|
||
where <EntryType> refers to the SEQUENCE type of its subordinate
|
||
conceptual row. A conceptual row has SYNTAX of the form:
|
||
|
||
<EntryType>
|
||
|
||
where <EntryType> is a SEQUENCE type defined as follows:
|
||
|
||
<EntryType> ::= SEQUENCE { <type1>, ... , <typeN> }
|
||
|
||
where there is one <type> for each subordinate object, and each
|
||
<type> is of the form:
|
||
|
||
<descriptor> <syntax>
|
||
|
||
where <descriptor> is the descriptor naming a subordinate object, and
|
||
<syntax> has the value of that subordinate object's SYNTAX clause,
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 25]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
except that both sub-typing information and the named values for
|
||
enumerated integers or the named bits for the BITS construct, are
|
||
omitted from <syntax>.
|
||
|
||
Further, a <type> is always present for every subordinate object.
|
||
(The ASN.1 DEFAULT and OPTIONAL clauses are disallowed in the
|
||
SEQUENCE definition.) The MAX-ACCESS clause for conceptual tables
|
||
and rows is "not-accessible".
|
||
|
||
7.1.12.1. Creation and Deletion of Conceptual Rows
|
||
|
||
For newly-defined conceptual rows which allow the creation of new
|
||
object instances and/or the deletion of existing object instances,
|
||
there should be one columnar object with a SYNTAX clause value of
|
||
RowStatus (a textual convention defined in [3]) and a MAX-ACCESS
|
||
clause value of read-create. By convention, this is termed the
|
||
status column for the conceptual row.
|
||
|
||
7.2. Mapping of the UNITS clause
|
||
|
||
This UNITS clause, which need not be present, contains a textual
|
||
definition of the units associated with that object.
|
||
|
||
7.3. Mapping of the MAX-ACCESS clause
|
||
|
||
The MAX-ACCESS clause, which must be present, defines whether it
|
||
makes "protocol sense" to read, write and/or create an instance of
|
||
the object, or to include its value in a notification. This is the
|
||
maximal level of access for the object. (This maximal level of
|
||
access is independent of any administrative authorization policy.)
|
||
|
||
The value "read-write" indicates that read and write access make
|
||
"protocol sense", but create does not. The value "read-create"
|
||
indicates that read, write and create access make "protocol sense".
|
||
The value "not-accessible" indicates an auxiliary object (see Section
|
||
7.7). The value "accessible-for-notify" indicates an object which is
|
||
accessible only via a notification (e.g., snmpTrapOID [5]).
|
||
|
||
These values are ordered, from least to greatest: "not-accessible",
|
||
"accessible-for-notify", "read-only", "read-write", "read-create".
|
||
|
||
If any columnar object in a conceptual row has "read-create" as its
|
||
maximal level of access, then no other columnar object of the same
|
||
conceptual row may have a maximal access of "read-write". (Note that
|
||
"read-create" is a superset of "read-write".)
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 26]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
7.4. Mapping of the STATUS clause
|
||
|
||
The STATUS clause, which must be present, indicates whether this
|
||
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.
|
||
|
||
7.5. Mapping of the DESCRIPTION clause
|
||
|
||
The DESCRIPTION clause, which must be present, contains a textual
|
||
definition of that object which provides all semantic definitions
|
||
necessary for implementation, and should embody any information which
|
||
would otherwise be communicated in any ASN.1 commentary annotations
|
||
associated with the object.
|
||
|
||
7.6. Mapping of the REFERENCE clause
|
||
|
||
The REFERENCE clause, which need not be present, contains a textual
|
||
cross-reference to some other document, either another information
|
||
module which defines a related assignment, or some other document
|
||
which provides additional information relevant to this definition.
|
||
|
||
7.7. Mapping of the INDEX clause
|
||
|
||
The INDEX clause, which must be present if that object corresponds to
|
||
a conceptual row (unless an AUGMENTS clause is present instead), and
|
||
must be absent otherwise, defines instance identification information
|
||
for the columnar objects subordinate to that object.
|
||
|
||
The instance identification information in an INDEX clause must
|
||
specify object(s) such that value(s) of those object(s) will
|
||
unambiguously distinguish a conceptual row. The objects can be
|
||
columnar objects from the same and/or another conceptual table, but
|
||
must not be scalar objects. Multiple occurrences of the same object
|
||
in a single INDEX clause is strongly discouraged.
|
||
|
||
The syntax of the objects in the INDEX clause indicate how to form
|
||
the instance-identifier:
|
||
|
||
(1) integer-valued (i.e., having INTEGER as its underlying primitive
|
||
type): a single sub-identifier taking the integer value (this
|
||
works only for non-negative integers);
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 27]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
(2) string-valued, fixed-length strings (or variable-length preceded by
|
||
the IMPLIED keyword): `n' sub-identifiers, where `n' is the length
|
||
of the string (each octet of the string is encoded in a separate
|
||
sub-identifier);
|
||
|
||
(3) string-valued, variable-length strings (not preceded by the IMPLIED
|
||
keyword): `n+1' sub-identifiers, where `n' is the length of the
|
||
string (the first sub-identifier is `n' itself, following this,
|
||
each octet of the string is encoded in a separate sub-identifier);
|
||
|
||
(4) object identifier-valued (when preceded by the IMPLIED keyword):
|
||
`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);
|
||
|
||
(5) object identifier-valued (when not preceded by the IMPLIED
|
||
keyword): `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);
|
||
|
||
(6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d
|
||
notation.
|
||
|
||
Note that the IMPLIED keyword can only be present for an object
|
||
having a variable-length syntax (e.g., variable-length strings or
|
||
object identifier-valued objects), Further, the IMPLIED keyword can
|
||
only be associated with the last object in the INDEX clause.
|
||
Finally, the IMPLIED keyword may not be used on a variable-length
|
||
string object if that string might have a value of zero-length.
|
||
|
||
Since a single value of a Counter has (in general) no information
|
||
content (see section 7.1.6 and 7.1.10), objects defined using the
|
||
syntax, Counter32 or Counter64, must not be specified in an INDEX
|
||
|
||
clause. If an object defined using the BITS construct is used in an
|
||
INDEX clause, it is considered a variable-length string.
|
||
|
||
Instances identified by use of integer-valued objects should be
|
||
numbered starting from one (i.e., not from zero). The use of zero as
|
||
a value for an integer-valued index object should be avoided, except
|
||
in special cases.
|
||
|
||
Objects which are both specified in the INDEX clause of a conceptual
|
||
row and also columnar objects of the same conceptual row are termed
|
||
auxiliary objects. The MAX-ACCESS clause for auxiliary objects is
|
||
"not-accessible", except in the following circumstances:
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 28]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
(1) within a MIB module originally written to conform to SMIv1, and
|
||
later converted to conform to SMIv2; or
|
||
|
||
(2) a conceptual row must contain at least one columnar object which is
|
||
not an auxiliary object. In the event that all of a conceptual
|
||
row's columnar objects are also specified in its INDEX clause, then
|
||
one of them must be accessible, i.e., have a MAX-ACCESS clause of
|
||
"read-only". (Note that this situation does not arise for a
|
||
conceptual row allowing create access, since such a row will have a
|
||
status column which will not be an auxiliary object.)
|
||
|
||
Note that objects specified in a conceptual row's INDEX clause need
|
||
not be columnar objects of that conceptual row. In this situation,
|
||
the DESCRIPTION clause of the conceptual row must include a textual
|
||
explanation of how the objects which are included in the INDEX clause
|
||
but not columnar objects of that conceptual row, are used in uniquely
|
||
identifying instances of the conceptual row's columnar objects.
|
||
|
||
7.8. Mapping of the AUGMENTS clause
|
||
|
||
The AUGMENTS clause, which must not be present unless the object
|
||
corresponds to a conceptual row, is an alternative to the INDEX
|
||
clause. Every object corresponding to a conceptual row has either an
|
||
INDEX clause or an AUGMENTS clause.
|
||
|
||
If an object corresponding to a conceptual row has an INDEX clause,
|
||
that row is termed a base conceptual row; alternatively, if the
|
||
object has an AUGMENTS clause, the row is said to be a conceptual row
|
||
augmentation, where the AUGMENTS clause names the object
|
||
corresponding to the base conceptual row which is augmented by this
|
||
conceptual row augmentation. (Thus, a conceptual row augmentation
|
||
cannot itself be augmented.) Instances of subordinate columnar
|
||
objects of a conceptual row augmentation are identified according to
|
||
the INDEX clause of the base conceptual row corresponding to the
|
||
object named in the AUGMENTS clause. Further, instances of
|
||
subordinate columnar objects of a conceptual row augmentation exist
|
||
according to the same semantics as instances of subordinate columnar
|
||
objects of the base conceptual row being augmented. As such, note
|
||
that creation of a base conceptual row implies the correspondent
|
||
creation of any conceptual row augmentations.
|
||
|
||
For example, a MIB designer might wish to define additional columns
|
||
in an "enterprise-specific" MIB which logically extend a conceptual
|
||
row in a "standard" MIB. The "standard" MIB definition of the
|
||
conceptual row would include the INDEX clause and the "enterprise-
|
||
specific" MIB would contain the definition of a conceptual row using
|
||
the AUGMENTS clause. On the other hand, it would be incorrect to use
|
||
the AUGMENTS clause for the relationship between RFC 2233's ifTable
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 29]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
and the many media-specific MIBs which extend it for specific media
|
||
(e.g., the dot3Table in RFC 2358), since not all interfaces are of
|
||
the same media.
|
||
|
||
Note that a base conceptual row may be augmented by multiple
|
||
conceptual row augmentations.
|
||
|
||
7.8.1. Relation between INDEX and AUGMENTS clauses
|
||
|
||
When defining instance identification information for a conceptual
|
||
table:
|
||
|
||
(1) If there is a one-to-one correspondence between the conceptual rows
|
||
of this table and an existing table, then the AUGMENTS clause
|
||
should be used.
|
||
|
||
(2) Otherwise, if there is a sparse relationship between the conceptual
|
||
rows of this table and an existing table, then an INDEX clause
|
||
should be used which is identical to that in the existing table.
|
||
For example, the relationship between RFC 2233's ifTable and a
|
||
media-specific MIB which extends the ifTable for a specific media
|
||
(e.g., the dot3Table in RFC 2358), is a sparse relationship.
|
||
|
||
(3) Otherwise, if no existing objects have the required syntax and
|
||
semantics, then auxiliary objects should be defined within the
|
||
conceptual row for the new table, and those objects should be used
|
||
within the INDEX clause for the conceptual row.
|
||
|
||
7.9. Mapping of the DEFVAL clause
|
||
|
||
The DEFVAL clause, which need not be present, defines an acceptable
|
||
default value which may be used at the discretion of an agent when an
|
||
object instance is created. That is, the value is a "hint" to
|
||
implementors.
|
||
|
||
During conceptual row creation, if an instance of a columnar object
|
||
is not present as one of the operands in the correspondent management
|
||
protocol set operation, then the value of the DEFVAL clause, if
|
||
present, indicates an acceptable default value that an agent might
|
||
use (especially for a read-only object).
|
||
|
||
Note that with this definition of the DEFVAL clause, it is
|
||
appropriate to use it for any columnar object of a read-create table.
|
||
It is also permitted to use it for scalar objects dynamically created
|
||
by an agent, or for columnar objects of a read-write table
|
||
dynamically created by an agent.
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 30]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
The value of the DEFVAL clause must, of course, correspond to the
|
||
SYNTAX clause for the object. If the value is an OBJECT IDENTIFIER,
|
||
then it must be expressed as a single ASN.1 identifier, and not as a
|
||
collection of sub-identifiers.
|
||
|
||
Note that if an operand to the management protocol set operation is
|
||
an instance of a read-only object, then the error `notWritable' [6]
|
||
will be returned. As such, the DEFVAL clause can be used to provide
|
||
an acceptable default value that an agent might use.
|
||
|
||
By way of example, consider the following possible DEFVAL clauses:
|
||
|
||
ObjectSyntax DEFVAL clause
|
||
---------------- ------------
|
||
Integer32 DEFVAL { 1 }
|
||
-- same for Gauge32, TimeTicks, Unsigned32
|
||
INTEGER DEFVAL { valid } -- enumerated value
|
||
OCTET STRING DEFVAL { 'ffffffffffff'H }
|
||
DisplayString DEFVAL { "SNMP agent" }
|
||
IpAddress DEFVAL { 'c0210415'H } -- 192.33.4.21
|
||
OBJECT IDENTIFIER DEFVAL { sysDescr }
|
||
BITS DEFVAL { { primary, secondary } }
|
||
-- enumerated values that are set
|
||
BITS DEFVAL { { } }
|
||
-- no enumerated values are set
|
||
|
||
A binary string used in a DEFVAL clause for an OCTET STRING must be
|
||
either an integral multiple of eight or zero bits in length;
|
||
similarly, a hexadecimal string must be an even number of hexadecimal
|
||
digits. The value of a character string used in a DEFVAL clause must
|
||
not contain tab characters or line terminator characters.
|
||
|
||
Object types with SYNTAX of Counter32 and Counter64 may not have
|
||
DEFVAL clauses, since they do not have defined initial values.
|
||
However, it is recommended that they be initialized to zero.
|
||
|
||
7.10. Mapping of the OBJECT-TYPE value
|
||
|
||
The value of an invocation of the OBJECT-TYPE macro is the name of
|
||
the object, which is an OBJECT IDENTIFIER, an administratively
|
||
assigned name.
|
||
|
||
When an OBJECT IDENTIFIER is assigned to an object:
|
||
|
||
(1) If the object corresponds to a conceptual table, then only a single
|
||
assignment, that for a conceptual row, is present immediately
|
||
beneath that object. The administratively assigned name for the
|
||
conceptual row object is derived by appending a sub-identifier of
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 31]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
"1" to the administratively assigned name for the conceptual table.
|
||
|
||
(2) If the object corresponds to a conceptual row, then at least one
|
||
assignment, one for each column in the conceptual row, is present
|
||
beneath that object. The administratively assigned name for each
|
||
column is derived by appending a unique, positive sub-identifier to
|
||
the administratively assigned name for the conceptual row.
|
||
|
||
(3) Otherwise, no other OBJECT IDENTIFIERs which are subordinate to the
|
||
object may be assigned.
|
||
|
||
Note that the final sub-identifier of any administratively assigned
|
||
name for an object shall be positive. A zero-valued final sub-
|
||
identifier is reserved for future use.
|
||
|
||
7.11. Usage Example
|
||
|
||
Consider how one might define a conceptual table and its
|
||
subordinates. (This example uses the RowStatus textual convention
|
||
defined in [3].)
|
||
|
||
evalSlot OBJECT-TYPE
|
||
SYNTAX Integer32 (0..2147483647)
|
||
MAX-ACCESS read-only
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The index number of the first unassigned entry in the
|
||
evaluation table, or the value of zero indicating that
|
||
all entries are assigned.
|
||
|
||
A management station should create new entries in the
|
||
evaluation table using this algorithm: first, issue a
|
||
management protocol retrieval operation to determine the
|
||
value of evalSlot; and, second, issue a management
|
||
protocol set operation to create an instance of the
|
||
evalStatus object setting its value to createAndGo(4) or
|
||
createAndWait(5). If this latter operation succeeds,
|
||
then the management station may continue modifying the
|
||
instances corresponding to the newly created conceptual
|
||
row, without fear of collision with other management
|
||
stations."
|
||
::= { eval 1 }
|
||
|
||
evalTable OBJECT-TYPE
|
||
SYNTAX SEQUENCE OF EvalEntry
|
||
MAX-ACCESS not-accessible
|
||
STATUS current
|
||
DESCRIPTION
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 32]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
"The (conceptual) evaluation table."
|
||
::= { eval 2 }
|
||
|
||
evalEntry OBJECT-TYPE
|
||
SYNTAX EvalEntry
|
||
MAX-ACCESS not-accessible
|
||
STATUS current
|
||
DESCRIPTION
|
||
"An entry (conceptual row) in the evaluation table."
|
||
INDEX { evalIndex }
|
||
::= { evalTable 1 }
|
||
|
||
EvalEntry ::=
|
||
SEQUENCE {
|
||
evalIndex Integer32,
|
||
evalString DisplayString,
|
||
evalValue Integer32,
|
||
evalStatus RowStatus
|
||
}
|
||
|
||
evalIndex OBJECT-TYPE
|
||
SYNTAX Integer32 (1..2147483647)
|
||
MAX-ACCESS not-accessible
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The auxiliary variable used for identifying instances of
|
||
the columnar objects in the evaluation table."
|
||
::= { evalEntry 1 }
|
||
|
||
evalString OBJECT-TYPE
|
||
SYNTAX DisplayString
|
||
MAX-ACCESS read-create
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The string to evaluate."
|
||
::= { evalEntry 2 }
|
||
|
||
evalValue OBJECT-TYPE
|
||
SYNTAX Integer32
|
||
MAX-ACCESS read-only
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The value when evalString was last evaluated, or zero if
|
||
no such value is available."
|
||
DEFVAL { 0 }
|
||
::= { evalEntry 3 }
|
||
|
||
evalStatus OBJECT-TYPE
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 33]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
SYNTAX RowStatus
|
||
MAX-ACCESS read-create
|
||
STATUS current
|
||
DESCRIPTION
|
||
"The status column used for creating, modifying, and
|
||
deleting instances of the columnar objects in the
|
||
evaluation table."
|
||
DEFVAL { active }
|
||
::= { evalEntry 4 }
|
||
|
||
8. Mapping of the NOTIFICATION-TYPE macro
|
||
|
||
The NOTIFICATION-TYPE macro is used to define the information
|
||
contained within an unsolicited transmission of management
|
||
information (i.e., within either a SNMPv2-Trap-PDU or InformRequest-
|
||
PDU). It should be noted that the expansion of the NOTIFICATION-TYPE
|
||
macro is something which conceptually happens during implementation
|
||
and not during run-time.
|
||
|
||
8.1. Mapping of the OBJECTS clause
|
||
|
||
The OBJECTS clause, which need not be present, defines an ordered
|
||
sequence of MIB object types. One and only one object instance for
|
||
each occurrence of each object type must be present, and in the
|
||
specified order, in every instance of the notification. If the same
|
||
object type occurs multiple times in a notification's ordered
|
||
sequence, then an object instance is present for each of them. An
|
||
object type specified in this clause must not have an MAX-ACCESS
|
||
clause of "not-accessible". The notification's DESCRIPTION clause
|
||
must specify the information/meaning conveyed by each occurrence of
|
||
each object type in the sequence. The DESCRIPTION clause must also
|
||
specify which object instance is present for each object type in the
|
||
notification.
|
||
|
||
Note that an agent is allowed, at its own discretion, to append as
|
||
many additional objects as it considers useful to the end of the
|
||
notification (i.e., after the objects defined by the OBJECTS clause).
|
||
|
||
8.2. Mapping of the STATUS clause
|
||
|
||
The STATUS clause, which must be present, indicates whether this
|
||
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
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 34]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
interoperability with older/existing implementations.
|
||
|
||
8.3. Mapping of the DESCRIPTION clause
|
||
|
||
The DESCRIPTION clause, which must be present, contains a textual
|
||
definition of the notification which provides all semantic
|
||
definitions necessary for implementation, and should embody any
|
||
information which would otherwise be communicated in any ASN.1
|
||
commentary annotations associated with the notification. In
|
||
particular, the DESCRIPTION clause should document which instances of
|
||
the objects mentioned in the OBJECTS clause should be contained
|
||
within notifications of this type.
|
||
|
||
8.4. Mapping of the REFERENCE clause
|
||
|
||
The REFERENCE clause, which need not be present, contains a textual
|
||
cross-reference to some other document, either another information
|
||
module which defines a related assignment, or some other document
|
||
which provides additional information relevant to this definition.
|
||
|
||
8.5. Mapping of the NOTIFICATION-TYPE value
|
||
|
||
The value of an invocation of the NOTIFICATION-TYPE macro is the name
|
||
of the notification, which is an OBJECT IDENTIFIER, an
|
||
administratively assigned name. In order to achieve compatibility
|
||
with SNMPv1 traps, both when converting SMIv1 information modules
|
||
to/from this SMI, and in the procedures employed by multi-lingual
|
||
systems and proxy forwarding applications, the next to last sub-
|
||
identifier in the name of any newly-defined notification must have
|
||
the value zero.
|
||
|
||
Sections 4.2.6 and 4.2.7 of [6] describe how the NOTIFICATION-TYPE
|
||
macro is used to generate a SNMPv2-Trap-PDU or InformRequest-PDU,
|
||
respectively.
|
||
|
||
8.6. Usage Example
|
||
|
||
Consider how a configuration change notification might be described:
|
||
|
||
entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 }
|
||
entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 }
|
||
|
||
entConfigChange NOTIFICATION-TYPE
|
||
STATUS current
|
||
DESCRIPTION
|
||
"An entConfigChange trap is sent when the value of
|
||
entLastChangeTime changes. It can be utilized by an NMS to
|
||
trigger logical/physical entity table maintenance polls.
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 35]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
|
||
An agent must not generate more than one entConfigChange
|
||
'trap-event' in a five second period, where a 'trap-event'
|
||
is the transmission of a single trap PDU to a list of
|
||
trap destinations. If additional configuration changes
|
||
occur within the five second 'throttling' period, then
|
||
these trap-events should be suppressed by the agent. An
|
||
NMS should periodically check the value of
|
||
entLastChangeTime to detect any missed entConfigChange
|
||
trap-events, e.g. due to throttling or transmission loss."
|
||
::= { entityMIBTrapPrefix 1 }
|
||
|
||
According to this invocation, the notification authoritatively
|
||
identified as
|
||
|
||
{ entityMIBTrapPrefix 1 }
|
||
|
||
is used to report a particular type of configuration change.
|
||
|
||
9. Refined Syntax
|
||
|
||
Some macros have clauses which allows syntax to be refined,
|
||
specifically: the SYNTAX clause of the OBJECT-TYPE macro, and the
|
||
SYNTAX/WRITE-SYNTAX clauses of the MODULE-COMPLIANCE and AGENT-
|
||
CAPABILITIES macros [2]. However, not all refinements of syntax are
|
||
appropriate. In particular, the object's primitive or application
|
||
type must not be changed.
|
||
|
||
Further, the following restrictions apply:
|
||
|
||
Restrictions to Refinement of
|
||
object syntax range enumeration size
|
||
----------------- ----- ----------- ----
|
||
INTEGER (1) (2) -
|
||
Integer32 (1) - -
|
||
Unsigned32 (1) - -
|
||
OCTET STRING - - (3)
|
||
OBJECT IDENTIFIER - - -
|
||
BITS - (2) -
|
||
IpAddress - - -
|
||
Counter32 - - -
|
||
Counter64 - - -
|
||
Gauge32 (1) - -
|
||
TimeTicks - - -
|
||
|
||
where:
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 36]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
(1) the range of permitted values may be refined by raising the lower-
|
||
bounds, by reducing the upper-bounds, and/or by reducing the
|
||
alternative value/range choices;
|
||
|
||
(2) the enumeration of named-values may be refined by removing one or
|
||
more named-values (note that for BITS, a refinement may cause the
|
||
enumerations to no longer be contiguous); or,
|
||
|
||
(3) the size in octets of the value may be refined by raising the
|
||
lower-bounds, by reducing the upper-bounds, and/or by reducing the
|
||
alternative size choices.
|
||
|
||
No other types of refinements can be specified in the SYNTAX clause.
|
||
However, the DESCRIPTION clause is available to specify additional
|
||
restrictions which can not be expressed in the SYNTAX clause.
|
||
Further details on (and examples of) sub-typing are provided in
|
||
Appendix A.
|
||
|
||
10. Extending an Information Module
|
||
|
||
As experience is gained with an information module, it may be
|
||
desirable to revise that information module. However, changes are
|
||
not allowed if they have any potential to cause interoperability
|
||
problems "over the wire" between an implementation using an original
|
||
specification and an implementation using an updated
|
||
specification(s).
|
||
|
||
For any change, the invocation of the MODULE-IDENTITY macro must be
|
||
updated to include information about the revision: specifically,
|
||
updating the LAST-UPDATED clause, adding a pair of REVISION and
|
||
DESCRIPTION clauses (see section 5.5), and making any necessary
|
||
changes to existing clauses, including the ORGANIZATION and CONTACT-
|
||
INFO clauses.
|
||
|
||
Note that any definition contained in an information module is
|
||
available to be IMPORT-ed by any other information module, and is
|
||
referenced in an IMPORTS clause via the module name. Thus, a module
|
||
name should not be changed. Specifically, the module name (e.g.,
|
||
"FIZBIN-MIB" in the example of Section 5.7) should not be changed
|
||
when revising an information module (except to correct typographical
|
||
errors), and definitions should not be moved from one information
|
||
module to another.
|
||
|
||
Also note that obsolete definitions must not be removed from MIB
|
||
modules since their descriptors may still be referenced by other
|
||
information modules, and the OBJECT IDENTIFIERs used to name them
|
||
must never be re-assigned.
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 37]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
10.1. Object Assignments
|
||
|
||
If any non-editorial change is made to any clause of a object
|
||
assignment, then the OBJECT IDENTIFIER value associated with that
|
||
object assignment must also be changed, along with its associated
|
||
descriptor.
|
||
|
||
10.2. Object Definitions
|
||
|
||
An object definition may be revised in any of the following ways:
|
||
|
||
(1) A SYNTAX clause containing an enumerated INTEGER may have new
|
||
enumerations added or existing labels changed. Similarly, named
|
||
bits may be added or existing labels changed for the BITS
|
||
construct.
|
||
|
||
(2) The value of a SYNTAX clause may be replaced by a textual
|
||
convention, providing the textual convention is defined to use the
|
||
same primitive ASN.1 type, has the same set of values, and has
|
||
identical semantics.
|
||
|
||
(3) A STATUS clause value of "current" may be revised as "deprecated"
|
||
or "obsolete". Similarly, a STATUS clause value of "deprecated"
|
||
may be revised as "obsolete". When making such a change, the
|
||
DESCRIPTION clause should be updated to explain the rationale.
|
||
|
||
(4) A DEFVAL clause may be added or updated.
|
||
|
||
(5) A REFERENCE clause may be added or updated.
|
||
|
||
(6) A UNITS clause may be added.
|
||
|
||
(7) A conceptual row may be augmented by adding new columnar objects at
|
||
the end of the row, and making the corresponding update to the
|
||
SEQUENCE definition.
|
||
|
||
(8) Clarifications and additional information may be included in the
|
||
DESCRIPTION clause.
|
||
|
||
(9) Entirely new objects may be defined, named with previously
|
||
unassigned OBJECT IDENTIFIER values.
|
||
|
||
Otherwise, if the semantics of any previously defined object are
|
||
changed (i.e., if a non-editorial change is made to any clause other
|
||
than those specifically allowed above), then the OBJECT IDENTIFIER
|
||
value associated with that object must also be changed.
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 38]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
Note that changing the descriptor associated with an existing object
|
||
is considered a semantic change, as these strings may be used in an
|
||
IMPORTS statement.
|
||
|
||
10.3. Notification Definitions
|
||
|
||
A notification definition may be revised in any of the following
|
||
ways:
|
||
|
||
(1) A REFERENCE clause may be added or updated.
|
||
|
||
(2) A STATUS clause value of "current" may be revised as "deprecated"
|
||
or "obsolete". Similarly, a STATUS clause value of "deprecated"
|
||
may be revised as "obsolete". When making such a change, the
|
||
DESCRIPTION clause should be updated to explain the rationale.
|
||
|
||
(3) A DESCRIPTION clause may be clarified.
|
||
|
||
Otherwise, if the semantics of any previously defined notification
|
||
are changed (i.e., if a non-editorial change is made to any clause
|
||
other those specifically allowed above), then the OBJECT IDENTIFIER
|
||
value associated with that notification must also be changed.
|
||
|
||
Note that changing the descriptor associated with an existing
|
||
notification is considered a semantic change, as these strings may be
|
||
used in an IMPORTS statement.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 39]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
11. Appendix A: Detailed Sub-typing Rules
|
||
|
||
|
||
11.1. Syntax Rules
|
||
|
||
The syntax rules for sub-typing are given below. Note that while
|
||
this syntax is based on ASN.1, it includes some extensions beyond
|
||
what is allowed in ASN.1, and a number of ASN.1 constructs are not
|
||
allowed by this syntax.
|
||
|
||
<integerSubType>
|
||
::= <empty>
|
||
| "(" <range> ["|" <range>]... ")"
|
||
|
||
<octetStringSubType>
|
||
::= <empty>
|
||
| "(" "SIZE" "(" <range> ["|" <range>]... ")" ")"
|
||
|
||
<range>
|
||
::= <value>
|
||
| <value> ".." <value>
|
||
|
||
<value>
|
||
::= "-" <number>
|
||
| <number>
|
||
| <hexString>
|
||
| <binString>
|
||
|
||
where:
|
||
<empty> is the empty string
|
||
<number> is a non-negative integer
|
||
<hexString> is a hexadecimal string (e.g., '0F0F'H)
|
||
<binString> is a binary string (e.g, '1010'B)
|
||
|
||
<range> is further restricted as follows:
|
||
- any <value> used in a SIZE clause must be non-negative.
|
||
- when a pair of values is specified, the first value
|
||
must be less than the second value.
|
||
- when multiple ranges are specified, the ranges may
|
||
not overlap but may touch. For example, (1..4 | 4..9)
|
||
is invalid, and (1..4 | 5..9) is valid.
|
||
- the ranges must be a subset of the maximum range of the
|
||
base type.
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 40]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
11.2. Examples
|
||
|
||
Some examples of legal sub-typing:
|
||
|
||
Integer32 (-20..100)
|
||
Integer32 (0..100 | 300..500)
|
||
Integer32 (300..500 | 0..100)
|
||
Integer32 (0 | 2 | 4 | 6 | 8 | 10)
|
||
OCTET STRING (SIZE(0..100))
|
||
OCTET STRING (SIZE(0..100 | 300..500))
|
||
OCTET STRING (SIZE(0 | 2 | 4 | 6 | 8 | 10))
|
||
SYNTAX TimeInterval (0..100)
|
||
SYNTAX DisplayString (SIZE(0..32))
|
||
|
||
(Note the last two examples above are not valid in a TEXTUAL
|
||
CONVENTION, see [3].)
|
||
|
||
Some examples of illegal sub-typing:
|
||
|
||
Integer32 (150..100) -- first greater than second
|
||
Integer32 (0..100 | 50..500) -- ranges overlap
|
||
Integer32 (0 | 2 | 0 ) -- value duplicated
|
||
Integer32 (MIN..-1 | 1..MAX) -- MIN and MAX not allowed
|
||
Integer32 (SIZE (0..34)) -- must not use SIZE
|
||
OCTET STRING (0..100) -- must use SIZE
|
||
OCTET STRING (SIZE(-10..100)) -- negative SIZE
|
||
|
||
12. Security Considerations
|
||
|
||
This document defines a language with which to write and read
|
||
descriptions of management information. The language itself has no
|
||
security impact on the Internet.
|
||
|
||
|
||
|
||
13. Editors' Addresses
|
||
|
||
Keith McCloghrie
|
||
Cisco Systems, Inc.
|
||
170 West Tasman Drive
|
||
San Jose, CA 95134-1706
|
||
USA
|
||
Phone: +1 408 526 5260
|
||
EMail: kzm@cisco.com
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 41]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
David Perkins
|
||
SNMPinfo
|
||
3763 Benton Street
|
||
Santa Clara, CA 95051
|
||
USA
|
||
Phone: +1 408 221-8702
|
||
EMail: dperkins@snmpinfo.com
|
||
|
||
Juergen Schoenwaelder
|
||
TU Braunschweig
|
||
Bueltenweg 74/75
|
||
38106 Braunschweig
|
||
Germany
|
||
Phone: +49 531 391-3283
|
||
EMail: schoenw@ibr.cs.tu-bs.de
|
||
|
||
|
||
14. References
|
||
|
||
[1] Information processing systems - Open Systems Interconnection -
|
||
Specification of Abstract Syntax Notation One (ASN.1),
|
||
International Organization for Standardization. International
|
||
Standard 8824, (December, 1987).
|
||
|
||
[2] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.
|
||
and S. Waldbusser, "Conformance Statements for SMIv2", STD 58,
|
||
RFC 2580, April 1999.
|
||
|
||
[3] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.
|
||
and S. Waldbusser, "Textual Conventions for SMIv2", STD 58,
|
||
RFC 2579, April 1999.
|
||
|
||
[4] Information processing systems - Open Systems Interconnection -
|
||
Specification of Basic Encoding Rules for Abstract Syntax Notation
|
||
One (ASN.1), International Organization for Standardization.
|
||
International Standard 8825, (December, 1987).
|
||
|
||
[5] The SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and
|
||
S. Waldbusser, "Management Information Base for Version 2 of the
|
||
Simple Network Management Protocol (SNMPv2)", RFC 1907, January
|
||
1996.
|
||
|
||
[6] The SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and
|
||
S. Waldbusser, "Protocol Operations for Version 2 of the Simple
|
||
Network Management Protocol (SNMPv2)", RFC 1905, January 1996.
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 42]
|
||
|
||
|
||
|
||
|
||
|
||
RFC 2578 SMIv2 April 1999
|
||
|
||
|
||
15. Full Copyright Statement
|
||
|
||
Copyright (C) The Internet Society (1999). All Rights Reserved.
|
||
|
||
This document and translations of it may be copied and furnished to
|
||
others, and derivative works that comment on or otherwise explain it
|
||
or assist in its implementation may be prepared, copied, published
|
||
and distributed, in whole or in part, without restriction of any
|
||
kind, provided that the above copyright notice and this paragraph are
|
||
included on all such copies and derivative works. However, this
|
||
document itself may not be modified in any way, such as by removing
|
||
the copyright notice or references to the Internet Society or other
|
||
Internet organizations, except as needed for the purpose of
|
||
developing Internet standards in which case the procedures for
|
||
copyrights defined in the Internet Standards process must be
|
||
followed, or as required to translate it into languages other than
|
||
English.
|
||
|
||
The limited permissions granted above are perpetual and will not be
|
||
revoked by the Internet Society or its successors or assigns.
|
||
|
||
This document and the information contained herein is provided on an
|
||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||
TASK FORCE DISCLAIMS 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."
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
McCloghrie, et al. Standards Track [Page 43]
|
||
|
||
|
||
|
||
|
||
|