--
-- ********************************************************************
-- CISCO-CABLE-QOS-MONITOR-MIB.my:
--       Cisco Cable QoS Monitoring MIB file 
--
-- Jan 2003, Sunethra Jawahar
-- Oct 2003, Gaurav Aggarwal
--
-- Copyright (c) 2003, 2004 by Cisco Systems, Inc.
-- All rights reserved.
-- ********************************************************************
--
--
-- This is the MIB module for subscriber QoS monitoring for 
-- DOCSIS-compliant Cable Modem Termination Systems (CMTS).
-- 
-- QoS Monitoring is a software feature provided in the CMTS so that 
-- the CMTS may identify subscribers who over consume resources 
-- based on their QoS parameters, report them to a management 
-- entity, and automatically mitigate the problem where possible.
-- This is done by penalyzing the violating subscribers by changing 
-- their QoS parameters to enforced QoS parameters. 
-- 
-- The MIB allows to create enforce rules which are used to determine the
-- over consumption of resources. The enforce rule contains monitoring 
-- and enforced QoS parameters. 
--
-- The MIB also provides a unified view of all over-consuming subscribers.
-- 
-- 

CISCO-CABLE-QOS-MONITOR-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        Unsigned32,
        NOTIFICATION-TYPE
                FROM SNMPv2-SMI
        TEXTUAL-CONVENTION,
        TruthValue,
        MacAddress,
        RowStatus,
        DisplayString,
        DateAndTime
                FROM SNMPv2-TC
        OBJECT-GROUP,
        MODULE-COMPLIANCE,
        NOTIFICATION-GROUP
                FROM SNMPv2-CONF
        ifIndex
                FROM IF-MIB
        ciscoMgmt
                FROM CISCO-SMI;
      

ciscoCableQosMonitorMIB MODULE-IDENTITY
        LAST-UPDATED    "200402200000Z"
        ORGANIZATION    "Cisco Systems, Inc."
        CONTACT-INFO
            "        Cisco Systems
                     Customer Service

             Postal: Cisco Systems
                     170 West Tasman Drive
                     San Jose, CA 95134
                     U.S.A.
             Phone:  +1 800 553-NETS
             E-mail: cs-ubr@cisco.com"

        DESCRIPTION
            "This is the MIB module for subscriber QoS monitoring 
             for DOCSIS-compliant Cable Modem Termination Systems 
             (CMTS).

             Several subscriber behavior can be monitored:
             1. When the subscriber requests for more resources than 
             as defined by its QoS parameter set. In this case,
             though requested for more rate-limiting happens in 
             the CMTS, hence, the subscriber will get only as much
             resources as defined by its registered QoS parameter 
             set. In this mib, QoS parameter set refers to QoS 
             profiles for 1.0 modems and refer to service class
             names for 1.1 and 2.0 modems. 

             2.	When the subscriber continuously utilizes the resources
             to the upper limit or very near to the upper limit as 
             defined by its QoS parameter set. 
             
             3.	When the subscriber sometimes or never utilizes the 
             resources as defined by the upper limit of the QoS 
             parameter set. 

             In the first two cases, we need to monitor the subscribers 
             as upstream/downstream is a shared medium, and if all 
             subscribers start consuming resources as per their peak
             rate, or a percentage of it, CMTS will be hard pressed for
             resources. So, even though such subscribers are using 
             resources within the limits as defined by their QoS 
             parameter set, from the CMTS point of view, they are 
             over consuming. 
             Through out this MIB, we refer to this behavior of 
             subscribers as over consumption of resources and such 
             subscribers will be the violating subscribers. 

             The subscriber QoS Monitoring is a software feature 
             provided on the CMTS so that the CMTS may identify such 
             subscribers who over consume resources based on their QoS 
             parameter set, report them to a management entity, and 
             automatically mitigate the problem where possible. 
             This is done by penalizing the violating subscribers by 
             changing their QoS parameter set to enforced QoS 
             parameter set.

             The MIB allows to create enforce rules which are used to 
             determine the over consumption of resources. The enforce 
             rule contains monitoring and enforced QoS parameter set.

             The subscribers who over consume their bandwidth are 
             flagged and NMS notified of all such violations.
             The MIB also provides a unified view of all over-consuming 
             subscribers."

        REVISION        "200402200000Z"
        DESCRIPTION
       "Added objects in ccqmCmtsEnforceRuleTable to support DOCSIS1.1,
        DOCSIS2.0 modems and peak/off-peak monitoring.
            The objects are:
               ccqmCmtsEnfRuleAvgRate,
               ccqmCmtsEnfRuleDocsVer,
               ccqmCmtsEnfRuleRegSerClassName,
               ccqmCmtsEnfRuleEnfSerClassName,
               ccqmCmtsEnfRuleMonType,
               ccqmCmtsEnfRuleFirstPeakTime,
               ccqmCmtsEnfRuleFirstDuration,
               ccqmCmtsEnfRuleFirstAvgRate,
               ccqmCmtsEnfRuleSecondPeakTime,
               ccqmCmtsEnfRuleSecondDuration,
               ccqmCmtsEnfRuleSecondAvgRate,
               ccqmCmtsEnfRuleOffPeakDuration,
               ccqmCmtsEnfRuleOffPeakAvgRate

        Added ccqmCmtsIfBwUtilTable to provide thresholds for
        downstream/upstream bandwidth utilization.

        Removed ccqmCmtsEnfRuleByteCount which was obsoleted."

        REVISION        "200304030000Z"
        DESCRIPTION
            "Changed ranges of few objects."

        REVISION        "200303040000Z"
        DESCRIPTION
            "Initial version of this MIB module."

        ::= { ciscoMgmt 341 }

CCQMRuleDirection ::= TEXTUAL-CONVENTION
   STATUS      current
   DESCRIPTION
       "The CCQMRuleDirection is used to indicate the direction to
       which the enforce rule applies to. 
       It has the following defined values:
       - 'upstream', is used for an enforce rule in the direction from 
          subscriber to CMTS 
       - 'downstream', is used for an enforce rule in the direction from
          CMTS to the subscriber.
       - 'bidirection', which can mean neither upstream or downstream
          but a combined enforce rule. "

   SYNTAX      INTEGER {
                  upstream(1),
                  downstream(2),
                  bidirection(3)
               }


ciscoCableQosMonitorMIBObjects 
         OBJECT IDENTIFIER ::= { ciscoCableQosMonitorMIB 1 }

ccqmEnforceRuleObjects   
         OBJECT IDENTIFIER ::= { ciscoCableQosMonitorMIBObjects 1 }

ccqmRuleViolateObjects
         OBJECT IDENTIFIER ::= { ciscoCableQosMonitorMIBObjects 2 }

ccqmRuleIfBwUtilObjects
         OBJECT IDENTIFIER ::= { ciscoCableQosMonitorMIBObjects 3 }

--
-- Cmts Qos Enforce Rule Table
--
-- CMTS maintains a list of QoS enforce rules. 
-- These enforce rules define :
-- 1) Criteria for identifying violating subscribers:
--    This criteria could be as simple as bytes transmitted over
--    the last monitoring duration and checked at a rate equal
--    to the sample rate.
--    In the sliding window concept used, the monitoring duration
--    is the size of the window. This window slides by an amount
--    that is equal to the sample rate. At every sample rate the bytes
--    transmitted in the time equal to a monitoring duration is
--    checked. If this is found to be larger than the byte count which
--    is calculated by multiplying the defined average rate by the 
--    monitoring duration limit per monitoring duration, the subscriber
--    is flagged as over consuming or violating the enforce rule.
--    Else the monitoring will continue.
--    For example let the monitoring duration be 360 minutes and sample
--    rate be 30 minutes. If the average rate is 2kbits/sec, so
--    the total byte count for the monitoring duration would be 
--    5.4Mbytes then every 30 minutes we check if the bytes 
--    transmitted in the last 360 minutes exceeded 5.4Mbytes. If so,
--    the subscriber is over consuming. 
--
--    |< Monitoring duration     >|
--
--    |S rate |
--    |___________________________|
--            |____________________________|
--                     |_____________________________|
--                              |______________________________|
--    X       X        X        X          X         X         X
--
--    X -> Check made to see if byte count is exceeded.
--    S rate -> Sample rate
--   
-- 2) Registered and Enforced QoS parameter set: 
--    Enforce rules have a one to one mapping to QoS profiles
--    (for 1.0 modems) and service class names (for 1.1 and 2.0 modems)
--    that subscribers have registered with. Through out the mib
--    QoS parameter set refers to QoS profiles for 1.0 modems 
--    and they refer to service class names for 1.1 and 2.0 modems. If 
--    subscribers are found to violate parameters as defined by 
--    their Registered Qos parameter set then the  Enforced QoS 
--    parameter set will be enforced on such subscribers. The rule 
--    can be configured such that the enforcement happens automatically
--    or based on some manual settings by NMS.
-- 3) Penalty Period: 
--    This defines the time period for which the  Enforced Qos 
--    parameter set will be applicable. The registered QoS 
--    parameter set will be restored when the penalty period 
--    expires again based on whether automation was desired.
--     

ccqmCmtsEnforceRuleTable  OBJECT-TYPE
       SYNTAX      SEQUENCE OF CcqmCmtsEnforceRuleEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains the attributes of the QoS enforce rules
           present on the CMTS. 

           These enforce rules define the criteria for identifying 
           subscribers who over consume resources. This could be as 
           simple as bytes transmitted over the last monitoring 
           duration and checked at a rate equal to the sample rate.

           In the sliding window concept used, the monitoring duration
           is the size of the window. This window slides by an amount
           that is equal to the sample rate. At every sample rate the 
           bytes transmitted in the time equal to a monitoring duration 
           is  checked. If this is found to be larger than the threshold
           limit which is calculated by multiplying the defined average
           rate by the monitoring duration per monitoring duration, 
           the subscriber is flagged as over consuming.  Else the 
           monitoring will continue.

           For example let the monitoring duration be 360 minutes and
           sample rate be 30 minutes. If the average rate is 2kbits/sec 
           then every 30 minutes we check if the bytes transmitted in 
           the last 360 minutes exceeded 5.4Mbytes bytes. If so, the 
           subscriber is over consuming.

           The enforce rule has a one to one mapping to QoS profiles 
           in case of DOCSIS1.0 (and DOCSIS1.0+ modems) and to 
           service class names in case of DOCSIS1.1 and 
           DOCSIS2.0 modems.

           It defines the registered QoS parameter set and an enforced 
           QoS parameter set be applied if found to be violating the 
           registered QoS parameter set.
           The enforce rule also defines a penalty period for which
           the enforced QoS parameter set will be applied. The 
           registered QoS parameter set will be restored when the 
           penalty period expires.
          
           The monitoring can be of two types:
           1) Legacy/Basic monitoring: There is only one threshold and 
              one monitoring-duration and the monitoring-duration
              can be more than one day and within a day there is no
              distinction among hours as peak or offpeak hours. An
              example would be: 
              monitoring duration   : 2 days
              Average rate          : 2kbits/sec

           2) Peak-offPeak monitoring: A maximum of two peak durations 
              can be defined with in a day and the remaining hours are 
              treated as off-peak and the monitoring will happen during
              these offpeak hours if the offpeak duration and threhold
              are defined. The monitoring-duration and threshold for 
              all three, first peak, second peak and offpeak can be 
              different. Here, the monitoring duration for any of the 
              peaks or offpeak cannot be more than a day. An
              example when both peaks and offpeak are defined is:
              First peak:
                    monitoring duration: Between 6am to 9am i.e., 3hours
                    Average rate       : 2kbits/sec
              Second peak:
                    monitoring duration: Between 6pm to 10pm i.e., 4hrs
                    Average rate       : 3kbits/sec
              Off peak:
                    Remaining hours in the day i.e.,
                    12 midnight to 6:00am,
                    9am to 6pm and 10pm to 12mignight.
                    monitoring duration: 2 hours
                    Average rate       : 1kbits/sec."
       ::= { ccqmEnforceRuleObjects 1 }

