DOCS-DIAG-MIB DEFINITIONS ::= BEGIN IMPORTS NOTIFICATION-TYPE, MODULE-IDENTITY, OBJECT-TYPE, Unsigned32, Gauge32, Counter32 FROM SNMPv2-SMI TruthValue, MacAddress, DateAndTime, TEXTUAL-CONVENTION FROM SNMPv2-TC OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP FROM SNMPv2-CONF SnmpAdminString FROM SNMP-FRAMEWORK-MIB CmtsCmRegState, docsIf3CmtsCmRegStatusId FROM DOCS-IF3-MIB docsDevEvLevel, docsDevEvId FROM DOCS-CABLE-DEVICE-MIB clabProjDocsis FROM CLAB-DEF-MIB; docsDiagMib MODULE-IDENTITY LAST-UPDATED "202311220000Z" -- November 22, 2023 ORGANIZATION "Cable Television Laboratories, Inc." CONTACT-INFO "Postal: Cable Television Laboratories 858 Coal Creek Circle Louisville, CO 80027-9750 U.S.A. Phone: +1 303-661-9100 Fax: +1 303-661-9199 E-mail: mibs@cablelabs.com" DESCRIPTION "This is the MIB Module for the Diagnostic Log for DOCSIS-compliant Cable Modem Termination Systems (CMTS). The purpose of the Diagnostic Log is to prevent service interruptions by early detection of potential problems. It can also be used for fault management and for troubleshooting the cable network. The Diagnostic Log contains Cable Modems that show certain potential problematic behaviors, as determined by the CMTS. These detection criteria are defined as diagnostic triggers. The diagnostic trigger is an information filter to avoid inundating a management agent with data which is less meaningful as a function of size. There are 2 diagnostic triggers defined. Each trigger maintains a counter for each Cable Modem that is caught by that trigger. (1) Registration Trigger (2) Ranging Retry Trigger Copyright 1999-2023 Cable Television Laboratories, Inc. All rights reserved." REVISION "202311220000Z" -- November 22, 2023 DESCRIPTION "Revised version includes ECN DOCS-DIAG-MIB-N-23.2346-1." REVISION "200712060000Z" -- December 6, 2007 DESCRIPTION "Revised version includes ECN OSSIv3.0-N-07.0550-2 and published as I05." REVISION "200705180000Z" -- May 18, 2007 DESCRIPTION "Revised Version includes ECN OSSIv3.0-N-07.0410-4 and published as I03." REVISION "200612070000Z" -- December 7, 2006 DESCRIPTION "Initial version, published as part of the CableLabs OSSIv3.0 specification CM-SP-OSSIv3.0-I01-061207." ::= { clabProjDocsis 9 } -- -- Textual Conventions -- TriggerFlag ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This type defines the Diagnostic Log Trigger Type. Bit 0 selects the registration trigger. Bit 1 selects the ranging retry trigger." SYNTAX BITS { registration(0), rangingRetry(1) } RegistrationDetailFlag ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This data type defines an enumerated union of CM states used for the registration trigger detection. The named bits associated with this type correspond to a subset of the names for the enumerations in CmtsCmRegState data type." SYNTAX BITS { other(0), initialRanging(1), rangingAutoAdjComplete(2), startEae(3), startDhcpv4(4), startDhcpv6(5), dhcpv4Complete(6), dhcpv6Complete(7), startConfigFileDownload(8), configFileDownloadComplete(9), startRegistration(10), registrationComplete(11), bpiInit(12), operational(13) } -- -- Diagnostic Sub-tree Definitions -- docsDiagLogNotifications OBJECT IDENTIFIER ::= { docsDiagMib 0 } docsDiagLogMibObjects OBJECT IDENTIFIER ::= { docsDiagMib 1 } docsDiagLogGlobal OBJECT IDENTIFIER ::= { docsDiagLogMibObjects 1 } docsDiagLogTriggersCfg OBJECT IDENTIFIER ::= { docsDiagLogMibObjects 2 } -- -- Diagnostic Log global objects -- docsDiagLogMaxSize OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) UNITS "entries" MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of Cable Modem entries that docsDiagLogTable can report." DEFVAL { 100 } ::= { docsDiagLogGlobal 1 } docsDiagLogCurrentSize OBJECT-TYPE SYNTAX Gauge32 (0..4294967295) UNITS "entries" MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of Cable Modem entries reported in the docsDiagLogTable. The maximum value possible will be docsDiagLogMaxSize." ::= { docsDiagLogGlobal 2 } docsDiagLogNotifyLogSizeHighThrshld OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) UNITS "entries" MAX-ACCESS read-write STATUS current DESCRIPTION "If the number of entries in docsDiagLogTable exceeds this value, CMTS will trigger the appropriate event." DEFVAL { 80 } ::= { docsDiagLogGlobal 3 } docsDiagLogNotifyLogSizeLowThrshld OBJECT-TYPE SYNTAX Unsigned32 (1..4294967295) UNITS "entries" MAX-ACCESS read-write STATUS current DESCRIPTION "If the number of entries in docsDiagLogTable exceeded docsDiagLogNotifyLogSizeHighThrshld earlier and then drops to this value, CMTS will trigger the appropriate event." DEFVAL { 60 } ::= { docsDiagLogGlobal 4 } docsDiagLogAging OBJECT-TYPE SYNTAX Unsigned32 (15..86400) UNITS "minutes" MAX-ACCESS read-write STATUS current DESCRIPTION "Aging threshold for the Diagnostic Log. Periodically, a process scans through the Diagnostic log and removes those Cable Modems from docsDiagLogTable and docsDiagLogDetailTable that have no new detections for a time interval longer than this threshold in minutes." DEFVAL { 10080 } -- one week ::= { docsDiagLogGlobal 5 } docsDiagLogResetAll OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "If set to 'true', all counter objects for all entries in docsDiagLogTable and docsDiagLogDetailTable are reset to zero. Reading this object always returns 'false'." ::= { docsDiagLogGlobal 6 } docsDiagLogLastResetTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The last time that all the counters in the docsDiagLogTable and docsDiagLogDetailTable are reset to 0. The special value of all '00'Hs indicates that the Entries in these tables have never been reset." ::= { docsDiagLogGlobal 7 } docsDiagLogClearAll OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "If set to 'true', all entries from the docsDiagLogTable and docsDiagLogDetailTable are removed. Reading this object always returns 'false'." ::= { docsDiagLogGlobal 8 } docsDiagLogLastClearTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The last time that all the entries in the docsDiagLogTable and docsDiagLogDetailTable are destroyed. The special value of all '00'Hs indicates that the entries in these tables have never been destroyed." ::= { docsDiagLogGlobal 9 } docsDiagLogNotifCtrl OBJECT-TYPE SYNTAX BITS { highThresholdReached(0), lowThresholdReached(1), full(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "Used to enable diagnostic log related notifications. Setting bit 0 enables notification for reaching log size high threshold, Setting bit 1 enables notification for returning back to log size low threshold after reaching log size high threshold, Setting bit 2 enables notification for diagnostic log size full." DEFVAL { { } } ::= { docsDiagLogGlobal 10 } -- -- Configuration parameters for Diagnostic Triggers -- docsDiagLogIncludeTriggers OBJECT-TYPE SYNTAX TriggerFlag MAX-ACCESS read-write STATUS current DESCRIPTION "Turns individual diagnostic triggers on and off. Multiple triggers can be turned on or off at a given time. Setting a particular bit to '1' turns on corresponding diagnostic trigger. Setting a particular bit to '0' turns off corresponding diagnostic trigger." DEFVAL { { registration, rangingRetry } } ::= { docsDiagLogTriggersCfg 1 } docsDiagLogEnableAgingTriggers OBJECT-TYPE SYNTAX TriggerFlag MAX-ACCESS read-write STATUS current DESCRIPTION "Enables and disables the aging of triggers based on the trigger type. Aging out can be enabled or disabled for multiple triggers at a given time. Setting a particular bit to '1' enables the aging out of log entries that are created by corresponding diagnostic trigger. Setting a particular bit to '0' disables the aging out of log entries that are created by corresponding diagnostic trigger." DEFVAL { { } } ::= { docsDiagLogTriggersCfg 2 } docsDiagLogRegTimeInterval OBJECT-TYPE SYNTAX Unsigned32 (60..86400) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "Configurable parameter for the Registration trigger. The registration time interval is an empirically derived, worst-case number of seconds which the Cable Modem requires to complete registration. If the Cable Modem has not completed the registration stage within this registration time interval, the Cable Modem will be added to the Diagnostic Log." DEFVAL { 90 } ::= { docsDiagLogTriggersCfg 3 } docsDiagLogRegDetail OBJECT-TYPE SYNTAX RegistrationDetailFlag MAX-ACCESS read-write STATUS current DESCRIPTION "Setting a bit representing a CM registration state will enable counting the number of times the CMTS determines that such CM reaches that state as the last state before failing to proceed further in the registration process and within the time interval considered for the CM registration trigger detection." DEFVAL { { } } ::= { docsDiagLogTriggersCfg 4 } docsDiagLogRangingRetryType OBJECT-TYPE SYNTAX INTEGER { consecutiveMiss(1), missRatio(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "Configuration parameter for the Ranging Retry Trigger. When a Cable Modem failed to perform ranging when a ranging opportunity is scheduled by CMTS, it is counted as ranging miss. Ranging retry trigger can be configured to either look at consecutive ranging misses or ranging miss ratio over total number of station maintenance opportunities for a certain time period. If set to '1', this will select consecutive ranging misses as ranging retry trigger criteria. If set to '2', this will select ranging miss ratio as ranging retry trigger criteria." DEFVAL { 1 } ::= { docsDiagLogTriggersCfg 5 } docsDiagLogRangingRetryThrhld OBJECT-TYPE SYNTAX Unsigned32 (3..12) MAX-ACCESS read-write STATUS current DESCRIPTION "Configurable parameter for the Ranging Retry Trigger. When the number of times a Cable Modem does not acknowledge a MAC-layer station maintenance message from a CMTS exceeds this threshold, the Cable Modem will be add to the Diagnostic Log. The value of docsDiagLogRangingRetryType, decides if consecutive ranging miss or ranging miss ratio is used as trigger." DEFVAL { 6 } ::= { docsDiagLogTriggersCfg 6 } docsDiagLogRangingRetryStationMaintNum OBJECT-TYPE SYNTAX Unsigned32 (60..65535) MAX-ACCESS read-write STATUS current DESCRIPTION "Number of station maintenance opportunities to monitor for ranging retry trigger. This value implies time intervals in a certain range. DOCSIS requires the CMTS to schedule ranging opportunity to Cable Modem sufficiently smaller than T4. There is no fixed formula to derive at a fixed time interval, how many ranging opportunities would be offered to a Cable Modem by the CMTS, hence using the number of station maintenance opportunities provides ratio with the fixed denominators while also taking time factor into consideration." DEFVAL { 90 } ::= { docsDiagLogTriggersCfg 7 } -- -- Diagnostic Log Table -- docsDiagLogTable OBJECT-TYPE SYNTAX SEQUENCE OF DocsDiagLogEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table keeps the Diagnostic Log of the Cable Modems, it is indexed by docsIf3CmtsCmRegStatusId." REFERENCE "DOCSIS 3.0 Operation and Support System Interface Specification CM-SP-OSSIv3.0-I01-061207, Diagnostic Log Annex." ::= { docsDiagLogMibObjects 3 } docsDiagLogEntry OBJECT-TYPE SYNTAX DocsDiagLogEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A conceptual row entry in this table is a per Cable Modem summary of the diagnostic information detected by one or more triggers. There can be only one entry in this for a given Cable Modem." INDEX { docsIf3CmtsCmRegStatusId } ::= { docsDiagLogTable 1 } DocsDiagLogEntry ::= SEQUENCE { docsDiagLogCmMacAddr MacAddress, docsDiagLogLastUpdateTime DateAndTime, docsDiagLogCreateTime DateAndTime, docsDiagLogLastRegTime DateAndTime, docsDiagLogRegCount Counter32, docsDiagLogRangingRetryCount Counter32 } docsDiagLogCmMacAddr OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "MAC address of the Cable Modem." ::= { docsDiagLogEntry 1 } docsDiagLogLastUpdateTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The time and date value when this entry was last updated. When a Cable Modem is detected by one of the diagnostic trigger, if this table already has an entry for that Cable Modem, the entry will be updated." ::= { docsDiagLogEntry 2 } docsDiagLogCreateTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The time and date value that this entry was added to this table. When a Cable Modem is detected by one of the diagnostic triggers, if this table has no entry for that cable mode, a new entry will be created. If an entry is removed and then re-added, there can be a discontinuity in the statistical objects associated with this entry. This timestamp can be used to detect those discontinuities." ::= { docsDiagLogEntry 3 } docsDiagLogLastRegTime OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "The last time this Cable Modem registered." ::= { docsDiagLogEntry 4 } docsDiagLogRegCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the registration trigger condition was detected for this Cable Modem." ::= { docsDiagLogEntry 5 } docsDiagLogRangingRetryCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times the ranging retry trigger condition was detected for this Cable Modem." ::= { docsDiagLogEntry 6 } -- -- Detailed Log Table -- docsDiagLogDetailTable OBJECT-TYPE SYNTAX SEQUENCE OF DocsDiagLogDetailEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains detailed diagnostic information for Cable Modems already in docsDiagLogTable." REFERENCE "DOCSIS 3.0 Operation and Support System Interface Specification CM-SP-OSSIv3.0-I01-061207, Diagnostic Log Annex." ::= { docsDiagLogMibObjects 4 } docsDiagLogDetailEntry OBJECT-TYPE SYNTAX DocsDiagLogDetailEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A conceptual row in this table contains one single type of detailed diagnostic information for a Cable Modem. This table shall be instantiated only if at least one detail condition is enabled, via docsDiagLogRegDetail. There can be multiple entries in this table for a given cable modem, if more than one detail condition is enabled." INDEX { docsIf3CmtsCmRegStatusId, docsDiagLogDetailTypeValue } ::= { docsDiagLogDetailTable 1 } DocsDiagLogDetailEntry ::= SEQUENCE { docsDiagLogDetailTypeValue CmtsCmRegState, docsDiagLogDetailCount Counter32, docsDiagLogDetailLastUpdate DateAndTime, docsDiagLogDetailLastErrorText SnmpAdminString } docsDiagLogDetailTypeValue OBJECT-TYPE SYNTAX CmtsCmRegState MAX-ACCESS not-accessible STATUS current DESCRIPTION "The diagnostic detail type this entry represents." ::= { docsDiagLogDetailEntry 1 } docsDiagLogDetailCount OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The counter value of this Cable Modem that reached this diagnostic detail state as the last state before it failed to proceed further." ::= { docsDiagLogDetailEntry 2 } docsDiagLogDetailLastUpdate OBJECT-TYPE SYNTAX DateAndTime MAX-ACCESS read-only STATUS current DESCRIPTION "Time and date value when this entry was last updated." ::= { docsDiagLogDetailEntry 3 } docsDiagLogDetailLastErrorText OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "Contains the Event ID and Event Text of the event condition that triggers this entry. The format is: Event Text" REFERENCE "DOCSIS 3.0 Operation and Support System Interface Specification CM-SP-OSSIv3.0-I01-061207, Format and Content for Event, Syslog, and SNMP Notification. Annex." ::= { docsDiagLogDetailEntry 4 } -- -- Notifications -- docsDiagLogSizeHighThrshldReached NOTIFICATION-TYPE OBJECTS { docsDevEvLevel, docsDevEvId, docsDiagLogIncludeTriggers, docsDiagLogMaxSize } STATUS current DESCRIPTION "This notification indicates that the current size of Diagnostic Log grows beyond docsDiagLogNotifyLogSizeHighThrshld." ::= { docsDiagLogNotifications 1 } docsDiagLogSizeLowThrshldReached NOTIFICATION-TYPE OBJECTS { docsDevEvLevel, docsDevEvId, docsDiagLogIncludeTriggers, docsDiagLogMaxSize } STATUS current DESCRIPTION "This notification indicates that the current size of Diagnostic Log drops to docsDiagLogNotifyLogSizeLowThrshld after it exceeded docsDiagLogNotifyLogSizeHighThrshld earlier." ::= { docsDiagLogNotifications 2 } docsDiagLogSizeFull NOTIFICATION-TYPE OBJECTS { docsDevEvLevel, docsDevEvId, docsDiagLogIncludeTriggers, docsDiagLogMaxSize } STATUS current DESCRIPTION "This notification indicates that the Diagnostic Log is full." ::= { docsDiagLogNotifications 3 } -- -- Conformance definitions -- docsDiagLogConformance OBJECT IDENTIFIER ::= { docsDiagMib 2 } docsDiagLogCompliances OBJECT IDENTIFIER ::= { docsDiagLogConformance 1 } docsDiagLogGroups OBJECT IDENTIFIER ::= { docsDiagLogConformance 2 } docsDiagLogCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for the diagnostic log MIB for DOCSIS compliant Cable Modem Termination Systems" MODULE -- docsDiagMib GROUP docsDiagLogBaseGroup DESCRIPTION "Mandatary in all CMTSes" GROUP docsDiagLogNotificationGroup DESCRIPTION "Mandatary in all CMTSes" ::= { docsDiagLogCompliances 1 } docsDiagLogBaseGroup OBJECT-GROUP OBJECTS { docsDiagLogMaxSize, docsDiagLogCurrentSize, docsDiagLogNotifyLogSizeHighThrshld, docsDiagLogNotifyLogSizeLowThrshld, docsDiagLogAging, docsDiagLogResetAll, docsDiagLogLastResetTime, docsDiagLogClearAll, docsDiagLogLastClearTime, docsDiagLogNotifCtrl, docsDiagLogIncludeTriggers, docsDiagLogEnableAgingTriggers, docsDiagLogRegTimeInterval, docsDiagLogRegDetail, docsDiagLogRangingRetryType, docsDiagLogRangingRetryThrhld, docsDiagLogRangingRetryStationMaintNum, docsDiagLogCmMacAddr, docsDiagLogLastUpdateTime, docsDiagLogCreateTime, docsDiagLogLastRegTime, docsDiagLogRegCount, docsDiagLogRangingRetryCount, docsDiagLogDetailCount, docsDiagLogDetailLastUpdate, docsDiagLogDetailLastErrorText } STATUS current DESCRIPTION "CMTS is required to support objects in this group" ::= { docsDiagLogGroups 1 } docsDiagLogNotificationGroup NOTIFICATION-GROUP NOTIFICATIONS { docsDiagLogSizeHighThrshldReached, docsDiagLogSizeLowThrshldReached, docsDiagLogSizeFull } STATUS current DESCRIPTION "CMTS is required to support objects in this group" ::= { docsDiagLogGroups 2 } END