RFC 1407

Definitions of Managed Objects for the DS3/E3 Interface Type

πŸ“… published January 1993, from ietf

RFC 1407: Definitions of Managed Objects for the DS3/E3 Interface Type πŸ’–

Okay bestie, meet RFC 1407 πŸŽ€ It's called Definitions of Managed Objects for the DS3/E3 Interface Type, and it was published in January 1993. The editors are T. Cox and K. Tesink, both from Bell Communications Research. It's an IAB standards track protocol, and it obsoletes RFC 1233 (no updates, just a clean replacement) πŸ¦‹


Status of This Memo ✨

This RFC is an IAB standards track protocol for the Internet community, and the authors are asking for discussion and suggestions for improvements 🫢 For the current standardization state and status of this protocol, check the current edition of the "IAB Official Protocol Standards." Distribution of this memo is unlimited 🌈

Abstract 🌸

This memo adds an extension to the Management Information Base (MIB) for use with network management protocols in TCP/IP-based internets. Specifically, it defines objects for managing DS3 and E3 Interfaces πŸ’… It's a companion to the Definitions of Managed Objects for the DS1 Interface Type, so they're a whole set.

This document completely replaces RFC 1233, and honestly that one had a fundamental error 😭 Lots of objects were encoded as Counters when they should have been INTEGERs or Gauges. The fix was so big that basically every object changed, so the MIB in RFC 1233 should not be implemented πŸ’€

Table of Contents 🧚

   1. The Network Management Framework ......................    2
   2. Objects ...............................................    2
   2.1 Format of Definitions ................................    3
   2.2 Changes from RFC 1233 ................................    3
   3. Overview ..............................................    5
   3.1 Binding between ifIndex and DS3/E3 Interfaces ........    5
   3.2 Objectives of this MIB Module ........................    7
   3.3 DS3/E3 Terminology ...................................    7
   3.3.1 Error Events .......................................    7
   3.3.2 Performance Parameters .............................    8
   3.3.3 Performance Defects ................................   10
   3.3.4 Other Terms ........................................   11
   4. Object Definitions ....................................   12
   4.1 The DS3/E3 Near End Group ............................   12
   4.1.1 The DS3/E3 Configuration ...........................   12
   4.1.2 The DS3/E3 Current .................................   18
   4.1.3 The DS3/E3 Interval ................................   21
   4.1.4 The DS3/E3 Total ...................................   25
   4.2 The DS3 Far End Group ................................   29
   4.2.1 The DS3 Far End Configuration ......................   29
   4.2.2 The DS3 Far End Current ............................   31
   4.2.3 The DS3 Far End Interval ...........................   34
   4.2.4 The DS3 Far End Total ..............................   36
   4.3 The DS3/E3 Fractional Group ..........................   38
   5. Acknowledgments .......................................   41
   6. References ............................................   41
   7. Security Considerations ...............................   43
   8. Authors' Addresses ....................................   43

1. The Network Management Framework πŸ¦‹

The Internet-standard Network Management Framework is made of three pieces, and they're all a vibe together ✨

  • STD 16/RFC 1155 defines the SMI, which is how objects get described and named for management. STD 16/RFC 1212 adds a more concise way to describe them, and it's totally consistent with the SMI πŸ’…
  • RFC 1156 defines MIB-I, the core set of managed objects for the Internet suite of protocols. STD 17/RFC 1213 defines MIB-II, which is MIB-I level up, built on real implementation experience and new operational needs 🌸
  • STD 15/RFC 1157 defines SNMP, the protocol used for network access to managed objects πŸ”₯

The Framework also lets people define new objects for experimentation and evaluation, so there's room to play πŸ§ͺ

2. Objects 🧚

Managed objects live in a virtual information store called the Management Information Base, or MIB πŸ’œ Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [7] that the SMI allows. Every object has a name, a syntax, and an encoding. The name is an object identifier, an administratively assigned name that says which object type it is. The object type together with an object instance uniquely identifies one specific instance of that object. For human convenience, we often use a text string called the OBJECT DESCRIPTOR to refer to the object type too πŸŽ€

The syntax of an object type is the abstract data structure for that type, and it's written in ASN.1. The SMI [3] deliberately restricts which ASN.1 constructs you're allowed to use, and that's on purpose: it's all about keeping things simple 🫢

The encoding of an object type is how that type gets represented using its syntax. Tied right in with syntax and encoding is how the type is represented when it's sent over the network. The SMI says to use the basic encoding rules of ASN.1 [8], with the extra requirements that SNMP adds 🌈

2.1. Format of Definitions πŸ“œ

Section 4 holds the specification of every object type in this MIB module. The object types follow the conventions from the SMI, as extended by the extensions in STD 16, RFC 1212 [13] πŸ’–

2.2. Changes from RFC 1233 πŸ”₯

This MIB obsoletes RFC 1233, and here's the full tea on what changed:

  • It now contains information for managing an E3 interface too 🌍
  • It has three groups: the DS3/E3 Near End Group (mandatory), the DS3 Far End Group (optional), and the DS3 Fractional Group (optional) 🧩
  • The DS3 Far End Group is brand new, and it holds configuration info and statistics collected from the far end DS3/E3 interface. Right now, only DS3 systems using C-bit Parity or SYNTRAN can implement it πŸ¦‹
  • The DS3 Fractional Group is also new, and it's modeled after the DS1 Fractional Group πŸ’…
  • ds3CSUIndex got redefined and renamed to dsx3LineIndex. It's the identifier of a DS3/E3 Interface on a device. On a CSU, one DS3/E3 data stream crosses two DS3/E3 interfaces, and those have separate dsx3LineIndex values πŸ‘‘
  • ds3Index got redefined and renamed to dsx3IfIndex. Its value equals the value of ifIndex from the Interfaces table of MIB II (STD 17, RFC 1213) ✨
  • The ACCESS for objects in the dsx3ConfigTable is now read-write for the items that are configurable πŸ› οΈ
  • dsx3ZeroCoding got renamed to dsx3LineCoding 🌸
  • There's a new object called dsx3LoopbackConfig, which describes the loopback capabilities of a DS3/E3 interface on a device better πŸ”
  • The dsx3SendCode object got updated to reflect different types of loopback messages πŸ“¨
  • There's a new object called dsx3LineStatus. It describes the status of a DS3/E3 interface better, like its failure state and loopback state 🚦
  • There's a new object called dsx3TransmitClockSource, which identifies the source for the transmit clock ⏱️
  • All Counters got changed to Gauges πŸ“Š
  • A Line Errored Seconds object got added to all near end tables 🧾
  • Line Coding Violations get counted instead of Bipolar Violations πŸ”’
  • There's a new Coding Violation counter for coding violations reported through the C-bits of SYNTRAN and C-bit Parity DS3 applications. The original Coding Violation counter got renamed to PCV, meaning coding violations reported via the P-bits. This count was also added for symmetry with the far end statistics 🧠
  • There's a new Errored Second counter and a new Severely Errored Second counter for performance events reported through the C-bits of the SYNTRAN and C-bit Parity DS3 applications. The original ES and SES counters got renamed to PES and PSES, meaning they're reported via the P-bits. These counts were also added for symmetry with the far end statistics πŸ₯Ή

3. Overview 🌟

These objects get used when the media realizing an interface is a DS3/E3 interface. For now, that applies to this value of the ifType variable in the Internet-standard MIB:

               ds3 (30)

The DS3 definitions in this document are based on the DS3 specifications in ANSI T1.102-1987, ANSI T1.107-1988, ANSI T1.107a-1990, and ANSI T1.404-1989 [9,10,10a,11]. The E3 definitions are based on the E3 specifications in CCITT G.751 [14] πŸŽ€

(Part 1 of 8 done! More coming soon πŸ’–)

3.1. Binding between ifIndex and DS3/E3 Interfaces ✨

Okay so DS3/E3 gear can be set up a bunch of different physical ways when it comes to running SNMP πŸŽ€. To handle all of those, this MIB introduces two different indices for DS3/E3 interfaces: dsx3IfIndex and dsx3LineIndex πŸ’–.

External interface scenario: the SNMP Agent represents all managed DS3/E3 lines as external interfaces. An example is an Agent sitting right on the device that supports the DS3/E3 interfaces πŸ¦‹.

For this scenario, every interface gets an integer value equal to ifIndex, and this is the rule:

          ifIndex=dsx3IfIndex=dsx3LineIndex for all interfaces.

The dsx3IfIndex column of the DS3/E3 Configuration table links each DS3/E3 interface to its matching interface (ifIndex) in the Internet-standard MIB (MIB-II STD 17, RFC 1213) 🧚.

External&Internal interface scenario: the SNMP Agent lives on a host that's separate from the device supporting the DS3/E3 interfaces (for example, a router). The Agent represents both the host and the DS3/E3 device πŸ‘‘. Here the index dsx3LineIndex is used to represent the DS3/E3 interfaces outside the host/DS3/E3-device combo, and also the DS3/E3 interfaces that connect the host and the DS3/E3 device. The index dsx3IfIndex is always equal to ifIndex πŸ’….

Example time πŸ“:

A shelf full of CSUs is connected to a router. An SNMP Agent on the router proxies for itself and for the CSU. The router also has an Ethernet interface 🌈:

          +-----+
    |     |     |
    |     |     |               +---------------------+
    |E    |     |  44.736 MBPS  |   ds3 M13    Line#A | ds3 C-bit Parity
    |t    |  R  |---------------+ - - - - -  - - -  - +------>
    |h    |     |               |                     |
    |e    |  O  |  44.736 MBPS  |   ds3 M13    Line#B | ds3 C-bit Parity
    |r    |     |---------------+ - - - - - - - - - - +------>
    |n    |  U  |               |                     |
    |e    |     |  44.736 MBPS  |   ds3 M13    Line#C | ds3 C-bit Parity
    |t    |  T  |---------------+ - - - -- -- - - - - +------>
    |     |     |               |                     |
    |-----|  E  |  44.736 MBPS  |   ds3 M13    Line#D | ds3 C-bit Parity
    |     |     |---------------+ -  - - - -- - - - - +------>
    |     |  R  |               |_____________________|
    |     |     |
    |     +-----+

Here's how the index values could be assigned:

            ifIndex (= dsx3IfIndex)                     dsx3LineIndex

                    1                   NA                  NA (Ethernet)
                    2      Line#A   Router Side             6
                    2      Line#A   Network Side            7
                    3      Line#B   Router Side             8
                    3      Line#B   Network Side            9
                    4      Line#C   Router Side            10
                    4      Line#C   Network Side           11
                    5      Line#D   Router Side            12
                    5      Line#D   Network Side           13

In this example, ifNumber is equal to 5 πŸŽ€. Now, the important bit about dsx3LineIndex: it identifies a DS3/E3 interface on a managed device. If there's an ifEntry that's directly associated with this one DS3/E3 interface and no other, it should have the same value as ifIndex. Otherwise, you number the dsx3LineIndex values with a unique identifier, following these rules: pick a number greater than ifNumber, use even numbers for interfaces on the equipment side (for example, the router side), and use odd numbers for interfaces on the outside (for example, the network side) πŸ™ˆ.

If the CSU shelf is managed by itself through a local SNMP Agent, the situation looks like this 🌸:

            ifIndex (= dsx3IfIndex)                      dsx3LineIndex

                    1      Line#A     Network Side            1
                    2      Line#A     RouterSide              2
                    3      Line#B     Network Side            3
                    4      Line#B     RouterSide              4
                    5      Line#C     Network Side            5
                    6      Line#C     Router Side             6
                    7      Line#D     Network Side            7
                    8      Line#D     Router Side             8

3.2. Objectives of this MIB Module ✨

There are a ton of things that could go into a MIB for DS3/E3 signals: managing multiplexors, CSUs, DSUs, and the like 🧠. The goal of this document is to make it easy to manage all devices with DS3/E3 interfaces together. So from the start, the team made a deliberate choice to line the MIB up very closely with the set of objects you can generally read from the DS3/E3 devices that are out in the world right now πŸ’œ.


3.3. DS3/E3 Terminology πŸ’…

The terminology this document uses to describe error conditions on a DS3 interface, as seen by a DS3 device, is based on the definitions from the ANSI T1M1.3/92-005R1 draft standard [12] πŸ“š. If a definition in this document doesn't match the definition in the ANSI T1M1.3/92-005R1 draft document, the implementer should follow the definition described in this document ⭐.


3.3.1. Error Events πŸ’€

Bipolar Violation (BPV) Error Event 🌸: For B3ZS(HDB3)-coded signals, a BPV is a pulse with the same polarity as the previous pulse, and that pulse isn't part of the zero substitution code, B3ZS(HDB3). For those same B3ZS(HDB3)-coded signals, a bipolar violation error event may also include other error patterns, such as three(four) or more consecutive zeros and incorrect polarity.

Excessive Zeros (EXZ) Error Event πŸ¦‹: An EXZ happens when any zero string has a length equal to or greater than 3 for B3ZS, or greater than 4 for HDB3.

Line Coding Violation (LCV) Error Event πŸŽ€: This parameter counts both BPVs and EXZs that happen over the accumulation period. An EXZ increments the LCV by one, no matter how long the zero string is.

P-bit Coding Violation (PCV) Error Event πŸ“: For all DS3 applications, a coding violation error event is a P-bit Parity Error event. A P-bit Parity Error event happens when a received P-bit code on the DS3 M-frame isn't identical to the corresponding locally-calculated code.

C-bit Coding Violation (CCV) Error Event 🧚: For C-bit Parity and SYNTRAN DS3 applications, this is the count of coding violations reported via the C-bits. For C-bit Parity, it counts CP-bit parity errors that happen in the accumulation interval. For SYNTRAN, it counts CRC-9 errors that happen in the accumulation interval πŸ’–.


3.3.2. Performance Parameters πŸ“Š

All performance parameters are accumulated in fifteen minute intervals, and an agent keeps up to 96 intervals (that's 24 hours' worth) πŸ•°οΈ. If the agent has been restarted within the last 24 hours, there will be fewer than 96 intervals of data available. On top of that, there's a rolling 24-hour total for each performance parameter 🌈.

There is no requirement for an agent to keep a fixed relationship between the start of a fifteen minute interval and any wall clock. However, some agents may line up the fifteen minute intervals with quarter hours ⏰.

Line Errored Seconds (LES) 🫢: A Line Errored Second is a second in which one or more CVs occurred OR one or more LOS defects.

P-bit Errored Seconds (PES) 🌷: A PES is a second with one or more PCVs OR one or more Out of Frame defects OR a detected incoming AIS. This gauge is not incremented when UASs are counted.

P-bit Severely Errored Seconds (PSES) πŸ”₯: A PSES is a second with 44 or more PCVs OR one or more Out of Frame defects OR a detected incoming AIS. This gauge is not incremented when UASs are counted.

C-bit Errored Seconds (CES) 🍭: A CES is a second with one or more CCVs OR one or more Out of Frame defects OR a detected incoming AIS. This count is only for the SYNTRAN and C-bit Parity DS3 applications. This gauge is not incremented when UASs are counted.

C-bit Severely Errored Seconds (CSES) πŸ’œ: A CSES is a second with 44 or more CCVs OR one or more Out of Frame defects OR a detected incoming AIS. This count is only for the SYNTRAN and C-bit Parity DS3 applications. This gauge is not incremented when UASs are counted.

Severely Errored Framing Seconds (SEFS) 🫧: A SEFS is a second with one or more Out of Frame defects OR a detected incoming AIS.

