-- *****************************************************************
-- MIB for FIFO, Priority, Custom, and Fair Queuing
--
-- May 1995, Fred Baker
--
-- Copyright (c) 1995-1996 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-QUEUE-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY, OBJECT-TYPE,
	Counter32, Integer32, Gauge32
		FROM SNMPv2-SMI
	MODULE-COMPLIANCE, OBJECT-GROUP
		FROM SNMPv2-CONF
	TEXTUAL-CONVENTION
		FROM SNMPv2-TC
	ifIndex
		FROM RFC1213-MIB
	ciscoMgmt
		FROM CISCO-SMI;

ciscoQueueMIB MODULE-IDENTITY
	LAST-UPDATED	"9505310000Z"
	ORGANIZATION	"Cisco Systems, Inc."
	CONTACT-INFO
		"	Cisco Systems
			Customer Service
	
		Postal: 170 West Tasman Drive
			San Jose, CA  95134
			USA
	
		Tel:	+1 800 553-NETS
	
		E-mail: cs-snmp@cisco.com"
	DESCRIPTION
		"This is the MIB module for objects used to manage
		interface queuing in Cisco devices."
	REVISION        "9508210000Z"
	DESCRIPTION
		"Minor cleanups to pacify mib compiler."
	::= { ciscoMgmt 37 }

ciscoQueueObjects OBJECT IDENTIFIER ::= { ciscoQueueMIB 1 }
ciscoQueueTraps OBJECT IDENTIFIER ::= { ciscoQueueMIB 2 }
ciscoQueueConformance OBJECT IDENTIFIER ::= { ciscoQueueMIB 3 }

CQAlgorithm ::= TEXTUAL-CONVENTION
    STATUS  current
    DESCRIPTION
        "The type of queuing algorithm used on the interface."
    SYNTAX      INTEGER {
	fifo(1),	-- First In First Out
	priority(2),	-- Priority Queuing
	custom(3),	-- Custom Queuing
	weightedFair(4)	-- Weighted Fair Queuing
    }

-- Queue Interface Table
--
-- This table describes Cisco specific queuing extensions

cQIfTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CQIfEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"This table contains objects that describe the queues on a
	Cisco Interface.

	An interface queue is modeled as a collection of one or more
	secondary queues that feed into a device's hardware queue. The
	hardware queue has a maximum depth set by the MCI tx-queue-limit
	command or equivalent. The secondary queues (also known as the
	'hold queue') have maximum depths set by the hold-queue command
	or equivalent.

	This table parallels the ifTable, and indicates the type of
	queuing in use on the interface, number of queues, and similar
	parameters."
    ::= { ciscoQueueObjects 1 }

cQIfEntry OBJECT-TYPE
    SYNTAX      CQIfEntry
    MAX-ACCESS not-accessible
    STATUS      current
    DESCRIPTION
	"A list of queue attributes for an interface."
    INDEX   { ifIndex }
    ::= { cQIfTable 1 }

CQIfEntry ::= SEQUENCE {
    cQIfQType	CQAlgorithm,
    cQIfTxLimit	Integer32,
    cQIfSubqueues	Integer32
}

cQIfQType OBJECT-TYPE
    SYNTAX      CQAlgorithm
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The type of queuing used in the Hold Queue.

	First In First Out Queuing implies that the interface always
	transmits messages in the order that they are received.

	Priority Queuing sorts messages out by the use of access lists.
	Messages in a higher priority queue are always sent in
	preference to messages in a lower priority queue.

	Custom Queuing sorts messages out by the use of access lists.
	Sub-queues are selected in round robin order as either the
	sub-queue is drained or a given number of octets is moved from
	the sub-queue to the transmission queue.

	Weighted Fair Queuing sorts messages by 'conversation', which
	is source-destination pair of addresses and sockets or ports,
	as defined by the network layer protocol. Messages are removed
	from queues in a sequence that gives each conversation a
	proportion of the available bandwidth."
    ::= { cQIfEntry 1 }

cQIfTxLimit OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The maximum number of messages placed into the hardware
	transmission queue. This is a first come first serve queue, fed
	by the hold queue.  If the hold queue contains information,
	this queue is presumably full."
    ::= { cQIfEntry 2 }

