RFC 1650

Definitions of Managed Objects for the Ethernet-like Interface Types using SMIv2

πŸ“… published August 1994, from ietf

RFC 1650 πŸŽ€ Definitions of Managed Objects for the Ethernet-like Interface Types using SMIv2

  • Network Working Group πŸ’–
  • Request for Comments: 1650 ✨
  • Author: F. Kastenholz, FTP Software, Inc. 🧚
  • Category: Standards Track πŸ‘‘
  • Date: August 1994 πŸ“…
  • Obsoletes / Updates: The title block doesn't list anything under obsoletes or updates. The text does say this is an updated version of RFC 1398, and the Change Log in Section 3 explains what changed πŸ¦‹

Status of This Memo πŸ“œ

Okay bestie, this is a standards track protocol doc for the whole Internet community πŸ’… It's asking for discussion and suggestions for improvements 🫢 For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) πŸ”₯ Distribution of this memo is unlimited ✨

Table of Contents πŸ“š

   1. Introduction ..........................................    1
   2. The SNMPv2 Network Management Framework ...............    2
   2.1 Object Definitions ...................................    2
   3. Change Log ............................................    2
   4. Overview ..............................................    3
   4.1 Relation to RFC 1213 .................................    4
   4.2 Relation to RFC 1573 .................................    4
   4.2.1 Layering Model .....................................    4
   4.2.2 Virtual Circuits ...................................    4
   4.2.3 ifTestTable ........................................    4
   4.2.4 ifRcvAddressTable ..................................    5
   4.2.5 ifPhysAddress ......................................    5
   4.2.6 ifType .............................................    6
   5. Definitions ...........................................    6
   6. Acknowledgements ......................................   18
   7. References ............................................   19
   8. Security Considerations ...............................   20
   9. Author's Address ......................................   20

1. Introduction 🌸

Okay so this memo defines a chunk of the Management Information Base (MIB) for network management protocols in the Internet community πŸ¦‹ Specifically, it defines objects for managing ethernet-like objects πŸ’œ

It also includes a MIB module. This module fixes minor errors in the earlier version of this MIB, RFC 1398 [15] ✨ It also re-specifies that MIB so it's compliant with the SNMPv2 SMI and semantically identical to the existing SNMPv1-based definitions. Main character energy πŸ‘‘

2. The SNMPv2 Network Management Framework 🧚

The SNMPv2 Network Management Framework is made up of four major components. They are:

  • RFC 1442 [16] defines the SMI, which is the mechanisms used for describing and naming objects for the purpose of management πŸ’…
  • STD 17, RFC 1213 [6] defines MIB-II, the core set of managed objects for the Internet suite of protocols πŸŽ€
  • RFC 1445 [17] defines the administrative and other architectural aspects of the framework 🌈
  • RFC 1448 [18] defines the protocol used for network access to managed objects ⭐

The Framework permits new objects to be defined for experimentation and evaluation. Iykyk, it's giving research era πŸ”¬

2.1. Object Definitions πŸ“

Managed objects are accessed via a virtual information store, which is called the Management Information Base or MIB πŸ’– Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [7] defined in the SMI [16]. Each object type is named by an OBJECT IDENTIFIER, which is an administratively assigned name πŸ¦‹

The object type together with an object instance serves to uniquely identify a specific instantiation of the object. For human convenience, we often use a textual string, called the descriptor, to refer to the object type πŸ’œ

3. Change Log πŸ“

This section lists the changes made to RFC 1398 to produce this document. Here's the tea β˜•

  1. The "boilerplate" was changed to reflect the new boilerplate for SNMPv2 ✨
  2. A section describing the applicability of various parts of RFC 1573 to ethernet-like interfaces has been added 🧚
  3. A minor error in the description of the TDR test was fixed πŸ™ˆ
  4. A loopback test was defined to replace the standard loopback test that was defined in RFC 1229 πŸ”
  5. The description of dot3CollFrequencies was made a bit clearer πŸ’…
  6. A new object, EtherChipset, has been added. This object replaces the ifExtnsChipSet object, which has been removed per the Interface MIB Evolution effort 🌸
  7. Several minor editorial changes, spelling corrections, grammar and punctuation corrections, and so forth, were made πŸ’€

4. Overview πŸ”­

Instances of these object types represent attributes of an interface to an ethernet-like communications medium. Right now, ethernet-like media are identified by three values of the ifType object in the Internet-standard MIB πŸ“

      ethernet-csmacd(6)
      iso88023-csmacd(7)
      starLan(11)

For these interfaces, the value of the ifSpecific variable in the MIB-II [6] has the OBJECT IDENTIFIER value:

   dot3    OBJECT IDENFIER ::= { transmission 7 }

The definitions here are based on the IEEE 802.3 Layer Management Specification [9], as originally interpreted by Frank Kastenholz then of Interlan in [10]. Implementors of these MIB objects should note that the IEEE document explicitly describes (in the form of Pascal pseudocode) when, where, and how various MAC attributes are measured. The IEEE document also describes the effects of MAC actions that may be invoked by manipulating instances of the MIB objects defined here 🧠