Unavailable Seconds (UAS) 🚫: UAS are worked out by counting the number of seconds the interface is unavailable. The DS3 interface is said to be unavailable from the onset of 10 contiguous PSESs, or from the onset of the condition that leads to a failure (see Failure States). If the condition that leads to the failure was immediately preceded by one or more contiguous PSESs, then the DS3 interface unavailability starts from the onset of those PSESs. Once it's unavailable, and if no failure is present, the DS3 interface becomes available at the onset of 10 contiguous seconds with no PSESs. Once it's unavailable, and if a failure is present, the DS3 interface becomes available at the onset of 10 contiguous seconds with no PSESs, as long as the failure clearing time is less than or equal to 10 seconds. If the failure clearing time is more than 10 seconds, the DS3 interface becomes available at the onset of 10 contiguous seconds with no PSESs, or at the onset of the period leading to the successful clearing condition, whichever happens later. With respect to the DS3 error counts, all counters are incremented while the DS3 interface is deemed available. While the interface is deemed unavailable, the only count that gets incremented is UASs 😭.

Heads up, this one's a tricky special case πŸ‘€. It happens when the 10 or more second period crosses the 900 second statistics window boundary. The description above implies that the PSES and UAS counters must be adjusted when the Unavailable Signal State is entered. Clearly, successive GETs of the affected dsx3IntervalPSESs and dsx3IntervalUASs objects will return differing values if the first GET happens during the first few seconds of the window. This is viewed as an unavoidable side-effect of selecting the presently defined managed objects as a basis for this memo πŸ™ƒ.

3.3.3. Performance Defects ✨

Okay bestie, this is where the failure states live, and they are dramatic 😭 Let's go through them one by one.

Failure States:

The Remote Alarm Indication (RAI) failure is the one to watch out for. In SYNTRAN applications it gets declared after the Yellow Alarm Signal shows up on the alarm channel. See ANSI T1.107a-1990 [10]. In C-bit Parity DS3 applications it's way quicker: the RAI failure is declared as soon as one or two alarm signals are detected on the Far End Alarm Channel. See [10]. It can also be declared after detecting the far-end SEF/AIS defect (aka yellow) 🫢. The RAI failure is cleared as soon as all of the above alarms are gone. 🧚

Now the incoming failure state πŸ”₯. It gets declared when a defect sticks around for at least 2-10 seconds. The defects that count are Loss of Signal (LOS), an Out of Frame (OOF), or an incoming Alarm Indication Signal (AIS). The failure state is cleared when the defect is absent for less than or equal to 20 seconds. Patience, but not too much patience πŸ’…

Far End SEF/AIS defect (aka yellow)

A Far End SEF/AIS defect happens when the two X-bits in an M-frame are both set to zero. It ends when the two X-bits in an M-frame are set back to one. That's it, that's the whole drama 🌸

Out of Frame (OOF) defect

For DS3, an OOF defect is detected when any three or more errors show up in sixteen or fewer consecutive F-bits within a DS3 M-frame. ✨ It may also be called a Severely Errored Frame (SEF) defect. It gets cleared when reframe occurs. A DS3 Loss of Frame (LOF) failure is declared when the DS3 OOF defect is consistent for 2 to 10 seconds. The DS3 OOF defect ends when reframe occurs, and the DS3 LOF failure is cleared when the DS3 OOF defect is absent for 10 to 20 seconds. πŸ¦‹

For E3, an OOF defect is detected when four consecutive frame alignment signals are received incorrectly in their predicted positions in an E3 signal. E3 frame alignment happens when three consecutive frame alignment signals have been detected. Honestly, the E3 side is so precise it's giving clockwork πŸŽ€

Loss of Signal (LOS) defect

The DS3 LOS defect is declared when you observe 175 +/- 75 contiguous pulse positions with no pulses of either positive or negative polarity. 😭 It's terminated when you observe an average pulse density of at least 33% over a period of 175 +/- 75 contiguous pulse positions, starting with the receipt of a pulse. Quiet for a while, then back to life 🌈

Alarm Indication Signal (AIS) defect

This one is so specific I'm obsessed πŸ™ˆ The DS3 AIS is framed with "stuck stuffing." That means it has valid M-subframe alignment bits, M-frame alignment bits, and P bits. The information bits are set to a 1010... sequence, starting with a one (1) after each M-subframe alignment bit, M-frame alignment bit, X bit, P bit, and C bit. All the C bits are set to zero, which is where "stuck stuffing" comes from, and the X bits are set to one. πŸ’œ

The DS3 AIS defect is declared after DS3 AIS is present in contiguous M-frames for a time equal to or greater than T, where 0.2 ms <= T <= 100 ms. It's terminated after AIS is absent in contiguous M-frames for a time equal to or greater than T. ✨

For E3, the binary content of the AIS is nominally a continuous stream of ones. AIS detection and the consequent actions should be completed within a time limit of 1 ms. Fast and furious, iconic ⭐


3.3.4. Other Terms

Circuit Identifier

This is a character string specified by the circuit vendor. It's useful when you're talking to the vendor during troubleshooting, so keep it handy πŸ“


4. Object Definitions πŸ’–

