rfc-2578

Structure of Management Information Version 2 (SMIv2)

K. McCloghrie (Editor), D. Perkins (Editor), J. Schoenwaelder (Editor)
date1999-04 streamLegacy statusINTERNET STANDARD pages42 canonicalhttps://www.rfc-editor.org/rfc/rfc2578 doi10.17487/RFC2578
It is the purpose of this document, the Structure of Management Information Version 2 (SMIv2), to define that adapted subset, and to assign a set of associated administrative values. [STANDARDS-TRACK]

obsoletes

also

Extracted elements (33)

design-rationale §7.1.6

Counter objects have no defined initial value; a single counter reading has no information content in general. Discontinuities at re-initialization or row creation must be tracked with a companion timestamp object (e.g., TimeStamp or DateAndTime).

snmp

design-rationale §7.1.5

IpAddress is defined as a tagged type ([APPLICATION 0]) for historical reasons. New MIB definitions should represent network addresses using the TEXTUAL-CONVENTION macro rather than IpAddress directly.

snmp, ip

design-rationale §7.1.11

Unsigned32 shares the APPLICATION 2 tag with Gauge32, making them wire-indistinguishable. The distinction is purely semantic: Gauge32 clamps at its bounds, while Unsigned32 is a plain non-negative integer with no clamping behavior.

snmp

design-rationale §7.1.4

When adding new enumerations to a BITS object in an updated module, starting the new enumerations at the next multiple of eight bits avoids ambiguity between an old implementation that does not assert the new bits and a new one that explicitly clears them.

snmp

interoperability-note §7.1.2

Although OCTET STRING allows up to 65535 octets, MIB designers should note that implementations may have interoperability limitations for sizes exceeding 255 octets. Similarly, BITS values exceeding 128 bits may encounter implementation constraints.

snmp

interoperability-note §3.1

Hyphens are not permitted in SMIv2 ASN.1 identifiers or descriptors, except in information modules that were originally written to conform to SMIv1 and subsequently converted, since SMIv1 did allow hyphens.

snmp

normative-requirement §3 MUST NOT

Additional ASN.1 macros must not be defined in SMIv2 information modules, and SMIv1 macros must not be used in SMIv2 information modules. The ASN.1 EXPORTS statement is also not allowed.

snmp

normative-requirement §3.1 REQUIRED

All descriptors within an information module shall be unique, mnemonic, and shall not exceed 64 characters. The set of descriptors across all standard information modules shall also be unique. Descriptors must begin with a lower-case letter.

snmp

normative-requirement §3.5 MUST

An OBJECT IDENTIFIER value may have at most 128 sub-identifiers, and each sub-identifier must not exceed 2^32-1 (4294967295 decimal). All OBJECT IDENTIFIER values must have at least two sub-identifiers.

snmp

normative-requirement §3 MUST

Every information module must contain exactly one invocation of the MODULE-IDENTITY macro, which must appear immediately after any IMPORTS statements. It provides contact information and revision history to distinguish versions.

snmp

normative-requirement §7.1.12.1 SHOULD

For newly-defined conceptual rows that allow creation or deletion of object instances, there should be one columnar object with a SYNTAX of RowStatus and a MAX-ACCESS of read-create, termed the status column.

snmp

normative-requirement §10 MUST

If the semantics of any previously defined object change (any non-editorial change not explicitly permitted), the OBJECT IDENTIFIER value associated with that object must also be changed. Module names must not be changed when revising an information module.

snmp

normative-requirement §7.1.10 MUST

In standard MIB modules, Counter64 may only be used if the information being modeled would wrap in less than one hour using Counter32 instead.

snmp

normative-requirement §7.7 MUST NOT

Objects with Counter32 or Counter64 syntax must not be specified in an INDEX clause, since a single Counter value has no information content. If a BITS object is used in an INDEX clause, it is treated as a variable-length string.

snmp

normative-requirement §3.6 MUST NOT

Once an OBJECT IDENTIFIER is registered, its associated semantics are not allowed to change and the OID cannot be used for any other registration. Obsolete definitions must not be removed from MIB modules since their OIDs must never be re-assigned.

snmp, registry

normative-requirement §7.10 REQUIRED

The final sub-identifier of any administratively assigned object name shall be positive; a zero-valued final sub-identifier is reserved for future use. For conceptual tables, the row object is assigned sub-identifier 1 beneath the table.

