RFC 3895
Definitions of Managed Objects for the DS1, E1, DS2, and E2 Interface Types
RFC 3895: Definitions of Managed Objects for the DS1, E1, DS2, and E2 Interface Types ๐
okay bestie, this one is from September 2004 and it's written by O. Nicklass, Ed. from RAD Data Communications, Ltd. ๐ผ It's on the Standards Track and lives in the Network Working Group ๐ธ It also obsoletes RFC 2495, so that older doc is officially replaced by this one โจ
Status of this Memo โจ
This document is an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements ๐ For the standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐ And distribution of this memo is unlimited, so share it with everyone ๐ฆ
Copyright Notice ๐
Copyright (C) The Internet Society (2004).
Abstract ๐
Okay so this memo defines a piece of the Management Information Base (MIB) that network management protocols in the Internet community use ๐ซถ Specifically, it covers the objects you need to manage DS1, E1, DS2, and E2 interfaces ๐ It's also a companion to the documents that define Managed Objects for the DS0, DS3/E3, and Synchronous Optical Network/Synchronous Digital Hierarchy (SONET/SDH) Interface Types ๐ง And yes, it obsoletes RFC 2495 ๐
Table of Contents ๐
1. The Internet-Standard Management Framework . . . . . . . . . . 2
1.1. Changes from RFC 2495. . . . . . . . . . . . . . . . . . 3
1.2. Changes from RFC 1406. . . . . . . . . . . . . . . . . . 3
1.3. Companion Documents. . . . . . . . . . . . . . . . . . . 4
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Use of ifTable for DS1 Layer . . . . . . . . . . . . . . 5
2.2. Usage Guidelines . . . . . . . . . . . . . . . . . . . . 6
2.2.1. Usage of ifStackTable for Routers and DSUs. . . . 6
2.2.2. Usage of ifStackTable for DS1/E1 on DS2/E2. . . . 8
2.2.3. Usage of Channelization for DS3, DS1, DS0 . . . . 9
2.2.4. Usage of Channelization for DS3, DS2, DS1 . . . . 10
2.2.5. Usage of Loopbacks. . . . . . . . . . . . . . . . 11
2.3. Objectives of this MIB Module. . . . . . . . . . . . . . 11
2.4. DS1 Terminology. . . . . . . . . . . . . . . . . . . . . 12
2.4.1. Error Events. . . . . . . . . . . . . . . . . . . 12
2.4.2. Performance Defects . . . . . . . . . . . . . . . 13
2.4.3. Performance Parameters. . . . . . . . . . . . . . 14
2.4.4. Failure States. . . . . . . . . . . . . . . . . . 18
2.4.5. Other Terms . . . . . . . . . . . . . . . . . . . 21
3. Object Definitions . . . . . . . . . . . . . . . . . . . . . . 21
4. Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . 74
5. Security Considerations. . . . . . . . . . . . . . . . . . . . 74
6. References . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.1. Normative References . . . . . . . . . . . . . . . . . . 76
6.2. Informative References . . . . . . . . . . . . . . . . . 78
Appendix A - Use of dsx1IfIndex and dsx1LineIndex. . . . . . . . . 79
Appendix B - The delay approach to Unavailable Seconds . . . . . . 81
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 83
Full Copyright Statement . . . . . . . . . . . . . . . . . . . . . 84
1. The Internet-Standard Management Framework ๐
If you want the full tea on the current Internet-Standard Management Framework, go check section 7 of RFC 3410 [RFC3410] ๐ง
So managed objects are accessed through a virtual information store called the Management Information Base, or MIB ๐๏ธ You usually get at 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's compliant with SMIv2, which is described in STD 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58, RFC 2580 [RFC2580] ๐ฆ
1.1. Changes from RFC 2495 ๐
So here's what changed from [RFC2495] ๐
- The dsx1FracIfIndex SYNTAX matches the description range.
- A value was added to dsx1TransmitClockSource.
- Values were added to dsx1LineType.
- Two objects were added, dsx1LineMode and dsx1LineBuildOut, to better express transceiver mode and LineBuildOut for T1.
- Reference was added to Circuit Identifier object.
- Align the DESCRIPTION clauses of few statistic objects with the near end definition, the far end definition and with [RFC3593].
- Changes in Compliance Statements to include new objects.
- A typographical error in dsx2E2 was fixed, new name is dsx1E2.
1.2. Changes from RFC 1406 ๐ธ
This is the glow-up list from RFC 1406 [RFC1406] ๐
- The Fractional Table has been deprecated.
- This document uses SMIv2.
- Usage is given for ifTable and ifXTable.
- Example usage of ifStackTable is included.
- dsx1IfIndex has been deprecated.
- Support for DS2 and E2 have been added.
- Additional lineTypes for DS2, E2, and unframed E1 were added.
- The definition of valid intervals has been clarified for the case where the agent proxied for other devices. In particular, the treatment of missing intervals has been clarified.
- An inward loopback has been added.
- Additional lineStatus bits have been added for Near End in Unavailable Signal State, Carrier Equipment Out of Service, DS2 Payload AIS, and DS2 Performance Threshold.
- A read-write line Length object has been added.
- Signal mode of other has been added.
- Added a lineStatus last change, trap and enabler.
- The
e1(19)ifType has been obsoleted so this MIB does not list it as a supported ifType. - Textual Conventions for statistics objects have been used.
- A new object,
dsx1LoopbackStatus, has been introduced to reflect the loopbacks established on a DS1 interface and the source to the requests.dsx1LoopbackConfigcontinues to be the desired loopback state whiledsx1LoopbackStatusreflects the actual state. - A dual loopback has been added to allow the setting of an inward loopback and a line loopback at the same time.
- An object indicating which channel to use within a parent object (i.e., DS3) has been added.
- An object has been added to indicate whether or not this DS1/E1 is channelized.
- Line coding type of B6ZS has been added for DS2.
1.3. Companion Documents ๐ง
This document is the buddy of the docs that define Managed Objects for the DS0 [RFC2494], DS3/E3 [RFC3896], and Synchronous Optical Network/Synchronous Digital Hierarchy (SONET/SDH) [RFC3592] Interface Types ๐ซถ
2. Overview ๐
These objects get used when the media realizing an interface is a DS1/E1/DS2/E2 interface โจ Right now, that applies to this value of the ifType variable in the Internet-standard MIB:
ds1 (18)
The definitions in here are based on the AT&T T-1 Superframe (a.k.a., D4) [ANSI-T1.107] and Extended Superframe (ESF) formats [AT&T-UM-305] [AT&T-TR-54016], and the latter conforms to ANSI specification [ANSI-T1.403]. They're also based on the CCITT Recommendations [CCITT-G.703] [ITU-T-G.704], which this memo calls E1 for the rest of the doc ๐
The various DS1 and E1 line disciplines are similar enough that separate MIBs would be unnecessary, although there are some differences ๐ For example, Loss of Frame is defined more rigorously in the ESF specification than in the D4 specification, but it's defined in both. Therefore, interface types e1(19) and g703at2mb(67) have been obsoleted ๐
When you need to tell the flavors of E1 apart, with and without CRC, E1-CRC means the "with CRC" form (G.704 Table 4b) and E1-noCRC means the "without CRC" form (G.704 Table 4a) ๐
2.1. Use of ifTable for DS1 Layer ๐
Only the ifGeneralInformationGroup needs to be supported ๐ Here's how each ifTable object gets used for the DS1 layer:
ifTable Object Use for DS1 Layer
======================================================================
ifIndex Interface index.
ifDescr See interfaces MIB [RFC2863]
ifType ds1(18)
ifSpeed Speed of line rate
DS1 - 1544000
E1 - 2048000
DS2 - 6312000
E2 - 8448000
ifPhysAddress The value of the Circuit Identifier.
If no Circuit Identifier has been assigned
this object should have an octet string
with zero length.
ifAdminStatus See interfaces MIB [RFC2863]
ifOperStatus See interfaces MIB [RFC2863]
ifLastChange See interfaces MIB [RFC2863]
ifName See interfaces MIB [RFC2863].
ifLinkUpDownTrapEnable Set to enabled(1).
ifHighSpeed Speed of line in Mega-bits per second
(2, 6, or 8)
ifConnectorPresent Set to true(1) normally, except for
cases such as DS1/E1 over AAL1/ATM where
false(2) is appropriate
2.2. Usage Guidelines ๐ฅ
2.2.1. Usage of ifStackTable for Routers and DSUs โจ
Okay bestie, the object dsx1IfIndex has been deprecated ๐ It used to allow a very special proxy situation for Routers and CSUs. This section explains how to use ifStackTable to represent that relationship instead ๐ฆ
The paragraphs about dsx1IfIndex and dsx1LineIndex were saved in Appendix A for informational purposes ๐ธ
The ifStackTable is used in the proxy case to show the association between pairs of interfaces, like "this T1 is attached to that T1" ๐ This is totally consistent with how ifStackTable shows the relationships between sub-layers of an interface. In both cases, whole PDUs get exchanged between the interface pairs. For a T1, that means entire T1 frames. For PPP and HDLC, it means entire HDLC frames ๐ Just so you know, this usage is not meant to suggest using ifStackTable to represent Time Division Multiplexing (TDM) connections in general.
External&Internal interface scenario: the SNMP Agent lives on a host that's separate from the device running the DS1 interfaces (like a router). The Agent represents both the host and the DS1 device ๐ง
Example:
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 | | 1.544 MBPS | Line#A | DS1 Link
|t | R |---------------+ - - - - - - - - - +------>
|h | | | |
|e | O | 1.544 MBPS | Line#B | DS1 Link
|r | |---------------+ - - - - - - - - - - +------>
|n | U | | CSU Shelf |
|e | | 1.544 MBPS | Line#C | DS1 Link
|t | T |---------------+ - - - -- -- - - - - +------>
| | | | |
|-----| E | 1.544 MBPS | Line#D | DS1 Link
| | |---------------+ - - - - -- - - - - +------>
| | R | |_____________________|
| | |
| +-----+
The index values could, for example, be assigned like this ๐
ifIndex Description
1 Ethernet
2 Line#A Router
3 Line#B Router
4 Line#C Router
5 Line#D Router
6 Line#A CSU Router
7 Line#B CSU Router
8 Line#C CSU Router
9 Line#D CSU Router
10 Line#A CSU Network
11 Line#B CSU Network
12 Line#C CSU Network
13 Line#D CSU Network
Then ifStackTable is used to show the relationships between the various DS1 interfaces โจ
ifStackTable Entries
HigherLayer LowerLayer
2 6
3 7
4 8
5 9
6 10
7 11
8 12
9 13
If a local SNMP Agent manages the CSU shelf by itself, the situation is identical, except the Ethernet and the 4 router interfaces are deleted. The interfaces also get numbered from 1 to 8 ๐
ifIndex Description
1 Line#A CSU Router
2 Line#B CSU Router
3 Line#C CSU Router
4 Line#D CSU Router
5 Line#A CSU Network
6 Line#B CSU Network
7 Line#C CSU Network
8 Line#D CSU Network
ifStackTable Entries
HigherLayer LowerLayer
1 5
2 6
3 7
4 8
2.2.2. Usage of ifStackTable for DS1/E1 on DS2/E2
This is an example of how DS1/E1 interfaces get stacked on DS2/E2 interfaces. Representing DS2 interfaces isn't necessary, and it's not always desirable either ๐ If you do need them, use the following stacking. All ifTypes are ds1. The DS2 is determined by checking ifSpeed or dsx1LineType ๐
ifIndex Description
1 DS1 #1
2 DS1 #2
3 DS1 #3
4 DS1 #4
5 DS2
ifStackTable Entries
HigherLayer LowerLayer
1 5
2 5
3 5
4 5
2.2.3. Usage of Channelization for DS3, DS1, DS0
Here's an example that explains the channelization objects in the DS3, DS1, and DS0 MIBs so the implementor can use them correctly ๐ง E3 and E1 would be handled similarly, with the number of DS0s depending on the framing of the E1.
Say a DS3 (with ifIndex 1) is channelized into DS1s, without any DS2s in between. The object dsx3Channelization is set to enabledDs1. That gives you 28 DS1s in the ifTable. Assume the ifTable entries for the DS1s are created in channel order, so the ifIndex values are 2 through 29. In the DS1 MIB, there's an entry in the dsx1ChanMappingTable for each ds1, and they look like this ๐
dsx1ChanMappingTable Entries
ifIndex dsx1Ds1ChannelNumber dsx1ChanMappedIfIndex
1 1 2
1 2 3
......
1 28 29
The DS1s also get channelized into DS0s. The object dsx1Channelization is set to enabledDS0 for each DS1. When this object is set to that value, the agent creates 24 DS0s. There are 24 DS0s in the ifTable for each DS1. If dsx1Channelization is set to disabled, the 24 DS0s are destroyed. Assume the ifTable entries are created in channel order, and the ifIndex values for the DS0s in the first DS1 are 30 through 53. In the DS0 MIB, there's an entry in the dsx0ChanMappingTable for each DS0, like so ๐ฆ
dsx0ChanMappingTable Entries
ifIndex dsx0Ds0ChannelNumber dsx0ChanMappedIfIndex
2 1 30
2 2 31
......
2 24 53
2.2.4. Usage of Channelization for DS3, DS2, DS1
Here's another example that explains the channelization objects in the DS3 and DS1 MIBs, again to help the implementor get things right ๐ธ
Assume a DS3 (with ifIndex 1) is channelized into DS2s. The object dsx3Channelization [RFC3896] is set to enabledDs2. That gives you 7 DS2s (ifType of DS1) in the ifTable. Assume the ifTable entries for the DS2s are created in channel order, so the ifIndex values are 2 through 8. In the DS1 MIB, there's an entry in the dsx1ChanMappingTable for each DS2, like this โจ
dsx1ChanMappingTable Entries
ifIndex dsx1Ds1ChannelNumber dsx1ChanMappedIfIndex
1 1 2
1 2 3
......
1 7 8
The DS2s also get channelized into DS1s. The object dsx1Channelization is set to enabledDS1 for each DS2, which gives you 4 DS1s in the ifTable for each DS2. Assume the ifTable entries are created in channel order, with the ifIndex values for the DS1s in the first DS2 being 9 through 12, then 13 through 16 for the second DS2, and so on. In the DS1 MIB, there's an entry in the dsx1ChanMappingTable for each DS1, like this ๐
dsx1ChanMappingTable Entries
ifIndex dsx1Ds1ChannelNumber dsx1ChanMappedIfIndex
2 1 9
2 2 10
2 3 11
2 4 12
3 1 13
3 2 14
...
8 4 36
2.2.5. Usage of Loopbacks
Let's talk loopbacks, the main character of this section ๐
The object dsx1LoopbackConfig represents the desired state of loopbacks on this interface. Using this object, a Manager can request any of these:
LineLoopbackPayloadLoopback(if ESF framing)InwardLoopbackDualLoopback(Line + Inward)NoLoopback
The remote end can also request loopbacks, either through the FDL channel if ESF is in use, or inband if D4 is in use. The loopbacks that can be requested this way are:
LineLoopbackPayloadLoopback(if ESF framing)NoLoopback
To model the current state of loopbacks on a DS1 interface, the object dsx1LoopbackStatus defines which loopback is currently applied to an interface. This object is a bitmap. Its bits get turned on to reflect the loopbacks currently active on the interface, along with the source of each one ๐ซถ
Here are the rules and restrictions for loopbacks, bestie ๐
The far end cannot undo loopbacks set by a manager.
A manager can undo loopbacks set by the far end.
Both a line loopback and an inward loopback can be set at the same time. Only these two loopbacks can co-exist, and either one may be set by the manager or by the far end. A LineLoopback request from the far end is incremental to an existing Inward loopback that a manager established. When a NoLoopback is received from the far end in this case, the InwardLoopback stays in place ๐
2.3. Objectives of this MIB Module
There are tons of things that could go into a MIB for DS1 signals, like managing multiplexors, CSUs, DSUs, and so on ๐ญ The goal of this document is to make it easy to manage all devices with DS1, E1, DS2, or E3 interfaces together. So a deliberate design decision was made up front: the MIB closely matches the set of objects that can generally be read from these kinds of devices already out in the field ๐
J2 interfaces are not supported by this MIB.
2.4. DS1 Terminology
The terminology this document uses to describe error conditions on a DS1 interface, as monitored by a DS1 device, is based on the late but not final draft of what became the ANSI T1.231 standard [ANSI-T1.231]. If the definition in this document doesn't match the definition in the ANSI T1.231 document, the implementer should follow the definition in this document ๐
2.4.1. Error Events โจ
Bipolar Violation (BPV) Error Event ๐ฅ Okay so a BPV error event for an AMI-coded signal is when a pulse shows up with the same polarity as the previous pulse (See T1.231 Section 6.1.1.1.1). For a B8ZS- or HDB3-coded signal, it's a pulse of the same polarity as the previous pulse without being part of the zero substitution code. ๐ซถ
Excessive Zeroes (EXZ) Error Event ๐ธ For an AMI-coded signal, this one happens when there are more than fifteen contiguous zeroes (See T1.231 Section 6.1.1.1.2). For a B8ZS coded signal, the defect occurs when more than seven contiguous zeroes are detected. Way fewer zeroes needed for B8ZS, iykyk ๐
Line Coding Violation (LCV) Error Event ๐ฆ An LCV is basically the occurrence of either a Bipolar Violation (BPV) or Excessive Zeroes (EXZ) Error Event. It's also known as CV-L (See T1.231 Section 6.5.1.1.) ๐
Path Coding Violation (PCV) Error Event ๐ A PCV error event is a frame synchronization bit error in the D4 and E1-noCRC formats, or a CRC or frame synch. bit error in the ESF and E1-CRC formats. Also known as CV-P (See T1.231 Section 6.5.2.1.) โจ
Controlled Slip (CS) Error Event ๐ง A Controlled Slip is the replication or deletion of the payload bits of a DS1 frame (See T1.231 Section 6.1.1.2.3). It may be performed when there is a difference between the timing of a synchronous receiving terminal and the received signal. A Controlled Slip does not cause an Out of Frame defect, so no drama there ๐
2.4.2. Performance Defects ๐ฅ
Out Of Frame (OOF) Defect ๐ An OOF defect is the occurrence of a particular density of Framing Error events (See T1.231 Section 6.1.2.2.1).
For DS1 links, an Out of Frame defect is declared when the receiver detects two or more framing errors within a 3 msec period for ESF signals and 0.75 msec for D4 signals, or two or more errors out of five or fewer consecutive framing-bits. ๐
For E1 links, an Out Of Frame defect is declared when three consecutive frame alignment signals have been received with an error (see G.706 Section 4.1 [CCITT-G.706]). ๐
For DS2 links, an Out of Frame defect is declared when 7 or more consecutive errored framing patterns (4 multiframe) are received. The OOF is cleared when 3 or more consecutive correct framing patterns are received. โญ
Once an Out Of Frame Defect is declared, the framer starts searching for a correct framing pattern. The Out of Frame defect ends when the signal is in frame. ๐ฆ
In-frame occurs when there are fewer than two frame bit errors within a 3 msec period for ESF signals and 0.75 msec for D4 signals. ๐
For E1 links, in-frame occurs when a) in frame N the frame alignment signal is correct and b) in frame N+1 the frame alignment signal is absent (i.e., bit 2 in TS0 is a one) and c) in frame N+2 the frame alignment signal is present and correct. (See G.704 Section 4.1) ๐ง
Alarm Indication Signal (AIS) Defect ๐จ For D4 and ESF links, the 'all ones' condition is detected at a DS1 line interface upon observing an unframed signal with a one's density of at least 99.9% present for a time equal to or greater than T, where 3 ms <= T <= 75 ms. The AIS is terminated upon observing a signal not meeting the one's density or the unframed signal criteria for a period equal to or greater than T (See G.775, Section 5.4). ๐ซง
For E1 links, the 'all-ones' condition is detected at the line interface as a string of 512 bits containing fewer than three zero bits (see O.162 [CCITT-O.162] Section 3.3.2). ๐ธ
For DS2 links, the DS2 AIS SHALL be sent from the NT1 to the user to indicate a loss of the 6,312 kbps frame capability on the network side. The DS2 AIS is defined as a bit array of 6,312 kbps in which all binary bits are set to '1'. Bestie this one is important, so pay attention ๐
The DS2 AIS detection and removal SHALL be implemented according to ITU-T Draft Recommendation G.775 [ITU-T-G.775] Section 5.5:
- a DS2 AIS defect is detected when the incoming signal has two (2) or less ZEROs in a sequence of 3156 bits (0.5 ms).
- a DS2 AIS defect is cleared when the incoming signal has three (3) or more ZEROs in a sequence of 3156 bits (0.5 ms). ๐ฅน
โ ๏ธ Heads up, this is the kind of detail that gets people in trouble if they eyeball it. Read the numbers exactly as written!
2.4.3. Performance Parameters โจ
okay so every performance parameter gets collected in fifteen minute intervals โฐ, and an agent keeps up to 96 of them (that's 24 hours worth ๐). If the agent has restarted within the last 24 hours, you'll see fewer than 96 intervals because there just isn't that much history yet ๐ฅบ. There's also a rolling 24-hour total for each parameter ๐. And the most iconic part: performance parameters keep getting collected even when the interface is down ๐โจ
There's no requirement for an agent to lock the fifteen minute intervals to any wall clock ๐ฐ๏ธ, so it's totally fine if they don't line up. Some agents might align them with quarter hours though ๐ธ.
Performance parameters come in three flavours: PerfCurrentCount, PerfIntervalCount and PerfTotalCount ๐ง. All of these are Gauge32, and that's on purpose, because these objects can actually decrease ๐. That happens when Unavailable Seconds occur across a fifteen minutes interval boundary. More on that in the Unavailable Seconds bit later in this section ๐.
Line Errored Seconds (LES) A Line Errored Second is a second in which one or more Line Code Violation error events were detected ๐จ. (Also known as ES-L; See T1.231 Section 6.5.1.2.)
Controlled Slip Seconds (CSS) A Controlled Slip Second is a one-second interval containing one or more controlled slips (See T1.231 Section 6.5.2.8) ๐ช. It is not incremented during an Unavailable Second.
Errored Seconds (ES) For ESF and E1-CRC links, an Errored Second is a second with one or more Path Code Violation OR one or more Out of Frame defects OR one or more Controlled Slip events OR a detected AIS defect ๐ค. (See T1.231 Section 6.5.2.2 and G.826 [ITU-T-G.826] Section B.1).
For D4 and E1-noCRC links, the presence of Bipolar Violations also triggers an Errored Second ๐ซ .
It is not incremented during an Unavailable Second.
Bursty Errored Seconds (BES) A Bursty Errored Second (also known as Errored Second type B in T1.231 Section 6.5.2.4) is a second with fewer than 320 and more than 1 Path Coding Violation error events, no Severely Errored Frame defects and no detected incoming AIS defects ๐ฏ. Controlled slips are not included in this parameter.
It is not incremented during an Unavailable Second. It applies to ESF signals only ๐.
Severely Errored Seconds (SES) A Severely Errored Second for ESF signals is a second with 320 or more Path Code Violation Error Events OR one or more Out of Frame defects OR a detected AIS defect (See T1.231 Section 6.5.2.5) ๐ฅ.
For E1-CRC signals, a Severely Errored Second is a second with 832 or more Path Code Violation error events OR one or more Out of Frame defects ๐งจ.
For E1-noCRC signals, a Severely Errored Second is a 2048 LCVs or more ๐ซจ.
For D4 signals, a Severely Errored Second is a count of one-second intervals with Framing Error events, or an OOF defect, or 1544 LCVs or more ๐.
Controlled slips are not included in this parameter either. And it is not incremented during an Unavailable Second ๐ โโ๏ธ.
Severely Errored Framing Second (SEFS) An Severely Errored Framing Second is a second with one or more Out of Frame defects OR a detected AIS defect ๐ซฃ. (Also known as SAS-P (SEF/AIS second); See T1.231 Section 6.5.2.6.)
Degraded Minutes A Degraded Minute is one in which the estimated error rate exceeds 1E-6 but does not exceed 1E-3 (see G.821 [CCITT-G.821]) ๐ก๏ธ.
Degraded Minutes are determined by collecting all of the Available Seconds, removing any Severely Errored Seconds, grouping the result in 60-second long groups, and counting a 60-second long group (a.k.a., minute) as degraded if the cumulative errors during the seconds present in the group exceed 1E-6 ๐งฎ. Available seconds are merely those seconds which are not Unavailable as described below ๐ซถ.
Unavailable Seconds (UAS) Unavailable Seconds (UAS) are calculated by counting the number of seconds that the interface is unavailable ๐ต. The DS1 interface is said to be unavailable from the onset of 10 contiguous SESs, or the onset of the condition leading to a failure (see Failure States). If the condition leading to the failure was immediately preceded by one or more contiguous SESs, then the DS1 interface unavailability starts from the onset of these SESs ๐ญ.
Once unavailable, and if no failure is present, the DS1 interface becomes available at the onset of 10 contiguous seconds with no SESs ๐ค๏ธ. Once unavailable, and if a failure is present, the DS1 interface becomes available at the onset of 10 contiguous seconds with no SESs, if the failure clearing time is less than or equal to 10 seconds. If the failure clearing time is more than 10 seconds, the DS1 interface becomes available at the onset of 10 contiguous seconds with no SESs, or the onset period leading to the successful clearing condition, whichever occurs later ๐ฐ๏ธ.
With respect to the DS1 error counts, all counters are incremented while the DS1 interface is deemed available. While the interface is deemed unavailable, the only count that is incremented is UASs ๐.
Now, this next bit is a plot twist ๐. This definition implies that the agent cannot determine until after a ten second interval has passed whether a given one-second interval belongs to available or unavailable time. If the agent chooses to update the various performance statistics in real time, then it must be prepared to retroactively reduce the ES, BES, SES, and SEFS counts by 10 and increase the UAS count by 10 when it determines that available time has been entered. It must also be prepared to adjust the PCV count and the DM count as necessary, since these parameters are not accumulated during unavailable time. It must be similarly prepared to retroactively decrease the UAS count by 10 and increase the ES, BES, and DM counts as necessary upon entering available time ๐ตโ๐ซ.
A special case exists when the 10 second period leading to available or unavailable time crosses a 900 second statistics window boundary, as the foregoing description implies that the ES, BES, SES, SEFS, DM, and UAS counts the PREVIOUS interval must be adjusted ๐งฉ. In this case, successive GETs of the affected dsx1IntervalSESs and dsx1IntervalUASs objects will return differing values if the first GET occurs during the first few seconds of the window ๐ซ .
The agent may instead choose to delay updates to the various statistics by 10 seconds, in order to avoid retroactive adjustments to the counters ๐งโโ๏ธ. A way to do this is sketched in Appendix B ๐.
In any case, a linkDown trap shall be sent only after the agent has determined for certain that the unavailable state has been entered, but the time on the trap will be that of the first UAS (i.e., 10 seconds earlier) ๐ฆ. A linkUp trap shall be handled similarly ๐.
According to ANSI T1.231, unavailable time begins at the onset of 10 contiguous severely errored seconds. That means unavailable time starts with the first of the 10 contiguous SESs ๐ฅน. Also, while an interface is deemed unavailable, all counters for that interface are frozen except for the UAS count. It follows that an implementation which strictly complies with this standard must not increment any counters other than the UAS count, even temporarily, as a result of anything that happens during those 10 seconds ๐.
Since changes in the signal state lag the data to which they apply by 10 seconds, an ANSI-compliant implementation must pass the one-second statistics through a 10-second delay line prior to updating any counters. That can be done by performing the following steps at the end of each one second interval ๐ช:
i) Read the near/far end CV counter and alarm status flags from the hardware ๐.
ii) Accumulate the CV counts for the preceding second and compare them to the ES and SES threshold for the layer in question. Update the signal state and shift the one-second CV counts and ES/SES flags into the 10-element delay line. Note that far-end one-second statistics are to be flagged as "absent" during any second in which there is an incoming defect at the layer in question or at any lower layer ๐ง .
iii) Update the current interval statistics using the signal state from the previous update cycle and the one-second CV counts and ES/SES flags shifted out of the 10-element delay line ๐.
This approach is further described in Appendix B ๐.
2.4.4. Failure States ๐จ
okay bestie, this is where the DS1 interface gets dramatic ๐ These are the failure states that are either received or detected, and every one of them gets reported in the dsx1LineStatus object. When a DS1 interface would (if ever) actually produce the conditions that lead to a failure state is described in the appropriate specification, so that's where you go for the details ๐ซถ
Far End Alarm Failure ๐
The Far End Alarm failure is also known as "Yellow Alarm" in the DS1 case, "Distant Alarm" in the E1 case, and "Remote Alarm" in the DS2 case. it's giving three names for one vibe ๐
For D4 links, the Far End Alarm failure is declared when bit 6 of all channels has been zero for at least 335 ms. it gets cleared when bit 6 of at least one channel is non-zero for a period T, where T is usually less than one second and always less than 5 seconds โฑ๏ธ The Far End Alarm failure is not declared for D4 links when a Loss of Signal is detected, so the LOS takes the spotlight ๐ฆ
For ESF links, the Far End Alarm failure is declared if the Yellow Alarm signal pattern occurs in at least seven out of ten contiguous 16-bit pattern intervals. it's cleared if the Yellow Alarm signal pattern does not occur in ten contiguous 16-bit signal pattern intervals ๐
For E1 links, the Far End Alarm failure is declared when bit 3 of time-slot zero is received set to one on two consecutive occasions. it's cleared when bit 3 of time-slot zero is received set to zero โจ
For DS2 links, if a loss of frame alignment (LOF or LOS) and/or DS2 AIS condition is detected, the RAI signal shall be generated and transmitted to the remote side. this part is so important, no cap ๐
The Remote Alarm Indication (RAI) signal is defined on m-bits as a repetition of the 16-bit sequence consisting of eight binary '1s' and eight binary '0s' in m-bits (1111111100000000). when the RAI signal is not sent (in normal operation), the HDLC flag pattern (01111110) in the m-bit is sent instead ๐ฆ
The RAI failure is detected when 16 or more consecutive RAI-patterns (1111111100000000) are received. it's cleared when 4 or more consecutive incorrect-RAI-patterns are received. main character energy ๐
Alarm Indication Signal (AIS) Failure ๐ฅ
The Alarm Indication Signal failure is declared when an AIS defect is detected at the input and the AIS defect still exists after the Loss Of Frame failure (which is caused by the unframed nature of the 'all-ones' signal) is declared. it's cleared when the Loss Of Frame failure is cleared. (See T1.231 Section 6.2.1.2.1) ๐
An AIS defect at a 6312 kbit/s (G.704) interface is detected when the incoming signal has two {2} or less ZEROs in a sequence of 3156 bits (0.5ms). the AIS signal defect is cleared when the incoming signal has three {3} or more ZEROs in a sequence of 3156 bits (0.5ms) ๐
Loss Of Frame Failure ๐ง
For DS1 links, the Loss Of Frame failure is declared when an OOF or LOS defect has persisted for T seconds, where 2 <= T <= 10. it's cleared when there have been no OOF or LOS defects during a period T where 0 <= T <= 20. Many systems will perform "hit integration" within the period T before declaring or clearing the failure, e.g., see TR 62411 [AT&T-TR-62411] ๐
For E1 links, the Loss Of Frame Failure is declared when an OOF defect is detected ๐ธ
Loss Of Signal Failure ๐ก
For DS1, the Loss Of Signal failure is declared upon observing 175 +/- 75 contiguous pulse positions with no pulses of either positive or negative polarity. The LOS failure is cleared upon observing an average pulse density of at least 12.5% over a period of 175 +/- 75 contiguous pulse positions, starting with the receipt of a pulse โจ
For E1 links, the Loss Of Signal failure is declared when greater than 10 consecutive zeroes are detected (see O.162 Section 3.4.4) ๐
A LOS defect at 6312 kbit/s interfaces is detected when the incoming signal has "no transitions", i.e., when the signal level is less than or equal to a signal level of 35 dB below nominal, for N consecutive pulse intervals, where 10 <= N <= 255. The LOS defect is cleared when the incoming signal has "transitions", i.e., when the signal level is greater than or equal to a signal level of 9 dB below nominal, for N consecutive pulse intervals, where 10 <= N <= 255 ๐ฆ
A signal with "transitions" corresponds to a G.703 compliant signal. clean and compliant, iykyk ๐ซง
Loopback Pseudo-Failure ๐
The Loopback Pseudo-Failure is declared when the near end equipment has placed a loopback (of any kind) on the DS1. this lets a management entity figure out from one object whether the DS1 can be considered to be in service or not, from the point of view of the near end equipment ๐ง
TS16 Alarm Indication Signal Failure ๐ฉ
For E1 links, the TS16 Alarm Indication Signal failure is declared when time-slot 16 is received as all ones for all frames of two consecutive multiframes (see G.732 Section 4.2.6). This condition is never declared for DS1 ๐ โโ๏ธ
Loss Of MultiFrame Failure ๐
The Loss Of MultiFrame failure is declared when two consecutive multiframe alignment signals (bits 4 through 7 of TS16 of frame 0) have been received with an error. it's cleared when the first correct multiframe alignment signal is received. The Loss Of Multiframe failure can only be declared for E1 links operating with G.732 [CCITT-G.732] framing (sometimes called "Channel Associated Signalling" mode) ๐ญ
Far End Loss Of Multiframe Failure ๐ฐ๏ธ
The Far End Loss Of Multiframe failure is declared when bit 2 of TS16 of frame 0 is received set to one on two consecutive occasions. it's cleared when bit 2 of TS16 of frame 0 is received set to zero. The Far End Loss Of Multiframe failure can only be declared for E1 links operating in "Channel Associated Signalling" mode (See G.732) ๐
DS2 Payload AIS Failure ๐
The DS2 Payload AIS is detected when the incoming signal of the 6,312 kbps frame payload (time-slots 1 through 96) has 2 or less 0's in a sequence of 3072 bits (0.5 ms). The DS2 Payload AIS is cleared when the incoming signal of the 6,312 kbps frame payload has 3 or more 0's in a sequence of 3072 bits (0.5 ms) โจ
DS2 Performance Threshold ๐
DS2 Performance Threshold Failure monitors equipment performance and is based on the CRC (Cyclic Redundancy Check) Procedure defined in G.704 ๐
The DS2 Performance Threshold Failure is detected when the bit error ratio exceeds 10^-4 (Performance Threshold), and the DS2 Performance Threshold Failure shall be cleared when the bit error ratio decreased to less than 10^-6." ๐
2.4.5. Other Terms ๐ซถ
Circuit Identifier ๐ชช
This is a character string specified by the circuit vendor. it's super useful when you're talking to the vendor during troubleshooting (see M.1400 [ITU-T-M.1400] for additional information) ๐
Proxy ๐ญ
In this document, the word proxy is meant to indicate an application which receives SNMP messages and replies to them on behalf of the devices which implement the actual DS1/E1 interfaces. The proxy may have already collected the information about the DS1/E1 interfaces into its local database, and it may not necessarily forward the requests to the actual DS1/E1 interface. It is expected in such an application that there are periods of time where the proxy is not communicating with the DS1/E1 interfaces. In these instances, the proxy will not necessarily have up-to-date configuration information and will most likely have missed the collection of some statistics data. Missed statistics data collection will result in invalid data in the interval table ๐ฅบ
3. Object Definitions โจ
DS1-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE,
NOTIFICATION-TYPE, transmission
FROM SNMPv2-SMI -- [RFC2578]
DisplayString, TimeStamp, TruthValue
FROM SNMPv2-TC -- [RFC2579]
MODULE-COMPLIANCE, OBJECT-GROUP,
NOTIFICATION-GROUP
FROM SNMPv2-CONF -- [RFC2580]
InterfaceIndex, ifIndex
FROM IF-MIB -- [RFC2863]
PerfCurrentCount, PerfIntervalCount,
PerfTotalCount
FROM PerfHist-TC-MIB; -- [RFC3593]
okay bestie, the module's ID card is up first ๐ชชโจ it's giving "official paperwork but make it iconic," and the revision history is basically a changelog of everything that got glow-ups ๐
ds1 MODULE-IDENTITY
LAST-UPDATED "200409090000Z" -- September 09, 2004
ORGANIZATION "IETF AToM MIB Working Group"
CONTACT-INFO
"WG charter:
http://www.ietf.org/html.charters/atommib-charter.html
Mailing Lists:
General Discussion: atommib@research.telcordia.com
To Subscribe: atommib-request@research.telcordia.com
Editor: Orly Nicklass
Postal: RAD Data Communications, Ltd.
Ziv Tower, 24 Roul Walenberg
Tel Aviv, Israel, 69719
Tel: +9723 765 9969
E-mail: orly_n@rad.com"
DESCRIPTION
"The MIB module to describe DS1, E1, DS2, and
E2 interfaces objects.
Copyright (c) The Internet Society (2004). This
version of this MIB module is part of RFC 3895;
see the RFC itself for full legal notices."
REVISION "200409090000Z" -- September 09, 2004
DESCRIPTION
"The RFC 3895 version of this MIB module.
The key changes made to this MIB module
since its publication in RFC 2495 are as follows:
(1) The dsx1FracIfIndex SYNTAX matches the description range.
(2) A value was added to dsx1TransmitClockSource.
(3) Values were added to dsx1LineType.
(4) Two objects were added, dsx1LineMode and dsx1LineBuildOut
to better express transceiver mode and LineBuildOut for T1.
(5) Reference was added to Circuit Identifier object.
(6) Align the DESCRIPTION clauses of few statistic objects with
the near end definition, the far end definition and with
RFC 3593.
(7) Changes in Compliance Statements to include new objects.
(8) A typographical error in dsx2E2 was fixed, new name is dsx1E2."
REVISION "199808011830Z"
DESCRIPTION
"The RFC 2495 version of this MIB module.
The key changes made to this MIB module
since its publication in RFC 1406 are as follows:
(1) The Fractional Table has been deprecated.
(2) This document uses SMIv2.
(3) Usage is given for ifTable and ifXTable.
(4) Example usage of ifStackTable is included.
(5) dsx1IfIndex has been deprecated.
(6) Support for DS2 and E2 have been added.
(7) Additional lineTypes for DS2, E2, and unframed E1
were added.
(8) The definition of valid intervals has been clarified
for the case where the agent proxied for other devices. In
particular, the treatment of missing intervals has been
clarified.
(9) An inward loopback has been added.
(10) Additional lineStatus bits have been added for Near End in
Unavailable Signal State, Carrier Equipment Out of Service,
DS2 Payload AIS, and DS2 Performance Threshold.
(11) A read-write line Length object has been added.
(12) Signal mode of other has been added.
(13) Added a lineStatus last change, trap and enabler.
(14) The e1(19) ifType has been obsoleted so this MIB
does not list it as a supported ifType.
(15) Textual Conventions for statistics objects have been used.
(16) A new object, dsx1LoopbackStatus has been introduced to
reflect the loopbacks established on a DS1 interface and
the source to the requests. dsx1LoopbackConfig continues
to be the desired loopback state while dsx1LoopbackStatus
reflects the actual state.
(17) A dual loopback has been added to allow the setting of an
inward loopback and a line loopback at the same time.
(18) An object indicating which channel to use within a parent
object (i.e., DS3) has been added.
(19) An object has been added to indicate whether or not this
DS1/E1 is channelized.
(20) Line coding type of B6ZS has been added for DS2"
REVISION "199301252028Z"
DESCRIPTION
"Initial version, published as RFC 1406."
::= { transmission 18 }
ngl the history section is my fave ๐ธ every single change is listed like a receipt, so you can see exactly what got added, deprecated, or renamed across the versions ๐ฆ
-- note that this subsumes cept (19) and g703at2mb (67)
-- there is no separate CEPT or G703AT2MB MIB
-- The DS1 Near End Group
-- The DS1 Near End Group consists of five tables:
-- DS1 Configuration
-- DS1 Current
-- DS1 Interval
-- DS1 Total
-- DS1 Channel Table
-- The DS1 Configuration Table
okay so the Near End Group is the main squad ๐ it has five tables, and we're starting with the DS1 Configuration Table, which is giving "where all the settings live" ๐
dsx1ConfigTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1ConfigEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Configuration table."
::= { ds1 6 }
dsx1ConfigEntry OBJECT-TYPE
SYNTAX Dsx1ConfigEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Configuration table."
INDEX { dsx1LineIndex }
::= { dsx1ConfigTable 1 }
Dsx1ConfigEntry ::=
SEQUENCE {
dsx1LineIndex InterfaceIndex,
dsx1IfIndex InterfaceIndex,
dsx1TimeElapsed INTEGER,
dsx1ValidIntervals INTEGER,
dsx1LineType INTEGER,
dsx1LineCoding INTEGER,
dsx1SendCode INTEGER,
dsx1CircuitIdentifier DisplayString,
dsx1LoopbackConfig INTEGER,
dsx1LineStatus INTEGER,
dsx1SignalMode INTEGER,
dsx1TransmitClockSource INTEGER,
dsx1Fdl INTEGER,
dsx1InvalidIntervals INTEGER,
dsx1LineLength INTEGER,
dsx1LineStatusLastChange TimeStamp,
dsx1LineStatusChangeTrapEnable INTEGER,
dsx1LoopbackStatus INTEGER,
dsx1Ds1ChannelNumber INTEGER,
dsx1Channelization INTEGER,
dsx1LineMode INTEGER,
dsx1LineBuildOut INTEGER
}
this SEQUENCE is the whole row's wishlist ๐ it lists every column that rides along with each entry, from the line index all the way down to the build-out setting ๐
dsx1LineIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"This object should be made equal to ifIndex. The
next paragraph describes its previous usage.
Making the object equal to ifIndex allows proper
use of ifStackTable and ds0/ds0bundle mibs.
Previously, this object is the identifier of a DS1
Interface on a managed device. If there is an
ifEntry that is directly associated with this and
only this DS1 interface, it should have the same
value as ifIndex. Otherwise, number the
dsx1LineIndices 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."
::= { dsx1ConfigEntry 1 }
dsx1IfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only
STATUS deprecated
DESCRIPTION
"This value for this object is equal to the value
of ifIndex from the Interfaces table of MIB II
(RFC 1213)."
::= { dsx1ConfigEntry 2 }
dsx1TimeElapsed OBJECT-TYPE
SYNTAX INTEGER (0..899)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of seconds that have elapsed since the
beginning of the near end current error-measurement
period. If, for some reason, such as an adjustment
in the system's time-of-day clock, the current interval
exceeds the maximum value, the agent will return the
maximum value."
::= { dsx1ConfigEntry 3 }
dsx1ValidIntervals OBJECT-TYPE
SYNTAX INTEGER (0..96)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of previous near end intervals for
which 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. In the case
where the agent is a proxy, it is possible that
some intervals are unavailable. In this case,
this interval is the maximum interval number for
which data is available."
::= { dsx1ConfigEntry 4 }
so the line index is the main identifier, and it's giving "numbering drama" with the even inside and odd outside rule ๐ฆ the interval stuff tracks how much data we actually have, up to 96 intervals of 15 minutes each ๐
dsx1LineType OBJECT-TYPE
SYNTAX INTEGER {
other(1),
dsx1ESF(2),
dsx1D4(3),
dsx1E1(4),
dsx1E1CRC(5),
dsx1E1MF(6),
dsx1E1CRCMF(7),
dsx1Unframed(8),
dsx1E1Unframed(9),
dsx1DS2M12(10),
dsx1E2(11),
dsx1E1Q50(12),
dsx1E1Q50CRC(13)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates the variety of DS1
Line implementing this circuit. The type of
circuit affects the number of bits per second
that the circuit can reasonably carry, as well
as the interpretation of the usage and error
statistics. The values, in sequence, describe:
TITLE: SPECIFICATION:
dsx1ESF Extended SuperFrame DS1
(T1.107)
dsx1D4 AT&T D4 format DS1 (T1.107)
dsx1E1 ITU-T Recommendation G.704
(Table 4a)
dsx1E1-CRC ITU-T Recommendation G.704
(Table 4b)
dsxE1-MF G.704 (Table 4a) with TS16
multiframing enabled
dsx1E1-CRC-MF G.704 (Table 4b) with TS16
multiframing enabled
dsx1Unframed DS1 with No Framing
dsx1E1Unframed E1 with No Framing (G.703)
dsx1DS2M12 DS2 frame format (T1.107)
dsx1E2 E2 frame format (G.704)
dsx1E1Q50 TS16 bits 5,7,8 set to 101, [in
all other cases it is set
to 111.](ITU-T G.704,table 14)
dsx1E1Q50CRC E1Q50 with CRC.
For clarification, the capacity for each E1 type
is as listed below:
dsx1E1Unframed - E1, no framing = 32 x 64k = 2048k
dsx1E1 or dsx1E1CRC - E1, with framing,
no signalling = 31 x 64k = 1984k
dsx1E1MF or dsx1E1CRCMF - E1, with framing,
signalling = 30 x 64k = 1920k"
REFERENCE
"American National Standard for telecommunications -
digital hierarchy - formats specification,
ANSI-T1.107 - 1988.
CCITT Specifications Volume III, Recommendation
G.703, Physical/Electrical Characteristics
of Hierarchical Digital Interfaces, April 1991.
ITU-T-G.704: Synchronous frame structures used at
1544, 6312, 2048, 8488 and 44 736 kbit/s
Hierarchical Levels, July 1995."
::= { dsx1ConfigEntry 5 }
dsx1LineType is the big one ๐ฅ it's the "what flavour of DS1 is this line" column, with thirteen possible values, and it's the reason the capacity math matters: the E1 types carry 2048k, 1984k, or 1920k depending on framing and signalling ๐โจ the spec references are wild too, but they're listed right there in the REFERENCE clause so you can go check them ๐ซถ
more of this MIB is coming up next, bestie ๐๐
Okay bestie, the line coding knob is where things get spicy ๐ถ๏ธ ๐ . It controls how zeros get handled so the line still has enough pulses, and it changes how much data actually fits ๐
dsx1LineCoding OBJECT-TYPE
SYNTAX INTEGER {
dsx1JBZS (1),
dsx1B8ZS (2),
dsx1HDB3 (3),
dsx1ZBTSI (4),
dsx1AMI (5),
other(6),
dsx1B6ZS(7)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable describes the variety of Zero Code
Suppression used on this interface, which in turn
affects a number of its characteristics.
dsx1JBZS refers the Jammed Bit Zero Suppression,
in which the AT&T specification of at least one
pulse every 8 bit periods is literally implemented
by forcing a pulse in bit 8 of each channel.
Thus, only seven bits per channel, or 1.344 Mbps,
is available for data.
dsx1B8ZS refers to the use of a specified pattern
of normal bits and bipolar violations which are
used to replace a sequence of eight zero bits.
ANSI Clear Channels may use dsx1ZBTSI, or Zero
Byte Time Slot Interchange.
E1 links, with or without CRC, use dsx1HDB3 or
dsx1AMI.
dsx1AMI refers to a mode wherein no zero code
suppression is present and the line encoding does
not solve the problem directly. In this
application, the higher layer MUST provide data
which meets or exceeds the pulse density
requirements, such as inverting HDLC data.
dsx1B6ZS refers to the user of a specified pattern
of normal bits and bipolar violations which are
used to replace a sequence of six zero bits. Used
for DS2."
::= { dsx1ConfigEntry 6 }
So dsx1JBZS is the old-school move where bit 8 of every channel gets a forced pulse ๐. That means only seven bits per channel are left for data, which works out to 1.344 Mbps ๐ญ. dsx1B8ZS swaps a run of eight zeros for a special pattern of normal bits and bipolar violations ๐ง . ANSI Clear Channels can use dsx1ZBTSI (Zero Byte Time Slot Interchange) โจ, and E1 links, with or without CRC, go with dsx1HDB3 or dsx1AMI ๐ธ. With dsx1AMI, the line encoding does not solve the zero problem on its own, so the higher layer has to bring data that meets the pulse density requirements, like inverted HDLC data ๐ซถ. dsx1B6ZS is the same vibe but with six zeros, and it's for DS2 ๐ฆ.
dsx1SendCode OBJECT-TYPE
SYNTAX INTEGER {
dsx1SendNoCode(1),
dsx1SendLineCode(2),
dsx1SendPayloadCode(3),
dsx1SendResetCode(4),
dsx1SendQRS(5),
dsx1Send511Pattern(6),
dsx1Send3in24Pattern(7),
dsx1SendOtherTestPattern(8)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable indicates what type of code is
being sent across the DS1 interface by the device.
Setting this variable causes the interface to send
the code requested. The values mean:
dsx1SendNoCode
sending looped or normal data
dsx1SendLineCode
sending a request for a line loopback
dsx1SendPayloadCode
sending a request for a payload loopback
dsx1SendResetCode
sending a loopback termination request
dsx1SendQRS
sending a Quasi-Random Signal (QRS) test
pattern
dsx1Send511Pattern
sending a 511 bit fixed test pattern
dsx1Send3in24Pattern
sending a fixed test pattern of 3 bits set
in 24
dsx1SendOtherTestPattern
sending a test pattern other than those
described by this object"
::= { dsx1ConfigEntry 7 }
This one is the send code ๐ก. It tells you what kind of code the device is pushing down the DS1 line ๐. Set it, and the interface sends whatever you asked for ๐ฅ. The options are: normal or looped data (dsx1SendNoCode) ๐, a line loopback request (dsx1SendLineCode) ๐ง, a payload loopback request (dsx1SendPayloadCode) ๐, a loopback termination request (dsx1SendResetCode) ๐, a Quasi-Random Signal test pattern (dsx1SendQRS) โญ, a 511-bit fixed test pattern (dsx1Send511Pattern) ๐ฆ, a fixed pattern of 3 bits set in 24 (dsx1Send3in24Pattern) ๐, and a catch-all for any other test pattern (dsx1SendOtherTestPattern) ๐.
dsx1CircuitIdentifier OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable contains the transmission vendor's
circuit identifier, for the purpose of
facilitating troubleshooting."
REFERENCE "ITU-T M.1400"
::= { dsx1ConfigEntry 8 }
dsx1CircuitIdentifier is the transmission vendor's circuit ID, and it exists so troubleshooting is easier ๐๐. It's a DisplayString of up to 255 characters, and it cites ITU-T M.1400 ๐ธ.
dsx1LoopbackConfig OBJECT-TYPE
SYNTAX INTEGER {
dsx1NoLoop(1),
dsx1PayloadLoop(2),
dsx1LineLoop(3),
dsx1OtherLoop(4),
dsx1InwardLoop(5),
dsx1DualLoop(6)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This variable represents the desired loopback
configuration of the DS1 interface. Agents
supporting read/write access SHOULD return
inconsistentValue in response to a requested
loopback state that the interface does not
support. The values mean:
dsx1NoLoop
Not in the loopback state. A device that is not
capable of performing a loopback on the interface
SHALL always return this as its value.
dsx1PayloadLoop
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.
dsx1LineLoop
The received signal at this interface does not go
through the device (minimum penetration) but is
looped back out.
dsx1OtherLoop
Loopbacks that are not defined here.
dsx1InwardLoop
The transmitted signal at this interface is
looped back and received by the same interface.
What is transmitted onto the line is product
dependent.
dsx1DualLoop
Both dsx1LineLoop and dsx1InwardLoop will be
active simultaneously."
::= { dsx1ConfigEntry 9 }
This is the loopback config ๐โจ, the loopback state you want on the DS1 interface. Agents that support read/write access SHOULD answer with inconsistentValue if you ask for a loopback the interface can't do ๐. A device that can't loop back at all SHALL always report dsx1NoLoop as its value ๐
. dsx1PayloadLoop takes what comes in, runs it through the framing function, and sends it right back out ๐. dsx1LineLoop is the minimum-penetration version, where the signal skips the device and gets looped back out ๐ฆ. dsx1OtherLoop is for loopbacks not defined here ๐. dsx1InwardLoop is the reverse vibe, where what gets transmitted is looped back into the same interface, and what actually goes onto the line depends on the product ๐ง. dsx1DualLoop means line loop and inward loop are both active at the same time ๐.
dsx1LineStatus OBJECT-TYPE
SYNTAX INTEGER (1..131071)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates the Line Status of the
interface. It contains loopback, failure,
received 'alarm' and transmitted 'alarms
information.
The dsx1LineStatus is a bit map represented as a
sum, therefore, it can represent multiple failures
(alarms) and a LoopbackState simultaneously.
dsx1NoAlarm MUST be set if and only if no other
flag is set.
If the dsx1loopbackState bit is set, the loopback
in effect can be determined from the
dsx1loopbackConfig object. The various bit
positions are:
1 dsx1NoAlarm No alarm present
2 dsx1RcvFarEndLOF Far end LOF (a.k.a., Yellow Alarm)
4 dsx1XmtFarEndLOF Near end sending LOF Indication
8 dsx1RcvAIS Far end sending AIS
16 dsx1XmtAIS Near end sending AIS
32 dsx1LossOfFrame Near end LOF (a.k.a., Red Alarm)
64 dsx1LossOfSignal Near end Loss Of Signal
128 dsx1LoopbackState Near end is looped
256 dsx1T16AIS E1 TS16 AIS
512 dsx1RcvFarEndLOMF Far End Sending TS16 LOMF
1024 dsx1XmtFarEndLOMF Near End Sending TS16 LOMF
2048 dsx1RcvTestCode Near End detects a test code
4096 dsx1OtherFailure any line status not defined here
8192 dsx1UnavailSigState Near End in Unavailable Signal
State
16384 dsx1NetEquipOOS Carrier Equipment Out of Service
32768 dsx1RcvPayloadAIS DS2 Payload AIS
65536 dsx1Ds2PerfThreshold DS2 Performance Threshold
Exceeded"
::= { dsx1ConfigEntry 10 }
Now line status ๐ฆ๐ is a bitmap added up as a sum, so one value can show several alarms and the loopback state at the same time ๐งฎโจ. dsx1NoAlarm MUST be set if and only if no other flag is set ๐ซถ. If the dsx1loopbackState bit is set, you can figure out which loopback is active by checking dsx1loopbackConfig ๐. The bits cover things like far-end and near-end LOF (the Yellow and Red alarms ๐ก๐ด), AIS in both directions ๐ธ, loss of signal ๐, E1 TS16 AIS and TS16 LOMF ๐ง, detected test codes ๐, the unavailable signal state ๐, carrier equipment out of service ๐, DS2 payload AIS ๐ฆ, and the DS2 performance threshold being exceeded ๐. Anything else lands in dsx1OtherFailure ๐.
dsx1SignalMode OBJECT-TYPE
SYNTAX INTEGER {
none (1),
robbedBit (2),
bitOriented (3),
messageOriented (4),
other (5)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"'none' indicates that no bits are reserved for
signaling on this channel.
'robbedBit' indicates that DS1 Robbed Bit Signaling
is in use.
'bitOriented' indicates that E1 Channel
Associated Signaling is in use.
'messageOriented' indicates that Common
Channel Signaling is in use either on channel 16
of an E1 link or channel 24 of a DS1."
::= { dsx1ConfigEntry 11 }
Signal mode ๐ถ๐ says how signaling bits are handled on the channel. none means no bits are reserved for signaling ๐. robbedBit is DS1 Robbed Bit Signaling ๐. bitOriented is E1 Channel Associated Signaling ๐ง. messageOriented is Common Channel Signaling, on channel 16 of an E1 link or channel 24 of a DS1 ๐
. other covers everything else ๐.
dsx1TransmitClockSource OBJECT-TYPE
SYNTAX INTEGER {
loopTiming(1),
localTiming(2),
throughTiming(3),
adaptive (4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The source of Transmit Clock.
'loopTiming' indicates that the recovered
receive clock is used as the transmit clock.
'localTiming' indicates that a local clock
source is used or when an external clock is
attached to the box containing the interface.
'throughTiming' indicates that recovered
receive clock from another interface is used as
the transmit clock.
'adaptive' indicates that the clock is recovered
based on the data flow and not based on the
physical layer"
::= { dsx1ConfigEntry 12 }
The transmit clock source โฐโจ is where the transmit clock comes from. loopTiming reuses the recovered receive clock ๐. localTiming uses a local clock source, or an external clock attached to the box holding the interface ๐ . throughTiming borrows the recovered receive clock from another interface ๐ฆ. adaptive recovers the clock from the data flow instead of from the physical layer ๐ธ.
dsx1Fdl OBJECT-TYPE
SYNTAX INTEGER (1..15)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This bitmap describes the use of the facilities
data link, and is the sum of the capabilities.
Set any bits that are appropriate:
other(1),
dsx1AnsiT1403(2),
dsx1Att54016(4),
dsx1FdlNone(8)
'other' indicates that a protocol other than
one following is used.
'dsx1AnsiT1403' refers to the FDL exchange
recommended by ANSI.
'dsx1Att54016' refers to ESF FDL exchanges.
'dsx1FdlNone' indicates that the device does
not use the FDL."
::= { dsx1ConfigEntry 13 }
FDL ๐ง๐ is the facilities data link, and it's another bitmap summed up from the capabilities you set ๐งฎ. other (1) means some protocol that isn't listed ๐. dsx1AnsiT1403 (2) is the FDL exchange ANSI recommends ๐. dsx1Att54016 (4) is for ESF FDL exchanges ๐. dsx1FdlNone (8) means the device doesn't use the FDL at all ๐.
dsx1InvalidIntervals OBJECT-TYPE
SYNTAX INTEGER (0..96)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
" The number of intervals in the range from 0 to
dsx1ValidIntervals for which no data is available.
This object will typically be zero except in cases
where the data for some intervals are not
available (e.g., in proxy situations)."
::= { dsx1ConfigEntry 14 }
Invalid intervals ๐๐ซ counts how many of the intervals, from 0 up to dsx1ValidIntervals, have no data available ๐. It's usually zero, except in cases like proxy situations where some interval data just isn't there ๐ง.
dsx1LineLength OBJECT-TYPE
SYNTAX INTEGER (0..64000)
UNITS "meters"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The length of the ds1 line in meters. This
objects provides information for line build out
circuitry. This object is only useful if the
interface has configurable line build out
circuitry."
::= { dsx1ConfigEntry 15 }
Line length ๐๐ธ is the length of the DS1 line in meters, from 0 to 64000 ๐ฆ. It feeds info to the line build out circuitry, but it only matters if the interface actually has configurable line build out circuitry ๐ง.
dsx1LineStatusLastChange OBJECT-TYPE
SYNTAX TimeStamp
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value of MIB II's sysUpTime object at the
time this DS1 entered its current line status
state. If the current state was entered prior to
the last re-initialization of the proxy-agent,
then this object contains a zero value."
::= { dsx1ConfigEntry 16 }
Line status last change โณ๐ stores the sysUpTime value from MIB II at the moment this DS1 entered its current line status state ๐ฐ๏ธ. If that state started before the proxy-agent last re-initialized, the value is zero ๐.
dsx1LineStatusChangeTrapEnable OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
disabled(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates whether dsx1LineStatusChange traps
SHOULD be generated for this interface."
DEFVAL { disabled }
::= { dsx1ConfigEntry 17 }
Last but not least, the trap enable ๐๐ toggle controls whether dsx1LineStatusChange traps get generated for this interface ๐ซถ. It's enabled (1) or disabled (2), and it starts out disabled by default ๐
.
dsx1LoopbackStatus OBJECT-TYPE ๐
okay bestie, this one tells you which loopbacks are running on the DS1 interface right now ๐ it covers loopbacks a manager set up AND ones triggered from the far end. and since it's a bit map (added up as a sum), one interface can have several loopbacks going at once. no cap, so iconic ๐ฆ
dsx1LoopbackStatus OBJECT-TYPE
SYNTAX INTEGER (1..127)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable represents the current state of the
loopback on the DS1 interface. It contains
information about loopbacks established by a
manager and remotely from the far end.
The dsx1LoopbackStatus is a bit map represented as
a sum, therefore is can represent multiple
loopbacks simultaneously.
The various bit positions are:
1 dsx1NoLoopback
2 dsx1NearEndPayloadLoopback
4 dsx1NearEndLineLoopback
8 dsx1NearEndOtherLoopback
16 dsx1NearEndInwardLoopback
32 dsx1FarEndPayloadLoopback
64 dsx1FarEndLineLoopback"
::= { dsx1ConfigEntry 18 }
dsx1Ds1ChannelNumber OBJECT-TYPE ๐ง
this is the channel number of the DS1/E1 inside its parent DS2/E2 or DS3/E3 ๐ธ and a value of 0 means there's no parent DS3/E3 at all, which is a whole mood ๐ญ
dsx1Ds1ChannelNumber OBJECT-TYPE
SYNTAX INTEGER (0..28)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable represents the channel number of
the DS1/E1 on its parent DS2/E2 or DS3/E3. A
value of 0 indicated this DS1/E1 does not have a
parent DS3/E3."
::= { dsx1ConfigEntry 19 }
dsx1Channelization OBJECT-TYPE ๐
this one decides whether the ds1/e1 is channelized or unchannelized ๐ enabledDs0 means DS1 split into DS0s, and enabledDs1 means DS2 split into DS1s. the lowkey drama is that setting it creates or deletes the DS0 entries in the ifTable, so be careful what you touch โจ
dsx1Channelization OBJECT-TYPE
SYNTAX INTEGER {
disabled(1),
enabledDs0(2),
enabledDs1(3)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates whether this ds1/e1 is channelized or
unchannelized. The value of enabledDs0 indicates
that this is a DS1 channelized into DS0s. The
value of enabledDs1 indicated that this is a DS2
channelized into DS1s. Setting this value will
cause the creation or deletion of entries in the
ifTable for the DS0s that are within the DS1."
::= { dsx1ConfigEntry 20 }
dsx1LineMode OBJECT-TYPE ๐
this setting flips the T1 framer between long haul (CSU) mode and short haul (DSU) mode ๐ pick your vibe, bestie
dsx1LineMode OBJECT-TYPE
SYNTAX INTEGER {
csu(1),
dsu(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This setting puts the T1 framer into either long
haul (CSU) mode or short haul (DSU) mode."
::= { dsx1ConfigEntry 21 }
dsx1LineBuildOut OBJECT-TYPE ๐
this is the attenuation setting for the T1 framer when it's in long haul (CSU) mode ๐ the options are -7.5dB, -15dB, -22.5dB and 0dB, and notApplicable(1) is there too for when it doesn't apply ๐
dsx1LineBuildOut OBJECT-TYPE
SYNTAX INTEGER {
notApplicable (1),
neg75dB (2),
neg15dB (3),
neg225dB (4),
zerodB (5)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Attenuation setting for T1 framer in long haul
(CSU) mode. The optional values are: -7.5dB,
-15dB, -22.5dB and 0dB."
::= { dsx1ConfigEntry 22 }
dsx1CurrentTable OBJECT-TYPE ๐
okay so now we're in the DS1 Current Table ๐ it holds a bunch of stats for the current 15 minute interval, like a live scoreboard of everything going on right now โญ
-- The DS1 Current Table
dsx1CurrentTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1CurrentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 current table contains various statistics
being collected for the current 15 minute
interval."
::= { ds1 7 }
dsx1CurrentEntry OBJECT-TYPE ๐งฉ
each row of the current table is one entry, and this is the little blueprint for what a row looks like ๐ฆ every column gets its own spot in the SEQUENCE below
dsx1CurrentEntry OBJECT-TYPE
SYNTAX Dsx1CurrentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Current table."
INDEX { dsx1CurrentIndex }
::= { dsx1CurrentTable 1 }
Dsx1CurrentEntry ::=
SEQUENCE {
dsx1CurrentIndex InterfaceIndex,
dsx1CurrentESs PerfCurrentCount,
dsx1CurrentSESs PerfCurrentCount,
dsx1CurrentSEFSs PerfCurrentCount,
dsx1CurrentUASs PerfCurrentCount,
dsx1CurrentCSSs PerfCurrentCount,
dsx1CurrentPCVs PerfCurrentCount,
dsx1CurrentLESs PerfCurrentCount,
dsx1CurrentBESs PerfCurrentCount,
dsx1CurrentDMs PerfCurrentCount,
dsx1CurrentLCVs PerfCurrentCount
}
dsx1CurrentIndex OBJECT-TYPE ๐
this is the index that picks out which DS1 interface the entry belongs to ๐ it's read-only because it started out as an SMIv1 index, and it matches the same interface as the dsx1LineIndex with the same value ๐
dsx1CurrentIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the
DS1 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 as a dsx1LineIndex object
instance."
::= { dsx1CurrentEntry 1 }
dsx1CurrentESs through dsx1CurrentLCVs OBJECT-TYPE ๐ฏ
these are all the current-interval counters, and they're all read-only, so no fiddling allowed ๐ โโ๏ธ it's errored seconds, severely errored seconds, the framing ones, unavailable seconds, slips, path coding violations, line errored seconds, bursty errored seconds, degraded minutes and line code violations, all in one go ๐ธ
dsx1CurrentESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Errored Seconds."
::= { dsx1CurrentEntry 2 }
dsx1CurrentSESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Seconds."
::= { dsx1CurrentEntry 3 }
dsx1CurrentSEFSs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Framing Seconds."
::= { dsx1CurrentEntry 4 }
dsx1CurrentUASs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds."
::= { dsx1CurrentEntry 5 }
dsx1CurrentCSSs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Controlled Slip Seconds."
::= { dsx1CurrentEntry 6 }
dsx1CurrentPCVs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Path Coding Violations."
::= { dsx1CurrentEntry 7 }
dsx1CurrentLESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Errored Seconds."
::= { dsx1CurrentEntry 8 }
dsx1CurrentBESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Bursty Errored Seconds."
::= { dsx1CurrentEntry 9 }
dsx1CurrentDMs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Degraded Minutes."
::= { dsx1CurrentEntry 10 }
dsx1CurrentLCVs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Code Violations (LCVs)."
::= { dsx1CurrentEntry 11 }
dsx1IntervalTable OBJECT-TYPE ๐๏ธ
now the DS1 Interval Table, which is the lookback era ๐ฐ๏ธ it keeps stats for each DS1 over the previous 24 hours, split into 96 completed 15 minute intervals. every row is one interval, found by dsx1IntervalNumber, for one specific interface, found by dsx1IntervalIndex. the memory is immaculate ๐
-- The DS1 Interval Table
dsx1IntervalTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1IntervalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Interval Table contains various
statistics collected by each DS1 Interface over
the previous 24 hours of operation. The past 24
hours are broken into 96 completed 15 minute
intervals. Each row in this table represents one
such interval (identified by dsx1IntervalNumber)
for one specific instance (identified by
dsx1IntervalIndex)."
::= { ds1 8 }
dsx1IntervalEntry OBJECT-TYPE ๐งฉ
the blueprint for an interval row ๐ it's indexed by both dsx1IntervalIndex and dsx1IntervalNumber, so you need both to find the right one
dsx1IntervalEntry OBJECT-TYPE
SYNTAX Dsx1IntervalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Interval table."
INDEX { dsx1IntervalIndex, dsx1IntervalNumber }
::= { dsx1IntervalTable 1 }
Dsx1IntervalEntry ::=
SEQUENCE {
dsx1IntervalIndex InterfaceIndex,
dsx1IntervalNumber INTEGER,
dsx1IntervalESs PerfIntervalCount,
dsx1IntervalSESs PerfIntervalCount,
dsx1IntervalSEFSs PerfIntervalCount,
dsx1IntervalUASs PerfIntervalCount,
dsx1IntervalCSSs PerfIntervalCount,
dsx1IntervalPCVs PerfIntervalCount,
dsx1IntervalLESs PerfIntervalCount,
dsx1IntervalBESs PerfIntervalCount,
dsx1IntervalDMs PerfIntervalCount,
dsx1IntervalLCVs PerfIntervalCount,
dsx1IntervalValidData TruthValue
}
dsx1IntervalIndex OBJECT-TYPE ๐
same energy as the current table's index: it picks out the DS1 interface, and it's read-only because it began life as an SMIv1 index ๐
dsx1IntervalIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the DS1
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 as a dsx1LineIndex object instance."
::= { dsx1IntervalEntry 1 }
dsx1IntervalNumber OBJECT-TYPE ๐ข
this number runs from 1 to 96 ๐ interval 1 is the most recently completed 15 minute interval, and interval 96 is the one that finished 23 hours and 45 minutes before interval 1. time travel, but make it a table ๐ฐ๏ธ
dsx1IntervalNumber OBJECT-TYPE
SYNTAX INTEGER (1..96)
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"A number between 1 and 96, where 1 is the most
recently completed 15 minute interval and 96 is
the 15 minutes interval completed 23 hours and 45
minutes prior to interval 1."
::= { dsx1IntervalEntry 2 }
dsx1IntervalESs through dsx1IntervalLCVs OBJECT-TYPE ๐
the interval versions of all those counters, same lineup as the current table ๐ซถ the one with a little twist is dsx1IntervalUASs, which can go down if unavailable seconds cross an interval boundary. the plot thickens ๐
dsx1IntervalESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Errored Seconds."
::= { dsx1IntervalEntry 3 }
dsx1IntervalSESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Seconds."
::= { dsx1IntervalEntry 4 }
dsx1IntervalSEFSs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Framing Seconds."
::= { dsx1IntervalEntry 5 }
dsx1IntervalUASs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds. This object
may decrease if the occurrence of unavailable
seconds occurs across an interval boundary."
::= { dsx1IntervalEntry 6 }
dsx1IntervalCSSs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Controlled Slip Seconds."
::= { dsx1IntervalEntry 7 }
dsx1IntervalPCVs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Path Coding Violations."
::= { dsx1IntervalEntry 8 }
dsx1IntervalLESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Errored Seconds."
::= { dsx1IntervalEntry 9 }
dsx1IntervalBESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Bursty Errored Seconds."
::= { dsx1IntervalEntry 10 }
dsx1IntervalDMs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Degraded Minutes."
::= { dsx1IntervalEntry 11 }
dsx1IntervalLCVs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Code Violations."
::= { dsx1IntervalEntry 12 }
dsx1IntervalValidData OBJECT-TYPE โ
this last column is a TruthValue that tells you whether the data for that interval is valid ๐ซง so check it before you trust the numbers, periodt ๐
dsx1IntervalValidData OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This variable indicates if the data for this
interval is valid."
::= { dsx1IntervalEntry 13 }
-- The DS1 Total Table
the DS1 Total Table is coming up next ๐โจ
Okay bestie, the DS1 Total Table is giving main character energy ๐ It's basically the 24-hour recap of everything a DS1 interface got up to, so you can see the whole day's drama in one lookup ๐ธ
dsx1TotalTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1TotalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Total Table contains the cumulative sum
of the various statistics for the 24 hour period
preceding the current interval."
::= { ds1 9 }
dsx1TotalEntry OBJECT-TYPE
SYNTAX Dsx1TotalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Total table."
INDEX { dsx1TotalIndex }
::= { dsx1TotalTable 1 }
Dsx1TotalEntry ::=
SEQUENCE {
dsx1TotalIndex InterfaceIndex,
dsx1TotalESs PerfTotalCount,
dsx1TotalSESs PerfTotalCount,
dsx1TotalSEFSs PerfTotalCount,
dsx1TotalUASs PerfTotalCount,
dsx1TotalCSSs PerfTotalCount,
dsx1TotalPCVs PerfTotalCount,
dsx1TotalLESs PerfTotalCount,
dsx1TotalBESs PerfTotalCount,
dsx1TotalDMs PerfTotalCount,
dsx1TotalLCVs PerfTotalCount
}
dsx1TotalIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the DS1
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 as a dsx1LineIndex object instance."
::= { dsx1TotalEntry 1 }
dsx1TotalESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The sum of Errored Seconds encountered by a DS1
interface in the previous 24 hour interval.
Invalid 15 minute intervals count as 0."
::= { dsx1TotalEntry 2 }
dsx1TotalSESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Seconds
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1TotalEntry 3 }
dsx1TotalSEFSs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Severely Errored Framing Seconds
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1TotalEntry 4 }
dsx1TotalUASs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds encountered by
a DS1 interface in the previous 24 hour interval.
Invalid 15 minute intervals count as 0."
::= { dsx1TotalEntry 5 }
dsx1TotalCSSs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Controlled Slip Seconds encountered
by a DS1 interface in the previous 24 hour
interval. Invalid 15 minute intervals count as
0."
::= { dsx1TotalEntry 6 }
dsx1TotalPCVs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Path Coding Violations encountered
by a DS1 interface in the previous 24 hour
interval. Invalid 15 minute intervals count as
0."
::= { dsx1TotalEntry 7 }
dsx1TotalLESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Errored Seconds encountered by
a DS1 interface in the previous 24 hour interval.
Invalid 15 minute intervals count as 0."
::= { dsx1TotalEntry 8 }
dsx1TotalBESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Bursty Errored Seconds (BESs)
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1TotalEntry 9 }
dsx1TotalDMs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Degraded Minutes (DMs) encountered
by a DS1 interface in the previous 24 hour
interval. Invalid 15 minute intervals count as
0."
::= { dsx1TotalEntry 10 }
dsx1TotalLCVs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Line Code Violations (LCVs)
encountered by a DS1 interface in the current 15
minute interval. Invalid 15 minute intervals
count as 0."
::= { dsx1TotalEntry 11 }
Next up is the DS1 Channel Table ๐ This is the mapping cheat sheet that takes a channel number on a DS3 (or a DS2 channel on a DS3, or a DS1 channel on a DS2) and tells you which ifIndex it belongs to, all in one lookup ๐ง No walking the ifStackTable required, literally so lazy-girl-approved ๐
-- The DS1 Channel Table
dsx1ChanMappingTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1ChanMappingEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Channel Mapping table. This table maps a
DS1 channel number on a particular DS3 into an
ifIndex. In the presence of DS2s, this table can
be used to map a DS2 channel number on a DS3 into
an ifIndex, or used to map a DS1 channel number on
a DS2 onto an ifIndex."
::= { ds1 16 }
dsx1ChanMappingEntry OBJECT-TYPE
SYNTAX Dsx1ChanMappingEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Channel Mapping table. There
is an entry in this table corresponding to each
ds1 ifEntry within any interface that is
channelized to the individual ds1 ifEntry level.
This table is intended to facilitate mapping from
channelized interface / channel number to DS1
ifEntry. (e.g., mapping (DS3 ifIndex, DS1 Channel
Number) -> ifIndex)
While this table provides information that can
also be found in the ifStackTable and
dsx1ConfigTable, it provides this same information
with a single table lookup, rather than by walking
the ifStackTable to find the various constituent
ds1 ifTable entries, and testing various
dsx1ConfigTable entries to check for the entry
with the applicable DS1 channel number."
INDEX { ifIndex, dsx1Ds1ChannelNumber }
::= { dsx1ChanMappingTable 1 }
Dsx1ChanMappingEntry ::=
SEQUENCE {
dsx1ChanMappedIfIndex InterfaceIndex
}
dsx1ChanMappedIfIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object indicates the ifIndex value assigned
by the agent for the individual ds1 ifEntry that
corresponds to the given DS1 channel number
(specified by the INDEX element
dsx1Ds1ChannelNumber) of the given channelized
interface (specified by INDEX element ifIndex)."
::= { dsx1ChanMappingEntry 1 }
Last stop for this part: the DS1 Far End Current Table ๐ฆ It holds the stats for the current 15 minute window, gathered from the far end messages on the Facilities Data Link, and it uses the same definitions as the near end stuff ๐
-- The DS1 Far End Current Table
dsx1FarEndCurrentTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1FarEndCurrentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Far End Current table contains various
statistics being collected for the current 15
minute interval. The statistics are collected
from the far end messages on the Facilities Data
Link. The definitions are the same as described
for the near-end information."
::= { ds1 10 }
dsx1FarEndCurrentEntry OBJECT-TYPE
SYNTAX Dsx1FarEndCurrentEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Far End Current table."
INDEX { dsx1FarEndCurrentIndex }
::= { dsx1FarEndCurrentTable 1 }
Dsx1FarEndCurrentEntry ::=
SEQUENCE {
dsx1FarEndCurrentIndex InterfaceIndex,
dsx1FarEndTimeElapsed INTEGER,
dsx1FarEndValidIntervals INTEGER,
dsx1FarEndCurrentESs PerfCurrentCount,
dsx1FarEndCurrentSESs PerfCurrentCount,
dsx1FarEndCurrentSEFSs PerfCurrentCount,
dsx1FarEndCurrentUASs PerfCurrentCount,
dsx1FarEndCurrentCSSs PerfCurrentCount,
dsx1FarEndCurrentLESs PerfCurrentCount,
dsx1FarEndCurrentPCVs PerfCurrentCount,
dsx1FarEndCurrentBESs PerfCurrentCount,
dsx1FarEndCurrentDMs PerfCurrentCount,
dsx1FarEndInvalidIntervals INTEGER
}
dsx1FarEndCurrentIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the DS1
interface to which this entry is applicable. The
interface identified by a particular value of this
index is identical to the interface identified by
the same value of dsx1LineIndex."
::= { dsx1FarEndCurrentEntry 1 }
dsx1FarEndTimeElapsed OBJECT-TYPE
SYNTAX INTEGER (0..899)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of seconds that have elapsed since the
beginning of the far end current error-measurement
period. If, for some reason, such as an adjustment
in the system's time-of-day clock, the current
interval exceeds the maximum value, the agent will
return the maximum value."
::= { dsx1FarEndCurrentEntry 2 }
dsx1FarEndValidIntervals OBJECT-TYPE
SYNTAX INTEGER (0..96)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of previous far end intervals for
which 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. In the case
where the agent is a proxy, it is possible that
some intervals are unavailable. In this case,
this interval is the maximum interval number for
which data is available."
::= { dsx1FarEndCurrentEntry 3 }
dsx1FarEndCurrentESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Errored Seconds."
::= { dsx1FarEndCurrentEntry 4 }
dsx1FarEndCurrentSESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Seconds."
::= { dsx1FarEndCurrentEntry 5 }
dsx1FarEndCurrentSEFSs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Framing
Seconds."
::= { dsx1FarEndCurrentEntry 6 }
dsx1FarEndCurrentUASs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds."
::= { dsx1FarEndCurrentEntry 7 }
dsx1FarEndCurrentCSSs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Controlled Slip Seconds."
::= { dsx1FarEndCurrentEntry 8 }
okay so these are the far end current counters, and they just keep ticking up while the 15 minute clock runs ๐ ๐
dsx1FarEndCurrentLESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Line Errored Seconds."
::= { dsx1FarEndCurrentEntry 9 }
dsx1FarEndCurrentPCVs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Path Coding Violations."
::= { dsx1FarEndCurrentEntry 10 }
dsx1FarEndCurrentBESs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Bursty Errored Seconds."
::= { dsx1FarEndCurrentEntry 11 }
dsx1FarEndCurrentDMs OBJECT-TYPE
SYNTAX PerfCurrentCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Degraded Minutes."
::= { dsx1FarEndCurrentEntry 12 }
dsx1FarEndInvalidIntervals OBJECT-TYPE
SYNTAX INTEGER (0..96)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
" The number of intervals in the range from 0 to
dsx1FarEndValidIntervals for which no data is
available. This object will typically be zero
except in cases where the data for some intervals
are not available (e.g., in proxy situations)."
::= { dsx1FarEndCurrentEntry 13 }
-- The DS1 Far End Interval Table
dsx1FarEndIntervalTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1FarEndIntervalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Far End Interval Table contains various
statistics collected by each DS1 interface over
the previous 24 hours of operation. The past 24
hours are broken into 96 completed 15 minute
intervals. Each row in this table represents one
such interval (identified by
dsx1FarEndIntervalNumber) for one specific
instance (identified by dsx1FarEndIntervalIndex)."
::= { ds1 11 }
dsx1FarEndIntervalEntry OBJECT-TYPE
SYNTAX Dsx1FarEndIntervalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Far End Interval table."
INDEX { dsx1FarEndIntervalIndex,
dsx1FarEndIntervalNumber }
::= { dsx1FarEndIntervalTable 1 }
Dsx1FarEndIntervalEntry ::=
SEQUENCE {
dsx1FarEndIntervalIndex InterfaceIndex,
dsx1FarEndIntervalNumber INTEGER,
dsx1FarEndIntervalESs PerfIntervalCount,
dsx1FarEndIntervalSESs PerfIntervalCount,
dsx1FarEndIntervalSEFSs PerfIntervalCount,
dsx1FarEndIntervalUASs PerfIntervalCount,
dsx1FarEndIntervalCSSs PerfIntervalCount,
dsx1FarEndIntervalLESs PerfIntervalCount,
dsx1FarEndIntervalPCVs PerfIntervalCount,
dsx1FarEndIntervalBESs PerfIntervalCount,
dsx1FarEndIntervalDMs PerfIntervalCount,
dsx1FarEndIntervalValidData TruthValue
}
dsx1FarEndIntervalIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the DS1
interface to which this entry is applicable. The
interface identified by a particular value of this
index is identical to the interface identified by
the same value of dsx1LineIndex."
::= { dsx1FarEndIntervalEntry 1 }
dsx1FarEndIntervalNumber OBJECT-TYPE
SYNTAX INTEGER (1..96)
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"A number between 1 and 96, where 1 is the most
recently completed 15 minute interval and 96 is
the 15 minutes interval completed 23 hours and 45
minutes prior to interval 1."
::= { dsx1FarEndIntervalEntry 2 }
dsx1FarEndIntervalESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Errored Seconds."
::= { dsx1FarEndIntervalEntry 3 }
dsx1FarEndIntervalSESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Seconds."
::= { dsx1FarEndIntervalEntry 4 }
dsx1FarEndIntervalSEFSs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Framing
Seconds."
::= { dsx1FarEndIntervalEntry 5 }
dsx1FarEndIntervalUASs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds."
::= { dsx1FarEndIntervalEntry 6 }
dsx1FarEndIntervalCSSs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Controlled Slip Seconds."
::= { dsx1FarEndIntervalEntry 7 }
dsx1FarEndIntervalLESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Line Errored Seconds."
::= { dsx1FarEndIntervalEntry 8 }
dsx1FarEndIntervalPCVs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Path Coding Violations."
::= { dsx1FarEndIntervalEntry 9 }
dsx1FarEndIntervalBESs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Bursty Errored Seconds."
::= { dsx1FarEndIntervalEntry 10 }
dsx1FarEndIntervalDMs OBJECT-TYPE
SYNTAX PerfIntervalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Degraded Minutes."
::= { dsx1FarEndIntervalEntry 11 }
dsx1FarEndIntervalValidData OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
" This variable indicates if the data for this
interval is valid."
::= { dsx1FarEndIntervalEntry 12 }
-- The DS1 Far End Total Table
dsx1FarEndTotalTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1FarEndTotalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The DS1 Far End Total Table contains the
cumulative sum of the various statistics for the
24 hour period preceding the current interval."
::= { ds1 12 }
dsx1FarEndTotalEntry OBJECT-TYPE
SYNTAX Dsx1FarEndTotalEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the DS1 Far End Total table."
INDEX { dsx1FarEndTotalIndex }
::= { dsx1FarEndTotalTable 1 }
Dsx1FarEndTotalEntry ::=
SEQUENCE {
dsx1FarEndTotalIndex InterfaceIndex,
dsx1FarEndTotalESs PerfTotalCount,
dsx1FarEndTotalSESs PerfTotalCount,
dsx1FarEndTotalSEFSs PerfTotalCount,
dsx1FarEndTotalUASs PerfTotalCount,
dsx1FarEndTotalCSSs PerfTotalCount,
dsx1FarEndTotalLESs PerfTotalCount,
dsx1FarEndTotalPCVs PerfTotalCount,
dsx1FarEndTotalBESs PerfTotalCount,
dsx1FarEndTotalDMs PerfTotalCount
}
dsx1FarEndTotalIndex OBJECT-TYPE
SYNTAX InterfaceIndex
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS current
DESCRIPTION
"The index value which uniquely identifies the DS1
interface to which this entry is applicable. The
interface identified by a particular value of this
index is identical to the interface identified by
the same value of dsx1LineIndex."
::= { dsx1FarEndTotalEntry 1 }
dsx1FarEndTotalESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Errored Seconds encountered
by a DS1 interface in the previous 24 hour
interval. Invalid 15 minute intervals count as
0."
::= { dsx1FarEndTotalEntry 2 }
dsx1FarEndTotalSESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Seconds
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1FarEndTotalEntry 3 }
dsx1FarEndTotalSEFSs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Severely Errored Framing
Seconds encountered by a DS1 interface in the
previous 24 hour interval. Invalid 15 minute
intervals count as 0."
::= { dsx1FarEndTotalEntry 4 }
dsx1FarEndTotalUASs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Unavailable Seconds encountered by
a DS1 interface in the previous 24 hour interval.
Invalid 15 minute intervals count as 0."
::= { dsx1FarEndTotalEntry 5 }
dsx1FarEndTotalCSSs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Controlled Slip Seconds
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1FarEndTotalEntry 6 }
dsx1FarEndTotalLESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Line Errored Seconds
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1FarEndTotalEntry 7 }
dsx1FarEndTotalPCVs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Far End Path Coding Violations
reported via the far end block error count
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1FarEndTotalEntry 8 }
dsx1FarEndTotalBESs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Bursty Errored Seconds (BESs)
encountered by a DS1 interface in the previous 24
hour interval. Invalid 15 minute intervals count
as 0."
::= { dsx1FarEndTotalEntry 9 }
dsx1FarEndTotalDMs OBJECT-TYPE
SYNTAX PerfTotalCount
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of Degraded Minutes (DMs) encountered
by a DS1 interface in the previous 24 hour
interval. Invalid 15 minute intervals count as
0."
::= { dsx1FarEndTotalEntry 10 }
-- The DS1 Fractional Table
okay so this is where the DS1 fractional table shows up, and it's giving slicing the pie ๐ฐ it's deprecated now in favour of ifStackTable, but the vibe is still iconic. the idea is that one DS1 gets split into channels, and each channel can belong to a different logical interface ๐ฆ
dsx1FracTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dsx1FracEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"This table is deprecated in favour of using
ifStackTable.
The table was mandatory for systems dividing a DS1
into channels containing different data streams
that are of local interest. Systems which are
indifferent to data content, such as CSUs, need
not implement it.
The DS1 fractional table identifies which DS1
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 an application managing a
North American ISDN Primary Rate link whose
division is a 384 kbit/s H1 _B_ Channel for Video,
a second H1 for data to a primary routing peer,
and 12 64 kbit/s H0 _B_ Channels. Consider that
some subset of the H0 channels are used for voice
and the remainder are available for dynamic data
calls.
We count a total of 14 interfaces multiplexed onto
the DS1 interface. Six DS1 channels (for the sake
of the example, channels 1..6) are used for Video,
six more (7..11 and 13) are used for data, and the
remaining 12 are in channels 12 and 14..24.
Let us further imagine that ifIndex 2 is of type
DS1 and refers to the DS1 interface, and that the
interfaces layered onto it are numbered 3..16.
We might describe the allocation of channels, in
the dsx1FracTable, as follows:
dsx1FracIfIndex.2. 1 = 3 dsx1FracIfIndex.2.13 = 4
dsx1FracIfIndex.2. 2 = 3 dsx1FracIfIndex.2.14 = 6
dsx1FracIfIndex.2. 3 = 3 dsx1FracIfIndex.2.15 = 7
dsx1FracIfIndex.2. 4 = 3 dsx1FracIfIndex.2.16 = 8
dsx1FracIfIndex.2. 5 = 3 dsx1FracIfIndex.2.17 = 9
dsx1FracIfIndex.2. 6 = 3 dsx1FracIfIndex.2.18 = 10
dsx1FracIfIndex.2. 7 = 4 dsx1FracIfIndex.2.19 = 11
dsx1FracIfIndex.2. 8 = 4 dsx1FracIfIndex.2.20 = 12
dsx1FracIfIndex.2. 9 = 4 dsx1FracIfIndex.2.21 = 13
dsx1FracIfIndex.2.10 = 4 dsx1FracIfIndex.2.22 = 14
dsx1FracIfIndex.2.11 = 4 dsx1FracIfIndex.2.23 = 15
dsx1FracIfIndex.2.12 = 5 dsx1FracIfIndex.2.24 = 16
For North American (DS1) interfaces, there are 24
legal channels, numbered 1 through 24.
For G.704 interfaces, there are 31 legal channels,
numbered 1 through 31. The channels (1..31)
correspond directly to the equivalently numbered
time-slots."
::= { ds1 13 }
okay the example is my fave bc it's a whole ISDN Primary Rate link with video, data, and voice all sharing one DS1 ๐ 14 interfaces stacked on one pipe, honestly so organized ๐ญ the table shows which channel goes to which ifIndex, and channels with no interface use zero ๐ธ
dsx1FracEntry OBJECT-TYPE
SYNTAX Dsx1FracEntry
MAX-ACCESS not-accessible
STATUS deprecated
DESCRIPTION
"An entry in the DS1 Fractional table."
INDEX { dsx1FracIndex, dsx1FracNumber }
::= { dsx1FracTable 1 }
Dsx1FracEntry ::=
SEQUENCE {
dsx1FracIndex INTEGER,
dsx1FracNumber INTEGER,
dsx1FracIfIndex INTEGER
}
dsx1FracIndex OBJECT-TYPE
SYNTAX INTEGER (1..'7fffffff'h)
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS deprecated
DESCRIPTION
"The index value which uniquely identifies the
DS1 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 dsx1LineIndex
object instance."
::= { dsx1FracEntry 1 }
dsx1FracNumber OBJECT-TYPE
SYNTAX INTEGER (1..31)
MAX-ACCESS read-only -- read-only since originally an
-- SMIv1 index
STATUS deprecated
DESCRIPTION
"The channel number for this entry."
::= { dsx1FracEntry 2 }
dsx1FracIfIndex OBJECT-TYPE
SYNTAX INTEGER (0..'7fffffff'h)
MAX-ACCESS read-write
STATUS deprecated
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."
::= { dsx1FracEntry 3 }
ok now the traps ๐ these are the little pings that tell the NMS something changed, so it can go poll the box and see what's up ๐
-- DS1 TRAPS
ds1Traps OBJECT IDENTIFIER ::= { ds1 15 }
dsx1LineStatusChange NOTIFICATION-TYPE
OBJECTS { dsx1LineStatus,
dsx1LineStatusLastChange }
STATUS current
DESCRIPTION
"A dsx1LineStatusChange trap is sent when the
value of an instance dsx1LineStatus changes. It
can be utilized by an NMS to trigger polls. When
the line status change results from a higher level
line status change (i.e., ds3), then no traps for
the ds1 are sent."
::= { ds1Traps 0 1 }
and now the conformance section, which is basically the checklist of what a box has to support to be called compliant ๐ the deprecated statements are still in here so you know what they used to expect ๐ง
-- conformance information
ds1Conformance OBJECT IDENTIFIER ::= { ds1 14 }
ds1Groups OBJECT IDENTIFIER ::= { ds1Conformance 1 }
ds1Compliances OBJECT IDENTIFIER ::= { ds1Conformance 2 }
-- compliance statements
ds1Compliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"The compliance statement for T1 and E1
interfaces."
MODULE -- this module
MANDATORY-GROUPS { ds1NearEndConfigGroup,
ds1NearEndStatisticsGroup }
GROUP ds1FarEndGroup
DESCRIPTION
"Implementation of this group is optional for all
systems that attach to a DS1 Interface."
GROUP ds1NearEndOptionalConfigGroup
DESCRIPTION
"Implementation of this group is optional for all
systems that attach to a DS1 Interface."
GROUP ds1DS2Group
DESCRIPTION
"Implementation of this group is mandatory for all
systems that attach to a DS2 Interface."
GROUP ds1TransStatsGroup
DESCRIPTION
"This group is the set of statistics appropriate
for all systems which attach to a DS1 Interface
running transparent or unFramed lineType."
GROUP ds1ChanMappingGroup
DESCRIPTION
"This group is the set of objects for mapping a
DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex.
Implementation of this group is mandatory for
systems which support the channelization of DS3s
into DS1s."
OBJECT dsx1LineType
SYNTAX INTEGER {
other(1),
dsx1ESF(2),
dsx1D4(3),
dsx1E1(4),
dsx1E1CRC(5),
dsx1E1MF(6),
dsx1E1CRCMF(7),
dsx1Unframed(8),
dsx1E1Unframed(9),
dsx1DS2M12(10),
dsx1E2(11)
}
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line type is not
required."
OBJECT dsx1LineCoding
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line coding is not
required."
OBJECT dsx1SendCode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the send code is not
required."
OBJECT dsx1LoopbackConfig
MIN-ACCESS read-only
DESCRIPTION
"The ability to set loopbacks is not required."
OBJECT dsx1SignalMode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the signal mode is not
required."
OBJECT dsx1TransmitClockSource
SYNTAX INTEGER {
loopTiming(1),
localTiming(2),
throughTiming(3)
}
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the transmit clock source is
not required."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the FDL is not required."
OBJECT dsx1LineLength
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line length is not
required."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization is not
required."
::= { ds1Compliances 1 }
last bit of this part is the ISDN Primary Rate compliance statement for T1 lines ๐ it's a narrower version that pins down the exact values that link type is allowed to use ๐ฆ
ds1MibT1PriCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"Compliance statement for using this MIB for ISDN
Primary Rate interfaces on T1 lines."
MODULE
MANDATORY-GROUPS { ds1NearEndConfigGroup,
ds1NearEndStatisticsGroup }
OBJECT dsx1LineType
SYNTAX INTEGER {
dsx1ESF(2) -- Intl Spec would be G704(2)
-- or I.431(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Line type for T1 ISDN Primary Rate
interfaces."
OBJECT dsx1LineCoding
SYNTAX INTEGER {
dsx1B8ZS(2)
}
MIN-ACCESS read-only
DESCRIPTION
"Type of Zero Code Suppression for
T1 ISDN Primary Rate interfaces."
OBJECT dsx1SignalMode
SYNTAX INTEGER {
none(1), -- if there is no signaling channel
messageOriented(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Possible signaling modes for
T1 ISDN Primary Rate interfaces."
OBJECT dsx1TransmitClockSource
SYNTAX INTEGER {
loopTiming(1)
}
MIN-ACCESS read-only
DESCRIPTION
"The transmit clock is derived from
received clock on ISDN Primary Rate
interfaces."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"Facilities Data Link usage on T1 ISDN
Primary Rate interfaces.
Note: Eventually dsx1Att-54016(4) is to be
used here since the line type is ESF."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization
is not required."
::= { ds1Compliances 2 }
okay so this is the E1 Primary Rate compliance statement, and it's marked deprecated ๐ฅ so it's the retired-but-still-here one, like an old playlist you can't delete ๐
ds1MibE1PriCompliance MODULE-COMPLIANCE
STATUS deprecated
DESCRIPTION
"Compliance statement for using this MIB for ISDN
Primary Rate interfaces on E1 lines."
MODULE
MANDATORY-GROUPS { ds1NearEndConfigGroup,
ds1NearEndStatisticsGroup }
OBJECT dsx1LineType
SYNTAX INTEGER {
dsx1E1CRC(5)
}
MIN-ACCESS read-only
DESCRIPTION
"Line type for E1 ISDN Primary Rate
interfaces."
OBJECT dsx1LineCoding
SYNTAX INTEGER {
dsx1HDB3(3)
}
MIN-ACCESS read-only
DESCRIPTION
"Type of Zero Code Suppression for
E1 ISDN Primary Rate interfaces."
OBJECT dsx1SignalMode
SYNTAX INTEGER {
messageOriented(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Signaling on E1 ISDN Primary Rate interfaces
is always message oriented."
OBJECT dsx1TransmitClockSource
SYNTAX INTEGER {
loopTiming(1)
}
MIN-ACCESS read-only
DESCRIPTION
"The transmit clock is derived from received
clock on ISDN Primary Rate interfaces."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"Facilities Data Link usage on E1 ISDN
Primary Rate interfaces.
Note: There is a 'M-Channel' in E1,
using National Bit Sa4 (G704,
Table 4a). It is used to implement
management features between ET
and NT. This is different to
FDL in T1, which is used to carry
control signals and performance
data. In E1, control and status
signals are carried using National
Bits Sa5, Sa6 and A (RAI Ind.).
This indicates that only the other(1) or
eventually the dsx1Fdl-none(8) bits should
be set in this object for E1 PRI."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization is not
required."
::= { ds1Compliances 3 }
ngl the FDL note in here is giving textbook ๐๐ E1 uses Sa4 for the M-Channel, and control and status ride on Sa5, Sa6 and A, while T1 does its own thing with FDL ๐ฆ
ds1Ds2Compliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statement for using this MIB for DS2
interfaces."
MODULE
MANDATORY-GROUPS { ds1DS2Group }
OBJECT dsx1LineType
SYNTAX INTEGER {
dsx1DS2M12(10),
dsx1E2(11)
}
MIN-ACCESS read-only
DESCRIPTION
"Line type for DS2, E2
interfaces."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization is not
required."
::= { ds1Compliances 4 }
this one's the DS2 side of the family ๐ธ the DS2 group is the mandatory one here, and the line types are DS2 M12 and E2 ๐
ds1NCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for T1 and E1
interfaces."
MODULE -- this module
MANDATORY-GROUPS { ds1NearEndConfigurationGroup,
ds1NearEndStatisticsGroup }
GROUP ds1FarEndGroup
DESCRIPTION
"Implementation of this group is optional for all
systems that attach to a DS1 Interface."
GROUP ds1NearEndOptionalTrapGroup
DESCRIPTION
"Implementation of this group is optional for all
systems that attach to a DS1 Interface. If it is
implemented then ds1NearEndOptionalConfigGroup
should also be implemented."
GROUP ds1NearEndOptionalConfigGroup
DESCRIPTION
"Implementation of this group is recommended for
all systems that attach to a DS1 Interface and
implement ds1NearEndOptionalTrapGroup."
GROUP ds1DS2Group
DESCRIPTION
"Implementation of this group is mandatory for all
systems that attach to a DS2 Interface."
GROUP ds1TransStatsGroup
DESCRIPTION
"This group is the set of statistics appropriate
for all systems which attach to a DS1 Interface
running transparent or unFramed lineType."
GROUP ds1ChanMappingGroup
DESCRIPTION
"This group is the set of objects for mapping a
DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex.
Implementation of this group is mandatory for
systems which support the channelization of DS3s
into DS1s."
OBJECT dsx1LineType
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line type is not
required."
OBJECT dsx1LineCoding
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line coding is not
required."
OBJECT dsx1SendCode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the send code is not
required."
OBJECT dsx1LoopbackConfig
MIN-ACCESS read-only
DESCRIPTION
"The ability to set loopbacks is not required."
OBJECT dsx1SignalMode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the signal mode is not
required."
OBJECT dsx1TransmitClockSource
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the transmit clock source is
not required."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the FDL is not required."
OBJECT dsx1LineLength
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the line length is not
required."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization is not
required."
OBJECT dsx1LineMode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line Mode is not
required."
OBJECT dsx1LineBuildOut
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line build out is not
required."
::= { ds1Compliances 5 }
this is the big umbrella one for T1 and E1 together ๐ a bunch of groups are optional, and the "ability to set" objects are all read-only minimums, so the vibe is flexible but still organized โจ
ds1MibT1PriNCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statement for using this MIB for ISDN
Primary Rate interfaces on T1 lines."
MODULE
MANDATORY-GROUPS { ds1NearEndConfigurationGroup,
ds1NearEndStatisticsGroup }
OBJECT dsx1LineType
SYNTAX INTEGER {
dsx1ESF(2) -- Intl Spec would be G704(2)
-- or I.431(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Line type for T1 ISDN Primary Rate
interfaces."
OBJECT dsx1LineCoding
SYNTAX INTEGER {
dsx1B8ZS(2)
}
MIN-ACCESS read-only
DESCRIPTION
"Type of Zero Code Suppression for
T1 ISDN Primary Rate interfaces."
OBJECT dsx1SignalMode
SYNTAX INTEGER {
none(1), -- if there is no signaling channel
messageOriented(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Possible signaling modes for
T1 ISDN Primary Rate interfaces."
OBJECT dsx1TransmitClockSource
SYNTAX INTEGER {
loopTiming(1)
}
MIN-ACCESS read-only
DESCRIPTION
"The transmit clock is derived from
received clock on ISDN Primary Rate
interfaces."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"Facilities Data Link usage on T1 ISDN
Primary Rate interfaces.
Note: Eventually dsx1Att-54016(4) is to be
used here since the line type is ESF."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization
is not required."
OBJECT dsx1LineMode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line Mode is not
required."
OBJECT dsx1LineBuildOut
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line build out is not
required."
::= { ds1Compliances 6 }
T1 PRI gets its own compliance statement, with the line type pinned to ESF, B8ZS coding and loop timing ๐ฆ the signal mode can be none or message oriented, so it's flexible but still very specific ๐
ds1MibE1PriNCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"Compliance statement for using this MIB for ISDN
Primary Rate interfaces on E1 lines."
MODULE
MANDATORY-GROUPS { ds1NearEndConfigurationGroup,
ds1NearEndStatisticsGroup }
OBJECT dsx1LineType
SYNTAX INTEGER {
dsx1E1CRC(5)
}
MIN-ACCESS read-only
DESCRIPTION
"Line type for E1 ISDN Primary Rate
interfaces."
OBJECT dsx1LineCoding
SYNTAX INTEGER {
dsx1HDB3(3)
}
MIN-ACCESS read-only
DESCRIPTION
"Type of Zero Code Suppression for
E1 ISDN Primary Rate interfaces."
OBJECT dsx1SignalMode
SYNTAX INTEGER {
messageOriented(4)
}
MIN-ACCESS read-only
DESCRIPTION
"Signaling on E1 ISDN Primary Rate interfaces
is always message oriented."
OBJECT dsx1TransmitClockSource
SYNTAX INTEGER {
loopTiming(1)
}
MIN-ACCESS read-only
DESCRIPTION
"The transmit clock is derived from received
clock on ISDN Primary Rate interfaces."
OBJECT dsx1Fdl
MIN-ACCESS read-only
DESCRIPTION
"Facilities Data Link usage on E1 ISDN
Primary Rate interfaces.
Note: There is a 'M-Channel' in E1,
using National Bit Sa4 (G704,
Table 4a). It is used to implement
management features between ET
and NT. This is different to
FDL in T1, which is used to carry
control signals and performance
data. In E1, control and status
signals are carried using National
Bits Sa5, Sa6 and A (RAI Ind.).
This indicates that only the other(1) or
eventually the dsx1Fdl-none(8) bits should
be set in this object for E1 PRI."
OBJECT dsx1Channelization
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the channelization is not
required."
OBJECT dsx1LineMode
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line Mode is not required."
OBJECT dsx1LineBuildOut
MIN-ACCESS read-only
DESCRIPTION
"The ability to set the Line build out is not
required."
::= { ds1Compliances 7 }
and that's the E1 PRI non-deprecated version ๐ same core rules as the old one, just with LineMode and LineBuildOut added to the read-only list ๐ซถ
-- units of conformance
Okay so the groups are where the good stuff lives ๐ง Here's how the DS1 units of conformance are set up, exactly as written:
ds1NearEndConfigGroup OBJECT-GROUP
OBJECTS { dsx1LineIndex,
dsx1TimeElapsed,
dsx1ValidIntervals,
dsx1LineType,
dsx1LineCoding,
dsx1SendCode,
dsx1CircuitIdentifier,
dsx1LoopbackConfig,
dsx1LineStatus,
dsx1SignalMode,
dsx1TransmitClockSource,
dsx1Fdl,
dsx1InvalidIntervals,
dsx1LineLength,
dsx1LoopbackStatus,
dsx1Ds1ChannelNumber,
dsx1Channelization }
STATUS deprecated
DESCRIPTION
"A collection of objects providing configuration
information applicable to all DS1 interfaces."
::= { ds1Groups 1 }
ds1NearEndStatisticsGroup OBJECT-GROUP
OBJECTS { dsx1CurrentIndex,
dsx1CurrentESs,
dsx1CurrentSESs,
dsx1CurrentSEFSs,
dsx1CurrentUASs,
dsx1CurrentCSSs,
dsx1CurrentPCVs,
dsx1CurrentLESs,
dsx1CurrentBESs,
dsx1CurrentDMs,
dsx1CurrentLCVs,
dsx1IntervalIndex,
dsx1IntervalNumber,
dsx1IntervalESs,
dsx1IntervalSESs,
dsx1IntervalSEFSs,
dsx1IntervalUASs,
dsx1IntervalCSSs,
dsx1IntervalPCVs,
dsx1IntervalLESs,
dsx1IntervalBESs,
dsx1IntervalDMs,
dsx1IntervalLCVs,
dsx1IntervalValidData,
dsx1TotalIndex,
dsx1TotalESs,
dsx1TotalSESs,
dsx1TotalSEFSs,
dsx1TotalUASs,
dsx1TotalCSSs,
dsx1TotalPCVs,
dsx1TotalLESs,
dsx1TotalBESs,
dsx1TotalDMs,
dsx1TotalLCVs }
STATUS current
DESCRIPTION
"A collection of objects providing statistics
information applicable to all DS1 interfaces."
::= { ds1Groups 2 }
ds1FarEndGroup OBJECT-GROUP
OBJECTS { dsx1FarEndCurrentIndex,
dsx1FarEndTimeElapsed,
dsx1FarEndValidIntervals,
dsx1FarEndCurrentESs,
dsx1FarEndCurrentSESs,
dsx1FarEndCurrentSEFSs,
dsx1FarEndCurrentUASs,
dsx1FarEndCurrentCSSs,
dsx1FarEndCurrentLESs,
dsx1FarEndCurrentPCVs,
dsx1FarEndCurrentBESs,
dsx1FarEndCurrentDMs,
dsx1FarEndInvalidIntervals,
dsx1FarEndIntervalIndex,
dsx1FarEndIntervalNumber,
dsx1FarEndIntervalESs,
dsx1FarEndIntervalSESs,
dsx1FarEndIntervalSEFSs,
dsx1FarEndIntervalUASs,
dsx1FarEndIntervalCSSs,
dsx1FarEndIntervalLESs,
dsx1FarEndIntervalPCVs,
dsx1FarEndIntervalBESs,
dsx1FarEndIntervalDMs,
dsx1FarEndIntervalValidData,
dsx1FarEndTotalIndex,
dsx1FarEndTotalESs,
dsx1FarEndTotalSESs,
dsx1FarEndTotalSEFSs,
dsx1FarEndTotalUASs,
dsx1FarEndTotalCSSs,
dsx1FarEndTotalLESs,
dsx1FarEndTotalPCVs,
dsx1FarEndTotalBESs,
dsx1FarEndTotalDMs }
STATUS current
DESCRIPTION
"A collection of objects providing remote
configuration and statistics information."
::= { ds1Groups 3 }
ds1DeprecatedGroup OBJECT-GROUP
OBJECTS { dsx1IfIndex,
dsx1FracIndex,
dsx1FracNumber,
dsx1FracIfIndex }
STATUS deprecated
DESCRIPTION
"A collection of obsolete objects that may be
implemented for backwards compatibility."
::= { ds1Groups 4 }
ds1NearEndOptionalConfigGroup OBJECT-GROUP
OBJECTS { dsx1LineStatusLastChange,
dsx1LineStatusChangeTrapEnable }
STATUS current
DESCRIPTION
"A collection of objects that may be implemented
on DS1 and DS2 interfaces."
::= { ds1Groups 5 }
ds1DS2Group OBJECT-GROUP
OBJECTS { dsx1LineIndex,
dsx1LineType,
dsx1LineCoding,
dsx1SendCode,
dsx1LineStatus,
dsx1SignalMode,
dsx1TransmitClockSource,
dsx1Channelization }
STATUS current
DESCRIPTION
"A collection of objects providing information
about DS2 (6,312 kbps) and E2 (8,448 kbps)
systems."
::= { ds1Groups 6 }
ds1TransStatsGroup OBJECT-GROUP
OBJECTS { dsx1CurrentESs,
dsx1CurrentSESs,
dsx1CurrentUASs,
dsx1IntervalESs,
dsx1IntervalSESs,
dsx1IntervalUASs,
dsx1TotalESs,
dsx1TotalSESs,
dsx1TotalUASs }
STATUS current
DESCRIPTION
"A collection of objects which are the
statistics which can be collected from a ds1
interface that is running transparent or unframed
lineType. Statistics not in this list should
return noSuchInstance."
::= { ds1Groups 7 }
ds1NearEndOptionalTrapGroup NOTIFICATION-GROUP
NOTIFICATIONS { dsx1LineStatusChange }
STATUS current
DESCRIPTION
"A collection of notifications that may be
implemented on DS1 and DS2 interfaces."
::= { ds1Groups 8 }
ds1ChanMappingGroup OBJECT-GROUP
OBJECTS { dsx1ChanMappedIfIndex }
STATUS current
DESCRIPTION
"A collection of objects that give an mapping of
DS3 Channel (dsx1Ds1ChannelNumber) to ifIndex."
::= { ds1Groups 9 }
ds1NearEndConfigurationGroup OBJECT-GROUP
OBJECTS { dsx1LineIndex,
dsx1TimeElapsed,
dsx1ValidIntervals,
dsx1LineType,
dsx1LineCoding,
dsx1SendCode,
dsx1CircuitIdentifier,
dsx1LoopbackConfig,
dsx1LineStatus,
dsx1SignalMode,
dsx1TransmitClockSource,
dsx1Fdl,
dsx1InvalidIntervals,
dsx1LineLength,
dsx1LoopbackStatus,
dsx1Ds1ChannelNumber,
dsx1Channelization,
dsx1LineMode,
dsx1LineBuildOut }
STATUS current
DESCRIPTION
"A collection of objects providing configuration
information applicable to all DS1 interfaces."
::= { ds1Groups 10 }
END
4. Acknowledgments โจ
This doc was put together by the AToM MIB Working Group ๐ซถ The Editor wants to give a huge shoutout to C. Mike Heard ๐ for doing a top notch doctor review and dropping so many helpful suggestions. The Editor also wants to acknowledge D. Fowler, Editor of RFC 2495, and F. Baker and J. Watt, Editors of RFC 1406. Iconic behaviour from the whole squad ๐
5. Security Considerations ๐
Okay, this section is SERIOUS bestie ๐ There are a bunch of management objects in this MIB module with a MAX-ACCESS clause of read-write. Those objects can be sensitive or vulnerable in some network environments. Supporting SET operations in a non-secure environment without proper protection can seriously mess with network operations. Here's the breakdown of which objects are sensitive and why.
Setting the following objects to incorrect values may result in traffic interruptions ๐จ:
dsx1LineTypedsx1LineCodingdsx1SendCodedsx1LoopbackConfigdsx1SignalModedsx1TransmitClockSourcedsx1Fdldsx1LineLengthdsx1Channelizationdsx1LineModedsx1LineBuildOut
For example, with dsx1LineType, both ends of a DS1/E1 must have the same value in order for traffic to flow. Another example: with dsx1SendCode and dsx1LoopbackConfig, traffic may stop transmitting when particular loopbacks are applied.
Setting the following object to an incorrect value won't harm the traffic itself ๐, but it may cause a circuit to be mis-identified. That can create real headaches for service personnel trying to troubleshoot a problem:
dsx1CircuitIdentifier
Setting the following object can cause an increase in the number of traps received by the network management station:
dsx1LineStatusChangeTrapEnable
The readable objects in this MIB module (the ones with a MAX-ACCESS other than not-accessible) may be considered sensitive in some environments. Collectively they give extensive information about the performance of interfaces in DS1/E1/DS2/E2 equipment or networks, and they can reveal some aspects of configuration ๐. In those environments it's important to control even GET and NOTIFY access to these objects, and possibly to encrypt the values of these objects when sending them over the network via SNMP.
SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPSec), there's still no control over who on that secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module. Yikes ๐ญ
It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy) ๐
Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It's then a customer/operator responsibility to make sure the SNMP entity giving access to an instance of this MIB module is properly configured, so the objects are only accessible to those principals (users) who have legitimate rights to GET or SET (change/create/delete) them. Main character energy for the security team ๐
6. References โจ
6.1. Normative References โจ
bestie, these are the docs you need to have read before you can say you know this stuff ๐๐ Anything here is basically required reading, no cap.
- [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.
- [AT&T-TR-54016] AT&T Technical Reference, Requirements for Interfacing Digital Terminal Equipment to Services Employing the Extended Superframe Format, Publication 54016, May 1988.
- [ANSI-T1.403] American National Standard for Telecommunications -- Carrier-to-Customer Installation - DS1 Metallic Interface, T1.403, February 1989.
- [CCITT-G.703] CCITT Specifications Volume III, Recommendation G.703, Physical/Electrical Characteristics of Hierarchical Digital Interfaces, April 1991.
- [ITU-T-G.704] ITU-T G.704: Synchronous frame structures used at 1544, 6312, 2048, 8488 and 44 736 kbit/s Hierarchical Levels, July 1995.
- [ANSI-T1.231] American National Standard for Telecommunications -- Digital Hierarchy -- Layer 1 In-Service Digital Transmission Performance Monitoring, T1.231, Sept 1993.
- [CCITT-O.162] CCITT Specifications Volume IV, Recommendation O.162, Equipment To Perform In Service Monitoring On 2048 kbit/s Signals, July 1988.
- [CCITT-G.821] CCITT Specifications Volume III, Recommendation G.821, Error Performance Of An International Digital Connection Forming Part Of An Integrated Services Digital Network, July 1988.
- [AT&T-TR-62411] AT&T Technical Reference, Technical Reference 62411, ACCUNET T1.5 Service Description And Interface Specification, December 1990.
- [CCITT-G.706] CCITT Specifications Volume III, Recommendation G.706, Frame Alignment and Cyclic Redundancy Check (CRC) Procedures Relating to Basic Frame Structures Defined in Recommendation G.704, July 1988.
- [CCITT-G.732] CCITT Specifications Volume III, Recommendation G.732, Characteristics Of Primary PCM Multiplex Equipment Operating at 2048 kbit/s, July 1988.
- [ITU-T-G.775] ITU-T G.775: Loss of signal (LOS) and alarm indication signal (AIS) defect detection and clearance criteria, May 1995.
- [ITU-T-G.826] ITU-T G.826: Error performance parameters and objectives for international, constant bit rate digital paths at or above the primary rate, November 1993.
- [ANSI-T1.107] American National Standard for Telecommunications -- Digital Hierarchy - Format Specifications, T1.107, August 1988.
- [RFC3593] Tesink, K., Ed., "Textual Conventions for MIB Modules Using Performance History Based on 15 Minute Intervals", RFC 3593, September 2003.
- [ITU-T-M.1400] ITU-T M.1400: Designation For Interconnections Among Network Operators, October 2001.
6.2. Informative References ๐ธ
these ones are the extra reading. helpful, but you don't have to know them to get the main ideas ๐ง
- [RFC1213] McCloghrie, K. and M. Rose, "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", STD 17, RFC 1213, March 1991.
- [RFC2494] Fowler, D., "Definitions of Managed Objects for the DS0 and DS0 Bundle Interface Type", RFC 2494, January 1999.
- [RFC2495] Fowler, D., Ed., "Definitions of Managed Objects for the DS1, E1, DS2 and E1 Interface Types", RFC 2495, January 1999.
- [RFC1406] Baker, F. and J. Watt, Eds., "Definitions of Managed Objects for the DS1 and E1 Interface Types", RFC 1406, January 1993.
- [AT&T-UM-305] AT&T Information Systems, AT&T ESF DS1 Channel Service Unit User's Manual, 999-100-305, February 1988.
- [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction and Applicability Statements for Internet-Standard Management Framework", RFC 3410, December 2002.
- [RFC3592] Tesink, K., "Definitions of Managed Objects for the Synchronous Optical Network/Synchronous Digital Hierarchy (SONET/SDH) Interface Type", RFC 3592, September 2003.
- [RFC3896] Nicklass, O., Ed., "Definitions of Managed Objects for the DS3/E3 Interface Types", RFC 3896, September 2004.
Appendix A - Use of dsx1IfIndex and dsx1LineIndex ๐ฆ
okay so this appendix is basically the history lesson for dsx1IfIndex and dsx1LineIndex ๐ it explains how they were used before and how they relate to the dsx1LineIndex from RFC 1406 ๐
It's giving clarity, I promise. Here's the old and new definitions and how they connect:
[New Definition]: "This object should be made equal to ifIndex. The
next paragraph describes its previous usage. Making the object equal
to ifIndex allows proper use of ifStackTable and ds0/ds0bundle mibs.
[Old Definition]: "This object is the identifier of a DS1 Interface
on a managed device. If there is an ifEntry that is directly
associated with this and only this DS1 interface, it should have the
same value as ifIndex. Otherwise, number the dsx1LineIndices 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."
So when the Old Definition was written, the idea was to let a manager treat the value as if it were an ifIndex. Basically the value would either be 1) an ifIndex value or 2) a value guaranteed to be different from every valid ifIndex value. Lowkey clever ๐ง
The New Definition is just a subset of that. The value is always an ifIndex value now, which is way simpler ๐
Next up is Section 3.1 from RFC 1406, which explains why two indices exist in the first place ๐ฅ The old MIB introduced dsx1IfIndex and dsx1LineIndex because there are different physical setups for running SNMP with DS1 gear. Those two indices are the whole reason this stuff is confusing, so it's worth knowing ๐
First scenario, the external interface one. Here the SNMP Agent treats every managed DS1 line as an external interface. Think an Agent living right on the device that has the DS1 interfaces. In this case every interface gets an integer equal to its ifIndex, so all three are the same:
ifIndex=dsx1IfIndex=dsx1LineIndex for all interfaces.
The dsx1IfIndex column in the DS1 Configuration table ties each DS1 interface to its matching ifIndex in the Internet-standard MIB (MIB-II, STD 17, RFC 1213) [RFC1213].
Second scenario is the external and internal interface one. This time the SNMP Agent lives on a host that's outside the device with the DS1 interfaces, like a router. The Agent represents both the host and the DS1 device. The dsx1LineIndex covers the DS1 interfaces outside the host/DS1-device combo, and also the DS1 interfaces connecting the host and the DS1 device. dsx1IfIndex is always equal to ifIndex here โจ
Here's the example, a shelf full of CSUs hooked up to a Router. An SNMP Agent on the router proxies for itself and the CSU. The router also has an Ethernet interface ๐
+-----+
| | |
| | | +---------------------+
|E | | 1.544 MBPS | Line#A | DS1 Link
|t | R |---------------+ - - - - - - - - - +------>
|h | | | |
|e | O | 1.544 MBPS | Line#B | DS1 Link
|r | |---------------+ - - - - - - - - - - +------>
|n | U | | CSU Shelf |
|e | | 1.544 MBPS | Line#C | DS1 Link
|t | T |---------------+ - - - -- -- - - - - +------>
| | | | |
|-----| E | 1.544 MBPS | Line#D | DS1 Link
| | |---------------+ - - - - -- - - - - +------>
| | R | |_____________________|
| | |
| +-----+
In this example the index values could look like this:
ifIndex (= dsx1IfIndex) dsx1LineIndex
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
For this example ifNumber equals 5. Quick reminder about dsx1LineIndex: it identifies a DS1 Interface on a managed device. If there's an ifEntry directly associated with this and only this DS1 interface, it should have the same value as ifIndex. Otherwise you number the dsx1LineIndices with a unique identifier, picking a number greater than ifNumber, giving inside interfaces (equipment side) even numbers and outside interfaces (network side) odd numbers ๐ซถ
If the CSU shelf gets managed by its own local SNMP Agent, the situation looks like this:
ifIndex (= dsx1IfIndex) dsx1LineIndex
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
Appendix B - The delay approach to Unavailable Seconds. ๐ฐ๏ธ
this one's the delay approach for Unavailable Seconds, and it's honestly so clever ๐
It's shown here for a DS1 ESF interface. Similar rules would apply to other DS1, DS2, and E1 interface variants ๐ The procedure keeps the statistical counters correctly updated at all times, even though they lag real time by 10 seconds โณ
Here's how it goes. At the end of each 15-minute interval, the current interval counts get moved into the most recent interval entry, and each interval shifts up by one position. If there's no room, the oldest one gets discarded. Then the current interval counts start over from zero ๐
Note, however, that the signal state calculation does not start afresh at each interval boundary. Signal state information is retained across interval boundaries. Main character energy for sure ๐
+---------------------------------------------------------------------+
| READ COUNTERS & STATUS INFO FROM HARDWARE |
| |
| BPV EXZ LOS FE CRC CS AIS SEF OOF LOF RAI G1-G6 SE FE LV SL |
+---------------------------------------------------------------------+
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
V V V V V V V V V V V V V V V V
+---------------------------------------------------------------------+
| ACCUM ONE-SEC STATS, CHK ERR THRESHOLDS, & UPDT SIGNAL STATE |
| |
| |<---------- NEAR END ----------->| |<-------- FAR END ------>| |
| |
| LCV LES PCV ES CSS BES SES SEFS A/U PCV ES CSS BES SES SEFS A/U |
+---------------------------------------------------------------------+
| | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | |
V V V V V V V V | V V V V V V |
+------------------------------+ | +----------------------+ |
| ONE-SEC DELAY | | | ONE-SEC DELAY | |
| (1 OF 10) | | | (1 OF 10) | |
+------------------------------+ | +----------------------+ |
| | | | | | | | | | | | | | | |
/ / / / / / / / / / / / / / / /
| | | | | | | | | | | | | | | |
V V V V V V V V | V V V V V V |
+------------------------------+ | +----------------------+ |
| ONE-SEC DELAY | | | ONE-SEC DELAY | |
| (10 OF 10) | | | (10 OF 10) | |
+------------------------------+ | +----------------------+ |
| | | | | | | | | | | | | | | |
V V V V V V V V V V V V V V V V
+---------------------------------------------------------------------+
| UPDATE STATISTICS COUNTERS |
| |
|<-------------- NEAR END ----------->| |<--------- FAR END---------> |
| |
|LCV LES PCV ES CSS BES SES SEFS UAS DM PCV ES CSS BES SES SEFS UAS DM|
+---------------------------------------------------------------------+
Okay so bestie, this is the big picture ๐ง Counters and status info get pulled off the hardware, then one-second stats get accumulated and error thresholds get checked, and the signal state gets updated. Near end and far end each get their own lane, and the ten-second delay buffer is what keeps the counters honest ๐
Note that if you go with this procedure, there is no current interval data for the first ten seconds after a system comes up ๐ So if a management station tries to read the current interval counters during that window, the agent has to send back noSuchInstance ๐ No surprises, no fake numbers, just vibes ๐ธ
Whether the agent assumes the interface starts out available or unavailable is totally up to the implementation ๐ฆ Each vendor gets to pick, and that's fine โจ
Author's Address โจ
Orly Nicklass (editor)
RAD Data Communications, Ltd.
Ziv Tower, 24 Roul Walenberg
Tel Aviv, Israel, 69719
Phone: 9723-765-9969
EMail: orly_n@rad.com
Shoutout to Orly Nicklass, the editor, who put this whole thing together at RAD Data Communications ๐ Her details are right there above if you ever want to reach out ๐
Full Copyright Statement ๐
Copyright (C) The Internet Society (2004). This document is covered by the rights, licenses and restrictions in BCP 78, and beyond what that says, the authors keep all of their rights ๐ฅ
This document and everything in it is handed over "AS IS" ๐ซถ The contributor, the organization they represent or are sponsored by (if there is one), the Internet Society, and the Internet Engineering Task Force all say no to any warranties, whether express or implied. That includes no promise that using the information won't infringe anyone's rights, and no implied warranties of merchantability or fitness for a particular purpose ๐
Intellectual Property ๐
The IETF doesn't pick a side on whether any Intellectual Property Rights or other rights might apply to the technology in this document, and it doesn't say whether licenses for those rights exist or are available ๐ฆ It also hasn't independently checked for any of them ๐ If you want the details on how rights work for 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 made available, and the results of any attempt to get a general license or permission for implementers or users to use proprietary rights can all be found in the IETF's online IPR repository at http://www.ietf.org/ipr ๐
The IETF also invites anyone who knows about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard to let them know ๐ซถ Send that information to the IETF at ietf-ipr@ietf.org โจ
Acknowledgement ๐ธ
Funding for the RFC Editor function is currently provided by the Internet Society ๐ Thank you to the Internet Society for keeping the RFC Editor running, because honestly the whole Internet runs on these documents ๐ฅ
๐ฆ where this page comes from
- ietf: rfc3895 2004-09
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms