RFC 4546

Radio Frequency (RF) Interface Management Information Base for Data over Cable Service Interface Specifications (DOCSIS) 2.0 Compliant RF Interfaces

๐Ÿ“… published June 2006, from ietf

Part 1 of 25 ๐ŸŽ€

okay bestie, let's get the basics locked in first ๐Ÿ’… This is RFC 4546, and the full title is Radio Frequency (RF) Interface Management Information Base for Data over Cable Service Interface Specifications (DOCSIS) 2.0 Compliant RF Interfaces ๐Ÿฆ‹ It came out in June 2006 from the Network Working Group stream, written by D. Raftus of ATI Technologies, Inc. and E. Cardona of CableLabs. It's a Standards Track document, and it obsoletes RFC 2670 ๐Ÿ’œ


Status of This Memo โœจ

so this doc is an Internet standards track protocol for the 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). Distribution of this memo is unlimited ๐ŸŒˆ

This document revises and obsoletes RFC 2670. Please see Section 5.3 for a description of the changes from RFC 2670 ๐Ÿงš

the copyright line reads Copyright (C) The Internet Society (2006) ๐Ÿ”’

Abstract ๐Ÿฆ‹

this memo defines a piece of the Management Information Base (MIB) for network management protocols in the Internet community ๐Ÿ’œ It's specifically a set of managed objects for SNMP-based management (that's the Simple Network Management Protocol) of the Radio Frequency (RF) interfaces on systems that follow the Data Over Cable Service Interface Specifications (DOCSIS) ๐Ÿ”ฅ

Table of Contents ๐Ÿ“‘

here's the map so you don't get lost ๐Ÿ—บ๏ธ

1. The Internet-Standard Management Framework ......................2
2. Glossary ........................................................3
   2.1. Baseline Privacy ...........................................3
   2.2. CATV .......................................................3
   2.3. Channel ....................................................3
   2.4. CM or Cable Modem ..........................................3
   2.5. CMTS or Cable Modem Termination System .....................3
   2.6. Codeword ...................................................4
   2.7. Data Packet ................................................4
   2.8. dBmV .......................................................4
   2.9. DOCSIS .....................................................4

        2.9.1. DOCSIS 1.0 ..........................................4
        2.9.2. DOCSIS 1.1 ..........................................4
        2.9.3. DOCSIS 2.0 ..........................................4
   2.10. Downstream ................................................5
   2.11. Euro-DOCSIS ...............................................5
   2.12. Head-end ..................................................5
   2.13. MAC Packet ................................................5
   2.14. MCNS ......................................................5
   2.15. Mini-slot .................................................5
   2.16. QPSK (Quadrature Phase Shift Keying) ......................5
   2.17. QAM (Quadrature Amplitude Modulation) .....................5
   2.18. RF ........................................................5
   2.19. Symbol-times ..............................................5
   2.20. Upstream ..................................................6
3. Overview ........................................................6
   3.1. Textual Conventions ........................................6
        3.1.1. Textual Conventions in RFC 2670 .....................6
        3.1.2. Textual Conventions in RFC 4546 .....................6
   3.2. Structure of the MIB .......................................6
        3.2.1. docsIfBaseObjects ...................................7
        3.2.2. docsIfCmObjects .....................................7
        3.2.3. docsIfCmtsObjects ...................................8
        3.2.4. Relationship to the Interfaces MIB Module ...........8
        3.2.5. Offline Upstream Parameters Handling ...............22
4. Definitions ....................................................24
5. Revision History ..............................................134
   5.1. Scope ....................................................134
   5.2. Extension ................................................134
6. Security Considerations .......................................134
7. Management Interoperability of DOCSIS 1.0, 1.1, and 2.0 .......136
8. References ....................................................136
   8.1. Normative References .....................................136
   8.2. Informative References ...................................137

1. The Internet-Standard Management Framework โœจ

if you want the full tour of the documents describing the current Internet-Standard Management Framework, check out section 7 of RFC 3410 [RFC3410] ๐Ÿงญ

okay so managed objects live in a virtual information store called the Management Information Base, or MIB ๐Ÿ—‚๏ธ You usually reach MIB objects through the Simple Network Management Protocol (SNMP). The objects get defined using the mechanisms in the Structure of Management Information (SMI). This memo specifies a MIB module that is compliant to the SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] STD 58, RFC 2580 [RFC2580] ๐Ÿ“š

2. Glossary ๐Ÿ“–

the terms in this document come either from normal cable system usage or from the documents tied to the Data Over Cable Service Interface Specification process ๐Ÿ’…

2.1. Baseline Privacy ๐Ÿ”

this is a security interface spec made for DOCSIS-compliant cable data systems, and it keeps device authentication data confidential in the CATV plant ๐Ÿซฃ See [BPI] and [BPIPLUS].

2.2. CATV ๐Ÿ“บ

it started out as "Community Antenna Television," but now it means any cable or hybrid fiber and cable system used to deliver video signals to a community ๐Ÿ˜๏ธ

2.3. Channel ๐Ÿ“ก

a channel is a specific frequency allocation within an RF medium. It's defined by its channel width in Hertz (cycles per second) and its center frequency ๐ŸŽถ In US cable systems, upstream channels are usually allocated from 5-42MHz, while downstream channels are usually allocated from 50-750MHz. It depends on what the system can do. The typical broadcast channel width in the US is 6MHz, and upstream channel widths for DOCSIS vary.

for European cable systems, upstream channels vary by country. The upper edge of upstream channel allocations varies between 25 MHz to 65 MHz, and the lower edge of downstream channel allocations varies between 47 MHz and 87.5 MHz ๐Ÿ‡ช๐Ÿ‡บ The typical broadcast channel width in Europe is 8MHz. The actual parameters matter for systems deploying Euro-DOCSIS technology ๐Ÿง 

the downstream channels conform to the requirements of ITU-T Recommendation J.83 [ITU-T_J.83] โœจ

2.4. CM or Cable Modem ๐Ÿงธ

a CM acts as a "slave" station in a DOCSIS-compliant cable data system ๐Ÿซถ

2.5. CMTS or Cable Modem Termination System ๐Ÿ‘‘

this is a generic term for a cable bridge or cable router in a head-end. The CMTS is the master station in a DOCSIS-compliant cable data system ๐Ÿ˜ค It's the only station that transmits downstream, and it controls the scheduling of upstream transmissions by its associated CMs. main character energy, honestly ๐Ÿ’…

2.6. Codeword ๐Ÿ”‘

a characteristic of the Forward Error Correction scheme, used above the RF media layer ๐Ÿ›ก๏ธ

See "Data-Over-Cable Service Interface Specifications: Radio Frequency Interface Specification SP-RFIv2.0-I10-051209".

2.7. Data Packet ๐Ÿ“ฆ

the payload portion of the MAC Packet ๐ŸŽ

2.8. dBmV ๐Ÿ“ถ

a measure of RF signal voltage amplitude, where the power level is determined by the characteristic impedance. A zero dB signal power is equivalent to 48.75 dBmV signal amplitude in a 75 Ohm system ๐Ÿ”Œ

2.9. DOCSIS ๐ŸŽ€

"Data Over Cable Service Interface Specification" is the name, and it refers to the ITU-T J112 [ITU-T_J.112] Annex B standard for cable modem systems. It's giving standard, and it's iconic ๐ŸŒธ

2.9.1. DOCSIS 1.0

cable modem systems that are CM/CMTS compliant to requirements in [RFI1.0]. When people say DOCSIS 1.0 in this document, they usually mean the upstream channel queuing mechanism known as Class of Service (COS) ๐ŸŽŸ๏ธ

2.9.2. DOCSIS 1.1

cable modem systems that are CM/CMTS compliant to requirements in [ITU-T_J.112]. DOCSIS 1.1 references in this document are partly tied to the upstream and downstream Quality of Service (QOS). The term DOCSIS 1.x covers both DOCSIS 1.0 and DOCSIS 1.1 ๐ŸŒˆ

2.9.3. DOCSIS 2.0

cable modem systems that are CM/CMTS compliant to requirements in [ITU-T_J.122]. DOCSIS 2.0 is the second generation of radio-frequency interface specifications of DOCSIS ๐Ÿฆ‹

2.10. Downstream โฌ‡๏ธ

the direction from the head-end towards the subscriber ๐Ÿ 

2.11. Euro-DOCSIS ๐Ÿ‡ช๐Ÿ‡บ

cable modem systems CM/CMTS that conform to the European spectrum lineup and are compliant to requirements of Annex F in [ITU-T_J.122] ๐ŸŒ

2.12. Head-end ๐Ÿข

the origination point in most cable systems for the subscriber video signals. It's also usually where the CMTS equipment lives ๐Ÿ“

2.13. MAC Packet ๐Ÿงฉ

a DOCSIS PDU ๐Ÿ’œ

2.14. MCNS

"Multimedia Cable Network System." It's been mostly replaced by DOCSIS in usage ๐Ÿ•ฐ๏ธ

2.15. Mini-slot โฑ๏ธ

generally, an interval of time that the CMTS allocates to a given CM so that CM can transmit in the upstream direction. See [ITU-T_J.122] โšก

2.16. QPSK (Quadrature Phase Shift Keying)

a particular modulation scheme on an RF medium. See [Proakis00] ๐ŸŒŠ

2.17. QAM (Quadrature Amplitude Modulation)

a particular modulation scheme on RF medium. It's usually written with a number for the size of the modulation constellation (e.g., 16 QAM). See [Proakis00] ๐Ÿ”ข

2.18. RF

Radio Frequency ๐Ÿ“ป

2.19. Symbol-times

a characteristic of the RF modulation scheme. See [ITU-T_J.122] ๐ŸŽต

2.20. Upstream

the direction from the subscriber towards the head-end โฌ†๏ธ


3. Overview ๐Ÿ—บ๏ธ

this MIB module gives you the set of objects needed to manage DOCSIS-compliant Cable Modem (CM) and Cable Modem Termination System (CMTS) RF interfaces ๐Ÿ’– The specification is partly derived from the parameters and protocols described in [ITU-T_J.122].

In this document, the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC2119].

3.1. Textual Conventions ๐ŸŽจ

this MIB module defines new textual conventions for CM and CMTS indications of DOCSIS 2.0 RFI capabilities, configuration, usage, and backward compatible modes of operation, as defined in [RFI2.0] โœจ It also covers some textual conventions for the capabilities and modes of operation of [RFI1.1] that RFC 2670 didn't cover. Those are managed proprietarily in the DOCSIS OSSI 1.1 specification [OSSI1.1] ๐Ÿซข

3.1.1. Textual Conventions in RFC 2670

RFC 2670 defined two textual conventions, TenthdBmV and TenthdB, which are power measurement representations ๐Ÿ“

3.1.2. Textual Conventions in RFC 4546

this MIB module defines the textual convention DocsisUpstreamType to represent the DOCSIS 1.0 [RFI1.0] and DOCSIS 2.0 [RFI2.0] upstream burst modulation profile types ๐Ÿ”ฅ

this MIB module also defines the textual conventions DocsisVersion and DocsisQosVersion to represent the DOCSIS 1.0 [RFI1.0] and DOCSIS 1.1 [RFI1.1] COS/QOS capabilities and modes of operation ๐Ÿ’…

3.2. Structure of the MIB โœจ

okay so this MIB module is structured as three groups ๐Ÿงš

  • Management information that both the Cable Modem (CM) and the Cable Modem Termination System (CMTS) care about (docsIfBaseObjects).
  • Management information that's just for the Cable Modem (docsIfCmObjects).
  • Management information that's just for the Cable Modem Termination System (docsIfCmtsObjects).

Inside each group, tables cover different jobs, like upstream queue services, channel characteristics, MAC layer management, and so on ๐Ÿ’… Rows that the device creates on its own (based on the hardware configuration) may and generally will have a mix of configuration and status objects. Rows the management station is supposed to create are generally limited to configuration (read-create) objects. It's giving organized ๐ŸŽ€

3.2.1. docsIfBaseObjects ๐ŸŒธ

docsIfDownstreamChannelTable: this table describes the downstream channels that exist for a CMTS, and the downstream channel a CM receives.

docsIfUpstreamChannelTable: this table describes the upstream channels that exist for a CMTS, and the upstream transmission channel a CM is currently using.

docsIfQosProfileTable: this table describes the valid Quality of Service profiles for the cable data system. Main character energy for QoS ๐Ÿ‘‘

docsIfSignalQualityTable: this table is used to monitor the RF signal quality characteristics of received signals ๐Ÿ“ก

docsIfDocsisBaseCapability: this object shows the highest DOCSIS version a cable device can support ๐Ÿฆ‹

3.2.2. docsIfCmObjects ๐Ÿฆ‹

docsIfCmMacTable: this table is used to monitor the DOCSIS MAC interface, and it can be thought of as an extension to the ifEntry ๐Ÿ’œ

docsIfCmStatusTable: this table keeps track of a bunch of status objects and counters for cable modems. There's a matching table at the CMTS, docsIfCmtsCmStatusTable, which keeps similar counters from the CMTS point of view ๐Ÿซถ

docsIfCmServiceTable: this table describes the upstream service queues available at this CM. There's a matching table at the CMTS, docsIfCmtsServiceEntry, which describes the service queues from the CMTS's point of view โœจ

3.2.3. docsIfCmtsObjects ๐Ÿ”ฅ

docsIfCmtsMacTable: describes the attributes of each CMTS MAC interface ๐ŸŒˆ

docsIfCmtsStatusTable: this table gives you a set of aggregated counters that roll up the values and events happening on the underlying sub-interfaces ๐Ÿ“Š

docsIfCmtsCmStatusTable: this table holds info about known cable modems on the system this CMTS serves. "Known" means they're ranging, registered, and/or were online before ๐Ÿ“

docsIfCmtsServiceTable: this table gives you access to the info about upstream service queues ๐Ÿ’–

docsIfCmtsModulationTable: this table lets you control the modulation profiles for RF channels associated with this CMTS ๐ŸŽ€

docsIfCmtsMacToCmTable: this table gives you fast access into the docsIfCmtsCmTable using a MAC address (of the CM) interface. Speedy ๐Ÿ’จ

docsIfCmtsChannelUtilizationTable: this table provides statistical load usage data for attached upstream and downstream physical channels ๐Ÿ“ˆ

docsIfCmtsDownChannelCounterTable: this table provides statistical data for attached downstream channels, which is good input for load usage calculations ๐Ÿงฎ

docsIfCmtsUpChannelCounterTable: this table provides statistical data for attached upstream channels, which is also good input for load usage calculations ๐Ÿงฎ

3.2.4. Relationship to the Interfaces MIB Module ๐Ÿซง

This section explains how this MIB module relates to the Interfaces MIB [RFC2863]. Several areas of overlap are covered in the subsections below. If you want the general intent behind those areas, the implementer is pointed to the Interfaces MIB document ๐Ÿ“š

3.2.4.1. Layering Model ๐Ÿฅž

An instance of ifEntry exists for each RF downstream interface, for each RF upstream interface, for each upstream logical Channel, and for each RF MAC layer ๐Ÿ’•

The ifStackTable [RFC2863] MUST be implemented to identify the relationships among sub-interfaces. This one's a must, bestie ๐Ÿšจ

Here's an example of a CMTS MAC interface with one downstream and two upstream interfaces ๐Ÿ‘€

                             | <== to network layer
       +------------------ --+-------------------------------+
       |                     RF MAC                          |
       +--+------------------+------------------------+------+
          |                  |                        |
  +-------+-----+     +------+------+          +------+------+
  | Downstream1 |     |  Upstream1  |          |  Upstream2  |
  |             |     |             |          |             |
  +-------------+     ++-----------++          ++-----------++
                       |           |            |           |
                  +----+----+ +----+----+  +----+----+ +----+----+
                  |  Ch-1   | |  Ch-2   |  |  Ch-1   | |  Ch-2   |
                  |(A/TDMA) | |(S-CDMA) |  |(A/TDMA) | |(S-CDMA) |
                  +---------+ +---------+  +---------+ +---------+

                             Figure 1

So as you can see, the RF MAC interface sits on top of the downstream and upstream interfaces, and the RF upstream interface sits on top of an upstream logical channel. Layers stacked like a cute little parfait ๐Ÿฐ

In this example, the index values could be assigned like this:

  ifIndex       ifType                     Description

     2    docsCableMaclayer(127)           CATV MAC Layer
     3    docsCableDownstream(128)         CATV Downstream interface
     4    docsCableUpstream(129)           CATV Upstream interface
     5    docsCableUpstream(129)           CATV Upstream interface
     6    docsCableUpstreamChannel(205)    CATV Upstream Channel
     7    docsCableUpstreamChannel(205)    CATV Upstream Channel
     8    docsCableUpstreamChannel(205)    CATV Upstream Channel
     9    docsCableUpstreamChannel(205)    CATV Upstream Channel

                             Figure 2

The matching ifStack entries would then be:

          | IfStackHigherLayer | ifStackLowerLayer |
          |         0          |         2         |
          |         2          |         3         |
          |         2          |         4         |
          |         2          |         5         |
          |         4          |         6         |
          |         4          |         7         |
          |         5          |         8         |
          |         5          |         9         |
          |         3          |         0         |
          |         6          |         0         |
          |         7          |         0         |
          |         8          |         0         |
          |         9          |         0         |

                             Figure 3

The same interface model also works for Telephony or Telco Return systems ๐Ÿ“ž A pure Telco Return system (Cable Modem, as well as Cable Modem Termination System) wouldn't have upstream cable channels, only downstream cable channels. Systems that support both Telco Return and cable upstream channels can use the model above without any changes โœจ

Telco Return upstream channel(s) management is outside the scope of this document ๐Ÿ™…โ€โ™€๏ธ

3.2.4.2. Virtual Circuits ๐Ÿšซ

This medium doesn't support virtual circuits, so this area doesn't apply to this MIB module. Not every feature is for everyone ๐Ÿ’€

3.2.4.3. ifTestTable ๐Ÿงช

The ifTestTable is optional for DOCSIS CM/CMTS implementations, but it isn't specifically influenced by the RF MIB ๐Ÿคทโ€โ™€๏ธ

3.2.4.4. ifRcvAddressTable ๐Ÿ“ฌ

The ifRcvAddressTable is optional for DOCSIS CM/CMTS implementations, but it isn't specifically influenced by the RF MIB either ๐Ÿ™ˆ

3.2.4.5. ifEntry ๐Ÿชช

This section only documents the differences from the requirements in the Interfaces MIB module. Go check that MIB module for any columns left out of the descriptions below ๐Ÿ“–

3.2.4.5.1. ifEntry for Downstream Interfaces ๐Ÿ’œ

The ifEntry for downstream interfaces supports the ifGeneralInformationGroup and the ifPacketGroup of the Interfaces MIB module. It's an output-only interface at the CMTS, so all input status counters (ifIn*) will return zero. It's an input-only interface at the CM, so all output status counters (ifOut*) will return zero ๐Ÿซ 

3.2.4.5.1.1. ifEntry for Downstream Interfaces in Cable Modem Termination System ๐Ÿ”ฅ

ifTable           Comments
==============    ===========================================
ifIndex           Each CATV Downstream interface is represented
                  by an ifEntry.

ifType            The IANA value of docsCableDownstream(128).

ifSpeed           Return the speed of this downstream channel.
                  The returned value is the raw bandwidth in bits/s
                  of this interface.  This is the symbol rate
                  multiplied with the number of bits per symbol.

ifHighSpeed       Return the speed of this downstream channel.
                  The returned value is the raw bandwidth in
                  megabits/s of this interface.  This is the symbol
                  rate multiplied with the number of bits per
                  symbol.

ifPhysAddress     Return the zero-length OCTET STRING.

ifAdminStatus     The administrative status of this interface.

ifOperStatus      The current operational status of this interface.

ifMtu             The size of the largest frame that can be
                  sent on this interface, specified in octets.
                  The value includes the length of the MAC header.

ifInOctets
ifHCInOctets      Return zero.

ifInUcastPkts
ifHCInUcastPkts   Return zero.

ifInMulticastPkts
ifHCInMulticastPkts
                  Return zero.

ifInBroadcastPkts
ifHCInBroadcastPkts
                  Return zero.

ifInDiscards      Return zero.

ifInErrors        Return zero.

ifInUnknownProtos Return zero.

ifOutOctets
ifHCOutOctets     The total number of octets transmitted on this
                  interface.  This includes MAC packets as well as
                  data packets, and includes the length of the MAC
                  header.
ifOutUcastPkts
ifHCOutUcastPkts  The number of unicast packets transmitted on this
                  interface.  This includes MAC packets as well as
                  data packets.

ifOutMulticastPkts
ifHCOutMulticastPkts
                  Return the number of multicast packets
                  transmitted on this interface.
                  This includes MAC packets as well as data
                  packets.

ifOutBroadcastPkts
ifHCOutBroadcastPkts
                  Return the number of broadcast packets transmitted
                  on this interface.  This includes MAC packets as
                  well as data packets.

ifOutDiscards     The total number of outbound packets which
                  were discarded.  Possible reasons are:
                  buffer shortage.

ifOutErrors       The number of packets that could not be
                  transmitted due to errors.

ifPromiscuousMode Return false.

3.2.4.5.1.2. ifEntry for Downstream Interfaces in Cable Modem โœจ

okay so this is the downstream CM table, and it's giving detail ๐Ÿงš

   ifTable           Comments
   ==============    ===========================================
   ifIndex           Each CATV Downstream interface is represented
                     by an ifEntry.


   ifType            The IANA value of docsCableDownstream(128).

   ifSpeed           Return the speed of this downstream channel.
                     The returned value the raw bandwidth in bits/s
                     of this interface.  This is the symbol rate
                     multiplied with the number of bits per symbol.

   ifHighSpeed       Return the speed of this downstream channel.
                     The returned value the raw bandwidth in megabits/s
                     of this interface.  This is the symbol rate
                     multiplied with the number of bits per symbol.

   ifPhysAddress     Return the zero-length OCTET STRING.

   ifAdminStatus     The administrative status of this interface.

   ifOperStatus      The current operational status of this interface.

   ifMtu             The size of the largest frame that can be
                     received from this interface, specified in octets.
                     The value includes the length of the MAC header.

   ifInOctets
   ifHCInOctets      The total number of octets received on this
                     interface.  This includes data packets as well as
                     MAC packets, and includes the length of the
                     MAC header.

   ifInUcastPkts
   ifHCInUcastPkts   The number of unicast packets received on this
                     interface.  This includes data packets as well as
                     MAC packets.

   ifInMulticastPkts
   ifHCInMulticastPkts
                     Return the number of multicast packets received
                     on this interface.  This includes data packets as
                     well as MAC packets.

   ifInBroadcastPkts
   ifHCInBroadcastPkts
                     Return the number of broadcast packets received
                     on this interface.  This includes data packets
                     as well as MAC packets.

   ifInDiscards      The total number of received packets that have
                     been discarded.
                     The possible reasons are: buffer shortage.

   ifInErrors        The number of inbound packets that contained
                     errors preventing them from being deliverable
                     to higher layers.
                     Possible reasons are: MAC FCS error.

   ifInUnknownProtos The number of frames with an unknown packet type.
                     These are MAC frames with an unknown packet type.

   ifOutOctets       Return zero.
   ifHCOutOctets

   ifOutUcastPkts    Return zero.
   ifHCOutUcastPkts

   ifOutMulticastPkts
   ifHCOutMulticastPkts
                     Return zero.

   ifOutBroadcastPkts
   ifHCOutBroadcastPkts
                     Return zero.

   ifOutDiscards     Return zero.

   ifOutErrors       Return zero.

   ifPromiscuousMode Refer to the Interfaces MIB.

3.2.4.5.2. ifEntry for Upstream Interfaces ๐ŸŽ€

bestie, every supported interface of the type docsCableUpstream(129) must have its own ifEntry ๐Ÿ’…. The upstream ifEntry supports the ifGeneralInformationGroup and the ifPacketGroup of the Interfaces MIB ๐Ÿฆ‹. At the CMTS it's input-only, so every ifOut* counter just returns zero ๐Ÿ™ˆ. At the CM it's output-only, so every ifIn* counter returns zero ๐Ÿ’€.

