view Side-By-Side changes
Network Working Group Editors of this version:Internet DraftRequest for Comments: 2578 K. McCloghrie STD: 58 Cisco Systems Obsoletes: 1902 D. PerkinsDesktalk Systems &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 Services30 JanuaryApril 1999 Structure of Management Information Version 2 (SMIv2)draft-ops-smiv2-smi-01.txtStatus of this Memo This documentisspecifies anInternet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents ofInternet standards track protocol for the InternetEngineering Task Force (IETF), its areas,community, andits working groups. Note that other groups may also distribute working documents as Internet-Drafts. Internet-Drafts are draft documents valid for a maximum of six monthsrequests discussion andmay be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material orsuggestions for improvements. Please refer tocite them other than as ``work in progress.'' To viewthe currentstatusedition ofany Internet-Draft, please checkthe``1id-abstracts.txt'' listing contained in an Internet-Drafts Shadow Directory, see http://www.ietf.org/shadow.html."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.Expires July 1999Table 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]DraftRFC 2578 SMIv2JanuaryApril 19991. Introduction Management information is viewed as a collection3.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 ofmanaged objects, residing in a virtual information store, termedtheManagement Information Base (MIB). CollectionsMODULE-IDENTITY macro ........................17 5.1 Mapping ofrelated objects are defined in MIB modules. These modules are written using an adapted subsetthe LAST-UPDATED clause ........................17 5.2 Mapping ofOSI's Abstract Syntax Notation One, ASN.1 (1988) [1]. It isthepurposeORGANIZATION clause ........................17 5.3 Mapping ofthis document,theStructureCONTACT-INFO clause ........................18 5.4 Mapping ofManagement Information (SMI), to define that adapted subset, and to assign a setthe DESCRIPTION clause .........................18 5.5 Mapping ofassociated 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 conveythesemanticsREVISION clause ............................18 5.5.1 Mapping ofan information module. (2) Object definitions are used when describing managed objects. An ASN.1 macro, OBJECT-TYPE, is used to concisely conveythesyntax and semanticsDESCRIPTION sub-clause ...................18 5.6 Mapping ofa managed object. (3) Notification definitions are used when describing unsolicited transmissionsthe MODULE-IDENTITY value ......................18 5.7 Usage Example .............................................18 6 Mapping ofmanagement information. An ASN.1 macro, NOTIFICATION-TYPE, is used to concisely conveythesyntax and semanticsOBJECT-IDENTITY macro ........................19 6.1 Mapping ofa notification. 1.1. A Note on Terminology ForthepurposeSTATUS clause ..............................19 6.2 Mapping ofexposition,theoriginal StructureDESCRIPTION clause .........................20 6.3 Mapping ofManagement Information, as described in RFCs 1155 (STD 16), 1212 (STD 16), and RFC 1215, is termedtheSMI version 1 (SMIv1). The current versionREFERENCE clause ...........................20 6.4 Mapping of theStructureOBJECT-IDENTITY value ......................20 6.5 Usage Example .............................................20 7 Mapping ofManagement Information is termed SMI version 2 (SMIv2). Expires July 1999 [Page 2] Draft SMIv2 January 1999 2. Definitions SNMPv2-SMI DEFINITIONS ::= BEGIN --thepath toOBJECT-TYPE macro ............................20 7.1 Mapping of theroot org OBJECT IDENTIFIER ::= { iso 3 } 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 } privateSYNTAX clause ..............................21 7.1.1 Integer32 and INTEGER ...................................21 7.1.2 OCTET STRING ............................................21 7.1.3 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 } Expires July 1999.......................................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 [Page3] Draft2] RFC 2578 SMIv2JanuaryApril 1999-- Extended UTCTime, to allow dates with four-digit years -- (Note that this definition8 Mapping ofExtUTCTime is not to be IMPORTed -- by MIB modules.) ExtUTCTime ::= OCTET STRING(SIZE(11 | 13)) -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ -- where: YY - last two digitsthe NOTIFICATION-TYPE macro ......................34 8.1 Mapping ofyear (only years -- between 1900-1999) -- YYYY - last four digitsthe OBJECTS clause .............................34 8.2 Mapping of theyear (any year) -- MM - month (01 through 12) -- DD - daySTATUS clause ..............................34 8.3 Mapping ofmonth (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 --thefour digit year format. Years 1900-1999 may useDESCRIPTION clause .........................35 8.4 Mapping of the-- two or four digit format. -- definitions forREFERENCE 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 informationmodules 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 stringis viewed asdefined in section 3.1.1 Text ::= value(IA5String) Expires July 1999 [Page 4] Draft SMIv2 January 1999 END Expires July 1999 [Page 5] Draft SMIv2 January 1999 OBJECT-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty --acharacter string as definedcollection of managed objects, residing insection 3.1.1 Text ::= value(IA5String) END Expires July 1999 [Page 6] Draft SMIv2 January 1999 -- namesa virtual information store, termed the Management Information Base (MIB). Collections of related objects-- (Note that these definitions of ObjectName and NotificationName --arenot to be IMPORTed bydefined in MIBmodules.) ObjectName ::= OBJECT IDENTIFIER NotificationName ::= OBJECT IDENTIFIER -- syntaxmodules. These modules are written using an adapted subset ofobjects -- the "base types" defined here are: -- 3 built-inOSI's Abstract Syntax Notation One, ASN.1types: INTEGER, OCTET STRING, OBJECT IDENTIFIER -- 8 application-defined types: Integer32, IpAddress, Counter32, -- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64 ObjectSyntax ::= CHOICE { simple SimpleSyntax, -- note(1988) [1]. It is the purpose of this document, the Structure of Management Information (SMI), to define thatSEQUENCEs for conceptual tablesadapted subset, and-- rowsto assign a set of associated administrative values. The SMI is divided into three parts: module definitions, object definitions, and, notification definitions. (1) Module definitions arenot mentioned here... application-wide ApplicationSyntax } -- built-inused when describing information modules. An ASN.1types SimpleSyntax ::= CHOICE { -- INTEGERs with a more restrictive range -- may also bemacro, MODULE-IDENTITY, is usedinteger-value -- includes Integer32 INTEGER (-2147483648..2147483647), -- OCTET STRINGs withto 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 amore restrictive size -- may also bemanaged object. (3) Notification definitions are usedstring-value OCTET STRING (SIZE (0..65535)), objectID-value OBJECT IDENTIFIER Expires July 1999when 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 [Page7] Draft3] RFC 2578 SMIv2JanuaryApril 1999} -- indistinguishable from INTEGER, but never needs more than -- 32-bits for a two's complement representation Integer321.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 ::=INTEGER (-2147483648..2147483647)BEGIN --application-wide types ApplicationSyntaxthe path to the root org OBJECT IDENTIFIER ::=CHOICE{ipAddress-value IpAddress, counter-value Counter32, timeticks-value TimeTicks, arbitrary-value Opaque, big-counter-value Counter64, unsigned-integer-value -- includes Gauge32 Unsigned32iso 3 } --in network-byte order -- (this is a tagged type for historical reasons) IpAddress ::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) -- this wraps Counter32"iso" = 1 dod OBJECT IDENTIFIER ::=[APPLICATION 1] IMPLICIT INTEGER (0..4294967295) Expires July 1999 [Page 8] Draft SMIv2 January 1999 -- this doesn't wrap Gauge32{ org 6 } internet OBJECT IDENTIFIER ::=[APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- an unsigned 32-bit quantity -- indistinguishable from Gauge32 Unsigned32{ dod 1 } directory OBJECT IDENTIFIER ::=[APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- hundredths of seconds since an epoch TimeTicks{ internet 1 } mgmt OBJECT IDENTIFIER ::=[APPLICATION 3] IMPLICIT INTEGER (0..4294967295) -- for backward-compatibility only Opaque{ internet 2 } mib-2 OBJECT IDENTIFIER ::=[APPLICATION 4] IMPLICIT OCTET STRING -- for counters that wrap in less than one hour with only 32 bits Counter64{ mgmt 1 } transmission OBJECT IDENTIFIER ::=[APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615) Expires July 1999 [Page 9] Draft SMIv2 January 1999 -- definition for objects OBJECT-TYPE MACRO{ mib-2 10 } experimental OBJECT IDENTIFIER ::=BEGIN TYPE NOTATION{ internet 3 } private OBJECT IDENTIFIER ::="SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access "STATUS" Status "DESCRIPTION" Text ReferPart IndexPart DefValPart VALUE NOTATION{ internet 4 } enterprises OBJECT IDENTIFIER ::=value(VALUE ObjectName) Syntax{ private 1 } security OBJECT IDENTIFIER ::= { internet 5 } snmpV2 OBJECT IDENTIFIER ::= { internet 6 } --Must be one of the following: -- a base type (or its refinement), -- a textual convention (or its refinement), ortransport domains snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 } --a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBitstransport proxies snmpProxys OBJECT IDENTIFIER ::=NamedBit | NamedBits "," NamedBit NamedBit{ snmpV2 2 } -- module identities snmpModules OBJECT IDENTIFIER ::=identifier "(" number ")"{ snmpV2 3 } --numberExtended UTCTime, to allow dates with four-digit years -- (Note that this definition of ExtUTCTime isnonnegative UnitsPart ::= "UNITS" Text | empty Access ::= "not-accessible" | "accessible-for-notify" | "read-only" | "read-write" | "read-create" Statusnot to be IMPORTed -- by MIB modules.) ExtUTCTime ::="current" | "deprecated"OCTET STRING(SIZE(11 |"obsolete" Expires July 199913)) -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ McCloghrie, et al. Standards Track [Page10] Draft4] RFC 2578 SMIv2JanuaryApril 1999ReferPart ::= "REFERENCE" Text | empty IndexPart ::= "INDEX" "{" IndexTypes "}" | "AUGMENTS" "{" Entry "}" | empty IndexTypes ::= IndexType | IndexTypes "," IndexType IndexType ::= "IMPLIED" Index | Index Index ::=--use the SYNTAX valuewhere: YY - last two digits oftheyear (only years --correspondent OBJECT-TYPE invocation value(ObjectName) Entry ::=between 1900-1999) --use the INDEX valueYYYY - last four digits of the year (any year) --correspondent OBJECT-TYPE invocation value(ObjectName) DefValPart ::= "DEFVAL" "{" Defvalue "}" | empty Defvalue ::=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 mustbe valid foruse -- the four digit year format. Years 1900-1999 may use thetype specified in--SYNTAX clause of same OBJECT-TYPE macro value(ObjectSyntax) | "{" BitsValue "}" BitsValuetwo or four digit format. -- definitions for information modules MODULE-IDENTITY MACRO ::=BitNamesBEGIN TYPE NOTATION ::= "LAST-UPDATED" value(Update ExtUTCTime) "ORGANIZATION" Text "CONTACT-INFO" Text "DESCRIPTION" Text RevisionPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) RevisionPart ::= Revisions | emptyBitNamesRevisions ::=BitNameRevision |BitNames "," BitName BitNameRevisions Revision Revision ::=identifier"REVISION" value(Update ExtUTCTime) "DESCRIPTION" Text -- a character string as defined in section 3.1.1 Text ::= value(IA5String) ENDExpires July 1999 [Page 11] Draft SMIv2 January 1999 -- definitions for notifications NOTIFICATION-TYPEOBJECT-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::=ObjectsPart"STATUS" Status "DESCRIPTION" Text McCloghrie, et al. Standards Track [Page 5] RFC 2578 SMIv2 April 1999 ReferPart VALUE NOTATION ::= value(VALUENotificationName) ObjectsPart ::= "OBJECTS" "{" Objects "}" | empty Objects ::= Object | Objects "," Object Object ::= value(ObjectName)OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in section 3.1.1 Text ::= value(IA5String) END --definitionsnames ofadministrative identifiers zeroDotZero OBJECT-IDENTITY STATUS current DESCRIPTION "A value used for null identifiers." ::= { 0 0 } END Expires July 1999 [Page 12] Draft SMIv2 January 1999 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 subsetobjects -- (Note that these definitions ofASN.1 (1988)ObjectName and NotificationName -- are not todefine 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)be IMPORTed by MIBmodules, which contain definitions of inter-related managed objects, make usemodules.) ObjectName ::= OBJECT IDENTIFIER NotificationName ::= OBJECT IDENTIFIER -- syntax of objects -- theOBJECT-TYPE"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, andNOTIFICATION-TYPE macros; (2) compliance statementsCounter64 ObjectSyntax ::= CHOICE { simple SimpleSyntax, -- note that SEQUENCEs forMIB modules, which make use of the MODULE-COMPLIANCEconceptual tables andOBJECT-GROUP macros [2]; and, (3) capability statements for agent implementations which make use of the AGENT-CAPABILITIES macros [2]. This classification scheme does-- rows are notimply 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 andmentioned 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 acapability statement. Of course,more restrictive range -- may also be used integer-value -- includes Integer32 INTEGER (-2147483648..2147483647), -- OCTET STRINGs with a"standard" information modulemore restrictive size -- maynot contain capability statements. The constructs of ASN.1 allowed in SMIv2 information modules include: the IMPORTS clause, value definitions foralso be used string-value OCTET STRING (SIZE (0..65535)), objectID-value OBJECTIDENTIFIERs, type definitionsIDENTIFIER } -- indistinguishable from INTEGER, but never needs more than -- 32-bits forSEQUENCEs (with restrictions), ASN.1 type assignments of the restricted ASN.1a two's complement representation Integer32 ::= INTEGER (-2147483648..2147483647) -- application-wide typesallowed 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 definedApplicationSyntax ::= 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 SMIv2information modules. SMIv1 macros must not be usedApril 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 SMIv2information modules. The names of all standard information modules mustApril 1999 IndexPart DefValPart VALUE NOTATION ::= value(VALUE ObjectName) Syntax ::= -- Must beunique (but different versionsone of thesame information module should have the same name). Developers of enterprise information modules are encouraged to choose names for their information modules that will havefollowing: -- alow probability of colliding with standardbase type (or its refinement), -- a textual convention (or its refinement), orother enterprise information modules. An information module may not use the ASN.1 construct of placing an object-- a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBits ::= NamedBit | NamedBits "," NamedBit NamedBit ::= identifiervalue between the module name and the "DEFINITIONS" keyword. For the purposes of this specification, an ASN.1 Expires July 1999"(" 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 [Page13] Draft9] RFC 2578 SMIv2JanuaryApril 1999module name begins with an upper-case letter and continues with zero or more letters, digits, or hyphens, except that a hyphen can not beIndex ::= -- use thelast character, nor can there be two consecutive hyphens. All information modules start with exactly one invocationSYNTAX value of theMODULE-IDENTITY macro, which provides contact information as well as revision history to distinguish between versions-- correspondent OBJECT-TYPE invocation value(ObjectName) Entry ::= -- use the INDEX value of thesame information module. This-- correspondent OBJECT-TYPE invocation value(ObjectName) DefValPart ::= "DEFVAL" "{" Defvalue "}" | empty Defvalue ::= -- mustappear 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].) 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 shallbeunique and mnemonic, and shall not exceed 64 characters in length. (However, descriptors longer than 32 characters are not recommended.) This promotes a common languagevalid forhumans to use when discussingtheinformation module and also facilitates simple table mappings for user-interfaces. The set of descriptors definedtype specified inall "standard" information modules shall be unique. Finally, by convention, if the descriptor refers to an object with a-- SYNTAX clausevalueofeither Counter32 or Counter64, then the descriptor used for the object should denote plurality. Expires July 1999 [Page 14] Draft SMIv2 January 1999 3.1.1. Textual Values and Strings Some clauses in asame OBJECT-TYPE macroinvocation may takevalue(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 -- atextual value (e.g., the DESCRIPTION clause). Other clauses take binary or hexadecimal strings (in any position where a non-negative number is allowed). Acharacter stringis preceded and followed by the quote character ("), and consistsas 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 anarbitrary number (possibly zero) of: - any 7-bit displayable ASCII characters except quote ("), - tab characters, - spaces, and - line terminator characters (\n or \r\n).ASN.1 module defining information relating to network management. ThevalueSMI describes how to use an adapted subset ofa character stringASN.1 (1988) to define an information module. Further, additional restrictions are placed on "standard" information modules. It isinterpreted as ASCII. A binary string consistsstrongly recommended that "enterprise-specific" information modules also adhere to these restrictions. Typically, there are three kinds ofa number (possibly zero)information modules: (1) MIB modules, which contain definitions of inter-related managed objects, make use ofzeros and ones preceded by a single (') and followed by either the pair ('B) or ('b), wherethenumber is a multiple of eight. A hexadecimal string consists of an even number (possibly zero) of hexadecimal digits, preceded by a single (')OBJECT-TYPE andfollowed 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 typesNOTIFICATION-TYPE macros; (2) compliance statements for MIB modules, which make use ofstrings. 3.2. IMPORTing Symbols To reference an external object, the IMPORTS statement must be used to identify boththedescriptorMODULE-COMPLIANCE andthe module inOBJECT-GROUP macros [2]; and, (3) capability statements for agent implementations which make use of thedescriptor 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.,AGENT-CAPABILITIES macros [2]. McCloghrie, et al. Standards Track [Page 11] RFC 2578 SMIv2 April 1999 This classification scheme does not imply adescriptor), there is the possibilityrigid taxonomy. For example, a "standard" information module will normally include definitions ofcollision. As such, if differentmanaged objectswith the same descriptor are IMPORTed, then this ambiguity is resolved by prefixing the descriptor with the name of theand a compliance statement. Similarly, an "enterprise-specific" information module might include definitions of managed objects and adot ("."), i.e., "module.descriptor" (All descriptors must be unique within any information module.) Expires July 1999 [Page 15] Draft SMIv2 January 1999capability statement. Of course,this notation can be used to refer to objects even when there is no collision when IMPORTing symbols. Finally, if anya "standard" information module may not contain capability statements. The constructs oftheASN.1named 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 usedallowed inanSMIv2 informationmodule, then they must be imported usingmodules include: the IMPORTSstatement. However,clause, value definitions for OBJECT IDENTIFIERs, type definitions for SEQUENCEs (with restrictions), ASN.1 type assignments of thefollowing must not be included in an IMPORTS statement: - namedrestricted ASN.1 typesdefined byallowed in SMIv2, and instances of ASN.1itself, specifically: INTEGER, OCTET STRING, OBJECT IDENTIFIER, SEQUENCE, SEQUENCE OF type, - the BITS construct. 3.3. Exporting Symbols Themacros defined in this document and its companion documents [2, 3]. Additional ASN.1EXPORTS statement ismacros must notallowedbe defined in SMIv2 information modules.All items definedSMIv1 macros must not be used inanSMIv2 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 areautomatically exported. 3.4. ASN.1 Comments ASN.1 comments can be included in anencouraged to choose names for their informationmodule. However, it is recommendedmodules thatall substantive descriptions be placed within an appropriate DESCRIPTION clause. ASN.1 comments commence withwill have apairlow probability ofadjacent hyphens and endcolliding withthe next pair of adjacent hyphensstandard oratother enterprise information modules. An information module may not use theendASN.1 construct of placing an object identifier value between theline, whichever occurs first. Comments ended by a pair of hyphens havemodule name and theeffect"DEFINITIONS" keyword. For the purposes ofa single space character. 3.5. OBJECT IDENTIFIER values An OBJECT IDENTIFIER value isthis specification, anordered list of non-negative numbers. ForASN.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 theSMIv2, each number inlast character, nor can there be two consecutive hyphens. All information modules start with exactly one invocation of thelist is referred toMODULE-IDENTITY macro, which provides contact information asa sub- identifier, there are at most 128 sub-identifiers in a value, and each sub-identifier has a maximum valuewell as revision history to distinguish between versions of2^32-1 (4294967295 decimal). Expires July 1999 [Page 16] Draft SMIv2 January 1999 All OBJECT IDENTIFIER values have at least two sub-identifiers,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 thevalue ofmacro being invoked, and <clauses> and <value> depend on thefirst sub-identifier is onedefinition of thefollowing well-known names: Value Name 0 ccitt 1 iso 2 joint-iso-ccittmacro. (Note that thisSMI does not recognize "new" well-known names, e.g., asdefinition of a descriptor applies to all macros definedwhen the CCITT became the ITU.) 3.6. OBJECT IDENTIFIER usage OBJECT IDENTIFIERs are usedininformation modulesthis memo and intwo ways: (1) registration:[2].) McCloghrie, et al. Standards Track [Page 12] RFC 2578 SMIv2 April 1999 For thedefinitionpurposes of this specification, an ASN.1 identifier consists of one or more letters or digits, and its initial character must be aparticular 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 valuelower-case letter. Note that hyphens are not allowedto change, the OBJECT IDENTIFIER can not be usedby this specification (except forany other registration, anduse by information modules converted from SMIv1 which did allow hyphens). For all descriptors appearing in an information module, the descriptorcan notshall bechanged nor associated with any other registration. The following macros resultunique and mnemonic, and shall not exceed 64 characters in length. (However, descriptors longer than 32 characters are not recommended.) This promotes aregistration: OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-GROUP, OBJECT-IDENTITY, NOTIFICATION-GROUP, MODULE-COMPLIANCE, AGENT-CAPABILITIES. (2) assignment: a descriptor can be assignedcommon language for humans toa particular OBJECT IDENTIFIER value. For this usage, the semantics associated withuse when discussing theOBJECT IDENTIFIER value is not allowed to change,information module andaalso 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 descriptorassignedrefers to an object with aparticular OBJECT IDENTIFIERSYNTAX clause valuecannot subsequently be assigned to another. However, multiple descriptors can be assigned toof either Counter32 or Counter64, then thesame OBJECT IDENTIFIER value. Such assignments are specifieddescriptor 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., thefollowing manner: 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,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 thefollowingquote 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 isnot: dinoHost OBJECT IDENTIFIER ::= { flintStones bedrock 2 } Expires July 1999 [Page 17] Draft SMIv2 January 1999interpreted as ASCII. Adescriptorbinary 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 isallowed to be associated with botharegistrationmultiple 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 anassignment, providing both are associated withexternal object, thesame OBJECT IDENTIFIER value and semantics. 3.7. Reserved Keywords The following are reserved keywords whichIMPORTS statement mustnotbe usedas 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 Expires July 1999 [Page 18] Draft SMIv2 January 1999 4. Naming Hierarchy The root ofto identify both thesubtree administered bydescriptor and theInternet Assigned Numbers Authority (IANA) formodule in which theInternet is: internet OBJECT IDENTIFIER ::= { iso 3 6 1 } That is,descriptor is defined, where theInternet subtreemodule 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 ofOBJECT IDENTIFIERs startscollision. As such, if different objects with theprefix: 1.3.6.1. Several branches underneath this subtreesame descriptor areused for network management: mgmt OBJECT IDENTIFIER ::= { internet 2 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } However,IMPORTed, then this ambiguity is resolved by prefixing theSMI does not prohibitdescriptor with thedefinition of objects in other portionsname of theobject 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 aninformation moduleproduced by a working group becomesand a"standard"dot ("."), i.e., "module.descriptor" (All descriptors must be unique within any informationmodule, 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 ismodule.) Of course, this notation can be used toidentifyrefer to objectsdefined unilaterally. The enterprises(1) subtree beneath privateeven when there isused, among other things, to permit providers of networking subsystems to register models of their products. Expires July 1999 [Page 19] Draft SMIv2 January 1999 5. Mappingno collision when IMPORTing symbols. Finally, if any of theMODULE-IDENTITY macro The MODULE-IDENTITY macro is used to provide contactASN.1 named types andrevision history for each information module. It must appear exactly oncemacros defined ineverythis 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 informationmodule. It shouldmodule, then they must benoted thatimported using theexpansion ofIMPORTS statement. However, theMODULE-IDENTITY macro is something which conceptually happens during implementation andfollowing must notduring run-time. Note that referencebe included in an IMPORTSclause orstatement: - 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 inclauses ofSMIv2macros toinformation modules. All items defined in an information moduleis NOT through the use of the 'descriptor' of a MODULE-IDENTITY macro; rather,are automatically exported. 3.4. ASN.1 Comments ASN.1 comments can be included in an informationmodulemodule. However, it isreferenced 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 timerecommended thatthis information module was last edited. 5.2. Mapping of the ORGANIZATION clause The ORGANIZATION clause, which mustall substantive descriptions bepresent, containsplaced within an appropriate DESCRIPTION clause. McCloghrie, et al. Standards Track [Page 14] RFC 2578 SMIv2 April 1999 ASN.1 comments commence with atextual description of the organization under whose auspices this information module was developed. 5.3. Mappingpair ofthe CONTACT-INFO clause The CONTACT-INFO clause, which must be present, contains the name, postal address, telephone number,adjacent hyphens andelectronic mail addressend with the next pair of adjacent hyphens or at theperson to whom technical queries concerning this information module should be sent. 5.4. Mappingend of theDESCRIPTION clause The DESCRIPTION clause, which must be present, containsline, whichever occurs first. Comments ended by ahigh-level textual descriptionpair of hyphens have thecontents of this information module. 5.5. Mappingeffect ofthe REVISION clause The REVISION clause, which need not be present,a single space character. 3.5. OBJECT IDENTIFIER values An OBJECT IDENTIFIER value isrepeatedly used to describean ordered list of non-negative numbers. For therevisions (includingSMIv2, each number in theinitial version) madelist is referred tothis Expires July 1999 [Page 20] Draft SMIv2 January 1999 information module, in reverse chronological order (i.e.,as a sub-identifier, there are at mostrecent first). Each instance of this clause contains the date128 sub-identifiers in a value, andtime of the revision. 5.5.1. Mapping of the DESCRIPTION sub-clause The DESCRIPTION sub-clause, which must be present foreachREVISION clause, containssub-identifier has ahigh-level textual description of the revision identified in that REVISION clause. 5.6. Mappingmaximum value of 2^32-1 (4294967295 decimal). All OBJECT IDENTIFIER values have at least two sub-identifiers, where theMODULE-IDENTITYvalueThe value of an invocationof theMODULE-IDENTITY macrofirst sub-identifier isan OBJECT IDENTIFIER. As such,one of the following well- known names: Value Name 0 ccitt 1 iso 2 joint-iso-ccitt (Note that thisvalue may be authoritatively usedSMI does not recognize "new" well-known names, e.g., as defined whenspecifying anthe CCITT became the ITU.) 3.6. OBJECT IDENTIFIERvalue to refer to theusage OBJECT IDENTIFIERs are used in informationmodule containing the invocation. Note that it is a common practice to usemodules in two ways: (1) registration: thevaluedefinition ofthe MODULE- IDENTITY macroa particular item is registered as asubtree under which otherparticular OBJECT IDENTIFIERvalues assigned withinvalue, and associated with a particular descriptor. After such a registration, themodulesemantics thereby associated with the value aredefined. However, it is legal (and occasionally necessary) fornot allowed to change, theotherOBJECT IDENTIFIERvalues assigned withincan not be used for any other registration, and themodule todescriptor can not beunrelatedchanged 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 valueof the MODULE-IDENTITY macro. Expires July 1999 [Page 21] Draft SMIv2 January 1999 5.7. Usage Example Consider howis not allowed to change, and askeletal MIB module mightdescriptor assigned to a particular OBJECT IDENTIFIER value cannot subsequently beconstructed: e.g., FIZBIN-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, experimental 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 implementingassigned to another. However, multiple descriptors can be assigned to thexxxx protocol." REVISION "9505241811Z" DESCRIPTION "The latest version of this MIB module." REVISION "9210070433Z" DESCRIPTION "The initial version of this MIB module, publishedsame OBJECT IDENTIFIER value. Such assignments are specified in the following manner: McCloghrie, et al. Standards Track [Page 15] RFCyyyy."2578 SMIv2 April 1999 mib OBJECT IDENTIFIER ::= { mgmt 1 } --contact IANA for actual numberfrom RFC1156 mib-2 OBJECT IDENTIFIER ::= {experimental xxmgmt 1 }END Expires July 1999 [Page 22] Draft SMIv2 January 1999 6. Mapping of the OBJECT-IDENTITY macro The OBJECT-IDENTITY macro is used to define information about an-- from RFC1213 fredRouter OBJECT IDENTIFIERassignment. All administrative::= { flintStones 1 1 } barneySwitch OBJECT IDENTIFIERassignments 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::= { flintStones bedrock(2) 1 } Note while theexpansion ofabove examples are legal, theOBJECT-IDENTITY macrofollowing issomething 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. The value "current" means that the definition is current and valid. The value "obsolete" means the definitionnot: dinoHost OBJECT IDENTIFIER ::= { flintStones bedrock 2 } A descriptor isobsolete and should not be implemented and/or canallowed to beremoved if previously implemented. While the value "deprecated" also indicatesassociated with both a registration and anobsolete definition, it permits new/continued implementation in order to foster interoperabilityassignment, providing both are associated witholder/existing implementations. 6.2. Mapping oftheDESCRIPTION clausesame OBJECT IDENTIFIER value and semantics. 3.7. Reserved Keywords TheDESCRIPTION clause,following are reserved keywords which mustbe present, contains a textual description of the object assignment. 6.3. Mapping of the REFERENCE clause The REFERENCE clause, which neednot bepresent, contains a textual cross-reference to some other document, either another information module which defines a related assignment,used as descriptors orsome 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. Expires July 1999 [Page 23] Draft SMIv2 January 1999 6.5. Usage Example Consider how an OBJECTmodule 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 IDENTIFIERassignment might be made: e.g., fizbin69IMPLICIT 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-IDENTITYSTATUS current DESCRIPTION "The authoritative identityOBJECT-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 theFizbin 69 chipset."subtree administered by the Internet Assigned Numbers Authority (IANA) for the Internet is: internet OBJECT IDENTIFIER ::= {fizbinChipSetsiso 3 6 1 }Expires July 1999That 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 [Page24] Draft16] RFC 2578 SMIv2JanuaryApril 19997. Mappingmgmt 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 theOBJECT-TYPE macroobject tree. TheOBJECT-TYPE macromgmt(2) subtree is used todefine a type of managed object. It should be noted that the expansion of the OBJECT-TYPE macroidentify "standard" objects. The experimental(3) subtree issomething which conceptually happens during implementation and not during run- time. For leaf objects which are not columnarused to identify objects(i.e., not contained within a conceptual table), instancesbeing designed by working groups of theobject are identifiedIETF. If an information module produced byappendingasub-identifier of zero toworking group becomes a "standard" information module, then at thenamevery beginning ofthat object. Otherwise,its entry onto theINDEX clause ofInternet standards track, theconceptual row object superior to a columnar object defines instance identification information. 7.1. Mapping ofobjects are moved under theSYNTAX clausemgmt(2) subtree. TheSYNTAX clause, which must be present, defines the abstract data structure correspondingprivate(4) subtree is used tothat object.identify objects defined unilaterally. Thedata structure must be oneenterprises(1) subtree beneath private is used, among other things, to permit providers of networking subsystems to register models of their products. 5. Mapping of thefollowing: a base type, the BITS construct, or a textual convention. (SEQUENCE OFMODULE-IDENTITY macro The MODULE-IDENTITY macro is used to provide contact andSEQUENCE are also possiblerevision history forconceptual tables, see section 7.1.12). The base types are those definedeach information module. It must appear exactly once in every information module. It should be noted that theObjectSyntax CHOICE. A textual conventionexpansion of the MODULE-IDENTITY macro isa newly-defined type defined as a sub-typesomething which conceptually happens during implementation and not during run-time. Note that reference in an IMPORTS clause or in clauses ofa base type [3]. An extended subsetSMIv2 macros to an information module is NOT through the use of thefull capabilities'descriptor' ofASN.1 (1988) sub-typinga MODULE-IDENTITY macro; rather, an information module isallowed, as appropriate toreferenced through specifying its module name. 5.1. Mapping of theunderlying ASN.1 type. Any such restriction on size, range or enumerations specified in thisLAST-UPDATED clauserepresents the maximal level of supportThe LAST-UPDATED clause, whichmakes "protocol sense". Restrictions on sub-typing are specified in detail in Section 9must be present, contains the date andAppendix A oftime that thismemo. The semanticsinformation module was last edited. 5.2. Mapping ofObjectSyntax are now described. 7.1.1. Integer32 and INTEGERthe ORGANIZATION clause TheInteger32 type represents integer-valuedORGANIZATION clause, which must be present, contains a textual description of the organization under whose auspices this informationbetween -2^31 and 2^31-1 inclusive (-2147483648 to 2147483647 decimal). This type is indistinguishable frommodule was developed. McCloghrie, et al. Standards Track [Page 17] RFC 2578 SMIv2 April 1999 5.3. Mapping of theINTEGER type. BothCONTACT-INFO clause The CONTACT-INFO clause, which must be present, contains theINTEGERname, postal address, telephone number, andInteger32 types may be sub-typedelectronic mail address of the person to whom technical queries concerning this information module should bemore constrained thansent. 5.4. Mapping of theInteger32 type.DESCRIPTION clause TheINTEGER type (but notDESCRIPTION clause, which must be present, contains a high-level textual description of theInteger32 type) may alsocontents of this information module. 5.5. Mapping of the REVISION clause The REVISION clause, which need not be present, is repeatedly used torepresent integer-valueddescribe the revisions (including the initial version) made to this informationas named-number enumerations. Inmodule, in reverse chronological order (i.e., most recent first). Each instance of thiscase, only those named-numbers so enumerated mayclause contains the date and time of the revision. 5.5.1. Mapping of the DESCRIPTION sub-clause The DESCRIPTION sub-clause, which must be presentasfor each REVISION clause, contains avalue. Note that although it is recommendedhigh-level textual description of the revision identified in thatenumerated values Expires July 1999 [Page 25] Draft SMIv2 January 1999 start at 1 and be numbered contiguously, any validREVISION clause. 5.6. Mapping of the MODULE-IDENTITY valuefor Integer32 is allowed for an enumeratedThe valueand, further, enumerated values needn't be contiguously assigned. Finally, a label for a named-number enumeration must consistofone or more letters or digits, up to a maximuman invocation of64 characters, andtheinitial character mustMODULE-IDENTITY macro is an OBJECT IDENTIFIER. As such, this value may bea lower-case letter. (However, labels longer than 32 characters are not recommended.)authoritatively used when specifying an OBJECT IDENTIFIER value to refer to the information module containing the invocation. Note thathyphens are not allowed by this specification (except forit is a common practice to useby information modules converted from SMIv1 which did allow hyphens). 7.1.2. OCTET STRING The OCTET STRING type represents arbitrary binary or textual data. AlthoughtheSMI-specified size limitation for this type is 65535 octets, MIB designers should realize that there may be implementation and interoperability limitations for sizes in excessvalue of255 octets. 7.1.3.the MODULE- IDENTITY macro as a subtree under which other OBJECT IDENTIFIERThevalues assigned within the module are defined. However, it is legal (and occasionally necessary) for the other OBJECT IDENTIFIERtype represents administrativelyvalues assignednames. Any instance of this type may have at most 128 sub-identifiers. Further, each sub-identifier must not exceedwithin the module to be unrelated to the OBJECT IDENTIFIER value2^32-1 (4294967295 decimal). 7.1.4. The BITS construct The BITS construct represents an enumerationofnamed bits. This collection is assigned non-negative, contiguous (but see below) values, starting at zero. Only those named-bits so enumerated may be present inthe MODULE-IDENTITY macro. 5.7. Usage Example Consider how avalue. (Thus, enumerations mustskeletal MIB module might beassigned to consecutive bits; however, see Section 9constructed: 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 forrefinementsentities implementing the xxxx protocol." REVISION "9505241811Z" DESCRIPTION "The latest version ofan object withthissyntax.) As partMIB module." REVISION "9210070433Z" DESCRIPTION "The initial version ofupdating an informationthis 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 anobjectOBJECT IDENTIFIER assignment. All administrative OBJECT IDENTIFIER assignments which define a type identification value (see AutonomousType, a textual convention definedusingin [3]) should be defined via theBITS construct, new enumerations canOBJECT-IDENTITY macro. It should beadded or existing enumerations can have new labels assigned to them. After an enumerationnoted that the expansion of the OBJECT-IDENTITY macro isadded, it might not be possible to distinguish between ansomething which conceptually happens during implementation and not during run-time. 6.1. Mapping of theupdated object forSTATUS 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 thenew enumerationdefinition isnot asserted,current andan implementation ofvalid. The value "obsolete" means theobject prior to the addition. Depending ondefinition is obsolete and should not be implemented and/or can be removed if previously implemented. While thecircumstances, suchvalue "deprecated" also indicates anambiguity could either be desirable or couldobsolete 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 beundesirable.present, contains a textual description of the object assignment. 6.3. Mapping of the REFERENCE clause ThemeansREFERENCE clause, which need not be present, contains a textual cross-reference toavoid suchsome 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 anambiguityinvocation of the OBJECT-IDENTITY macro isdependent onan 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 theencodingFizbin 69 chipset." ::= { fizbinChipSets 1 } 7. Mapping ofvalues onthewire; however, one Expires July 1999 [Page 26] Draft SMIv2 January 1999 possibilityOBJECT-TYPE macro The OBJECT-TYPE macro is used to definenew enumerations starting ata type of managed object. It should be noted that thenext multipleexpansion ofeight bits. (Of course, this can also result intheenumerations no longer being contiguous.) Although thereOBJECT-TYPE macro isno SMI-specified limitation on the numbersomething 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 ofenumerations (and therefore onthelength of a value), except as may be imposedobject are identified by appending a sub-identifier of zero to thelimit on the lengthname ofan OCTET STRING, MIB designers should realizethatthere may be implementation and interoperability limitations for sizes in excess of 128 bits. Finally, a label for a named-number enumeration must consistobject. Otherwise, the INDEX clause ofone or more letters or digits, upthe conceptual row object superior to amaximumcolumnar object defines instance identification information. McCloghrie, et al. Standards Track [Page 20] RFC 2578 SMIv2 April 1999 7.1. Mapping of64 characters, andtheinitial characterSYNTAX clause The SYNTAX clause, which must bea lower-case letter. (However, labels longer than 32 characters are not recommended.) Notepresent, defines the abstract data structure corresponding to thathyphens are not allowed by this specification. 7.1.5. IpAddressobject. TheIpAddress type represents a 32-bit internet address. It is represented as an OCTET STRING of length 4, in network byte-order. Note that the IpAddress type is a tagged type for historical reasons. Network addresses shoulddata structure must berepresented using an invocationone of theTEXTUAL-CONVENTION macro [3]. 7.1.6. Counter32 The Counter32 type representsfollowing: anon-negative integer which monotonically increases until it reachesbase type, the BITS construct, or amaximum value of 2^32-1 (4294967295 decimal), when it wraps aroundtextual convention. (SEQUENCE OF andstarts increasing again from zero. Counters have noSEQUENCE are also possible for conceptual tables, see section 7.1.12). The base types are those defined"initial" value, and thus,in the ObjectSyntax CHOICE. A textual convention is asingle valuenewly-defined type defined as a sub-type of aCounter has (in general) no information content. Discontinuities in the monotonically increasing value normally occur at re-initializationbase type [3]. An extended subset of themanagement system, and at other times as specified in the descriptionfull capabilities ofan object-type using thisASN.1type. 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(1988) sub- typing is allowed, as appropriateSYNTAX clause,toindicatethelast discontinuity. Examples of appropriate SYNTAX clause include: TimeStamp (a textual convention defined in [3]), DateAndTime (another textual convention from [3])underlying ASN.1 type. Any such restriction on size, range orTimeTicks. Expires July 1999 [Page 27] Draft SMIv2 January 1999 The value of the MAX-ACCESS clause for objects with a SYNTAXenumerations specified in this clausevaluerepresents the maximal level ofCounter32 is either "read-only" or "accessible-for-notify".support which makes "protocol sense". Restrictions on sub-typing are specified in detail in Section 9 and Appendix ADEFVAL clause is not allowed for objects with a SYNTAX clause valueofCounter32. 7.1.7. Gauge32this memo. TheGauge32semantics of ObjectSyntax are now described. 7.1.1. Integer32 and INTEGER The Integer32 type representsa non-negative integer, whichinteger-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 mayincrease or decrease, but shall never exceed a maximum value, nor fall below a minimum value. The maximum value can notbegreatersub-typed to be more constrained than2^32-1 (4294967295 decimal), andtheminimum value canInteger32 type. The INTEGER type (but not the Integer32 type) may also besmaller than 0. The value of a Gauge32 has its maximum value whenever theused to represent integer-valued informationbeing modeledas named-number enumerations. In this case, only those named-numbers so enumerated may be present as a value. Note that although it isgreater than or equal to its maximum value,recommended that enumerated values start at 1 andhas its minimumbe numbered contiguously, any valid valuewhenever the information being modeledfor Integer32 issmaller thanallowed 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 orequalmore letters or digits, up toits minimum value. If the information being modeled subsequently decreases below (increases above) thea maximum(minimum) value, the Gauge32 also decreases (increases). (Note that despite of the useof 64 characters, and theterm "latched" in the original definition of this type, it doesinitial character must be a lower-case letter. (However, labels longer than 32 characters are notbecome "stuck" at its maximum or minimum value.) 7.1.8. TimeTicksrecommended.) 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 TheTimeTicksOCTET STRING type representsa non-negative integer which representsarbitrary binary or textual data. Although thetime, modulo 2^32 (4294967296 decimal), in hundredths of a second between two epochs. When objects are defined which useSMI-specified size limitation for thisASN.1 type, the description of the object identifies both of the reference epochs. For example, [3] defines the TimeStamp textual convention whichtype isbased on the TimeTicks type. With a TimeStamp, the first reference epoch is defined as the time when sysUpTime [5] was zero,65535 octets, MIB designers should realize that there may be implementation andthe second reference epoch is defined as the current valueinteroperability limitations for sizes in excess ofsysUpTime.255 octets. McCloghrie, et al. Standards Track [Page 21] RFC 2578 SMIv2 April 1999 7.1.3. OBJECT IDENTIFIER TheTimeTicksOBJECT IDENTIFIER type represents administratively assigned names. Any instance of this type may have at most 128 sub- identifiers. Further, each sub-identifier must notbe sub-typed. 7.1.9. Opaqueexceed the value 2^32-1 (4294967295 decimal). 7.1.4. TheOpaque typeBITS construct The BITS construct represents an enumeration of named bits. This collection isprovided solely for backward-compatibility, and shall notassigned non-negative, contiguous (but see below) values, starting at zero. Only those named-bits so enumerated may beusedpresent in a value. (Thus, enumerations must be assigned to consecutive bits; however, see Section 9 fornewly-definedrefinements of an objecttypes. 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 Expires July 1999 [Page 28] Draft SMIv2 January 1999 stringwith this syntax.) As part ofoctets. This, in turn, is encoded asupdating anOCTET STRING, in effect "double-wrapping"information module, for an object defined using theoriginal ASN.1 value. Note that a conforming implementation need onlyBITS construct, new enumerations can beableadded or existing enumerations can have new labels assigned toaccept and recognize opaquely-encoded data. It needthem. After an enumeration is added, it might not beablepossible tounwrapdistinguish between an implementation of thedataupdated object for which the new enumeration is not asserted, andthen interpret its contents. A requirementan implementation of the object prior to the addition. Depending on"standard" MIB modulesthe circumstances, such an ambiguity could either be desirable or could be undesirable. The means to avoid such an ambiguity isthatdependent 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 noobjectlonger being contiguous.) Although there is no SMI-specified limitation on the number of enumerations (and therefore on the length of a value), except as mayhavebe 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, aSYNTAX clause valuelabel for a named-number enumeration must consist ofOpaque. 7.1.10. Counter64one 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 TheCounter64IpAddress 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 of2^64-1 (184467440737095516152^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 atre-initializationre- 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 clauseare: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 ofCounter64Counter32 is either "read-only" or "accessible-for-notify". Arequirement 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. ADEFVAL clause is not allowed for objects with a SYNTAX clause value ofCounter64. 7.1.11. Unsigned32Counter32. 7.1.7. Gauge32 TheUnsigned32Gauge32 type representsinteger-valued information between 0 and 2^32-1 inclusive (0 to 4294967295 decimal). Expires July 1999 [Page 29] Draft SMIv2 January 1999 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 rowa non-negative integer, which maycontain oneincrease ormore scalar objects, termed columnar objects. This conceptualization is formalized by using the OBJECT-TYPE macro to define both an object which corresponds todecrease, but shall never exceed atablemaximum value, nor fall below a minimum value. The maximum value can not be greater than 2^32-1 (4294967295 decimal), andan object which corresponds tothe minimum value can not be smaller than 0. The value of arow in that table. A conceptual tableGauge32 hasSYNTAX ofits maximum value whenever theform: SEQUENCE OF <EntryType> where <EntryType> refersinformation being modeled is greater than or equal tothe SEQUENCE type ofitssubordinate conceptual row. A conceptual rowmaximum value, and hasSYNTAX ofits minimum value whenever theform: <EntryType> where <EntryType>information being modeled isa SEQUENCE type defined as follows: <EntryType> ::= SEQUENCE { <type1>, ... , <typeN> } where there is one <type> for each subordinate object, and each <type> is ofsmaller than or equal to its minimum value. If theform: <descriptor> <syntax> where <descriptor> isinformation being modeled subsequently decreases below (increases above) thedescriptor naming a subordinate object, and <syntax> hasmaximum (minimum) value, thevalue of that subordinate object's SYNTAX clause, exceptGauge32 also decreases (increases). (Note thatboth sub-typing information and the named values for enumerated integers ordespite of thenamed bits foruse of theBITS construct, are omitted from <syntax>. Further, a <type> is always present for every subordinate object. (The ASN.1 DEFAULT and OPTIONAL clauses are disallowedterm "latched" in theSEQUENCE definition.) The MAX-ACCESS clause for conceptual tables and rows is "not-accessible". 7.1.12.1. Creation and Deletionoriginal definition ofConceptual Rows For newly-defined conceptual rowsthis 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 whichallowrepresents thecreationtime, modulo 2^32 (4294967296 decimal), in hundredths ofnew object instances and/ora second between two epochs. When objects are defined which use this ASN.1 type, thedeletiondescription ofexisting object instances, there should be one columnarthe objectwith a SYNTAX clause valueidentifies both ofRowStatus (a Expires July 1999 [Page 30] Draft SMIv2 January 1999the reference epochs. For example, [3] defines the TimeStamp textual conventiondefined in [3]) and a MAX-ACCESS clause value of read-create. By convention, thiswhich istermedbased on thestatus column forTimeTicks type. With a TimeStamp, theconceptual row. 7.2. Mapping offirst reference epoch is defined as theUNITS clause This UNITS clause, which needtime when sysUpTime [5] was zero, and the second reference epoch is defined as the current value of sysUpTime. The TimeTicks type may not bepresent, containssub-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 atextual definitionstring of octets. This, in turn, is encoded as an OCTET STRING, in effect "double-wrapping" theunits associated withoriginal ASN.1 value. Note thatobject. 7.3. Mapping ofa conforming implementation need only be able to accept and recognize opaquely-encoded data. It need not be able to unwrap theMAX-ACCESSdata 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 TheMAX-ACCESS clause,Counter64 type represents a non-negative integer whichmust be present, defines whethermonotonically increases until itmakes "protocol sense" to read, write and/or create an instancereaches 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 theobject, or to include itsmonotonically increasing value normally occur at re- initialization of the management system, and at other times as specified ina notification. This isthemaximal leveldescription ofaccessan object-type using this ASN.1 type. If such other times can occur, for example, theobject. (This maximal level of access is independentcreation ofany 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" indicatesan objectwhich 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 noinstance at times othercolumnarthan re-initialization, then a corresponding objectofshould be defined, with an appropriate SYNTAX clause, to indicate thesame conceptual row may have a maximal access of "read-write". (Note that "read-create" is a superset of "read-write".) 7.4. Mappinglast discontinuity. Examples ofthe STATUSappropriate SYNTAX McCloghrie, et al. Standards Track [Page 24] RFC 2578 SMIv2 April 1999 clauseThe STATUS clause, which must be present, indicates whether this definition is currentare: TimeStamp (a textual convention defined in [3]), DateAndTime (another textual convention from [3]) orhistoric.TimeTicks. The value"current" means thatof thedefinition is current and valid. TheMAX-ACCESS clause for objects with a SYNTAX clause value"obsolete" means the definitionof Counter64 isobsolete and should not be implemented and/or caneither "read-only" or "accessible-for-notify". A requirement on "standard" MIB modules is that the Counter64 type may beremovedused only ifpreviously implemented. Whilethevalue "deprecated" also indicates an obsolete definition, it permits new/continued implementationinformation being modeled would wrap inorder to foster interoperability with Expires July 1999 [Page 31] Draft SMIv2 January 1999 older/existing implementations. 7.5. Mapping ofless than one hour if theDESCRIPTIONCounter32 type was used instead. A DEFVAL clauseThe DESCRIPTION clause, which must be present, contains a textual definition of that object which provides all semantic definitions necessaryis not allowed forimplementation, and should embody any information which would otherwise be communicated in any ASN.1 commentary annotations associatedobjects withthe object. 7.6. Mapping of the REFERENCEa SYNTAX clause value of Counter64. 7.1.11. Unsigned32 TheREFERENCE 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 additionalUnsigned32 type represents integer-valued informationrelevantbetween 0 and 2^32-1 inclusive (0 tothis definition. 7.7. Mapping of the INDEX clause The INDEX clause, which must be present if that object corresponds4294967295 decimal). 7.1.12. Conceptual Tables Management operations apply exclusively toa conceptual row (unless an AUGMENTS clausescalar objects. However, it ispresent instead), and must be absent otherwise, defines instance identification informationsometimes convenient forthe columnar objects subordinatedevelopers of management applications tothat object. The instance identification information inimpose anINDEX clause must specify object(s) such that value(s)imaginary, tabular structure on an ordered collection ofthose object(s) will unambiguously distinguish a conceptual row. The objects can be columnarobjectsfromwithin thesame and/or anotherMIB. Each such conceptualtable, but must not betable contains zero or more rows, and each row may contain one or more scalar objects, termed columnar objects.Multiple occurrences ofThis conceptualization is formalized by using thesame object inOBJECT-TYPE macro to define both an object which corresponds to asingle INDEX clause is strongly discouraged. The syntax of the objects in the INDEX clause indicate howtable and an object which corresponds toform the instance-identifier: (1) integer-valued (i.e., having INTEGER as its underlying primitive type):asingle sub-identifier taking the integer value (this works only for non-negative integers); (2) string-valued, fixed-length strings (or variable-length preceded byrow in that table. A conceptual table has SYNTAX of theIMPLIED keyword): `n' sub-identifiers,form: SEQUENCE OF <EntryType> where`n' is<EntryType> refers to thelengthSEQUENCE type ofthe string (each octetits subordinate conceptual row. A conceptual row has SYNTAX of thestringform: <EntryType> where <EntryType> isencoded inaseparate sub-identifier); Expires July 1999 [Page 32] Draft SMIv2 January 1999 (3) string-valued, variable-length strings (not preceded by the IMPLIED keyword): `n+1' sub-identifiers,SEQUENCE type defined as follows: <EntryType> ::= SEQUENCE { <type1>, ... , <typeN> } where`n' is the length of the string (the first sub-identifierthere is`n' itself, following this,one <type> for eachoctet of the stringsubordinate object, and each <type> isencoded in a separate sub-identifier); (4) object identifier-valued (when preceded byof theIMPLIED keyword): `n' sub-identifiers,form: <descriptor> <syntax> where`n'<descriptor> is thenumber of sub-identifiers indescriptor naming a subordinate object, and <syntax> has the value(each sub-identifierof 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 thevalue is copied into a separate sub-identifier); (5) object identifier-valued (when not preceded by the IMPLIED keyword): `n+1' sub-identifiers, where `n' isnamed values for enumerated integers or thenumber of sub- identifiers innamed bits for thevalue (the first sub-identifierBITS construct, are omitted from <syntax>. Further, a <type> is`n' itself, following this, each sub-identifieralways present for every subordinate object. (The ASN.1 DEFAULT and OPTIONAL clauses are disallowed in thevalueSEQUENCE definition.) The MAX-ACCESS clause for conceptual tables and rows iscopied); (6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d notation. Note that"not-accessible". 7.1.12.1. Creation and Deletion of Conceptual Rows For newly-defined conceptual rows which allow theIMPLIED keyword can only be present for an object having a variable-length syntax (e.g., variable-length strings orcreation of new objectidentifier-valued objects), Further, the IMPLIED keyword can only be associated withinstances and/or thelastdeletion of existing objectin the INDEX clause. Finally, the IMPLIED keyword may notinstances, there should beused on a variable-length stringone columnar objectif that string might havewith a SYNTAX clause value ofzero-length. SinceRowStatus (a textual convention defined in [3]) and asingleMAX-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 aCounter has (in general) no information content (see section 7.1.6 and 7.1.10), objects defined usingtextual definition of thesyntax, Counter32 or Counter64,units associated with that object. 7.3. Mapping of the MAX-ACCESS clause The MAX-ACCESS clause, which mustnotbespecified in an INDEX clause. Ifpresent, defines whether it makes "protocol sense" to read, write and/or create anobject defined usinginstance of theBITS construct is usedobject, or to include its value inan INDEX clause, it is consideredavariable-length string. Instances identified by usenotification. This is the maximal level ofinteger-valued objects should be numbered starting from one (i.e., not from zero). The useaccess for the object. (This maximal level ofzero as aaccess is independent of any administrative authorization policy.) The valuefor"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 aninteger-valued indexobjectshould be avoided, except in special cases. Objectswhich is accessible only via a notification (e.g., snmpTrapOID [5]). These values areboth specifiedordered, from least to greatest: "not-accessible", "accessible-for-notify", "read-only", "read-write", "read-create". If any columnar object inthe INDEX clause ofa conceptual rowand alsohas "read-create" as its maximal level of access, then no other columnarobjectsobject of the same conceptual roware termed auxiliary objects. The MAX-ACCESS clause for auxiliary objectsmay have a maximal access of "read-write". (Note that "read-create" is"not-accessible", except in the following circumstances: (1) withinaMIB module originally written to conform to SMIv1, and later converted to conform to SMIv2; or Expires July 1999superset of "read-write".) McCloghrie, et al. Standards Track [Page33] Draft26] RFC 2578 SMIv2JanuaryApril 1999(2) a conceptual row must contain at least one columnar object which is not an auxiliary object. In the event that all7.4. Mapping ofa conceptual row's columnar objects are also specified in its INDEXthe STATUS clause The STATUS clause,then one of themwhich must beaccessible, i.e., have a MAX-ACCESS clause of "read-only". (Note thatpresent, indicates whether thissituation does not arise for a conceptual row allowing create access, since such a row will have a status column which willdefinition 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 anauxiliary object.) Note that objects specifiedobsolete definition, it permits new/continued implementation ina conceptual row's INDEX clause need not be columnar objectsorder to foster interoperability with older/existing implementations. 7.5. Mapping ofthat conceptual row. In this situation,the DESCRIPTION clauseof the conceptual rowThe DESCRIPTION clause, which mustincludebe present, contains a textualexplanation of how the objects which are included in the INDEX clause but not columnar objectsdefinition of thatconceptual row, are usedobject which provides all semantic definitions necessary for implementation, and should embody any information which would otherwise be communicated inuniquely identifying instances ofany ASN.1 commentary annotations associated with theconceptual row's columnar objects. 7.8.object. 7.6. Mapping of theAUGMENTSREFERENCE clause TheAUGMENTSREFERENCE clause, whichmustneed not bepresent unless the object correspondspresent, contains a textual cross-reference to some other document, either another information module which defines aconceptual row, is an alternativerelated assignment, or some other document which provides additional information relevant to this definition. 7.7. Mapping of the INDEXclause. Every object corresponding to a conceptual row has either an INDEXclauseor an AUGMENTS clause. If anThe INDEX clause, which must be present if that objectcorrespondingcorresponds to a conceptual rowhas(unless anINDEX clause, that rowAUGMENTS clause istermed a base conceptual row; alternatively, if the object has an AUGMENTS clause, the row is said topresent instead), and must bea conceptual row augmentation, where the AUGMENTS clause names the object corresponding toabsent otherwise, defines instance identification information for thebase conceptual row which is augmented by this conceptual row augmentation. (Thus, a conceptual row augmentation cannot itself be augmented.) Instances of subordinatecolumnar objectsof a conceptual row augmentation are identified accordingsubordinate tothethat object. The instance identification information in an INDEX clause must specify object(s) such that value(s) ofthe base conceptual row corresponding to the object named in the AUGMENTS clause. Further, instances of subordinate columnar objects ofthose object(s) will unambiguously distinguish a conceptualrow augmentation exist according to the same semantics as instances of subordinaterow. The objects can be columnar objectsoffrom thebasesame and/or another conceptualrow being augmented. As such, note that creationtable, but must not be scalar objects. Multiple occurrences ofa base conceptual row impliesthecorrespondent 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 rowsame object in a"standard" MIB.single INDEX clause is strongly discouraged. The"standard" MIB definitionsyntax of theconceptual row would includeobjects in the INDEX clauseand the "enterprise-specific" MIB would containindicate how to form thedefinition ofinstance-identifier: (1) integer-valued (i.e., having INTEGER as its underlying primitive type): aconceptual row using the AUGMENTS clause. On the other hand, it would be incorrect to usesingle sub-identifier taking theAUGMENTS clauseinteger value (this works only forthe relationship between RFC 2233's ifTable and the many media-specific Expires July 1999non-negative integers); McCloghrie, et al. Standards Track [Page34] Draft27] RFC 2578 SMIv2JanuaryApril 1999MIBs which extend it for specific media (e.g.,(2) string-valued, fixed-length strings (or variable-length preceded by thedot3Table in RFC 2358), since not all interfaces areIMPLIED keyword): `n' sub-identifiers, where `n' is the length of thesame media. Note thatstring (each octet of the string is encoded in abase conceptual row may be augmentedseparate sub-identifier); (3) string-valued, variable-length strings (not preceded bymultiple conceptual row augmentations. 7.8.1. Relation between INDEX and AUGMENTS clauses When defining instance identification information for a conceptual table: (1) If therethe IMPLIED keyword): `n+1' sub-identifiers, where `n' isa one-to-one correspondence betweentheconceptual rowslength ofthis table and an existing table, thentheAUGMENTS clause should be used. (2) Otherwise, if therestring (the first sub-identifier isa sparse relationship between the conceptual rows`n' itself, following this, each octet ofthis table and an existing table, then an INDEX clause should be used whichthe string isidentical to thatencoded inthe existing table. For example, the relationship between RFC 2233's ifTable andamedia-specific MIB which extendsseparate sub-identifier); (4) object identifier-valued (when preceded by theifTable for a specific media (e.g.,IMPLIED keyword): `n' sub-identifiers, where `n' is thedot3Tablenumber of sub-identifiers inRFC 2358),the value (each sub-identifier of the value is copied into asparse relationship. (3) Otherwise, if no existing objects haveseparate sub-identifier); (5) object identifier-valued (when not preceded by therequired syntax and semantics, then auxiliary objects should be defined withinIMPLIED keyword): `n+1' sub-identifiers, where `n' is theconceptual row for the new table, and those objects should be used within the INDEX clause for the conceptual row. 7.9. Mappingnumber of sub- identifiers in theDEFVAL clause The DEFVAL clause, which need not be present, defines an acceptable defaultvaluewhich may be used at the discretion of an agent when an object instance(the first sub-identifier iscreated. That is,`n' itself, following this, each sub-identifier in the value isa "hint" to implementors. During conceptual row creation, ifcopied); (6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d notation. Note that the IMPLIED keyword can only be present for aninstance ofobject having acolumnarvariable-length syntax (e.g., variable-length strings or objectis not present as one ofidentifier-valued objects), Further, theoperands inIMPLIED keyword can only be associated with thecorrespondent management protocol set operation, thenlast object in thevalue ofINDEX clause. Finally, theDEFVAL clause,IMPLIED keyword may not be used on a variable-length string object ifpresent, indicates an acceptable default valuethatan agentstring mightuse (especially forhave aread-only object). Note that with this definitionvalue 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 theDEFVALsyntax, 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 isappropriate to use it for any columnar object ofconsidered aread-create table. It is also permitted tovariable-length string. Instances identified by useit for scalar objects dynamically created by an agent, Expires July 1999 [Page 35] Draft SMIv2 January 1999 or for columnarof integer-valued objects should be numbered starting from one (i.e., not from zero). The use of zero as aread-write table dynamically created by an agent. Thevalueoffor an integer-valued index object should be avoided, except in special cases. Objects which are both specified in theDEFVALINDEX clausemust,ofcourse, correspond toa conceptual row and also columnar objects of theSYNTAXsame conceptual row are termed auxiliary objects. The MAX-ACCESS clause for auxiliary objects is "not-accessible", except in theobject. If the valuefollowing 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 anOBJECT IDENTIFIER,auxiliary object. In the event that all of a conceptual row's columnar objects are also specified in its INDEX clause, thenitone of them must beexpressed as a single ASN.1 identifier, and not asaccessible, i.e., have acollectionMAX-ACCESS clause ofsub-identifiers. Note"read-only". (Note thatif an operand to the management protocol set operation is an instance ofthis situation does not arise for aread-only object, then the error `notWritable' [6]conceptual row allowing create access, since such a row will have a status column which will not bereturned. As such, the DEFVALan auxiliary object.) Note that objects specified in a conceptual row's INDEX clausecanneed not beused to provide an acceptable default valuecolumnar objects of thatan agent might use. By wayconceptual row. In this situation, the DESCRIPTION clause ofexample, considerthefollowing 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 STRINGconceptual row mustbe either an integral multiple of eight or zero bits in length; similarly,include ahexadecimal string must be an even number of hexadecimal digits. The valuetextual explanation ofa character string usedhow the objects which are included ina DEFVALthe INDEX clausemustbut notcontain tab characters or line terminator characters. Object types with SYNTAXcolumnar objects ofCounter32 and Counter64 may not have DEFVAL clauses, since they do not have defined initial values. However, it is recommendedthatthey be initialized to zero. 7.10. Mapping of the OBJECT-TYPE value The value of an invocationconceptual row, are used in uniquely identifying instances of theOBJECT-TYPE macro is the nameconceptual row's columnar objects. 7.8. Mapping of theobject,AUGMENTS clause The AUGMENTS clause, whichis an OBJECT IDENTIFIER, an administratively assigned name. Expires July 1999 [Page 36] Draft SMIv2 January 1999 When an OBJECT IDENTIFIER is assigned to an object: (1) Ifmust not be present unless the object corresponds to a conceptualtable, then only a single assignment, that for a conceptualrow, ispresent immediately beneath that object. The administratively assigned name foran 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 isderived by appendingtermed asub-identifier of "1" to the administratively assigned name for thebase conceptualtable. (2) Ifrow; alternatively, if the objectcorrespondshas an AUGMENTS clause, the row is said to be a conceptualrow, then at least one assignment, one for each column inrow augmentation, where the AUGMENTS clause names the object corresponding to the base conceptualrow, is present beneath that object. The administratively assigned name for each columnrow which isderivedaugmented byappendingthis conceptual row augmentation. (Thus, aunique, positive sub-identifierconceptual row augmentation cannot itself be augmented.) Instances of subordinate columnar objects of a conceptual row augmentation are identified according to theadministratively assigned name forINDEX clause of the base conceptualrow. (3) Otherwise, no other OBJECT IDENTIFIERs which are subordinaterow corresponding to the objectmay be assigned. Note thatnamed in thefinal sub-identifierAUGMENTS clause. Further, instances of subordinate columnar objects ofany administratively assigned name for an object shall be positive. A zero-valued final sub-identifier is reserved for future use. Expires July 1999 [Page 37] Draft SMIv2 January 1999 7.11. Usage Example Consider how one might definea conceptualtable and its subordinates. (This example usesrow augmentation exist according to theRowStatus textual convention defined in [3].) evalSlot OBJECT-TYPE SYNTAX Integer32 (0..2147483647) MAX-ACCESS read-only STATUS current DESCRIPTION "The index numbersame semantics as instances ofthe first unassigned entry in the evaluation table, or the valuesubordinate columnar objects ofzero indicating that all entries are assigned. A management station should create new entries intheevaluation table using this algorithm: first, issuebase conceptual row being augmented. As such, note that creation of amanagement protocol retrieval operation to determinebase conceptual row implies thevaluecorrespondent creation ofevalSlot; and, second, issueany conceptual row augmentations. For example, amanagement protocol set operationMIB designer might wish tocreatedefine additional columns in aninstance"enterprise-specific" MIB which logically extend a conceptual row in a "standard" MIB. The "standard" MIB definition of theevalStatus object setting its value to createAndGo(4) or createAndWait(5). If this latter operation succeeds, thenconceptual row would include themanagement station may continue modifyingINDEX clause and theinstances corresponding to"enterprise- specific" MIB would contain thenewly created conceptual row, without feardefinition ofcollision witha conceptual row using the AUGMENTS clause. On the othermanagement stations." ::= { eval 1 } evalTable OBJECT-TYPE SYNTAX SEQUENCE OF EvalEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) evaluation table." ::= { eval 2 } evalEntry OBJECT-TYPE SYNTAX EvalEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) inhand, it would be incorrect to use theevaluation table." INDEX { evalIndex } ::= { evalTable 1 } EvalEntry ::= SEQUENCE { Expires July 1999AUGMENTS clause for the relationship between RFC 2233's ifTable McCloghrie, et al. Standards Track [Page38] Draft29] RFC 2578 SMIv2JanuaryApril 1999evalIndex Integer32, evalString DisplayString, evalValue Integer32, evalStatus RowStatus } evalIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The auxiliary variable usedand the many media-specific MIBs which extend it foridentifying instances ofspecific media (e.g., thecolumnar objectsdot3Table inthe 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 SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status column used for creating, modifying, and deleting instancesRFC 2358), since not all interfaces are of thecolumnar objects insame 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 theevaluation table." DEFVAL { active } ::= { evalEntry 4 } Expires July 1999 [Page 39] Draft SMIv2 January 1999 8. Mappingconceptual rows of this table and an existing table, then theNOTIFICATION-TYPE macro The NOTIFICATION-TYPE macroAUGMENTS clause should be used. (2) Otherwise, if there isused to definea sparse relationship between theinformation contained within an unsolicited transmissionconceptual rows ofmanagement information (i.e., within either a SNMPv2-Trap-PDU or InformRequest-PDU). Itthis table and an existing table, then an INDEX clause should benotedused which is identical to that in theexpansion ofexisting table. For example, theNOTIFICATION-TYPE macro is something which conceptually happens during implementationrelationship between RFC 2233's ifTable andnot during run- time. 8.1. Mapping of the OBJECTS clause The OBJECTS clause, which need not be present, defines an ordered sequence ofa media-specific MIBobject 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 ofwhich extends thenotification. IfifTable for a specific media (e.g., thesame object type occurs multiple timesdot3Table in RFC 2358), is anotification's ordered sequence,sparse relationship. (3) Otherwise, if no existing objects have the required syntax and semantics, thenan object instance is presentauxiliary objects should be defined within the conceptual row foreach of them. An object type specified in this clause must not have an MAX-ACCESS clause of "not-accessible". The notification's DESCRIPTIONthe new table, and those objects should be used within the INDEX clausemust specifyfor theinformation/meaning conveyed by each occurrenceconceptual row. 7.9. Mapping ofeach object type inthesequence. The DESCRIPTIONDEFVAL clausemust also specifyThe 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 ispresent for each object type increated. That is, thenotification. Note that an agentvalue isallowed, at its own discretion,a "hint" toappend as many additional objectsimplementors. During conceptual row creation, if an instance of a columnar object is not present asit considers useful to the endone of thenotification (i.e., afteroperands in theobjects defined bycorrespondent management protocol set operation, then theOBJECTS clause). 8.2. Mappingvalue of theSTATUS clause The STATUSDEFVAL clause,which must beif present, indicateswhetheran acceptable default value that an agent might use (especially for a read-only object). Note that with this definition of the DEFVAL clause, it iscurrent or historic. The value "current" means that the definition is current and valid. The value "obsolete" means the definitionappropriate to use it for any columnar object of a read-create table. It isobsolete and should not be implemented and/or can be removed if previously implemented. While the value "deprecated"alsoindicates an obsolete definition, it permits new/continued implementation in orderpermitted tofoster interoperability with older/existing implementations. Expires July 1999use 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 [Page40] Draft30] RFC 2578 SMIv2JanuaryApril 19998.3. MappingThe value of theDESCRIPTIONDEFVAL clauseThe DESCRIPTION clause, which must be present, contains a textual definitionmust, of course, correspond to thenotification which provides all semantic definitions necessarySYNTAX clause forimplementation, and should embody any information which would otherwisethe object. If the value is an OBJECT IDENTIFIER, then it must becommunicated in anyexpressed as a single ASN.1commentary annotations associated with the notification. In particular,identifier, and not as a collection of sub-identifiers. Note that if an operand to theDESCRIPTION clause should document which instancesmanagement protocol set operation is an instance of a read-only object, then theobjects mentioned inerror `notWritable' [6] will be returned. As such, theOBJECTSDEFVAL clauseshouldcan becontained within notifications of this type. 8.4. Mappingused to provide an acceptable default value that an agent might use. By way of example, consider theREFERENCEfollowing possible DEFVAL clauses: ObjectSyntax DEFVAL clauseThe REFERENCE clause, which need not be present, contains a textual cross-reference to some other document, either another information module which defines---------------- ------------ 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 arelated assignment,DEFVAL clause for an OCTET STRING must be either an integral multiple of eight orsome other document which provides additional information relevantzero 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 tothis definition. 8.5.zero. 7.10. Mapping of theNOTIFICATION-TYPEOBJECT-TYPE value The value of an invocation of theNOTIFICATION-TYPEOBJECT-TYPE macro is the name of thenotification,object, which is an OBJECT IDENTIFIER, an administratively assigned name.In orderWhen an OBJECT IDENTIFIER is assigned toachieve 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,an object: (1) If thenextobject corresponds tolast sub-identifier in thea conceptual table, then only a single assignment, that for a conceptual row, is present immediately beneath that object. The administratively assigned nameof any newly- defined notification must havefor thevalue zero. Sections 4.2.6 and 4.2.7 of [6] describe how the NOTIFICATION-TYPE macroconceptual row object isused to generatederived by appending aSNMPv2-Trap-PDU or InformRequest-PDU, respectively. Expires July 1999sub-identifier of McCloghrie, et al. Standards Track [Page41] Draft31] RFC 2578 SMIv2JanuaryApril 19998.6."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 howa configuration change notificationone mightbe described: entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 } entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 } entConfigChange NOTIFICATION-TYPEdefine 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"An entConfigChange trap is sent when"The index number of the first unassigned entry in the evaluation table, or the value ofentLastChangeTime changes. It can be utilized by an NMS to trigger logical/physical entity table maintenance polls. An agent must not generate more than one entConfigChange 'trap-event'zero indicating that all entries are assigned. A management station should create new entries ina five second period, where a 'trap-event' isthetransmission ofevaluation table using this algorithm: first, issue asingle trap PDUmanagement protocol retrieval operation toa 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 checkdetermine the value ofentLastChangeTimeevalSlot; and, second, issue a management protocol set operation todetect any missed entConfigChange trap-events, e.g. duecreate an instance of the evalStatus object setting its value tothrottlingcreateAndGo(4) ortransmission loss." ::= { entityMIBTrapPrefix 1 } According tocreateAndWait(5). If thisinvocation,latter operation succeeds, then thenotification authoritatively identified asmanagement station may continue modifying the instances corresponding to the newly created conceptual row, without fear of collision with other management stations." ::= {entityMIBTrapPrefixeval 1 }is used to report a particular type of configuration change. Expires July 1999evalTable OBJECT-TYPE SYNTAX SEQUENCE OF EvalEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION McCloghrie, et al. Standards Track [Page42] Draft32] RFC 2578 SMIv2JanuaryApril 19999. Refined Syntax Some macros have clauses which allows syntax to be refined, specifically: the"The (conceptual) evaluation table." ::= { eval 2 } evalEntry OBJECT-TYPE SYNTAXclause ofEvalEntry 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-TYPEmacro, and the SYNTAX/WRITE-SYNTAX clausesSYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The auxiliary variable used for identifying instances of theMODULE-COMPLIANCE and AGENT- CAPABILITIES macros [2]. However, not all refinements of syntax are appropriate. In particular,columnar objects in theobject's primitive or application type must not be changed. Further, the following restrictions apply: Restrictionsevaluation table." ::= { evalEntry 1 } evalString OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-create STATUS current DESCRIPTION "The string toRefinement of object syntax range enumeration size ----------------- ----- ----------- ---- INTEGER (1) (2) -evaluate." ::= { evalEntry 2 } evalValue OBJECT-TYPE SYNTAX Integer32(1) - - Unsigned32 (1) - - OCTET STRING - - (3) OBJECT IDENTIFIER - - - BITS - (2) - IpAddress - - - Counter32 - - - Counter64 - - - Gauge32 (1) - - TimeTicks - - - where: (1) the rangeMAX-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 ofpermitted values may be refined by raising the lower- bounds, by reducing the upper-bounds, and/or by reducingthealternative value/range choices; (2)columnar objects in theenumerationevaluation table." DEFVAL { active } ::= { evalEntry 4 } 8. Mapping ofnamed-values may be refined by removing one or more named-values (note that for BITS, a refinement may causetheenumerationsNOTIFICATION-TYPE macro The NOTIFICATION-TYPE macro is used tono longer be contiguous); or, (3)define thesize in octetsinformation contained within an unsolicited transmission ofthe value maymanagement information (i.e., within either a SNMPv2-Trap-PDU or InformRequest- PDU). It should berefined by raisingnoted that thelower-bounds, by reducingexpansion of theupper-bounds, and/or by reducing the alternative size choices. No other typesNOTIFICATION-TYPE macro is something which conceptually happens during implementation and not during run-time. 8.1. Mapping ofrefinements can be specified in the SYNTAX clause. However,theDESCRIPTIONOBJECTS clauseis available to specify additional restrictionsThe OBJECTS clause, whichcanneed not beexpressedpresent, 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 theSYNTAX clause. Further details on (and examples of) sub-typing are providedspecified order, inAppendix A. Expires July 1999 [Page 43] Draft SMIv2 January 1999 10. Extendingevery instance of the notification. If the same object type occurs multiple times in a notification's ordered sequence, then anInformation Module As experienceobject instance isgained with an information module, it may be desirable to revise that information module. However, changes arepresent for each of them. An object type specified in this clause must notallowed if theyhaveany potential to cause interoperability problems "over the wire" between an implementation usinganoriginal specification and an implementation using an updated specification(s). For any change, the invocationMAX-ACCESS clause ofthe MODULE-IDENTITY macro"not-accessible". The notification's DESCRIPTION clause mustbe updated to include information about the revision: specifically, updatingspecify theLAST-UPDATED clause, adding a pairinformation/meaning conveyed by each occurrence ofREVISION andeach object type in the sequence. The DESCRIPTIONclauses (see section 5.5), and making any necessary changes to existing clauses, includingclause must also specify which object instance is present for each object type in theORGANIZATION and CONTACT-INFO clauses.notification. Note thatany definition contained inaninformation moduleagent isavailableallowed, at its own discretion, to append as many additional objects as it considers useful tobe IMPORT-ed by any other information module, and is referenced in an IMPORTS clause viathemodule name. Thus, a module name should not be changed. Specifically,end of themodule name (e.g., "FIZBIN-MIB" innotification (i.e., after theexampleobjects defined by the OBJECTS clause). 8.2. Mapping ofSection 5.7) should notthe STATUS clause The STATUS clause, which must bechanged when revising an information module (except to correct typographical errors),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 anddefinitionsshould not bemoved from one information module to another. Also note that obsolete definitions must notimplemented and/or can be removedfrom MIB modules since their descriptors may still be referenced by other information modules, andif previously implemented. While theOBJECT IDENTIFIERs used to name them must never be re- assigned. 10.1. Object Assignments If any non-editorial change is madevalue "deprecated" also indicates an obsolete definition, it permits new/continued implementation in order toany clausefoster McCloghrie, et al. Standards Track [Page 34] RFC 2578 SMIv2 April 1999 interoperability with older/existing implementations. 8.3. Mapping ofa object assignment, thentheOBJECT IDENTIFIER value associated with that object assignmentDESCRIPTION clause The DESCRIPTION clause, which mustalsobechanged, along with its associated descriptor. 10.2. Object Definitions An objectpresent, contains a textual definitionmay be revised in anyof thefollowing 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 changednotification which provides all semantic definitions necessary forthe BITS construct. Expires July 1999 [Page 44] Draft SMIv2 January 1999 (2) The value of a SYNTAX clause mayimplementation, and should embody any information which would otherwise bereplaced by a textual convention, providing the textual convention is defined to use the same primitivecommunicated in any ASN.1type, hascommentary annotations associated with thesame 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,notification. In particular, the DESCRIPTION clause shouldbe updated to explaindocument which instances of therationale. (4) A DEFVALobjects mentioned in the OBJECTS clausemayshould beadded or updated. (5) Acontained within notifications of this type. 8.4. Mapping of the REFERENCE clausemayThe REFERENCE clause, which need not beaddedpresent, contains a textual cross-reference to some other document, either another information module which defines a related assignment, orupdated. (6) A UNITS clause may be added. (7) A conceptual row may be augmented by adding new columnar objects atsome other document which provides additional information relevant to this definition. 8.5. Mapping of theendNOTIFICATION-TYPE value The value of an invocation of therow, and makingNOTIFICATION-TYPE macro is thecorresponding update toname of theSEQUENCE definition. (8) Clarifications and additionalnotification, which is an OBJECT IDENTIFIER, an administratively assigned name. In order to achieve compatibility with SNMPv1 traps, both when converting SMIv1 informationmay be includedmodules to/from this SMI, and in theDESCRIPTION clause. (9) Entirely new objects may be defined, named with previously unassigned OBJECT IDENTIFIER values. Otherwise, ifprocedures employed by multi-lingual systems and proxy forwarding applications, thesemantics of any previously defined object are changed (i.e., if a non-editorial change is madenext to last sub- identifier in the name of anyclause other than those specifically allowed above), thennewly-defined notification must have theOBJECT IDENTIFIERvalueassociated with that object must also be changed. Note that changingzero. Sections 4.2.6 and 4.2.7 of [6] describe how thedescriptor associated with an existing objectNOTIFICATION-TYPE macro isconsidered a semantic change, as these strings may beusedin 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"to generate a SNMPv2-Trap-PDU or"obsolete". Similarly,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 STATUSclausecurrent DESCRIPTION "An entConfigChange trap is sent when the value of"deprecated" mayentLastChangeTime changes. It can berevised as "obsolete". When making such a change, the Expires July 1999utilized by an NMS to trigger logical/physical entity table maintenance polls. McCloghrie, et al. Standards Track [Page45] Draft35] RFC 2578 SMIv2JanuaryApril 1999DESCRIPTION clause should be updated to explainAn agent must not generate more than one entConfigChange 'trap-event' in a five second period, where a 'trap-event' is therationale. (3) A DESCRIPTION clause may be clarified. Otherwise, if the semanticstransmission ofany previously defined notification are changed (i.e., ifanon-editorial change is madesingle trap PDU toany clause other those specifically allowed above),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 theOBJECT IDENTIFIERvalueassociated with that notification must also be changed. Note that changingof entLastChangeTime to detect any missed entConfigChange trap-events, e.g. due to throttling or transmission loss." ::= { entityMIBTrapPrefix 1 } According to this invocation, thedescriptor associated with an existingnotificationis considered a semantic change,authoritatively identified asthese strings may be{ entityMIBTrapPrefix 1 } is usedin an IMPORTS statement. Expires July 1999 [Page 46] Draft SMIv2 January 1999 11. Appendix A: Detailed Sub-typing Rules 11.1.to report a particular type of configuration change. 9. Refined SyntaxRules The syntax rules for sub-typing are given below. Note that while thisSome macros have clauses which allows syntaxis based on ASN.1, it includes some extensions beyond what is allowed in ASN.1,to be refined, specifically: the SYNTAX clause of the OBJECT-TYPE macro, anda numberthe SYNTAX/WRITE-SYNTAX clauses ofASN.1 constructsthe 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 notallowed by this syntax. <integerSubType> ::= <empty> | "(" <range> ["|" <range>]... ")" <octetStringSubType> ::= <empty> | "(" "SIZE" "(" <range> ["|" <range>]... ")" ")" <range> ::= <value> | <value> ".." <value> <value> ::= "-" <number> | <number> | <hexString> | <binString> where: <empty> isbe changed. Further, theempty string <number> is a non-negative integer <hexString> is a hexadecimal string (e.g., 'xxxx'H) <binString> is a binary string (e.g, 'xxxx'B) <range> is further restricted as follows:following restrictions apply: Restrictions to Refinement of object syntax range enumeration size ----------------- ----- ----------- ---- INTEGER (1) (2) -any <value> used in a SIZE clause must be non-negative.Integer32 (1) -when a pair- 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 valuesis specified, the first value mustmay beless thanrefined by raising thesecond value. - when multiple ranges are specified,lower- bounds, by reducing therangesupper-bounds, and/or by reducing the alternative value/range choices; (2) the enumeration of named-values maynot overlap butbe refined by removing one or more named-values (note that for BITS, a refinement maytouch. For example, (1..4 | 4..9) is invalid, and (1..4 | 5..9) is valid. -cause theranges mustenumerations to no longer bea subset ofcontiguous); or, (3) themaximum rangesize in octets of thebase type. Expires July 1999 [Page 47] Draft SMIv2 January 1999 11.2. Examples Some examplesvalue may be refined by raising the lower-bounds, by reducing the upper-bounds, and/or by reducing the alternative size choices. No other types oflegal 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)refinements can be specified in the SYNTAXDisplayString (SIZE(0..32)) (Noteclause. However, thelast two examples above areDESCRIPTION clause is available to specify additional restrictions which can notvalidbe expressed ina TEXTUAL CONVENTION, see [3].) Somethe SYNTAX clause. Further details on (and examplesof 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 MAXof) 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 allowedInteger32 (SIZE (0..34)) -- must not use SIZE OCTET STRING (0..100) -- must use SIZE OCTET STRING (SIZE(-10..100)) -- negative SIZE Expires July 1999 [Page 48] Draft SMIv2 January 1999 12. Security Considerations This document defines a language with whichif they have any potential towritecause interoperability problems "over the wire" between an implementation using an original specification andread descriptionsan implementation using an updated specification(s). For any change, the invocation ofmanagement information. The language itself has no security impact ontheInternet. 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 David Perkins Desktalk Systems & 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 Expires July 1999 [Page 49] Draft SMIv2 January 1999 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 Waldbusser, S. "Conformance Statements for SMIv2", draft-ops- smiv2-conf-01.txt, January 1999. [3] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and Waldbusser, S. "Textual Conventions for SMIv2", draft-ops- smiv2-tc-01.txt, January 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 Waldbusser, S., "Management Information Base for Version 2 ofMODULE-IDENTITY macro must be updated to include information about theSimple Network Management Protocol (SNMPv2)", RFC 1907, January 1996. [6] The SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., "Protocol Operations for Version 2 ofrevision: specifically, updating theSimple Network Management Protocol (SNMPv2)", RFC 1905, January 1996. Expires July 1999 [Page 50] Draft SMIv2 January 1999 15. Full Copyright Statement Copyright (C) The Internet Society (1999). All Rights Reserved. This document and translationsLAST-UPDATED clause, adding a pair ofit may be copiedREVISION andfurnishedDESCRIPTION clauses (see section 5.5), and making any necessary changes toothers,existing clauses, including the ORGANIZATION andderivative worksCONTACT- INFO clauses. Note thatcomment on or otherwise explain it or assistany definition contained inits implementation may be prepared, copied, publishedan information module is available to be IMPORT-ed by any other information module, anddistributed, in whole oris referenced inpart, without restriction of any kind, provided thatan IMPORTS clause via theabove copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself maymodule name. Thus, a module name should not bemodified 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 casechanged. Specifically, theprocedures for copyrights definedmodule name (e.g., "FIZBIN-MIB" in theInternet Standards process mustexample of Section 5.7) should not befollowed, or as requiredchanged when revising an information module (except totranslate it into languages other than English. The limited permissions granted above are perpetualcorrect typographical errors), andwilldefinitions should not berevokedmoved 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 bythe Internet Society or its successors or assigns. This document and theother informationcontained herein is provided on an "AS IS" basismodules, andTHE 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." Expires July 1999the OBJECT IDENTIFIERs used to name them must never be re-assigned. McCloghrie, et al. Standards Track [Page51] Draft37] RFC 2578 SMIv2JanuaryApril 1999Table of Contents 1 Introduction .................................................... 2 1.1 A Note on Terminology ......................................... 2 2 Definitions ..................................................... 3 3.1 The MODULE-IDENTITY macro ..................................... 4 3.210.1. ObjectNames and Syntaxes ..................................... 7 3.3 The OBJECT-TYPE macro ......................................... 10 3.5 The NOTIFICATION-TYPE macro ................................... 12 3.6 Administrative Identifiers .................................... 12 3 Information Modules ............................................. 13 3.1 Macro Invocation .............................................. 14 3.1.1 Textual Values and Strings .................................. 15 3.2 IMPORTing Symbols ............................................. 15 3.3 Exporting Symbols ............................................. 16 3.4 ASN.1 Comments ................................................ 16 3.5 OBJECT IDENTIFIER values ...................................... 16 3.6 OBJECT IDENTIFIER usage ....................................... 17 3.7 Reserved Keywords ............................................. 18 4 Naming Hierarchy ................................................ 19 5 Mapping of the MODULE-IDENTITY macro ............................ 20 5.1 Mapping of the LAST-UPDATEDAssignments If any non-editorial change is made to any clause............................ 20 5.2 Mappingof a object assignment, then theORGANIZATION clause ............................ 20 5.3 MappingOBJECT 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 theCONTACT-INFOfollowing ways: (1) A SYNTAX clause............................ 20 5.4 Mapping ofcontaining an enumerated INTEGER may have new enumerations added or existing labels changed. Similarly, named bits may be added or existing labels changed for theDESCRIPTION clause ............................. 20 5.5 MappingBITS construct. (2) The value ofthe REVISIONa SYNTAX clause................................ 20 5.5.1 Mapping ofmay be replaced by a textual convention, providing theDESCRIPTION sub-clause ....................... 21 5.6 Mapping oftextual convention is defined to use theMODULE-IDENTITY value .......................... 21 5.7 Usage Example ................................................. 22 6 Mapping ofsame primitive ASN.1 type, has theOBJECT-IDENTITY macro ............................ 23 6.1 Mappingsame set ofthevalues, and has identical semantics. (3) A STATUS clause.................................. 23 6.2 Mappingvalue ofthe DESCRIPTION"current" may be revised as "deprecated" or "obsolete". Similarly, a STATUS clause............................. 23 6.3 Mappingvalue ofthe REFERENCE clause ............................... 23 6.4 Mapping"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 ofthe OBJECT-IDENTITY value .......................... 23 6.5 Usage Example ................................................. 24 7 MappingBasic 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 theOBJECT-TYPE macro ................................ 25 7.1 MappingSimple 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 theSYNTAX clause .................................. 25 7.1.1 Integer32 and INTEGER ....................................... 25 7.1.2 OCTET STRING ................................................ 26 7.1.3 OBJECT IDENTIFIER ........................................... 26 7.1.4 The BITS construct .......................................... 26 7.1.5 IpAddress ................................................... 27 7.1.6 Counter32 ................................................... 27 7.1.7 Gauge32 ..................................................... 28 Expires July 1999Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996. McCloghrie, et al. Standards Track [Page52] Draft42] RFC 2578 SMIv2JanuaryApril 19997.1.8 TimeTicks ................................................... 28 7.1.9 Opaque ...................................................... 28 7.1.10 Counter64 .................................................. 29 7.1.11 Unsigned32 ................................................. 29 7.1.12 Conceptual Tables .......................................... 30 7.1.12.1 Creation15. Full Copyright Statement Copyright (C) The Internet Society (1999). All Rights Reserved. This document andDeletion of Conceptual Rows ................. 30 7.2 Mapping of the UNITS clause ................................... 31 7.3 Mapping of the MAX-ACCESS clause .............................. 31 7.4 Mapping of the STATUS clause .................................. 31 7.5 Mapping of the DESCRIPTION clause ............................. 32 7.6 Mapping of the REFERENCE clause ............................... 32 7.7 Mapping of the INDEX clause ................................... 32 7.8 Mappingtranslations ofthe AUGMENTS clause ................................ 34 7.8.1 Relation between INDEXit 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 andAUGMENTS clauses ................. 35 7.9 Mappingdistributed, in whole or in part, without restriction of any kind, provided that theDEFVAL clause .................................. 35 7.10 Mapping ofabove 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 theOBJECT-TYPE value ............................. 36 7.11 Usage Example ................................................ 38 8 Mapping ofcopyright notice or references to theNOTIFICATION-TYPE macro .......................... 40 8.1 Mapping ofInternet Society or other Internet organizations, except as needed for theOBJECTS clause ................................. 40 8.2 Mappingpurpose of developing Internet standards in which case theSTATUS clause .................................. 40 8.3 Mapping ofprocedures for copyrights defined in theDESCRIPTION clause ............................. 41 8.4 Mapping ofInternet 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 theREFERENCE clause ............................... 41 8.5 Mapping ofInternet Society or its successors or assigns. This document and theNOTIFICATION-TYPE value ........................ 41 8.6 Usage Example ................................................. 42 9 Refined Syntax .................................................. 43 10 Extendinginformation contained herein is provided on anInformation Module ................................ 44 10.1 Object Assignments ........................................... 44 10.2 Object Definitions ........................................... 44 10.3 Notification Definitions ..................................... 45 11 Appendix A: Detailed Sub-typing Rules .......................... 47 11.1 Syntax Rules ................................................. 47 11.2 Examples ..................................................... 48 12 Security Considerations ........................................ 49 13 Editors' Addresses ............................................. 49 14 References ..................................................... 50 15 Full Copyright Statement ....................................... 51 Expires July 1999"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 [Page53]43] ----