-- *****************************************************************
-- Cisco Commited Access Rate MIB file.
--
-- August 1997, Shu Tai
--
-- Copyright (c) 1997-1999, 2000 by Cisco Systems, Inc.
-- All rights reserved.
--
-- *****************************************************************
-- $Endlog$
--

CISCO-CAR-MIB DEFINITIONS ::= BEGIN

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

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

		Postal:	170 W. Tasman Drive
			San Jose, CA  95134-1706
			USA

		   Tel: +1 800 553-NETS

		E-mail: cs-qos@cisco.com"

	DESCRIPTION
		"Cisco CAR MIB - Overview

    Cisco Weighted Rate-limit, known as Commited Access Rate (CAR),
    is a traffic control method which uses a set of rate limits
    to be applied to an interface for packet switching purpose.
    Each rate limit has a configurable action to be taken
    when a condition suffices.

    This MIB incorporates objects from the Cisco Rate-limit line interfaces.
    Its purpose is to provide Weighted Rate-Limit packet filtering information.
    "

	REVISION	"9707180000Z"
	DESCRIPTION
		"Initial version of this MIB module."
 	REVISION	"0002180000Z"
 	DESCRIPTION
 		"Added 32-bit overflow counters, as well as 
		 64-bit counters for both switched and filtered
		 bytes and packet counts to the statistics table
		 (ccarStatTable)."
	::= { ciscoMgmt 113 }

ciscoCarMIBObjects OBJECT IDENTIFIER ::= { ciscoCarMIB 1 }

-- Subgroups:
--		Rate-limit
--

ccarConfigs	OBJECT IDENTIFIER ::= { ciscoCarMIBObjects 1 }
ccarStats	OBJECT IDENTIFIER ::= { ciscoCarMIBObjects 2 }

-- Textual Conventions

PacketSource ::= TEXTUAL-CONVENTION
	STATUS	current
	DESCRIPTION
		"The source of the packet rate-limited for.

		input	statistics of the input packets.
		output	statistics of the output packets.
		"
	SYNTAX  INTEGER { input(1), output(2) }

RateLimitType ::= TEXTUAL-CONVENTION
	STATUS	current
	DESCRIPTION
		"The type of traffic rate-limited for.

		all		all traffic.
		quickAcc	traffic matches rate-limit's access list.
		standardAcc	traffic matches standard access list.
		"
	SYNTAX  INTEGER { all(1), quickAcc(2), standardAcc(3) }

RateLimitAction ::= TEXTUAL-CONVENTION
	STATUS  current
	DESCRIPTION
		"The action taken after evaluating the rate limit.

		drop		drop the packet.
		xmit		transmit the packet.
		continue	continue to evaluate to the subsequent
				rate limits.
		precedXmit	rewrite the IP precedence and transmit
				the packet.
		precedCont	rewrite the IP precedence and allow it
				evaluated by subsequent rate limits.
		"

	SYNTAX	INTEGER { drop(1), xmit(2), continue(3),
			  precedXmit(4), precedCont(5) }

ccarConfigTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF CcarConfigEntry
	MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        "A table of rate limit configuration entries.
	Rate Limit is a method of traffic control.  It allows a set
	of rate limits to be configured and applied to packets flowing
	into/out of an interface to regulate network traffic."

        ::= { ccarConfigs 1 }

ccarConfigEntry OBJECT-TYPE
        SYNTAX CcarConfigEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        	"A collection of rate-limit configuration objects on this 
		interface.  Entries in the ccarConfigTable is created
		and deleted via the rate-limit command line interface."
 
        INDEX { ifIndex, ccarConfigDirection, ccarConfigRowIndex }
        ::= { ccarConfigTable 1 }