3.2.4.5.2.1. ifEntry for Upstream Interfaces in Cable Modem Termination System ๐Ÿ”ฅ

   ifTable           Comments
   ==============    ===========================================
   ifIndex           Each RF Cable Upstream interface is represented
                     by an ifEntry.

   ifType            The IANA value of docsCableUpstream (129).

   ifSpeed           Return the maximum channel throughput (not payload
                     throughput) supported by the interface.
                     The maximum throughput is calculated for the case
                     where upstream channels are configured to maximize
                     interface throughput.

   ifHighSpeed       Return the maximum channel throughput (not payload
                     throughput) supported by the interface.
                     The maximum throughput is calculated for the case
                     where upstream channels are configured to maximize
                     interface throughput.  Units for this object are
                     (1/1 000 000) * IfSpeed.

   ifPhysAddress     Return the zero-length OCTET STRING.

   ifAdminStatus     The administrative status of this interface.

   ifOperStatus      The current operational status of this interface.
                     This reflects the total status of all the channels
                     under this interface.  So if at least one channel
                     has a physical connection this interface has
                     connection.

   ifMtu             The size of the largest frame that can be
                     transmitted on this interface, specified in
                     octets.  The value includes the length of the MAC
                     header.  This is the maximum of all the ifMtu of
                     all the channels under this interface.

   ifInOctets
   ifHCInOctets      The total (sum) number of octets received on all
                     the upstream channels under this
                     interface.  This includes data packets as well as
                     MAC packets, and includes the length of the
                     MAC header.

   ifInUcastPkts
   ifHCInUcastPkts   The total number of unicast packets received on
                     all the upstream channels under this
                     interface.  This includes data packets as well as
                     MAC packets.

   ifInMulticastPkts
   ifHCInMulticastPkts
                     Return the total number of multicast packets
                     received on all the upstream channels under this
                     interface.  This includes data packets as well as
                     MAC layer packets.

   ifInBroadcastPkts
   ifHCInBroadcastPkts
                     Return the total number of broadcast packets
                     received on all the upstream channels under this
                     interface.  This includes data packets as well as
                     MAC packets.

   ifInDiscards      The total number of received packets that have
                     been discarded on all the upstream channels under
                     this interface.
                     The possible reasons are: buffer shortage.

   ifInErrors        The total number of inbound packets that contained
                     errors preventing them from being deliverable
                     to higher layers.
                     Possible reasons are: MAC FCS error.

   ifInUnknownProtos The total number of frames with an unknown packet
                     type.  These are MAC frames with an unknown packet
                     type.

   ifOutOctets       Return zero.
   ifHCOutOctets

   ifOutUcastPkts    Return zero.
   ifHCOutOctets

   ifOutMulticastPkts
   ifHCOutMulticastPkts
                     Return zero.

   ifOutBroadcastPkts
   ifHCOutBroadcastPkts
                     Return zero.

   ifOutDiscards     Return zero.

   ifOutErrors       Return zero.

3.2.4.5.2.2. ifEntry for Upstream Interfaces in Cable Modem ๐ŸŒธ

   ifTable           Comments
   ==============    ===========================================
   ifIndex           Each RF Cable Upstream interface is represented
                     by an ifEntry.

   ifType            The IANA value of docsCableUpstream (129).

   ifSpeed           Return the speed of this upstream interface.
                     The returned value is the raw bandwidth
                     in bits/s of this interface.

   ifHighSpeed       Return the speed of this upstream interface.
                     The returned value is the raw bandwidth
                     in megabits/s of this interface.

   ifPhysAddress     Return the zero-length OCTET STRING.

   ifAdminStatus     The administrative status of this interface.

   ifOperStatus      The current operational status of this interface.

   ifMtu             The size of the largest frame that can be
                     transmitted on this interface, specified in
                     octets.  The value includes the length of the MAC
                     header.

   ifInOctets        Return zero.
   ifHCInOctets

   ifInUcastPkts     Return zero.
   ifHCInUcastPkts

   ifInMulticastPkts
   ifHCInMulticastPkts
                     Return zero.

   ifInBroadcastPkts
   ifHCInBroadcastPkts
                     Return zero.

   ifInDiscards      Return zero.

   ifInErrors        Return zero.

   ifInUnknownProtos Return zero.

   ifOutOctets
   ifHCOutOctets     The total number of octets transmitted on this
                     interface.  This includes MAC packets as well as
                     data packets, and includes the length of the MAC
                     header.

   ifOutUcastPkts
   ifHCOutUcastPkts  The number of unicast packets transmitted on this
                     interface.  This includes MAC packets as well as
                     data packets.

   ifOutMulticastPkts
   ifHCOutMulticastPkts
                     Return the number of multicast packets transmitted
                     on this interface.
                     This includes MAC packets as well as data packets.

   ifOutBroadcastPkts
   ifHCOutBroadcastPkts
                     Return the number of broadcast packets transmitted
                     on this interface.
                     This includes MAC packets as well as data packets.

   ifOutDiscards     The total number of outbound packets that
                     were discarded.  Possible reasons are:
                     buffer shortage.

   ifOutErrors       The number of packets that could not be
                     transmitted due to errors.

   ifPromiscuousMode Return false.

3.2.4.5.3. ifEntry for Upstream Channels ๐Ÿงšโ€โ™€๏ธ

every supported channel of the type docsCableUpstreamChannel(205) must have its own ifEntry, no exceptions ๐Ÿ‘‘. The ifEntry for upstream channels supports the ifGeneralInformationGroup and the ifPacketGroup of the Interfaces MIB โญ. At the CMTS it's input-only, so all the ifOut* counters return zero ๐Ÿซถ. DOCSIS CMs are not required to support logical upstream channels ๐Ÿ“.

3.2.4.5.3.1. ifEntry for Upstream Channels in Cable Modem Termination System ๐ŸŽ€

okay so this is the ifEntry for the upstream channels on the Cable Modem Termination System (CMTS) side, and honestly it's giving very organized ๐Ÿ’…

ifTable           Comments
==============    ===========================================
ifIndex           Each RF Cable Upstream channel is represented
                  by an ifEntry.

ifType            The IANA value of docsCableUpstreamChannel (205).

ifSpeed           Return the speed of this upstream channel.
                  The returned value is the raw bandwidth
                  in bits/s of this channel.

ifHighSpeed       Return the speed of this upstream channel.
                  The returned value is the raw bandwidth
                  in megabits/s of this channel.

ifPhysAddress     Return the zero-length OCTET STRING.

ifAdminStatus     The administrative status of this interface.

ifOperStatus      The current operational status of this interface.

ifMtu             The size of the largest frame that can be
                  received on this interface, specified in octets.
                  The value includes the length of the MAC header.

ifInOctets        The total number of octets received on this
                  interface.  This includes data packets as well as
                  MAC packets, and includes the length of the
                  MAC header.

ifInUcastPkts
ifHCInUcastPkts
                  The number of unicast packets received on this
                  interface.  This includes data packets as well as
                  MAC packets.

ifInMulticastPkts
ifHCInMulticastPkts
                  Return the number of multicast packets received
                  on this interface.  This includes data packets as
                  well as MAC layer packets.

ifInBroadcastPkts
ifHCInBroadcastPkts
                  Return the number of broadcast packets received
                  on this interface.  This includes data packets
                  as well as MAC packets.

ifInDiscards      The total number of received packets that have
                  been discarded.
                  The possible reasons are: buffer shortage.

ifInErrors        The number of inbound packets that contained
                  errors preventing them from being deliverable
                  to higher layers.
                  Possible reasons are: MAC FCS error.

ifInUnknownProtos The number of frames with an unknown packet type.
                  These are MAC frames with an unknown packet type.

ifOutOctets       Return zero.
ifHCOutOctets

ifOutUcastPkts    Return zero.
ifHCOutUcastPkts

ifOutMulticastPkts
ifHCOutMulticastPkts
                  Return zero.

ifOutBroadcastPkts
ifHCOutBroadcastPkts
                  Return zero.

ifOutDiscards     Return zero.

ifOutErrors       Return zero.

3.2.4.5.4. ifEntry for the MAC Layer โœจ

so this one is the ifEntry for the MAC Layer, and it's giving ifGeneralInformationGroup and ifPacketGroup from the Interfaces MIB ๐Ÿซถ It basically gives you the big-picture status for the lower level downstream and upstream interfaces underneath it.

ifTable           Comments
==============    ===========================================
ifIndex           Each RF Cable MAC layer entity is represented
                  by an ifEntry.

ifType            The IANA value of docsCableMaclayer(127).

ifSpeed           Return zero.

ifPhysAddress     Return the physical address of this interface.

ifAdminStatus     The administrative status of this interface.

ifOperStatus      The current operational status of the MAC
                  layer interface.

ifHighSpeed       Return zero.

ifMtu             Return 1500.

ifInOctets
ifHCInOctets      The total number of data octets received on this
                  interface, targeted for upper protocol layers.

ifInUcastPkts
ifHCInUcastPkts   The number of unicast packets received on this
                  interface, targeted for upper protocol layers.

ifInMulticastPkts
ifHCInMulticastPkts
                  Return the number of multicast packets received
                  on this interface, targeted for upper protocol
                  layers.

ifInBroadcastPkts
ifHCInBroadcastPkts
                  Return the number of broadcast packets received
                  on this interface, targeted for upper protocol
                  layers.

ifInDiscards      The total number of received packets that have
                  been discarded.
                  The possible reasons are: buffer shortage.

ifInErrors        The number of inbound packets that contained
                  errors preventing them from being deliverable
                  to higher layers.
                  Possible reasons are: data packet FCS error,
                  invalid MAC header.

ifInUnknownProtos The number of frames with an unknown packet type.
                  This is the number of data packets targeted for
                  upper protocol layers with an unknown packet type.

ifOutOctets       The total number of octets, received from upper
ifHCOutOctets     protocol layers and transmitted on this interface.

ifOutUcastPkts
ifHCOutUcastPkts  The number of unicast packets, received from upper
                  protocol layers and transmitted on this interface.

ifOutMulticastPkts
ifHCOutMulticastPkts
                  Return the number of multicast packets received
                  from upper protocol layers and transmitted on this
                  interface.

ifOutBroadcastPkts
ifHCOutBroadcastPkts
                  Return the number of broadcast packets received
                  from upper protocol layers and transmitted on this
                  interface.

ifOutDiscards     The total number of outbound packets that
                  were discarded.  Possible reasons are:
                  buffer shortage.

ifOutErrors       The number of packets that could not be
                  transmitted due to errors.

ifPromiscuousMode Refer to the Interfaces MIB.

3.2.5. Offline Upstream Parameters Handling ๐ŸŒธ

3.2.5.1. Overview ๐Ÿฆ‹

this section is all about offline configuration of the DOCSIS 2.0 upstream logical interface parameters ๐Ÿงš the whole point is to make sure things like modulation profile, channel type, mini-slot size, and SCDMA attributes all line up before you commit changes to an active upstream logical interface. that way the upstream interface has way less downtime, because there are fewer SNMP SET operations hitting in-service upstream interfaces. this mechanism is supported by CMTSs and is not applicable to CMs, so CMs can skip this one, bestie ๐Ÿ’€

3.2.5.2. Operation ๐Ÿ’œ

this mechanism uses three upstream channel MIB objects that are defined for DOCSIS 2.0 CMTS implementations:

docsIfUpChannelStatus is the RowStatus object for creating temporary interfaces in the upstream interface table. a temporary entry is used to modify, validate, and commit upstream parameters of a physical interface. on the CMTS, a physical upstream interface refers to an upstream logical channel interface.

docsIfUpChannelCloneFrom is the object that links a physical interface to a temporary interface, so the upstream parameters of the physical interface can get updated ๐Ÿ”ฅ

docsIfUpChannelUpdate is the commit object. it transfers the validated upstream parameters from the temporary interface over to the physical interface ๐Ÿ‘‘

okay so here's how the offline upstream parameters handling goes, step by step:

  • first, a temporary interface gets created where docsIfUpChannelStatus is set to 'createAndWait', which turns the new create entry status to 'notReady'.
  • next, you SET docsIfUpChannelCloneFrom in the temporary interface to the physical interface's ifIndex value, and that does two things:
    • it creates the association of the physical interface to the temporary interface.
    • it copies the original upstream parameters from the physical interface to the temporary interface, which turns its status to 'notInService'.
  • then the operator modifies the temporary interface parameters to the values they want ๐ŸŽ€
  • now comes the moment of truth! a SET to 'active' on the RowStatus of the temporary interface works if all the parameters in the temporary interface are valid for the associated physical interface. if they aren't, the temporary entry stays with status 'notInservice', and the SET returns the error 'commitFailed' ๐Ÿ˜ญ
  • once the temporary interface status is 'active', a SET to docsIfUpChannelUpdate to 'true' transfers the temporary interface parameter values to the physical interface.
  • after all the update operations are done, the temporary interface gets destroyed by setting docsIfUpChannelStatus to 'destroy' ๐Ÿงš

3.2.5.3. Relation of docsIfUpChannelStatus and ifMib ๐Ÿ“

the main purpose of docsIfUpChannelStatus is creating temporary interfaces for offline handling of physical interface configuration. it does not manage the creation or control of physical interfaces. to keep the operation and status reports of interfaces consistent, this object also does not manage the administrative and operational status of physical interfaces. no overreach, iykyk ๐Ÿ’…


4. Definitions ๐ŸŒˆ

okay, now we get into the actual MIB module, and it's the good stuff ๐Ÿคฉ

   DOCS-IF-MIB DEFINITIONS ::= BEGIN

     IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32,
        Integer32,
        Counter32,
        Counter64,
        TimeTicks,
        IpAddress,
        transmission
                FROM SNMPv2-SMI        -- [RFC2578]
        TEXTUAL-CONVENTION,
        MacAddress,
        RowStatus,
        TruthValue,
        TimeInterval,
        TimeStamp,
        StorageType
                FROM SNMPv2-TC         -- [RFC2579]
        OBJECT-GROUP,

        MODULE-COMPLIANCE
                FROM SNMPv2-CONF       -- [RFC2580]
        ifIndex, InterfaceIndexOrZero
                FROM IF-MIB            -- [RFC2863]
        InetAddressType,
        InetAddress
                FROM INET-ADDRESS-MIB  -- [RFC4001]
        IANAifType
                FROM IANAifType-MIB;   -- [IANA]

   docsIfMib MODULE-IDENTITY
        LAST-UPDATED    "200605240000Z" -- May 24, 2006
        ORGANIZATION    "IETF IPCDN Working Group"
        CONTACT-INFO

            "        David Raftus
             Postal: ATI Technologies Inc.
                     340 Terry Fox Drive, Suite 202
                     Ottawa Ontario
                     Canada
             Phone:  +1 613 592 1052 ext.222
             E-mail: david.raftus@ati.com

                     Eduardo Cardona
             Postal: Cable Television Laboratories, Inc.
                     858 Coal Creek Circle
                     Louisville, CO 80027-9750
                     U.S.A.
             Phone:  Tel:    +1 303 661 9100
                     Fax:    +1 303 661 9199
             E-mail: e.cardona@cablelabs.com;mibs@cablelabs.com

             IETF IPCDN Working Group
             General Discussion: ipcdn@ietf.org
             Subscribe: http://www.ietf.org/mailman/listinfo/ipcdn
             Archive: ftp://ftp.ietf.org/ietf-mail-archive/ipcdn
             Co-chairs: Richard Woundy, Richard_Woundy@cable.comcast.com
                        Jean-Francois Mule, jf.mule@cablelabs.com"
        DESCRIPTION
            "This is the MIB Module for DOCSIS 2.0-compliant Radio
             Frequency (RF) interfaces in Cable Modems and
             Cable Modem Termination Systems.

             Copyright (C) The Internet Society (2006).  This
             version of this MIB module is part of RFC 4546; see
             the RFC itself for full legal notices."

okay bestie, we're picking up right at the revision history ๐ŸŽ€ The MIB module keeps a little changelog so you can see what's new each time it's updated ๐Ÿ’…

        REVISION        "200605240000Z"
        DESCRIPTION
            "Revision of the IETF RF MIB module for DOCSIS 2.0.
             This version published as RFC 4546.
             This MIB module revision includes the following
             among others:
             Usage of ifType (205) for upstream logical channels.
             Addition of downstream and upstream utilization
             counters.
             Additional statistics per upstream interface.
             Upstream channel offline configuration mechanism.
             Added MIB support for new DOCSIS 2.0 modulation
             attributes.
             Euro-DOCSIS downstream interleave values.
             Adjustments to RFC 2670 definitions based on
             the MIB review guidelines from the IETF
             Operations and Management Area (OPS)."

        REVISION "199908190000Z"
        DESCRIPTION
            "Initial version, published as RFC 2670.
             Modified by Mike St. Johns to fix problems identified by
             the first pass of the MIB doctor.  Of special note,
             docsIfRangingResp and docsIfCmtsInsertionInterval were
             obsoleted and replaced by other objects with the same
             functionality, but with more appropriate syntax."
        ::= { transmission 127 }

the 2006 revision is giving major glow-up energy โœจ It adds DOCSIS 2.0 stuff, utilization counters, and that offline upstream config mechanism we already talked about ๐Ÿฆ‹ The 1999 one was the original RFC 2670 era, and the OPS folks were like "ok but fix your syntax" ๐Ÿ’€

Next up are the textual conventions, which are basically custom data types that make the objects easier to read ๐Ÿงš

   -- Textual Conventions

   TenthdBmV ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d-1"
        STATUS       current
        DESCRIPTION
            "This data type represents power levels that are normally
             expressed in dBmV.  Units are in tenths of a dBmV;
             for example, 5.1 dBmV will be represented as 51."
        SYNTAX       Integer32

   TenthdB ::= TEXTUAL-CONVENTION
        DISPLAY-HINT "d-1"
        STATUS       current
        DESCRIPTION
            "This data type represents power levels that are normally
             expressed in dB.  Units are in tenths of a dB;
             for example, 5.1 dB will be represented as 51."
        SYNTAX       Integer32

   DocsisVersion ::= TEXTUAL-CONVENTION
       STATUS          current
       DESCRIPTION
           "Indicates the DOCSIS Radio Frequency specification being
            referenced.
            'docsis10' indicates DOCSIS 1.0.
            'docsis11' indicates DOCSIS 1.1.
            'docsis20' indicates DOCSIS 2.0."
       SYNTAX        INTEGER {
            docsis10 (1),
            docsis11 (2),
            docsis20 (3)
       }

   DocsisQosVersion ::= TEXTUAL-CONVENTION

       STATUS          current
       DESCRIPTION
           "Indicates the referenced quality-of-service
            level.
            'docsis10 refers to DOCSIS 1.0 Class of
            Service queuing services, and 'docsis11' refers
            to DOCSIS 1.1 Quality of Service."
       SYNTAX        INTEGER {
           docsis10 (1),
           docsis11 (2)
       }

   DocsisUpstreamType ::= TEXTUAL-CONVENTION
       STATUS          current
       DESCRIPTION
            "Indicates the DOCSIS Upstream Channel Type.
             'unknown' means information not available.
             'tdma' is related to TDMA, Time Division
             Multiple Access; 'atdma' is related to A-TDMA,
             Advanced Time Division Multiple Access,
             'scdma' is related to S-CDMA, Synchronous
             Code Division Multiple Access.
             'tdmaAndAtdma is related to simultaneous support of
             TDMA and A-TDMA modes."
       SYNTAX          INTEGER {
           unknown(0),
           tdma(1),
           atdma(2),
           scdma(3),
           tdmaAndAtdma(4)
       }

    DocsEqualizerData ::= TEXTUAL-CONVENTION
         STATUS       current
         DESCRIPTION
             "This data type represents the equalizer data
              as measured at the receiver interface.
              The format of the equalizer follows the structure of the
              Transmit Equalization Adjust RNG-RSP TLV of DOCSIS RFI
              v2.0 :
              1 byte Main tap location 1..(n + m)
              1 byte Number of forward taps per symbol
              1 byte Number of forward taps: n
              1 byte Number of reverse taps: m

              Following are the equalizer coefficients:
              First, forward taps coefficients:
              2 bytes F1 (real),  2 bytes  F1 (imag)
              ...
              2 bytes Fn (real),  2 bytes  Fn (imag)

              Then, reverse taps coefficients:
              2 bytes D1 (real),  2 bytes  D1 (imag)
              ...

              2 bytes Dm (real),  2 bytes  Dm (imag)

              The equalizer coefficients are considered signed 16-bit
              integers in the range from -32768 (0x8000) to 32767
              (0x7FFF).

              DOCSIS specifications require up to a maximum of
              64 equalizer taps (n + m); therefore, this object size
               can get up 260 bytes (4 + 4x64).
              The minimum object size (other than zero) for a t-spaced
              tap with a minimum of 8 symbols will be 36 (4 + 4x8)."
         REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 8-23."
         SYNTAX       OCTET STRING(SIZE (0 | 36..260))

the DocsEqualizerData one is lowkey a whole vibe ๐ŸŒธ It's basically a packed byte blob that mirrors the Transmit Equalization Adjust RNG-RSP TLV, with signed 16-bit coefficients and up to 64 taps. Ngl the math (4 + 4x64 = 260) is so satisfying ๐Ÿค“