Okay, the MIB module is up next, and I need you to pay attention to the indentation because it's giving chaos. 🧚 Here's the whole thing, copied exactly:

               RFC1407-MIB DEFINITIONS ::= BEGIN

               IMPORTS
                       Gauge
                               FROM RFC1155-SMI
                       DisplayString, transmission
                               FROM RFC1213-MIB
                       OBJECT-TYPE
                               FROM RFC-1212;

               -- This MIB module uses the extended OBJECT-TYPE macro
               -- as defined in RFC 1212.

                       ds3  OBJECT IDENTIFIER ::= { transmission 30 }


               -- The DS3/E3 Near End Group

               -- Implementation of this group is mandatory for all
               -- systems that attach to a DS3/E3 Interface.

               -- The DS3/E3 Near End Group consists of four tables:
               --    DS3/E3 Configuration
               --    DS3/E3 Current
               --    DS3/E3 Interval
               --    DS3/E3 Total

               -- the DS3/E3 Configuration

               dsx3ConfigTable OBJECT-TYPE
                   SYNTAX  SEQUENCE OF Dsx3ConfigEntry
                   ACCESS  not-accessible
                   STATUS  mandatory
                   DESCRIPTION
                           "The DS3/E3 Configuration table."
                  ::= { ds3 5 }

              dsx3ConfigEntry OBJECT-TYPE
                  SYNTAX  Dsx3ConfigEntry
                  ACCESS  not-accessible
                  STATUS  mandatory
                  DESCRIPTION
                          "An entry in the DS3/E3 Configuration table."
                 INDEX   { dsx3LineIndex }
                 ::= { dsx3ConfigTable 1 }

             Dsx3ConfigEntry ::=
                 SEQUENCE {
                     dsx3LineIndex
                         INTEGER,
                     dsx3IfIndex
                         INTEGER,
                     dsx3TimeElapsed
                         INTEGER,
                     dsx3ValidIntervals
                         INTEGER,
                     dsx3LineType
                         INTEGER,
                     dsx3LineCoding
                         INTEGER,
                     dsx3SendCode
                         INTEGER,
                     dsx3CircuitIdentifier
                         DisplayString,
                     dsx3LoopbackConfig
                         INTEGER,
                     dsx3LineStatus
                         INTEGER,
                     dsx3TransmitClockSource
                         INTEGER
             }

             dsx3LineIndex OBJECT-TYPE
                 SYNTAX  INTEGER (1..65535)
                 ACCESS  read-only
                 STATUS  mandatory
                 DESCRIPTION
                         "This object is the identifier of a DS3/E3
                         Interface on a managed device.  If there is an
                         ifEntry that is directly associated with this
                         and only this DS3/E3 interface, it should have
                         the same value as ifIndex.  Otherwise, number
                         the dsx3LineIndices with an unique identifier
                         following the rules of choosing a number that
                         is greater than ifNumber and numbering the
                         inside interfaces (e.g., equipment side) with
                         even numbers and outside interfaces (e.g,
                         network side) with odd numbers."
                ::= { dsx3ConfigEntry 1 }

            dsx3IfIndex OBJECT-TYPE
                SYNTAX  INTEGER (1..65535)
                ACCESS  read-only
                STATUS  mandatory
                DESCRIPTION
                        "This value for this object is equal to the
                        value of ifIndex from the Interfaces table of
                        MIB II (RFC 1213)."
               ::= { dsx3ConfigEntry 2 }

           dsx3TimeElapsed OBJECT-TYPE
               SYNTAX  INTEGER (0..899)
               ACCESS  read-only
               STATUS  mandatory
               DESCRIPTION
                       "The number of seconds that have elapsed since
                       the beginning of the near end current error-
                       measurement period."
              ::= { dsx3ConfigEntry 3 }

          dsx3ValidIntervals OBJECT-TYPE
              SYNTAX  INTEGER (0..96)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of previous near end intervals for
                      which valid data was collected.  The value will be
                      96 unless the interface was brought online within
                      the last 24 hours, in which case the value will be
                      the number of complete 15 minute near end
                      intervals since the interface has been online."
              ::= { dsx3ConfigEntry 4 }

          dsx3LineType OBJECT-TYPE
              SYNTAX  INTEGER {
                          dsx3other(1),
                          dsx3M23(2),
                          dsx3SYNTRAN(3),
                          dsx3CbitParity(4),
                          dsx3ClearChannel(5),
                          e3other(6),
                          e3Framed(7),
                          e3Plcp(8)
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "This variable indicates the variety of DS3 C-bit
                      or E3 application
                      implementing this interface.  The type of
                      interface affects the interpretation of the
                      usage and error statistics.

                      The rate of DS3 is 44.736 Mbps and E3 is
                      34.368 Mbps.
                      The dsx3ClearChannel value means that the C-bits
                      are not used except for sending/receiving
                      AIS.

                      The values, in sequence, describe:

                      TITLE:            SPECIFICATION:
                      dsx3M23            ANSI T1.107-1988
                      dsx3SYNTRAN        ANSI T1.107-1988
                      dsx3CbitParity     ANSI T1.107a-1989
                      dsx3ClearChannel   ANSI T1.102-1987
                      e3Framed           CCITT G.751
                      e3Plcp             ETSI T/NA(91)18."
              ::= { dsx3ConfigEntry 5 }

          dsx3LineCoding OBJECT-TYPE
              SYNTAX  INTEGER {
                          dsx3Other(1),
                          dsx3B3ZS(2),
                          e3HDB3(3)
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "This variable describes the variety of Zero Code
                      Suppression used on this interface, which in turn
                      affects a number of its characteristics.

                      dsx3B3ZS and e3HDB3 refer to the use of specified
                      patterns of normal bits and bipolar violations
                      which are used to replace sequences of zero bits
                      of a specified length."
              ::= { dsx3ConfigEntry 6 }

          dsx3SendCode OBJECT-TYPE
                 SYNTAX  INTEGER {
                         dsx3SendNoCode(1),
                         dsx3SendLineCode(2),
                         dsx3SendPayloadCode(3),
                         dsx3SendResetCode(4),
                         dsx3SendDS1LoopCode(5),
                         dsx3SendTestPattern(6)
                         }
                 ACCESS  read-write
                 STATUS  mandatory
                 DESCRIPTION

The dsx3SendCode description is still going, so here we go, bestie πŸ’…

                      "This variable indicates what type of code is
                      being sent across the DS3/E3 interface by the
                      device.  (These are optional for E3 interfaces.)
                      The values mean:

                         dsx3SendNoCode
                             sending looped or normal data

                         dsx3SendLineCode
                             sending a request for a line loopback

                         dsx3SendPayloadCode
                             sending a request for a payload loopback
                             (i.e., all DS1/E1s in a DS3/E3 frame)

                         dsx3SendResetCode
                             sending a loopback deactivation request

                         dsx3SendDS1LoopCode
                             requesting to loopback a particular DS1/E1
                             within a DS3/E3 frame

                         dsx3SendTestPattern
                             sending a test pattern."
                 ::= { dsx3ConfigEntry 7 }

Okay so this one is about what kind of code the device is sending across the line πŸŽ€ The six values cover normal data, line loopback, payload loopback (all the DS1/E1s in a frame), loopback deactivation, a loopback on one particular DS1/E1, and a test pattern 🧚 And the parenthetical says the whole thing is optional for E3, so no pressure there ✨

          dsx3CircuitIdentifier OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..255))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                      "This variable contains the transmission vendor's
                      circuit identifier, for the purpose of
                      facilitating troubleshooting."
              ::= { dsx3ConfigEntry 8 }

          dsx3LoopbackConfig OBJECT-TYPE
                 SYNTAX  INTEGER {
                           dsx3NoLoop(1),
                           dsx3PayloadLoop(2),
                           dsx3LineLoop(3),
                           dsx3OtherLoop(4)
                         }
                 ACCESS  read-write
                 STATUS  mandatory
                 DESCRIPTION
                    "This variable represents the loopback configuration
                    of the DS3/E3 interface.

                    The values mean:

                    dsx3NoLoop
                      Not in the loopback state.  A device that is
                      not capable of performing a loopback on
                      the interface shall always return this as
                      it's value.

                    dsx3PayloadLoop
                      The received signal at this interface is looped
                      through the device.
                      Typically the received signal
                      is looped back for retransmission after it has
                      passed through the device's framing function.

                    dsx3LineLoop
                      The received signal at this interface does not
                      go through the device (minimum penetration) but
                      is looped back out.

                    dsx3OtherLoop
                      Loopbacks that are not defined here."
                 ::= { dsx3ConfigEntry 9 }

The circuit identifier is the transmission vendor's ID, and it's there to make troubleshooting easier πŸ“ Then dsx3LoopbackConfig tells you which loopback state the interface is in: no loop, payload loop, line loop, or some other loop. Quick tea: a device that can't do loopbacks has to keep reporting dsx3NoLoop, which is giving "I cannot, and I will say so" energy πŸ’€ πŸ™ˆ

          dsx3LineStatus OBJECT-TYPE
              SYNTAX  INTEGER (1..1023)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                 "This variable indicates the
                 Line Status of the interface.
                 It contains loopback state information
                 and failure state information.
                 The dsx3LineStatus is a bit map represented
                 as a sum, therefore,
                 it can represent multiple failures
                 and a loopback (see dsx3LoopbackConfig object
                 for the type of loopback)
                 simultaneously.
                 The dsx3NoAlarm should be set if and only if
                 no other flag is set.

                 The various bit positions are:
                    1     dsx3NoAlarm       No alarm present
                    2     dsx3RcvRAIFailure Receiving Yellow/Remote
                          Alarm Indication
                    4     dsx3XmitRAIAlarm Transmitting Yellow/Remote
                          Alarm Indication

                    8     dsx3RcvAIS        Receiving AIS failure state
                   16     dsx3XmitAIS       Transmitting AIS
                   32     dsx3LOF           Receiving LOF failure state
                   64     dsx3LOS           Receiving LOS failure state
                  128     dsx3LoopbackState Looping the received signal
                  256     dsx3RcvTestCode   Receiving a Test Pattern
                  512     dsx3OtherFailure any line status not defined
                          here"
              ::= { dsx3ConfigEntry 10 }