snmp

normative-requirement §7.1.6 MUST

The MAX-ACCESS clause for objects with Counter32 or Counter64 syntax must be either 'read-only' or 'accessible-for-notify'. A DEFVAL clause is not allowed for Counter32 or Counter64 objects.

snmp

normative-requirement §8.5 MUST

The next-to-last sub-identifier in the name of any newly-defined notification must have the value zero, to achieve compatibility with SNMPv1 traps and multi-lingual proxy forwarding applications.

snmp

normative-requirement §7.1.9 MUST NOT

The Opaque type shall not be used for newly-defined object types; it is provided solely for backward-compatibility. Standard MIB modules must not contain any object with a SYNTAX clause value of Opaque.

snmp

protocol-element §7.1.12

Conceptual tables use SYNTAX 'SEQUENCE OF <EntryType>' with MAX-ACCESS not-accessible. The row object immediately beneath the table is assigned sub-identifier 1 and carries the INDEX or AUGMENTS clause defining instance identification.

snmp

protocol-element §7.8

The AUGMENTS clause is an alternative to INDEX for conceptual rows with a strict one-to-one correspondence to a base row. An augmentation row cannot itself be augmented, and creation of the base row implies creation of all its augmentations.

snmp

protocol-element §7.1.4

The BITS construct represents an enumeration of named bits assigned non-negative values starting at zero. Only those named bits so enumerated may appear in a value; new enumerations may be added when extending a module.

snmp

protocol-element §7.7

The INDEX clause encodes instance sub-identifiers as follows: integers map to one sub-id; fixed or IMPLIED variable strings encode n octets as n sub-ids; non-IMPLIED variable strings prepend a length sub-id; IpAddress uses 4 sub-ids; OBJECT IDENTIFIERs similarly use n or n+1 sub-ids.

snmp

protocol-element §4

The Internet SNMP naming hierarchy roots at internet OBJECT IDENTIFIER ::= { iso 3 6 1 } (prefix 1.3.6.1), with sub-trees mgmt(2), mib-2(2.1), experimental(3), private(4), enterprises(4.1), and snmpV2(6) for SNMP-specific assignments.

snmp, registry

protocol-element §7

The OBJECT-TYPE macro requires SYNTAX, MAX-ACCESS, STATUS, and DESCRIPTION clauses. MAX-ACCESS values in ascending order are: not-accessible, accessible-for-notify, read-only, read-write, read-create.

snmp

registry §2

RFC 2578 defines the SNMPv2-SMI module establishing the canonical OID tree for SNMP: internet (1.3.6.1), mgmt/mib-2 (1.3.6.1.2/2.1), experimental (1.3.6.1.3), enterprises (1.3.6.1.4.1), and snmpModules (1.3.6.1.6.3) along with zeroDotZero (0.0) as a null identifier.

snmp, registry

security-consideration §12

SMIv2 defines a language for writing and reading descriptions of management information. The language itself has no security impact on the Internet.

snmp, security

wire-format §7.1.6

Counter32 is encoded as [APPLICATION 1] IMPLICIT INTEGER (0..4294967295). It monotonically increases until reaching 2^32-1, then wraps to zero.

snmp

wire-format §7.1.10

Counter64 encodes as [APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615), a 64-bit counter wrapping from 2^64-1 to zero.

snmp

wire-format §2

ExtUTCTime is an OCTET STRING of SIZE(11|13) encoding timestamps as YYMMDDHHMMZ (years 1900–1999 only) or YYYYMMDDHHMMZ (any year), always suffixed with 'Z' to denote GMT. Years after 1999 must use the four-digit format.

snmp

wire-format §7.1.7

Gauge32 and Unsigned32 both encode as [APPLICATION 2] IMPLICIT INTEGER (0..4294967295), making them wire-indistinguishable. TimeTicks uses [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) representing hundredths of seconds between two epochs.

snmp

wire-format §7.1.5

IpAddress is encoded as [APPLICATION 0] IMPLICIT OCTET STRING (SIZE(4)) in network byte-order, representing a 32-bit IPv4 address.

snmp, ip

wire-format §7.1.9

Opaque encodes as [APPLICATION 4] IMPLICIT OCTET STRING, double-wrapping arbitrary ASN.1 BER-encoded data inside an OCTET STRING.

snmp