ccqmCmtsEnforceRuleEntry OBJECT-TYPE
        SYNTAX      CcqmCmtsEnforceRuleEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A set of attributes of a enforce rule on the CMTS.
            One entry exists for each QoS enforce rule. It is 
            indexed by ccqmCmtsEnfRuleName as each enforce rule
            is associated with a unique name. The user can define 
            the legacy/basic monitoring as:
            Suppose, the duration is 2 hours and the average rate 
            is 2kbits/sec, so the following object would be need
            to set:
            ccqmCmtsEnfRuleMonType = 1 (Basic)
            ccqmCmtsEnfRuleMonDuration = 120 (minutes)
            ccqmCmtsEnfRuleAvgRate = 2 (kbits/sec) 
            Consider the example of setting the following peak-offpeak
            monitoring:
            First peak time:
                   Morning 6:00am to 9:00am.
                   Average rate is 2kbits/sec.
             Second peak time:
                   Evening 6:00pm to 10:00pm.
                   Average rate is 3kbits/sec.
             Offpeak time: 
                   The remaining time i.e., 12:00 midnight to 6:00am
                   and from 9:00am to 6:00pm and 10:00pm to 12:00
                   midnight would constitute the offpeak time.
                   Let us assume the monitoring-duration is 2 hours
                   and the average rate is 1kbits/sec.
             And so the relevant objects would look like:
                   ccqmCmtsEnfRuleMonType = 2 (peakOffPeak)
                   ccqmCmtsEnfRuleFirstPeakTime = 6 (0600 hours)
                   ccqmCmtsEnfRuleFirstDuration = 180 min (3 hours)
                   ccqmCmtsEnfRuleFirstAvgRate = 2 (kbits/sec) 
                   ccqmCmtsEnfRuleSecondPeakTime = 18 (1800 hours)
                   ccqmCmtsEnfRuleSecondDuration = 240 min (4 hours)
                   ccqmCmtsEnfRuleSecondAvgRate = 3 (kbits/sec)
                   ccqmCmtsEnfRuleOffPeakDuration = 160 min (2 hours) 
                   ccqmCmtsEnfRuleOffPeakAvgRate = 1 (kbits/sec)."
        INDEX { ccqmCmtsEnfRuleName }
        ::= { ccqmCmtsEnforceRuleTable 1 }

CcqmCmtsEnforceRuleEntry ::= SEQUENCE {
            ccqmCmtsEnfRuleName             DisplayString, 
            ccqmCmtsEnfRuleRegQoS           Unsigned32,
            ccqmCmtsEnfRuleEnfQos           Unsigned32,
            ccqmCmtsEnfRuleMonDuration      Unsigned32,
            ccqmCmtsEnfRuleSampleRate       Unsigned32,
            ccqmCmtsEnfRulePenaltyPeriod    Unsigned32,
            ccqmCmtsEnfRuleByteCount        Unsigned32,
            ccqmCmtsEnfRuleDirection        CCQMRuleDirection,
            ccqmCmtsEnfRuleAutoEnforce      TruthValue,
            ccqmCmtsEnfRuleRowStatus        RowStatus,
            ccqmCmtsEnfRuleAvgRate          Unsigned32,
            ccqmCmtsEnfRuleDocsVer          INTEGER,
            ccqmCmtsEnfRuleRegSerClassName  DisplayString,
            ccqmCmtsEnfRuleEnfSerClassName  DisplayString,
            ccqmCmtsEnfRuleMonType          INTEGER,
            ccqmCmtsEnfRuleFirstPeakTime    Unsigned32,
            ccqmCmtsEnfRuleFirstDuration    Unsigned32,
            ccqmCmtsEnfRuleFirstAvgRate     Unsigned32,
            ccqmCmtsEnfRuleSecondPeakTime   Unsigned32,
            ccqmCmtsEnfRuleSecondDuration   Unsigned32,
            ccqmCmtsEnfRuleSecondAvgRate    Unsigned32,
            ccqmCmtsEnfRuleOffPeakDuration  Unsigned32,
            ccqmCmtsEnfRuleOffPeakAvgRate   Unsigned32
        }


ccqmCmtsEnfRuleName OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(1..15))
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "The name of the enforce rule."
        ::= { ccqmCmtsEnforceRuleEntry 1 }

ccqmCmtsEnfRuleRegQoS OBJECT-TYPE
        SYNTAX      Unsigned32 (0..16383)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents a pointer to the object
            describing the quality of service attributes 
            associated with the registered service of the 
            subscriber.
            For DOCSIS1.0 (DOCSIS1.0+) subscribers it is the 
            index in the docsIfQosProfileTable. If no associated 
            entry in docsIfQosProfileTable exists, this object
            returns a value of zero. Similarly this object
            can be set to 0 to indicate no entry in the
            docsIfQosProfileTable associated with this QoS profile.
            This object is applicable for DOCSIS1.0 (and
            DOCSIS1.0+) modems and it can be set only when
            ccqmCmtsEnfRuleDocsVer is set to docsis10(2).
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        REFERENCE
            "docsIfQosProfIndex from 
             draft-ietf-ipcdn-docs-rfmibv2-05.txt"
        ::= { ccqmCmtsEnforceRuleEntry 2 }

