RFC 3635
Definitions of Managed Objects for the Ethernet-like Interface Types
RFC 3635 ๐
- Network Working Group ๐
- Request for Comments: 3635
- Title: Definitions of Managed Objects for the Ethernet-like Interface Types
- Author: J. Flick, Hewlett-Packard Company
- Date: September 2003
- Category: Standards Track
- Obsoletes: 2665 (RFC 2665)
- Updates: the specification in RFC 2665 (see the Abstract)
Status of This Memo ๐ธ
Okay so this is an Internet standards track protocol for the whole Internet community, and it's literally asking for discussion and suggestions for improvements ๐ซถ. If you want the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). And distribution of this memo is unlimited ๐ .
Copyright Notice ๐ฆ
Copyright (C) The Internet Society (2003). All Rights Reserved.
Abstract โจ
This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community. It's all about objects for managing Ethernet-like interfaces ๐ง. This memo obsoletes RFC 2665. It also updates that specification by including management information useful for managing 10 Gigabit per second (Gb/s) Ethernet interfaces ๐ฅ.
Table of Contents ๐
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. The Internet-Standard Management Framework . . . . . . . . . . 3
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.1. Relation to MIB-2. . . . . . . . . . . . . . . . . . . . 4
3.2. Relation to the Interfaces MIB . . . . . . . . . . . . . 4
3.2.1. Layering Model . . . . . . . . . . . . . . . . . 4
3.2.2. Virtual Circuits . . . . . . . . . . . . . . . . 4
3.2.3. ifRcvAddressTable. . . . . . . . . . . . . . . . 5
3.2.4. ifType . . . . . . . . . . . . . . . . . . . . . 5
3.2.5. ifXxxOctets. . . . . . . . . . . . . . . . . . . 5
3.2.6. ifXxxXcastPkts . . . . . . . . . . . . . . . . . 6
3.2.7. ifMtu. . . . . . . . . . . . . . . . . . . . . . 8
3.2.8. ifSpeed and ifHighSpeed. . . . . . . . . . . . . 8
3.2.9. ifPhysAddress. . . . . . . . . . . . . . . . . . 9
3.2.10. Specific Interface MIB Objects. . . . . . . . . 10
3.3. Relation to the 802.3 MAU MIB. . . . . . . . . . . . . . 13
3.4. dot3StatsEtherChipSet. . . . . . . . . . . . . . . . . . 13
3.5. Mapping of IEEE 802.3 Managed Objects. . . . . . . . . . 14
4. Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . 17
5. Intellectual Property Statement. . . . . . . . . . . . . . . . 55
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 56
7. Normative References . . . . . . . . . . . . . . . . . . . . . 57
8. Informative References . . . . . . . . . . . . . . . . . . . . 58
9. Security Considerations. . . . . . . . . . . . . . . . . . . . 59
10. IANA Considerations. . . . . . . . . . . . . . . . . . . . . . 60
A. Change Log . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.1. Changes since RFC 2665 . . . . . . . . . . . . . . . . . 61
A.2. Changes between RFC 2358 and RFC 2665 . . . . . . . . . 62
A.3. Changes between RFC 1650 and RFC 2358. . . . . . . . . . 62
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 63
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .64
1. Introduction โจ
Same energy as the abstract, bestie ๐. This memo defines a portion of the Management Information Base (MIB) for use with network management protocols in the Internet community, and it's specifically about objects for managing Ethernet-like interfaces ๐.
This memo also includes a MIB module. This MIB module updates the list of managed objects from the earlier version of this MIB module, RFC 2665 [RFC2665] ๐.
Ethernet technology, as defined by the 802.3 Working Group of the IEEE, keeps evolving. We're getting scalable speed increases, new cabling and interface types, and new features ๐. That evolution may mean the managed objects need to change to reflect the new functionality. This document, like other documents from this working group, captures one stage in the evolution of Ethernet technology ๐ฆ. Down the line, this document might get revised, or new documents might be issued by the Ethernet Interfaces and Hub MIB Working Group, so the specs keep up with Ethernet ๐ .
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐.
2. The Internet-Standard Management Framework ๐ง
If you want a detailed overview of the documents describing the current Internet-Standard Management Framework, check section 7 of RFC 3410 [RFC3410] ๐ธ.
Managed objects are accessed via a virtual information store called the Management Information Base, or MIB ๐ซถ. MIB objects are generally accessed through the Simple Network Management Protocol (SNMP). Objects in the MIB are defined using the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant with the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ๐ฅ.
3. 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 the value ethernetCsmacd(6) of the ifType object in the Interfaces MIB [RFC2863]. Some older implementations may return the values iso88023Csmacd(7) or starLan(11) for ifType for ethernet-like media ๐.
The definitions here are based on Section 30, "10 Mb/s, 100 Mb/s 1000 Mb/s and 10 Gb/s Management", and Annex 30A, "GDMO Specification for 802.3 managed object classes" of IEEE Std. 802.3, 2002 Edition [IEEE802.3]. They're amended by IEEE Std. 802.3ae-2002 [IEEE802.3ae], as originally interpreted by Frank Kastenholz, then of Interlan in [KASTEN] โจ. Implementors of these MIB objects should note that IEEE Std. 802.3 [IEEE802.3] 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 [IEEE802.3] are already represented by previously defined objects in MIB-2 [RFC1213] or in the Interfaces MIB [RFC2863], those attributes are not redundantly represented by objects defined in this memo ๐ . Attributes represented by objects defined in other memos include 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 ๐.
3.1. Relation to MIB-2 ๐ท
This section applies only when this MIB is used in conjunction with the "old" [RFC1213] interface group ๐.
The relationship between an ethernet-like interface and an interface in the context of MIB-2 is one-to-one ๐. So the value of an ifIndex object instance can be used directly to identify corresponding instances of the objects defined here ๐ซถ.
For agents that implement the (now deprecated) ifSpecific object, an instance of that object associated with an ethernet-like interface has the OBJECT IDENTIFIER value:
dot3 OBJECT IDENTIFIER ::= { transmission 7 }
3.2. Relation to the Interfaces MIB ๐ฆ
The Interface MIB [RFC2863] requires that any MIB which is an adjunct of the Interface MIB clarify specific areas within the Interface MIB ๐. Those areas were intentionally left vague in the Interface MIB, so it wouldn't over-constrain the MIB and rule out managing certain media types ๐.
Section 4 of [RFC2863] lists several areas a media-specific MIB must clarify. Each one gets its own subsection below ๐ . If you want the general intent behind these areas, go read [RFC2863] ๐ง.
3.2.1. Layering Model ๐
Ordinarily, there are no sublayers for an ethernet-like interface. However, there may be implementation-specific requirements that call for sublayers โจ. One example is 802.3 link aggregation. In that case, Annex 30C of [IEEE802.3] describes the layering model and the use of the ifStackTable for representing aggregated links ๐ฅ. Another example is the 802.3 WAN Interface Sublayer. In this case, The 802.3 WIS MIB [RFC3637] describes the layering model and the use of the ifStackTable for representing the WAN sublayer ๐.
3.2.2. Virtual Circuits ๐ซถ
This medium does not support virtual circuits, so this area is not applicable to this MIB ๐ .
3.2.3. 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 ๐.
3.2.4. ifType ๐
This MIB applies to interfaces that have the ifType value ethernetCsmacd(6). It is REQUIRED that all ethernet-like interfaces use an ifType of ethernetCsmacd(6), regardless of the speed the interface is running at or the link-layer encapsulation in use ๐. The ifType values iso88023Csmacd(7) and starLan(11) are deprecated, but some older implementations may still return them ๐ธ. Management applications should be prepared to receive these deprecated ifType values from older implementations ๐ซถ.
There are three other interface types for Ethernet defined in the IANAifType-MIB: fastEther(62), fastEtherFX(69), and gigabitEthernet(117) ๐ฅ. Individual vendors registered these interface types, not any IETF working group ๐ง . A requirement for compliance with this document is that all ethernet-like interfaces MUST return ethernetCsmacd(6) for ifType, and MUST NOT return fastEther(62), fastEtherFX(69), or gigabitEthernet(117) ๐ . However, there are fielded implementations that do return these obsolete ifType values, so management applications SHOULD be prepared to receive them from older implementations ๐ฆ.
Info on the particular flavor of Ethernet an interface is running is available from ifSpeed in the Interfaces MIB, and from ifMauType in the 802.3 MAU MIB [RFC3636] ๐. Note that implementation of the 802.3 MAU MIB [RFC3636] is REQUIRED for all ethernet-like interfaces โญ.
3.2.5. ifXxxOctets โจ
okay so the octet counters (ifInOctets, ifOutOctets, ifHCInOctets and ifHCOutOctets) are giving main character energy ๐ They MUST include all octets in valid frames sent or received on the interface, including the MAC header and FCS, but NOT the preamble, start of frame delimiter, or extension octets. This lines up with frameSize/8 in section 4.2.7.1 of [IEEE802.3] ๐ค (frameSize is measured in bits, not octets, and it's 2 x addressSize + lengthOrTypeSize + dataSize + crcSize).
They don't count octets from collided or failed transmit attempts, because the MAC layer driver usually can't even see those octets ๐ They also skip octets in received invalid frames, since that info usually never gets passed up to the MAC layer. And non-promiscuous MAC implementations can't reliably tell if an invalid frame was actually meant for them, so yeah, they're left out too ๐
Tbh these counters DO include octets in valid MAC control frames sent or received on the interface ๐ They also include octets in otherwise valid received MAC frames that the MAC layer throws away for some reason (not enough buffer space, unknown protocol, etc.).
Now the IF-MIB octet counters don't exactly match the IEEE 802.3 octet counters, and this is where it gets a little messy ๐ซ aOctetsTransmittedOK and aOctetsReceivedOK only count octets in the clientData and Pad fields. ifInOctets and ifOutOctets count the entire MAC frame, MAC header and FCS included. BUT you can derive the IF-MIB counters from the IEEE 802.3 counters like this:
ifInOctets = aOctetsReceivedOK + (18 * aFramesReceivedOK)
ifOutOctets = aOctetsTransmittedOK + (18 * aFramesTransmittedOK)
Another thing to keep in mind ๐ง In IEEE 802.3, the frame counters and octet counters always go up together. aOctetsTransmittedOK counts the octets in frames that were counted by aFramesTransmittedOK, and aOctetsReceivedOK counts the octets in frames that were counted by aFramesReceivedOK. The IF-MIB counters do NOT work like that. The IF-MIB octet counters count the octets sent to or received from the layer below this interface, while the packet counters count the packets sent to or received from the layer above. So received MAC Control frames, ifInDiscards, and ifInUnknownProtos are counted by ifInOctets but not ifInXcastPkts. Transmitted MAC Control frames are counted by ifOutOctets but not ifOutXcastPkts. ifOutDiscards and ifOutErrors are counted by ifOutXcastPkts but not ifOutOctets. Iconic, I know ๐
3.2.6. ifXxxXcastPkts ๐ฆ
The packet counters in the IF-MIB don't exactly match the frame counters in IEEE 802.3 either ๐ญ aFramesTransmittedOK counts the frames successfully transmitted on the interface. But ifOutUcastPkts, ifOutMulticastPkts and ifOutBroadcastPkts count the transmit requests made from a higher layer, whether or not the transmit attempt actually worked. So packets counted by ifOutErrors or ifOutDiscards ALSO show up in ifOutXcastPkts, but NOT in aFramesTransmittedOK.
Also, since MAC Control frames are generated by a sublayer inside the interface layer (not by a higher layer), they are NOT counted by ifOutXcastPkts, but they ARE counted by aFramesTransmittedOK. Roughly:
aFramesTransmittedOK = ifOutUcastPkts + ifOutMulticastPkts +
ifOutBroadcastPkts + dot3OutPauseFrames -
(ifOutErrors + ifOutDiscards)
Same vibe on the receiving side ๐ธ aFramesReceivedOK counts the frames received successfully by the interface, whether or not they get passed up to a higher layer. ifInUcastPkts, ifInMulticastPkts and ifInBroadcastPkts only count packets that were passed up to a higher layer. That means packets counted by ifInDiscards or ifInUnknownProtos ALSO count toward aFramesReceivedOK, but NOT toward ifInXcastPkts. And since MAC Control frames are consumed by a sublayer inside the interface layer and never passed up, they are not counted by ifInXcastPkts, but they are counted by aFramesReceivedOK. Roughly:
aFramesReceivedOK = ifInUcastPkts + ifInMulticastPkts +
ifInBroadcastPkts + dot3InPauseFrames +
ifInDiscards + ifInUnknownProtos
This spec decides to treat MAC control frames as originated and consumed inside the interface, so the IF-MIB packet counters don't count them ๐ โโ๏ธ MAC control frames are usually sent as multicast packets, and in lots of networks they can totally outnumber the multicast frames carrying actual data. If MAC control frames were included in ifInMulticastPkts and ifOutMulticastPkts, the real data-carrying multicast count would get drowned out and those counters would be way less useful. Nobody wants that, periodt โจ
If you want to really get how the IF-MIB packet and octet counters map onto an Ethernet interface, it helps to look at a Case Diagram [CASE] for the IF-MIB counters. This one has been tweaked to show the right interpretation for the Ethernet interface layer ๐บ๏ธ
layer above
--------------------------------------------------------------------
ifInUcastPkts+ ^ | ifOutUcastPkts+
ifInBroadcastPkts+ ----|---- ----|---- ifOutBroadcastPkts+
ifInMulticastPkts | | ifOutMulticastPkts
| |
dot3InPauseFrames <---| |<--- dot3OutPauseFrames
| |
ifInDiscards <---| |
| |
ifInUnknownProtos <---| |---> ifOutDiscards
| |
ifInOctets ----|---- ----|---- ifOutOctets
| |
ifInErrors <---| |---> ifOutErrors
| V
--------------------------------------------------------------------
layer below
3.2.7. ifMtu ๐
The defined standard MTU for ethernet-like interfaces is 1500 octets. Lowkey though, a lot of implementations today support bigger packet sizes than the IEEE 802.3 standard ๐ฆ The value of this object MUST reflect the actual MTU in use on the interface, whether it matches the standard MTU or not. No cheating allowed ๐ โโ๏ธ
This value should reflect the value seen by the MAC client interface. When a higher layer protocol, like IP, runs over Ethernet framing, this is the MTU that higher layer protocol will see. But most ethernet-like interfaces today run multiple protocols that use a mix of different framing types ๐ For example, an IEEE 802.2 LLC type 1 client protocol will see an MTU of 1497 octets on an interface using the IEEE standard maximum packet size, and a protocol running over SNAP will see an MTU of 1492 octets on that same interface. Still, since the specification says to use the MTU as seen at the MAC client interface, the value of ifMtu would be reported as 1500 octets in these cases ๐
3.2.8. ifSpeed and ifHighSpeed ๐๏ธ
For ethernet-like interfaces running at 1000 Megabits per second (Mb/s) or less, ifSpeed represents the current operational speed of the interface in bits per second. For current interface types, this will be equal to 1,000,000 (1 million), 10,000,000 (10 million), 100,000,000 (100 million), or 1,000,000,000 (1 billion). ifHighSpeed represents the current operational speed in millions of bits per second. For current ethernet-like interfaces, this will be equal to 1, 10, 100, or 1,000. If the interface implements auto-negotiation, auto-negotiation is enabled for this interface, and the interface hasn't yet negotiated to an operational speed, these objects SHOULD reflect the maximum speed supported by the interface ๐ค
For ethernet-like interfaces running at greater than 1000 Mb/s, ifHighSpeed represents the current operational speed of the interface in millions of bits per second. Note that for WAN implementations, this will be the payload data rate over the WAN interface sublayer ๐ซ For current implementations, this will be equal to 10,000 for LAN implementations of 10 Gb/s, and 9,294 for WAN implementations of the 10 Gb/s MAC over an OC-192 PHY. For these speeds, ifSpeed should report a maximum unsigned 32-bit value of 4,294,967,295 as specified in [RFC2863].
Note that these object MUST NOT indicate a doubled value when operating in full-duplex mode ๐ โโ๏ธ It MUST indicate the correct line speed regardless of the current duplex mode. The duplex mode of the interface may be determined by examining either the dot3StatsDuplexStatus object in this MIB module, or the ifMauType object in the 802.3 MAU MIB [RFC3636].
3.2.9. ifPhysAddress ๐
This object contains the IEEE 802.3 address that gets placed in the source-address field of any Ethernet, Starlan, or IEEE 802.3 frames that originate at this interface. Usually this is kept in ROM on the interface hardware. Some systems may set this address via software ๐ ๏ธ
In a system where there are 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 chose, use of 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. It's 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 ๐
3.2.10. Specific Interface MIB Objects ๐
okay bestie, this part is basically a cheat sheet ๐ for how each Interface group object gets handled on ethernet-like media. Here's the whole table:
Object Guidelines
ifIndex Each ethernet-like interface is
represented by an ifEntry. The
dot3StatsTable in this MIB module is
indexed by dot3StatsIndex. The interface
identified by a particular value of
dot3StatsIndex is the same interface as
identified by the same value of ifIndex.
ifDescr Refer to [RFC2863].
ifType Refer to section 3.2.4.
ifMtu Refer to section 3.2.7.
ifSpeed Refer to section 3.2.8.
ifPhysAddress Refer to section 3.2.9.
ifAdminStatus Write access is not required. Support
for 'testing' is not required.
ifOperStatus The operational state of the interface.
Support for 'testing' is not required.
The value 'dormant' has no meaning for
an ethernet-like interface.
ifLastChange Refer to [RFC2863].
ifInOctets The number of octets in valid MAC frames
received on this interface, including
the MAC header and FCS. This does
include the number of octets in valid
MAC Control frames received on this
interface. See section 3.2.5.
ifInUcastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are consumed by the
interface layer and are not passed to
any higher layer protocol. See
section 3.2.6.
ifInDiscards Refer to [RFC2863].
ifInErrors The sum for this interface of
dot3StatsAlignmentErrors,
dot3StatsFCSErrors,
dot3StatsFrameTooLongs,
and dot3StatsInternalMacReceiveErrors.
ifInUnknownProtos Refer to [RFC2863].
ifOutOctets The number of octets transmitted in
valid MAC frames on this interface,
including the MAC header and FCS. This
does include the number of octets in
valid MAC Control frames transmitted on
this interface. See section 3.2.5.
ifOutUcastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are generated by the
interface layer, and are not passed from
any higher layer protocol. See section
3.2.6.
ifOutDiscards Refer to [RFC2863].
ifOutErrors The sum for this interface of:
dot3StatsSQETestErrors,
dot3StatsLateCollisions,
dot3StatsExcessiveCollisions,
dot3StatsInternalMacTransmitErrors and
dot3StatsCarrierSenseErrors.
ifName Locally-significant textual name for the
interface (e.g. lan0).
ifInMulticastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are consumed by the
interface layer and are not passed to
any higher layer protocol. See section
3.2.6.
ifInBroadcastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are consumed by the
interface layer, and are not passed to
any higher layer protocol. See section
3.2.6.
ifOutMulticastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are generated by the
interface layer, and are not passed from
any higher layer protocol. See section
3.2.6.
ifOutBroadcastPkts Refer to [RFC2863]. Note that this does
not include MAC Control frames, since
MAC Control frames are generated by the
interface layer, and are not passed from
any higher layer protocol. See section
3.2.6.
ifHCInOctets 64-bit versions of counters. Required
ifHCOutOctets for ethernet-like interfaces that are
capable of operating at 20 Mb/s or
faster, even if the interface is
currently operating at less than
20 Mb/s.
ifHCInUcastPkts 64-bit versions of packet counters.
ifHCInMulticastPkts Required for ethernet-like interfaces
ifHCInBroadcastPkts that are capable of operating at
ifHCOutUcastPkts 640 Mb/s or faster, even if the
ifHCOutMulticastPkts interface is currently operating at
ifHCOutBroadcastPkts less than 640 Mb/s.
ifLinkUpDownTrapEnable Refer to [RFC2863]. Default is
'enabled'
ifHighSpeed Refer to section 3.2.8.
ifPromiscuousMode Refer to [RFC2863].
ifConnectorPresent This will normally be 'true'. It will
be 'false' in the case where this
interface uses the WAN Interface
Sublayer. See [RFC3637] for details.
ifAlias Refer to [RFC2863].
ifCounterDiscontinuityTime Refer to [RFC2863]. Note that a
discontinuity in the Interface MIB
counters may also indicate a
discontinuity in some or all of the
counters in this MIB that are associated
with that interface.
ifStackHigherLayer Refer to section 3.2.1.
ifStackLowerLayer
ifStackStatus
ifRcvAddressAddress Refer to section 3.2.3.
ifRcvAddressStatus
ifRcvAddressType
Basically, most of these just say "go look at [RFC2863]" ๐, and the ethernet-specific stuff is in the counters. ifInErrors and ifOutErrors are sums of specific dot3Stats counters, and the 64-bit HC counters are needed on faster interfaces (20 Mb/s and up for the octet counters, 640 Mb/s and up for the packet counters) ๐ even if the link is currently running slower.
3.3. Relation to the 802.3 MAU MIB ๐
Support for the mauModIfCompl3 compliance statement of the MAU-MIB [RFC3636] is REQUIRED for Ethernet-like interfaces. ๐ซถ This MIB is what lets apps figure out which MAU type the interface is currently using, and control autonegotiation and duplex mode. If you implement this MIB module without the MAU-MIB, apps have no standard way to tell what media type is in use or to control the duplex mode, and that's just sad ๐ญ.
3.4. dot3StatsEtherChipSet ๐ง
This document defines an object called dot3StatsEtherChipSet, which identifies the MAC hardware used to communicate on an interface. ๐ง Earlier versions of this document had a bunch of OID assignments for existing Ethernet chipsets, but keeping that list here turned into a hassle, so those assignments moved to a separate document [RFC2666].
dot3StatsEtherChipSet is now deprecated. ๐ Implementation feedback says it's way more useful in theory than in practice. It doesn't help much with debugging field problems, and even when it does, it only names the MAC chip, not the PHY, PMD, or driver. Running a central registry of chipset OIDs isn't worth it for something this questionable.
Implementations that still support this object for backwards compatibility may keep using the values defined in [RFC2666]. For chipsets not listed in [RFC2666], implementors that want to support this object and return a valid OBJECT IDENTIFIER value may assign OBJECT IDENTIFIERS within the part of the registration tree delegated to individual enterprises. ๐ธ
3.5. Mapping of IEEE 802.3 Managed Objects ๐บ๏ธ
Here's how the IEEE 802.3 managed objects line up with the SNMP objects. Think of it as a translation chart ๐ :
IEEE 802.3 Managed Object Corresponding SNMP Object
oMacEntity
.aMACID dot3StatsIndex or
IF-MIB - ifIndex
.aFramesTransmittedOK IF-MIB - ifOutUCastPkts +
ifOutMulticastPkts +
ifOutBroadcastPkts*
.aSingleCollisionFrames dot3StatsSingleCollisionFrames
.aMultipleCollisionFrames dot3StatsMultipleCollisionFrames
.aFramesReceivedOK IF-MIB - ifInUcastPkts +
ifInMulticastPkts +
ifInBroadcastPkts*
.aFrameCheckSequenceErrors dot3StatsFCSErrors
.aAlignmentErrors dot3StatsAlignmentErrors
.aOctetsTransmittedOK IF-MIB - ifOutOctets*
.aFramesWithDeferredXmissions dot3StatsDeferredTransmissions
.aLateCollisions dot3StatsLateCollisions
.aFramesAbortedDueToXSColls dot3StatsExcessiveCollisions
.aFramesLostDueToIntMACXmitError dot3StatsInternalMacTransmitErrors
.aCarrierSenseErrors dot3StatsCarrierSenseErrors
.aOctetsReceivedOK IF-MIB - ifInOctets*
.aFramesLostDueToIntMACRcvError dot3StatsInternalMacReceiveErrors
.aPromiscuousStatus IF-MIB - ifPromiscuousMode
.aReadMulticastAddressList IF-MIB - ifRcvAddressTable
.aMulticastFramesXmittedOK IF-MIB - ifOutMulticastPkts*
.aBroadcastFramesXmittedOK IF-MIB - ifOutBroadcastPkts*
.aMulticastFramesReceivedOK IF-MIB - ifInMulticastPkts*
.aBroadcastFramesReceivedOK IF-MIB - ifInBroadcastPkts*
.aFrameTooLongErrors dot3StatsFrameTooLongs
.aReadWriteMACAddress IF-MIB - ifPhysAddress
.aCollisionFrames dot3CollFrequencies
.aDuplexStatus dot3StatsDuplexStatus
.aRateControlAbility dot3StatsRateControlAbility
.aRateControlStatus dot3StatsRateControlStatus
.acAddGroupAddress IF-MIB - ifRcvAddressTable
.acDeleteGroupAddress IF-MIB - ifRcvAddressTable
.acExecuteSelfTest dot3TestLoopBack
oPHYEntity
.aPHYID dot3StatsIndex or
IF-MIB - ifIndex
.aSQETestErrors dot3StatsSQETestErrors
.aSymbolErrorDuringCarrier dot3StatsSymbolErrors
oMACControlEntity
.aMACControlID dot3StatsIndex or
IF-MIB - ifIndex
.aMACControlFunctionsSupported dot3ControlFunctionsSupported and
dot3ControlFunctionsEnabled
.aUnsupportedOpcodesReceived dot3ControlInUnknownOpcodes
oPAUSEEntity
.aPAUSEMACCtrlFramesTransmitted dot3OutPauseFrames
.aPAUSEMACCtrlFramesReceived dot3InPauseFrames
- Heads up, bestie: the octet counters in IF-MIB don't exactly match the IEEE 802.3 definition of the octet counters. Check out section 3.2.5 for the full tea. ๐ซโจ
- Also, the packet counters in IF-MIB don't line up perfectly with the IEEE 802.3 frame counters either. Section 3.2.6 has the details, so go get them ๐ ๐
The following IEEE 802.3 managed objects got removed from this MIB module because of implementation feedback. Honestly, the devs spoke and we listened ๐๐
oMacEntity
.aFramesWithExcessiveDeferral
.aInRangeLengthErrors
.aOutOfRangeLengthField
.aMACEnableStatus
.aTransmitEnableStatus
.aMulticastReceiveStatus
.acInitializeMAC
Please see [RFC1369] for the full detailed reasoning behind why these objects got the boot. It's a whole story ๐ฆ
Then there are the IEEE 802.3 managed objects that didn't make it into this MIB at all, and each one has its own reason. Let's look at the receipts ๐งพ๐ธ
IEEE 802.3 Managed Object Disposition
oMACEntity
.aMACCapabilities Can be derived from
MAU-MIB - ifMauTypeListBits
.aStretchRatio Implementation constant.
oPHYEntity
.aPhyType Can be derived from
MAU-MIB - ifMauType
.aPhyTypeList Can be derived from
MAU-MIB - ifMauTypeListBits
.aMIIDetect Not considered useful.
.aPhyAdminState Can already obtain interface
state from IF-MIB - ifAdminStatus
and MAU state from MAU-MIB -
ifMauStatus. Providing an
additional state for the PHY
was not considered useful.
.acPhyAdminControl Can already control interface
state from IF-MIB - ifAdminStatus
and MAU state from MAU-MIB -
ifMauStatus. Providing separate
admin control of the PHY was not
considered useful.
oMACControlEntity
.aMACControlFramesTransmitted Can be determined by summing the
OutFrames counters for the
individual control functions
.aMACControlFramesReceived Can be determined by summing the
InFrames counters for the
individual control functions
oPAUSEEntity
.aPAUSELinkDelayAllowance Not considered useful.
4. Definitions โจ
Okay, this is the actual MIB module, so it's time to get serious (but still cute) ๐ Every line below is copied exactly, because implementers rely on every single character.
EtherLike-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY,
Integer32, Counter32, Counter64, mib-2, transmission
FROM SNMPv2-SMI
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
TruthValue
FROM SNMPv2-TC
ifIndex, InterfaceIndex
FROM IF-MIB;
etherMIB MODULE-IDENTITY
LAST-UPDATED "200309190000Z" -- September 19, 2003
ORGANIZATION "IETF Ethernet Interfaces and Hub MIB
Working Group"
CONTACT-INFO
"WG E-mail: hubmib@ietf.org
To subscribe: hubmib-request@ietf.org
Chair: Dan Romascanu
Postal: Avaya Inc.
Atidum Technology Park, Bldg. 3
Tel Aviv 61131
Israel
Tel: +972 3 645 8414
E-mail: dromasca@avaya.com
Editor: John Flick
Postal: Hewlett-Packard Company
8000 Foothills Blvd. M/S 5557
Roseville, CA 95747-5557
USA
Tel: +1 916 785 4018
Fax: +1 916 785 1199
E-mail: johnf@rose.hp.com"
DESCRIPTION "The MIB module to describe generic objects for
ethernet-like network interfaces.
The following reference is used throughout this
MIB module:
[IEEE 802.3 Std] refers to:
IEEE Std 802.3, 2002 Edition: 'IEEE Standard
for Information technology -
Telecommunications and information exchange
between systems - Local and metropolitan
area networks - Specific requirements -
Part 3: Carrier sense multiple access with
collision detection (CSMA/CD) access method
and physical layer specifications', as
amended by IEEE Std 802.3ae-2002:
'Amendment: Media Access Control (MAC)
Parameters, Physical Layer, and Management
Parameters for 10 Gb/s Operation', August,
2002.
Of particular interest is Clause 30, '10 Mb/s,
100 Mb/s, 1000 Mb/s, and 10 Gb/s Management'.
Copyright (C) The Internet Society (2003). This
version of this MIB module is part of RFC 3635;
see the RFC itself for full legal notices."
REVISION "200309190000Z" -- September 19, 2003
DESCRIPTION "Updated to include support for 10 Gb/sec
interfaces. This resulted in the following
revisions:
- Updated dot3StatsAlignmentErrors and
dot3StatsSymbolErrors DESCRIPTIONs to
reflect behaviour at 10 Gb/s
- Added dot3StatsRateControlAbility and
dot3RateControlStatus for management
of the Rate Control function in 10 Gb/s
WAN applications
- Added 64-bit versions of all counters
that are used on high-speed ethernet
interfaces
- Added object groups to contain the new
objects
- Deprecated etherStatsBaseGroup and
split into etherStatsBaseGroup2 and
etherStatsHalfDuplexGroup, so that
interfaces which can only operate at
full-duplex do not need to implement
half-duplex-only statistics
- Deprecated dot3Compliance and replaced
it with dot3Compliance2, which includes
the compliance information for the new
object groups
In addition, the dot3Tests and dot3Errors
object identities have been deprecated,
since there is no longer a standard method
for using them.
This version published as RFC 3635."
REVISION "199908240400Z" -- August 24, 1999
DESCRIPTION "Updated to include support for 1000 Mb/sec
interfaces and full-duplex interfaces.
This version published as RFC 2665."
REVISION "199806032150Z" -- June 3, 1998
DESCRIPTION "Updated to include support for 100 Mb/sec
interfaces.
This version published as RFC 2358."
REVISION "199402030400Z" -- February 3, 1994
DESCRIPTION "Initial version, published as RFC 1650."
::= { mib-2 35 }
etherMIBObjects OBJECT IDENTIFIER ::= { etherMIB 1 }
dot3 OBJECT IDENTIFIER ::= { transmission 7 }
-- the Ethernet-like Statistics group
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.
There will be one row in this table for each
ethernet-like interface in the 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 InterfaceIndex,
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,
dot3StatsSymbolErrors Counter32,
dot3StatsDuplexStatus INTEGER,
dot3StatsRateControlAbility TruthValue,
dot3StatsRateControlStatus INTEGER
}
dot3StatsIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
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."
REFERENCE "RFC 2863, ifIndex"
::= { dot3StatsEntry 1 }
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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
This counter does not increment for group
encoding schemes greater than 4 bits per group.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsAlignmentErrors object for 10 Gb/s
or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7,
aAlignmentErrors"
::= { 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. This
count does not include frames received with
frame-too-long or frame-too-short error.
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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
Note: Coding errors detected by the physical
layer for speeds above 10 Mb/s will cause the
frame to fail the FCS check.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsFCSErrors object for 10 Gb/s or
faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6,
aFrameCheckSequenceErrors."
::= { dot3StatsEntry 3 }
dot3StatsSingleCollisionFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of frames that are involved in a single
collision, and are subsequently transmitted
successfully.
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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.3,
aSingleCollisionFrames."
::= { dot3StatsEntry 4 }
dot3StatsMultipleCollisionFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of frames that are involved in more
than one collision and are subsequently
transmitted successfully.
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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.4,
aMultipleCollisionFrames."
::= { dot3StatsEntry 5 }
dot3StatsSQETestErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of times that the SQE TEST ERROR
is received on a particular interface. The
SQE TEST ERROR is set in accordance with the
rules for verification of the SQE detection
mechanism in the PLS Carrier Sense Function as
described in IEEE Std. 802.3, 2000 Edition,
section 7.2.4.6.
This counter does not increment on interfaces
operating at speeds greater than 10 Mb/s, or on
interfaces operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 7.2.4.6, also 30.3.2.1.4,
aSQETestErrors."
::= { dot3StatsEntry 6 }
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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.9,
aFramesWithDeferredXmissions."
::= { 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
one slotTime into the transmission of a packet.
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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.10,
aLateCollisions."
::= { dot3StatsEntry 8 }
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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.11,
aFramesAbortedDueToXSColls."
::= { 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.
okay the 10 Gb/s rollover thing is giving urgency ๐ญ๐ a counter that can wrap in under 5 minutes means your poll cycle has to be quick, bestie ๐ซถโจ
Okay so we're still deep in the dot3Stats table and it is giving stress for the sake of counters ๐ญ๐ Here's the next chunk:
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsInternalMacTransmitErrors object for
10 Gb/s or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12,
aFramesLostDueToIntMACXmitError."
::= { 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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.13,
aCarrierSenseErrors."
::= { dot3StatsEntry 11 }
-- { 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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 80 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsFrameTooLongs object for 10 Gb/s
or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25,
aFrameTooLongErrors."
::= { 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.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsInternalMacReceiveErrors object for
10 Gb/s or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15,
aFramesLostDueToIntMACRcvError."
::= { dot3StatsEntry 16 }
dot3StatsEtherChipSet OBJECT-TYPE
SYNTAX OBJECT IDENTIFIER
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION "******** THIS OBJECT IS DEPRECATED ********
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.
This object has been deprecated. Implementation
feedback indicates that it is of limited use for
debugging network problems in the field, and
the administrative overhead involved in
maintaining a registry of chipset OIDs is not
justified."
::= { dot3StatsEntry 17 }
dot3StatsSymbolErrors OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "For an interface operating at 100 Mb/s, the
number of times there was an invalid data symbol
when a valid carrier was present.
For an interface operating in half-duplex mode
at 1000 Mb/s, the number of times the receiving
media is non-idle (a carrier event) for a period
of time equal to or greater than slotTime, and
during which there was at least one occurrence
of an event that causes the PHY to indicate
'Data reception error' or 'carrier extend error'
on the GMII.
For an interface operating in full-duplex mode
at 1000 Mb/s, the number of times the receiving
media is non-idle (a carrier event) for a period
of time equal to or greater than minFrameSize,
and during which there was at least one
occurrence of an event that causes the PHY to
indicate 'Data reception error' on the GMII.
For an interface operating at 10 Gb/s, the
number of times the receiving media is non-idle
(a carrier event) for a period of time equal to
or greater than minFrameSize, and during which
there was at least one occurrence of an event
that causes the PHY to indicate 'Receive Error'
on the XGMII.
The count represented by an instance of this
object is incremented at most once per carrier
event, even if multiple symbol errors occur
during the carrier event. This count does
not increment if a collision is present.
This counter does not increment when the
interface is operating at 10 Mb/s.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCStatsSymbolErrors object for 10 Gb/s
or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5,
aSymbolErrorDuringCarrier."
::= { dot3StatsEntry 18 }
dot3StatsDuplexStatus OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
halfDuplex(2),
fullDuplex(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The current mode of operation of the MAC
entity. 'unknown' indicates that the current
duplex mode could not be determined.
The 10 Gb/s rollover warnings are giving poll it before it wraps energy ๐ Some of these counters can roll over in under 5 minutes, and others in under 80 minutes, if they're ticking at full speed. If your management station checks in less often than that, you could lose data, so the spec says to poll the dot3HC versions of those objects for 10 Gb/s or faster interfaces ๐ง Discontinuities can also show up at re-initialization and whenever ifCounterDiscontinuityTime says so, so keep an eye on that too ๐
Also, dot3StatsCarrierSenseErrors only ticks up once per transmission attempt, even if carrier sense flickers during it, and it doesn't count at all in full-duplex mode ๐ฆ And dot3StatsEtherChipSet is deprecated, bestie ๐ฅบ The people in charge basically said that tracking chipset OIDs was more admin hassle than it was worth ๐
We're not done with the duplex vibes yet, so the rest of this definition is coming up next ๐โจ
Management control of the duplex mode is
accomplished through the MAU MIB. When
an interface does not support autonegotiation,
or when autonegotiation is not enabled, the
duplex mode is controlled using
ifMauDefaultType. When autonegotiation is
supported and enabled, duplex mode is controlled
using ifMauAutoNegAdvertisedBits. In either
case, the currently operating duplex mode is
reflected both in this object and in ifMauType.
Note that this object provides redundant
information with ifMauType. Normally, redundant
objects are discouraged. However, in this
instance, it allows a management application to
determine the duplex status of an interface
without having to know every possible value of
ifMauType. This was felt to be sufficiently
valuable to justify the redundancy."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.32,
aDuplexStatus."
::= { dot3StatsEntry 19 }
Okay so the duplex story wraps up here ๐ Duplex mode gets managed through the MAU MIB ๐. If the interface can't autonegotiate, or autonegotiation is switched off, you use ifMauDefaultType ๐ง. If autonegotiation is supported and on, it's ifMauAutoNegAdvertisedBits doing the job โจ. Either way, the duplex mode that's actually running shows up in this object and in ifMauType ๐ฆ. The redundancy is lowkey intentional, bestie ๐
. It means a management app can check duplex status without having to memorise every single possible ifMauType value ๐ The text literally says it was "felt to be sufficiently valuable to justify the redundancy" and I'm obsessed with that energy ๐ญ๐ซถ
dot3StatsRateControlAbility OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION "'true' for interfaces operating at speeds above
1000 Mb/s that support Rate Control through
lowering the average data rate of the MAC
sublayer, with frame granularity, and 'false'
otherwise."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.33,
aRateControlAbility."
::= { dot3StatsEntry 20 }
dot3StatsRateControlStatus OBJECT-TYPE
SYNTAX INTEGER {
rateControlOff(1),
rateControlOn(2),
unknown(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION "The current Rate Control mode of operation of
the MAC sublayer of this interface."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.34,
aRateControlStatus."
::= { dot3StatsEntry 21 }
Next up is Rate Control ๐ธ dot3StatsRateControlAbility is a TruthValue, and it's 'true' only for interfaces running faster than 1000 Mb/s that can do Rate Control by lowering the average data rate of the MAC sublayer, with frame granularity ๐
Otherwise it's 'false' ๐ Then dot3StatsRateControlStatus tells you the current Rate Control mode, and it can be rateControlOff(1), rateControlOn(2), or unknown(3) ๐ฅ Very clean, very obvious, no notes ๐
-- 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."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.30,
aCollisionFrames."
::= { 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 Integer32,
dot3CollFrequencies Counter32
}
-- { dot3CollEntry 1 } is no longer in use
dot3CollCount OBJECT-TYPE
SYNTAX Integer32 (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.
This counter does not increment when the
interface is operating in full-duplex mode.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
::= { dot3CollEntry 3 }
Now we're in the collision stats group ๐ Heads up, this whole group is optional, and it's the right call for any system that has the metering for it โจ The dot3CollTable is a histogram of collisions per frame, and each cell is indexed by ifIndex and dot3CollCount ๐ dot3CollCount is the number of per-frame media collisions, ranging from 1 to 16 ๐ dot3CollFrequencies is the counter for frames that went out after hitting exactly that many collisions ๐ The example is so good: a frame sent on interface 77 after exactly 4 collisions only bumps dot3CollFrequencies.77.4 ๐ง And it doesn't count at all when the interface is in full-duplex mode ๐
โโ๏ธ Also, discontinuities can happen at management re-initialisation, or whenever ifCounterDiscontinuityTime says so ๐
dot3ControlTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3ControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "A table of descriptive and status information
about the MAC Control sublayer on the
ethernet-like interfaces attached to a
particular system. There will be one row in
this table for each ethernet-like interface in
the system which implements the MAC Control
sublayer. If some, but not all, of the
ethernet-like interfaces in the system implement
the MAC Control sublayer, there will be fewer
rows in this table than in the dot3StatsTable."
::= { dot3 9 }
dot3ControlEntry OBJECT-TYPE
SYNTAX Dot3ControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry in the table, containing information
about the MAC Control sublayer on a single
ethernet-like interface."
INDEX { dot3StatsIndex }
::= { dot3ControlTable 1 }
Dot3ControlEntry ::=
SEQUENCE {
dot3ControlFunctionsSupported BITS,
dot3ControlInUnknownOpcodes Counter32,
dot3HCControlInUnknownOpcodes Counter64
}
dot3ControlFunctionsSupported OBJECT-TYPE
SYNTAX BITS {
pause(0) -- 802.3 flow control
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A list of the possible MAC Control functions
implemented for this interface."
REFERENCE "[IEEE 802.3 Std.], 30.3.3.2,
aMACControlFunctionsSupported."
::= { dot3ControlEntry 1 }
dot3ControlInUnknownOpcodes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames received on this
interface that contain an opcode that is not
supported by this device.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCControlInUnknownOpcodes object for 10 Gb/s
or faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.3.5,
aUnsupportedOpcodesReceived"
::= { dot3ControlEntry 2 }
dot3HCControlInUnknownOpcodes OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames received on this
interface that contain an opcode that is not
supported by this device.
This counter is a 64 bit version of
dot3ControlInUnknownOpcodes. It should be used
on interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.3.5,
aUnsupportedOpcodesReceived"
::= { dot3ControlEntry 3 }
Next, the MAC Control table ๐ง dot3ControlTable gets one row per ethernet-like interface that implements the MAC Control sublayer, so if only some interfaces do, there are fewer rows than in dot3StatsTable ๐ซถ The index is dot3StatsIndex ๐ Then we get dot3ControlFunctionsSupported, a BITS value with pause(0) for 802.3 flow control ๐ dot3ControlInUnknownOpcodes counts MAC Control frames with an opcode the device doesn't support ๐ค This one is giving drama, bestie ๐ญ For 10 Gb/s interfaces, it can roll over in under 5 minutes at max rate, so the text advises polling dot3HCControlInUnknownOpcodes for 10 Gb/s or faster interfaces ๐ That's the 64-bit version, and it's the one meant for those speeds โจ
dot3PauseTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3PauseEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "A table of descriptive and status information
about the MAC Control PAUSE function on the
ethernet-like interfaces attached to a
particular system. There will be one row in
this table for each ethernet-like interface in
the system which supports the MAC Control PAUSE
function (i.e., the 'pause' bit in the
corresponding instance of
dot3ControlFunctionsSupported is set). If some,
but not all, of the ethernet-like interfaces in
the system implement the MAC Control PAUSE
function (for example, if some interfaces only
support half-duplex), there will be fewer rows
in this table than in the dot3StatsTable."
::= { dot3 10 }
dot3PauseEntry OBJECT-TYPE
SYNTAX Dot3PauseEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry in the table, containing information
about the MAC Control PAUSE function on a single
ethernet-like interface."
INDEX { dot3StatsIndex }
::= { dot3PauseTable 1 }
Dot3PauseEntry ::=
SEQUENCE {
dot3PauseAdminMode INTEGER,
dot3PauseOperMode INTEGER,
dot3InPauseFrames Counter32,
dot3OutPauseFrames Counter32,
dot3HCInPauseFrames Counter64,
dot3HCOutPauseFrames Counter64
}
Last stop in this part is the PAUSE table ๐
It only gets a row for interfaces that support the PAUSE function, meaning the pause bit in dot3ControlFunctionsSupported is set ๐ The example in there is "if some interfaces only support half-duplex", so fewer rows again, same vibe as before ๐ It's indexed by dot3StatsIndex too ๐ฆ The Dot3PauseEntry sequence lists six objects, dot3PauseAdminMode, dot3PauseOperMode, dot3InPauseFrames, dot3OutPauseFrames, dot3HCInPauseFrames, and dot3HCOutPauseFrames, and their definitions are coming up next ๐โจ
Okay bestie, we're picking up with the PAUSE objects, and these MIB definitions are literally so pretty ๐โจ Here's the next chunk, untouched.
dot3PauseAdminMode OBJECT-TYPE
SYNTAX INTEGER {
disabled(1),
enabledXmit(2),
enabledRcv(3),
enabledXmitAndRcv(4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION "This object is used to configure the default
administrative PAUSE mode for this interface.
This object represents the
administratively-configured PAUSE mode for this
interface. If auto-negotiation is not enabled
or is not implemented for the active MAU
attached to this interface, the value of this
object determines the operational PAUSE mode
of the interface whenever it is operating in
full-duplex mode. In this case, a set to this
object will force the interface into the
specified mode.
If auto-negotiation is implemented and enabled
for the MAU attached to this interface, the
PAUSE mode for this interface is determined by
auto-negotiation, and the value of this object
denotes the mode to which the interface will
automatically revert if/when auto-negotiation is
later disabled. Note that when auto-negotiation
is running, administrative control of the PAUSE
mode may be accomplished using the
ifMauAutoNegCapAdvertisedBits object in the
MAU-MIB.
Note that the value of this object is ignored
when the interface is not operating in
full-duplex mode.
An attempt to set this object to
'enabledXmit(2)' or 'enabledRcv(3)' will fail
on interfaces that do not support operation
at greater than 100 Mb/s."
::= { dot3PauseEntry 1 }
dot3PauseAdminMode is the admin knob ๐๏ธ๐ You set it, and on full-duplex it's the mode the interface gets forced into, unless auto-negotiation is running, in which case the negotiation decides and this value is just the fallback once autoneg is turned off ๐ The enabledXmit(2) and enabledRcv(3) settings are gated to faster-than-100 Mb/s gear, so slower ports just say no ๐
dot3PauseOperMode OBJECT-TYPE
SYNTAX INTEGER {
disabled(1),
enabledXmit(2),
enabledRcv(3),
enabledXmitAndRcv(4)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION "This object reflects the PAUSE mode currently
in use on this interface, as determined by
either (1) the result of the auto-negotiation
function or (2) if auto-negotiation is not
enabled or is not implemented for the active MAU
attached to this interface, by the value of
dot3PauseAdminMode. Interfaces operating at
100 Mb/s or less will never return
'enabledXmit(2)' or 'enabledRcv(3)'. Interfaces
operating in half-duplex mode will always return
'disabled(1)'. Interfaces on which
auto-negotiation is enabled but not yet
completed should return the value
'disabled(1)'."
::= { dot3PauseEntry 2 }
dot3PauseOperMode is the "what's actually happening rn" read-only vibe โจ It comes from autoneg if that's running, or from the admin value if not. Half-duplex is always disabled(1), and at 100 Mb/s or less you'll never see the xmit or rcv-only values. Autoneg enabled but not finished? Still disabled(1) ๐ซถ
dot3InPauseFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames received on this
interface with an opcode indicating the PAUSE
operation.
This counter does not increment when the
interface is operating in half-duplex mode.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCInPauseFrames object for 10 Gb/s or
faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.4.3,
aPAUSEMACCtrlFramesReceived."
::= { dot3PauseEntry 3 }
dot3InPauseFrames counts the PAUSE MAC Control frames that come in ๐ฅ It doesn't tick in half-duplex, and it's a 32-bit counter, so at 10 Gb/s it can wrap in under 5 minutes ๐ญ That's faster than a poll cycle can keep up with, so the text tells management stations to grab dot3HCInPauseFrames on 10 Gb/s and up. Real talk, that's the kind of detail that saves your whole dashboard ๐ง
dot3OutPauseFrames OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames transmitted on
this interface with an opcode indicating the
PAUSE operation.
This counter does not increment when the
interface is operating in half-duplex mode.
For interfaces operating at 10 Gb/s, this
counter can roll over in less than 5 minutes if
it is incrementing at its maximum rate. Since
that amount of time could be less than a
management station's poll cycle time, in order
to avoid a loss of information, a management
station is advised to poll the
dot3HCOutPauseFrames object for 10 Gb/s or
faster interfaces.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.4.2,
aPAUSEMACCtrlFramesTransmitted."
::= { dot3PauseEntry 4 }
dot3OutPauseFrames is the transmit-side twin ๐ค Same deal: no counting in half-duplex, same 5-minute rollover warning at 10 Gb/s, and the same advice to use the 64-bit version (dot3HCOutPauseFrames) on those faster links ๐
dot3HCInPauseFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames received on this
interface with an opcode indicating the PAUSE
operation.
This counter does not increment when the
interface is operating in half-duplex mode.
This counter is a 64 bit version of
dot3InPauseFrames. It should be used on
interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.4.3,
aPAUSEMACCtrlFramesReceived."
::= { dot3PauseEntry 5 }
dot3HCOutPauseFrames OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION "A count of MAC Control frames transmitted on
this interface with an opcode indicating the
PAUSE operation.
This counter does not increment when the
interface is operating in half-duplex mode.
This counter is a 64 bit version of
dot3OutPauseFrames. It should be used on
interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.4.2,
aPAUSEMACCtrlFramesTransmitted."
::= { dot3PauseEntry 6 }
The 64-bit PAUSE pair is literally the upgrade everyone needs ๐ Both are 64-bit versions of the 32-bit counters, both are meant for 10 Gb/s or faster, and both stay still in half-duplex. Discontinuities can still happen on management re-init or whenever ifCounterDiscontinuityTime says so, so keep that in mind ๐
dot3HCStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3HCStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "A table containing 64-bit versions of error
counters from the dot3StatsTable. The 32-bit
versions of these counters may roll over quite
quickly on higher speed ethernet interfaces.
The counters that have 64-bit versions in this
table are the counters that apply to full-duplex
interfaces, since 10 Gb/s and faster
ethernet-like interfaces do not support
half-duplex, and very few 1000 Mb/s
ethernet-like interfaces support half-duplex.
Entries in this table are recommended for
interfaces capable of operating at 1000 Mb/s or
faster, and are required for interfaces capable
of operating at 10 Gb/s or faster. Lower speed
ethernet-like interfaces do not need entries in
this table, in which case there may be fewer
entries in this table than in the
dot3StatsTable. However, implementations
containing interfaces with a mix of speeds may
choose to implement entries in this table for
all ethernet-like interfaces."
::= { dot3 11 }
dot3HCStatsEntry OBJECT-TYPE
SYNTAX Dot3HCStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "An entry containing 64-bit statistics for a
single ethernet-like interface."
INDEX { dot3StatsIndex }
::= { dot3HCStatsTable 1 }
Dot3HCStatsEntry ::=
SEQUENCE {
dot3HCStatsAlignmentErrors Counter64,
dot3HCStatsFCSErrors Counter64,
dot3HCStatsInternalMacTransmitErrors Counter64,
dot3HCStatsFrameTooLongs Counter64,
dot3HCStatsInternalMacReceiveErrors Counter64,
dot3HCStatsSymbolErrors Counter64
}
dot3HCStatsAlignmentErrors OBJECT-TYPE
SYNTAX Counter64
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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
This counter does not increment for group
encoding schemes greater than 4 bits per group.
dot3HCStatsTable is the 64-bit error-counter hub ๐ฆ It holds 64-bit versions of the dot3StatsTable error counters, because the 32-bit ones can roll over fast on quick links. The text says the full-duplex counters are the ones that get 64-bit versions, since 10 Gb/s and up don't do half-duplex and barely any 1000 Mb/s gear does either. Entries are recommended at 1000 Mb/s and up, and required at 10 Gb/s and up ๐ Slower ports don't need them, though a box with mixed speeds can add them everywhere if it wants ๐
Each dot3HCStatsEntry is one interface's worth of 64-bit stats ๐, indexed by dot3StatsIndex, and the Dot3HCStatsEntry sequence lists the six 64-bit counters: alignment errors, FCS errors, internal MAC transmit errors, frame-too-longs, internal MAC receive errors, and symbol errors ๐ง
Last bit of this chunk: dot3HCStatsAlignmentErrors counts frames that aren't a whole number of octets and also fail the FCS check. It goes up when the MAC service hands the LLC an alignmentError status, and if a frame has several error conditions, it only gets counted under the one the LLC sees ๐ง It also doesn't increment for group encoding schemes bigger than 4 bits per group ๐
okay bestie, we're picking up mid-description ๐ฆ the 64-bit alignment counter is basically saying "hey, use me on 10 Gb/s or faster" ๐
This counter is a 64 bit version of
dot3StatsAlignmentErrors. It should be used
on interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.7,
aAlignmentErrors"
::= { dot3HCStatsEntry 1 }
dot3HCStatsFCSErrors OBJECT-TYPE
SYNTAX Counter64
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. This
count does not include frames received with
frame-too-long or frame-too-short error.
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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
Note: Coding errors detected by the physical
layer for speeds above 10 Mb/s will cause the
frame to fail the FCS check.
This counter is a 64 bit version of
dot3StatsFCSErrors. It should be used on
interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.6,
aFrameCheckSequenceErrors."
::= { dot3HCStatsEntry 2 }
dot3HCStatsInternalMacTransmitErrors OBJECT-TYPE
SYNTAX Counter64
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.
This counter is a 64 bit version of
dot3StatsInternalMacTransmitErrors. It should
be used on interfaces operating at 10 Gb/s or
faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.12,
aFramesLostDueToIntMACXmitError."
::= { dot3HCStatsEntry 3 }
dot3HCStatsFrameTooLongs OBJECT-TYPE
SYNTAX Counter64
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 pertain are,
according to the conventions of IEEE 802.3
Layer Management, counted exclusively according
to the error status presented to the LLC.
This counter is a 64 bit version of
dot3StatsFrameTooLongs. It should be used on
interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.25,
aFrameTooLongErrors."
::= { dot3HCStatsEntry 4 }
dot3HCStatsInternalMacReceiveErrors OBJECT-TYPE
SYNTAX Counter64
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.
This counter is a 64 bit version of
dot3StatsInternalMacReceiveErrors. It should be
used on interfaces operating at 10 Gb/s or
faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.1.1.15,
aFramesLostDueToIntMACRcvError."
::= { dot3HCStatsEntry 5 }
dot3HCStatsSymbolErrors OBJECT-TYPE
SYNTAX Counter64
MAX-ACCESS read-only
STATUS current
DESCRIPTION "For an interface operating at 100 Mb/s, the
number of times there was an invalid data symbol
when a valid carrier was present.
For an interface operating in half-duplex mode
at 1000 Mb/s, the number of times the receiving
media is non-idle (a carrier event) for a period
of time equal to or greater than slotTime, and
during which there was at least one occurrence
of an event that causes the PHY to indicate
'Data reception error' or 'carrier extend error'
on the GMII.
For an interface operating in full-duplex mode
at 1000 Mb/s, the number of times the receiving
media is non-idle (a carrier event) for a period
of time equal to or greater than minFrameSize,
and during which there was at least one
occurrence of an event that causes the PHY to
indicate 'Data reception error' on the GMII.
For an interface operating at 10 Gb/s, the
number of times the receiving media is non-idle
(a carrier event) for a period of time equal to
or greater than minFrameSize, and during which
there was at least one occurrence of an event
that causes the PHY to indicate 'Receive Error'
on the XGMII.
The count represented by an instance of this
object is incremented at most once per carrier
event, even if multiple symbol errors occur
during the carrier event. This count does
not increment if a collision is present.
This counter is a 64 bit version of
dot3StatsSymbolErrors. It should be used on
interfaces operating at 10 Gb/s or faster.
Discontinuities in the value of this counter can
occur at re-initialization of the management
system, and at other times as indicated by the
value of ifCounterDiscontinuityTime."
REFERENCE "[IEEE 802.3 Std.], 30.3.2.1.5,
aSymbolErrorDuringCarrier."
::= { dot3HCStatsEntry 6 }
-- 802.3 Tests
dot3Tests OBJECT IDENTIFIER ::= { dot3 6 }
dot3Errors OBJECT IDENTIFIER ::= { dot3 7 }
-- TDR Test
dot3TestTdr OBJECT-IDENTITY
STATUS deprecated
DESCRIPTION "******** THIS IDENTITY IS DEPRECATED *******
The Time-Domain Reflectometry (TDR) test is
specific to ethernet-like interfaces of type
10Base5 and 10Base2. 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.
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 an appropriate
instance of an appropriate vendor specific MIB
object, and the OBJECT IDENTIFIER of that
instance is stored in the appropriate instance
of the appropriate test result code object
(thereby indicating where the result has been
stored).
the TDR test bit is giving deprecated era energy ๐ง these identifiers are still in the MIB, just marked as deprecated, so we keep them exactly as written ๐
Okay bestie, picking up right where we left off ๐ Everything below is deprecated, so the old test identities and error codes are kinda retired now ๐ฅบ
This object identity has been deprecated, since
the ifTestTable in the IF-MIB was deprecated,
and there is no longer a standard mechanism for
initiating an interface test. This left no
standard way of using this object identity."
::= { dot3Tests 1 }
-- Loopback Test
dot3TestLoopBack OBJECT-IDENTITY
STATUS deprecated
DESCRIPTION "******** THIS IDENTITY IS DEPRECATED *******
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.
If an error occurs during a test, the
appropriate test result object will be set
to indicate a failure. The two OBJECT
IDENTIFIER values dot3ErrorInitError and
dot3ErrorLoopbackError may be used to provided
more information as values for an appropriate
test result code object.
This object identity has been deprecated, since
the ifTestTable in the IF-MIB was deprecated,
and there is no longer a standard mechanism for
initiating an interface test. This left no
standard way of using this object identity."
::= { dot3Tests 2 }
dot3ErrorInitError OBJECT-IDENTITY
STATUS deprecated
DESCRIPTION "******** THIS IDENTITY IS DEPRECATED *******
Couldn't initialize MAC chip for test.
This object identity has been deprecated, since
the ifTestTable in the IF-MIB was deprecated,
and there is no longer a standard mechanism for
initiating an interface test. This left no
standard way of using this object identity."
::= { dot3Errors 1 }
dot3ErrorLoopbackError OBJECT-IDENTITY
STATUS deprecated
DESCRIPTION "******** THIS IDENTITY IS DEPRECATED *******
Expected data not received (or not received
correctly) in loopback test.
This object identity has been deprecated, since
the ifTestTable in the IF-MIB was deprecated,
and there is no longer a standard mechanism for
initiating an interface test. This left no
standard way of using this object identity."
::= { dot3Errors 2 }
-- { dot3 8 }, the dot3ChipSets tree, is defined in [RFC2666]
-- conformance information
etherConformance OBJECT IDENTIFIER ::= { etherMIB 2 }
etherGroups OBJECT IDENTIFIER ::= { etherConformance 1 }
etherCompliances OBJECT IDENTIFIER ::= { etherConformance 2 }
-- compliance statements
etherCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ********
The compliance statement for managed network
entities which have ethernet-like network
interfaces.
This compliance is deprecated and replaced by
dot3Compliance."
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 }
ether100MbsCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ********
The compliance statement for managed network
entities which have 100 Mb/sec ethernet-like
network interfaces.
This compliance is deprecated and replaced by
dot3Compliance."
MODULE -- this module
MANDATORY-GROUPS { etherStats100MbsGroup }
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 2 }
dot3Compliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION "******** THIS COMPLIANCE IS DEPRECATED ********
The compliance statement for managed network
entities which have ethernet-like network
interfaces.
This compliance is deprecated and replaced by
dot3Compliance2."
MODULE -- this module
MANDATORY-GROUPS { etherStatsBaseGroup }
GROUP etherDuplexGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating in full-duplex mode.
It is highly recommended for all
ethernet-like network interfaces."
GROUP etherStatsLowSpeedGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at 10 Mb/s or slower in
half-duplex mode."
GROUP etherStatsHighSpeedGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at 100 Mb/s or faster."
GROUP etherControlGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control sublayer."
GROUP etherControlPauseGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control PAUSE function."
GROUP etherCollisionTableGroup
DESCRIPTION "This group is optional. It is appropriate
for all ethernet-like network interfaces
which are capable of operating in
half-duplex mode and have the necessary
metering. Implementation in systems with
such interfaces is highly recommended."
::= { etherCompliances 3 }
dot3Compliance2 MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for managed network
entities which have ethernet-like network
interfaces.
Note that compliance with this MIB module
requires compliance with the ifCompliance3
MODULE-COMPLIANCE statement of the IF-MIB
(RFC2863). In addition, compliance with this
MIB module requires compliance with the
mauModIfCompl3 MODULE-COMPLIANCE statement of
the MAU-MIB (RFC3636)."
MODULE -- this module
MANDATORY-GROUPS { etherStatsBaseGroup2 }
GROUP etherDuplexGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating in full-duplex mode.
It is highly recommended for all
ethernet-like network interfaces."
GROUP etherRateControlGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at speeds faster than
1000 Mb/s. It is highly recommended for all
ethernet-like network interfaces."
GROUP etherStatsLowSpeedGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at 10 Mb/s or slower in
half-duplex mode."
GROUP etherStatsHighSpeedGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at 100 Mb/s or faster."
GROUP etherStatsHalfDuplexGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating in half-duplex mode."
GROUP etherHCStatsGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces which are
capable of operating at 10 Gb/s or faster.
It is recommended for all ethernet-like
network interfaces which are capable of
operating at 1000 Mb/s or faster."
GROUP etherControlGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control sublayer."
GROUP etherHCControlGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control sublayer and are
capable of operating at 10 Gb/s or faster."
GROUP etherControlPauseGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control PAUSE function."
GROUP etherHCControlPauseGroup
DESCRIPTION "This group is mandatory for all
ethernet-like network interfaces that
support the MAC Control PAUSE function and
are capable of operating at 10 Gb/s or
faster."
Phew, that's the whole compliance family ๐ The dot3Compliance2 one is the current one, and the rest are deprecated, so keep that in mind when you're reading the groups ๐ฆ
GROUP etherCollisionTableGroup
DESCRIPTION "This group is optional. It is appropriate
for all ethernet-like network interfaces
which are capable of operating in
half-duplex mode and have the necessary
metering. Implementation in systems with
such interfaces is highly recommended."
::= { etherCompliances 4 }
-- units of conformance
etherStatsGroup OBJECT-GROUP
OBJECTS { dot3StatsIndex,
dot3StatsAlignmentErrors,
dot3StatsFCSErrors,
dot3StatsSingleCollisionFrames,
dot3StatsMultipleCollisionFrames,
dot3StatsSQETestErrors,
dot3StatsDeferredTransmissions,
dot3StatsLateCollisions,
dot3StatsExcessiveCollisions,
dot3StatsInternalMacTransmitErrors,
dot3StatsCarrierSenseErrors,
dot3StatsFrameTooLongs,
dot3StatsInternalMacReceiveErrors,
dot3StatsEtherChipSet
}
STATUS deprecated
DESCRIPTION "********* THIS GROUP IS DEPRECATED **********
A collection of objects providing information
applicable to all ethernet-like network
interfaces.
This object group has been deprecated and
replaced by etherStatsBaseGroup and
etherStatsLowSpeedGroup."
::= { etherGroups 1 }
etherCollisionTableGroup OBJECT-GROUP
OBJECTS { dot3CollFrequencies
}
STATUS current
DESCRIPTION "A collection of objects providing a histogram
of packets successfully transmitted after
experiencing exactly N collisions."
::= { etherGroups 2 }
etherStats100MbsGroup OBJECT-GROUP
OBJECTS { dot3StatsIndex,
dot3StatsAlignmentErrors,
dot3StatsFCSErrors,
dot3StatsSingleCollisionFrames,
dot3StatsMultipleCollisionFrames,
dot3StatsDeferredTransmissions,
dot3StatsLateCollisions,
dot3StatsExcessiveCollisions,
dot3StatsInternalMacTransmitErrors,
dot3StatsCarrierSenseErrors,
dot3StatsFrameTooLongs,
dot3StatsInternalMacReceiveErrors,
dot3StatsEtherChipSet,
dot3StatsSymbolErrors
}
STATUS deprecated
DESCRIPTION "********* THIS GROUP IS DEPRECATED **********
A collection of objects providing information
applicable to 100 Mb/sec ethernet-like network
interfaces.
This object group has been deprecated and
replaced by etherStatsBaseGroup and
etherStatsHighSpeedGroup."
::= { etherGroups 3 }
etherStatsBaseGroup OBJECT-GROUP
OBJECTS { dot3StatsIndex,
dot3StatsAlignmentErrors,
dot3StatsFCSErrors,
dot3StatsSingleCollisionFrames,
dot3StatsMultipleCollisionFrames,
dot3StatsDeferredTransmissions,
dot3StatsLateCollisions,
dot3StatsExcessiveCollisions,
dot3StatsInternalMacTransmitErrors,
dot3StatsCarrierSenseErrors,
dot3StatsFrameTooLongs,
dot3StatsInternalMacReceiveErrors
}
STATUS deprecated
DESCRIPTION "********* THIS GROUP IS DEPRECATED **********
A collection of objects providing information
applicable to all ethernet-like network
interfaces.
This object group has been deprecated and
replaced by etherStatsBaseGroup2 and
etherStatsHalfDuplexGroup, to separate
objects which must be implemented by all
ethernet-like network interfaces from
objects that need only be implemented on
ethernet-like network interfaces that are
capable of half-duplex operation."
::= { etherGroups 4 }
etherStatsLowSpeedGroup OBJECT-GROUP
OBJECTS { dot3StatsSQETestErrors }
STATUS current
DESCRIPTION "A collection of objects providing information
applicable to ethernet-like network interfaces
capable of operating at 10 Mb/s or slower in
half-duplex mode."
::= { etherGroups 5 }
etherStatsHighSpeedGroup OBJECT-GROUP
OBJECTS { dot3StatsSymbolErrors }
STATUS current
DESCRIPTION "A collection of objects providing information
applicable to ethernet-like network interfaces
capable of operating at 100 Mb/s or faster."
::= { etherGroups 6 }
etherDuplexGroup OBJECT-GROUP
OBJECTS { dot3StatsDuplexStatus }
STATUS current
DESCRIPTION "A collection of objects providing information
about the duplex mode of an ethernet-like
network interface."
::= { etherGroups 7 }
etherControlGroup OBJECT-GROUP
OBJECTS { dot3ControlFunctionsSupported,
dot3ControlInUnknownOpcodes
}
STATUS current
DESCRIPTION "A collection of objects providing information
about the MAC Control sublayer on ethernet-like
network interfaces."
::= { etherGroups 8 }
etherControlPauseGroup OBJECT-GROUP
OBJECTS { dot3PauseAdminMode,
dot3PauseOperMode,
dot3InPauseFrames,
dot3OutPauseFrames
}
STATUS current
DESCRIPTION "A collection of objects providing information
about and control of the MAC Control PAUSE
function on ethernet-like network interfaces."
::= { etherGroups 9 }
etherStatsBaseGroup2 OBJECT-GROUP
OBJECTS { dot3StatsIndex,
dot3StatsAlignmentErrors,
dot3StatsFCSErrors,
dot3StatsInternalMacTransmitErrors,
dot3StatsFrameTooLongs,
dot3StatsInternalMacReceiveErrors
}
STATUS current
DESCRIPTION "A collection of objects providing information
applicable to all ethernet-like network
interfaces."
::= { etherGroups 10 }
etherStatsHalfDuplexGroup OBJECT-GROUP
OBJECTS { dot3StatsSingleCollisionFrames,
dot3StatsMultipleCollisionFrames,
dot3StatsDeferredTransmissions,
dot3StatsLateCollisions,
dot3StatsExcessiveCollisions,
dot3StatsCarrierSenseErrors
}
STATUS current
DESCRIPTION "A collection of objects providing information
applicable only to half-duplex ethernet-like
network interfaces."
::= { etherGroups 11 }
etherHCStatsGroup OBJECT-GROUP
OBJECTS { dot3HCStatsAlignmentErrors,
dot3HCStatsFCSErrors,
dot3HCStatsInternalMacTransmitErrors,
dot3HCStatsFrameTooLongs,
dot3HCStatsInternalMacReceiveErrors,
dot3HCStatsSymbolErrors
}
STATUS current
DESCRIPTION "A collection of objects providing high-capacity
statistics applicable to higher-speed
ethernet-like network interfaces."
::= { etherGroups 12 }
etherHCControlGroup OBJECT-GROUP
OBJECTS { dot3HCControlInUnknownOpcodes }
STATUS current
DESCRIPTION "A collection of objects providing high-capacity
statistics for the MAC Control sublayer on
higher-speed ethernet-like network interfaces."
::= { etherGroups 13 }
etherHCControlPauseGroup OBJECT-GROUP
OBJECTS { dot3HCInPauseFrames,
dot3HCOutPauseFrames
}
STATUS current
DESCRIPTION "A collection of objects providing high-capacity
statistics for the MAC Control PAUSE function on
higher-speed ethernet-like network interfaces."
::= { etherGroups 14 }
etherRateControlGroup OBJECT-GROUP
OBJECTS { dot3StatsRateControlAbility,
dot3StatsRateControlStatus
}
STATUS current
DESCRIPTION "A collection of objects providing information
about the Rate Control function on ethernet-like
interfaces."
::= { etherGroups 15 }
END
5. Intellectual Property Statement โจ
okay so the IETF is being super neutral here ๐ซถ it doesn't take a position on whether any intellectual property or other rights someone might claim over the tech in this doc are valid or in scope. it also doesn't know if a license under those rights is actually available, and it's not claiming it went looking for any. if you want the IETF's rules on rights for standards-track and standards-related docs, check BCP-11 ๐
if someone has filed claims of rights for publication, or there are assurances of licenses, or the result of an attempt to get a general license or permission for implementers or users to use those proprietary rights, you can get all of that from the IETF Secretariat ๐ผ
and the IETF invites anyone who's interested to flag any copyrights, patents or patent applications, or other proprietary rights that might cover tech needed to practice this standard ๐ฅ just send that info to the IETF Executive Director ๐
6. Acknowledgements ๐ธ
okay bestie, this is the shoutout section ๐ซถ this doc was made by the IETF Ethernet Interfaces and Hub MIB Working Group, and these people's work is literally why it exists:
- Ran Atkinson
- Mike Ayers
- Mike Heard
- Jeffrey Johnson
- Lynn Kubinec
- Kam Lam
- Kerry McDonald
- Steve McRobert
- K.C. Norseth
- Dan Romascanu
- Randy Presuhn
- Andrew Smith
- Kaj Tesink
- Geoff Thompson
so this doc is based on the Proposed Standard Ethernet MIB, RFC 2665 [RFC2665] ๐, edited by John Flick of Hewlett-Packard and Jeffrey Johnson of RedBack Networks and produced by the Ethernet Interfaces and Hub MIB Working Group. it levels up that doc by adding support for 10 Gb/s Ethernet interfaces as defined in [IEEE802.3ae] โก
then RFC 2665 is based on the Proposed Standard Ethernet MIB, RFC 2358 [RFC2358] ๐ง, also edited by John Flick of Hewlett-Packard and Jeffrey Johnson of RedBack Networks, and produced by the 802.3 Hub MIB Working Group. RFC 2665 extended that one with full-duplex Ethernet interfaces and 1000 Mb/sec Ethernet interfaces as outlined in [IEEE802.3] ๐
RFC 2358 is almost completely based on both the Standard Ethernet MIB, RFC 1643 [RFC1643], and the Proposed Standard Ethernet MIB using the SNMPv2 SMI, RFC 1650 [RFC1650]. both of those were edited by Frank Kastenholz of FTP Software and produced by the Interfaces MIB Working Group. RFC 2358 added support for 100 Mb/sec ethernet interfaces ๐
RFC 1643 and RFC 1650 are based on the Draft Standard Ethernet MIB, RFC 1398 [RFC1398], also edited by Frank Kastenholz and produced by the Ethernet MIB Working Group ๐ฆ
and RFC 1398 is based on the Proposed Standard Ethernet MIB, RFC 1284 [RFC1284], which was edited by John Cook of Chipcom and produced by the Transmission MIB Working Group. the Ethernet MIB Working Group gathered implementation experience of the variables specified in RFC 1284, wrote that experience down in RFC 1369 [RFC1369], and used that info to build this revised MIB ๐ค
RFC 1284 is based on a doc written by Frank Kastenholz, then of Interlan, called IEEE 802.3 Layer Management Draft M compatible MIB for TCP/IP Networks [KASTEN] ๐ . that doc got modestly reworked, first by the SNMP Working Group and then by the Transmission Working Group, so it matched the current conventions for defining objects for MIB interfaces. James Davin, of the MIT Laboratory for Computer Science, and Keith McCloghrie of Hughes LAN Systems, contributed to later drafts of this memo. Marshall Rose of Performance Systems International, Inc. converted the document into RFC 1212 [RFC1212] concise format ๐. Anil Rijsinghani of DEC contributed text that more adequately describes the TDR test. and big thanks to Frank Kastenholz of Interlan and Louis Steinberg of IBM for their experimentation ๐ซถโจ
7. Normative References ๐
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirements Levels", BCP 14, RFC 2119, March 1997.
[RFC2578] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M. and S. Waldbusser, "Structure of
Management Information Version 2 (SMIv2)", STD 58, RFC
2578, April 1999.
[RFC2579] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M. and S. Waldbusser, "Textual Conventions
for SMIv2", STD 58, RFC 2579, April 1999.
[RFC2580] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case,
J., Rose, M. and S. Waldbusser, "Conformance Statements
for SMIv2", STD 58, RFC 2580, April 1999.
[RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group
MIB using SMIv2", RFC 2863, June 2000.
[IEEE802.3] IEEE, IEEE Std 802.3, 2002 Edition: "Carrier Sense
Multiple Access with Collision Detection (CSMA/CD)
Access Method and Physical Layer Specifications", March
2002.
[IEEE802.3ae] IEEE, IEEE Std 802.3ae-2002, "Amendment: Media Access
Control (MAC) Parameters, Physical Layers, and
Management Parameters for 10 Gb/s Operation", August,
2002.
[RFC3636] Flick, J., "Definitions of Managed Objects for IEEE
802.3 Medium Attachment Units (MAUs) using SMIv2", RFC
3636, September 2003.
8. Informative References ๐ง
[RFC1212] Rose, M. and K. McCloghrie, Editors, "Concise MIB
Definitions", STD 16, RFC 1212, March 1991.
[RFC1213] McCloghrie, K. and M. Rose, Editors, "Management
Information Base for Network Management of TCP/IP-based
internets: MIB-II", STD 17, RFC 1213, March 1991.
[RFC1284] Cook, J., "Definitions of Managed Objects for
Ethernet-Like Interface Types", RFC 1284, December
1991.
[RFC1369] Kastenholz, F., "Implementation Notes and Experience
for The Internet Ethernet MIB", RFC 1369, October 1992.
[RFC1398] Kastenholz, F., "Definitions of Managed Objects for the
Ethernet-like Interface Types", RFC 1398, January 1993.
[RFC1643] Kastenholz, F., "Definitions of Managed Objects for the
Ethernet-like Interface Types", STD 50, RFC 1643, July
1994.
[RFC1650] Kastenholz, F., "Definitions of Managed Objects for the
Ethernet-like Interface Types using SMIv2", RFC 1650,
August 1994.
[RFC2358] Flick, J. and J. Johnson, "Definitions of Managed
Objects for the Ethernet-like Interface Types", RFC
2358, June 1998.
[RFC2665] Flick, J. and J. Johnson, "Definitions of Managed
Objects for the Ethernet-like Interface Types", RFC
2665, August 1999.
[RFC2666] Flick, J., "Definitions of Object Identifiers for
Identifying Ethernet Chip Sets", RFC 2666, August 1999.
[RFC3410] Case, J., Mundy, R., Partain, D. and B. Stewart,
"Introduction and Applicability Statements for
Internet-Standard Network Management Framework", RFC
3410, December 2002.
[CASE] Case, J., and C. Partridge, "Case Diagrams: A First
Step to Diagrammed Management Information Bases",
Computer Communications Review, 19(1):13-16, January
1989.
[RFC3637] Heard, C., "Definitions of Managed Objects for the
Ethernet WAN Interface Sublayer", RFC 3637, September
2003.
[KASTEN] 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.
9. Security Considerations ๐จ
okay this one is SERIOUS bestie, so read carefully ๐ญ๐
there is one management object in this MIB with a MAX-ACCESS clause of read-write. that object, dot3PauseAdminMode, can be used to change the flow control config on a network interface. that could cause dropped packets, or send flow control packets on links where the link partner won't understand them. either one could be seriously bad for network performance ๐
these objects might be considered sensitive or vulnerable in some network environments. supporting SET operations in a non-secure environment without proper protection can have a negative effect on network operations ๐
some of the readable objects in this MIB module (so, objects with a MAX-ACCESS other than not-accessible) might also be considered sensitive or vulnerable in some network environments. the one to watch is dot3StatsEtherChipSet, since in many environments it's sensitive: it would let an intruder find out which vendor's equipment is on the network. note that this object has been deprecated, but some implementors may still choose to implement it for backwards compatability ๐ง
most objects in this MIB module hold statistical info about particular network links. in some network environments, that info may be considered sensitive too ๐
so it's important to control even GET and/or NOTIFY access to these objects, and possibly even encrypt their values when sending them over the network via SNMP ๐
SNMP versions before SNMPv3 did not include adequate security. even if the network itself is secure (for example by using IPSec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module ๐ค
it is recommended that implementors consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) ๐โจ
and furthermore, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. instead, it is RECOMMENDED to deploy SNMPv3 and enable cryptographic security. then it's a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is properly configured, so the objects are only accessible to those principals (users) who have legitimate rights to actually GET or SET (change/create/delete) them ๐
10. IANA Considerations ๐
this doc doesn't define any new name space for IANA to administer. however, section 3.2.4 does say that some of the defined values in a current IANA-maintained name space need to be marked as deprecated or obsolete ๐ฆ. specifically, these enumerated values in the IANAifType TEXTUAL-CONVENTION in the IANAifType-MIB module got an ASN.1 comment from IANA saying they're deprecated:
iso88032Csmacd(7)starLan(11)
and these ones got an ASN.1 comment saying they're obsolete:
fastEther(62)fastEtherFX(69)gigabitEthernet(117)
in every one of these cases, the ASN.1 comment says ethernetCsmacd(6) should be used instead ๐
A. Change Log ๐
A.1. Changes since RFC 2665 ๐โจ
okay so this section is basically the changelog bestie ๐ it lists everything that changed from RFC 2665 to make this document, and honestly the glow-up list is kinda iconic ๐ฆ
(1) Updated references to the IEEE 802.3 standard to refer to the 2002 edition. ๐ธ
(2) Added reference to IEEE 802.3ae-2002. ๐
(3) Updated WG e-mail address. ๐
(4) The following DESCRIPTION clauses have been updated to reflect behaviour on 10 Gb/s interfaces: ๐ป
dot3StatsAlignmentErrors and dot3StatsSymbolErrors.
(5) The following objects have been added for management of the Rate Control function in WAN applications of ethernet: ๐
dot3StatsRateControlAbility and dot3StatsRateControlStatus.
(6) The following 64-bit counters have been added to support operation on high-speed ethernet interfaces: ๐
dot3HCControlInUnknownOpcodes, dot3HCInPauseFrames,
dot3HCOutPauseFrames, dot3HCStatsAlignmentErrors,
dot3HCStatsFCSErrors, dot3HCStatsFrameTooLongs,
dot3HCStatsInternalMacTransmitErrors,
dot3HCStatsInternalMacReceiveErrors,
dot3HCStatsSymbolErrors
(7) Object groups and compliances have been added to contain the new objects. ๐ง
(8) The MODULE-IDENTITY clause has been updated to reflect the changes in the MIB module. ๐ช
(9) Use of the various ifType values for ethernet has been clarified to emphasize that all ethernet-like interfaces must use the ethernetCsmacd ifType. ๐ซถ
(10) Several clarifications were made to the section on the mapping of the Interface MIB objects to ethernet. ๐
(11) MIB boilerplate in section 2 has been updated to the latest approved text. โจ
A.2. Changes between RFC 2358 and RFC 2665 ๐
this one is the previous glow-up, from RFC 2358 to RFC 2665. the vibe is very "we fixed the counters and the duplex stuff" ๐
This section enumerates changes made to RFC 2358 to produce RFC 2665.
(1) Section 2 has been replaced with the current SNMP Management Framework boilerplate. ๐ฆ
(2) The ifMtu mapping has been clarified. ๐
(3) The relationship between the IEEE 802.3 octet counters and the IF-MIB octet counters has been clarified. ๐ข
(4) REFERENCE clauses have been updated to reflect the actual IEEE 802.3 managed object that each MIB object is based on. ๐
(5) The following object DESCRIPTION clauses have been updated to reflect that they do not increment in full-duplex mode: ๐
dot3StatsSingleCollisionFrames,
dot3StatsMultipleCollisionFrames, dot3StatsSQETestErrors,
dot3StatsDeferredTransmissions, dot3StatsLateCollisions,
dot3StatsExcessiveCollisions, dot3StatsCarrierSenseErrors,
dot3CollFrequencies.
(6) The following object DESCRIPTION clauses have been updated to reflect behaviour on full-duplex and 1000 Mb/s interfaces: ๐
dot3StatsAlignmentErrors,
dot3StatsFCSErrors, dot3StatsSQETestErrors,
dot3StatsLateCollisions, dot3StatsSymbolErrors.
(7) Two new tables, dot3ControlTable and dot3PauseTable, have been added. ๐๏ธ
(8) A new object, dot3StatsDuplexStatus, has been added. ๐
(9) The object groups and compliances have been restructured. ๐งฉ
(10) The dot3StatsEtherChipSet object has been deprecated. ๐ โโ๏ธ
(11) The dot3ChipSets have been moved to a separate document. ๐
A.3. Changes between RFC 1650 and RFC 2358 ๐ฆ
this is the oldest glow-up on the list, from RFC 1650 to RFC 2358. lowkey the origin story ๐ท
This section enumerates changes made to RFC 1650 to produce RFC 2358.
(1) The MODULE-IDENTITY has been updated to reflect the changes in the MIB. ๐ชช
(2) A new object, dot3StatsSymbolErrors, has been added. โจ
(3) The definition of the object dot3StatsIndex has been converted to use the SMIv2 OBJECT-TYPE macro. ๐ง
(4) A new conformance group, etherStats100MbsGroup, has been added. ๐
(5) A new compliance statement, ether100MbsCompliance, has been added. ๐
(6) The Acknowledgements were extended to provide a more complete history of the origin of this document. ๐ซถ
(7) The discussion of ifType has been expanded. ๐ฌ
(8) A section on mapping of Interfaces MIB objects has been added. ๐บ๏ธ
(9) A section defining the relationship of this MIB to the MAU MIB has been added. ๐
(10) A section on the mapping of IEEE 802.3 managed objects to this MIB and the Interfaces MIB has been added. ๐งญ
(11) Converted the dot3Tests, dot3Errors, and dot3ChipSets OIDs to use the OBJECT-IDENTITY macro. ๐
(12) Added to the list of registered dot3ChipSets. ๐
(13) An intellectual property notice and copyright notice were added, as required by RFC 2026. โ๏ธ
Author's Address ๐ฎ
John Flick ๐ Hewlett-Packard Company 8000 Foothills Blvd. M/S 5557 Roseville, CA 95747-5557
Phone: +1 916 785 4018 ๐ EMail: johnf@rose.hp.com ๐
Full Copyright Statement โ๏ธ
Copyright (C) The Internet Society (2003). All Rights Reserved. ๐
This document and translations of it 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 and distributed, in whole or in part, without restriction of any kind, provided that the above 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 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 case the procedures for copyrights defined in the Internet 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 the Internet Society or its successors or assignees. โพ๏ธ
This document and the information contained herein is provided on an "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. ๐
Acknowledgement ๐ซถ
Funding for the RFC Editor function is currently provided by the Internet Society. ๐ โจ
๐ฆ where this page comes from
- ietf: rfc3635 2003-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms