rfc-2233

The Interfaces Group MIB using SMIv2

K. McCloghrie, F. Kastenholz
date1997-11 streamIETF areaint wgifmib statusPROPOSED STANDARD pages66 canonicalhttps://www.rfc-editor.org/rfc/rfc2233 doi10.17487/RFC2233
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. In particular, it describes managed objects used for managing Network Interfaces. [STANDARDS-TRACK]

obsoleted by

obsoletes

Extracted elements (31)

design-rationale §3.1.3

Connection-oriented sub-layers (Frame Relay, X.25) are strongly recommended NOT to create one ifTable row per virtual circuit, to avoid row proliferation with redundant information. An exception is warranted only in unusual cases (e.g., PPP over an X.25 VC), and requires compelling rationale in the media-specific MIB.

snmp

design-rationale §3.1.7

ifHighSpeed reports speed in Mbps units rather than as a 64-bit gauge because the current SMI does not allow 64-bit gauges, and 1 Mbps granularity provides approximately 0.02% error at 4 Gbps — considered acceptable. Splitting into high/low 32-bit objects was rejected as overly complex.

snmp

design-rationale §3.1.16

ifSpecific is deprecated because no single definition could be made both explicit and universally applicable: implementations varied between pointing to the MIB module OID, a table/entry OID, or an instance OID. The only unambiguous definition reduces ifSpecific to redundancy with ifType.

snmp

design-rationale §3.1.17

ifTable deliberately omits RowStatus and does not support interface creation/deletion. Interfaces that can be dynamically created are managed via their media-specific MIB's RowStatus object; the corresponding ifTable row appears or disappears as a side effect, with the agent choosing the ifIndex value.

snmp

design-rationale §3.1.10

ifType syntax was changed from an in-module enumeration to the IANAifType textual convention defined in a separate document. This allows new interface type values to be added by IANA without reissuing this MIB, which historically took several years per revision.

snmp, registry

design-rationale §3.1.8

The non-unicast packet counters (ifInNUcastPkts, ifOutNUcastPkts) are deprecated in favor of separate multicast and broadcast counters introduced by RFC 1229. The output non-unicast counters in RFC 1229 also counted errors, creating definitional inconsistency that the new per-type counters correct.

snmp

design-rationale §3.1.1

The solution adopted assigns each interface sub-layer its own conceptual row in ifTable, with a new ifStackTable to identify superior/subordinate relationships via integer pointers. This supports upward and downward multiplexing (e.g., MLP, PPP over X.25), avoids requiring enumerated ifType values for every sub-layer combination, and allows IANAifType to map each sub-layer to its media-specific MIB independently.

snmp, yang

design-rationale §3.1.15

Trap generation was defined to fire on transitions into/out of the down state (excluding notPresent) rather than into/out of the up state. The latter was rejected because demand interfaces oscillating between up and dormant would produce asymmetric trap storms (many linkUps, no linkDowns), and a single-interface node transitioning to dormant would incorrectly generate a linkDown.

snmp

interoperability-note §3.1.4

The MIB retains the same OBJECT IDENTIFIER values as MIB-II for the original ifTable objects and preserves BER ('on the wire') encodings unchanged, so existing agents conforming to MIB-II and the ifExtensions MIB (RFC 1229) generally require no rewrite.

snmp

interoperability-note §3.1.5

The restriction that ifIndex values must be less than ifNumber has been removed. Some management applications break as a result, but this is considered preferable to requiring changes to all agent implementations and the many existing media-specific MIBs. ifIndex values should still be assigned as small contiguous integers starting from 1 for user-friendliness.

snmp

normative-requirement §4 MUST

A media-specific MIB MUST completely and unambiguously specify the layering model used, including each sub-layer, the ifStackTable portrayal of sub-layer relationships, whether virtual circuits are assigned ifTable entries, and the applicability of ifRcvAddressTable. It MUST NOT change semantics, DESCRIPTION, or applicability where the interfaces MIB is already specific.

snmp

normative-requirement §3.1.5 MUST

A previously unused ifIndex value MUST be assigned to a dynamically added interface when an agent has no knowledge of whether the interface is the 'same' or 'different' from a previously incarnated interface, to prevent management stations from incorrectly calculating counter differences.

snmp

normative-requirement §3.1.18 MUST NOT

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 (e.g., noSuchInstance for SNMPv2). Reporting a zero counter when occurrences cannot be counted would misinform management applications.

snmp

normative-requirement §3.1.6 MUST

For interfaces operating at 20 Mbps or less, 32-bit byte and packet counters MUST be used. For interfaces between 20 Mbps and 650 Mbps, 32-bit packet counters MUST be used and 64-bit octet counters MUST be used. For interfaces at 650 Mbps or faster, 64-bit packet AND 64-bit octet counters MUST be used.

snmp

normative-requirement §3.1.18 MUST

Management applications MUST be able to cope with responses revealing that some columnar objects within a conceptual ifTable row are missing or not available, as agents may omit objects whose values are not yet known.

snmp

normative-requirement §3.1.6 MUST