CcarConfigEntry ::=
	SEQUENCE {
		ccarConfigDirection
               		PacketSource,
		ccarConfigRowIndex
                        Integer32,
		ccarConfigType
                        RateLimitType,
		ccarConfigAccIdx
                        Integer32,
		ccarConfigRate
                        Integer32,
		ccarConfigLimit
                        Integer32,
		ccarConfigExtLimit
                        Integer32,
		ccarConfigConformAction
       			RateLimitAction,
		ccarConfigExceedAction
       			RateLimitAction
	}

ccarConfigDirection OBJECT-TYPE
	SYNTAX  PacketSource
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
       		"The data source for the Rate Limit object."
        ::= { ccarConfigEntry 1 }

ccarConfigRowIndex OBJECT-TYPE
	SYNTAX  Integer32 (1..2147483647)
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
                "An arbitrary index for rate limit objects.
		It will increase as the list is traversed,
		but may skip."

        ::= { ccarConfigEntry 2 }

ccarConfigType OBJECT-TYPE
	SYNTAX  RateLimitType
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
		"The type of traffic rate-limited against."

	::= { ccarConfigEntry 3 }

ccarConfigAccIdx OBJECT-TYPE
	SYNTAX  Integer32
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
		"The index to the access list if RateLimitType is either
		quickAcc or standardAcc."

	::= { ccarConfigEntry 4 }

ccarConfigRate OBJECT-TYPE
	SYNTAX  Integer32
	UNITS	"bits/second"
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
		"The comitted access rate.  This is the sustained
		rate permitted by the rate limit."

	::= { ccarConfigEntry 5 }

ccarConfigLimit OBJECT-TYPE
	SYNTAX  Integer32
	UNITS	"bytes"
        MAX-ACCESS  read-only
        STATUS  current
        DESCRIPTION
		"The rate limit.  The amout of traffic, in bytes,
		in excess of the committed access rate which will be
		instantaneously permitted by the rate limit."

	::= { ccarConfigEntry 6 }

ccarConfigExtLimit OBJECT-TYPE
	SYNTAX  Integer32
	UNITS   "bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The extended burst limit. The amount of traffic,
		in bytes, in excess of the burst limit which may be
		conditionnally permitted by the rate limit.
		The probability that the traffic is not permitted
		increases as the received burst increases.

		P(not permitted) =
		    (BurstRate - ConfLimit) / (ConfLimitExt - ConfLimit)."

	::= { ccarConfigEntry 7 }

ccarConfigConformAction OBJECT-TYPE
	SYNTAX	RateLimitAction
	MAX-ACCESS  read-only
	STATUS	current
	DESCRIPTION
		"Action to be taken when the traffic is within
		the Rate Limit."

	::= { ccarConfigEntry 8 }

ccarConfigExceedAction OBJECT-TYPE
	SYNTAX	RateLimitAction
	MAX-ACCESS  read-only
	STATUS	current
	DESCRIPTION
		"Action to be taken when the traffic exceeds
		the Rate Limit."

	::= { ccarConfigEntry 9 }

-- end of ccarConfigTable

ccarStatTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF CcarStatEntry
	MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        "A table of rate limit status entries."

        ::= { ccarStats 1 }

ccarStatEntry OBJECT-TYPE
        SYNTAX CcarStatEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
        	"A collection of rate-limit status objects on this 
		interface.  Entries are created and deleted via
		the rate-limit command line interface."
 
        AUGMENTS { ccarConfigEntry }
        ::= { ccarStatTable 1 }

CcarStatEntry ::=
	SEQUENCE {
		ccarStatSwitchedPkts
                        Counter32,
		ccarStatSwitchedBytes
                        Counter32,
		ccarStatFilteredPkts
                        Counter32,
		ccarStatFilteredBytes
                        Counter32,
		ccarStatCurBurst
       			Gauge32,
		ccarStatSwitchedPktsOverflow
                        Counter32,
		ccarStatSwitchedBytesOverflow
                        Counter32,
		ccarStatFilteredPktsOverflow
                        Counter32,
		ccarStatFilteredBytesOverflow
                        Counter32,
		ccarStatHCSwitchedPkts
                        Counter64,
		ccarStatHCSwitchedBytes
                        Counter64,
		ccarStatHCFilteredPkts
                        Counter64,
		ccarStatHCFilteredBytes
                        Counter64
	}