Okay, dsx3LineStatus is the bit-map queen πŸ‘‘ It's a sum of flags, so one value can show several failures and a loopback at the same time, which is lowkey iconic. The rule is that dsx3NoAlarm should be set if and only if no other flag is set, so it's the "all clear" bit and nothing else ✨ Each bit has its own vibe: RAI, AIS, LOF, LOS, loopback state, test pattern, and an "other" catch-all 🌈

          dsx3TransmitClockSource OBJECT-TYPE
              SYNTAX  INTEGER {
                          loopTiming(1),
                          localTiming(2),
                          throughTiming(3)
                      }
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                 "The source of Transmit Clock.
                 is derived from the recovered receive clock of
                 another DS3 interface."
              ::= { dsx3ConfigEntry 11 }


          -- the DS3/E3 Current

          -- The DS3/E3 current table contains various statistics being
          -- collected for the current 15 minute interval.

          dsx3CurrentTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3CurrentEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The DS3/E3 Current table."
              ::= { ds3 6 }

          dsx3CurrentEntry OBJECT-TYPE
              SYNTAX  Dsx3CurrentEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An entry in the DS3/E3 Current table."
              INDEX   { dsx3CurrentIndex }
              ::= { dsx3CurrentTable 1 }

          Dsx3CurrentEntry ::=
              SEQUENCE {
                  dsx3CurrentIndex
                      INTEGER,
                  dsx3CurrentPESs
                      Gauge,
                  dsx3CurrentPSESs
                      Gauge,
                  dsx3CurrentSEFSs
                      Gauge,
                  dsx3CurrentUASs
                      Gauge,
                  dsx3CurrentLCVs
                      Gauge,
                  dsx3CurrentPCVs
                      Gauge,
                  dsx3CurrentLESs
                      Gauge,
                  dsx3CurrentCCVs
                      Gauge,
                  dsx3CurrentCESs
                      Gauge,
                  dsx3CurrentCSESs
                      Gauge
              }

          dsx3CurrentIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3/E3 interface to which this entry is
                      applicable.  The interface identified by a
                      particular value of this index is the same
                      interface as identified by the same value an
                      dsx3LineIndex object instance."
              ::= { dsx3CurrentEntry 1 }

          dsx3CurrentPESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Errored Seconds, encountered by a DS3 interface in
                      the current 15 minute interval."
              ::= { dsx3CurrentEntry 2 }

          dsx3CurrentPSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Severely Errored Seconds, encountered by a DS3
                      interface in the current 15 minute interval."
              ::= { dsx3CurrentEntry 3 }

          dsx3CurrentSEFSs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Severely Errored Framing Seconds, encountered by a
                      DS3/E3 interface in the current 15 minute
                      interval."
              ::= { dsx3CurrentEntry 4 }

          dsx3CurrentUASs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Unavailable Seconds, encountered by a DS3
                      interface in the current 15 minute interval."
              ::= { dsx3CurrentEntry 5 }

          dsx3CurrentLCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of Line
                      Coding Violations encountered by a DS3/E3
                      interface in the current 15 minute interval."
              ::= { dsx3CurrentEntry 6 }

          dsx3CurrentPCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Coding Violations, encountered by a DS3 interface
                      in the current 15 minute interval."
              ::= { dsx3CurrentEntry 7 }

          dsx3CurrentLESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of Line Errored Seconds encountered by
                      a DS3/E3 interface in the current 15 minute
                      interval."
              ::= { dsx3CurrentEntry 8 }

          dsx3CurrentCCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Coding Violations encountered
                      by a DS3 interface in the current 15 minute
                      interval."
              ::= { dsx3CurrentEntry 9 }

          dsx3CurrentCESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Errored Seconds encountered
                      by a DS3 interface in the current 15 minute
                      interval."
              ::= { dsx3CurrentEntry 10 }

          dsx3CurrentCSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Severely Errored Seconds
                      encountered by a DS3 interface in the current 15
                      minute interval."
              ::= { dsx3CurrentEntry 11 }


          -- the DS3/E3 Interval

          -- The DS3/E3 Interval Table contains various statistics
          -- collected by each DS3/E3 Interface over the previous 24
          -- hours of operation.  The past 24 hours are broken into 96
          -- completed 15 minute intervals.

          dsx3IntervalTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3IntervalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The DS3/E3 Interval table."
              ::= { ds3 7 }

dsx3TransmitClockSource says the transmit clock can come from loop timing, local timing, or through timing, with the through option derived from another DS3 interface's recovered receive clock πŸ¦‹ Then we hit the Current table, which is basically a live scoreboard for the current 15-minute interval πŸ“Š It's full of counters like PESs, PSESs, SEFSs, UASs, LCVs, PCVs, LESs, CCVs, CESs, and CSESs, and each one is indexed by the DS3/E3 interface it belongs to πŸ’œ Literally a whole squad of stats, no cap ✨

Next up is the Interval table, which holds stats for the previous 24 hours, split into 96 completed 15-minute intervals 🌸 Its table is registered at { ds3 7 }, so the Interval entries are coming next 🫢

okay so this is where the 15-minute interval stats live, and it's giving very organized πŸ’…

          dsx3IntervalEntry OBJECT-TYPE
              SYNTAX  Dsx3IntervalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An entry in the DS3/E3 Interval table."
              INDEX   { dsx3IntervalIndex, dsx3IntervalNumber }
              ::= { dsx3IntervalTable 1 }

          Dsx3IntervalEntry ::=
              SEQUENCE {
                  dsx3IntervalIndex
                      INTEGER,
                  dsx3IntervalNumber
                      INTEGER,
                  dsx3IntervalPESs
                      Gauge,
                  dsx3IntervalPSESs
                      Gauge,
                  dsx3IntervalSEFSs
                      Gauge,
                  dsx3IntervalUASs
                      Gauge,
                  dsx3IntervalLCVs
                      Gauge,
                  dsx3IntervalPCVs
                      Gauge,
                  dsx3IntervalLESs
                      Gauge,
                  dsx3IntervalCCVs
                      Gauge,
                  dsx3IntervalCESs
                      Gauge,
                  dsx3IntervalCSESs
                      Gauge
              }

          dsx3IntervalIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3/E3 interface to which this entry is
                      applicable.  The interface identified by a
                      particular value of this index is the same
                      interface as identified by the same value an
                      dsx3LineIndex object instance."
              ::= { dsx3IntervalEntry 1 }

          dsx3IntervalNumber OBJECT-TYPE
              SYNTAX  INTEGER (1..96)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "A number between 1 and 96, where 1 is the most
                      recently completed 15 minute interval and 96 is
                      the least recently completed 15 minutes interval
                      (assuming that all 96 intervals are valid)."
              ::= { dsx3IntervalEntry 2 }

          dsx3IntervalPESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Errored Seconds, encountered by a DS3 interface in
                      one of the previous 96, individual 15 minute,
                      intervals."
              ::= { dsx3IntervalEntry 3 }

          dsx3IntervalPSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Severely Errored Seconds, encountered by a DS3
                      interface in one of the previous 96, individual 15
                      minute, intervals."
              ::= { dsx3IntervalEntry 4 }

          dsx3IntervalSEFSs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Severely Errored Framing Seconds, encountered by a
                      DS3/E3 interface in one of the previous 96,
                      individual 15 minute, intervals."
              ::= { dsx3IntervalEntry 5 }

          dsx3IntervalUASs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Unavailable Seconds, encountered by a DS3
                      interface in one of the previous 96, individual 15
                      minute, intervals."
              ::= { dsx3IntervalEntry 6 }

          dsx3IntervalLCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of Line
                      Coding Violations encountered by a DS3/E3
                      interface in one of the previous 96, individual 15
                      minute, intervals."
              ::= { dsx3IntervalEntry 7 }

          dsx3IntervalPCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Coding Violations, encountered by a DS3 interface
                      in one of the previous 96, individual 15 minute,
                      intervals."
              ::= { dsx3IntervalEntry 8 }

          dsx3IntervalLESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                   "The number of Line Errored  Seconds  (BPVs  or
                   illegal  zero  sequences) encountered by a DS3/E3
                   interface in one of the previous 96, individual
                   15 minute, intervals."
              ::= { dsx3IntervalEntry 9 }

          dsx3IntervalCCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Coding Violations encountered
                      by a DS3 interface in one of the previous 96,
                      individual 15 minute, intervals."
              ::= { dsx3IntervalEntry 10 }

          dsx3IntervalCESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Errored Seconds encountered
                      by a DS3 interface in one of the previous 96,
                      individual 15 minute, intervals."
              ::= { dsx3IntervalEntry 11 }

          dsx3IntervalCSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Severely Errored Seconds
                      encountered by a DS3 interface in one of the
                      previous 96, individual 15 minute, intervals."
              ::= { dsx3IntervalEntry 12 }