Now we get the object tree. Think of it like folders inside folders ๐Ÿ“

   docsIfMibObjects  OBJECT IDENTIFIER ::= { docsIfMib 1 }
   docsIfBaseObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 1 }
   docsIfCmObjects   OBJECT IDENTIFIER ::= { docsIfMibObjects 2 }
   docsIfCmtsObjects OBJECT IDENTIFIER ::= { docsIfMibObjects 3 }

   --
   -- BASE GROUP
   --

   --
   -- The following table is implemented on both the Cable Modem
   -- and the Cable Modem Termination System.  This table is
   -- read only for the CM.
   --

   docsIfDownstreamChannelTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfDownstreamChannelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table describes the attributes of downstream
             channels (frequency bands)."
        REFERENCE

            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-16, and 6-17."
        ::= { docsIfBaseObjects 1 }

   docsIfDownstreamChannelEntry OBJECT-TYPE
        SYNTAX      DocsIfDownstreamChannelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry provides a list of attributes for a single
             downstream channel.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableDownstream(128)."
        INDEX { ifIndex }
        ::= { docsIfDownstreamChannelTable 1 }

   DocsIfDownstreamChannelEntry ::= SEQUENCE {
            docsIfDownChannelId               Integer32,
            docsIfDownChannelFrequency        Integer32,
            docsIfDownChannelWidth            Integer32,
            docsIfDownChannelModulation       INTEGER,
            docsIfDownChannelInterleave       INTEGER,
            docsIfDownChannelPower            TenthdBmV,
            docsIfDownChannelAnnex            INTEGER,
            docsIfDownChannelStorageType      StorageType
        }

   docsIfDownChannelId OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The Cable Modem Termination System identification of the
             downstream channel within this particular MAC interface.
             if the interface is down, the object returns the most
             current value.  If the downstream channel ID is unknown,
             this object returns a value of 0."
        ::= { docsIfDownstreamChannelEntry 1 }

   docsIfDownChannelFrequency OBJECT-TYPE
        SYNTAX      Integer32 (0..1000000000)
        UNITS       "hertz"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The center of the downstream frequency associated with
             this channel.  This object will return the current tuner
             frequency.  If a CMTS provides IF output, this object
             will return 0, unless this CMTS is in control of the
             final downstream frequency.  See the associated
             compliance object for a description of valid frequencies
             that may be written to this object."

        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.3.3."
        ::= { docsIfDownstreamChannelEntry 2 }

   docsIfDownChannelWidth OBJECT-TYPE
        SYNTAX      Integer32 (0..16000000)
        UNITS       "hertz"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The bandwidth of this downstream channel.  Most
             implementations are expected to support a channel width
             of 6 MHz (North America) and/or 8 MHz (Europe).  See the
             associated compliance object for a description of the
             valid channel widths for this object."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 6-17."
        ::= { docsIfDownstreamChannelEntry 3 }

   docsIfDownChannelModulation OBJECT-TYPE
        SYNTAX      INTEGER {
            unknown(1),
            other(2),
            qam64(3),
            qam256(4)
        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The modulation type associated with this downstream
             channel.  If the interface is down, this object either
             returns the configured value (CMTS), the most current
             value (CM), or the value of unknown(1).  See the
             associated conformance object for write conditions and
             limitations.  See the reference for specifics on the
             modulation profiles implied by qam64 and qam256."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio

             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 6-17."
        ::= { docsIfDownstreamChannelEntry 4 }

   docsIfDownChannelInterleave OBJECT-TYPE
        SYNTAX      INTEGER {
            unknown(1),
            other(2),
            taps8Increment16(3),
            taps16Increment8(4),
            taps32Increment4(5),
            taps64Increment2(6),
            taps128Increment1(7),
            taps12increment17(8)
        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The Forward Error Correction (FEC) interleaving used
             for this downstream channel.
             Values are defined as follows:
             taps8Increment16(3):   protection 5.9/4.1 usec,
                                    latency .22/.15 msec
             taps16Increment8(4):   protection 12/8.2 usec,
                                    latency .48/.33 msec
             taps32Increment4(5):   protection 24/16 usec,
                                    latency .98/.68 msec
             taps64Increment2(6):   protection 47/33 usec,
                                    latency 2/1.4 msec
             taps128Increment1(7):  protection 95/66 usec,
                                    latency 4/2.8 msec
             taps12increment17(8):  protection 18/14 usec,
                                    latency 0.43/0.32 msec

            The value 'taps12increment17' is supported by EuroDOCSIS
            cable systems only, and the others by DOCSIS cable systems.

so the downstream channel table is the star of the show ๐Ÿฆ‹ It's got one row per downstream channel (each ifEntry with ifType docsCableDownstream(128)), indexed by ifIndex ๐Ÿ’– The Interleave object is where the FEC magic lives, with protection and latency numbers for each setting ๐Ÿ”ฅ Also, taps12increment17 is the EuroDOCSIS-only one, so the rest are for regular DOCSIS cable systems ๐ŸŒˆ

and the way the object tree is nested is giving organized queen ๐Ÿ‘‘ Everything hangs off docsIfMib, so you always know where you are ๐Ÿงš

Okay so the MIB bit is up next, and it's giving a lot of tables ๐Ÿ’…๐ŸŽ€

             If the interface is down, this object either returns
             the configured value (CMTS), the most current value (CM),
             or the value of unknown(1).
             The value of other(2) is returned if the interleave
             is known but not defined in the above list.
             See the associated conformance object for write
             conditions and limitations.  See the reference for the FEC
             configuration described by the setting of this object."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 6-15."
        ::= { docsIfDownstreamChannelEntry 5 }

   docsIfDownChannelPower OBJECT-TYPE
        SYNTAX      TenthdBmV
        UNITS       "dBmV"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "At the CMTS, the operational transmit power.  At the CM,
             the received power level.
             If the interface is down, this object either returns
             the configured value (CMTS), the most current value (CM)
             or the value of 0.  See the associated conformance object
             for write conditions and limitations.  See the reference
             for recommended and required power levels."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-16, 6-17."
        ::= { docsIfDownstreamChannelEntry 6 }

   docsIfDownChannelAnnex OBJECT-TYPE
        SYNTAX      INTEGER {
            unknown(1),
            other(2),
            annexA(3),
            annexB(4),
            annexC(5)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The value of this object indicates the conformance of
             the implementation to important regional cable standards.
             annexA : Annex A from ITU-T J.83 is used.
                      (equivalent to EN 300 429)
             annexB : Annex B from ITU-T J.83 is used.
             annexC : Annex C from ITU-T J.83 is used."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.3.1, and H.3.1."
        ::= { docsIfDownstreamChannelEntry 7 }

   docsIfDownChannelStorageType OBJECT-TYPE
        SYNTAX       StorageType
        MAX-ACCESS   read-only
        STATUS       current
        DESCRIPTION
            "The storage type for this conceptual row.
             Entries with this object set to permanent(4)
             do not require write operations for read-write
             objects."
        ::= { docsIfDownstreamChannelEntry 8 }

   --
   -- The following table is implemented on both the CM and the CMTS.
   -- For the CM, only attached channels appear in the table.  For the
   -- CM, this table is read-only as well.
   --

   docsIfUpstreamChannelTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfUpstreamChannelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table describes the attributes of attached upstream
             channels."
        ::= { docsIfBaseObjects 2 }

   docsIfUpstreamChannelEntry OBJECT-TYPE
        SYNTAX      DocsIfUpstreamChannelEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "List of attributes for a single upstream channel.  For
             DOCSIS 2.0 CMTSs, an entry in this table exists for
             each ifEntry with an ifType of docsCableUpstreamChannel
             (205).
             For DOCSIS 1.x CM/CMTSs and DOCSIS 2.0 CMs, an entry in
             this table exists for each ifEntry with an ifType of
             docsCableUpstream (129).

             For DOCSIS 2.0 CMTSs, two classes of interfaces can be
             defined for this table:
              o Upstream Physical Interfaces: The traditional DOCSIS
                1.x CMTS upstream interface ifType 129 and the DOCSIS
                2.0 ifType 205 that are functional.  In other words,
                interfaces that represent upstream receivers within
                an RF MAC interface.
                Entries of physical interfaces are exposed to the
                management interface with their corresponding
                ifStack hierarchy and are not administratively
                created by this table.

              o Upstream Temporary Interfaces: A fictitious
                interface created for the purpose of manipulating
                physical interface parameters offline, then
                validating prior to updating the target physical
                interface.

             In case of a reinitialization of the managed system,
             physical interfaces values persist while the temporary
             interfaces are not recreated.

             This mechanism helps to minimize service disruptions
             originating in situations where a group of interface
             parameter values need to be consistent with each other
             in SET operations.  A temporary buffer
             (temporary interface) is provided to allow the CMTS
             to validate the parameters offline."
        INDEX { ifIndex }
        ::= { docsIfUpstreamChannelTable 1 }

   DocsIfUpstreamChannelEntry ::= SEQUENCE {
            docsIfUpChannelId                     Integer32,
            docsIfUpChannelFrequency              Integer32,
            docsIfUpChannelWidth                  Integer32,
            docsIfUpChannelModulationProfile      Unsigned32,
            docsIfUpChannelSlotSize               Unsigned32,
            docsIfUpChannelTxTimingOffset         Unsigned32,
            docsIfUpChannelRangingBackoffStart    Integer32,
            docsIfUpChannelRangingBackoffEnd      Integer32,
            docsIfUpChannelTxBackoffStart         Integer32,
            docsIfUpChannelTxBackoffEnd           Integer32,
            docsIfUpChannelScdmaActiveCodes       Unsigned32,
            docsIfUpChannelScdmaCodesPerSlot      Integer32,
            docsIfUpChannelScdmaFrameSize         Unsigned32,
            docsIfUpChannelScdmaHoppingSeed       Unsigned32,
            docsIfUpChannelType                   DocsisUpstreamType,
            docsIfUpChannelCloneFrom              InterfaceIndexOrZero,
            docsIfUpChannelUpdate                 TruthValue,
            docsIfUpChannelStatus                 RowStatus,
            docsIfUpChannelPreEqEnable            TruthValue
        }

   docsIfUpChannelId OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The CMTS identification of the upstream channel."
        ::= { docsIfUpstreamChannelEntry 1 }

   docsIfUpChannelFrequency OBJECT-TYPE
        SYNTAX      Integer32 (0..1000000000)
        UNITS       "hertz"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The center of the frequency band associated with this
             upstream interface.  This object returns 0 if the frequency
             is undefined or unknown.  Minimum permitted upstream
             frequency is 5,000,000 Hz for current technology.  See
             the associated conformance object for write conditions
             and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 4-2."
        ::= { docsIfUpstreamChannelEntry 2 }

   docsIfUpChannelWidth OBJECT-TYPE
        SYNTAX      Integer32 (0..64000000)
        UNITS       "hertz"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The bandwidth of this upstream interface.  This object
             returns 0 if the interface width is undefined or unknown.
             Minimum permitted interface width is currently 200,000 Hz.
             See the associated conformance object for write conditions
             and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 6-5."
        ::= { docsIfUpstreamChannelEntry 3 }

   docsIfUpChannelModulationProfile OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "An entry identical to the docsIfModIndex in the
             docsIfCmtsModulationTable that describes this channel.
             This channel is further instantiated there by a grouping
             of interval usage codes (IUCs) that, together, fully
             describe the channel modulation.  This object returns 0 if
             the docsIfCmtsModulationTable entry does not exist or is
             empty.  See the associated conformance object for write
             conditions and limitations.

             Setting this object returns an 'inconsistentValue'
             error if the following conditions are not satisfied:
             1. All the IUC entries in the selected modulation profile
             MUST have the same value of docsIfCmtsModChannelType.
             2. All of the Modulation parameters in the selected
             modulation profile MUST be consistent with the other
             parameters in this docsIfUpstreamChannelEntry."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-19."
        ::= { docsIfUpstreamChannelEntry 4 }

   docsIfUpChannelSlotSize OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "ticks"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Applicable to TDMA and ATDMA channel types only.
             The number of 6.25 microsecond ticks in each upstream
             mini-slot.  Returns zero if the value is undefined or
             unknown or in case of an SCDMA channel.
             See the associated conformance object for write
             conditions and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.1.2.4."
        ::= { docsIfUpstreamChannelEntry 5 }

   docsIfUpChannelTxTimingOffset OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "At the CM, a measure of the current round trip time
             obtained from the ranging offset (initial ranging offset +
             ranging offset adjustments).
             At the CMTS, the maximum of timing offset, among all the
             CMs that are/were present on the channel, taking into
             account all ( initial + periodic ) timing offset
             corrections that were sent for each of the CMs.  Generally,
             these measurements are positive, but if the measurements
             are negative, the value of this object is zero.  Used for
             timing of CM upstream transmissions to ensure synchronized
             arrivals at the CMTS.
             Units are one 64th fraction of 6.25 microseconds."

        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.19."
        ::= { docsIfUpstreamChannelEntry 6 }

That's the whole chunk, bestie ๐Ÿฆ‹ Next up are the ranging and backoff objects, so stay tuned โœจ

These next objects are all about backoff windows, SCDMA knobs, and the clone-and-commit dance for upstream channels ๐Ÿฆ‹

   docsIfUpChannelRangingBackoffStart OBJECT-TYPE
        SYNTAX      Integer32 (0..16)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The initial random backoff window to use when retrying
             Ranging Requests.  Expressed as a power of 2.  A value of
             16 at the CMTS indicates that a proprietary adaptive retry
             mechanism is to be used.  See the associated conformance
             object for write conditions and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 8.3.4, and 9.4."
        ::= { docsIfUpstreamChannelEntry 7 }

   docsIfUpChannelRangingBackoffEnd OBJECT-TYPE
        SYNTAX      Integer32 (0..16)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The final random backoff window to use when retrying
             Ranging Requests.  Expressed as a power of 2.  A value of
             16 at the CMTS indicates that a proprietary adaptive retry
             mechanism is to be used.  See the associated conformance
             object for write conditions and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.4, and 9.4."
        ::= { docsIfUpstreamChannelEntry 8 }

   docsIfUpChannelTxBackoffStart OBJECT-TYPE
        SYNTAX      Integer32 (0..16)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The initial random backoff window to use when retrying
             transmissions.  Expressed as a power of 2.  A value of 16
             at the CMTS indicates that a proprietary adaptive retry
             mechanism is to be used.  See the associated conformance
             object for write conditions and limitations."

        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.4, and 9.4."
        ::= { docsIfUpstreamChannelEntry 9 }

   docsIfUpChannelTxBackoffEnd OBJECT-TYPE
        SYNTAX      Integer32 (0..16)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The final random backoff window to use when retrying
             transmissions.  Expressed as a power of 2.  A value of 16
             at the CMTS indicates that a proprietary adaptive retry
             mechanism is to be used.  See the associated conformance
             object for write conditions and limitations."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.4, and 9.4."
        ::= { docsIfUpstreamChannelEntry 10 }

   docsIfUpChannelScdmaActiveCodes OBJECT-TYPE
        SYNTAX     Unsigned32 (0|64..66|68..70|72|74..78|80..82|84..88
                                |90..96|98..100|102|104..106|108
                                |110..112|114..126|128)
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
            "Applicable for SCDMA channel types only.
             Number of active codes.  Returns zero for
             Non-SCDMA channel types.  Note that legal
             values from 64..128 MUST be non-prime."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.11.2.1."
        ::= { docsIfUpstreamChannelEntry 11 }

   docsIfUpChannelScdmaCodesPerSlot OBJECT-TYPE
        SYNTAX      Integer32(0 | 2..32)
        UNITS       "codesperMinislots"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Applicable for SCDMA channel types only.
             The number of SCDMA codes per mini-slot.
             Returns zero if the value is undefined or unknown or in
             case of a TDMA or ATDMA channel."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.11.2.1."
        ::= { docsIfUpstreamChannelEntry 12 }

   docsIfUpChannelScdmaFrameSize OBJECT-TYPE
        SYNTAX      Unsigned32 (0..32)
        UNITS       "spreadIntervals"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Applicable for SCDMA channel types only.
             SCDMA Frame size in units of spreading intervals.
             This value returns zero for non-SCDMA Profiles."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.12."
        ::= { docsIfUpstreamChannelEntry 13 }

   docsIfUpChannelScdmaHoppingSeed OBJECT-TYPE
        SYNTAX     Unsigned32 (0..32767)
        MAX-ACCESS read-create
        STATUS     current
        DESCRIPTION
            "Applicable for SCDMA channel types only.
             15-bit seed used for code hopping sequence initialization.
             Returns zero for non-SCDMA channel types.
             Setting this value to a value different than zero for
             non-SCDMA channel types returns the error 'wrongValue'."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.14.1."
        ::= { docsIfUpstreamChannelEntry 14 }

   docsIfUpChannelType OBJECT-TYPE
        SYNTAX      DocsisUpstreamType
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Reflects the Upstream channel type.
             This object returns the value of docsIfCmtsModChannelType
             for the modulation profile selected in
             docsIfUpChannelModulationProfile for this row."
        REFERENCE

            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.1."
        ::= { docsIfUpstreamChannelEntry 15 }

   docsIfUpChannelCloneFrom OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object contains the ifIndex value of the physical
             interface row entry whose parameters are to be adjusted.

             Upon setting this object to the ifIndex value of a
             physical interface, the following interface objects values
             are copied to this entry:
             docsIfUpChannelFrequency,
             docsIfUpChannelWidth,
             docsIfUpChannelModulationProfile,
             docsIfUpChannelSlotSize,
             docsIfUpChannelRangingBackoffStart,
             docsIfUpChannelRangingBackoffEnd,
             docsIfUpChannelTxBackoffStart,
             docsIfUpChannelTxBackoffEnd,
             docsIfUpChannelScdmaActiveCodes,
             docsIfUpChannelScdmaCodesPerSlot,
             docsIfUpChannelScdmaFrameSize,
             docsIfUpChannelScdmaHoppingSeed,
             docsIfUpChannelType, and
             docsIfUpChannelPreEqEnable
             Setting this object to the value of a non-existent or
             a temporary upstream interface returns the error
             'wrongValue'.
             This object MUST contain a value of zero for physical
             interfaces entries.
             Setting this object in row entries that correspond to
             physical interfaces returns the error 'wrongValue'."
        ::= { docsIfUpstreamChannelEntry 16 }

   docsIfUpChannelUpdate OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Used to perform the copy of adjusted parameters from the
             temporary interface entry to the physical interface
             indicated by the docsIfUpChannelCloneFrom object.  The
             transfer is initiated through an SNMP SET to 'true' of
             this object.
             A SET to 'true' fails and returns error 'commitFailed'
             if docsIfUpChannelStatus value is 'notInService', which
             means that the interface parameters values are not
             compatible with each other or have not been validated yet.
             Reading this object always returns 'false'."
        ::= { docsIfUpstreamChannelEntry 17 }

   docsIfUpChannelStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object is only used for the creation of a temporary
             upstream row with the purpose of updating the parameters
             of a physical upstream channel entry.

             The following restrictions apply to this object:
             1. This object is not writable for physical interfaces.
             2. Temporary interface entries are only created by a SET
                of this object to createandWait(5).
             3. ifAdminStatus from the Interface MIB RFC 2863 is used
                to take a physical upstream channel offline, to be
                consistent with DOCSIS 1.x operation, as indicated in
                RFC 2670.
                In addition,
                 o ifAdminStatus 'down' is reflected in this object
                   as 'notInService'.
                 o ifOperStatus 'down' while ifAdminStatus 'up' is
                   reflected in this object as 'notInservice'.
             4. Temporary created rows MUST be set to 'active' with
                the purpose of validating upstream parameter
                consistency prior to transferring the parameters to the
                physical interface.

             Below is a mandatory procedure for adjusting the values
             of a physical interface:
             1. Create a temporary interface entry through an SNMP SET
                using 'createAndWait'.  At this point, the RowStatus
                reports 'notReady'.
                The Manager entity uses an ifIndex value outside the
                operational range of the physical interfaces for the
                creation of a temporary interface.
             2. Set the docsIfUpChannelCloneFrom object to the ifIndex
                value of the physical row to update.  Now
                docsIfUpChannelStatus reports 'notInService'.
             3. Change the upstream parameters to the desired values
                in the temporary row.

             4. Validate that all parameters are consistent by setting
                docsIfUpChannelStatus to 'active'.  A failure to set the
                RowStatus to 'active' returns the error 'commitFailed',
                which means the parameters are not compatible with the
                target physical interface.
             5. With docsIfUpChannelStatus 'active', transfer the
                parameters to the target physical interface by setting
                the object docsIfUpChannelUpdate to 'true'.
             6. Delete the temporary row by setting
                docsIfUpChannelStatus to 'destroy'."
        ::= { docsIfUpstreamChannelEntry 18 }

Okay bestie, we're still in 4. Definitions ๐Ÿ’– and this part is all about the QoS and signal quality tables. First up is docsIfUpChannelPreEqEnable ๐Ÿฆ‹. At the CMTS you can switch pre-equalization on or off for an upstream channel, but at the CM it's read-only and just mirrors what the RNG-RSP says. The CM counts pre-equalization as enabled once it has received an RNG-RSP with pre-equalization data at least once since the last MAC reinitialization. The vibe is "check the RNG-RSP receipt, babe" ๐Ÿ’…

   docsIfUpChannelPreEqEnable OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "At the CMTS, this object is used to enable or disable
             pre-equalization on the upstream channel represented by
             this table instance.  At the CM, this object is read-only
             and reflects the status of pre-equalization as represented
             in the RNG-RSP.  Pre-equalization is considered enabled at
             the CM if a RNG-RSP with pre-equalization data has been
             received at least once since the last mac
             reinitialization."
        DEFVAL {false}
        ::= { docsIfUpstreamChannelEntry 19 }

Next is a little note block explaining the QoS profile table ๐ŸŽ€. It's implemented at both the CM and the CMTS, and the CM only needs entries for the classes of service its docsIfCmServiceTable points to. The whole table exists so docsIfServiceTable doesn't have to repeat itself, which is honestly so smart โœจ

   -- The following table describes the attributes of each class of
   -- service.  The entries in this table are referenced from the
   -- docsIfServiceEntries.  They exist as a separate table in order to
   -- reduce redundant information in docsIfServiceTable.
   --
   -- This table is implemented at both the CM and the CMTS.
   -- The CM need only maintain entries for the classes of service
   -- referenced by its docsIfCmServiceTable.
   --

Now the table itself ๐Ÿ“ It's a SEQUENCE OF entries, and it's not-accessible, which means you go through the entries and not the table directly.

   docsIfQosProfileTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfQosProfileEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes for each class of service."
        ::= { docsIfBaseObjects 3 }

Now the entry object ๐Ÿ‘‘ This is where the drama is. Entries can be created by the CMTS if the table is read-create, controlled by docsIfCmtsQosProfilePermissions. If the table is read-only, entries get made from REG-REQ MAC messages at the CMTS, or from the TFTP option file at the CM. At the CMTS, read-only entries get cleaned up when docsIfCmtsServiceTable stops referencing them. Entries can't be removed while something references them, and that's the big rule. Entries also SHOULD NOT be changed while docsIfCmtsServiceTable is using them. If the table is created automatically, there should only be one entry per Class of Service, and duplicate entries with the same parameters are NOT RECOMMENDED. Trust me, this part is serious ๐Ÿซถ

   docsIfQosProfileEntry OBJECT-TYPE
        SYNTAX      DocsIfQosProfileEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes for a single class of service.
             If implemented as read-create in the Cable Modem
             Termination System, creation of entries in this table is
             controlled by the value of
             docsIfCmtsQosProfilePermissions.

             If implemented as read-only, entries are created based
             on information in REG-REQ MAC messages received from
             cable modems (for Cable Modem Termination System), or
             based on information extracted from the TFTP option file
             (for Cable Modem).
             In the Cable Modem Termination System, read-only entries
             are removed if no longer referenced by
             docsIfCmtsServiceTable.

             An entry in this table MUST not be removed while it is
             referenced by an entry in docsIfCmServiceTable (Cable
             Modem) or docsIfCmtsServiceTable (Cable Modem Termination
             System).

             An entry in this table SHOULD NOT be changeable while
             it is referenced by an entry in docsIfCmtsServiceTable.

             If this table is created automatically, there SHOULD only
             be a single entry for each Class of Service.  Multiple
             entries with the same Class of Service parameters are NOT
             RECOMMENDED."
        INDEX { docsIfQosProfIndex }
        ::= { docsIfQosProfileTable 1 }

Next is the SEQUENCE that lists every column in the entry ๐ŸŒˆ

   DocsIfQosProfileEntry ::= SEQUENCE {
            docsIfQosProfIndex                Integer32,
            docsIfQosProfPriority             Integer32,
            docsIfQosProfMaxUpBandwidth       Integer32,
            docsIfQosProfGuarUpBandwidth      Integer32,
            docsIfQosProfMaxDownBandwidth     Integer32,
            docsIfQosProfMaxTxBurst           Integer32,  -- deprecated
            docsIfQosProfBaselinePrivacy      TruthValue,
            docsIfQosProfStatus               RowStatus,
            docsIfQosProfMaxTransmitBurst     Integer32,
            docsIfQosProfStorageType          StorageType
        }

Now the index ๐Ÿ”ฅ It's an Integer32 from 1 to 16383 and it's how each row gets its unique ID.

   docsIfQosProfIndex OBJECT-TYPE
        SYNTAX      Integer32 (1..16383)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The index value that uniquely identifies an entry
             in the docsIfQosProfileTable."
        ::= { docsIfQosProfileEntry 1 }

Next is priority โœจ It's a relative priority for bandwidth allocation, from 0 (lowest) to 7 (highest). How it gets interpreted is device-specific, and it MUST NOT be changed while the row is active. The reference points to Annex C.1.1.4 of SP-RFIv2.0-I10-051209.

   docsIfQosProfPriority OBJECT-TYPE
        SYNTAX      Integer32 (0..7)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "A relative priority assigned to this service when
             allocating bandwidth.  Zero indicates lowest priority
             and seven indicates highest priority.
             Interpretation of priority is device-specific.
             MUST NOT be changed while this row is active."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex C.1.1.4."
        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 2 }

Max upstream bandwidth is next ๐Ÿฆ‹ It's in bits per second, zero means no restriction, and again MUST NOT be changed while the row is active.

   docsIfQosProfMaxUpBandwidth OBJECT-TYPE
        SYNTAX      Integer32 (0..100000000)
        UNITS "bits per second"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The maximum upstream bandwidth, in bits per second,
             allowed for a service with this service class.
             Zero if there is no restriction of upstream bandwidth.
             MUST NOT be changed while this row is active."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex C.1.1.4."
        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 3 }

Guaranteed upstream bandwidth is the minimum that's promised ๐Ÿ’œ Same rule: MUST NOT be changed while the row is active.

   docsIfQosProfGuarUpBandwidth OBJECT-TYPE
        SYNTAX      Integer32 (0..100000000)
        UNITS "bits per second"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Minimum guaranteed upstream bandwidth, in bits per second,

             allowed for a service with this service class.
             MUST NOT be changed while this row is active."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex C.1.1.4."
        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 4 }

Max downstream bandwidth mirrors the upstream one ๐ŸŒธ Zero means unrestricted, and it MUST NOT be changed while the row is active.

   docsIfQosProfMaxDownBandwidth OBJECT-TYPE
        SYNTAX      Integer32 (0..100000000)
        UNITS "bits per second"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The maximum downstream bandwidth, in bits per second,
             allowed for a service with this service class.
             Zero if there is no restriction of downstream bandwidth.
             MUST NOT be changed while this row is active."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex C.1.1.4."

        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 5 }

Now the deprecated one ๐Ÿ’€ docsIfQosProfMaxTxBurst counts mini-slots, and it's been replaced by docsIfQosProfMaxTransmitBurst because the units and value range didn't match the DOCSIS Maximum Upstream Channel Transmit Burst Configuration Setting. It's still here, but it's deprecated, so not me sticking with the old one.

   docsIfQosProfMaxTxBurst OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        UNITS "mini-slots"
        MAX-ACCESS  read-create
        STATUS      deprecated
        DESCRIPTION
            "The maximum number of mini-slots that may be requested
             for a single upstream transmission.
             A value of zero means there is no limit.
             MUST NOT be changed while this row is active.
             This object has been deprecated and replaced by
             docsIfQosProfMaxTransmitBurst, to fix a mismatch
             of the units and value range with respect to the DOCSIS
             Maximum Upstream Channel Transmit Burst Configuration
             Setting."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             C.1.1.4."
        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 6 }

Baseline Privacy is just a yes-or-no toggle for each service class ๐Ÿ”’ It's false by default and MUST NOT be changed while the row is active.

   docsIfQosProfBaselinePrivacy OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Indicates whether Baseline Privacy is enabled for this
             service class.
             MUST NOT be changed while this row is active."
        DEFVAL { false }
        ::= { docsIfQosProfileEntry 7 }

The status column is how rows get created and deleted ๐Ÿงš It MUST NOT be changed away from active while anything in docsIfCmServiceTable (on the CM) or docsIfCmtsServiceTable (on the CMTS) is still pointing at the row.

   docsIfQosProfStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This is object is used to create or delete rows in
             this table.  This object MUST NOT be changed from active
             while the row is referenced by any entry in either
             docsIfCmServiceTable (on the CM) or
             docsIfCmtsServiceTable (on the CMTS)."
        ::= { docsIfQosProfileEntry 8 }

Now the replacement burst column ๐ŸŒˆ It's in bytes, from 0 to 65535, and zero means there's no limit. The note says it doesn't count any physical layer overhead, which is an important detail. It MUST NOT be changed while the row is active.

   docsIfQosProfMaxTransmitBurst OBJECT-TYPE
        SYNTAX      Integer32 (0..65535)
        UNITS       "bytes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The maximum number of bytes that may be requested for a
             single upstream transmission.  A value of zero means there
             is no limit.  Note: This value does not include any
             physical layer overhead.
             MUST NOT be changed while this row is active."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex C.1.1.4."
        DEFVAL { 0 }
        ::= { docsIfQosProfileEntry 9 }

The storage type is read-only, and entries set to permanent(4) don't need write operations for their writable objects ๐Ÿ“

   docsIfQosProfStorageType OBJECT-TYPE
        SYNTAX       StorageType
        MAX-ACCESS   read-only
        STATUS       current
        DESCRIPTION
            "The storage type for this conceptual row.
             Entries with this object set to permanent(4)
             do not require write operations for writable
             objects."
        ::= { docsIfQosProfileEntry 10 }

Now we're onto signal quality ๐Ÿ“ก At the CM it describes the PHY signal quality of downstream channels, and at the CMTS it describes upstream channels. At the CMTS this table MAY exclude contention intervals. Super important for the vibe check ๐Ÿฆ‹

   docsIfSignalQualityTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfSignalQualityEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "At the CM, describes the PHY signal quality of downstream
             channels.  At the CMTS, this object describes the PHY
             signal quality of upstream channels.  At the CMTS, this
             table MAY exclude contention intervals."
        ::= { docsIfBaseObjects 4 }

The entry object is where we decide which ifType each entry applies to ๐ŸŽ€ For Cable Modems it's docsCableDownstream(128). For DOCSIS 1.1 CMTSs it's docsCableUpstream (129), and for DOCSIS 2.0 CMTSs it's docsCableUpstreamChannel (205). Each one has its own ifEntry match, so I'm not gonna mix them up ๐Ÿ’…

   docsIfSignalQualityEntry OBJECT-TYPE
        SYNTAX      DocsIfSignalQualityEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "At the CM, this object describes the PHY characteristics of
             a downstream channel.  At the CMTS, it describes the PHY
             signal quality of an upstream channel.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableDownstream(128) for Cable Modems.
             For DOCSIS 1.1 Cable Modem Termination Systems, an entry
             exists for each ifEntry with an ifType of
             docsCableUpstream (129).
             For DOCSIS 2.0 Cable Modem Termination Systems, an entry
             exists for each ifEntry with an ifType of
             docsCableUpstreamChannel (205)."
        INDEX { ifIndex }
        ::= { docsIfSignalQualityTable 1 }

Here's the signal quality SEQUENCE, which lists every column ๐Ÿซถ

   DocsIfSignalQualityEntry ::= SEQUENCE {
            docsIfSigQIncludesContention  TruthValue,
            docsIfSigQUnerroreds          Counter32,
            docsIfSigQCorrecteds          Counter32,
            docsIfSigQUncorrectables      Counter32,
            docsIfSigQSignalNoise         TenthdB,
            docsIfSigQMicroreflections    Integer32,
            docsIfSigQEqualizationData    DocsEqualizerData,
            docsIfSigQExtUnerroreds       Counter64,
            docsIfSigQExtCorrecteds       Counter64,
            docsIfSigQExtUncorrectables   Counter64
        }

And we're cutting off right at the first column definition, so let's go ๐ŸŒธ

   docsIfSigQIncludesContention OBJECT-TYPE

okay so this next bit is all about the signal quality counters and the cable modem MAC table, and bestie, the vibes are immaculate ๐Ÿ’…โœจ

        SYNTAX      TruthValue
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "true(1) if this CMTS includes contention intervals in
             the counters in this table.  Always false(2) for CMs."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4.1"
        ::= { docsIfSignalQualityEntry 1 }

okay so this one is a yes-or-no flag ๐Ÿ™ˆ true(1) means the CMTS counts contention intervals in the counters, and it's always false(2) for CMs. no cap, very simple, very iconic ๐Ÿ’–

   docsIfSigQUnerroreds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel without error.
             This includes all codewords, whether or not they
             were part of frames destined for this device.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, and 6.3.6."
        ::= { docsIfSignalQualityEntry 2 }

   docsIfSigQCorrecteds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel with correctable
             errors.  This includes all codewords, whether or not
             they were part of frames destined for this device.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, and 6.3.6."

        ::= { docsIfSignalQualityEntry 3 }

   docsIfSigQUncorrectables OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel with uncorrectable
             errors.  This includes all codewords, whether or not
             they were part of frames destined for this device.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, and 6.3.6."
        ::= { docsIfSignalQualityEntry 4 }

so these three are the codeword counters, and they're giving received, without error, correctable, uncorrectable ๐Ÿ“ก they count every codeword on the channel, not only the ones meant for this device. the counters can reset when the system reinitializes, and they can also discontinue at other times, which is tracked by ifCounterDiscontinuityTime for the matching ifIndex ๐Ÿซถ

   docsIfSigQSignalNoise OBJECT-TYPE
        SYNTAX      TenthdB
        UNITS       "TenthdB"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Signal/Noise ratio as perceived for this channel.
             At the CM, this object  describes the Signal/Noise of the
             downstream channel.  At the CMTS, it describes the
             average Signal/Noise of the upstream channel."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 4-1 and 4-2"
        ::= { docsIfSignalQualityEntry 5 }

   docsIfSigQMicroreflections OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        UNITS       "-dBc"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Microreflections, including in-channel response
             as perceived on this interface, measured in dBc below
             the signal level.
             This object is not assumed to return an absolutely
             accurate value, but it gives a rough indication
             of microreflections received on this interface.
             It is up to the implementer to provide information
             as accurately as possible."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 4-1 and 4-2"
        ::= { docsIfSignalQualityEntry 6 }

   docsIfSigQEqualizationData OBJECT-TYPE
           SYNTAX      DocsEqualizerData
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "At the CM, this object returns the equalization data for
                the downstream channel.

                At the CMTS, this object is not applicable and is not
                instantiated.  Note that previous CMTS implementations
                may instantiate this object in two ways:
                - An equalization value indicating an equalization
                  average for the upstream channel.  Those values have
                  vendor-dependent interpretations.
                - Return a zero-length OCTET STRING to indicate that
                  the value is unknown or if there is no equalization
                  data available or defined."
           REFERENCE
               "DOCSIS Radio Frequency Interface Specification,
                Figure 6-23."
           ::= { docsIfSignalQualityEntry 7 }

the signal vibes are so dramatic ๐ŸŒˆ the Signal/Noise ratio reads differently depending on who's asking: at the CM it's the downstream channel, but at the CMTS it's the average upstream ๐Ÿฆ‹ the microreflections number is basically a rough vibe check, not a perfectly accurate one, and it's up to the implementer to get it as accurate as they can ๐Ÿ™ˆ and equalization data is a whole mood too. at the CM it's the downstream data, the CMTS doesn't really instantiate it, and older CMTS implementations might do weird vendor-specific stuff or return an empty octet string when nothing is known ๐Ÿ’€

   docsIfSigQExtUnerroreds OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel without error.
             This includes all codewords, whether or not they
             were part of frames destined for this device.
             This is the 64-bit version of docsIfSigQUnerroreds.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio

             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, and 6.3.6."
        ::= { docsIfSignalQualityEntry 8 }

   docsIfSigQExtCorrecteds OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel with correctable
             errors.  This includes all codewords, whether or not
             they were part of frames destined for this device.
             This is the 64-bit version of docsIfSigQCorrecteds.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, and 6.3.6."
        ::= { docsIfSignalQualityEntry 9 }

   docsIfSigQExtUncorrectables OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received on this channel with uncorrectable
             errors.  This includes all codewords, whether or not
             they were part of frames destined for this device.
             This is the 64-bit version of docsIfSigQUncorrectables.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Sections 6.2.4, 6.3.6."
        ::= { docsIfSignalQualityEntry 10 }

and the 64-bit versions are the main character upgrade ๐Ÿ‘‘ same codeword counts as before, just with Counter64 so they don't wrap around as fast ๐Ÿ’… (the descriptions even say so: they're the 64-bit versions of the 32-bit counters, iykyk) โœจ

   --
   -- DOCSIS Version of the device
   --
   docsIfDocsisBaseCapability OBJECT-TYPE
           SYNTAX      DocsisVersion
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "Indication of the DOCSIS capability of the device."
           REFERENCE
               "Data-Over-Cable Service Interface Specifications: Radio
                Frequency Interface Specification SP-RFIv2.0-I10-051209,
                Annex G."
           ::= { docsIfBaseObjects 5 }

   --
   -- CABLE MODEM GROUP
   --

   --
   -- The CM MAC Table
   --

   docsIfCmMacTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmMacEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of each CM MAC interface,
             extending the information available from ifEntry."
        ::= { docsIfCmObjects 1 }

   docsIfCmMacEntry OBJECT-TYPE
        SYNTAX      DocsIfCmMacEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry containing objects describing attributes of
             each MAC entry, extending the information in ifEntry.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableMaclayer(127)."
        INDEX { ifIndex }
        ::= { docsIfCmMacTable 1 }

   DocsIfCmMacEntry ::= SEQUENCE {
            docsIfCmCmtsAddress           MacAddress,
            docsIfCmCapabilities          BITS,
            docsIfCmRangingRespTimeout    TimeTicks,
            docsIfCmRangingTimeout        TimeInterval
         }

   docsIfCmCmtsAddress OBJECT-TYPE
        SYNTAX      MacAddress
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Identifies the CMTS that is believed to control this MAC
             domain.  At the CM, this will be the source address from
             SYNC, MAP, and other MAC-layer messages.  If the CMTS is
             unknown, returns 00-00-00-00-00-00."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.2.2."
        ::= { docsIfCmMacEntry 1 }

   docsIfCmCapabilities OBJECT-TYPE
        SYNTAX      BITS {
            atmCells(0),
            concatenation(1)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Identifies the capabilities of the MAC implementation
             at this interface.  Note that packet transmission is
             always supported.  Therefore, there is no specific bit
             required to explicitly indicate this capability.
             Note that BITS objects are encoded most significant bit
             first.  For example, if bit 1 is set, the value of this
             object is the octet string '40'H."
        ::= { docsIfCmMacEntry 2 }

   docsIfCmRangingRespTimeout OBJECT-TYPE
        SYNTAX      TimeTicks
        MAX-ACCESS  read-write
        STATUS      obsolete
        DESCRIPTION
            "Waiting time for a Ranging Response packet.
             This object has been obsoleted and replaced by
             docsIfCmRangingTimeout to correct the typing to
             TimeInterval."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.1.6."
        DEFVAL { 20 }
        ::= { docsIfCmMacEntry 3 }

docsIfDocsisBaseCapability is where the device flexes its DOCSIS version ๐Ÿ’– and then we enter the CABLE MODEM GROUP era ๐ŸŽ€ the CM MAC table is basically an extra layer of info on top of ifEntry, and every row is for a MAC interface with an ifType of docsCableMaclayer(127) ๐ŸŒธ

the big question is docsIfCmCmtsAddress. it's the CMTS that's believed to control the MAC domain, and at the CM it comes from the source address on SYNC, MAP, and other MAC-layer messages ๐Ÿงš if the CMTS is unknown, it just returns 00-00-00-00-00-00, which is a whole tea spill about nothing ๐Ÿ™ˆ

docsIfCmCapabilities is a BITS object that tells you what the MAC implementation can do. packet transmission is always supported, so there's no bit for it, which is so relatable because some things just are. and BITS get encoded most significant bit first, so bit 1 being set gives you the octet string '40'H ๐Ÿ“

last but not least, docsIfCmRangingRespTimeout is obsolete ๐Ÿ’€ it's been replaced by docsIfCmRangingTimeout because the old one had the wrong typing and got corrected to TimeInterval. the old default was 20, but nobody's really supposed to be using it anymore, so we're giving it a respectful goodbye ๐Ÿซถ๐Ÿฆ‹

Okay so this next bit is where the CM status table comes in, and bestie, it's giving main character energy ๐Ÿ’…โœจ It's all about what a Cable Modem is up to at any given moment. Let's start with the last piece of the MAC entry, the ranging timeout ๐ŸŽ€

   docsIfCmRangingTimeout OBJECT-TYPE
        SYNTAX      TimeInterval
        UNITS       "HundredOfSeconds"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Waiting time for a Ranging Response packet.
             This object MUST NOT persist at reinitialization
             of the managed system."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.1.6, timer T3."
        DEFVAL { 20 }
        ::= { docsIfCmMacEntry 4 }

Ok so this one is the waiting time for a Ranging Response packet ๐Ÿฆ‹ It's read-write, it's measured in hundredths of seconds, and it does NOT survive a reinitialization. Gone, reset, fresh start ๐ŸŒธ


Now we get to the CM status table ๐Ÿงš Heads up, this one only lives on the CM side, not the CMTS. Here's the table, the entry for each MAC layer instance, and the big status object list:

   --
   -- CM status table.
   -- This table is implemented only at the CM.
   --

   docsIfCmStatusTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table maintains a number of status objects
             and counters for Cable Modems."
        ::= { docsIfCmObjects 2 }

   docsIfCmStatusEntry OBJECT-TYPE
        SYNTAX      DocsIfCmStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A set of status objects and counters for a single MAC
             layer instance in Cable Modem.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableMaclayer(127)."
        INDEX { ifIndex }
        ::= { docsIfCmStatusTable 1 }

   DocsIfCmStatusEntry ::= SEQUENCE {
            docsIfCmStatusValue               INTEGER,
            docsIfCmStatusCode                OCTET STRING,
            docsIfCmStatusTxPower             TenthdBmV,
            docsIfCmStatusResets              Counter32,
            docsIfCmStatusLostSyncs           Counter32,
            docsIfCmStatusInvalidMaps         Counter32,
            docsIfCmStatusInvalidUcds         Counter32,
            docsIfCmStatusInvalidRangingResponses   Counter32,
            docsIfCmStatusInvalidRegistrationResponses Counter32,
            docsIfCmStatusT1Timeouts          Counter32,
            docsIfCmStatusT2Timeouts          Counter32,
            docsIfCmStatusT3Timeouts          Counter32,
            docsIfCmStatusT4Timeouts          Counter32,
            docsIfCmStatusRangingAborteds     Counter32,
            docsIfCmStatusDocsisOperMode      DocsisQosVersion,
            docsIfCmStatusModulationType      DocsisUpstreamType,
            docsIfCmStatusEqualizationData    DocsEqualizerData,
            docsIfCmStatusUCCs                Counter32,
            docsIfCmStatusUCCFails            Counter32
        }

So the table is the status hub ๐Ÿ’œ It's a read-only-ish vibe for the CM, and each row is one MAC layer instance, keyed by ifIndex. Every row is a tiny dashboard of status objects and counters ๐Ÿ“Š


Next up is the big one, the connectivity state ๐Ÿ”ฅ It's a number from 1 to 13, and the states 1 through 12 come straight from the RF spec. State 13 is the drama queen: it's the one where the CMTS has sent a Registration Aborted message, and the CMTS reports that same state as accessDenied(7). Iconic ๐Ÿ’€

   docsIfCmStatusValue OBJECT-TYPE
        SYNTAX      INTEGER {
            other(1),
            notReady(2),
            notSynchronized(3),
            phySynchronized(4),
            usParametersAcquired(5),
            rangingComplete(6),
            ipComplete(7),
            todEstablished(8),
            securityEstablished(9),
            paramTransferComplete(10),
            registrationComplete(11),
            operational(12),
            accessDenied(13)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current Cable Modem connectivity state, as specified
             in the RF Interface Specification.  Interpretations for
             state values 1-12 are clearly outlined in the SP-RFI
             reference given below.
             The state value accessDenied(13) indicates the CMTS has
             sent a Registration Aborted message to the CM.  The same
             state is reported as accessDenied(7) by the CMTS object
             docsIfCmtsCmStatusValue."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 11.2.
             Data-Over-Cable Service Interface Specifications:

             Operations Support System Interface Specification
             SP-OSSIv2.0-I09-050812, Section 6.3.4.2."
        ::= { docsIfCmStatusEntry 1 }

Now the status code ๐ŸŽ€ It's an OCTET STRING that's either empty or 5 or 6 characters long. Picture it like T101.0: one letter for the error group, a two- or three-digit condition number, then a decimal. An empty string just means no status code has been registered yet ๐Ÿ™ˆ

   docsIfCmStatusCode OBJECT-TYPE
        SYNTAX      OCTET STRING (SIZE( 0 | 5 | 6 ))
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Status code for a Cable Modem as defined in the
             OSSI Specification.  The status code consists
             of a single character indicating error groups, followed
             by a two- or three-digit number indicating the status
             condition, followed by a decimal.
             An example of a returned value could be 'T101.0'.
             The zero-length OCTET STRING indicates no status code yet
             registered."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications:
             Operations Support System Interface Specification
             SP-OSSIv2.0-I09-050812, Annex D."
        ::= { docsIfCmStatusEntry 2 }

Next, the transmit power for the attached upstream channel, measured in tenths of dBmV โšก Read-only, operational value, and it lives in Section 6.2.18 of the RF spec ๐ŸŒˆ

   docsIfCmStatusTxPower OBJECT-TYPE
        SYNTAX      TenthdBmV
        UNITS       "TenthdBmV"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The operational transmit power for the attached upstream
             channel."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.18."
        ::= { docsIfCmStatusEntry 3 }

Now we're in the counter era ๐Ÿ“ˆ Each of these is a Counter32 that ticks up, and every single one comes with the same discontinuity warning. Counters can jump at a reinitialization of the managed system, and at other times too, as shown by ifCounterDiscontinuityTime for the matching ifIndex. Stay alert, bestie ๐Ÿซถ

First up, resets: how many times the CM reset or initialized this interface ๐Ÿ”„

   docsIfCmStatusResets OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "resets"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM reset or initialized this
             interface.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmStatusEntry 4 }

Lost syncs counts how many times the CM lost synchronization with the downstream channel. Section 8.3.2 is where that lives ๐Ÿฆ‹

   docsIfCmStatusLostSyncs OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM lost synchronization with
             the downstream channel.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.2."
        ::= { docsIfCmStatusEntry 5 }

Invalid maps counts the MAP messages the CM received that were invalid ๐Ÿ—บ๏ธ

   docsIfCmStatusInvalidMaps OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "maps"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM received invalid MAP messages.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.4."
        ::= { docsIfCmStatusEntry 6 }

Invalid UCDs is the same vibe, but for UCD messages ๐Ÿ’…

   docsIfCmStatusInvalidUcds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM received invalid UCD messages.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.3."
        ::= { docsIfCmStatusEntry 7 }

Invalid ranging responses counts the ranging response messages the CM received that were invalid ๐ŸŽฏ

   docsIfCmStatusInvalidRangingResponses OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM received invalid ranging response
             messages.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.6."
        ::= { docsIfCmStatusEntry 8 }

Invalid registration responses is the same energy, just for registration response messages ๐Ÿซ 

   docsIfCmStatusInvalidRegistrationResponses OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the CM received invalid registration
             response messages.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.8."
        ::= { docsIfCmStatusEntry 9 }

Now the timeout counters, T1 through T3 ๐Ÿ’– Each one counts how many times that particular counter expired in the CM, and they all point at Figure 9-2 of the RF spec. T3 is the one we met earlier, the ranging timer, so it's kind of the ~main~ character of this group ๐Ÿ‘‘

T1 first:

   docsIfCmStatusT1Timeouts OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "timeouts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times counter T1 expired in the CM.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 9-2."
        ::= { docsIfCmStatusEntry 10 }

Then T2:

   docsIfCmStatusT2Timeouts OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "timeouts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times counter T2 expired in the CM.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 9-2."
        ::= { docsIfCmStatusEntry 11 }

And T3, the ranging timer's own counter โฑ๏ธ

   docsIfCmStatusT3Timeouts OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "timeouts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times counter T3 expired in the CM.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 9-2."
        ::= { docsIfCmStatusEntry 12 }

Okay bestie, the counters keep coming ๐Ÿ“Š and they're giving main character energy ๐Ÿ’…

   docsIfCmStatusT4Timeouts OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "timeouts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times counter T4 expired in the CM.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 9-2."
        ::= { docsIfCmStatusEntry 13 }

   docsIfCmStatusRangingAborteds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Number of times the ranging process was aborted
             by the CMTS.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.3.3."
        ::= { docsIfCmStatusEntry 14 }

   docsIfCmStatusDocsisOperMode OBJECT-TYPE
        SYNTAX      DocsisQosVersion
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
             "Indication of whether the device has registered using 1.0
              Class of Service or 1.1 Quality of Service.
              An unregistered CM SHOULD indicate 'docsis11' for a
              docsIfDocsisBaseCapability value of DOCSIS 1.1/2.0.  An
              unregistered CM SHOULD indicate 'docsis10'  for a
              docsIfDocsisBaseCapability value of DOCSIS 1.0."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex G."

        ::= { docsIfCmStatusEntry 15 }

   docsIfCmStatusModulationType OBJECT-TYPE
         SYNTAX      DocsisUpstreamType
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
             "Indicates modulation type status currently used by the
              CM.  Since this object specifically identifies PHY mode,
              the shared upstream channel type is not permitted."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.1."

         ::= { docsIfCmStatusEntry 16 }

   docsIfCmStatusEqualizationData OBJECT-TYPE
        SYNTAX      DocsEqualizerData
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Pre-equalization data for this CM after convolution with
             data indicated in the RNG-RSP.  This data is valid when
             docsIfUpChannelPreEqEnable is set to true."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 8-23."
        ::= { docsIfCmStatusEntry 17 }

   docsIfCmStatusUCCs OBJECT-TYPE
        SYNTAX          Counter32
        UNITS           "attempts"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "The number of successful Upstream Channel Change
             transactions.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmStatusEntry 18 }

   docsIfCmStatusUCCFails OBJECT-TYPE
        SYNTAX          Counter32
        UNITS           "attempts"
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
            "The number of failed Upstream Channel Change
             transactions.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmStatusEntry 19 }

   --
   -- The Cable Modem Service Table
   --

   docsIfCmServiceTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmServiceEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of each upstream service queue
             on a CM."
        ::= { docsIfCmObjects 3 }

   docsIfCmServiceEntry OBJECT-TYPE
        SYNTAX      DocsIfCmServiceEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of an upstream bandwidth service
             queue.
             An entry in this table exists for each Service ID.
             The primary index is an ifIndex with an ifType of
             docsCableMaclayer(127)."
        INDEX { ifIndex, docsIfCmServiceId }
        ::= { docsIfCmServiceTable 1 }

   DocsIfCmServiceEntry ::= SEQUENCE {
            docsIfCmServiceId               Integer32,
            docsIfCmServiceQosProfile       Integer32,
            docsIfCmServiceTxSlotsImmed     Counter32,
            docsIfCmServiceTxSlotsDed       Counter32,
            docsIfCmServiceTxRetries        Counter32,
            docsIfCmServiceTxExceededs      Counter32,
            docsIfCmServiceRqRetries        Counter32,
            docsIfCmServiceRqExceededs      Counter32,
            docsIfCmServiceExtTxSlotsImmed  Counter64,
            docsIfCmServiceExtTxSlotsDed    Counter64

         }

   docsIfCmServiceId OBJECT-TYPE
        SYNTAX      Integer32 (1..16383)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Identifies a service queue for upstream bandwidth.  The
             attributes of this service queue are shared between the
             CM and the CMTS.  The CMTS allocates upstream bandwidth
             to this service queue based on requests from the CM and
             on the class of service associated with this queue."
        ::= { docsIfCmServiceEntry 1 }

   docsIfCmServiceQosProfile OBJECT-TYPE
        SYNTAX      Integer32 (0..16383)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The index in docsIfQosProfileTable describing the quality
             of service attributes associated with this particular
             service.  If no associated entry in docsIfQosProfileTable
             exists, this object returns a value of zero."
        ::= { docsIfCmServiceEntry 2 }

   docsIfCmServiceTxSlotsImmed OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of upstream mini-slots that have been used to
             transmit data PDUs in immediate (contention) mode.  This
             includes only those PDUs that are presumed to have
             arrived at the head-end (i.e., those that were explicitly
             acknowledged).  It does not include retransmission attempts
             or mini-slots used by requests.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 3 }

   docsIfCmServiceTxSlotsDed OBJECT-TYPE

        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of upstream mini-slots that have been used to
             transmit data PDUs in dedicated mode (i.e., as a result
             of a unicast Data Grant).
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 4 }

   docsIfCmServiceTxRetries OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of attempts to transmit data PDUs containing
             requests for acknowledgment that did not result in
             acknowledgment.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 5 }

   docsIfCmServiceTxExceededs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of data PDU transmission failures due to
             excessive retries without acknowledgment.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 6 }

   docsIfCmServiceRqRetries OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of attempts to transmit bandwidth requests
             that did not result in acknowledgment.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 7 }