To the extent that some attributes defined in [9] are already represented by previously defined objects in the Internet-standard MIB or in the Generic Interface Extensions MIB [11], those attributes are not redundantly represented by objects defined in this memo. Among the attributes represented by objects in other memos are the number of octets transmitted or received on a particular interface, the number of frames transmitted or received on a particular interface, the promiscuous status of an interface, the MAC address of an interface, and multicast information associated with an interface πŸ’œ

4.1. Relation to RFC 1213 🫧

This section applies only when this MIB is used with the "old" (i.e., pre-RFC 1573) interface group πŸ•°οΈ

The relationship between an ethernet-like interface and an interface in the context of the Internet-standard MIB is one-to-one. As such, the value of an ifIndex object instance can be directly used to identify corresponding instances of the objects defined herein πŸ”—

4.2. Relation to RFC 1573 🌈

RFC 1573, the Interface MIB Evolution, requires that any MIB which is an adjunct of the Interface MIB clarify specific areas within the Interface MIB. These areas were intentionally left vague in RFC 1573 so they don't over constrain the MIB and accidentally rule out managing certain media-types πŸ™ƒ

Section 3.3 of RFC 1573 lists several areas which a media-specific MIB must clarify. Each of these areas gets its own subsection below. The implementor is referred to RFC 1573 to understand the general intent of these areas πŸ“–

4.2.1. Layering Model πŸ₯ž

This MIB does not provide for layering. There are no sublayers πŸ™…β€β™€οΈ

EDITOR'S NOTE: There could be a future 802.2 MIB and a future enet-transceiver MIB. They could be higher and lower sublayers, respectively. All THIS document should do is hint at those possibilities and urge the implementor to be aware of them, since they may have requirements that supersede the requirements in this document. πŸ‘€

4.2.2. Virtual Circuits 🚫

This medium does not support virtual circuits, so this area is not applicable to this MIB. Nothing to see here, bestie πŸ’€

4.2.3. ifTestTable πŸ§ͺ

This MIB defines two tests for media that are instrumented with this MIB: TDR and Loopback. Implementation of these tests is not required. Lots of common interface chips don't support one or both of these tests 😬

These two tests are provided as a convenience, so there's a common method to invoke the test 🫢

Standard MIBs don't include objects to return the results of the TDR test. Any needed objects MUST be provided in the vendor specific MIB ⚠️

4.2.4. ifRcvAddressTable πŸ“¬

This table contains all IEEE 802.3 addresses, unicast, multicast, and broadcast, for which this interface will receive packets and forward them up to a higher layer entity for local consumption. The format of the address, contained in ifRcvAddressAddress, is the same as for ifPhysAddress πŸ’Œ

If the interface is part of a MAC bridge, this table does not include unicast addresses that are accepted for possible forwarding out some other port. This table is explicitly not intended to provide a bridge address filtering mechanism 🚧

4.2.5. ifPhysAddress πŸͺͺ

This object contains the IEEE 802.3 address that is placed in the source-address field of any Ethernet, Starlan, or IEEE 802.3 frames that originate at this interface. Usually this will be kept in ROM on the interface hardware. Some systems may set this address via software πŸ’Ύ

In a system with several such addresses, the designer has a tougher choice. The address chosen should be the one most likely to be of use to network management (e.g., the address placed in ARP responses for systems which are primarily IP systems) πŸ€”

If the designer truly can not choose, using the factory-provided ROM address is suggested 🏭

If the address can not be determined, an octet string of zero length should be returned πŸ«₯

The address is stored in binary in this object. The address is stored in "canonical" bit order, which means the Group Bit is positioned as the low-order bit of the first octet. So the first byte of a multicast address would have the bit 0x01 set πŸ”’

4.2.6. ifType 🏷️

This MIB applies to interfaces that have any of the following three ifType values:

      ethernet-csmacd(6)
      iso88023-csmacd(7)
      starLan(11)

Interfaces with any of these ifType values map to the EtherLike-MIB in the same manner. The EtherLike-MIB applies equally to all three types, and there are no implementation differences πŸ₯°

5. Definitions πŸ’Ž

EtherLike-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32,
       Integer32,                               FROM SNMPv2-SMI
       TEXTUAL-CONVENTION, PhysAddress,         FROM SNMPv2-TC
       MODULE-COMPLIANCE, OBJECT-GROUP          FROM SNMPv2-CONF
       ifIndex, ifEntry                         FROM IF-MIB
       mib-2                                    FROM RFC1213-MIB;

   etherMIB MODULE-IDENTITY
       LAST-UPDATED "9402030400Z"
       ORGANIZATION "IETF Interfaces MIB Working Group"
       CONTACT-INFO

        "        Frank Kastenholz

         Postal: FTP Software
                 2 High Street
                 North Andover, MA 01845
                 US

            Tel: +1 508 685 4000
         E-Mail: kasten@ftp.com"
       DESCRIPTION
     "The MIB module to describe generic objects for
     Ethernet-like network interfaces. This MIB is an
     updated version of the Ethernet-like MIB in RFC
     1398."
       ::= { mib-2 35 }

   etherMIBObjects OBJECT IDENTIFIER ::= { etherMIB 1 }
   dot3    OBJECT IDENTIFIER ::= { transmission 7 }

   -- the Ethernet-like Statistics group

okay so this is where the big table lives πŸŽ€ dot3StatsTable is a whole collection of stats for ethernet-like interfaces on one system, and dot3StatsEntry is one row per interface. the row index is dot3StatsIndex, and it points at the same interface as ifIndex. so they line up perfectly πŸ’–

    dot3StatsTable  OBJECT-TYPE
         SYNTAX     SEQUENCE OF Dot3StatsEntry
         MAX-ACCESS not-accessible
         STATUS     current
         DESCRIPTION
          "Statistics for a collection of ethernet-like
          interfaces attached to a particular system."
         ::= { dot3 2 }


    dot3StatsEntry   OBJECT-TYPE
         SYNTAX      Dot3StatsEntry
         MAX-ACCESS  not-accessible
         STATUS      current
         DESCRIPTION
           "Statistics for a particular interface to an
           ethernet-like medium."
         INDEX       { dot3StatsIndex }
         ::= { dot3StatsTable 1 }

    Dot3StatsEntry ::= SEQUENCE {
         dot3StatsIndex                      INTEGER,
         dot3StatsAlignmentErrors            Counter32,
         dot3StatsFCSErrors                  Counter32,
         dot3StatsSingleCollisionFrames      Counter32,
         dot3StatsMultipleCollisionFrames    Counter32,
         dot3StatsSQETestErrors              Counter32,
         dot3StatsDeferredTransmissions      Counter32,
         dot3StatsLateCollisions             Counter32,
         dot3StatsExcessiveCollisions        Counter32,
         dot3StatsInternalMacTransmitErrors  Counter32,
         dot3StatsCarrierSenseErrors         Counter32,
         dot3StatsFrameTooLongs              Counter32,
         dot3StatsInternalMacReceiveErrors   Counter32,
                 dot3StatsEtherChipSet               OBJECT IDENTIFIER
    }

    dot3StatsIndex   OBJECT-TYPE
         SYNTAX      INTEGER
         ACCESS      read-only
         STATUS      mandatory
         DESCRIPTION
           "An index value that uniquely identifies an
           interface to an ethernet-like medium.  The
           interface identified by a particular value of
           this index is the same interface as identified
           by the same value of ifIndex."
         ::= { dot3StatsEntry 1 }

dot3StatsAlignmentErrors and dot3StatsFCSErrors πŸ”₯

these two are like sibling errors πŸ‘―β€β™€οΈ dot3StatsAlignmentErrors counts frames that are not a whole number of octets AND fail the FCS check. dot3StatsFCSErrors counts frames that are a whole number of octets but still fail the FCS check. both get bumped when the MAC service hands the matching error status up to the LLC (or whatever MAC user is listening). and if a frame has more than one error going on, IEEE 802.3 Layer Management says it only gets counted once, based on the error status the LLC was shown. no double dipping πŸ™…β€β™€οΈ

    dot3StatsAlignmentErrors   OBJECT-TYPE
         SYNTAX     Counter32
         MAX-ACCESS read-only
         STATUS     current
         DESCRIPTION
          "A count of frames received on a particular
          interface that are not an integral number of
          octets in length and do not pass the FCS check.

          The count represented by an instance of this
          object is incremented when the alignmentError
          status is returned by the MAC service to the
          LLC (or other MAC user). Received frames for
          which multiple error conditions obtain are,
          according to the conventions of IEEE 802.3
          Layer Management, counted exclusively according
          to the error status presented to the LLC."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 2 }


    dot3StatsFCSErrors   OBJECT-TYPE
         SYNTAX      Counter32
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
         "A count of frames received on a particular
         interface that are an integral number of octets
         in length but do not pass the FCS check.

         The count represented by an instance of this
         object is incremented when the frameCheckError
         status is returned by the MAC service to the
         LLC (or other MAC user). Received frames for
         which multiple error conditions obtain are,
         according to the conventions of IEEE 802.3
         Layer Management, counted exclusively according
         to the error status presented to the LLC."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 3 }

dot3StatsSingleCollisionFrames and dot3StatsMultipleCollisionFrames πŸ’œ