now we switch to the DS3/E3 Total table, which is basically the running 24-hour total of all those same stats πŸŽ€ the comments in the code below spill the tea on that, so read them first bestie 🫢

          -- the DS3/E3 Total

          -- The DS3/E3 Total Table contains the cumulative sum of the
          -- various statistics for the 24 hour period preceding the
          -- current interval.

          dsx3TotalTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3TotalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The DS3/E3 Total table.  24 hour interval."

              ::= { ds3 8 }

          dsx3TotalEntry OBJECT-TYPE
              SYNTAX  Dsx3TotalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An entry in the DS3/E3 Total table."
              INDEX   { dsx3TotalIndex }
              ::= { dsx3TotalTable 1 }

          Dsx3TotalEntry ::=
              SEQUENCE {
                  dsx3TotalIndex
                      INTEGER,
                  dsx3TotalPESs
                      Gauge,
                  dsx3TotalPSESs
                      Gauge,
                  dsx3TotalSEFSs
                      Gauge,
                  dsx3TotalUASs
                      Gauge,
                  dsx3TotalLCVs
                      Gauge,
                  dsx3TotalPCVs
                      Gauge,
                  dsx3TotalLESs
                      Gauge,
                  dsx3TotalCCVs
                      Gauge,
                  dsx3TotalCESs
                      Gauge,
                  dsx3TotalCSESs
                      Gauge
              }

          dsx3TotalIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3/E3 interface to which this entry is
                      applicable.  The interface identified by a
                      particular value of this index is the same
                      interface as identified by the same value an
                      dsx3LineIndex object instance."

              ::= { dsx3TotalEntry 1 }

          dsx3TotalPESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Errored Seconds, encountered by a DS3 interface in
                      the previous 24 hour interval"
              ::= { dsx3TotalEntry 2 }

          dsx3TotalPSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Severely Errored Seconds, encountered by a DS3
                      interface in the previous 24 hour interval."
              ::= { dsx3TotalEntry 3 }

          dsx3TotalSEFSs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Severely Errored Framing Seconds, encountered by a
                      DS3/E3 interface in the previous 24 hour
                      interval."
              ::= { dsx3TotalEntry 4 }

          dsx3TotalUASs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Unavailable Seconds, encountered by a DS3
                      interface in the previous 24 hour interval."
              ::= { dsx3TotalEntry 5 }

          dsx3TotalLCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION

                      "The counter associated with the number of Line
                      Coding Violations encountered by a DS3/E3
                      interface in the previous 24 hour interval."
              ::= { dsx3TotalEntry 6 }

          dsx3TotalPCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of P-bit
                      Coding Violations, encountered by a DS3 interface
                      in the previous 24 hour interval."
              ::= { dsx3TotalEntry 7 }

          dsx3TotalLESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                   "The number of Line Errored  Seconds  (BPVs  or
                   illegal  zero  sequences) encountered by a DS3/E3
                   interface in the previous 24 hour interval."
              ::= { dsx3TotalEntry 8 }

          dsx3TotalCCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Coding Violations encountered
                      by a DS3 interface in the previous 24 hour
                      interval."
              ::= { dsx3TotalEntry 9 }

more total-table goodies still to come πŸ‘€βœ¨

okay so the total counters keep going, bestie πŸ’…

          dsx3TotalCESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Errored Seconds encountered
                      by a DS3 interface in the previous 24 hour
                      interval."
              ::= { dsx3TotalEntry 10 }

          dsx3TotalCSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of C-bit Severely Errored Seconds
                      encountered by a DS3 interface in the previous 24
                      hour interval."
              ::= { dsx3TotalEntry 11 }

Now we're in the far end zone 🧚 πŸŽ€ The DS3 Far End Group is basically the stuff your far end sends back to you, and it's all in the MIB below. It's a whole group of four tables, and the comments are explicit that implementing it is optional for every system that attaches to a DS3 Interface. Also, only C-bit Parity and SYNTRAN DS3 applications have the capability to provide this info, so it's not a universal thing πŸ™ˆ

          -- The DS3 Far End Group

          -- Implementation of this group is optional for all systems
          -- that attach to a DS3 Interface.
          -- However, only C-bit Parity and SYNTRAN DS3 applications
          -- have the capability (option) of providing this information.

          -- The DS3 Far End Group consists of four tables:
          --   DS3 Far End Configuration
          --   DS3 Far End Current
          --   DS3 Far End Interval
          --   DS3 Far End Total


          -- The DS3 Far End Configuration Table contains
          -- configuration information
          -- reported in the C-bits from the remote end.

          dsx3FarEndConfigTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3FarEndConfigEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                 "The DS3 Far End Configuration table."
              ::= { ds3 9 }

          dsx3FarEndConfigEntry OBJECT-TYPE
              SYNTAX  Dsx3FarEndConfigEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                   "An entry in the DS3 Far End Configuration table."
              INDEX   { dsx3FarEndLineIndex }
              ::= { dsx3FarEndConfigTable 1 }

          Dsx3FarEndConfigEntry ::=
              SEQUENCE {
                  dsx3FarEndLineIndex
                      INTEGER,
                  dsx3FarEndEquipCode

                      DisplayString,
                  dsx3FarEndLocationIDCode
                      DisplayString,
                  dsx3FarEndFrameIDCode
                      DisplayString,
                  dsx3FarEndUnitCode
                      DisplayString,
                  dsx3FarEndFacilityIDCode
                      DisplayString
               }

          dsx3FarEndLineIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                   "The index value which uniquely identifies the
                   DS3 interface
                   to which this entry is applicable.  The
                   interface identified by a particular value of
                   this index is the same interface as identified
                   by the same value an dsx3LineIndex object
                   instance."
             ::= { dsx3FarEndConfigEntry 1 }

          dsx3FarEndEquipCode OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..10))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                    "This is the Far End Equipment Identification code
                    that describes the specific piece of equipment.
                    It is sent within the Path
                    Identification Message."
              ::= { dsx3FarEndConfigEntry 2 }

          dsx3FarEndLocationIDCode OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..11))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                    "This is the Far End Location Identification code
                    that describes the specific location of the
                    equipment.
                    It is sent within the Path
                    Identification Message."
              ::= { dsx3FarEndConfigEntry 3 }

          dsx3FarEndFrameIDCode OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..10))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                    "This is the Far End Frame Identification code
                    that identifies where the equipment is located
                    within a building at a given location.
                    It is sent within the Path
                    Identification Message."
              ::= { dsx3FarEndConfigEntry 4 }

          dsx3FarEndUnitCode OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..6))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                    "This is the Far End code
                    that identifies the equipment location within a bay.
                    It is sent within the Path
                    Identification Message."
              ::= { dsx3FarEndConfigEntry 5 }

          dsx3FarEndFacilityIDCode OBJECT-TYPE
              SYNTAX  DisplayString (SIZE (0..38))
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                    "This code identifies a specific Far End DS3 path.
                    It is sent within the Path
                    Identification Message."
              ::= { dsx3FarEndConfigEntry 6 }


          -- The DS3 Far End Current

          -- The DS3 Far End Current table contains various statistics
          -- being collected for the current 15 minute interval.
          -- The statistics are collected from the far end block error
          -- code within the C-bits.

          dsx3FarEndCurrentTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3FarEndCurrentEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The DS3 Far End Current table."
              ::= { ds3 10 }

          dsx3FarEndCurrentEntry OBJECT-TYPE
              SYNTAX  Dsx3FarEndCurrentEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An entry in the DS3 Far End Current table."
              INDEX   { dsx3FarEndCurrentIndex }
              ::= { dsx3FarEndCurrentTable 1 }

          Dsx3FarEndCurrentEntry ::=
              SEQUENCE {
                  dsx3FarEndCurrentIndex
                      INTEGER,
                  dsx3FarEndTimeElapsed
                      INTEGER,
                  dsx3FarEndValidIntervals
                      INTEGER,
                  dsx3FarEndCurrentCESs
                      Gauge,
                  dsx3FarEndCurrentCSESs
                      Gauge,
                  dsx3FarEndCurrentCCVs
                      Gauge,
                  dsx3FarEndCurrentUASs
                      Gauge
              }

           dsx3FarEndCurrentIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3 interface
                      to which this entry is applicable.  The interface
                      identified by a particular value of this index is
                      the same interface as identified by the same value
                      an dsx3LineIndex object instance."
              ::= { dsx3FarEndCurrentEntry 1 }

          dsx3FarEndTimeElapsed OBJECT-TYPE
              SYNTAX  INTEGER (0..899)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of seconds that have elapsed since the
                      beginning of the far end current error-measurement
                      period."

              ::= { dsx3FarEndCurrentEntry 2 }

          dsx3FarEndValidIntervals OBJECT-TYPE
              SYNTAX  INTEGER (0..96)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The number of previous far end intervals for
                      which valid data was collected.  The value will be
                      96 unless the interface was brought online within
                      the last 24 hours, in which case the value will be
                      the number of complete 15 minute far end intervals
                      since the interface has been online."
              ::= { dsx3FarEndCurrentEntry 3 }

          dsx3FarEndCurrentCESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of Far
                      Far End C-bit Errored Seconds encountered by a DS3
                      interface in the current 15 minute interval."
              ::= { dsx3FarEndCurrentEntry 4 }

          dsx3FarEndCurrentCSESs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Far End C-bit Severely Errored Seconds
                      encountered by a DS3 interface in the current 15
                      minute interval."
              ::= { dsx3FarEndCurrentEntry 5 }

          dsx3FarEndCurrentCCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Far End C-bit Coding Violations reported via
                      the far end block error count
                      encountered by a
                      DS3 interface in the current 15 minute interval."
              ::= { dsx3FarEndCurrentEntry 6 }

          dsx3FarEndCurrentUASs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Far End unavailable seconds
                      encountered by a
                      DS3 interface in the current 15 minute interval."
              ::= { dsx3FarEndCurrentEntry 7 }


          -- The DS3 Far End Interval

          -- The DS3 Far End Interval Table contains various statistics
          -- collected by each DS3 interface over the previous 24
          -- hours of operation.  The past 24 hours are broken into 96
          -- completed 15 minute intervals.

          dsx3FarEndIntervalTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3FarEndIntervalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                     "The DS3 Far End Interval table."
              ::= { ds3 11 }

          dsx3FarEndIntervalEntry OBJECT-TYPE
              SYNTAX  Dsx3FarEndIntervalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                    "An entry in the DS3 Far
                    End Interval table."
              INDEX   { dsx3FarEndIntervalIndex,
                        dsx3FarEndIntervalNumber }
              ::= { dsx3FarEndIntervalTable 1 }

          Dsx3FarEndIntervalEntry ::=
              SEQUENCE {
                   dsx3FarEndIntervalIndex
                        INTEGER,
                   dsx3FarEndIntervalNumber
                        INTEGER,
                   dsx3FarEndIntervalCESs
                        Gauge,
                   dsx3FarEndIntervalCSESs
                        Gauge,

                   dsx3FarEndIntervalCCVs
                        Gauge,
                   dsx3FarEndIntervalUASs
                        Gauge
              }