ccarStatSwitchedPkts OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of packets permitted by this rate limit."

	::= { ccarStatEntry 1 }

ccarStatSwitchedBytes OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of bytes permitted by this interface."

	::= { ccarStatEntry 2 }

ccarStatFilteredPkts OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of packets which exceeded this rate limit."

	::= { ccarStatEntry 3 }

ccarStatFilteredBytes OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of bytes which exceeded this rate limit."

	::= { ccarStatEntry 4 }

ccarStatCurBurst OBJECT-TYPE
	SYNTAX  Gauge32
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The current received burst size."
	::= { ccarStatEntry 5 }

ccarStatSwitchedPktsOverflow OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The high-word of the counter of packets permitted 
		 by this rate limit.

		   NOTE:  The object ccarStatSwitchedPkts contains the
			  lower 32 bits of the switched packet counts.
			  If the number of switched packets is larger
			  than what can be stored in a 32 bit value, then
			  the high word value is stored in this object.
			  As such SNMP Manager applications should 
			  combine this object along with the 
			  ccarStatSwitchedPkts object to come up with the
			  64-bit value.

			  SNMP v2c or v3 Manager can use the 
			  ccarStatHCSwitchedPkts object directly 
			  (which is a 64-bit object)."

	::= { ccarStatEntry 6 }

ccarStatSwitchedBytesOverflow OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The high-word of the counter of bytes permitted by 
		 this interface.

		   NOTE:  The object ccarStatSwitchedBytes contains the
			  lower 32 bits of the switched byte counts.
			  If the number of switched bytes is larger
			  than what can be stored in a 32 bit value, then
			  the high word value is stored in this object.
			  As such SNMP Manager applications should 
			  combine this object along with the 
			  ccarStatSwitchedBytes object to come up with the
			  64-bit value.

			  SNMP v2c or v3 Manager can use the 
			  ccarStatHCSwitchedBytes object directly 
			  (which is a 64-bit object)."

	::= { ccarStatEntry 7 }

ccarStatFilteredPktsOverflow OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The high-word of the counter of packets which exceeded 
		 this rate limit.

		   NOTE:  The object ccarStatFilteredPkts contains the
			  lower 32 bits of the filtered packet counts.
			  If the number of filtered packets is larger
			  than what can be stored in a 32 bit value, then
			  the high word value is stored in this object.
			  As such SNMP Manager applications should combine 
			  this object along with the ccarStatFilteredPkts 
			  object to come up with the 64-bit value.

			  SNMP v2c or v3 Manager can use the 
			  ccarStatHCFilteredPkts object directly 
			  (which is a 64-bit object)."

	::= { ccarStatEntry 8 }

ccarStatFilteredBytesOverflow OBJECT-TYPE
	SYNTAX  Counter32
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The high-word of the counter of bytes which exceeded 
		 this rate limit.

		   NOTE:  The object ccarStatFilteredBytes contains the
			  lower 32 bits of the filtered byte counts.
			  If the number of filtered bytes is larger
			  than what can be stored in a 32 bit value, then
			  the high word value is stored in this object.
			  As such SNMP Manager applications should combine 
			  this object along with the ccarStatFilteredBytes 
			  object to come up with the 64-bit value.

			  SNMP v2c or v3 Manager can use the 
			  ccarStatHCFilteredBytes object directly 
			  (which is a 64-bit object)."

	::= { ccarStatEntry 9 }



ccarStatHCSwitchedPkts OBJECT-TYPE
	SYNTAX  Counter64
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of packets permitted by this rate limit.

		   NOTE:  This is a 64 bit (High Capacity)
			  version of the ccarStatSwitchedPkts
			  counter for use with SNMP v2c or v3 Managers"

	::= { ccarStatEntry 10 }