ccqmCmtsEnfRuleEnfQos OBJECT-TYPE
        SYNTAX      Unsigned32 (0..16383)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents a pointer to the object
            describing the quality of service attributes 
            associated with the registered service of the 
            subscriber.
            For DOCSIS1.0 (and DOCSIS1.0+) subscribers it is the
            index in the docsIfQosProfileTable. If no associated 
            entry in docsIfQosProfileTable exists, this object
            returns a value of zero. Similarly this object
            can be set to 0 to indicate no entry in the
            docsIfQosProfileTable associated with this QoS profile.   
            This object is applicable for DOCSIS1.0 (and
            DOCSIS1.0+) modems and it can be set only when
            ccqmCmtsEnfRuleDocsVer is set to docsis10(2).
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        REFERENCE
            "docsIfQosProfIndex from 
             draft-ietf-ipcdn-docs-rfmibv2-05.txt"
        DEFVAL      { 0 }
        ::= { ccqmCmtsEnforceRuleEntry 3 }

ccqmCmtsEnfRuleMonDuration OBJECT-TYPE
        SYNTAX      Unsigned32(10..44640)
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents the duration for which 
            subscribers would be monitored to determine if they 
            were over consuming resources.
            This object can be set only when ccqmCmtsEnfRuleMonType
            is set to basic(1).
            If peak-offpeak monitoring is enabled i.e., 
            ccqmCmtsEnfRuleMonType and is set to peakOffPeak (2) this 
            object when polled would return the duration value valid 
            at that time of the day and 0 if no monitoring is taking 
            place at that time.
            Both ccqmCmtsEnfRuleMonDuration and 
            ccqmCmtsEnfRuleAvgRate need to be set before legacy/basic 
            monitoring can be started.
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        DEFVAL      { 360 }
        ::= { ccqmCmtsEnforceRuleEntry 4 }

ccqmCmtsEnfRuleSampleRate OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents the interval at which a decision 
            would be made to check if the subscriber over consumed his
            resources based on the subscriber usage in the past 
            duration.
            Since the duration can range between 10 minutes to 30 
            days hence the range of sample rate would change 
            accordingly too. Some empirical calculations for the
            same are:
            The maximum memory to be used per line card for STM is
            10 MBytes. The maximum number of modems that can be 
            supported is 6000 per line card. Now, per sample memory
            consumption is 8 bytes hence approximately, the maximum
            number of samples that can be allowed are 
            10 * 10 ^ 6 / (6 * 10 ^ 3 * 2 * 8) ~ 100
            Hence, given the duration the sample rate would be 
            calculated as duration / 100 = sample rate only if the
            duration happens to be more than 1440. For cases when 
            the duration is less than 1440, the sample rate range 
            would be between 10 to 30.
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 5 }

ccqmCmtsEnfRulePenaltyPeriod OBJECT-TYPE
        SYNTAX      Unsigned32(1..10080)
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents the period in which the 
            enforced QoS parameter set will be in effect from 
            the time of detection.
            When the time as defined by this object expires, the
            registered QoS parameter set would be restored. 
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        DEFVAL      { 10080 }
        ::= { ccqmCmtsEnforceRuleEntry 6 }


ccqmCmtsEnfRuleByteCount OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "1000 bytes"
        MAX-ACCESS  read-create
        STATUS      obsolete
        DESCRIPTION
            "The number of kbytes that the subscriber can transmit in 
             the monitoring duration as indicated by 
             ccqmCmtsEnfRuleMonDuration before being flagged as over 
             consuming.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 7 }

ccqmCmtsEnfRuleDirection OBJECT-TYPE
        SYNTAX      CCQMRuleDirection 
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "Specifies if the average rate specified by 
             ccqmCmtsEnfRuleAvgRate is for the upstream/downstream 
             direction. 
             Setting to bidirection(3) is not permitted.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 8 }

ccqmCmtsEnfRuleAutoEnforce OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "If the ccqmCmtsEnfRuleAutoEnforce is TRUE, the enforced QoS
             parameter set as specified by ccqmCmtsEnfRuleEnfQos for
             DOCSIS1.0 (and DOCSIS1.0+) modems or
             ccqmCmtsEnfRuleEnfSerClassName for DOCSIS1.1 and
             DOCSIS2.0 modems will be automatically enforced when
             an over consuming subscriber is detected. Otherwise the
             change should be done manually. 
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
       DEFVAL        { false }
        ::= { ccqmCmtsEnforceRuleEntry 9 }

ccqmCmtsEnfRuleRowStatus OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The object controls and reflects the status of rows in this
            table. All row status values are supported. 
            The status of the row needs to be changed from active(1) to 
            notInService(2) in cases when any of the enforce rule 
            objects need to be changed. If there is any monitoring 
            associated with this enforce rule ongoing at this time, it
            as well as all the statistics collected over the sample 
            rate and monitoring duration will be cleared when the 
            row status is changed from active(1) to notInService(2).
            The monitoring will start again only when the row status
            is changed to active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 10 }

ccqmCmtsEnfRuleAvgRate OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "kbits/sec"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the rate at which the subscriber is 
            allowed to consume for the monitoring duration. So, if
            this rate is defined to be 2kbits/sec and the monitoring
            duration is set to be 120 minutes, then every sample period
            the subscribers consumption in the last monitoring duration
            would be compared against 1.8Mbytes.
            This object can be set only when ccqmCmtsEnfRuleMonType is
            set to basic(1) else when polled it will return the 
            rate valid at that time of the day and 0 if no 
            monitoring is taking place at that time."
        ::= { ccqmCmtsEnforceRuleEntry 11 }

ccqmCmtsEnfRuleDocsVer OBJECT-TYPE
        SYNTAX      INTEGER {
                       others(1),
                       docsis10(2)
                    }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This defines the DOCSIS version of the modems that the 
            enforce rule would be applicable to. If it is set to
            docsis10(2) then only ccqmCmtsEnfRuleRegQoS
            and ccqmCmtsEnfRuleEnfQoS can be set and if previously 
            ccqmCmtsEnfRuleRegSerClassName and 
            ccqmCmtsEnfRuleEnfSerClassName were set, they will be 
            reset to NULL and if it set to others(1) then
            only ccqmCmtsEnfRuleRegSerClassName and  
            ccqmCmtsEnfRuleEnfSerClassName can be set and if previously
            ccqmCmtsEnfRuleRegQoS and ccqmCmtsEnfRuleEnfQoS were set
            they will be reset to 0."
        DEFVAL        { docsis10 }
        ::= { ccqmCmtsEnforceRuleEntry 12 }

ccqmCmtsEnfRuleRegSerClassName OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(1..16))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents a pointer to the object
            describing the quality of service attributes
            associated with the registered service of the
            subscriber. For DOCSIS1.1 and DOCSIS2.0 subscribers it is
            same as docsQosParamSetServiceClassName in 
            docsQosParamSetTable. This object is applicable for
            DOCSIS1.1 and DOCSIS2.0 modems and it can be set only
            when ccqmCmtsEnfRuleDocsVer is set to others(1).
            This object cannot be changed when 
            ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 13 }

ccqmCmtsEnfRuleEnfSerClassName OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(1..16))
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object represents a pointer to the object
            describing the quality of service attributes
            associated with the registered service of the
            subscriber. For DOCSIS1.1 and DOCSIS2.0 subscribers it
            is same as docsQosParamSetServiceClassName in
            docsQosParamSetTable. This object is applicable only for
            DOCSIS1.1 modems and DOCSIS2.0 and it can be set only when
            ccqmCmtsEnfRuleDocsVer is set to others(1).
            This object cannot be changed when
            ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 14 }

ccqmCmtsEnfRuleMonType OBJECT-TYPE
        SYNTAX      INTEGER {
                       basic(1),
                       peakOffPeak(2)
                    }
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the monitoring type. If it is set
            to basic(1), then ccqmCmtsEnfRuleMonDuration and 
            ccqmCmtsEnfRuleAvgRate are used to define the monitoring
            and if the peak-offpeak objects were set before, they will
            all be reset to 0 and if the user sets this object to
            peakOffPeak(2) the peak-offpeak objects are used to define
            the monitoring and ccqmCmtsEnfRuleMonDuration and 
            ccqmCmtsEnfRuleAvgRate, if set before, will be reset to 0."
        DEFVAL        { basic }
        ::= { ccqmCmtsEnforceRuleEntry 15 }

ccqmCmtsEnfRuleFirstPeakTime OBJECT-TYPE
        SYNTAX      Unsigned32(0..23)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The user can define two peak times and the
             remaining hours will be treated as offpeak and the 
             monitoring will happen for these offpeak hours if
             ccqmCmtsEnfRuleOffPeakDuration and 
             ccqmCmtsEnfRuleOffPeakAvgRate are defined. The first 
             peak parameters are defined using 
             ccqmCmtsEnfRuleFirstPeakTime, 
             ccqmCmtsEnfRuleFirstDuration and 
             ccqmCmtsEnfRuleFirstAvgRate objects while the second 
             peak parameters can be defined using
             ccqmCmtsEnfRuleSecondPeakTime, 
             ccqmCmtsEnfRuleSecondDuration and 
             ccqmCmtsEnfRuleSecondAvgRate. Each peak time has an
             associated average rate and a duration for which that
             average rate holds good. 
             Defining the first peak is mandatory, though
             defining the second peak and offpeak is not mandatory.
             Both these peak times should be defined such that they 
             don't overlap and the first peak time has to be an earlier
             time than the second peak time.
             User would need to use 24 hour clock for setting this.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 16 }

ccqmCmtsEnfRuleFirstDuration OBJECT-TYPE
        SYNTAX      Unsigned32(60..1440)
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the duration for which the first
             peak time would be applicable. When 
             ccqmCmtsEnfRuleMonDuration is polled during first peak,
             it will return this value. The ccqmCmtsEnfRuleFirstPeakTime
             has to be defined before defining this object else it
             will be taken to start from 0.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 17 }

ccqmCmtsEnfRuleFirstAvgRate OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "kbits/sec"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the rate at which the subscriber is 
             allowed to consume during the first peak duration. The
             ccqmCmtsEnfRuleFirstDuration has to be defined before
             defining this value.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 18 }

ccqmCmtsEnfRuleSecondPeakTime OBJECT-TYPE
        SYNTAX      Unsigned32(0..23)
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The user can define two peak times in a day. The second 
             peak is defined using ccqmCmtsEnfRuleSecondPeakTime, 
             ccqmCmtsEnfRuleSecondDuration and 
             ccqmCmtsEnfRuleSecondThreshold objects while the first 
             peak is defined using ccqmCmtsEnfRuleFirstPeakTime, 
             ccqmCmtsEnfRuleFirstDuration and 
             ccqmCmtsEnfRuleFirstDuration. For the remaining hours in 
             the day, the off-peak monitoring would happen if
             both  ccqmCmtsEnfRuleOffPeakDuration and
             ccqmCmtsEnfRuleOffPeakThreshold are defined. 
             Defining the first peak is mandatory, though
             defining the second peak and offpeak is not mandatory.
             Both these peak times should be defined such that they 
             don't overlap and the first peak time has to be an earlier
             time than the second peak time. 
             ccqmCmtsEnfRuleSecondDuration can be set to 0 to 
             indicate that the second peak monitoring no longer
             needs to be performed. The first peak has to be
             defined before defining the second peak time. 
             User would need to use 24 hour clock for setting this.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 19 }

ccqmCmtsEnfRuleSecondDuration OBJECT-TYPE
        SYNTAX      Unsigned32(0..1380)
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the duration for which the second 
             peak time would be applicable. When 
             ccqmCmtsEnfRuleMonDuration is polled during second peak,
             it will return this value. It can be set to 0 to
             indicate that the second peak monitoring no longer needs
             to be performed. The ccqmCmtsEnfRuleSecondPeakTime has 
             to be defined before defining this object. 
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 20 }

