 -- *****************************************************************
 -- CISCO-QOS-POLICY-CONFIG-MIB: Mib for QoS policy configuration.
 --
 -- November 2000, Frank Chao
 --
 -- Copyright (c) 2000 by Cisco Systems, Inc.
 -- All rights reserved.
 -- *****************************************************************
 --

CISCO-QOS-POLICY-CONFIG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE
        FROM SNMPv2-SMI
   
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
 
    TruthValue,
    TEXTUAL-CONVENTION
        FROM SNMPv2-TC
 
    ifIndex
        FROM IF-MIB
 
    ciscoMgmt
        FROM CISCO-SMI

    QosInterfaceQueueType
        FROM CISCO-QOS-PIB-MIB
    ;
 
ciscoQosPolicyConfigMIB    MODULE-IDENTITY
    LAST-UPDATED    "200011021030Z"
    ORGANIZATION    "Cisco Systems Inc."
    CONTACT-INFO
        "Cisco Systems
         Customer Service
 
         Postal: 170 W. Tasman Drive
         San Jose, CA 95134, USA
 
         Tel: +1 800 553-NETS
 
         E-mail: cs-wbu@cisco.com"
    DESCRIPTION
        "This MIB module defines managed objects that support the
        policy source configuration of Quality of Service (QoS) on
        the device.
 
        Terminology :
 
        Common Open Policy Service (COPS) : A client/server model for
        supporting policy control over QoS Signaling Protocols and
        provisioned QoS resource management, etc.  COPS is a query and
        response protocol that can be used to exchange policy
        information between a policy server (Policy Decision Point or
        PDP) and its clients (Policy Enforcement Points or PEPs).
 
        Policy Information Base (PIB) : The database of policy
        information stored in the COPS client device.
 
        QoS : The method which attempts to ensure that the network
        requirements of different applications can be met by giving
        preferential forwarding treatment to some traffic, perhaps at
        the expense of other traffic.
 
        QoS policy : a set of parameters used to achieve QoS purpose.
        The device uses these parameters in flow classification, flow
        scheduling, flow policing and codepoint mutation.
 
        RSVP : Resource Reservation Protocol.  RSVP is a signaling
        mechanism that the application will use to signal parameters
        to the network, so that network can assign QoS for the
        application data stream.

        COPS-PR : a COPS client type which supports device's
        provisioning of QoS policy.

        COPS-RSVP : a COPS client type which supports device's
        outsourcing of QoS policy (RSVP).

        "

    REVISION    "200011021030Z"
    DESCRIPTION
        "Revised version from CISCO-QOS-CONFIG-MIB.  The original OID is
         assigned to CISCO-QOS-CONFIG-MIB and then after discussing
         with people in COPS group, we decided to change the name of the
         MIB. And also adding some objects to reflect the difference
         between users' QoS policy configuration and runtime QoS policy
         configuration." 

    REVISION    "200002261930Z"
    DESCRIPTION
        "Initial version of this MIB module."
 
--        REFERENCE
--            "See also CISCO-COPS-CLIENT-MIB and CISCO-QOS-PIB-MIB."

    ::= { ciscoMgmt 159 }
 
 -- Textual Conventions used in the Qos Config MIB.
 
QosPolicySource ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION 
        "The source where a device obtains QoS policy.
 
        none (1) indicates that there is no QoS policy applied on this
        device.  And this value only can be read and cannot be set by
        the users.
 
        local (2) indicates that the QoS policy is from local device
        configuration.  For example, the QoS policy can be configured
        through command line interface (CLI).
 
        cops (3) indicates that the QoS policy is from a COPS server."
    SYNTAX    INTEGER {
                  none (1),   -- read-only, users cannot set this value.
                  local (2),
                  cops  (3)
              }
 
--
-- Overview of MIB Objects:
--

ciscoQosPolicyConfigMIBObjects OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIB 1 }
 
-- object groups
 
qosPolicyGlobalObjects          OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIBObjects 1 }
 
qosPolicyInterfaceObjects       OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIBObjects 2 }

--
--
-- The qosPolicyGlobalObjects group
--
--
 