ccarStatHCSwitchedBytes OBJECT-TYPE
	SYNTAX  Counter64
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of bytes permitted by this interface.

		   NOTE:  This is a 64 bit (High Capacity)
			  version of the ccarStatSwitchedBytes
			  counter for use with SNMP v2c or v3 Managers"

	::= { ccarStatEntry 11 }

ccarStatHCFilteredPkts OBJECT-TYPE
	SYNTAX  Counter64
	UNITS	"packets"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of packets which exceeded this rate limit.

		   NOTE:  This is a 64 bit (High Capacity)
			  version of the ccarStatFilteredPkts
			  counter for use with SNMP v2c or v3 Managers"

	::= { ccarStatEntry 12 }

ccarStatHCFilteredBytes OBJECT-TYPE
	SYNTAX  Counter64
	UNITS	"bytes"
	MAX-ACCESS  read-only
	STATUS  current
	DESCRIPTION
		"The counter of bytes which exceeded this rate limit.

		   NOTE:  This is a 64 bit (High Capacity)
			  version of the ccarStatFilteredBytes
			  counter for use with SNMP v2c or v3 Managers"

	::= { ccarStatEntry 13 }



-- end of ccarStatTable

-- conformance information

ciscoCarMIBConformance OBJECT IDENTIFIER ::= { ciscoCarMIB 3 }
ciscoCarMIBCompliances OBJECT IDENTIFIER ::= { ciscoCarMIBConformance 1 }
ciscoCarMIBGroups      OBJECT IDENTIFIER ::= { ciscoCarMIBConformance 2 }


-- compliance statement

ciscoCarMIBCompliance MODULE-COMPLIANCE
	STATUS	current
	DESCRIPTION
		"The compliance statement for entities which implement
		the CAR on a Cisco router."
	MODULE	-- this module
		MANDATORY-GROUPS { ciscoCarMIBGroup }
	::= { ciscoCarMIBCompliances 1 }

ciscoCarMIBComplianceHCCounters MODULE-COMPLIANCE
	STATUS	current
	DESCRIPTION
		"The compliance statement for entities that implement
		64-bit counters for Switched/Filtered Packet/Bytes objects
		for CAR on a Cisco router."
	MODULE	-- this module
		MANDATORY-GROUPS { 
		    ciscoCarMIBGroup,
		    ciscoCarMIBHCGroup
	}
	::= { ciscoCarMIBCompliances 2 }

-- units of conformance

ciscoCarMIBGroup OBJECT-GROUP
	OBJECTS {
		ccarConfigType,
		ccarConfigAccIdx,
		ccarConfigRate,
		ccarConfigLimit,
		ccarConfigExtLimit,
		ccarConfigConformAction,
		ccarConfigExceedAction,
		ccarStatSwitchedPkts,
		ccarStatSwitchedBytes,
		ccarStatFilteredPkts,
		ccarStatFilteredBytes,
		ccarStatCurBurst
	}
	STATUS	current
	DESCRIPTION
		"A collection of objects providing CAR monitoring."
	::= { ciscoCarMIBGroups 1 }

ciscoCarMIBHCGroup OBJECT-GROUP
	OBJECTS {
		ccarStatSwitchedPktsOverflow,
		ccarStatSwitchedBytesOverflow,
		ccarStatFilteredPktsOverflow,
		ccarStatFilteredBytesOverflow,
		ccarStatHCSwitchedPkts,
		ccarStatHCSwitchedBytes,
		ccarStatHCFilteredPkts,
		ccarStatHCFilteredBytes
	} 
	STATUS current
	DESCRIPTION
		"A collection of high capacity counters (64-bit) provided 
		for CAR monitoring."
	::= { ciscoCarMIBGroups 2 }

END