collisions, but make it organized πŸ“‹ dot3StatsSingleCollisionFrames is for frames that got through successfully, but only after exactly one collision held them up. dot3StatsMultipleCollisionFrames is the same vibe for frames that needed more than one collision before they went through. a frame in either count also shows up in ifOutUcastPkts, ifOutMulticastPkts, or ifOutBroadcastPkts, and it is not in the other collision count. one or the other, never both, periodt πŸ’…

    dot3StatsSingleCollisionFrames   OBJECT-TYPE
         SYNTAX      Counter32
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
         "A count of successfully transmitted frames on
         a particular interface for which transmission
         is inhibited by exactly one collision.

         A frame that is counted by an instance of this
         object is also counted by the corresponding
         instance of either the ifOutUcastPkts,
         ifOutMulticastPkts, or ifOutBroadcastPkts,
         and is not counted by the corresponding
         instance of the dot3StatsMultipleCollisionFrames
         object."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 4 }


    dot3StatsMultipleCollisionFrames   OBJECT-TYPE
         SYNTAX      Counter32
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
         "A count of successfully transmitted frames on
         a particular interface for which transmission
          is inhibited by more than one collision.

         A frame that is counted by an instance of this
         object is also counted by the corresponding
         instance of either the ifOutUcastPkts,
         ifOutMulticastPkts, or ifOutBroadcastPkts,
         and is not counted by the corresponding
         instance of the dot3StatsSingleCollisionFrames
         object."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 5 }

dot3StatsSQETestErrors πŸ§ͺ

this one's got a paper trail, ngl πŸ“œ dot3StatsSQETestErrors counts how many times the PLS sublayer generates an SQE TEST ERROR message on a given interface. that message is defined in section 7.2.2.2.4 of ANSI/IEEE 802.3-1985, and the section on how it gets generated is 7.2.4.6 of that same document. it's citing the source material like a good academic πŸ€“

    dot3StatsSQETestErrors   OBJECT-TYPE
         SYNTAX     Counter32
         MAX-ACCESS read-only
         STATUS     current
         DESCRIPTION
         "A count of times that the SQE TEST ERROR
         message is generated by the PLS sublayer for a
         particular interface. The SQE TEST ERROR
         message is defined in section 7.2.2.2.4 of
         ANSI/IEEE 802.3-1985 and its generation is
         described in section 7.2.4.6 of the same
         document."
         REFERENCE
         "ANSI/IEEE Std 802.3-1985 Carrier Sense
         Multiple Access with Collision Detection Access
         Method and Physical Layer Specifications"
         ::= { dot3StatsEntry 6 }

dot3StatsDeferredTransmissions and dot3StatsLateCollisions πŸ¦‹

timing is everything, bestie ⏱️ dot3StatsDeferredTransmissions counts frames whose first transmission attempt gets pushed back because the medium is busy. collisions don't count toward this one, so keep those separate in your head 🧠 dot3StatsLateCollisions is about collisions that happen after the 512 bit-times mark into a packet. 512 bit-times works out to 51.2 microseconds on a 10 Mbit/s system. a late collision also counts as a regular (generic) collision for the other collision stats, so it's in both places. very layered, very iconic 🌈

    dot3StatsDeferredTransmissions   OBJECT-TYPE
         SYNTAX      Counter32
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
         "A count of frames for which the first
         transmission attempt on a particular interface
         is delayed because the medium is busy.

         The count represented by an instance of this
         object does not include frames involved in
         collisions."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 7 }

    dot3StatsLateCollisions   OBJECT-TYPE
         SYNTAX      Counter32
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
         "The number of times that a collision is
         detected on a particular interface later than
         512 bit-times into the transmission of a
         packet.

         Five hundred and twelve bit-times corresponds
         to 51.2 microseconds on a 10 Mbit/s system. A
         (late) collision included in a count
         represented by an instance of this object is
         also considered as a (generic) collision for
         purposes of other collision-related
         statistics."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 8 }

dot3StatsExcessiveCollisions, dot3StatsInternalMacTransmitErrors, and dot3StatsCarrierSenseErrors 🚨

the transmit-side drama bestie 😭 dot3StatsExcessiveCollisions counts frames that fail to transmit because of excessive collisions. dot3StatsInternalMacTransmitErrors counts frames that fail to transmit because of an internal MAC sublayer transmit error. the catch is that a frame only shows up here if it isn't already counted in late collisions, excessive collisions, or carrier sense errors. and the exact meaning of this one is up to each implementation, so it might also count transmit errors that aren't tracked anywhere else πŸ€·β€β™€οΈ dot3StatsCarrierSenseErrors counts the times carrier sense was lost or never asserted when trying to send a frame. it gets bumped at most once per transmission attempt, even if carrier sense flickers during that attempt. one attempt, one count, that's the rule πŸ’…

    dot3StatsExcessiveCollisions   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "A count of frames for which transmission on a
         particular interface fails due to excessive
         collisions."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 9 }


    dot3StatsInternalMacTransmitErrors   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "A count of frames for which transmission on a
         particular interface fails due to an internal
         MAC sublayer transmit error. A frame is only
         counted by an instance of this object if it is
         not counted by the corresponding instance of
         either the dot3StatsLateCollisions object, the
         dot3StatsExcessiveCollisions object, or the
         dot3StatsCarrierSenseErrors object.

         The precise meaning of the count represented by
         an instance of this object is implementation-
         specific.  In particular, an instance of this
         object may represent a count of transmission
         errors on a particular interface that are not
         otherwise counted."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 10 }

    dot3StatsCarrierSenseErrors   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "The number of times that the carrier sense
         condition was lost or never asserted when
         attempting to transmit a frame on a particular
         interface.

         The count represented by an instance of this
         object is incremented at most once per
         transmission attempt, even if the carrier sense
         condition fluctuates during a transmission
         attempt."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 11 }