Ngl the SHOULD lines in docsIfCmStatusDocsisOperMode are the ones to watch ๐Ÿ‘€ unregistered CMs are supposed to show 'docsis11' or 'docsis10' depending on their base capability ๐Ÿ’œ

Next up is the rest of the service table, so stay tuned bestie ๐ŸŽ€โœจ

Okay so, this part is all about the CMTS (the head-end side of the cable network) and its counters, status, and timing knobs. Let's get into it ๐ŸŽ€

   docsIfCmServiceRqExceededs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of requests for bandwidth that failed due to
             excessive retries without acknowledgment.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 8 }

   docsIfCmServiceExtTxSlotsImmed OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of upstream mini-slots that have been used to
             transmit data PDUs in immediate (contention) mode.  This
             includes only those PDUs that are presumed to have
             arrived at the head-end (i.e., those that were explicitly
             acknowledged).  It does not include retransmission attempts
             or mini-slots used by requests.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 9 }

   docsIfCmServiceExtTxSlotsDed OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of upstream mini-slots that have been used to
             transmit data PDUs in dedicated mode (i.e., as a result
             of a unicast Data Grant).
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.4."
        ::= { docsIfCmServiceEntry 10 }

   --
   -- CMTS GROUP
   --

   --
   -- The CMTS MAC Table
   --

   docsIfCmtsMacTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsMacEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of each CMTS MAC interface,
             extending the information available from ifEntry.
             Mandatory for all CMTS devices."
        ::= { docsIfCmtsObjects 1 }

   docsIfCmtsMacEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsMacEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An entry containing objects describing attributes of each
             MAC entry, extending the information in ifEntry.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableMaclayer(127)."
        INDEX { ifIndex }
        ::= { docsIfCmtsMacTable 1 }

   DocsIfCmtsMacEntry ::= SEQUENCE {
            docsIfCmtsCapabilities            BITS,
            docsIfCmtsSyncInterval            Integer32,
            docsIfCmtsUcdInterval             Integer32,
            docsIfCmtsMaxServiceIds           Integer32,
            docsIfCmtsInsertionInterval       TimeTicks,   -- Obsolete
            docsIfCmtsInvitedRangingAttempts  Integer32,
            docsIfCmtsInsertInterval          TimeInterval,
            docsIfCmtsMacStorageType          StorageType
        }

   docsIfCmtsCapabilities OBJECT-TYPE
        SYNTAX      BITS {
            atmCells(0),
            concatenation(1)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Identifies the capabilities of the CMTS MAC
             implementation at this interface.  Note that packet
             transmission is always supported.  Therefore, there
             is no specific bit required to explicitly indicate
             this capability.
             Note that BITS objects are encoded most significant bit
             first.  For example, if bit 1 is set, the value of this
             object is the octet string '40'H."
        ::= { docsIfCmtsMacEntry 1 }

   docsIfCmtsSyncInterval OBJECT-TYPE

        SYNTAX      Integer32 (1..200)
        UNITS       "Milliseconds"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The interval between CMTS transmission of successive SYNC
             messages at this interface."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.3."
        ::= { docsIfCmtsMacEntry 2 }

   docsIfCmtsUcdInterval OBJECT-TYPE
        SYNTAX      Integer32 (1..2000)
        UNITS       "Milliseconds"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The interval between CMTS transmission of successive
             Upstream Channel Descriptor messages for each upstream
             channel at this interface."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.3"
        ::= { docsIfCmtsMacEntry 3 }

   docsIfCmtsMaxServiceIds OBJECT-TYPE
        SYNTAX     Integer32 (1..16383)
        UNITS      "SIDs"
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The maximum number of service IDs that may be
             simultaneously active."
        ::= { docsIfCmtsMacEntry 4 }

   docsIfCmtsInsertionInterval OBJECT-TYPE
        SYNTAX      TimeTicks
        MAX-ACCESS  read-write
        STATUS      obsolete
        DESCRIPTION
            "The amount of time to elapse between each broadcast
             initial maintenance grant.  Broadcast initial maintenance
             grants are used to allow new cable modems to join the
             network.  Zero indicates that a vendor-specific algorithm
             is used instead of a fixed time.  The maximum amount of
             time permitted by the specification is 2 seconds.
             This object has been obsoleted and replaced by
             docsIfCmtsInsertInterval to fix a SYNTAX typing problem."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex B."
        ::= { docsIfCmtsMacEntry 5 }

   docsIfCmtsInvitedRangingAttempts OBJECT-TYPE
        SYNTAX      Integer32 (0..1024)
        UNITS      "attempts"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The maximum number of attempts to make on invitations
             for ranging requests.  A value of zero means the system
             SHOULD attempt to range forever."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 9.3.3 and Annex B."
        ::= { docsIfCmtsMacEntry 6 }

   docsIfCmtsInsertInterval OBJECT-TYPE
        SYNTAX      TimeInterval
        UNITS       "HundredOfSeconds"
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "The amount of time to elapse between each broadcast
             initial maintenance grant.  Broadcast initial maintenance
             grants are used to allow new cable modems to join the
             network.  Zero indicates that a vendor-specific algorithm
             is used instead of a fixed time.  The maximum amount of
             time permitted by the specification is 2 seconds."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex B."
        ::= { docsIfCmtsMacEntry 7 }

   docsIfCmtsMacStorageType OBJECT-TYPE
        SYNTAX       StorageType
        MAX-ACCESS   read-only
        STATUS       current
        DESCRIPTION
            "The storage type for this conceptual row.

             Entries with this object set to permanent(4)
             do not require write operations for read-write
             objects."
        ::= { docsIfCmtsMacEntry 8 }

   --
   --
   -- CMTS status table.
   --

   docsIfCmtsStatusTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "For the MAC layer, this group maintains a number of
             status objects and counters."
        ::= { docsIfCmtsObjects 2 }

   docsIfCmtsStatusEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
           "Status entry for a single MAC layer.
             An entry in this table exists for each ifEntry with an
             ifType of docsCableMaclayer(127)."
        INDEX { ifIndex }
        ::= { docsIfCmtsStatusTable 1 }

   DocsIfCmtsStatusEntry ::= SEQUENCE {
            docsIfCmtsStatusInvalidRangeReqs        Counter32,
            docsIfCmtsStatusRangingAborteds         Counter32,
            docsIfCmtsStatusInvalidRegReqs          Counter32,
            docsIfCmtsStatusFailedRegReqs           Counter32,
            docsIfCmtsStatusInvalidDataReqs         Counter32,
            docsIfCmtsStatusT5Timeouts              Counter32
        }

   docsIfCmtsStatusInvalidRangeReqs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts invalid RNG-REQ messages received on
             this interface.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.5."
        ::= { docsIfCmtsStatusEntry 1 }

   docsIfCmtsStatusRangingAborteds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts ranging attempts that were explicitly
             aborted by the CMTS.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.6."
        ::= { docsIfCmtsStatusEntry 2 }

Okay so the CMTS keeps a little scorecard of how registration is going, and this bit is where the failures get tallied ๐Ÿ“Šโœจ Invalid registration requests, failed attempts overall, invalid data requests, and T5 timeouts all live here ๐Ÿ™ˆ

   docsIfCmtsStatusInvalidRegReqs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts invalid REG-REQ messages received on
             this interface; that is, syntax, out of range parameters,
             or erroneous requests.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.7."
        ::= { docsIfCmtsStatusEntry 3 }

   docsIfCmtsStatusFailedRegReqs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "attempts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts failed registration attempts.  Included
             are docsIfCmtsStatusInvalidRegReqs, authentication, and
             class of service failures.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.3.7."
        ::= { docsIfCmtsStatusEntry 4 }

   docsIfCmtsStatusInvalidDataReqs OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "messages"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts invalid data request messages
             received on this interface.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsStatusEntry 5 }

   docsIfCmtsStatusT5Timeouts OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "timeouts"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "This object counts the number of times counter T5
             expired on this interface.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 9-2."
        ::= { docsIfCmtsStatusEntry 6 }

Next up is the CM status table, the per-modem report card the CMTS keeps for every cable modem plugged into it ๐Ÿฆ‹ The comment block says it straight: this table only exists at the CMTS ๐Ÿ’–

   --
   -- CM status table (within CMTS).
   -- This table is implemented only at the CMTS.
   -- It contains per-CM status information available in the CMTS.
   --

   docsIfCmtsCmStatusTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsCmStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A set of objects in the CMTS, maintained for each
             cable modem connected to this CMTS."
        ::= { docsIfCmtsObjects 3 }

   docsIfCmtsCmStatusEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsCmStatusEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Status information for a single cable modem.
             An entry in this table exists for each cable modem
             that is connected to the CMTS implementing this table."
        INDEX { docsIfCmtsCmStatusIndex }
        ::= { docsIfCmtsCmStatusTable 1 }

   DocsIfCmtsCmStatusEntry ::= SEQUENCE {
            docsIfCmtsCmStatusIndex               Integer32,
            docsIfCmtsCmStatusMacAddress          MacAddress,
            docsIfCmtsCmStatusIpAddress        IpAddress, -- deprecated
            docsIfCmtsCmStatusDownChannelIfIndex  InterfaceIndexOrZero,
            docsIfCmtsCmStatusUpChannelIfIndex    InterfaceIndexOrZero,
            docsIfCmtsCmStatusRxPower             TenthdBmV,
            docsIfCmtsCmStatusTimingOffset        Unsigned32,
            docsIfCmtsCmStatusEqualizationData    DocsEqualizerData,
            docsIfCmtsCmStatusValue               INTEGER,
            docsIfCmtsCmStatusUnerroreds          Counter32,
            docsIfCmtsCmStatusCorrecteds          Counter32,
            docsIfCmtsCmStatusUncorrectables      Counter32,
            docsIfCmtsCmStatusSignalNoise         TenthdB,
            docsIfCmtsCmStatusMicroreflections    Integer32,
            docsIfCmtsCmStatusExtUnerroreds       Counter64,
            docsIfCmtsCmStatusExtCorrecteds       Counter64,
            docsIfCmtsCmStatusExtUncorrectables   Counter64,
            docsIfCmtsCmStatusDocsisRegMode       DocsisQosVersion,
            docsIfCmtsCmStatusModulationType      DocsisUpstreamType,
            docsIfCmtsCmStatusInetAddressType     InetAddressType,
            docsIfCmtsCmStatusInetAddress         InetAddress,
            docsIfCmtsCmStatusValueLastUpdate     TimeStamp,
            docsIfCmtsCmStatusHighResolutionTimingOffset Unsigned32
        }

   docsIfCmtsCmStatusIndex OBJECT-TYPE
        SYNTAX      Integer32 (1..2147483647)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Index value to uniquely identify an entry in this table.
             For an individual cable modem, this index value SHOULD
             NOT change during CMTS uptime."
        ::= { docsIfCmtsCmStatusEntry 1 }

   docsIfCmtsCmStatusMacAddress OBJECT-TYPE
        SYNTAX      MacAddress
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "MAC address of the cable modem.  If the cable modem has
             multiple MAC addresses, this is the MAC address associated
             with the Cable interface."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 8.2.2."
        ::= { docsIfCmtsCmStatusEntry 2 }

   docsIfCmtsCmStatusIpAddress OBJECT-TYPE
        SYNTAX      IpAddress
        MAX-ACCESS  read-only
        STATUS      deprecated
        DESCRIPTION
            "IP address of this cable modem.  If the cable modem has no
             IP address assigned, or the IP address is unknown, this
             object returns a value of 0.0.0.0.  If the cable modem has
             multiple IP addresses, this object returns the IP address
             associated with the Cable interface.
             This object has been deprecated and replaced by
             docsIfCmtsCmStatusInetAddressType and
             docsIfCmtsCmStatusInetAddress, to enable IPv6 addressing
             in the future."
        ::= { docsIfCmtsCmStatusEntry 3 }

   docsIfCmtsCmStatusDownChannelIfIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "IfIndex of the downstream channel that this CM is
             connected to.  If the downstream channel is unknown, this
             object returns a value of zero."
        ::= { docsIfCmtsCmStatusEntry 4 }

   docsIfCmtsCmStatusUpChannelIfIndex OBJECT-TYPE
        SYNTAX      InterfaceIndexOrZero
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "For DOCSIS 2.0, indicates the ifIndex of the logical
            upstream channel (ifType 205) this CM is connected to.
            For DOCSIS 1.x, indicates the ifIndex of the upstream
             channel (ifType 129) this CM is connected to.
             If the upstream channel is unknown, this object
             returns a value of zero."
        ::= { docsIfCmtsCmStatusEntry 5 }

   docsIfCmtsCmStatusRxPower OBJECT-TYPE
        SYNTAX      TenthdBmV
        UNITS       "ThenthdBmV"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The receive power as perceived for upstream data from
             this cable modem.
             If the receive power is unknown, this object returns
             a value of zero."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.18."
        ::= { docsIfCmtsCmStatusEntry 6 }

   docsIfCmtsCmStatusTimingOffset OBJECT-TYPE
        SYNTAX      Unsigned32 (0..4294967295)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "A measure of the current round trip time for this CM.
             Used for timing of CM upstream transmissions to ensure
             synchronized arrivals at the CMTS.  Units are in terms
             of (6.25 microseconds/64).  Returns zero if the value
             is unknown.
             For channels requiring finer resolution, please refer to
             object docsIfCmtsCmStatusHighResolutionTimingOffset."
        REFERENCE

            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.17."
        ::= { docsIfCmtsCmStatusEntry 7 }

   docsIfCmtsCmStatusEqualizationData OBJECT-TYPE
        SYNTAX      DocsEqualizerData
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Equalization data for this CM, as measured by the CMTS.
             Returns the zero-length OCTET STRING if the value is
             unknown or if there is no equalization data available
             or defined."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Figure 8-23."
        ::= { docsIfCmtsCmStatusEntry 8 }

   docsIfCmtsCmStatusValue OBJECT-TYPE
        SYNTAX      INTEGER {
            other(1),
            ranging(2),
            rangingAborted(3),
            rangingComplete(4),
            ipComplete(5),
            registrationComplete(6),
            accessDenied(7),
            operational(8),
            -- value 8 should not be used
            registeredBPIInitializing(9)
        }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current cable modem connectivity state, as specified
             in the RF Interface Specification.  Returned status
             information is the CM status, as assumed by the CMTS,
             and indicates the following events:
             other(1)
                Any state other than below.
             ranging(2)
                The CMTS has received an Initial Ranging Request
                message from the CM, and the ranging process is not
                yet complete.
             rangingAborted(3)
                The CMTS has sent a Ranging Abort message to the CM.

okay bestie, we're picking up right where the registration states left off ๐Ÿซถ the big note is that value 8 is reserved and should never be redefined, because some real devices already use it ๐Ÿ’…

             rangingComplete(4)
                The CMTS has sent a Ranging Complete message to the CM.
             ipComplete(5)
                The CMTS has received a DHCP reply message and
                forwarded it to the CM.
             registrationComplete(6)
                The CMTS has sent a Registration Response message to
                the CM.
             accessDenied(7)
                The CMTS has sent a Registration Aborted message
                to the CM.
             operational(8)
                Value 8 is considered reserved and should not be defined
                in future revisions of this MIB module to avoid conflict
                with documented implementations that support value 8 to
                indicate operational state after completing the BPI
                initialization process.
             registeredBPIInitializing(9)
                Baseline Privacy (BPI) is enabled and the CMTS is in the
                process of completing BPI initialization.  This state
                MAY last for a significant length of time if failures
                occur during the initialization process.  After
                completion of BPI initialization, the CMTS will report
                registrationComplete(6).
             The CMTS only needs to report states it is able to
             detect."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 11.2."
        ::= { docsIfCmtsCmStatusEntry 9 }

   docsIfCmtsCmStatusUnerroreds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received without error from this cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.4."
        ::= { docsIfCmtsCmStatusEntry 10 }

   docsIfCmtsCmStatusCorrecteds OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received with correctable errors from this
             cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.4."
        ::= { docsIfCmtsCmStatusEntry 11 }

   docsIfCmtsCmStatusUncorrectables OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received with uncorrectable errors from this
             cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.4."
        ::= { docsIfCmtsCmStatusEntry 12 }

   docsIfCmtsCmStatusSignalNoise OBJECT-TYPE
        SYNTAX      TenthdB
        UNITS       "TenthdB"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Signal/Noise ratio as perceived for upstream data from
             this cable modem.
             If the Signal/Noise is unknown, this object returns
             a value of zero."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio

             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 4-1 and 4-2."
        ::= { docsIfCmtsCmStatusEntry 13 }

   docsIfCmtsCmStatusMicroreflections OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        UNITS       "-dBc"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Total microreflections, including in-channel response
             as perceived on this interface, measured in dBc below
             the signal level.
             This object is not assumed to return an absolutely
             accurate value, but it gives a rough indication
             of microreflections received on this interface.
             It is up to the implementer to provide information
             as accurately as possible.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 4-1 and 4-2"
        ::= { docsIfCmtsCmStatusEntry 14 }

   docsIfCmtsCmStatusExtUnerroreds OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received without error from this cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.5."
        ::= { docsIfCmtsCmStatusEntry 15 }

   docsIfCmtsCmStatusExtCorrecteds OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received with correctable errors from this
             cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.5."
        ::= { docsIfCmtsCmStatusEntry 16 }

   docsIfCmtsCmStatusExtUncorrectables OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "codewords"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Codewords received with uncorrectable errors from this
             cable modem.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.5."
        ::= { docsIfCmtsCmStatusEntry 17 }

ooh the next few are all about registration mode, modulation and addressing ๐Ÿฆ‹ the vibes are immaculate

   docsIfCmtsCmStatusDocsisRegMode OBJECT-TYPE
           SYNTAX      DocsisQosVersion
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "Indication of whether the CM has registered using 1.0
                Class of Service or 1.1 Quality of Service."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Annex G."
        ::= { docsIfCmtsCmStatusEntry 18 }

   docsIfCmtsCmStatusModulationType OBJECT-TYPE
         SYNTAX      DocsisUpstreamType
         MAX-ACCESS  read-only
         STATUS      current
         DESCRIPTION
             "Indicates modulation type currently used by the CM.  Since
              this object specifically identifies PHY mode, the shared
              type is not permitted.  If the upstream channel is
              unknown, this object returns a value of zero."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-19."
         ::= { docsIfCmtsCmStatusEntry 19 }

   docsIfCmtsCmStatusInetAddressType OBJECT-TYPE
           SYNTAX      InetAddressType
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "The type of internet address of
                docsIfCmtsCmStatusInetAddress.  If the cable modem
                internet address is unassigned or unknown, then the
                value of this object is unknown(0)."
           ::= { docsIfCmtsCmStatusEntry 20 }

   docsIfCmtsCmStatusInetAddress OBJECT-TYPE
           SYNTAX      InetAddress
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "Internet address of this cable modem.  If the Cable
                Modem has no Internet address assigned, or the Internet
                address is unknown, the value of this object is the
                zero-length OCTET STRING.  If the cable modem has
                multiple Internet addresses, this object returns the
                Internet address associated with the Cable
                (i.e., RF MAC) interface."
           ::= { docsIfCmtsCmStatusEntry 21 }

   docsIfCmtsCmStatusValueLastUpdate OBJECT-TYPE
           SYNTAX      TimeStamp
           MAX-ACCESS  read-only
           STATUS      current
           DESCRIPTION
               "The value of sysUpTime when docsIfCmtsCmStatusValue
                was last updated."
           ::= { docsIfCmtsCmStatusEntry 22 }

   docsIfCmtsCmStatusHighResolutionTimingOffset OBJECT-TYPE

        SYNTAX      Unsigned32 (0..4294967295)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "A measure of the current round trip time for this CM.
             Used for timing of CM upstream transmissions to ensure
             synchronized arrivals at the CMTS.  Units are in terms
             of (6.25 microseconds/(64*256)).  Returns zero if the value
             is unknown.
             This is the high resolution version of object
             docsIfCmtsCmStatusTimingOffset, for channels requiring
             finer resolution."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Section 6.2.17."
        ::= { docsIfCmtsCmStatusEntry 23 }

next up is the CMTS Service Table ๐ŸŒธ it's the start of the upstream service queue stuff

   --
   -- The CMTS Service Table.
   --

   docsIfCmtsServiceTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsServiceEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of upstream service queues
             in a Cable Modem Termination System."
        ::= { docsIfCmtsObjects 4 }

Okay bestie, we're deep in the MIB definitions now ๐Ÿงš Here's the upstream bandwidth service queue table, the docsIfCmtsServiceEntry row and its columns, all exactly as written. ๐Ÿ’–

   docsIfCmtsServiceEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsServiceEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes the attributes of a single upstream bandwidth
             service queue.
             Entries in this table exist for each ifEntry with an
             ifType of docsCableMaclayer(127), and for each service
             queue (Service ID) within this MAC layer.
             Entries in this table are created with the creation of
             individual Service IDs by the MAC layer and removed
             when a Service ID is removed."
        INDEX { ifIndex, docsIfCmtsServiceId }
        ::= { docsIfCmtsServiceTable 1 }

   DocsIfCmtsServiceEntry ::= SEQUENCE {

            docsIfCmtsServiceId               Integer32,
            docsIfCmtsServiceCmStatusIndex    Integer32,  -- deprecated
            docsIfCmtsServiceAdminStatus      INTEGER,
            docsIfCmtsServiceQosProfile       Integer32,
            docsIfCmtsServiceCreateTime       TimeStamp,
            docsIfCmtsServiceInOctets         Counter32,
            docsIfCmtsServiceInPackets        Counter32,
            docsIfCmtsServiceNewCmStatusIndex Integer32
        }

So each row here is a single service queue, and it's indexed by the ifIndex plus the Service ID. Rows get created when the MAC layer makes a Service ID and get removed when that ID goes away. Iconic lifecycle, honestly ๐Ÿ˜ญโœจ

   docsIfCmtsServiceId OBJECT-TYPE
        SYNTAX      Integer32 (1..16383)
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Identifies a service queue for upstream bandwidth.  The
             attributes of this service queue are shared between the
             Cable Modem and the Cable Modem Termination System.
             The CMTS allocates upstream bandwidth to this service
             queue based on requests from the CM and on the class of
             service associated with this queue."
        ::= { docsIfCmtsServiceEntry 1 }

   docsIfCmtsServiceCmStatusIndex OBJECT-TYPE
        SYNTAX      Integer32 (0..65535)
        MAX-ACCESS  read-only
        STATUS      deprecated
        DESCRIPTION
            "Pointer to an entry in docsIfCmtsCmStatusTable identifying
             the cable modem using this Service Queue.  If multiple
             cable modems are using this Service Queue, the value of
             this object is zero.
             This object has been deprecated and replaced by
             docsIfCmtsServiceNewCmStatusIndex, to fix a mismatch
             of the value range with respect to docsIfCmtsCmStatusIndex
             (1..2147483647)."
        ::= { docsIfCmtsServiceEntry 2 }

   docsIfCmtsServiceAdminStatus OBJECT-TYPE
        SYNTAX      INTEGER {
            enabled(1),
            disabled(2),
            destroyed(3) }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Allows a service class for a particular modem to be
             suppressed, (re-)enabled, or deleted altogether."

        ::= { docsIfCmtsServiceEntry 3 }

   docsIfCmtsServiceQosProfile OBJECT-TYPE
        SYNTAX      Integer32 (0..16383)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The index in docsIfQosProfileTable describing the quality
             of service attributes associated with this particular
             service.  If no associated docsIfQosProfileTable entry
             exists, this object returns a value of zero."
        ::= { docsIfCmtsServiceEntry 4 }

   docsIfCmtsServiceCreateTime OBJECT-TYPE
        SYNTAX      TimeStamp
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The value of sysUpTime when this entry was created."
        ::= { docsIfCmtsServiceEntry 5 }

   docsIfCmtsServiceInOctets OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "Bytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The cumulative number of Packet Data octets received
             on this Service ID.  The count does not include the
             size of the Cable MAC header.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsServiceEntry 6 }

   docsIfCmtsServiceInPackets OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "packets"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The cumulative number of Packet Data packets received
             on this Service ID.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."

        ::= { docsIfCmtsServiceEntry 7 }

   docsIfCmtsServiceNewCmStatusIndex OBJECT-TYPE
        SYNTAX      Integer32 (0..2147483647)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Pointer (via docsIfCmtsCmStatusIndex) to an entry in
             docsIfCmtsCmStatusTable identifying the cable modem
             using this Service Queue.  If multiple cable modems are
             using this Service Queue, the value of this object is
             zero."
        ::= { docsIfCmtsServiceEntry 8 }