qosEnabled  OBJECT-TYPE
    SYNTAX     TruthValue
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Indicates whether the QoS feature is enabled on the device.
 
        true(1) means that the QoS feature is enabled on this device.
 
        false(2) means that the QoS feature is disabled. All the QoS
        policy on the device will be ignored."
    DEFVAL { false }
    ::= { qosPolicyGlobalObjects 1 }
 
qosPrAdminPolicySource OBJECT-TYPE
    SYNTAX     QosPolicySource
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Indicates the desired source of a device's provisioning of
        QoS policy for the whole device.

        Actually, the source of an interface's provisioning of QoS
        policy is controlled by two level configurations.  The first
        level is the system level to be the global control for the
        whole device.  This object is for the system level.  The second
        level is for each individual interface.  The 
        qosPrIfAdminPolicySource is for the interface level.  So, the
        value of this object will decide that the value of
        qosPrIfAdminPolicySource can take precedence or not.  If this
        object is configured to cops(3), the value of
        qosPrIfAdminPolicySource has the precedence configuration of
        the interface's provisioning of QoS policy source.

        That is to say if this object is configured to local(2), then
        the value of qosPrIfAdminPolicySource will be ignored.  It
        means the provisioning of QoS policy source of all the
        interfaces in this device will be from local information if
        this MIB is configured to local(2).

        If this object is configured to cops(3), then the final
        provisioning of QoS policy of an interface is determined by the
        configuration of the qosPrIfAdminPolicySource object of that
        interface.

        Changing qosPrIfAdminPolicySource of an interface from cops(3)
        to local(2) while the value of this object is cops(3) makes the
        interface discard the QoS provisioning policy from the COPS
        server and uses the local QoS provisioning policy configuration
        instead."
    DEFVAL { local }
    ::= { qosPolicyGlobalObjects 2 }
 
qosPrOperPolicySource OBJECT-TYPE
    SYNTAX     QosPolicySource
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the operational source of a device's provisioning of
        QoS policy.

        Note that when qosPrAdminPolicySource transitions to cops(3),
        qosPrOperPolicySource will normally also transition to
        cops(3).  In this situation, it is possible that
        qosPrOperPolicySource's transition will not occur immediately
        because the system is initializing the COPS function at the
        system booting up time, but rather after a small time lag to
        complete certain operations before going 'cops'."
    ::= { qosPolicyGlobalObjects 3 }
 
qosRsvpAdminPolicySource OBJECT-TYPE
    SYNTAX     QosPolicySource
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "Indicates the desired source of a device's outsourcing of QoS
        policy.  Outsourcing means the policy information is from
        outside source not from local information."
    DEFVAL { local }
    ::= { qosPolicyGlobalObjects 4 }
 
qosRsvpOperPolicySource OBJECT-TYPE
    SYNTAX     QosPolicySource
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the current operational source of a device's
        outsourcing of QoS policy.

        Note that when qosRsvpAdminPolicySource transitions to
        cops(3), qosRsvpOperPolicySource will normally also transition
        to cops(3).  In this situation, it is possible that
        qosRsvpOperPolicySource's transition will not occur
        immediately because the system is initializing the COPS
        function at the system boot up time, but rather after a small
        time lag to complete certain operations before going 'cops'."
    ::= { qosPolicyGlobalObjects 5 }

qosCopsPolicyStatus    OBJECT-TYPE
    SYNTAX     INTEGER { keep(1), discard(2) }
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
        "This object indicates whether the QoS policy downloaded from
        COPS server should be kept or discarded by the system while
        the COPS function is not running in the system or the
        connection between PDP and PEP is lost or any other reason
        that system cannot get the QoS policy from COPS server."
    ::= { qosPolicyGlobalObjects 6 }
 
-- 
-- The qosPrIfObjects group
-- 
 
qosPrIfTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QosPrIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of interface entries.  An entry will exist for each
        interface which can support the provisioning of QoS policy
        feature."
    ::= { qosPolicyInterfaceObjects 1 }
 
qosPrIfEntry OBJECT-TYPE
    SYNTAX      QosPrIfEntry 
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing the configuration of provisioning of QoS
        policy of a particular interface."
    INDEX { ifIndex }
    ::= { qosPrIfTable 1 }
 
QosPrIfEntry ::= SEQUENCE {
    qosPrIfAdminPolicySource    QosPolicySource,
    qosPrIfOperPolicySource     QosPolicySource 
}
 