Okay bestie, we're picking up right in the middle of the MIB objects πŸ’– Here's the far end 15-minute interval stuff, which is literally giving "96 intervals of receipts" 🧾✨

          dsx3FarEndIntervalIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3 interface
                      to which this entry is applicable.  The
                      interface identified by a particular value of
                      this index is the same interface as identified
                      by the same value an dsx3LineIndex object
                      instance."
              ::= { dsx3FarEndIntervalEntry 1 }

          dsx3FarEndIntervalNumber OBJECT-TYPE
             SYNTAX  INTEGER (1..96)
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                    "A number between 1 and 96, where 1 is the most
                    recently completed 15 minute interval and 96 is
                    the least recently completed 15 minutes
                    interval (assuming that all 96 intervals are
                    valid)."
             ::= { dsx3FarEndIntervalEntry 2 }

          dsx3FarEndIntervalCESs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The counter associated with the number of
                      Far End C-bit Errored Seconds encountered
                      by a DS3 interface in one of the previous 96,
                      individual 15 minute, intervals."
            ::= { dsx3FarEndIntervalEntry 3 }

          dsx3FarEndIntervalCSESs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION

                     "The counter associated with the number of
                     Far End C-bit Severely Errored Seconds
                     encountered by a DS3 interface in one of the
                     previous 96, individual 15 minute, intervals."
            ::= { dsx3FarEndIntervalEntry 4 }

          dsx3FarEndIntervalCCVs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Far End C-bit Coding Violations reported via
                      the far end block error count
                      encountered by a
                      DS3 interface in one of the previous 96,
                      individual 15 minute, intervals."
              ::= { dsx3FarEndIntervalEntry 5 }

          dsx3FarEndIntervalUASs OBJECT-TYPE
              SYNTAX  Gauge
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The counter associated with the number of
                      Far End unavailable seconds
                      encountered by a
                      DS3 interface in one of the previous 96,
                      individual 15 minute, intervals."
              ::= { dsx3FarEndIntervalEntry 6 }

Now the 24-hour version, the Far End Total table πŸ•›πŸ’… It's the running total for the day before the current interval, so it's basically the group chat recap of the whole day πŸ“±πŸŒΈ

          -- The DS3 Far End Total

          -- The DS3 Far End Total Table contains the cumulative sum
          -- of the various statistics for the 24 hour period preceding
          -- the current interval.

          dsx3FarEndTotalTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3FarEndTotalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "The DS3 Far End Total table.  24 hour interval."
              ::= { ds3 12 }

          dsx3FarEndTotalEntry OBJECT-TYPE
              SYNTAX  Dsx3FarEndTotalEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                      "An entry in the DS3 Far End Total table."
              INDEX   { dsx3FarEndTotalIndex }
              ::= { dsx3FarEndTotalTable 1 }

          Dsx3FarEndTotalEntry ::=
              SEQUENCE {
                  dsx3FarEndTotalIndex
                      INTEGER,
                  dsx3FarEndTotalCESs
                      Gauge,
                  dsx3FarEndTotalCSESs
                      Gauge,
                  dsx3FarEndTotalCCVs
                      Gauge,
                  dsx3FarEndTotalUASs
                      Gauge
              }

          dsx3FarEndTotalIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..65535)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                      "The index value which uniquely identifies the
                      DS3 interface
                      to which this entry is applicable.  The interface
                      identified by a particular value of this index is
                      the same interface as identified by the same value
                      an dsx3LineIndex object instance."
              ::= { dsx3FarEndTotalEntry 1 }

          dsx3FarEndTotalCESs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The counter associated with the number of Far
                     End C-bit Errored Seconds encountered by a DS3
                     interface in the previous 24 hour interval."
             ::= { dsx3FarEndTotalEntry 2 }

          dsx3FarEndTotalCSESs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The counter associated with the number of
                     Far End C-bit Severely Errored Seconds
                     encountered by a DS3 interface in the previous 24
                     hour interval."
             ::= { dsx3FarEndTotalEntry 3 }

          dsx3FarEndTotalCCVs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The counter associated with the number of
                     Far End C-bit Coding Violations reported via the
                     far end block error count
                     encountered by a
                     DS3 interface in the previous 24 hour interval."
             ::= { dsx3FarEndTotalEntry 4 }

          dsx3FarEndTotalUASs OBJECT-TYPE
             SYNTAX  Gauge
             ACCESS  read-only
             STATUS  mandatory
             DESCRIPTION
                     "The counter associated with the number of
                     Far End unavailable seconds
                     encountered by a
                     DS3 interface in the previous 24 hour interval."
             ::= { dsx3FarEndTotalEntry 5 }