Heads up, the docsIfCmtsServiceCmStatusIndex column is deprecated ๐Ÿ™ˆ Its replacement, docsIfCmtsServiceNewCmStatusIndex, exists because the old one's value range didn't match docsIfCmtsCmStatusIndex. Fixing that mismatch is a whole glow-up ๐Ÿ’…

Next up is the modulation profile table. Its entries can be shared by multiple upstream channels, and each channel gets a modulation profile for every docsIfModIntervalUsageCode value.

   --
   -- The following table provides upstream channel modulation profiles.
   -- Entries in this table can be
   -- re-used by one or more upstream channels.  An upstream channel
   -- will have a modulation profile for each value of
   -- docsIfModIntervalUsageCode.
   --

   docsIfCmtsModulationTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsModulationEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes a modulation profile associated with one or more
             upstream channels."
        ::= { docsIfCmtsObjects 5 }

   docsIfCmtsModulationEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsModulationEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Describes a modulation profile for an Interval Usage Code
             for one or more upstream channels.
             Entries in this table are created by the operator.

             Initial default entries MAY be created at system
             initialization time, which could report a value of
             'permanent' or 'readOnly' for docsIfCmtsModStorageType.
             A CMTS MAY reject the creation of additional Interval
             Usage Codes for a modulation profile being defined at
             Initialization time.
             No individual objects have to be specified in order
             to create an entry in this table.

             Note that some objects do not have DEFVAL clauses
             but do have calculated defaults and need not be specified
             during row creation."
         INDEX { docsIfCmtsModIndex, docsIfCmtsModIntervalUsageCode}
        ::= { docsIfCmtsModulationTable 1 }

   DocsIfCmtsModulationEntry ::= SEQUENCE {
            docsIfCmtsModIndex                    Integer32,
            docsIfCmtsModIntervalUsageCode        INTEGER,
            docsIfCmtsModControl                  RowStatus,
            docsIfCmtsModType                     INTEGER,
            docsIfCmtsModPreambleLen              Integer32,
            docsIfCmtsModDifferentialEncoding     TruthValue,
            docsIfCmtsModFECErrorCorrection       Integer32,
            docsIfCmtsModFECCodewordLength        Integer32,
            docsIfCmtsModScramblerSeed            Integer32,
            docsIfCmtsModMaxBurstSize             Integer32,
            docsIfCmtsModGuardTimeSize            Unsigned32,
            docsIfCmtsModLastCodewordShortened    TruthValue,
            docsIfCmtsModScrambler                TruthValue,
            docsIfCmtsModByteInterleaverDepth     Unsigned32,
            docsIfCmtsModByteInterleaverBlockSize Unsigned32,
            docsIfCmtsModPreambleType             INTEGER,
            docsIfCmtsModTcmErrorCorrectionOn     TruthValue,
            docsIfCmtsModScdmaInterleaverStepSize Unsigned32,
            docsIfCmtsModScdmaSpreaderEnable      TruthValue,
            docsIfCmtsModScdmaSubframeCodes       Unsigned32,
            docsIfCmtsModChannelType              DocsisUpstreamType,
            docsIfCmtsModStorageType              StorageType
        }

   docsIfCmtsModIndex OBJECT-TYPE
        SYNTAX       Integer32 (1..2147483647)
        MAX-ACCESS   not-accessible
        STATUS      current
        DESCRIPTION
             "An index into the Channel Modulation table representing
              a group of Interval Usage Codes, all associated with the
              same channel."
        ::= { docsIfCmtsModulationEntry 1 }

   docsIfCmtsModIntervalUsageCode OBJECT-TYPE
        SYNTAX       INTEGER {
            request(1),
            requestData(2),
            initialRanging(3),
            periodicRanging(4),
            shortData(5),
            longData(6),
            advPhyShortData(9),
            advPhyLongData(10),
            ugs(11)
        }
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An index into the Channel Modulation table that, when
             grouped with other Interval Usage Codes, fully
             instantiates all modulation sets for a given upstream
             channel."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-20."
        ::= { docsIfCmtsModulationEntry 2 }

   docsIfCmtsModControl OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Controls and reflects the status of rows in this table.
             There is no restriction on the changing of values in this
             table while their associated rows are active, with the
             exception of:

             1. If a modulation profile is being referenced by one
                or more upstream channels, an attempt to set the value
                of docsIfCmtsModChannelType returns an
                'inconsistentValue' error.

             2. If a modulation profile is being referenced by one
                or more upstream channels, an attempt to set
                docsIfCmtsModControl to destroy(6) or notInService(2)
                returns an 'inconsistentValue' error."
        ::= { docsIfCmtsModulationEntry 3 }

   docsIfCmtsModType OBJECT-TYPE
        SYNTAX      INTEGER {
            other(1),
            qpsk(2),
            qam16(3),
            qam8(4),
            qam32(5),
            qam64(6),
            qam128(7)

        }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The modulation type used on this channel.  Returns
             other(1) if the modulation type is not
             qpsk, qam16, qam8, qam32, qam64, or qam128.
             Type qam128 is used for SCDMA channels only.
             See the reference for the modulation profiles
             implied by different modulation types."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { qpsk }
        ::= { docsIfCmtsModulationEntry 4 }

The vibe check on docsIfCmtsModControl: you can't just change things willy-nilly once a profile is in use. If a channel is referencing it, changing docsIfCmtsModChannelType throws an inconsistentValue error, and so does setting it to destroy(6) or notInService(2) ๐Ÿ’€ Not allowed, babe ๐Ÿ™…โ€โ™€๏ธ

Okay bestie, the modulation profile table is still serving ๐Ÿ’… Every object here has its own job, so I'm keeping the MIB definitions exactly as written. Get ready for the DEFVAL drama and the bit-order plot twist at the end ๐Ÿ”ฅ

   docsIfCmtsModPreambleLen OBJECT-TYPE
        SYNTAX      Integer32 (0..1536)
        UNITS       "bits"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The preamble length for this modulation profile in bits.
             Default value is the minimum needed by the implementation
             at the CMTS for the given modulation profile."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        ::= { docsIfCmtsModulationEntry 5 }

   docsIfCmtsModDifferentialEncoding OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Specifies whether or not differential encoding is used
             on this channel."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { false }
        ::= { docsIfCmtsModulationEntry 6 }

   docsIfCmtsModFECErrorCorrection OBJECT-TYPE
        SYNTAX      Integer32 (0..16)
        UNITS       "Bytes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The number of correctable errored bytes (t) used in
             forward error correction code.  The value of 0 indicates
             that no correction is employed.  The number of check bytes
             appended will be twice this value."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { 0 }
        ::= { docsIfCmtsModulationEntry 7 }

   docsIfCmtsModFECCodewordLength OBJECT-TYPE
        SYNTAX      Integer32 (1..255)
        UNITS       "Bytes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The number of data bytes (k) in the forward error
             correction codeword.
             This object is not used if docsIfCmtsModFECErrorCorrection
             is zero."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { 32 }
        ::= { docsIfCmtsModulationEntry 8 }

   docsIfCmtsModScramblerSeed OBJECT-TYPE
        SYNTAX      Integer32 (0..32767)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The 15-bit seed value for the scrambler polynomial."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-19."
        DEFVAL { 0 }
        ::= { docsIfCmtsModulationEntry 9 }

   docsIfCmtsModMaxBurstSize OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        UNITS       "mini-slots"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The maximum number of mini-slots that can be transmitted
             during this channel's burst time.  Returns zero if the
             burst length is bounded by the allocation MAP rather than
             by this profile.
             Default value is 0, except for shortData, where it is 8."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-19."
        ::= { docsIfCmtsModulationEntry 10 }

   docsIfCmtsModGuardTimeSize OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "Symbol-times"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The number of symbol-times that MUST follow the end of
             this channel's burst.  Default value is the minimum time
             needed by the implementation for this modulation profile."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        ::= { docsIfCmtsModulationEntry 11 }

   docsIfCmtsModLastCodewordShortened OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Indicates whether the last FEC codeword is truncated."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { true }
        ::= { docsIfCmtsModulationEntry 12 }

   docsIfCmtsModScrambler OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Indicates whether the scrambler is employed."

        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { false }
        ::= { docsIfCmtsModulationEntry 13 }

   docsIfCmtsModByteInterleaverDepth OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "ATDMA Byte Interleaver Depth (Ir).  This object returns 1
             for non-ATDMA profiles."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { 1 }
        ::= { docsIfCmtsModulationEntry 14 }

   docsIfCmtsModByteInterleaverBlockSize OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "ATDMA Byte Interleaver Block size (Br).  This object
             returns zero for non-ATDMA profiles "
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { 18 }
        ::= { docsIfCmtsModulationEntry 15 }

   docsIfCmtsModPreambleType OBJECT-TYPE
        SYNTAX       INTEGER {
            unknown(0),
            qpsk0(1),
            qpsk1(2)
        }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Preamble type for DOCSIS 2.0 bursts.  The value
             'unknown(0)' represents a row entry consisting only of
             DOCSIS 1.x bursts"
        REFERENCE

            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { qpsk0 }
        ::= { docsIfCmtsModulationEntry 16 }

   docsIfCmtsModTcmErrorCorrectionOn OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Trellis Code Modulation (TCM) On/Off.  This value returns
             false for non-S-CDMA profiles."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { false }
        ::= { docsIfCmtsModulationEntry 17 }

   docsIfCmtsModScdmaInterleaverStepSize OBJECT-TYPE
        SYNTAX      Unsigned32 (0 | 1..32)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            " S-CDMA Interleaver step size.  This value returns zero
              for non-S-CDMA profiles."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        DEFVAL { 1 }
        ::= { docsIfCmtsModulationEntry 18 }

   docsIfCmtsModScdmaSpreaderEnable OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            " S-CDMA spreader.  This value returns false for non-S-CDMA
              profiles.  Default value for IUC 3 and 4 is OFF; for
              all other IUCs it is ON."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Tables 6-7, and 8-19."
        ::= { docsIfCmtsModulationEntry 19 }

   docsIfCmtsModScdmaSubframeCodes OBJECT-TYPE
        SYNTAX      Unsigned32 (0 | 1..128)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            " S-CDMA sub-frame size.  This value returns zero
              for non-S-CDMA profiles."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 6-7, and 8-19."
        DEFVAL { 1 }
        ::= { docsIfCmtsModulationEntry 20 }

   docsIfCmtsModChannelType OBJECT-TYPE
        SYNTAX      DocsisUpstreamType
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Describes the modulation channel type for this modulation
             entry.
             All the active entries in a modulation profile (that is all
             active entries that share a common docsIfCmtsModIndex)
             MUST have the same value of docsIfCmtsModChannelType."
        REFERENCE
            "Data-Over-Cable Service Interface Specifications: Radio
             Frequency Interface Specification SP-RFIv2.0-I10-051209,
             Table 8-19."
        DEFVAL { tdma }
        ::= { docsIfCmtsModulationEntry 21 }

   docsIfCmtsModStorageType OBJECT-TYPE
        SYNTAX       StorageType
        MAX-ACCESS   read-only
        STATUS       current
        DESCRIPTION
            "The storage type for this conceptual row.
             Entries with this object set to permanent(4)
             do not require write operations for read-write
             objects."
        DEFVAL      { nonVolatile }
    ::= { docsIfCmtsModulationEntry 22 }

   docsIfCmtsQosProfilePermissions OBJECT-TYPE
        SYNTAX      BITS {
            createByManagement(0),
            updateByManagement(1),
            createByModems(2)

        }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "This object specifies permitted methods of creating
             entries in docsIfQosProfileTable.
             createByManagement(0) is set if entries can be created
             using SNMP.  updateByManagement(1) is set if updating
             entries using SNMP is permitted.  createByModems(2)
             is set if entries can be created based on information
             in REG-REQ MAC messages received from cable modems.
             Information in this object is only applicable if
             docsIfQosProfileTable is implemented as read-create.
             Otherwise, this object is implemented as read-only
             and returns createByModems(2).
             Either createByManagement(0) or updateByManagement(1)
             MUST be set when writing to this object.
             Note that BITS objects are encoded most significant bit
             first.  For example, if bit 2 is set, the value of this
             object is the octet string '20'H."
        ::= { docsIfCmtsObjects 6 }

That's the modulation profile crew wrapped up โœจ Next up, the rest of the definitions keep coming ๐Ÿฆ‹

docsIfCmtsMacToCmTable OBJECT-TYPE
     SYNTAX      SEQUENCE OF DocsIfCmtsMacToCmEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "This is a table to provide a quick access index into the
          docsIfCmtsCmStatusTable.  There is exactly one row in this
          table for each row in the docsIfCmtsCmStatusTable.  In
          general, the management station SHOULD use this table only
          to get a pointer into the docsIfCmtsCmStatusTable (which
          corresponds to the CM's RF interface MAC address) and
          SHOULD not iterate (e.g., GetNext through) this table."
     ::= { docsIfCmtsObjects 7 }

docsIfCmtsMacToCmEntry OBJECT-TYPE
     SYNTAX      DocsIfCmtsMacToCmEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "A row in the docsIfCmtsMacToCmTable.
          An entry in this table exists for each cable modem
          that is connected to the CMTS implementing this table."
     INDEX   { docsIfCmtsCmMac }
     ::= {docsIfCmtsMacToCmTable 1 }

DocsIfCmtsMacToCmEntry ::= SEQUENCE {

             docsIfCmtsCmMac     MacAddress,
             docsIfCmtsCmPtr     Integer32
     }

docsIfCmtsCmMac OBJECT-TYPE
     SYNTAX      MacAddress
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "The RF side MAC address for the referenced CM (e.g., the
          interface on the CM that has docsCableMacLayer(127) as
          its ifType)."
     ::= { docsIfCmtsMacToCmEntry 1 }

docsIfCmtsCmPtr OBJECT-TYPE
     SYNTAX      Integer32 (1..2147483647)
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
         "An row index into docsIfCmtsCmStatusTable.  When queried
          with the correct instance value (e.g., a CM's MAC address),
          returns the index in docsIfCmtsCmStatusTable that
          represents that CM."
     ::= { docsIfCmtsMacToCmEntry 2 }

Okay bestie, so this next bit is the lookup table ๐Ÿงš It's basically a fast-track index: every cable modem gets one row, keyed by its RF-side MAC address, and that row just points you to the right spot in the docsIfCmtsCmStatusTable. The spec is pretty clear that the management station should use it just to grab that pointer and shouldn't go iterating through the whole thing ๐Ÿ™ˆ Main character energy is knowing when not to scroll, periodt ๐Ÿ’…

Real talk, the CM's RF interface MAC is the key here, so it's giving "look up by address, get your index, move on" ๐Ÿฆ‹

docsIfCmtsChannelUtilizationInterval OBJECT-TYPE
     SYNTAX      Integer32 (0..86400)
     UNITS       "seconds"
     MAX-ACCESS  read-write
     STATUS      current
     DESCRIPTION
         "The time interval in seconds over which the channel
          utilization index is calculated.  All upstream/downstream
          channels use the same
          docsIfCmtsChannelUtilizationInterval.

          Setting a value of zero disables utilization reporting.
          A channel utilization index is calculated over a fixed
          window applying to the most recent
          docsIfCmtsChannelUtilizationInterval.  It would therefore
          be prudent to use a relatively short
          docsIfCmtsChannelUtilizationInterval.
          It is a vendor decision whether to reset the timer when
          docsIfCmtsChannelUtilizationInterval is changed during a
          utilization sampling period."
     ::= { docsIfCmtsObjects 8 }

docsIfCmtsChannelUtilizationTable OBJECT-TYPE
     SYNTAX      SEQUENCE OF DocsIfCmtsChannelUtilizationEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "Reports utilization statistics for attached upstream and
          downstream physical channels."
     ::= { docsIfCmtsObjects 9 }

docsIfCmtsChannelUtilizationEntry OBJECT-TYPE
     SYNTAX      DocsIfCmtsChannelUtilizationEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "Utilization statistics for a single upstream or downstream
          physical channel.  An entry exists in this table for each
          ifEntry with an ifType equal to
          docsCableDownstream (128)
          or docsCableUpstream (129)."
     INDEX  { ifIndex, docsIfCmtsChannelUtIfType,
          docsIfCmtsChannelUtId }
     ::= { docsIfCmtsChannelUtilizationTable 1 }

DocsIfCmtsChannelUtilizationEntry ::= SEQUENCE {
         docsIfCmtsChannelUtIfType         IANAifType,
         docsIfCmtsChannelUtId             Integer32,
         docsIfCmtsChannelUtUtilization    Integer32
     }

docsIfCmtsChannelUtIfType OBJECT-TYPE
     SYNTAX       IANAifType
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
         "The secondary index into this table.  Indicates the IANA
          interface type associated with this physical channel.
          Only docsCableDownstream (128) and
          docsCableUpstream (129) are valid."
     ::= { docsIfCmtsChannelUtilizationEntry 1 }

docsIfCmtsChannelUtId OBJECT-TYPE
     SYNTAX       Integer32 (0..255)
     MAX-ACCESS   not-accessible
     STATUS       current
     DESCRIPTION
          "The tertiary index into this table.  Indicates the CMTS
           identifier for this physical channel."
     ::= { docsIfCmtsChannelUtilizationEntry 2 }

docsIfCmtsChannelUtUtilization OBJECT-TYPE
     SYNTAX       Integer32 (0..100)
     UNITS        "percent"
     MAX-ACCESS   read-only
     STATUS       current
     DESCRIPTION
         "The calculated and truncated utilization index for this
          physical upstream or downstream channel, accurate as of
          the most recent docsIfCmtsChannelUtilizationInterval.

          Upstream Channel Utilization Index:

          The upstream channel utilization index is expressed as a
          percentage of mini-slots utilized on the physical channel,
          regardless of burst type.  For an Initial Maintenance
          region, the mini-slots for the complete region are
          considered utilized if the CMTS received an upstream
          burst within the region from any CM on the physical
          channel.  For contention REQ and REQ/DATA regions, the
          mini-slots for a transmission opportunity within the
          region are considered utilized if the CMTS received an
          upstream burst within the opportunity from any CM on the
          physical channel.  For all other regions, utilized
          mini-slots are those in which the CMTS granted
          bandwidth to any unicast SID on the physical channel.

          For an upstream interface that has multiple logical
          upstream channels enabled, the utilization index is a
          weighted sum of utilization indices for the logical
          channels.  The weight for each utilization index is the
          percentage of upstream mini-slots allocated for the
          corresponding logical channel.
          Example:
          If 75% of bandwidth is allocated to the first logical
          channel and 25% to the second, and the utilization
          indices for each are 60 and 40, respectively, the
          utilization index for the upstream physical channel is
          (60 * 0.75) + (40 * 0.25) = 55.  This figure
          applies to the most recent utilization interval.

          Downstream Channel Utilization Index:

          The downstream channel utilization index is a percentage
          expressing the ratio between bytes used to transmit data
          versus the total number of bytes transmitted in the raw
          bandwidth of the MPEG channel.  As with the upstream
          utilization index, the calculated value represents
          the most recent utilization interval.
          Formula:
          Downstream utilization index =
          (100 * (data bytes / raw bytes))

          Definitions:
          Data bytes:    Number of bytes transmitted as data in the
                         docsIfCmtsChannelUtilizationInterval.
                         Identical to docsIfCmtsDownChannelCtrUsed
                         Bytes measured over the utilization
                         interval.
          Raw bandwidth: Total number of bytes available for
                         transmitting data, not including bytes
                         used for headers and other overhead.
          Raw bytes:     (raw bandwidth *
                         docsIfCmtsChannelUtilizationInterval).
                         Identical to docsIfCmtsDownChannelCtrTotal
                         Bytes measured over the utilization
                         interval."
     ::= { docsIfCmtsChannelUtilizationEntry 3 }

Okay this part is where the utilization stuff lives ๐Ÿ“Š Basically it's a percentage showing how busy each upstream or downstream channel was over the most recent sampling window, which is super handy for capacity planning, incident digging, and keeping your high value QoS in check โœจ

The window itself is set by docsIfCmtsChannelUtilizationInterval, which is measured in seconds, and setting it to zero turns utilization reporting off ๐Ÿ™ˆ The spec also says it's wise to keep that interval fairly short, and that whether the timer resets when you change it mid-sample is up to the vendor ๐Ÿ’€

The calculation details are all spelled out in the description of docsIfCmtsChannelUtUtilization above ๐Ÿ’– Upstream gets a mini-slot-based index (with a weighted sum if there are multiple logical channels), and downstream is just data bytes over raw bytes, times one hundred. Real ones know the math is the whole vibe ๐Ÿงฎ

docsIfCmtsDownChannelCounterTable OBJECT-TYPE
     SYNTAX      SEQUENCE OF DocsIfCmtsDownChannelCounterEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "This table is implemented at the CMTS to collect
          downstream channel statistics for utilization
          calculations."
     ::= { docsIfCmtsObjects 10 }

docsIfCmtsDownChannelCounterEntry OBJECT-TYPE
     SYNTAX      DocsIfCmtsDownChannelCounterEntry
     MAX-ACCESS  not-accessible
     STATUS      current
     DESCRIPTION
         "An entry provides a list of traffic counters for a single
          downstream channel.
          An entry in this table exists for each ifEntry with an
          ifType of docsCableDownstream(128)."
     INDEX { ifIndex }
     ::= { docsIfCmtsDownChannelCounterTable 1 }

DocsIfCmtsDownChannelCounterEntry ::= SEQUENCE {
         docsIfCmtsDownChnlCtrId              Integer32,
         docsIfCmtsDownChnlCtrTotalBytes      Counter32,
         docsIfCmtsDownChnlCtrUsedBytes       Counter32,
         docsIfCmtsDownChnlCtrExtTotalBytes   Counter64,
         docsIfCmtsDownChnlCtrExtUsedBytes    Counter64
     }

docsIfCmtsDownChnlCtrId OBJECT-TYPE
     SYNTAX      Integer32 (0..255)
     MAX-ACCESS  read-only
     STATUS      current
     DESCRIPTION
         "The Cable Modem Termination System identification
          of the downstream channel within this particular MAC
          interface.  If the interface is down, the object returns
          the most current value.  If the downstream channel ID is
          unknown, this object returns a value of 0."
     ::= { docsIfCmtsDownChannelCounterEntry 1 }

Last bit for now: if you want to do your own math on downstream usage, you can poll these counters directly instead of relying on the utilization table ๐ŸŒˆ The 32-bit counters are only there so older SNMPv1 managers can still read them, since they can't handle the 64-bit ones ๐Ÿ’œ

Okay bestie, the downstream counters are done and now we're getting into the upstream ones ๐Ÿฆ‹ These are how the CMTS keeps score on upstream mini-slots, and the 32-bit versions are there for old SNMPv1 managers ๐Ÿ’…

   docsIfCmtsDownChnlCtrTotalBytes OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "Bytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "At the CMTS, the total number of bytes in the Payload
             portion of MPEG Packets (i.e., not including MPEG header
             or pointer_field) transported by this downstream channel.
             This is the 32-bit version of
             docsIfCmtsDownChnlCtrExtTotalBytes, included to provide
             back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsDownChannelCounterEntry 2 }

   docsIfCmtsDownChnlCtrUsedBytes OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "Bytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "At the CMTS, the total number of DOCSIS data bytes
             transported by this downstream channel.
             The number of data bytes is defined as the total number
             of bytes transported in DOCSIS payloads minus the number
             of stuff bytes transported in DOCSIS payloads.
             This is the 32-bit version of
             docsIfCmtsDownChnlCtrExtUsedBytes, included to provide
             back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsDownChannelCounterEntry 3 }

   docsIfCmtsDownChnlCtrExtTotalBytes OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "Bytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "At the CMTS, the total number of bytes in the Payload
             portion of MPEG Packets (i.e., not including MPEG header
             or pointer_field) transported by this downstream
             channel.
             This is the 64-bit version of
             docsIfCmtsDownChnlCtrTotalBytes and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsDownChannelCounterEntry 4 }

   docsIfCmtsDownChnlCtrExtUsedBytes OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "Bytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "At the CMTS, the total number of DOCSIS data bytes
             transported by this downstream channel.  The number
             of data bytes is defined as the total number of bytes
             transported in DOCSIS payloads minus the number of
             stuff bytes transported in DOCSIS payloads.
             This is the 64-bit version of
             docsIfCmtsDownChnlCtrUsedBytes and will not be accessible
             to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsDownChannelCounterEntry 5 }