ccqmCmtsEnfRuleSecondAvgRate OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "kbits/sec"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the rate at which the subscriber is 
             allowed to consume during the second peak duration. The
             ccqmCmtsEnfRuleSecondDuration has to be defined before
             defining this value.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 21 }

ccqmCmtsEnfRuleOffPeakDuration OBJECT-TYPE
        SYNTAX      Unsigned32(0..1380)
        UNITS       "minutes"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the monitoring-duration that
             would be applicable for the offpeak times of the day.
             The off peak times are the times during the day when 
             none of the first peak and second peak times are defined.
             If this object is set, when ccqmCmtsEnfRuleMonDuration
             is polled during offpeak times, it would return this value.
             Since only defining the first peak is mandatory, and
             defining second peak and off peak are optional the
             monitoring combinations during the day could be:
             1) Only first peak
             2) First peak and second peak
             3) First peak and off peak
             4) All three i.e., first peak, second peak and off peak.
             It can be set to 0 to indicate that the offpeak monitoring
             no longer needs to be performed. The first peak
             parameters have to be defined before defining this object. 
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 22 }
             
ccqmCmtsEnfRuleOffPeakAvgRate OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "kbits/sec"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the rate at which the subscriber is 
             allowed to consume during the off-peak duration. The
             ccqmCmtsEnfRuleOffPeakDuration has to be defined before
             defining this value.
             This object cannot be changed when 
             ccqmCmtsEnfRuleRowStatus is active(1)."
        ::= { ccqmCmtsEnforceRuleEntry 23 }

--
-- ccqmEnfRuleViolateTable provides a snapshot of all the 
-- subscribers who violated their enforce rule over the
-- monitoring period. 
--
-- A sliding window, the size of the monitoring duration
-- is used. This window slides by an amount that is equal
-- to the sample rate. At every sample rate the bytes
-- transmitted in the time equal to a monitoring duration is
-- checked. If this is found to be larger than the defined
-- byte count limit per monitoring duration, the subscriber
-- is flagged as over consuming or violating the enforce rule.
--
-- This table will show all violating subscribers irrespective 
-- if they are associated with an enforced QoS parameter
-- set or not.  
--

ccqmEnfRuleViolateTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF CcqmEnfRuleViolateEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "This table contains information of the subscribers 
            who violated their enforce rule over the monitoring 
            duration.
            In the sliding window concept used, the monitoring duration
            is the size of the window. This window slides by an amount
            that is equal to the sample rate. At every sample rate 
            the bytes transmitted in the time equal to a monitoring 
            duration is checked. If this is found to be larger than 
            the defined byte count limit per monitoring duration, the 
            subscriber is flagged as over consuming or to have violated
            his enforce rule. 
            This table has entries for each of these violating 
            subscribers. In case the violating subscriber has
            a enforced QoS parameter set, the QoS parameter set for 
            such subscribers will be changed to the enforced QoS 
            parameter set for the penalty time. When the penalty time
            expires, the subscriber gets his registered QoS parameter
            set restored and will no longer appear in this table but
            will be monitored. "
        ::= { ccqmRuleViolateObjects 2 }

ccqmEnfRuleViolateEntry OBJECT-TYPE
        SYNTAX      CcqmEnfRuleViolateEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A set of attributes of a subscriber who violated
            his enforce rule in the monitoring period. 
            An entry in this table exists for each subscriber
            who over-consumed resources based on his configured
            QoS parameter set. However those subscribers who
            have an enforced QoS parameter set associated with
            their enforce rule, will be removed from this table 
            once their penalty time expires. An entry in this table
            can exist for ifEntry with an ifType of 
            docsCableMaclayer(127)."
        INDEX { ifIndex, ccqmEnfRuleViolateID }
        ::= { ccqmEnfRuleViolateTable 1 }

CcqmEnfRuleViolateEntry ::= SEQUENCE {
             ccqmEnfRuleViolateID              Unsigned32,
             ccqmEnfRuleViolateMacAddr         MacAddress,
             ccqmEnfRuleViolateRuleName        DisplayString,
             ccqmEnfRuleViolateByteCount       Unsigned32,
             ccqmEnfRuleViolateLastDetectTime  DateAndTime,
             ccqmEnfRuleViolatePenaltyExpTime  DateAndTime
        }

ccqmEnfRuleViolateID  OBJECT-TYPE
        SYNTAX      Unsigned32
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "An index assigned to the service flow by the CMTS.
            This represents an internal service flow ID."
        ::= { ccqmEnfRuleViolateEntry 1 }

ccqmEnfRuleViolateMacAddr OBJECT-TYPE
        SYNTAX      MacAddress
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "MAC address of this subscriber. If the subscriber has
            multiple MAC addresses, this is the MAC address associated
            with the Cable interface."
        ::= { ccqmEnfRuleViolateEntry 2 }  

ccqmEnfRuleViolateRuleName  OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(1..15))
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "A pointer to the enforce rule associated with this 
             subscriber. It provides for referencing the enforce rule 
             to determine the QoS monitoring parameters. This is same
             as ccqmCmtsEnfRuleName for the corresponding enforce rule
             in ccqmCmtsEnforceRuleTable."
        ::= { ccqmEnfRuleViolateEntry 3 }

ccqmEnfRuleViolateByteCount  OBJECT-TYPE
        SYNTAX      Unsigned32
        UNITS       "kbytes"
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The total kbytes consumed by the subscriber in the
            monitoring duration as specified in the corresponding 
            enforce rule object ccqmCmtsEnfRuleMonDuration. If the
            monitoring is restarted due to change in enforce rule
            or any other circumstance this count will be reset."
        ::= { ccqmEnfRuleViolateEntry 4 }