dot3StatsFrameTooLongs and dot3StatsInternalMacReceiveErrors πŸ“¦

receive side, we see you πŸ‘€ dot3StatsFrameTooLongs counts frames received on an interface that go over the maximum permitted frame size. it gets incremented when the frameTooLong status is handed up from the MAC service to the LLC (or other MAC user), and multi-error frames follow the same IEEE 802.3 Layer Management rule: counted once, by the error status the LLC saw. dot3StatsInternalMacReceiveErrors counts frames where reception fails because of an internal MAC sublayer receive error. same deal as its transmit cousin: a frame only lands here if it isn't already counted in FrameTooLongs, AlignmentErrors, or FCSErrors, and what it means is up to the implementation. also heads up, entries 12, 14, and 15 aren't assigned, so the numbering just skips them πŸ™ˆ

    -- { dot3StatsEntry 12 } is not assigned

    dot3StatsFrameTooLongs   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "A count of frames received on a particular
         interface that exceed the maximum permitted
         frame size.

         The count represented by an instance of this
         object is incremented when the frameTooLong
         status is returned by the MAC service to the
         LLC (or other MAC user). Received frames for
         which multiple error conditions obtain are,
         according to the conventions of IEEE 802.3
         Layer Management, counted exclusively according
         to the error status presented to the LLC."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 13 }

    -- { dot3StatsEntry 14 } is not assigned

    -- { dot3StatsEntry 15 } is not assigned

    dot3StatsInternalMacReceiveErrors   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "A count of frames for which reception on a
         particular interface fails due to an internal
         MAC sublayer receive error. A frame is only
         counted by an instance of this object if it is
         not counted by the corresponding instance of
         either the dot3StatsFrameTooLongs object, the
         dot3StatsAlignmentErrors object, or the
         dot3StatsFCSErrors object.

         The precise meaning of the count represented by
         an instance of this object is implementation-
         specific.  In particular, an instance of this
         object may represent a count of receive errors
         on a particular interface that are not
         otherwise counted."
         REFERENCE
         "IEEE 802.3 Layer Management"
         ::= { dot3StatsEntry 16 }

okay so we're picking up right where the MIB definitions left off πŸ’– next up: the chipset object, the collision histogram, the TDR test, the loopback test, and the chipset registry. let's gooo πŸ¦‹

dot3StatsEtherChipSet is the "which chip is actually doing the work?" object πŸ”₯

    dot3StatsEtherChipSet   OBJECT-TYPE
         SYNTAX        OBJECT IDENTIFIER
         MAX-ACCESS    read-only
         STATUS        current
         DESCRIPTION
         "This object contains an OBJECT IDENTIFIER
         which identifies the chipset used to
         realize the interface. Ethernet-like
         interfaces are typically built out of
         several different chips. The MIB implementor
         is presented with a decision of which chip
         to identify via this object. The implementor
         should identify the chip which is usually
         called the Medium Access Control chip.
         If no such chip is easily identifiable,
         the implementor should identify the chip
         which actually gathers the transmit
         and receive statistics and error
         indications. This would allow a
         manager station to correlate the
         statistics and the chip generating
         them, giving it the ability to take
         into account any known anomalies
         in the chip."
         ::= { dot3StatsEntry 17 }

so the vibe here is: an Ethernet-like interface is usually built from a bunch of chips 🧚 the implementor gets to pick which one gets named. the go-to pick is the one usually called the Medium Access Control chip. if that one isn't easy to spot, pick the chip that actually collects the transmit and receive stats and error indications instead. the whole point is that a manager station can line up the stats with the chip that made them, so it can account for any known quirks in that chip πŸ’…


the Ethernet-like Collision Statistics group is next, and it's giving histogram energy πŸ“Š

    -- the Ethernet-like Collision Statistics group

    -- Implementation of this group is optional; it is appropriate
    -- for all systems which have the necessary metering

    dot3CollTable   OBJECT-TYPE
         SYNTAX    SEQUENCE OF Dot3CollEntry
         MAX-ACCESS    not-accessible
         STATUS    current
         DESCRIPTION
         "A collection of collision histograms for a
         particular set of interfaces."
         ::= { dot3 5 }


    dot3CollEntry   OBJECT-TYPE
         SYNTAX    Dot3CollEntry
         MAX-ACCESS    not-accessible
         STATUS    current
         DESCRIPTION
         "A cell in the histogram of per-frame
         collisions for a particular interface.  An
         instance of this object represents the
         frequency of individual MAC frames for which
         the transmission (successful or otherwise) on a
         particular interface is accompanied by a
         particular number of media collisions."
         INDEX     { ifIndex, dot3CollCount }
         ::= { dot3CollTable 1 }

    Dot3CollEntry ::= SEQUENCE {
         dot3CollCount        INTEGER,
         dot3CollFrequencies  Counter32
    }

    -- { dot3CollEntry 1 } is no longer in use

    dot3CollCount   OBJECT-TYPE
         SYNTAX    INTEGER (1..16)
         MAX-ACCESS    not-accessible
         STATUS    current
         DESCRIPTION
         "The number of per-frame media collisions for
         which a particular collision histogram cell
         represents the frequency on a particular
         interface."
         ::= { dot3CollEntry 2 }


    dot3CollFrequencies   OBJECT-TYPE
         SYNTAX    Counter32
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
         "A count of individual MAC frames for which the
         transmission (successful or otherwise) on a
         particular interface occurs after the
         frame has experienced exactly the number
         of collisions in the associated
         dot3CollCount object.

         For example, a frame which is transmitted
         on interface 77 after experiencing
         exactly 4 collisions would be indicated
         by incrementing only dot3CollFrequencies.77.4.
         No other instance of dot3CollFrequencies would
         be incremented in this example."
         ::= { dot3CollEntry 3 }

    --  802.3 Tests

    dot3Tests   OBJECT IDENTIFIER ::= { dot3 6 }

    dot3Errors  OBJECT IDENTIFIER ::= { dot3 7 }

the collision table is basically a scoreboard for how many frames needed exactly N collisions before they got through πŸŽ€ each cell counts frames that were sent (successfully or not) after exactly that many collisions. so a frame on interface 77 that hit exactly 4 collisions only bumps dot3CollFrequencies.77.4, and nothing else moves. it's optional, but the doc says it's highly recommended for any system that has the metering for it 🌸


the TDR test is up next, and it's a whole detective vibe πŸ•΅οΈβ€β™€οΈ

    --  TDR Test

    -- The Time-Domain Reflectometry (TDR) test is specific
    -- to ethernet-like interfaces with the exception of
    -- 10BaseT and 10BaseF. The TDR value may be useful
    -- in determining the approximate distance to a cable fault.
    -- It is advisable to repeat this test to check for a
    -- consistent resulting TDR value, to verify that there
    -- is a fault.

    dot3TestTdr OBJECT IDENTIFIER ::= { dot3Tests 1 }

    -- A TDR test returns as its result the time interval,
    -- measured in 10 MHz ticks or 100 nsec units, between
    -- the start of TDR test transmission and the subsequent
    -- detection of a collision or deassertion of carrier.  On
    -- successful completion of a TDR test, the result is
    -- stored as the value of the appropriate instance of the
    -- MIB object dot3TestTdrValue, and the OBJECT IDENTIFIER
    -- of that instanceis stored in the corresponding instance
    -- of ifExtnsTestCode (thereby indicating where the
    -- result has been stored).

so the TDR test is for Ethernet-like interfaces, except 10BaseT and 10BaseF πŸ™ˆ the value can help estimate how far away a cable fault is, and the doc says it's a good idea to run it again so you can check that the result stays consistent and really confirm there's a fault. the result is a time interval, measured in 10 MHz ticks (100 nsec units), from when the TDR transmission starts until a collision or carrier deassertion gets detected. when it finishes, the value lands in dot3TestTdrValue, and the OBJECT IDENTIFIER of that instance gets stored in ifExtnsTestCode so you know where to find it πŸ’œ


the loopback test is the full-duplex one, and it's kind of intense 😭

    -- Loopback Test

    -- Another test is the full-duplex loopback test.
    -- This test configures the MAC chip and executes
    -- an internal loopback test of memory, data paths,
    -- and the MAC chip logic.  This loopback test can
    -- only be executed if the interface is offline.
    -- Once the test has completed, the MAC chip should
    -- be reinitialized for network operation, but it
    -- should remain offline.

    dot3TestLoopBack OBJECT IDENTIFIER ::= { dot3Tests 2 }

    -- If an error occurs during a test, the object
    -- ifTestResult (defined in RFC1573) will be set
    -- to failed(7).  The following two OBJECT
    -- IDENTIFIERs may be used to provided more
    -- information as values for ifTestCode.

             -- couldn't initialize MAC chip for test
    dot3ErrorInitError     OBJECT IDENTIFIER ::= { dot3Errors 1 }

             -- expected data not received (or not
             -- received correctly) in loopback test
    dot3ErrorLoopbackError OBJECT IDENTIFIER ::= { dot3Errors 2 }