Now the upstream table, which is the real main character of this batch ๐Ÿ‘‘ Read the comments in here, they lay out which objects are must-haves and which ones are the bonus extras ๐ŸŒธ

   -- The following table provides operators with input data appropriate
   -- for calculating upstream channel utilization, and for determining
   -- the traffic characteristics of upstream channels.  Operators may
   -- use the docsIfCmtsChannelUtilizationTable or perform their own
   -- polling of the docsIfCmtsUpChannelCounterTable objects for
   -- utilization determination.
   -- The first four 32 and 64 objects in this table are mandatory.
   -- Vendors may choose to implement the remaining optional objects to
   -- provide operators with finer characterization of upstream channel
   -- traffic patterns.  The 32-bit counter objects are included to
   -- provide backward compatibility with SNMPv1 managers, which cannot
   -- access 64-bit counter objects.

   docsIfCmtsUpChannelCounterTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF DocsIfCmtsUpChannelCounterEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table is implemented at the CMTS to provide upstream
             channel statistics appropriate for channel utilization
             calculations."
        ::= { docsIfCmtsObjects 11 }

   docsIfCmtsUpChannelCounterEntry OBJECT-TYPE
        SYNTAX      DocsIfCmtsUpChannelCounterEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "List of traffic statistics for a single upstream channel.
             For DOCSIS 2.0 CMTSs, an entry in this table
             exists for each ifEntry with an ifType of
             docsCableUpstreamChannel (205).

             For DOCSIS 1.x CMTSs, an entry in this table
             exists for each ifEntry with an ifType of
             docsCableUpstream (129)."
        INDEX { ifIndex }
        ::= { docsIfCmtsUpChannelCounterTable 1 }

   DocsIfCmtsUpChannelCounterEntry ::= SEQUENCE {
            docsIfCmtsUpChnlCtrId                          Integer32,
            docsIfCmtsUpChnlCtrTotalMslots                 Counter32,
            docsIfCmtsUpChnlCtrUcastGrantedMslots          Counter32,
            docsIfCmtsUpChnlCtrTotalCntnMslots             Counter32,
            docsIfCmtsUpChnlCtrUsedCntnMslots              Counter32,
            docsIfCmtsUpChnlCtrExtTotalMslots              Counter64,
            docsIfCmtsUpChnlCtrExtUcastGrantedMslots       Counter64,
            docsIfCmtsUpChnlCtrExtTotalCntnMslots          Counter64,
            docsIfCmtsUpChnlCtrExtUsedCntnMslots           Counter64,
            docsIfCmtsUpChnlCtrCollCntnMslots              Counter32,
            docsIfCmtsUpChnlCtrTotalCntnReqMslots          Counter32,
            docsIfCmtsUpChnlCtrUsedCntnReqMslots           Counter32,
            docsIfCmtsUpChnlCtrCollCntnReqMslots           Counter32,
            docsIfCmtsUpChnlCtrTotalCntnReqDataMslots      Counter32,
            docsIfCmtsUpChnlCtrUsedCntnReqDataMslots       Counter32,
            docsIfCmtsUpChnlCtrCollCntnReqDataMslots       Counter32,
            docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots    Counter32,
            docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots     Counter32,
            docsIfCmtsUpChnlCtrCollCntnInitMaintMslots     Counter32,
            docsIfCmtsUpChnlCtrExtCollCntnMslots           Counter64,
            docsIfCmtsUpChnlCtrExtTotalCntnReqMslots       Counter64,
            docsIfCmtsUpChnlCtrExtUsedCntnReqMslots        Counter64,
            docsIfCmtsUpChnlCtrExtCollCntnReqMslots        Counter64,
            docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots   Counter64,
            docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots    Counter64,
            docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots    Counter64,
            docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots Counter64,
            docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots  Counter64,
            docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots  Counter64
        }

   docsIfCmtsUpChnlCtrId OBJECT-TYPE
        SYNTAX      Integer32 (0..255)
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The CMTS identification of the upstream channel."
        ::= { docsIfCmtsUpChannelCounterEntry 1 }

   docsIfCmtsUpChnlCtrTotalMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of all mini-slots
             defined for this upstream logical channel.  This count
             includes all IUCs and SIDs, even those allocated to the
             NULL SID for a 2.0 logical channel that is inactive.  This
             is the 32-bit version of docsIfCmtsUpChnlCtrExtTotalMslots
             and is included for back compatibility with SNMPv1
             managers.  Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 2 }

   docsIfCmtsUpChnlCtrUcastGrantedMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of unicast
             granted mini-slots on the upstream logical channel,
             regardless of burst type.  Unicast granted mini-slots are
             those in which the CMTS assigned bandwidth to any unicast
             SID on the logical channel.  However, this object does not
             include minis-lots for reserved IUCs, or grants to SIDs
             designated as meaning 'no CM'.  This is the 32-bit version
             of docsIfCmtsUpChnlCtrExtUcastGrantedMslots, and is
             included for back compatibility with SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 3 }

   docsIfCmtsUpChnlCtrTotalCntnMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             mini-slots defined for this upstream logical channel.  This
             count includes all mini-slots assigned to a broadcast or
             multicast SID on the logical channel.  This is the 32-bit
             version of docsIfCmtsUpChnlCtrExtTotalCntnMslots, and is
             included for back compatibility with SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 4 }

   docsIfCmtsUpChnlCtrUsedCntnMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             mini-slots utilized on the upstream logical channel.  For
             contention regions, utilized mini-slots are those in which
             the CMTS correctly received an upstream burst from any CM
             on the upstream logical channel.  This is the 32-bit
             version of docsIfCmtsUpChnlCtrExtUsedCntnMslots and is
             included for back compatibility with SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 5 }

okay bestie, we're still deep in the MIB definitions ๐Ÿฆ‹ these are the upstream mini-slot counters for each logical channel, both the 64-bit Counter64 versions and the 32-bit Counter32 ones that SNMPv1 managers can still read ๐Ÿ’–

   docsIfCmtsUpChnlCtrExtTotalMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of all mini-slots
             defined for this upstream logical channel.  This count
             includes all IUCs and SIDs, even those allocated to the
             NULL SID for a 2.0 logical channel that is inactive.  This
             is the 64-bit version of docsIfCmtsUpChnlCtrTotalMslots
             and will not be accessible to SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 6 }

   docsIfCmtsUpChnlCtrExtUcastGrantedMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of unicast
             granted mini-slots on the upstream logical channel,
             regardless of burst type.  Unicast granted mini-slots are
             those in which the CMTS assigned bandwidth to any unicast
             SID on the logical channel.  However, this object does not
             include mini-slots for reserved IUCs, or grants to SIDs
             designated as meaning 'no CM'.  This is the 64-bit version
             of docsIfCmtsUpChnlCtrUcastGrantedMslots and will not be
             accessible to SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 7 }

   docsIfCmtsUpChnlCtrExtTotalCntnMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             mini-slots defined for this upstream logical channel.  This
             count includes all mini-slots assigned to a broadcast or
             multicast SID on the logical channel.  This is the 64-bit
             version of docsIfCmtsUpChnlCtrTotalCntnMslots and will
             not be accessible to SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 8 }

   docsIfCmtsUpChnlCtrExtUsedCntnMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention

             mini-slots utilized on the upstream logical channel.  For
             contention regions, utilized mini-slots are those in which
             the CMTS correctly received an upstream burst from any CM
             on the upstream logical channel.  This is the 64-bit
             version of docsIfCmtsUpChnlCtrUsedCntnMslots and will not
             be accessible to SNMPv1 managers.
             Support for this object is mandatory.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 9 }

   docsIfCmtsUpChnlCtrCollCntnMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             mini-slots subjected to collisions on the upstream logical
             channel.  For contention regions, these are the mini-slots
             applicable to bursts that the CMTS detected but could not
             correctly receive.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtCollCntnMslots and is included for
             back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 10 }

   docsIfCmtsUpChnlCtrTotalCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots defined for this upstream logical
             channel.  This count includes all mini-slots for IUC1
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtTotalCntnReqMslots and is included
             for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 11 }

   docsIfCmtsUpChnlCtrUsedCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots utilized on this upstream logical
             channel.  This count includes all contention mini-slots for
             IUC1 applicable to bursts that the CMTS correctly
             received.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtUsedCntnReqMslots and is included
             for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 12 }

   docsIfCmtsUpChnlCtrCollCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots subjected to collisions on this upstream
             logical channel.  This includes all contention mini-slots
             for IUC1 applicable to bursts that the CMTS detected but
             could not correctly receive.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtCollCntnReqMslots and is included
             for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 13 }

   docsIfCmtsUpChnlCtrTotalCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention

             request data mini-slots defined for this upstream logical
             channel.  This count includes all mini-slots for IUC2
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots and is
             included for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 14 }

   docsIfCmtsUpChnlCtrUsedCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
   MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request data mini-slots utilized on this upstream logical
             channel.  This includes all contention mini-slots for IUC2
             applicable to bursts that the CMTS correctly received.
             This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots and is
             included for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 15 }

   docsIfCmtsUpChnlCtrCollCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request data mini-slots subjected to collisions on this
             upstream logical channel.  This includes all contention
             mini-slots for IUC2 applicable to bursts that the CMTS
             detected, but could not correctly receive.  This is the
             32-bit version of
             docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots and is
             included for back compatibility with SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 16 }

   docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             initial maintenance mini-slots defined for this upstream
             logical channel.  This includes all mini-slots for IUC3
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots
             and is included for back compatibility with SNMPv1
             managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 17 }

okay so this part is all about the upstream counters on the CMTS, and they're giving main character energy ๐Ÿ’–โœจ

   docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             initial maintenance mini-slots utilized on this upstream
             logical channel.  This includes all contention mini-slots
             for IUC3 applicable to bursts that the CMTS correctly
             received.  This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots
             and is included for back compatibility with SNMPv1
             managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 18 }

   docsIfCmtsUpChnlCtrCollCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter32
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION

            "Current count, from CMTS initialization, of contention
             initial maintenance mini-slots subjected to collisions on
             this upstream logical channel.  This includes all
             contention mini-slots for IUC3 applicable to bursts that
             the CMTS detected, but could not correctly receive.
             This is the 32-bit version of
             docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots
             and is included for back compatibility with SNMPv1
             managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 19 }

   docsIfCmtsUpChnlCtrExtCollCntnMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of collision
             contention mini-slots on the upstream logical channel.
             For contention regions, these are the mini-slots applicable
             to bursts that the CMTS detected, but could not correctly
             receive.  This is the 64-bit version of
             docsIfCmtsUpChnlCtrCollCntnMslots and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 20 }

   docsIfCmtsUpChnlCtrExtTotalCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots defined for this upstream logical
             channel.  This count includes all mini-slots for IUC1
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 64-bit version of
             docsIfCmtsUpChnlCtrTotalCntnReqMslots and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 21 }

   docsIfCmtsUpChnlCtrExtUsedCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots utilized on this upstream logical
             channel.  This count includes all contention mini-slots for
             IUC1 applicable to bursts that the CMTS correctly
             received.  This is the 64-bit version of
             docsIfCmtsUpChnlCtrUsedCntnReqMslots and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 22 }

   docsIfCmtsUpChnlCtrExtCollCntnReqMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request mini-slots subjected to collisions on this upstream
             logical channel.  This includes all contention mini-slots
             for IUC1 applicable to bursts that the CMTS detected,
             but could not correctly receive.  This is the 64-bit
             version of docsIfCmtsUpChnlCtrCollCntnReqMslots and will
             not be accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 23 }

   docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request data mini-slots defined for this upstream logical
             channel.  This count includes all mini-slots for IUC2
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 64-bit version of
             docsIfCmtsUpChnlCtrTotalCntnReqDataMslots and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 24 }

   docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request data mini-slots utilized on this upstream logical
             channel.  This includes all contention mini-slots for IUC2
             applicable to bursts that the CMTS correctly received.
             This is the 64-bit version of
             docsIfCmtsUpChnlCtrUsedCntnReqDataMslots and will not be
             accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 25 }

   docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             request data mini-slots subjected to collisions on this
             upstream logical channel.  This includes all contention
             mini-slots for IUC2 applicable to bursts that the CMTS
             detected, but could not correctly receive.  This is the
             64-bit version of
             docsIfCmtsUpChnlCtrCollCntnReqDataMslots
             and will not be accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 26 }

   docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of initial
             maintenance mini-slots defined for this upstream logical
             channel.  This count includes all mini-slots for IUC3
             assigned to a broadcast or multicast SID on the logical
             channel.  This is the 64-bit version of
             docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots
             and will not be accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 27 }

   docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of initial
             maintenance mini-slots utilized on this upstream logical
             channel.  This includes all contention mini-slots for IUC3
             applicable to bursts that the CMTS correctly received.
             This is the 64-bit version of
             docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots
             and will not be accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 28 }

   docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots OBJECT-TYPE
        SYNTAX      Counter64
        UNITS       "mini-slots"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "Current count, from CMTS initialization, of contention
             initial maintenance mini-slots subjected to collisions on
             this upstream logical channel.  This includes all
             contention mini-slots for IUC3 applicable to bursts that
             the CMTS detected, but could not correctly receive.
             This is the 64-bit version of
             docsIfCmtsUpChnlCtrCollCntnInitMaintMslots and will not
             be accessible to SNMPv1 managers.
             Discontinuities in the value of this counter can occur
             at reinitialization of the managed system, and at other
             times as indicated by the value of
             ifCounterDiscontinuityTime for the associated ifIndex."
        ::= { docsIfCmtsUpChannelCounterEntry 29 }

   --
   -- notification group is for future extension.
   --

   docsIfNotification OBJECT IDENTIFIER     ::= { docsIfMib 2 }

   --
   -- MIB Compliance statements.
   --

   --
   -- Conformance definitions
   --

   docsIfConformance  OBJECT IDENTIFIER     ::= { docsIfMib 3 }
   docsIfCompliances  OBJECT IDENTIFIER     ::= { docsIfConformance 1 }
   docsIfGroups       OBJECT IDENTIFIER     ::= { docsIfConformance 2 }