Last stop: the DS3/E3 Fractional Group πŸ“πŸ§š This one is optional to implement, and it's for systems that split a DS3/E3 into channels carrying different data streams that matter locally. The comment block below is the example, and it's a whole vibe: 4 high speed router links, a voice feed, a video feed, and a synchronous channel for a non-routed protocol, all sharing one pipe πŸš€

          -- the DS3/E3 Fractional Group

          -- Implementation of this group is optional.  It is designed
          -- for those systems dividing a DS3/E3 into channels
          -- containing different data streams that are of local
          -- interest.

          -- The DS3/E3 fractional table identifies which DS3/E3
          -- channels associated with a CSU are being used to
          -- support a logical interface, i.e., an entry in the
          -- interfaces table from the Internet-standard MIB.

          -- For example, consider a DS3 device with 4 high speed links
          -- carrying router traffic, a feed for voice, a feed for
          -- video, and a synchronous channel for a non-routed
          -- protocol.
          -- We might describe the allocation of channels, in the
          -- dsx3FracTable, as follows:

          -- dsx3FracIfIndex.2. 1 = 3    dsx3FracIfIndex.2.15 = 4
          -- dsx3FracIfIndex.2. 2 = 3    dsx3FracIfIndex.2.16 = 6
          -- dsx3FracIfIndex.2. 3 = 3    dsx3FracIfIndex.2.17 = 6
          -- dsx3FracIfIndex.2. 4 = 3    dsx3FracIfIndex.2.18 = 6
          -- dsx3FracIfIndex.2. 5 = 3    dsx3FracIfIndex.2.19 = 6
          -- dsx3FracIfIndex.2. 6 = 3    dsx3FracIfIndex.2.20 = 6
          -- dsx3FracIfIndex.2. 7 = 4    dsx3FracIfIndex.2.21 = 6
          -- dsx3FracIfIndex.2. 8 = 4    dsx3FracIfIndex.2.22 = 6
          -- dsx3FracIfIndex.2. 9 = 4    dsx3FracIfIndex.2.23 = 6
          -- dsx3FracIfIndex.2.10 = 4    dsx3FracIfIndex.2.24 = 6
          -- dsx3FracIfIndex.2.11 = 4    dsx3FracIfIndex.2.25 = 6
          -- dsx3FracIfIndex.2.12 = 5    dsx3FracIfIndex.2.26 = 6
          -- dsx3FracIfIndex.2.13 = 5    dsx3FracIfIndex.2.27 = 6
          -- dsx3FracIfIndex.2.14 = 5    dsx3FracIfIndex.2.28 = 6

          -- For dsx3M23, dsx3SYNTRAN, dsx3CbitParity, and
          -- dsx3ClearChannel there are 28 legal channels, numbered 1
          -- through 28.

          -- For e3Framed there are 16 legal channels,
          -- numbered 1 through 16.  The channels (1..16) correspond
          -- directly to the equivalently numbered time-slots.

          dsx3FracTable OBJECT-TYPE
              SYNTAX  SEQUENCE OF Dsx3FracEntry
              ACCESS  not-accessible
              STATUS  mandatory
              DESCRIPTION
                 "The DS3 Fractional table."
              ::= { ds3 13 }

          dsx3FracEntry OBJECT-TYPE
               SYNTAX  Dsx3FracEntry
               ACCESS  not-accessible
               STATUS  mandatory
               DESCRIPTION
                  "An entry in the DS3 Fractional table."
              INDEX   { dsx3FracIndex, dsx3FracNumber }
              ::= { dsx3FracTable 1 }

          Dsx3FracEntry ::=
              SEQUENCE {
                  dsx3FracIndex
                      INTEGER,
                  dsx3FracNumber
                      INTEGER,

                  dsx3FracIfIndex
                      INTEGER
              }


          dsx3FracIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..'7fffffff'h)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                 "The index value which uniquely identifies  the
                 DS3  interface  to which this entry is applicable
                 The interface identified by a  particular
                 value  of  this  index is the same interface as
                 identified by the same value  an  dsx3LineIndex
                 object instance."
             ::= { dsx3FracEntry 1 }

          dsx3FracNumber OBJECT-TYPE
              SYNTAX  INTEGER (1..31)
              ACCESS  read-only
              STATUS  mandatory
              DESCRIPTION
                 "The channel number for this entry."
             ::= { dsx3FracEntry 2 }

          dsx3FracIfIndex OBJECT-TYPE
              SYNTAX  INTEGER (1..'7fffffff'h)
              ACCESS  read-write
              STATUS  mandatory
              DESCRIPTION
                 "An index value that uniquely identifies an
                 interface.  The interface identified by a particular
                 value of this index is the same  interface
                 as  identified by the same value an ifIndex
                 object instance. If no interface is currently using
                 a channel, the value should be zero.  If a
                 single interface occupies more  than  one  time
                 slot,  that ifIndex value will be found in multiple
                 time slots."
             ::= { dsx3FracEntry 3 }



          END
That's the end of the MIB module itself πŸŽ€ Next up is section 5 🫢

5. Acknowledgments ✨

6. References πŸ“š

okay so the references are literally the bibliography of the whole vibe, and I'm not cutting a single one πŸ’… Here's every source, label and all:

  • [1] Cerf, V., "IAB Recommendations for the Development of Internet Network Management Standards", RFC 1052, NRI, April 1988.
  • [2] Cerf, V., "Report of the Second Ad Hoc Network Management Review Group", RFC 1109, NRI, August 1989.
  • [3] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", STD 16, RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990.
  • [4] McCloghrie K., and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets", RFC 1156, Hughes LAN Systems, Performance Systems International, May 1990.
  • [5] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, SNMP Research, Performance Systems International, Performance Systems International, MIT Laboratory for Computer Science, May 1990.
  • [6] McCloghrie K., and M. Rose, Editors, "Management Information Base for Network Management of TCP/IP-based internets", STD 17, RFC 1213, Performance Systems International, March 1991.
  • [7] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987.
  • [8] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, International Standard 8825, December 1987.
  • [9] American National Standard for Telecommunications - Digital Hierarchy - Electrical Interfaces, ANSI T1.102- 1987.
  • [10] American National Standard for Telecommunications - Digital Hierarchy - Formats Specification, ANSI T1.107- 1988.
  • [10a] ANSI T1.107a-1990.
  • [11] American National Standard for Telecommunications - Carrier-to-Customer Installation - DS3 Metallic Interface, ANSI T1.404-1989.
  • [12] American National Standard for Telecommunications -- Layer 1 In-Service Digital Transmission Performance Monitoring T1M1/92-0xx, T1M1.3/92-005R1, April 1992.
  • [13] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", STD 16, RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991.
  • [14] CCITT - Digital Multiplex Equipment Operating at the Third Order Bit Rate of 34 368 Kbit/s and the Forth Order Bit Rate of 139 264 Kbit/s and Using Positive Justification, G.751.
  • [15] European Telecommunications Standards Institute -- ETS "34M" -- Metropolitan Area Network Physical Convergence Layer Procedure for 34.368 Megabits per Second, T/NA(91)18, May 1991.

7. Security Considerations πŸ”’

okay, bestie, the security section is short and sweet πŸ₯Ή Security issues are not discussed in this memo. That's it, that's the tea 🍡


8. Authors' Addresses πŸŽ€

here are the two authors and how to reach them, iykyk 🫢

Tracy A. Cox

Tracy A. Cox
Bell Communications Research
331 Newman Springs Road
P.O. Box 7020
Red Bank, NJ  07701-7020

Phone: (908) 758-2107
EMail: tacox@mail.bellcore.com

Kaj Tesink

Kaj Tesink
Bell Communications Research
331 Newman Springs Road
P.O. Box 7020
Red Bank, NJ  07701-7020

Phone: (908) 758-5254
EMail: kaj@cc.bellcore.com
πŸ“¦ where this page comes from