qosPrIfAdminPolicySource  OBJECT-TYPE
    SYNTAX   QosPolicySource
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Indicates the desired source of QoS provision policy for
        this interface.
 
        This object is only effective when the value of
        qosPrOperPolicySource is cops(3) and the value of qosEnabled
        is true(1)."
    DEFVAL { cops }
    ::= { qosPrIfEntry 1 }
 
qosPrIfOperPolicySource  OBJECT-TYPE
    SYNTAX   QosPolicySource
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indicates the operational source of QoS provisioning policy
        for this interface.
 
        When the value of the object qosPrOperPolicySource is
        local(2), the QoS provisioning policy for this interface is
        taken from device's local configuration.  If
        qosPrOperPolicySource is configured to cops(3), the current
        operational source of QoS provisioning policy will depend on
        the configuration of qosPrIfAdminPolicySource object.

        Here is the logic.

        IF qosPrOperPolicySource == local(2)
        THEN qosPrIfOperPolicySource is local(2)
        ELSE
            IF qosPrOperPolicySource == cops(3)
            THEN
                IF qosPrIfAdminPolicySource == cops(3)
                THEN qosPrIfOperPolicySource is cops(3)
                ELSE qosPrIfOperPolicySource is local(2)
            ELSE
                qosPrIfOperPolicySource is none(1)
            END
        END
             
        For example, if qosPrOperPolicySource shows local(2), although
        the qosPrIfAdminPolicySource is configured cops(3), the QoS
        provisioning policy running on this interface is from local
        device configuration.  It means this object will be local(2).

        Note that when qosPrIfAdminPolicySource transitions to
        cops(3) if qosPrOperPolicySource is cops(3),
        qosPrIfOperPolicySource will normally also transition to
        cops(3).  In this situation, it is possible that
        qosPrIfOperPolicySource's transition will not occur immediately
        because the system is initializing the COPS function at the
        system boot up time, but rather after a small time lag to
        complete certain operations before going 'cops'."
    ::= { qosPrIfEntry 2 }
 
-- 
-- QoS Interface Capability Table
-- 

qosIfCapabilityTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF QosIfCapabilityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A list of interface entries.  An entry will exist for each
        interface which can support the QoS feature."
    ::= { qosPolicyInterfaceObjects 2 }

qosIfCapabilityEntry OBJECT-TYPE
    SYNTAX      QosIfCapabilityEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A description of an interface's QoS capabilities."
    INDEX { ifIndex, qosIfDirection, qosIfQType }
    ::= { qosIfCapabilityTable 1 }

QosIfCapabilityEntry ::= SEQUENCE {
    qosIfDirection        INTEGER,
    qosIfQType            QosInterfaceQueueType,
    qosIfCapabilities     BITS
}

qosIfDirection     OBJECT-TYPE
    SYNTAX      INTEGER { ingress(1), egress(2), both(3) }
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The traffic direction of the interface.
         'ingress' means the traffic coming in the interface.
         'egress' means the traffic going out the interface.
         'both' means the traffic coming in and going out."
    ::= { qosIfCapabilityEntry 1 }

qosIfQType      OBJECT-TYPE
    SYNTAX      QosInterfaceQueueType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The interface type in terms of number of queues and
        thresholds.  A queue is a buffer for storing network packets.
        A threshold is a water mark used to control traffic amount of
        a queue."
    ::= { qosIfCapabilityEntry 2 }

qosIfCapabilities   OBJECT-TYPE
    SYNTAX BITS {
        unspecified (0),

        -- Classification support
        inputL2Classification (1), inputIpClassification (2),
        outputL2Classification (3), outputIpClassification (4),
        inputPortClassification (19), outputPortClassification (20),

        -- Policing support
        inputUflowPolicing (5), inputAggregatePolicing (6),
        outputUflowPolicing (7), outputAggregatePolicing (8),
        policeByMarkingDown (9), policeByDropping (10),
        inputUflowShaping (21), inputAggregateShaping (22),
        outputUflowShaping (23), outputAggregateShaping (24),

        -- Supported scheduling mechanisms
        fifo (11), wrr (12), wfq (13), cq (14), pq (15), cbwfq (16),
        pqWrr (25), pqCbwfq (26),

        -- Supported congestion control mechanisms
        tailDrop (17), wred (18)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "An enumeration of interface capabilities.  Used by the
        management side to select policies and configuration to
        push to the device."
    ::= { qosIfCapabilityEntry 3 }

--
-- Notifications
--
 
ciscoQosPolicyMIBNotifications  OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIB 2 }
 
