-- *******************************************************************
-- Juniper enterprise specific ATM Class Of Service MIB. 
--
-- Copyright (c) 2002-2003, Juniper Networks, Inc.
-- All rights reserved.
--
-- The contents of this document are subject to change without notice.
-- *******************************************************************

    JUNIPER-ATM-COS-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        Integer32, Counter64                 FROM SNMPv2-SMI

        ifIndex                              FROM IF-MIB
        atmVclVpi, atmVclVci                 FROM ATM-MIB
        jnxMibs                              FROM JUNIPER-SMI
        jnxCosFcId                           FROM JUNIPER-COS-MIB;


    jnxAtmCos MODULE-IDENTITY
        LAST-UPDATED "200309170000Z" -- Wed Sep 17 2003 UTC
        ORGANIZATION "Juniper Networks, Inc."
        CONTACT-INFO
                "Juniper Technical Assistance Center
                      Juniper Networks, Inc.
                      1194 N. Mathilda Avenue
                      Sunnyvale, CA 94089
                      E-mail: support@juniper.net"

        DESCRIPTION
                "The Juniper enterprise MIB for ATM COS (Class Of
                Service) infrastructure. For detailed information on ATM
                COS, Junos Documentation is recommended as the
                reference.

                 Abbreviations:
                     COS  - Class Of Service
                     RED  - Random Early Detection
                     PLP  - Packet Loss Priority"

        REVISION     "200309170000Z"   -- Sep 17 2003
        DESCRIPTION  "Added jnxCosAtmTrunkTable for COS enabled Trunks."

        REVISION     "200306200000Z"   -- Jun 20th 2003
        DESCRIPTION  "Add Per queue PLP stats for COS enabled VCs."

        REVISION     "200209040000Z"   -- Sep 4th 2002 
        DESCRIPTION  "Initial Version."

        ::= { jnxMibs 21 }


    -- 
    -- ATM COS VC Table : represents VCs that have COS configured. 
    --
    jnxCosAtmVcTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF JnxCosAtmVcEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table of ATM VCs which have COS configured."


    ::= { jnxAtmCos 1 }

    jnxCosAtmVcEntry OBJECT-TYPE
        SYNTAX      JnxCosAtmVcEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION 
            "This entry contains COS info specific to an ATM VC.
	    Each entry is indexed using ifIndex, vpi and vci of
	    the VC."
        INDEX       { ifIndex, atmVclVpi, atmVclVci}
    ::= { jnxCosAtmVcTable 1 }

    JnxCosAtmVcEntry ::= 
        SEQUENCE {
            jnxCosAtmVcCosMode  INTEGER
    }

    jnxCosAtmVcCosMode OBJECT-TYPE
        SYNTAX      INTEGER {
                        strict(0),
                        alternate(1)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The mode of COS queue priority for the VC.

             strict mode :
             One queue of the four queues has strict high priority and
             is always serviced before the rest of the queues. The
             remaining queues are serviced in round robin fashion.

             alternate mode :
	     One queue has high priority, but the servicing of the
	     queues alternates between the high priority queue and the
	     rest of the queues."
    ::= { jnxCosAtmVcEntry 1 }

    --
    -- ATM VC scheduler table
    -- 
    jnxCosAtmVcScTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF JnxCosAtmVcScEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table of rows representing atm-scheduler config
            parameters for each forwarding class within a specified VC.
            
            NOTE: These schedulers are specific to an atm interface and
            are different from the typical schedulers specified under
            class-of-service config in CLI. Hence, hereafter, through
            out this mib, scheduler will be referred to as atm-scheduler
            to avoid any confusion."


    ::= { jnxAtmCos 2 }

    jnxCosAtmVcScEntry OBJECT-TYPE
        SYNTAX      JnxCosAtmVcScEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION 
            "This entry represents atm-scheduler config parameters per
            forwarding class and per VC."
        INDEX       { ifIndex, atmVclVpi, atmVclVci, jnxCosFcId }

    ::= { jnxCosAtmVcScTable 1 }

    JnxCosAtmVcScEntry ::= 
        SEQUENCE {
             -- Scheduler parameters
             jnxCosAtmVcScPriority             INTEGER,
             jnxCosAtmVcScTxWeightType         INTEGER,
             jnxCosAtmVcScTxWeight             Integer32,

             -- Drop profile type
             jnxCosAtmVcScDpType               INTEGER,

             -- Linear RED drop profile info
             jnxCosAtmVcScLrdpQueueDepth       Integer32,
             jnxCosAtmVcScLrdpLowPlpThresh     Integer32,
             jnxCosAtmVcScLrdpHighPlpThresh    Integer32,

             -- Epd Drop profile
             jnxCosAtmVcEpdThreshold           Integer32
    }

    -- Atm-scheduler parameters
    jnxCosAtmVcScPriority OBJECT-TYPE
        SYNTAX      INTEGER {
                        low(0),
                        high(1)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The atm-scheduler priority for the queue associated with
            the specified forwarding class within the specified VC."
    ::= { jnxCosAtmVcScEntry 1 }

    jnxCosAtmVcScTxWeightType OBJECT-TYPE
        SYNTAX      INTEGER {
                        cells(0),
                        percent(1)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The atm-scheduler transmit-weight-type for the queue
            associated with the specified forwarding class inside the
            specified VC.

            An atm-scheduler can specify the transmit-weight-type either
            as number of cells or as a percentage of the queue size."  
    ::= { jnxCosAtmVcScEntry 2 }

    jnxCosAtmVcScTxWeight OBJECT-TYPE
        SYNTAX      Integer32(0..32000)  
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The atm-scheduler's transmit weight for the queue
            associated with the specified forwarding class and the
            specified VC. This object value is either expressed in
            units of cells or as a percentage of the total VC
            bandwidth. The unit (value-type) can be determined using
            the object jnxCosAtmVcScTxWeightType." 
    ::= { jnxCosAtmVcScEntry 3 }

    jnxCosAtmVcScDpType OBJECT-TYPE
        SYNTAX      INTEGER {
                        linearRed(0),
                        epd(1)
                    }
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
            "The type of RED drop profile configured for the specified
            forwarding class within the specified VC. A scheduler can
            specify either linear or constant drop profile.

            A constant type drop profile (aka EPD) specifies that when
            the number of queued cells exceeds a threshold, all the
            cells should be dropped. Whereas a linear type drop profile
            specifies that only a percentage of cells be dropped based
            on the number of queued cells at any time."
    ::= { jnxCosAtmVcScEntry 4 }
             
    jnxCosAtmVcScLrdpQueueDepth OBJECT-TYPE
        SYNTAX      Integer32(0..32000) 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The maximum queue size in cells, as specified by the linear
            RED drop profile associated with the specified forwarding
            class within the specified VC.

            This object is valid only when value of object
            jnxCosAtmVcScDpType is 'linearRed(0)'."
    ::= { jnxCosAtmVcScEntry 5 }

    jnxCosAtmVcScLrdpLowPlpThresh OBJECT-TYPE
        SYNTAX      Integer32(0..32000) 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
	    "The threshold percentage of fill-level beyond which low PLP
	    (Packet Loss Priority) packets belonging to the specified
	    forwarding class within the specified VC are randomly
	    dropped. This value is specified by linear RED drop profile
	    config. 
            
            This object is valid only when value of object
            jnxCosAtmVcScDpType is 'linearRed(0)'."
    ::= { jnxCosAtmVcScEntry 6 }

    jnxCosAtmVcScLrdpHighPlpThresh OBJECT-TYPE
        SYNTAX      Integer32(0..32000) 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
	    "The threshold percentage of fill-level beyond which high
	    PLP (Packet Loss Priority) packets belonging to the
	    specified forwarding class within the specified VC are
	    randomly dropped. This value is specified by linear RED drop
	    profile config. 
            
            This object is valid only when jnxCosAtmVcScDpType is
            'linearRed(0)'."
    ::= { jnxCosAtmVcScEntry 7 }

    jnxCosAtmVcEpdThreshold OBJECT-TYPE
        SYNTAX      Integer32(0..32000) 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "If a EPD type drop profile is configured for this scheduler
            and if the number of cells queued exceeds this threshold
            value, all the cells in the queue are dropped.
            
            This object has valid value only when jnxCosAtmVcScDpType
            is 'epd(1)'."
    ::= { jnxCosAtmVcScEntry 8 }


    -- 
    -- ATM COS Queue Stats Table.
    --
    jnxCosAtmVcQstatsTable OBJECT-TYPE
        SYNTAX      SEQUENCE OF JnxCosAtmVcQstatsEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "A table of per VC and per forwarding class queue stats
            entries." 


    ::= { jnxAtmCos 3 }

    jnxCosAtmVcQstatsEntry OBJECT-TYPE
        SYNTAX      JnxCosAtmVcQstatsEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION 
            "This entry contains queue stats for a specified
            forwarding class and specified VC."
        INDEX       { ifIndex, atmVclVpi, atmVclVci, jnxCosFcId }
    ::= { jnxCosAtmVcQstatsTable 1 }

    JnxCosAtmVcQstatsEntry ::= 
        SEQUENCE {
            jnxCosAtmVcQstatsOutPackets        Counter64,
            jnxCosAtmVcQstatsOutBytes          Counter64,
            jnxCosAtmVcQstatsOutRedDropPkts    Counter64,
            jnxCosAtmVcQstatsOutNonRedDrops    Counter64,

            -- PLP traffic stats
            jnxCosAtmVcQstatsOutLpBytes        Counter64,
            jnxCosAtmVcQstatsOutLpPkts         Counter64,

            -- PLP drop stats
            jnxCosAtmVcQstatsOutLpDropBytes    Counter64,
            jnxCosAtmVcQstatsOutHpDropBytes    Counter64,
            jnxCosAtmVcQstatsOutLpDropPkts     Counter64,
            jnxCosAtmVcQstatsOutHpDropPkts     Counter64
    }

    jnxCosAtmVcQstatsOutPackets OBJECT-TYPE
        SYNTAX      Counter64 
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of packets belonging to the specified
            forwarding class transmitted on the specified VC."
    ::= { jnxCosAtmVcQstatsEntry 1 }

    jnxCosAtmVcQstatsOutBytes OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of bytes belonging to the specified forwarding
            class that were transmitted on the specified VC."
    ::= { jnxCosAtmVcQstatsEntry 2 }

    jnxCosAtmVcQstatsOutRedDropPkts OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of outgoing packets on the specified VC and
            belonging to the specified forwarding class, that were
            RED-dropped."
    ::= { jnxCosAtmVcQstatsEntry 3 }

    jnxCosAtmVcQstatsOutNonRedDrops OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of outgoing packets on the specified VC and
            belonging to the specified forwarding class, that were
            dropped not as a result of RED mechanism, but because of
            errors in packets."
    ::= { jnxCosAtmVcQstatsEntry 4 }

    -- PLP traffic stats
    jnxCosAtmVcQstatsOutLpBytes OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of low PLP (PLP0) bytes transmitted." 
    ::= { jnxCosAtmVcQstatsEntry 5 }

    jnxCosAtmVcQstatsOutLpPkts OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of low PLP (PLP0) packets transmitted." 
    ::= { jnxCosAtmVcQstatsEntry 6 }

    -- PLP drop stats
    jnxCosAtmVcQstatsOutLpDropBytes OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of low PLP (PLP0) bytes dropped at the output
            queue." 
    ::= { jnxCosAtmVcQstatsEntry 7 }

    jnxCosAtmVcQstatsOutHpDropBytes OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of high PLP (PLP1) bytes dropped at the output
            queue." 
    ::= { jnxCosAtmVcQstatsEntry 8 }

    jnxCosAtmVcQstatsOutLpDropPkts OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of low PLP (PLP0) packets dropped at the
            output queue." 
    ::= { jnxCosAtmVcQstatsEntry 9 }

    jnxCosAtmVcQstatsOutHpDropPkts OBJECT-TYPE
        SYNTAX      Counter64
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION 
            "The number of high PLP (PLP1) packets dropped at the
            output queue." 
    ::= { jnxCosAtmVcQstatsEntry 10 }



END