ccqmEnfRuleViolateLastDetectTime  OBJECT-TYPE
        SYNTAX      DateAndTime
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The time at which the subscriber was found to have violated
            his enforce rule and the time from which the enforced QoS
            parameter set, if any, was in effect. "
        ::= { ccqmEnfRuleViolateEntry 5 }

ccqmEnfRuleViolatePenaltyExpTime  OBJECT-TYPE
        SYNTAX      DateAndTime
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The time when the original QoS parameter set will be 
            restored for this violating subscriber. If there was 
            no enforced QoS parameter set configured for this 
            subscriber this object returns 0."
        ::= { ccqmEnfRuleViolateEntry 6 }

--
-- To provide additional level of control, user can set thresholds
-- for downstream/upstream bandwidth utilization, and only when these
-- thresholds are exceeded will the monitoring of modems (their 
-- appropriate service flows) will take place. So, for example, if the 
-- threshold for downstream bandwidth utilization is set at 90% and for
-- upstream it is 80%, the primary downstream service flow for the 
-- modem attached to this downstream will take place when the load on 
-- the downstream exceeds 90% while for the upstream service flow it
-- will be monitored if the load on the upstream bandwidth utilization
-- to which the modem is associated with exceeds 80%. This threshold is
-- the upper threshold, suppose the interface bandwidth utilization 
-- drops below this upper threshold, the monitoring would keep 
-- happening till it drops below another threshold which is the lower
-- threshold. Thus, for the above case, for instance the monitoring
-- for the downstream service flow would stop after the interface
-- bandwidth utilization drops below 40% while the same for upstream
-- could be 30%. This hysteresis is to take care of fluctuations in 
-- the load on the interface.
--
ccqmCmtsIfBwUtilTable OBJECT-TYPE
       SYNTAX      SEQUENCE OF CcqmCmtsIfBwUtilEntry
       MAX-ACCESS  not-accessible
       STATUS      current
       DESCRIPTION
           "This table contains the attributes which define the 
            bandwidth utilization thresholds for the upstream and 
            downstream interfaces and when the load on these interfaces
            exceeds the upper threshold, the monitoring of the
            associated modems service flows starts, and it stops when
            the interface utilization drops below the lower threshold.
            For the monitoring to start, there should be appropriate
            enforce-rules defined. In case no thresholds are defined,
            by default the monitoring of modems would take place if
            the appropriate enforce-rules are present."
       ::= { ccqmRuleIfBwUtilObjects 1 }

ccqmCmtsIfBwUtilEntry OBJECT-TYPE
        SYNTAX      CcqmCmtsIfBwUtilEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A set of attributes to provide additional level of
            control for monitoring modems. It is indexed by the 
            ifIndex of upstream/downstream interface, thus, only 
            docsCableDownstreamInterface(128) and
            docsCableUpstreamInterface(129) are allowed to be 
            configured."
        INDEX { ifIndex }
        ::= { ccqmCmtsIfBwUtilTable 1 }

CcqmCmtsIfBwUtilEntry ::= SEQUENCE {
            ccqmCmtsIfBwUtilUpThreshold Unsigned32,
            ccqmCmtsIfBwUtilLoThreshold Unsigned32,
            ccqmCmtsIfBwUtilRowStatus   RowStatus
     }

ccqmCmtsIfBwUtilUpThreshold OBJECT-TYPE
        SYNTAX      Unsigned32 (1..99)
        UNITS       "percent"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the upper threshold for the interface
             bandwidth utilization and when interface bandwidth
             utilization exceeds this threshold, monitoring of the 
             appropriate modem's service flow will start if there is an
             asociated enforce-rule present. This object can't be set
             to a value lower than ccqmCmtsIfBwUtilLoThreshold."
        DEFVAL     { 80 }
        ::= { ccqmCmtsIfBwUtilEntry 1 }

ccqmCmtsIfBwUtilLoThreshold OBJECT-TYPE
        SYNTAX      Unsigned32 (1..99)
        UNITS       "percent"
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "This object defines the lower threshold for the interface
             bandwidth utilization and when interface bandwidth
             utilization drops below this threshold, the monitoring of
             the appropriate modem's service flow will stop. This
             object can't be set to a value higher than 
             ccqmCmtsIfBwUtilUpThreshold."
        DEFVAL     { 40 }                                      
        ::= { ccqmCmtsIfBwUtilEntry 2 }                       

ccqmCmtsIfBwUtilRowStatus  OBJECT-TYPE
        SYNTAX      RowStatus
        MAX-ACCESS  read-create
        STATUS      current
        DESCRIPTION
            "The object controls and reflects the status of rows in this
             table. create-and-wait is not supported.
             The objects can be changed even when the row status is 
             active(1)."
        ::= { ccqmCmtsIfBwUtilEntry 3 } 
            
             
--
-- Object to enable and disable sending traps to indicate Enforce Rule 
-- violations
--
ccqmEnfRuleViolateNotifEnable  OBJECT-TYPE
        SYNTAX      TruthValue
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "An indication of whether the ccqmEnfRuleViolateNotification
            is enabled or disabled."
        DEFVAL { false }
        ::= { ccqmRuleViolateObjects 3 }


--
-- The Cisco Cable QoS Monitoring MIB Notifications
--

ccqmMIBNotificationsPrefix   OBJECT IDENTIFIER
                ::= { ciscoCableQosMonitorMIB  2 }

ccqmMIBNotifications         OBJECT IDENTIFIER
                ::= { ccqmMIBNotificationsPrefix 0 }