When 64-bit counters are in use, the corresponding 32-bit counters MUST still be available and MUST report the low 32 bits of the associated 64-bit count (e.g., ifInOctets reports the least significant 32 bits of ifHCInOctets). This requirement enhances interoperability with existing implementations.

snmp

protocol-element §3.1.5

ifCounterDiscontinuityTime records the sysUpTime value of the last counter discontinuity on an interface. Management applications must discard any calculated counter difference when this value differs between successive polls, in addition to checking sysUpTime for agent re-initialization.

snmp

protocol-element §3.1.7

ifHighSpeed reports the interface's current bandwidth in units of 1,000,000 bits/second (±500,000 bps precision), as a replacement for ifSpeed when ifSpeed would saturate at its maximum value of 4,294,967,295 bps (approximately 4.3 Gbps).

snmp

protocol-element §3.1.9

ifLinkUpDownTrapEnable (enabled/disabled) controls per-sub-layer generation of linkUp/linkDown traps. The default behavior is to generate traps only for the lowest sub-layer of each interface stack to limit trap proliferation from cascading state changes.

snmp

protocol-element §3.1.5

ifName contains the device's local console name for the interface (e.g., 'wan1'), which may be shared across multiple sub-layer ifTable entries representing components of the same interface. ifAlias is a non-volatile manager-assigned name that persists across reboots even if ifIndex is reassigned.

snmp

protocol-element §6

ifRcvAddressTable (indexed by ifIndex and ifRcvAddressAddress) records media-level addresses at which this interface receives packets, including unicast, multicast, and broadcast addresses. ifRcvAddressStatus (RowStatus) and ifRcvAddressType (other/volatile/nonVolatile) control lifecycle.

snmp

protocol-element §6

ifStackTable (indexed by ifStackHigherLayer and ifStackLowerLayer, both InterfaceIndex) defines the relationships between interface sub-layers. A row with ifStackHigherLayer=0 identifies the top of a stack; ifStackLowerLayer=0 identifies the bottom. ifStackStatus (RowStatus) controls row creation/deletion.

snmp

protocol-element §6

ifTable (ifEntry indexed by ifIndex) is the core MIB-II interfaces table; each conceptual row represents one interface sub-layer and contains ifIndex, ifDescr, ifType, ifMtu, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus, ifLastChange, packet/octet counters, and deprecated objects (ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, ifSpecific).

snmp

protocol-element §6

ifXTable (augmenting ifEntry) contains extension objects added by this memo: ifName, ifInMulticastPkts, ifInBroadcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts, ifHCInOctets, ifHCInUcastPkts, ifHCInMulticastPkts, ifHCInBroadcastPkts, ifHCOutOctets, ifHCOutUcastPkts, ifHCOutMulticastPkts, ifHCOutBroadcastPkts, ifLinkUpDownTrapEnable, ifHighSpeed, ifPromiscuousMode, ifConnectorPresent, ifAlias, and ifCounterDiscontinuityTime.

snmp

protocol-element §3.1.11

InterfaceIndex textual convention (Integer32, 1..2147483647) encapsulates the semantics of ifIndex and is intended to be imported by other MIB modules that need to reference interface sub-layers. InterfaceIndexOrZero extends it to permit zero for object-specific uses such as 'no interface' or 'all interfaces'.

snmp

protocol-element §3.1.15

LinkUp trap is generated just after ifOperStatus leaves the down state; linkDown trap is generated just before ifOperStatus enters the down state. Transitions to/from the notPresent state never generate linkUp/linkDown traps. Agents SHOULD rate-limit trap generation during interface 'flapping'.

snmp

protocol-element §3.1.6

Three high-capacity counter object groups are defined: ifHCFixedLengthGroup (64-bit octet counters for character/fixed-length interfaces), ifHCPacketGroup (64-bit octet counters for packet interfaces), and ifVHCPacketGroup (64-bit octet and packet counters for highest-speed packet interfaces).

snmp

security-consideration §9

The interfaces group MIB includes writable objects (notably ifAdminStatus and ifAlias) whose unauthorized modification could disrupt network connectivity or mislead management applications. Implementations should apply appropriate SNMP access controls to prevent unauthorized writes to these objects.

snmp, security

state-machine §3.1.14

For a non-lowest interface in an interface stack: ifOperStatus is 'up' if any lower interface is up; may be 'up' or 'dormant' if one or more lower interfaces are dormant and all others are non-up; and is 'lowerLayerDown' only when all lower interfaces are down, notPresent, lowerLayerDown, or testing.

snmp

state-machine §3.1.12

ifOperStatus has seven states: up(1) — passing packets; down(2) — not passing packets, possibly fault; testing(3) — no operational packets; unknown(4) — state indeterminate; dormant(5) — operable but awaiting external event; notPresent(6) — hardware component missing; lowerLayerDown(7) — down because a lower-layer interface is down. Transitions are driven by ifAdminStatus changes, hardware presence, and lower-layer state.

snmp

state-machine §3.1.13

When ifAdminStatus transitions to up, ifOperStatus MUST transition to: up if ready to send/receive; lowerLayerDown if blocked by a lower-layer interface; dormant if operable but awaiting external events; down if a fault is detected; unknown if state cannot be determined; testing if tests are in progress; or remain notPresent if hardware components are missing.

snmp