this one configures the MAC chip and runs an internal loopback check on memory, data paths, and the MAC chip logic πŸ§ͺ it can only run while the interface is offline. afterwards, the MAC chip should get reinitialized for network operation, but the interface should stay offline. if a test fails, ifTestResult gets set to failed(7), and the two error OBJECT IDENTIFIERs give you more detail through ifTestCode: one for "couldn't initialize MAC chip for test", and one for "expected data not received (or not received correctly) in loopback test" 😀


the chipset registry is the throwback section πŸ•°οΈ the doc says RFC1573 dropped the interface chipset object, so these are only kept around for backwards compatibility with pre-RFC1573 systems 🫢

    -- RFC1573 does away with the interface chipset object.
    -- The following OBJECT IDENTIFIER definitions are
    -- retained for purposes of backwards compatibility
    -- with pre-RFC1573 systems.
    --  802.3 Hardware Chipsets

    -- The object ifExtnsChipSet is provided in RFC1229 to
    -- identify the MAC hardware used to communicate on an
    -- interface.  The following hardware chipsets are
    -- provided for 802.3:

    dot3ChipSets          OBJECT IDENTIFIER ::= { dot3 8 }
    dot3ChipSetAMD        OBJECT IDENTIFIER ::= { dot3ChipSets 1 }
    dot3ChipSetAMD7990    OBJECT IDENTIFIER ::= { dot3ChipSetAMD 1 }
    dot3ChipSetAMD79900   OBJECT IDENTIFIER ::= { dot3ChipSetAMD 2 }
    dot3ChipSetAMD79C940  OBJECT IDENTIFIER ::= { dot3ChipSetAMD 3 }

    dot3ChipSetIntel      OBJECT IDENTIFIER ::= { dot3ChipSets 2 }
    dot3ChipSetIntel82586 OBJECT IDENTIFIER ::= { dot3ChipSetIntel 1 }
    dot3ChipSetIntel82596 OBJECT IDENTIFIER ::= { dot3ChipSetIntel 2 }

    dot3ChipSetSeeq       OBJECT IDENTIFIER ::= { dot3ChipSets 3 }
    dot3ChipSetSeeq8003   OBJECT IDENTIFIER ::= { dot3ChipSetSeeq 1 }

    dot3ChipSetNational      OBJECT IDENTIFIER ::= { dot3ChipSets 4 }
    dot3ChipSetNational8390  OBJECT IDENTIFIER ::=
                               { dot3ChipSetNational 1 }
    dot3ChipSetNationalSonic OBJECT IDENTIFIER ::=
                               { dot3ChipSetNational 2 }

    dot3ChipSetFujitsu       OBJECT IDENTIFIER ::= { dot3ChipSets 5 }
    dot3ChipSetFujitsu86950  OBJECT IDENTIFIER ::=
                               { dot3ChipSetFujitsu 1 }

    dot3ChipSetDigital       OBJECT IDENTIFIER ::= { dot3ChipSets 6 }
    dot3ChipSetDigitalDC21040  OBJECT IDENTIFIER ::=
                               { dot3ChipSetDigital 1 }

    -- For those chipsets not represented above, OBJECT IDENTIFIER
    -- assignment is required in other documentation, e.g., assignment
    -- within that part of the registration tree delegated to
    -- individual enterprises (see RFC1155).

so the older chipsets each get their own OBJECT IDENTIFIER, grouped by vendor: AMD, Intel, Seeq, National, Fujitsu, and Digital πŸ“ anything that isn't listed here needs its OBJECT IDENTIFIER assigned somewhere else in the docs, like in the part of the registration tree that's delegated to individual enterprises (see RFC1155) 🌈


Last bit of the MIB: the conformance info, which is how the whole module gets its groups and compliance statements ✨

   -- conformance information

   etherConformance OBJECT IDENTIFIER ::= { etherMIB 2 }

   etherGroups      OBJECT IDENTIFIER ::= { etherConformance 1 }
   etherCompliances OBJECT IDENTIFIER ::= { etherConformance 2 }


   -- compliance statements

   etherCompliance MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
     "The compliance statement for SNMPv2 entities which
     have ethernet-like network interfaces."

       MODULE  -- this module
 MANDATORY-GROUPS { etherStatsGroup }

 GROUP       etherCollisionTableGroup
 DESCRIPTION
     "This group is optional. It is appropriate for
      all systems which have the necessary metering.
      Implementation in such systems is highly
      recommended."
       ::= { etherCompliances 1 }

   -- units of conformance

   etherStatsGroup    OBJECT-GROUP
       OBJECTS { dot3StatsIndex, dot3StatsAlignmentErrors,
       dot3StatsFCSErrors,
       dot3StatsSingleCollisionFrames,
       dot3StatsMultipleCollisionFrames,
       dot3StatsSQETestErrors,
       dot3StatsDeferredTransmissions,
       dot3StatsLateCollisions,
       dot3StatsExcessiveCollisions,
       dot3StatsInternalMacTransmitErrors,
       dot3StatsCarrierSenseErrors,
       dot3StatsFrameTooLongs,
       dot3StatsInternalMacReceiveErrors,
       dot3StatsEtherChipSet}
       STATUS  current
       DESCRIPTION
     "A collection of objects providing information
     applicable to all ethernet-like network interfaces."
       ::= { etherGroups 1 }


   etherCollisionTableGroup    OBJECT-GROUP
       OBJECTS { dot3CollCount, dot3CollFrequencies }
       STATUS  current
       DESCRIPTION
     "A collection of objects providing a histogram
     of packets successfully transmitted after
     experiencing exactly N collisions."
       ::= { etherGroups 2 }