ccqmEnfRuleViolateNotification  NOTIFICATION-TYPE
       OBJECTS {
            ccqmEnfRuleViolateMacAddr,         
            ccqmEnfRuleViolateRuleName,
            ccqmEnfRuleViolatePenaltyExpTime,
            ccqmEnfRuleViolateByteCount  
       }
       STATUS current
       DESCRIPTION
           "A notification that is sent when the subscriber
           if found to have violated his enforce rule. This
           indicates that this subscriber was found to be 
           over consuming resources. If the enforce rule 
           associated with this subscriber has a enforced QoS
           parameter set configured, the trap also indicates 
           that the QoS parameter set of this subscriber are 
           changed to the enforced QoS parameter set. "
       ::= { ccqmMIBNotifications 1 }


ccqmMIBConformance         OBJECT IDENTIFIER
                ::= { ciscoCableQosMonitorMIB 3 }

ccqmMIBCompliances         OBJECT IDENTIFIER
                ::= { ccqmMIBConformance 1 }

ccqmMIBGroups              OBJECT IDENTIFIER
                ::= { ccqmMIBConformance 2 }

-- compliance statements

ccqmCompliance  MODULE-COMPLIANCE
        STATUS  obsolete -- superseded by ccqmComplianceRev1    
        DESCRIPTION
            "The compliance statement for CMTS devices that implement
            the Qos Monitoring feature. "
        MODULE -- this module
                MANDATORY-GROUPS {
                        ccqmEnfRuleGroup,
                        ccqmEnfRuleViolateGroup,
                        ccqmEnfRuleViolateNotifGroup
                        }
        OBJECT       ccqmCmtsEnfRuleSampleRate
        WRITE-SYNTAX Unsigned32 (10..30)
        DESCRIPTION
            "Currently only the range 10 to 30 minutes 
            is supported." 
        ::= { ccqmMIBCompliances 1 }

ccqmComplianceRev1  MODULE-COMPLIANCE
        STATUS  current    
        DESCRIPTION
            "The compliance statement for CMTS devices that implement
            the Qos Monitoring feature. "
        MODULE -- this module
                MANDATORY-GROUPS {
                        ccqmEnfRuleGroupRev1,
                        ccqmEnfRuleViolateGroup,
                        ccqmCmtsRuleIfBwUtilGroup,
                        ccqmEnfRuleViolateNotifGroup
                        }
        ::= { ccqmMIBCompliances 2 }

-- units of conformance

ccqmEnfRuleGroup OBJECT-GROUP
        OBJECTS {
              ccqmCmtsEnfRuleRegQoS,
              ccqmCmtsEnfRuleEnfQos,
              ccqmCmtsEnfRuleMonDuration,
              ccqmCmtsEnfRuleSampleRate,
              ccqmCmtsEnfRulePenaltyPeriod,
              ccqmCmtsEnfRuleByteCount,
              ccqmCmtsEnfRuleDirection,
              ccqmCmtsEnfRuleAutoEnforce,
              ccqmCmtsEnfRuleRowStatus
             }
        STATUS    obsolete -- superseded by ccqmEnfRuleGroupRev1
        DESCRIPTION
            "Group of objects implemented in CMTS
            providing enforce rule and QoS monitoring
            information. "
        ::= { ccqmMIBGroups 1 }

ccqmEnfRuleViolateGroup OBJECT-GROUP
        OBJECTS {
              ccqmEnfRuleViolateRuleName,
              ccqmEnfRuleViolateMacAddr,
              ccqmEnfRuleViolateByteCount,
              ccqmEnfRuleViolateLastDetectTime,
              ccqmEnfRuleViolatePenaltyExpTime,
              ccqmEnfRuleViolateNotifEnable
             }
        STATUS    current
        DESCRIPTION
            "Group of objects implemented in CMTS
            providing information of enforce rule
            violations. "
        ::= { ccqmMIBGroups 2 }

ccqmEnfRuleViolateNotifGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
             ccqmEnfRuleViolateNotification
             }
        STATUS        current
        DESCRIPTION
            "The notification which a CISCO-CABLE-QOS-MONITOR-MIB
            is required to implement."
        ::= { ccqmMIBGroups 3 }

ccqmEnfRuleGroupRev1 OBJECT-GROUP
        OBJECTS {
              ccqmCmtsEnfRuleRegQoS,
              ccqmCmtsEnfRuleEnfQos,
              ccqmCmtsEnfRuleMonDuration,
              ccqmCmtsEnfRuleSampleRate,
              ccqmCmtsEnfRulePenaltyPeriod,
              ccqmCmtsEnfRuleDirection,
              ccqmCmtsEnfRuleAutoEnforce,
              ccqmCmtsEnfRuleRowStatus,
              ccqmCmtsEnfRuleAvgRate,
              ccqmCmtsEnfRuleDocsVer,
              ccqmCmtsEnfRuleRegSerClassName,
              ccqmCmtsEnfRuleEnfSerClassName,
              ccqmCmtsEnfRuleMonType,
              ccqmCmtsEnfRuleFirstPeakTime,
              ccqmCmtsEnfRuleFirstDuration,
              ccqmCmtsEnfRuleFirstAvgRate,
              ccqmCmtsEnfRuleSecondPeakTime,
              ccqmCmtsEnfRuleSecondDuration,
              ccqmCmtsEnfRuleSecondAvgRate,
              ccqmCmtsEnfRuleOffPeakDuration,
              ccqmCmtsEnfRuleOffPeakAvgRate
             }
        STATUS    current                
        DESCRIPTION
            "Group of objects implemented in CMTS
            providing enforce rule and QoS monitoring
            information. "
        ::= { ccqmMIBGroups 4 }

ccqmCmtsRuleIfBwUtilGroup OBJECT-GROUP
        OBJECTS {
               ccqmCmtsIfBwUtilUpThreshold,
               ccqmCmtsIfBwUtilLoThreshold,
               ccqmCmtsIfBwUtilRowStatus
             }
        STATUS    current
        DESCRIPTION
            "Group of objects implemented in CMTS
            providing information of interface utilization
            thresholds. "
        ::= { ccqmMIBGroups 5 }

END