cQIfSubqueues OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The number of sub-queues of which the hold queue is built.
	This is a constant for each value of cQIfQType."
    ::= { cQIfEntry 3 }

-- Sub-Queue Statistics Table
--
-- This table describes Cisco specific queuing extensions

cQStatsTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CQStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"This table contains statistical objects that for the
	sub-queues of a Cisco Interface."
    ::= { ciscoQueueObjects 2 }

cQStatsEntry OBJECT-TYPE
    SYNTAX      CQStatsEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"A list of sub-queue attributes for an interface."
    INDEX   { ifIndex, cQStatsQNumber }
    ::= { cQStatsTable 1 }

CQStatsEntry ::= SEQUENCE {
    cQStatsQNumber	Integer32 (0..2147483647),
    cQStatsDepth	Gauge32,
    cQStatsMaxDepth	Integer32,
    cQStatsDiscards	Counter32
}

cQStatsQNumber OBJECT-TYPE
    SYNTAX      Integer32 (0..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"The number of the queue within the queue set.

	In FIFO queuing, this value is always 2.

	In Priority Queuing, it corresponds to the various priorities:

    		high = 0
    		medium = 1
    		normal = 2
    		low = 3

	In Custom Queuing, it is the queue number referenced in the
	access list.

	In Weighted Fair Queuing, it is the queue number associated
	with the traffic stream (conversation) identified."
    ::= { cQStatsEntry 1 }

cQStatsDepth OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The number of messages in the sub-queue."
    ::= { cQStatsEntry 2 }

cQStatsMaxDepth OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The maximum number of messages permitted in the sub-queue."
    ::= { cQStatsEntry 3 }

cQStatsDiscards OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The number of messages discarded from this queue since restart
	by reason of enqueue at a time that cQStatsDepth >= cQStatsMaxDepth."
    ::= { cQStatsEntry 4 }

-- Custom Queue Rotation Table
--
-- This table describes Cisco specific queuing extensions

cQRotationTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF CQRotationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"This table describes the rotation of Custom Queuing on an
	Interface."
    ::= { ciscoQueueObjects 3 }

cQRotationEntry OBJECT-TYPE
    SYNTAX      CQRotationEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
	"Custom Queuing sub-queue attributes for an interface."
    INDEX   { ifIndex, cQStatsQNumber }
    ::= { cQRotationTable 1 }

CQRotationEntry ::= SEQUENCE {
    cQRotationOctets	Integer32
}

cQRotationOctets OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
	"The number of octets which may be transmitted from a custom
	queuing sub-queue before it must yield to another queue."
    ::= { cQRotationEntry 1 }

--
-- Conformance Information
--

cQCompliances   OBJECT IDENTIFIER ::= { ciscoQueueConformance 1 }
cQGroups        OBJECT IDENTIFIER ::= { ciscoQueueConformance 2 }

--
-- Compliance Statements
--

cQCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "The core compliance statement for all queued interfaces."
    MODULE
        MANDATORY-GROUPS { cQIfGroup, cQStatsGroup, cQRotationGroup }
    ::= { cQCompliances 1 }

--
-- Core Conformance Groups for All Link Stations
--

cQIfGroup    OBJECT-GROUP
    OBJECTS { cQIfQType, cQIfTxLimit, cQIfSubqueues }
    STATUS current
    DESCRIPTION
	"The configuration of queuing on the interface.  Interface
	Queuing statistics (ifOutQDepth and ifOutDiscards) are kept in
	the interface table."
    ::= { cQGroups 1 }

cQStatsGroup OBJECT-GROUP
    OBJECTS { cQStatsDepth, cQStatsMaxDepth, cQStatsDiscards }
    STATUS current
    DESCRIPTION
	"The statistics for individual queues in the interface queuing
	system."
    ::= { cQGroups 2 }

cQRotationGroup OBJECT-GROUP
    OBJECTS { cQRotationOctets }
    STATUS current
    DESCRIPTION
	"The Custom Queuing queue rotation weights."
    ::= { cQGroups 3 }
END