END

the compliance stuff is where the groups get their names and rules: etherStatsGroup is the mandatory one, with all the stats objects, and etherCollisionTableGroup is the optional collision histogram one πŸŽ€ it's the bit that tells implementers what they've signed up for πŸ’…


6. Acknowledgements 🫢

This doc was produced by the Ethernet MIB Working Group. πŸ’œ

It's based on the Proposed Standard Ethernet MIB, RFC 1284 [14], which Jihn Cook of Chipcom edited. The Ethernet MIB Working Group collected real implementation experience with the variables in RFC 1284 and used that info to build this revised MIB πŸ”₯

RFC 1284 was itself based on a doc Frank Kastenholz of Interlan wrote, titled IEEE 802.3 Layer Management Draft M compatible MIB for TCP/IP Networks [10]. This one got a modest makeover, first by the SNMP Working Group and then by the Transmission Working Group, so it matches the current conventions for defining MIB objects πŸŽ€ James Davin of the MIT Laboratory for Computer Science and Keith McCloghrie of Hughes LAN Systems helped with later drafts. Marshall Rose of Performance Systems International, Inc. turned it into its current concise format ✨ Anil Rijsinghani of DEC wrote text that describes the TDR test more adequately πŸ¦‹

Thanks to Frank Kastenholz of Interlan and Louis Steinberg of IBM for their experimentation! 🌈

7. References 🧾

okay so these are the receipts 🧾 every single source this doc leans on, and I'm keeping every detail because citations are sacred bestie 🫢

  • [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, NRI, April 1988.
  • [2] Cerf, V., "Report of the Second Ad Hoc Network Management Review Group," RFC 1109, NRI, August 1989.
  • [3] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", STD 16, RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
  • [4] McCloghrie K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1156, Hughes LAN Systems, Performance Systems International, May 1990.
  • [5] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, SNMP Research, Performance Systems International, Performance Systems International, MIT Laboratory for Computer Science, May 1990.
  • [6] McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", STD 17, RFC 1213, Performance Systems International, March 1991.
  • [7] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987.
  • [8] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, International Standard 8825, December 1987.
  • [9] IEEE, IEEE 802.3 Layer Management, November 1988.
  • [10] Kastenholz, F., "IEEE 802.3 Layer Management Draft compatible MIB for TCP/IP Networks", electronic mail message to mib-wg@nnsc.nsf.net, 9 June 1989.
  • [11] McCloghrie, K., Editor, "Extensions to the Generic-Interface MIB, RFC 1229, Hughes LAN Systems", Inc., May 1991.
  • [12] IEEE, Carrier Sense Multiple Access with Collision Detection (CSMA/CD) Access Method and Physical Layer Specifications, ANSI/IEEE Std 802.3-1985.
  • [13] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", STD 16, RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
  • [14] Cook, J., "Definitions of Managed Objects for Ethernet-Like Interface Types", RFC 1284, Chipcom Corporation, December 1991.
  • [15] Kastenholz, F., "Definitions of Managed Objects for the Ethernet-like Interface Types", RFC 1398, FTP Software, Inc., January 1993.
  • [16] Case, J., McCloghrie, K. Rose, M, and S. Waldbusser, "Structure of Management Information for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1442, SNMP Research, Inc., Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon University, April 1993.
  • [17] Davin, J., and K. McCloghrie, "Administrative Model for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1445, Trusted Information Systems, Hughes LAN Systems, April 1993.
  • [18] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1448, SNMP Research, Inc., Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon University, April 1993.
  • [19] McCloghrie, K., and F. Kastenholz, "Evolution of the Interfaces Group of MIB-II RFC 1573", Hughes LAN Systems, FTP Software, January 1994.

8. Security Considerations πŸ’€

okay this one is short but it's SERIOUS bestie 😭 the memo itself says it plainly:

Security issues are not discussed in this memo. πŸ”’

so no security guidance lives in this doc, full stop. please don't go assuming anything about security from what's here πŸ™ˆ


9. Author's Address πŸ’–

and here's who wrote it πŸŽ€ Frank Kastenholz from FTP Software, Inc. (you can reach him at the details below):

Frank Kastenholz
FTP Software, Inc.
2 High Street
North Andover, Mass, USA 01845

Phone: 508-685-4000
EMail: kasten@ftp.com

that's the whole doc, bestie 🌈✨ you did it πŸ‘‘

πŸ“¦ where this page comes from