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 i