--
-- Conformance
--
 
ciscoQosPolicyConfigMIBConformance OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIB 3 }
 
ciscoQosPolicyConfigMIBCompliances OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIBConformance 1 }
 
ciscoQosPolicyConfigMIBGroups      OBJECT IDENTIFIER
    ::= { ciscoQosPolicyConfigMIBConformance 2 }
 
 
-- Compliance
 
ciscoQosPolicyConfigMIBCompliance MODULE-COMPLIANCE
        STATUS current
        DESCRIPTION
            "The compliance statement for the
             CISCO-QOS-POLICY-CONFIG-MIB."

        MODULE
        GROUP qosGlobalGroup
        DESCRIPTION
            "The group must be implemented in the Cisco devices
            Catalyst 6000 serires switch."

        OBJECT qosEnabled
        MIN-ACCESS  read-only
        DESCRIPTION
            "If the device doesn't support the ability to
            enable/disable QoS function, the object is only required
            to be read-only."

        GROUP qosPrGlobalGroup
        DESCRIPTION
            "If the device supports COPS-PR, it supports this group."

        GROUP qosRsvpGlobalGroup
        DESCRIPTION
            "If the device supports COPS-RSVP, it supports this
             group."

        GROUP qosPrInterfaceGroup
        DESCRIPTION
            "A device which allows COPS-PR to be enabled on a
            per-interface basis supports this group."

        GROUP qosInterfaceCapabilityGroup
        DESCRIPTION
            "A device which supports QoS feature to be enabled on a
            per-interface basis must support this group."

        GROUP qosCopsPolicyStatusGroup
        DESCRIPTION
            "The group should be implemented in the Cisco devices
            which supports QoS feature."

        OBJECT qosCopsPolicyStatus
        MIN-ACCESS read-only
        DESCRIPTION
            "If the device doesn't support the ability to configure
            to keep or discard the QoS policy which is downloaded from
            COPS server while the COPS function is not working, this
            object is only required read-only."

        ::= { ciscoQosPolicyConfigMIBCompliances 1 }
 
-- 
-- Units of Conformance
-- Objects Groups Define 
--
 
qosGlobalGroup OBJECT-GROUP
    OBJECTS {
        qosEnabled
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing the ability to
        enable/disable QoS feature on the device."
    ::= { ciscoQosPolicyConfigMIBGroups 1 }
 
qosPrGlobalGroup OBJECT-GROUP
    OBJECTS {
        qosPrAdminPolicySource,
        qosPrOperPolicySource
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing the global configuration of
        the provisioning of QoS policy source on the device."
    ::= { ciscoQosPolicyConfigMIBGroups 2 }

qosRsvpGlobalGroup OBJECT-GROUP
    OBJECTS {
        qosRsvpAdminPolicySource,
        qosRsvpOperPolicySource
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing the global configuration of
        the outsourcing of QoS policy source on the device."
    ::= { ciscoQosPolicyConfigMIBGroups 3 }
 
qosPrInterfaceGroup OBJECT-GROUP
    OBJECTS {
        qosPrIfAdminPolicySource,
        qosPrIfOperPolicySource
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing the interface level
        configuration of the provisioning of QoS policy source on the
        device."
    ::= { ciscoQosPolicyConfigMIBGroups 4 }
 
qosInterfaceCapabilityGroup OBJECT-GROUP
    OBJECTS {
        qosIfCapabilities
    }
    STATUS current
    DESCRIPTION
        "A collection of object providing the QoS capabilities of the
        interface on the device to help QoS policy configuration."
    ::= { ciscoQosPolicyConfigMIBGroups 5 }

qosCopsPolicyStatusGroup  OBJECT-GROUP
    OBJECTS {
        qosCopsPolicyStatus
    }
    STATUS current
    DESCRIPTION
        "A collection of object providing the status of QoS policy
        downloaded from COPS server."
    ::= { ciscoQosPolicyConfigMIBGroups 6 }

END
