The Interfaces Group MIB
obsoletes
- rfc-2233 — The Interfaces Group MIB using SMIv2
updated by
- rfc-8892 — Guidelines and Registration Procedures for Interface Types and Tunnel Types
Extracted elements (28)
64-bit expanded counters were adopted instead of scaling counters because scaled counters cause traffic to appear artificially bursty at low traffic rates, leading to incorrect network performance conclusions. The ifCounterDiscontinuityTime object was added to allow counter discontinuity detection without requiring ifIndex reassignment on interface return.
Each sub-layer beneath the internetwork layer is represented as an individual conceptual row in the ifTable, with a new ifStackTable identifying superior/subordinate relationships via integer pointers. This design supports both upward and downward multiplexing and avoids requiring enumerated ifType values for each combination of sub-layers.
ifSpecific was deprecated because its original definition was ambiguous, leading to three different incompatible interpretations by implementors. The only unambiguous definition (pointing to the media-specific MIB module OID) conveys no more information than ifType, making the object redundant.
ifType's syntax was changed to reference the IANAifType textual convention defined in a separate document so that new interface type values can be assigned by IANA without requiring re-issue of the IF-MIB. Previously, adding enumerated values necessitated a full MIB revision, which historically occurred only every several years.
The ifTable intentionally has no RowStatus column because nearly all creatable interfaces require media-specific configuration parameters not present in the generic table. Interface creation and deletion is delegated to media-specific MIBs whose RowStatus operations cause ifTable rows to appear and disappear as a side effect.
Virtual circuits in connection-oriented sub-layers (e.g., Frame Relay, X.25) are strongly recommended not to have individual ifTable rows, to avoid proliferation of conceptual rows with redundant information. A media-specific MIB that assigns per-VC rows must present compelling rationale in its specification.
After a dynamic interface removal, an agent must not reuse the freed ifIndex value for a different interface until after the next re-initialization of the network management system. When the same interface returns, it should retain its previous ifIndex and update ifCounterDiscontinuityTime rather than requiring a new index.
The non-unicast counters ifInNUcastPkts and ifOutNUcastPkts are deprecated in favor of separate multicast and broadcast counters (ifInMulticastPkts, ifInBroadcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts) defined in this memo. The combined non-unicast counters became redundant once separate counters were available.
The requirement that ifIndex values be less than ifNumber was removed. Existing agent implementations already conform to the new looser definition, preserving backward compatibility. The value of ifNumber continues to represent the count of conceptual rows and increases or decreases as interfaces are dynamically added or removed.
An agent MUST NOT instantiate an object with an incorrect value when the true value is unknown; it MUST respond with the appropriate error or exception condition (noSuchInstance or noSuchName). Instantiating a counter as zero when it cannot be counted provides misinformation to management applications.
For interfaces at 20 Mbps or less, 32-bit byte and packet counters MUST be supported. For interfaces faster than 20 Mbps and slower than 650 Mbps, 32-bit packet counters MUST and 64-bit octet counters MUST be supported. For interfaces at 650 Mbps or faster, 64-bit packet AND 64-bit octet counters MUST be supported.
LinkUp and linkDown traps are generated just after ifOperStatus leaves, or just before it enters, the down state respectively; traps are never generated on transitions to/from the notPresent state. The lowerLayerDown state is treated as equivalent to down for trap generation purposes.
Management applications MUST be able to cope with responses revealing that some columnar objects within an ifTable conceptual row are missing or unavailable, since agents may omit object instances whose values are temporarily unknown.
Media-specific MIB designers MUST completely and unambiguously specify the layering model used, MUST specify whether virtual circuits are assigned ifTable entries, MUST specify the applicability of ifRcvAddressTable, and MUST NOT change the semantics, DESCRIPTION, or applicability of objects defined in the IF-MIB.
When 64-bit counters are in use, the 32-bit counters MUST still be available and report the low 32 bits of the associated 64-bit count (e.g., ifInOctets reports the least significant 32 bits of ifHCInOctets). This preserves interoperability with existing implementations.
When an interface is 'flapping' (rapidly oscillating between up and down states), an agent should limit the rate at which it generates linkUp/linkDown traps to avoid flooding the network and the network management system with unnecessary traps.
ifCounterDiscontinuityTime records the sysUpTime value at the last counter discontinuity on an interface. Management applications must discard calculated counter differences whenever this value differs between successive polls, and check it in addition to sysUpTime to detect agent re-initialization.
ifHighSpeed reports interface speed in units of 1,000,000 bits/second (±500,000 bps granularity), providing speed reporting for interfaces faster than the approximately 2.2 Gbps maximum representable by the Gauge32 ifSpeed object. ifHighSpeed is mandatory when ifSpeed reports its maximum value of 4,294,967,295.
ifLinkUpDownTrapEnable controls per-sub-layer linkUp/linkDown trap generation. By default, only the lowest sub-layer of an interface stack should generate traps, limiting trap volume to one per interface per link event.
ifName contains the device's local console name for the physical or logical interface; multiple ifTable sub-layer entries for the same physical interface may share the same ifName value. ifAlias is a non-volatile manager-assigned name that persists across reboots even if ifIndex is reassigned.
ifRcvAddressTable defines the set of media-level addresses at which an interface will receive packets. Media-specific MIB designers must specify exactly how this generic table applies to their particular interface type.
The ifStackTable identifies layering relationships between interface sub-layers through integer pointers to ifTable rows. It enables representation of upward multiplexing (e.g., MLP aggregating serial lines) and downward multiplexing (e.g., PPP instances over separate X.25 virtual circuits).
The ifXTable (OID ifMIBObjects.1) augments ifTable with extension objects: ifName, ifInMulticastPkts, ifInBroadcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts, ifHCInOctets, ifHCOutOctets, ifHCInUcastPkts, ifHCOutUcastPkts, ifHCInMulticastPkts, ifHCInBroadcastPkts, ifHCOutMulticastPkts, ifHCOutBroadcastPkts, ifLinkUpDownTrapEnable, ifHighSpeed, ifPromiscuousMode, ifConnectorPresent, ifAlias, and ifCounterDiscontinuityTime.
The IANAifType textual convention, maintained by IANA in the separate IANAifType-MIB document, defines enumerated integer values for the ifType object. New ifType values are assigned by IANA without requiring re-issue of the IF-MIB, decoupling interface type registration from MIB versioning.
Several IF-MIB objects have read-write access, most notably ifAdminStatus (which can bring interfaces up or down) and ifLinkUpDownTrapEnable (which can suppress fault notifications). Unauthorized SNMP write access to these objects poses a significant network management security risk; implementations should apply appropriate access control consistent with the SNMP security frameworks.
ifOperStatus has seven states: up (ready to pass packets), down (not ready or fault), testing (no operational packets), unknown (state indeterminate), dormant (operable but waiting for external event), notPresent (hardware component missing), and lowerLayerDown (down due to lower-layer interface state). Transitions from any state except notPresent into down trigger a linkDown trap; transitions out of down to any state except notPresent trigger a linkUp trap.
When ifAdminStatus transitions to up, ifOperStatus should move to: up (if able to pass packets), lowerLayerDown (if blocked by lower layer), dormant (operable but awaiting external events), testing (if tests must be performed), unknown (state indeterminate), or remain in down (fault detected) or notPresent (components missing). New ifTable entries are initialized with ifAdminStatus down.
The ifTable (OID mib-2.2) contains IfEntry rows indexed by ifIndex (InterfaceIndex, Integer32 1..2147483647). Fields include ifType (IANAifType), ifMtu (Integer32, octets), ifSpeed (Gauge32, bps), ifPhysAddress (PhysAddress), ifAdminStatus (up/down/testing), ifOperStatus (seven-state INTEGER), ifLastChange (TimeTicks), and Counter32 traffic/error counters for inbound and outbound traffic.