okay bestie, we're now in the compliance statements for DOCSIS 1.x and 2.0 devices ๐ŸŽ€โœจ

   docsIfBasicCompliance MODULE-COMPLIANCE
        STATUS      deprecated
        DESCRIPTION
            "The compliance statement for devices that implement
             DOCSIS 1.x compliant Radio Frequency Interfaces."

   MODULE  -- docsIfMib

   -- unconditionally mandatory groups
   MANDATORY-GROUPS {
        docsIfBasicGroup
        }

   -- conditionally mandatory group
   GROUP docsIfCmGroup

        DESCRIPTION
            "This group is implemented only in cable modems, not in
             cable modem termination systems."

   -- conditionally mandatory group
   GROUP docsIfCmtsGroup
        DESCRIPTION
            "This group is implemented only in cable modem termination
             systems, not in cable modems."

   OBJECT  docsIfDownChannelFrequency
        WRITE-SYNTAX Integer32 (54000000..860000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems.  The values above are
             appropriate for a cable plant using a Sub-Split channel
             plan.  If DOCSIS is extended to cover other types of
             channel plans (and frequency allocations), this object
             will be modified accordingly."

   OBJECT  docsIfDownChannelWidth
        WRITE-SYNTAX Integer32 (6000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is important to implement this object as read-only.
             In cable modems, this object is always implemented as
             read-only.  The above value is appropriate for cable
             plants running under NTSC (National Television
             Standards Committee) standards.  If DOCSIS is extended to
             work with other standards (e.g., European standards), this
             object will be modified accordingly."

   OBJECT  docsIfDownChannelModulation
        WRITE-SYNTAX INTEGER {
                               qam64 (3),
                               qam256 (4)
                             }
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfDownChannelInterleave
        WRITE-SYNTAX INTEGER {
                    taps8Increment16(3),
                    taps16Increment8(4),
                    taps32Increment4(5),
                    taps64Increment2(6),
                    taps128Increment1(7)
                     }
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfDownChannelPower
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelFrequency
        WRITE-SYNTAX Integer32 (5000000..42000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems.  The values above are
             appropriate for a cable plant using a Sub-Split channel
             plan.  If DOCSIS is extended to cover other types of
             channel plans (and frequency allocations), this object
             will be modified accordingly."

   OBJECT  docsIfUpChannelWidth
        WRITE-SYNTAX Integer32 (200000..3200000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems.  The above value is appropriate
             for cable plants running under NTSC (National Television
             Standards Committee) standards.  If DOCSIS is extended to
             work with other standards (e.g., European standards), this
             object will be modified accordingly."

   OBJECT  docsIfUpChannelModulationProfile
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelSlotSize
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfUpChannelRangingBackoffStart
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelRangingBackoffEnd
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelTxBackoffStart
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelTxBackoffEnd
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfQosProfPriority
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxUpBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfGuarUpBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxDownBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION

            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxTxBurst
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfBaselinePrivacy
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfCmtsServiceAdminStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsSyncInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsUcdInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsInsertInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsInvitedRangingAttempts
        MIN-ACCESS  read-only
        DESCRIPTION

            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsQosProfilePermissions
        WRITE-SYNTAX     BITS {
            createByManagement(0),
            updateByManagement(1)
           }
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT docsIfCmtsModType
        WRITE-SYNTAX INTEGER {
                        qpsk (2),
                        qam16 (3)
                         }
        DESCRIPTION
            "A management station MAY only set 16QAM or QPSK modulation,
             but others might be possible, based on device
             configuration."

   OBJECT  docsIfCmtsModPreambleLen
        SYNTAX Integer32 (0..1024)
        DESCRIPTION
            "The range of the values for this MODULE-COMPLIANCE
             is 0..1024."

   OBJECT  docsIfCmtsModFECErrorCorrection
           SYNTAX Integer32 (0..10)
           DESCRIPTION
               "The range of the values for this MODULE-COMPLIANCE
                is 0..10."

        ::= { docsIfCompliances 1 }

   docsIfBasicComplianceV2 MODULE-COMPLIANCE
        STATUS      current
        DESCRIPTION
            "The compliance statement for devices that implement
             DOCSIS 2.0 Radio Frequency Interfaces."

   MODULE  -- docsIfMib

   -- unconditionally mandatory groups
   MANDATORY-GROUPS {
        docsIfBasicGroupV2
        }

   -- conditionally mandatory group
   GROUP docsIfCmGroupV2
        DESCRIPTION
            "This group is implemented only in cable modems, not in
             cable modem termination systems."

   -- conditionally mandatory group
   GROUP docsIfCmtsGroupV2
        DESCRIPTION
            "This group is implemented only in cable modem termination
             systems, not in cable modems."


   OBJECT  docsIfDownChannelFrequency
        WRITE-SYNTAX Integer32 (47000000..862000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems.
             A range of 54MHz to 860MHz is appropriate for a cable
             plant using a North American Sub-Split channel plan.
             The spectrum range has been expanded to accommodate
             a lower edge of 47MHz and an upper edge of 862MHz
             for some European channel plans.
             If DOCSIS is extended to cover other types of channel
             plans (and frequency allocations), this object will be
             modified accordingly."

   OBJECT  docsIfDownChannelWidth
        WRITE-SYNTAX Integer32 (6000000 | 8000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is important to implement this object as read-only.
             In cable modems, this object is always implemented as
             read-only.  The value of 6 MHz is appropriate for cable
             plants running under NTSC (National Television
             Standards Committee) standards.  The value of 8 MHz is
             appropriate for cable plants running under ETSI
             standards.  For other regional standards, this
             object will be modified accordingly."

   OBJECT  docsIfDownChannelModulation
        WRITE-SYNTAX INTEGER {
                               qam64 (3),
                               qam256 (4)
                             }
        MIN-ACCESS  read-only
        DESCRIPTION

            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfDownChannelInterleave
        WRITE-SYNTAX INTEGER {
                    taps8Increment16(3),
                    taps16Increment8(4),
                    taps32Increment4(5),
                    taps64Increment2(6),
                    taps128Increment1(7),
                    taps12increment17(8)
                     }
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfDownChannelPower
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-write in cable modem termination systems;
             read-only in cable modems."

okay bestie, this part is where the MIB gets into the compliance statements and object groups ๐Ÿ’… each OBJECT block says whether an object is read-create or read-only on a CM vs a CMTS, and the SCDMA code range is the big MUST-level rule in here ๐Ÿฆ‹

   OBJECT  docsIfUpChannelFrequency
        WRITE-SYNTAX Integer32 (5000000..65000000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems.
             A range of 5MHz to 42MHz is appropriate for a cable
             plant using a North American Sub-Split channel plan.
             The spectrum range has been expanded to accommodate
             an upper edge of 65MHz for some European channel plans.
             If DOCSIS is extended to cover other types of channel
             plans (and frequency allocations), this object will
             be modified accordingly."

   OBJECT  docsIfUpChannelWidth
        WRITE-SYNTAX Integer32 (200000..6400000)
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems,
             read-only in cable modems.  The above value is appropriate
             for cable plants running under NTSC (National Television
             Standards Committee) standards.  If DOCSIS is extended to
             work with other standards (e.g., European standards), this
             object will be modified accordingly."

   OBJECT  docsIfUpChannelModulationProfile
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelSlotSize
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfUpChannelRangingBackoffStart
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelRangingBackoffEnd
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelTxBackoffStart
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelTxBackoffEnd
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelScdmaActiveCodes
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems.
             The number of active codes when SCDMA is in use MUST range
             from 64 to 128 and MUST be a non-Prime value.
             Providing this range allows for the following features
             and capabilities:
                1) Power management in S-CDMA spreader-on frames
                   (with a 3 dB spread).

                2) Avoidance of code 0.
                3) Flexible mini-slot sizes with and without the use of
                   code 0."

   OBJECT  docsIfUpChannelScdmaCodesPerSlot
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelScdmaFrameSize
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelScdmaHoppingSeed
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelCloneFrom
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelUpdate
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfUpChannelStatus
           MIN-ACCESS  read-only
           DESCRIPTION
               "Read-create in Cable Modem Termination Systems;
                read-only in Cable Modems.
                Entries associated to physical interfaces only support
                the read-only value 'active'."


   OBJECT  docsIfUpChannelPreEqEnable
        MIN-ACCESS  read-only
        DESCRIPTION
            "Read-create in cable modem termination systems;
             read-only in cable modems."

   OBJECT  docsIfQosProfPriority
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxUpBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfGuarUpBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxDownBandwidth
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfBaselinePrivacy
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfQosProfMaxTransmitBurst
        MIN-ACCESS  read-only
        DESCRIPTION
            "This object is always read-only in cable modems.
             It is compliant to implement this object as read-only
             in cable modem termination systems."

   OBJECT  docsIfCmRangingTimeout
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT docsIfCmStatusModulationType
       SYNTAX          INTEGER {
           unknown(0),
           tdma(1),
           atdma(2),
           scdma(3)
       }
        DESCRIPTION
            "CM does not use both modulation burst profiles of a
             'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is
             not supported."

   OBJECT  docsIfCmtsServiceAdminStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsSyncInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsUcdInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsInsertInterval
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsInvitedRangingAttempts
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT  docsIfCmtsQosProfilePermissions
        WRITE-SYNTAX     BITS {
            createByManagement(0),
            updateByManagement(1)
           }
        MIN-ACCESS  read-only
        DESCRIPTION
            "It is compliant to implement this object as read-only."

   OBJECT docsIfCmtsModType
        WRITE-SYNTAX      INTEGER {
            qpsk(2),
            qam16(3),
            qam64(6)
        }
        DESCRIPTION
            "A management station MAY only set 64QAM, 16QAM, or QPSK
             modulation for Time or Code division Multiple Access,
             but others might be possible based on device
             configuration."

   OBJECT docsIfCmtsCmStatusModulationType
       SYNTAX          INTEGER {
           unknown(0),
           tdma(1),
           atdma(2),
           scdma(3)
       }
        DESCRIPTION
            "CM does not use both modulation burst profiles of a
             'tdmAndAtdma' ChannelType; therefore, 'tdmAndAtdma'is
             not supported."

        ::= { docsIfCompliances 2 }

   docsIfBasicGroup OBJECT-GROUP
        OBJECTS {
            docsIfDownChannelId,
            docsIfDownChannelFrequency,
            docsIfDownChannelWidth,
            docsIfDownChannelModulation,
            docsIfDownChannelInterleave,
            docsIfDownChannelPower,
            docsIfUpChannelId,
            docsIfUpChannelFrequency,
            docsIfUpChannelWidth,
            docsIfUpChannelModulationProfile,
            docsIfUpChannelSlotSize,
            docsIfUpChannelTxTimingOffset,
            docsIfUpChannelRangingBackoffStart,
            docsIfUpChannelRangingBackoffEnd,
            docsIfUpChannelTxBackoffStart,
            docsIfUpChannelTxBackoffEnd,
            docsIfQosProfPriority,
            docsIfQosProfMaxUpBandwidth,
            docsIfQosProfGuarUpBandwidth,
            docsIfQosProfMaxDownBandwidth,
            docsIfQosProfMaxTxBurst,
            docsIfQosProfBaselinePrivacy,
            docsIfQosProfStatus,
            docsIfSigQIncludesContention,
            docsIfSigQUnerroreds,
            docsIfSigQCorrecteds,
            docsIfSigQUncorrectables,
            docsIfSigQSignalNoise,
            docsIfSigQMicroreflections,
            docsIfSigQEqualizationData
        }
        STATUS      deprecated
        DESCRIPTION
            "Group of objects implemented in both cable modems and
             cable modem termination systems."
        ::= { docsIfGroups 1 }

   docsIfCmGroup OBJECT-GROUP
        OBJECTS {
            docsIfCmCmtsAddress,
            docsIfCmCapabilities,
            docsIfCmRangingTimeout,
            docsIfCmStatusValue,
            docsIfCmStatusCode,
            docsIfCmStatusTxPower,
            docsIfCmStatusResets,
            docsIfCmStatusLostSyncs,
            docsIfCmStatusInvalidMaps,
            docsIfCmStatusInvalidUcds,
            docsIfCmStatusInvalidRangingResponses,
            docsIfCmStatusInvalidRegistrationResponses,
            docsIfCmStatusT1Timeouts,
            docsIfCmStatusT2Timeouts,
            docsIfCmStatusT3Timeouts,
            docsIfCmStatusT4Timeouts,
            docsIfCmStatusRangingAborteds,
            docsIfCmServiceQosProfile,
            docsIfCmServiceTxSlotsImmed,
            docsIfCmServiceTxSlotsDed,
            docsIfCmServiceTxRetries,
            docsIfCmServiceTxExceededs,
            docsIfCmServiceRqRetries,
            docsIfCmServiceRqExceededs
        }
        STATUS      deprecated
        DESCRIPTION
            "Group of objects implemented in cable modems."
        ::= { docsIfGroups 2 }

The groups are where the MIB sorts its objects by what each device type has to implement, so here's the rest of the list ๐Ÿงš๐Ÿ’–

   docsIfCmtsGroup OBJECT-GROUP
        OBJECTS {
            docsIfCmtsCapabilities,
            docsIfCmtsSyncInterval,
            docsIfCmtsUcdInterval,
            docsIfCmtsMaxServiceIds,
            docsIfCmtsInvitedRangingAttempts,
            docsIfCmtsInsertInterval,
            docsIfCmtsStatusInvalidRangeReqs,
            docsIfCmtsStatusRangingAborteds,
            docsIfCmtsStatusInvalidRegReqs,
            docsIfCmtsStatusFailedRegReqs,
            docsIfCmtsStatusInvalidDataReqs,
            docsIfCmtsStatusT5Timeouts,
            docsIfCmtsCmStatusMacAddress,
            docsIfCmtsCmStatusIpAddress,
            docsIfCmtsCmStatusDownChannelIfIndex,
            docsIfCmtsCmStatusUpChannelIfIndex,
            docsIfCmtsCmStatusRxPower,
            docsIfCmtsCmStatusTimingOffset,
            docsIfCmtsCmStatusEqualizationData,
            docsIfCmtsCmStatusValue,
            docsIfCmtsCmStatusUnerroreds,
            docsIfCmtsCmStatusCorrecteds,
            docsIfCmtsCmStatusUncorrectables,
            docsIfCmtsCmStatusSignalNoise,
            docsIfCmtsCmStatusMicroreflections,
            docsIfCmtsServiceCmStatusIndex,
            docsIfCmtsServiceAdminStatus,
            docsIfCmtsServiceQosProfile,
            docsIfCmtsServiceCreateTime,
            docsIfCmtsServiceInOctets,
            docsIfCmtsServiceInPackets,
            docsIfCmtsModType,
            docsIfCmtsModControl,
            docsIfCmtsModPreambleLen,
            docsIfCmtsModDifferentialEncoding,
            docsIfCmtsModFECErrorCorrection,
            docsIfCmtsModFECCodewordLength,
            docsIfCmtsModScramblerSeed,
            docsIfCmtsModMaxBurstSize,
            docsIfCmtsModGuardTimeSize,
            docsIfCmtsModLastCodewordShortened,
            docsIfCmtsModScrambler,
            docsIfCmtsQosProfilePermissions,
            docsIfCmtsCmPtr
        }
        STATUS      deprecated
        DESCRIPTION
            "Group of objects implemented in Cable Modem Termination
             Systems."
        ::= { docsIfGroups 3 }

   -- obsolete group
   -- RFC 2670 already had a obsolete group, even though RFC2670
   -- was the first version of this MIB Module.

   docsIfObsoleteGroup OBJECT-GROUP
        OBJECTS {
            docsIfCmRangingRespTimeout,
            docsIfCmtsInsertionInterval
        }
        STATUS      obsolete
        DESCRIPTION
            "Group of objects obsoleted."
        ::= { docsIfGroups 4 }

   docsIfBasicGroupV2 OBJECT-GROUP
        OBJECTS {
            docsIfDownChannelId,
            docsIfDownChannelFrequency,
            docsIfDownChannelWidth,
            docsIfDownChannelModulation,
            docsIfDownChannelInterleave,
            docsIfDownChannelPower,
            docsIfDownChannelAnnex,
            docsIfUpChannelId,
            docsIfUpChannelFrequency,
            docsIfUpChannelWidth,
            docsIfUpChannelModulationProfile,
            docsIfUpChannelSlotSize,
            docsIfUpChannelTxTimingOffset,
            docsIfUpChannelRangingBackoffStart,
            docsIfUpChannelRangingBackoffEnd,
            docsIfUpChannelTxBackoffStart,
            docsIfUpChannelTxBackoffEnd,
            docsIfUpChannelScdmaActiveCodes,
            docsIfUpChannelScdmaCodesPerSlot,
            docsIfUpChannelScdmaFrameSize,
            docsIfUpChannelScdmaHoppingSeed,
            docsIfUpChannelType,
            docsIfUpChannelCloneFrom,
            docsIfUpChannelUpdate,
            docsIfUpChannelStatus,
            docsIfUpChannelPreEqEnable,
            docsIfQosProfPriority,
            docsIfQosProfMaxUpBandwidth,
            docsIfQosProfGuarUpBandwidth,
            docsIfQosProfMaxDownBandwidth,
            docsIfQosProfBaselinePrivacy,
            docsIfQosProfStatus,
            docsIfQosProfMaxTransmitBurst,
            docsIfSigQIncludesContention,
            docsIfSigQUnerroreds,
            docsIfSigQCorrecteds,
            docsIfSigQUncorrectables,
            docsIfSigQSignalNoise,
            docsIfSigQMicroreflections,
            docsIfSigQExtUnerroreds,
            docsIfSigQExtCorrecteds,
            docsIfSigQExtUncorrectables,
            docsIfDocsisBaseCapability
        }
        STATUS      current
        DESCRIPTION
            "Group of objects implemented in both cable modems and
             cable modem termination systems."
        ::= { docsIfGroups 5 }

   docsIfCmGroupV2 OBJECT-GROUP
        OBJECTS {
            docsIfCmCmtsAddress,
            docsIfCmCapabilities,
            docsIfCmRangingTimeout,
            docsIfCmStatusValue,
            docsIfCmStatusCode,
            docsIfCmStatusTxPower,
            docsIfCmStatusResets,
            docsIfCmStatusLostSyncs,
            docsIfCmStatusInvalidMaps,
            docsIfCmStatusInvalidUcds,
            docsIfCmStatusInvalidRangingResponses,
            docsIfCmStatusInvalidRegistrationResponses,
            docsIfCmStatusT1Timeouts,
            docsIfCmStatusT2Timeouts,
            docsIfCmStatusT3Timeouts,
            docsIfCmStatusT4Timeouts,
            docsIfCmStatusRangingAborteds,
            docsIfCmStatusDocsisOperMode,
            docsIfCmStatusModulationType,
            docsIfCmStatusEqualizationData,
            docsIfCmStatusUCCs,
            docsIfCmStatusUCCFails,
            docsIfCmServiceQosProfile,
            docsIfCmServiceTxSlotsImmed,
            docsIfCmServiceTxSlotsDed,
            docsIfCmServiceTxRetries,
            docsIfCmServiceTxExceededs,
            docsIfCmServiceRqRetries,
            docsIfCmServiceRqExceededs,
            docsIfCmServiceExtTxSlotsImmed,
            docsIfCmServiceExtTxSlotsDed,
            docsIfSigQEqualizationData
        }
        STATUS      current
        DESCRIPTION
            "Group of objects implemented in cable modems."
        ::= { docsIfGroups 6 }

   docsIfCmtsGroupV2 OBJECT-GROUP
        OBJECTS {
            docsIfCmtsCapabilities,
            docsIfCmtsSyncInterval,
            docsIfCmtsUcdInterval,
            docsIfCmtsMaxServiceIds,
            docsIfCmtsInvitedRangingAttempts,
            docsIfCmtsInsertInterval,
            docsIfCmtsMacStorageType,
            docsIfCmtsStatusInvalidRangeReqs,
            docsIfCmtsStatusRangingAborteds,
            docsIfCmtsStatusInvalidRegReqs,
            docsIfCmtsStatusFailedRegReqs,
            docsIfCmtsStatusInvalidDataReqs,
            docsIfCmtsStatusT5Timeouts,
            docsIfCmtsCmStatusMacAddress,
            docsIfCmtsCmStatusDownChannelIfIndex,
            docsIfCmtsCmStatusUpChannelIfIndex,
            docsIfCmtsCmStatusRxPower,
            docsIfCmtsCmStatusTimingOffset,
            docsIfCmtsCmStatusEqualizationData,
            docsIfCmtsCmStatusValue,
            docsIfCmtsCmStatusUnerroreds,
            docsIfCmtsCmStatusCorrecteds,
            docsIfCmtsCmStatusUncorrectables,
            docsIfCmtsCmStatusSignalNoise,
            docsIfCmtsCmStatusMicroreflections,
            docsIfCmtsCmStatusExtUnerroreds,
            docsIfCmtsCmStatusExtCorrecteds,
            docsIfCmtsCmStatusExtUncorrectables,
            docsIfCmtsCmStatusDocsisRegMode,
            docsIfCmtsCmStatusModulationType,
            docsIfCmtsCmStatusInetAddressType,
            docsIfCmtsCmStatusInetAddress,
            docsIfCmtsCmStatusValueLastUpdate,
            docsIfCmtsCmStatusHighResolutionTimingOffset,
            docsIfCmtsServiceAdminStatus,
            docsIfCmtsServiceQosProfile,
            docsIfCmtsServiceCreateTime,
            docsIfCmtsServiceInOctets,
            docsIfCmtsServiceInPackets,
            docsIfCmtsServiceNewCmStatusIndex,
            docsIfCmtsModType,
            docsIfCmtsModControl,
            docsIfCmtsModPreambleLen,
            docsIfCmtsModDifferentialEncoding,
            docsIfCmtsModFECErrorCorrection,
            docsIfCmtsModFECCodewordLength,
            docsIfCmtsModScramblerSeed,
            docsIfCmtsModMaxBurstSize,
            docsIfCmtsModGuardTimeSize,
            docsIfCmtsModLastCodewordShortened,
            docsIfCmtsModScrambler,
            docsIfCmtsModByteInterleaverDepth,
            docsIfCmtsModByteInterleaverBlockSize,
            docsIfCmtsModPreambleType,
            docsIfCmtsModTcmErrorCorrectionOn,
            docsIfCmtsModScdmaInterleaverStepSize,
            docsIfCmtsModScdmaSpreaderEnable,
            docsIfCmtsModScdmaSubframeCodes,
            docsIfCmtsModChannelType,
            docsIfCmtsModStorageType,
            docsIfCmtsQosProfilePermissions,
            docsIfCmtsCmPtr,
            docsIfCmtsChannelUtilizationInterval,
            docsIfCmtsChannelUtUtilization,
            docsIfCmtsDownChnlCtrId,
            docsIfCmtsDownChnlCtrTotalBytes,
            docsIfCmtsDownChnlCtrUsedBytes,
            docsIfCmtsDownChnlCtrExtTotalBytes,
            docsIfCmtsDownChnlCtrExtUsedBytes,
            docsIfCmtsUpChnlCtrId,
            docsIfCmtsUpChnlCtrTotalMslots,
            docsIfCmtsUpChnlCtrUcastGrantedMslots,
            docsIfCmtsUpChnlCtrTotalCntnMslots,
            docsIfCmtsUpChnlCtrUsedCntnMslots,
            docsIfCmtsUpChnlCtrExtTotalMslots,
            docsIfCmtsUpChnlCtrExtUcastGrantedMslots,
            docsIfCmtsUpChnlCtrExtTotalCntnMslots,
            docsIfCmtsUpChnlCtrExtUsedCntnMslots,
            docsIfCmtsUpChnlCtrCollCntnMslots,
            docsIfCmtsUpChnlCtrTotalCntnReqMslots,
            docsIfCmtsUpChnlCtrUsedCntnReqMslots,
            docsIfCmtsUpChnlCtrCollCntnReqMslots,
            docsIfCmtsUpChnlCtrTotalCntnReqDataMslots,
            docsIfCmtsUpChnlCtrUsedCntnReqDataMslots,
            docsIfCmtsUpChnlCtrCollCntnReqDataMslots,
            docsIfCmtsUpChnlCtrTotalCntnInitMaintMslots,
            docsIfCmtsUpChnlCtrUsedCntnInitMaintMslots,
            docsIfCmtsUpChnlCtrCollCntnInitMaintMslots,
            docsIfCmtsUpChnlCtrExtCollCntnMslots,
            docsIfCmtsUpChnlCtrExtTotalCntnReqMslots,
            docsIfCmtsUpChnlCtrExtUsedCntnReqMslots,
            docsIfCmtsUpChnlCtrExtCollCntnReqMslots,
            docsIfCmtsUpChnlCtrExtTotalCntnReqDataMslots,
            docsIfCmtsUpChnlCtrExtUsedCntnReqDataMslots,
            docsIfCmtsUpChnlCtrExtCollCntnReqDataMslots,
            docsIfCmtsUpChnlCtrExtTotalCntnInitMaintMslots,
            docsIfCmtsUpChnlCtrExtUsedCntnInitMaintMslots,
            docsIfCmtsUpChnlCtrExtCollCntnInitMaintMslots,
            docsIfDownChannelStorageType,
            docsIfQosProfStorageType

        }
        STATUS      current
        DESCRIPTION
            "Group of objects implemented in Cable Modem Termination
             Systems."
        ::= { docsIfGroups 7 }

   END

5. Revision History โœจ

5.1. Scope ๐ŸŽ€

okay so this MIB module was built to cover DOCSIS 2.0 devices and what their systems can actually do ๐Ÿซถ It's an update to RFC 2670 [RFC2670], and it also brings in the DOCSIS 2.0 [RFI2.0] and the Euro-DOCSIS specification requirements [EN-300-429]. the whole vibe is upgrade with receipts ๐Ÿ’…

5.2. Extension ๐Ÿฆ‹

we kept every MIB object exactly as RFC 2670 [RFC2670] defined it, no drama ๐Ÿ™ˆ some objects got new siblings with the same functionality but more room, going from 32 to 64 bits ๐Ÿ“ˆ for those, both the original 32 bit objects and the new 64 bit objects must be implemented. so don't skip either one, bestie ๐Ÿ’œ

6. Security Considerations ๐Ÿ”

Okay bestie, this MIB is all about metropolitan public internet access ๐ŸŒ†, so if someone messes with these objects the wrong way, it can cause denial of service for a lot of end-users ๐Ÿ˜ญ. Not a vibe.

Lots of the objects in here have a MAX-ACCESS of read-write or read-create โœ๏ธ. Those can be sensitive or vulnerable depending on the network. If you allow SET operations in a non-secure environment without proper protection, it can really mess up network operations ๐Ÿ’€.

The CMTS is basically the controller for most of the DOCSIS RFI Interface parameters ๐Ÿ‘‘, so write access to the CMTS MIB objects could absolutely ruin an end-user's services.

On the CM side, the only read-write object in this MIB is docsIfCmRangingTimeout ๐ŸŽ€. If someone SETs it maliciously, it probably won't be a major service degradation problem. The rest of the CM-required objects are read-only, either by definition or because of compliance statements ๐Ÿซถ.

The CMTS is still the controller for most DOCSIS RFI Interface parameters, so here are the CMTS vulnerabilities:

  • Objects in the docsIfBasicGroupv2 can cause a denial of service if they get SET maliciously ๐Ÿ˜ค. The big ones are SETs to objects in docsIfDownstreamChannelTable, docsIfUpstreamChannelTable, docsIfCmtsModulationTable, and docsIfQosProfileTable (the last one only together with docsIfCmtsQosProfilePermissions). Those can negatively alter the physical and link layer parameters of upstream and downstream channels ๐Ÿ“ก.
  • The object docsIfCmtsServiceAdminStatus in the docsIfCmtsGroupv2 group is a big deal too. If an attacker SETs it to 'disabled' or 'destroyed', it will interrupt the service of the corresponding cable modem ๐Ÿšซ.

Some readable objects (anything with a MAX-ACCESS other than not-accessible) can also be sensitive or vulnerable in some networks ๐Ÿ‘€. So it's important to control even GET and/or NOTIFY access to them, and possibly even encrypt their values when they travel over the network via SNMP ๐Ÿ”’. Here are the sensitivity considerations:

  • Reading the objects in docsIfCmStatusTable (CM), docsIfSignalQualityTable (CM/CMTS), and the CMTS tables docsIfCmtsCmStatusTable, docsIfCmtsChannelUtilizationTable, docsIfCmtsDownChannelCounterTable, and docsIfCmtsUpChannelCounterTable could reveal how cable modems are distributed across upstream and downstream channels, plus how they're performing ๐Ÿ“Š. Attackers could use that to get into a different tiered service offer ๐Ÿ“. And docsIfCmtsCmStatusTable also holds the MAC and IP addresses of the cable modems, which can be used for theft of service ๐Ÿฅท.

SNMP versions before SNMPv3 didn't have 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 gets to access and GET/SET (read/change/create/delete) the objects in this MIB module ๐Ÿ˜ฌ.

It is RECOMMENDED that implementers look at the security features provided by the SNMPv3 framework (see [RFC3410], section 8) ๐Ÿ›ก๏ธ, including full support for the SNMPv3 cryptographic mechanisms for authentication and privacy ๐Ÿ”โœจ.

Also, deploying SNMP versions before SNMPv3 is NOT RECOMMENDED ๐Ÿ™…โ€โ™€๏ธ. Instead, it is RECOMMENDED to deploy SNMPv3 and turn on cryptographic security. It's then the customer or operator's job to make sure the SNMP entity that gives access to this MIB module is configured so only the principals (users) with legitimate rights can GET or SET (change/create/delete) those objects ๐Ÿ‘‘๐Ÿ’….


7. Management Interoperability of DOCSIS 1.0, 1.1, and 2.0 ๐ŸŽ€

Okay so the MIB module in this document updates RFC 2670 [RFC2670] ๐Ÿ”„, mainly to handle the management requirements of the DOCSIS RF Interface for DOCSIS 2.0 [ITU-T_J.122] ๐Ÿฆ‹. RFC 2670 is where the DOCSIS RF Interface management requirements for DOCSIS 1.0 and DOCSIS 1.1 live ๐ŸŒธ.

For Class of Service (DOCSIS 1.0), the management requirements that pertain to RFC 2670 are the same as this document's update ๐Ÿ’œ. They're contained in the tables docsIfQosProfileTable, docsIfCmServiceTable, and docsIfCmtsServiceTable โœจ.

DOCSIS 1.1 and DOCSIS 2.0 Quality of Service management requirements are defined in the DOCSIS management specifications [OSSI1.1] and [OSSI2.0], respectively ๐Ÿ“š.


8. References ๐Ÿ“–

8.1. Normative References

  • [EN-300-429] European Telecommunications Standard Institute, "ETSI Standard EN 300 429, Version 1.2.1: Digital Video Broadcasting (DVB), Framing structure, channel coding and modulation for cable systems", April 1998.
  • [IANA] Internet Assigned Numbers Authority, "Internet Assigned Numbers Authority", October 2005, <http://www.iana.org/assignments/ianaiftype-mib/>.
  • [ITU-T_J.112] Telecommunication Standardization Sector of International Telecommunications Union, "Transmission Systems for Interactive Cable Television Services, Annex B.", March 2001, <http://www.itu.int/ITU-T/studygroups/com09/>.
  • [ITU-T_J.122] Telecommunication Standardization Sector of International Telecommunications Union, "Second-Generation Transmission Systems for Interactive Cable Television Services.", December 2002, <http://www.itu.int/ITU-T/studygroups/com09/>.
  • [ITU-T_J.83] Telecommunication Standardization Sector of International Telecommunications Union, "ITU-T Recommendation J.83(4/97), Digital multi-programme systems for television sound and data services for cable distribution.", April 1997, <http://www.itu.int/ITU-T/studygroups/com09/>.
  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [RFC2578] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999.
  • [RFC2579] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999.
  • [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999.
  • [RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000.
  • [RFC4001] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 4001, February 2005.
  • [RFI1.1] CableLabs, "Data-Over-Cable Service Interface Specifications: Radio Frequency Interface Specification SP-RFIv1.1-C01-050907", September 2005, <http://www.cablemodem.com/specifications/>.
  • [RFI2.0] CableLabs, "Data-Over-Cable Service Interface Specifications: Radio Frequency Interface Specification SP-RFIv2.0-I09-050812", August 2005, <http://www.cablemodem.com/specifications/>.

8.2. Informative References

  • [BPI] SCTE Data Standards Subcommittee, "Data-Over-Cable Service Interface Specifications: DOCSIS 1.0 Baseline Privacy Interface Specification SCTE 22-2 2002", 2002, <http://www.scte.org/standards/>.
  • [BPIPLUS] CableLabs, "Data-Over-Cable Service Interface Specifications: Baseline Privacy Plus Interface Specification SP-BPI+-I12-050812", August 2005, <http://www.cablemodem.com/specifications/>.
  • [OSSI1.1] CableLabs, "Data-Over-Cable Service Interface Specifications: Operations Support System Interface Specification SP-OSSIv1.1-C01-050907", September 2005, <http://www.cablemodem.com/specifications/>.
  • [OSSI2.0] CableLabs, "Data-Over-Cable Service Interface Specifications: Operations Support System Interface Specification SP-OSSIv2.0-I09-050812", September 2005, <http://www.cablemodem.com/specifications/>.
  • [Proakis00] McGraw-Hill, "Digital Communications, 4th Edition", 2000.
  • [RFC2670] St. Johns, M., "Radio Frequency (RF) Interface Management Information Base for MCNS/DOCSIS compliant RF interfaces", RFC 2670, August 1999.
  • [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
  • [RFI1.0] SCTE Data Standards Subcommittee, "Data-Over-Cable Service Interface Specifications: DOCSIS 1.0 Radio Frequency Interface Specification SCTE 22-1 2002", 2002, <http://www.scte.org/standards/>.

Authors' Addresses ๐Ÿ’Œ

David Raftus
ATI Technologies
340 Terry Fox Drive, Suite 202
Ottawa, Ontario
Canada

Phone: +1 613 592 1052 ext.222
EMail: david.raftus@ati.com


Eduardo Cardona
Cable Television Laboratories, Inc.
858 Coal Creek Circle
Louisville, CO  80020
USA

Phone: +1 303 661 3375
EMail: e.cardona@cablelabs.com

Copyright (C) The Internet Society (2006) ๐Ÿ’–.

Here's the legal text, kept exactly as written:

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM 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.

Intellectual Property ๐Ÿง 

So the IETF doesn't take a position on whether any Intellectual Property Rights (or other rights) that someone might claim for this tech are valid or in scope ๐Ÿคทโ€โ™€๏ธ. It also doesn't say whether a license would be available, and it hasn't checked for any rights itself. If you want the rules around rights in RFC documents, look at BCP 78 and BCP 79 ๐Ÿ“œ.

Copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses that will be available, and the results of any attempt to get a general license or permission for implementers or users are all on the IETF online IPR repository at http://www.ietf.org/ipr ๐Ÿ”.

The IETF also invites anyone to flag copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard ๐Ÿ™Œ. Send that info to the IETF at ietf-ipr@ietf.org ๐Ÿ’Œ.

Acknowledgement โœจ

okay bestie, last stop ๐ŸŽ€ the RFC Editor function gets its funding from the IETF Administrative Support Activity (IASA) ๐Ÿ’– so that's who keeps the lights on for the people running the RFC Editor. no cap, that's the whole thing ๐Ÿซถ๐ŸŒธ

๐Ÿ“ฆ where this page comes from