Draft		   Differentiated Services MIB	    October 1999

                                                                Fred
          Internet Engineering Task Force             F. Baker
                                                                Kwok Ho
          Diffserv Working Group                         Cisco Systems
          INTERNET-DRAFT                              K. Chan
          Expires:September 2000                         Nortel Networks
                                                                Andrew
                                                      A. Smith
                                                         Extreme Networks

                       Management Information Base for the
                       Differentiated Services Architecture

			  draft-ietf-diffserv-mib-01.txt

                          draft-ietf-diffserv-mib-02.txt

          Abstract

          This memo describes a proposed MIB for the Differentiated
          Services Architecture. Architecture [Architecture] and described by the
          Differentiated Services Router Conceptual Model [Model].

          Currently total agreement on content of this MIB has not been
          reached, especially in the dropping and queueing mechanism
          attributes.  Further discussion on these topics are required
          for finalizing this memo.

          1.  Status of this Memo

          This document is an Internet-Draft and is in full conformance
          with all provisions of Section 10 of RFC 2026. Internet-Drafts
          are working documents of the Internet Engineering Task Force
          (IETF), its areas, and its working groups.  Note that other
          groups may also distribute working documents as Internet-
          Drafts.

          Internet-Drafts are draft documents valid for a maximum of six
          months and may be updated, replaced, or obsoleted by other
          documents at any time.  It is inappropriate to use Internet
          Drafts as reference material or to cite them other than as
          "work in progress."

          The list of current Internet-Drafts can be accessed at
          http://www.ietf.org/ietf/1id-abstracts.txt

          The list of Internet-Draft Shadow Directories can be accessed
          at http://www.ietf.org/shadow.html.

          This particular draft is being developed in the Differentiated
          Services Working Group. Discussion of it therefore belongs on
          that list. The charter for Differentiated Services may be
          found at http://www.ietf.org/html.charters/diffserv-
          charter.html

          2.  The SNMP Management Framework

          The SNMP Management Framework presently consists of five major
          components:

              o   An overall architecture, described in RFC 2571 [1].

              o   Mechanisms for describing and naming objects and
                  events for the purpose of management. The first
                  version of this Structure of Management Information

	  Draft		   Differentiated Services MIB	    October 1999
                  (SMI) is called SMIv1 and described in RFC 1155 [2],
                  RFC 1212 [3] and RFC 1215 [4]. The second version,
                  called SMIv2, is described in RFC 2578 [5], RFC 2579
                  [6] and RFC 2580 [7].

              o   Message protocols for transferring management
                  information. The first version of the SNMP message
                  protocol is called SNMPv1 and described in RFC 1157
                  [8]. A second version of the SNMP message protocol,
                  which is not an Internet standards track protocol, is
                  called SNMPv2c and described in RFC 1901 [9] and RFC
                  1906 [10]. The third version of the message protocol
                  is called SNMPv3 and described in RFC 1906 [10], RFC
                  2572 [11] and RFC 2574 [12].

              o   Protocol operations for accessing management
                  information. The first set of protocol operations and
                  associated PDU formats is described in RFC 1157 [8]. A
                  second set of protocol operations and associated PDU
                  formats is described in RFC 1905 [13].

              o   A set of fundamental applications described in RFC
                  2573 [14] and the view-based access control mechanism
                  described in RFC 2575 [15].

          A more detailed introduction to the current SNMP Management
          Framework can be found in RFC 2570 [16].

          Managed objects are accessed via a virtual information store,
          termed the Management Information Base or MIB.  Objects in the
          MIB are defined using the mechanisms defined in the SMI.

          This memo specifies a MIB module that is compliant to the
          SMIv2. A MIB conforming to the SMIv1 can be produced through
          the appropriate translations. The resulting translated MIB
          must be semantically equivalent, except where objects or
          events are omitted because no translation is possible (use of
          Counter64). Some machine-readable information in SMIv2 will be
          converted into textual descriptions in SMIv1 during the
          translation process. However, this loss of machine readable
          information is not considered to change the semantics of the
          MIB.

	  Draft		   Differentiated Services MIB	    October 1999

          3.  Structure of this MIB

          This MIB is designed according to the Differentiated Services
          implementation conceptual model documented in [Model].

          3.1.  Overview

          In principle, if one were to construct a network entirely out
          of two-port routers (in appropriate places connected by LANs
          or similar media), then it would be necessary for each router
          to perform exactly four QoS control functions on traffic in
          each direction:

          -    Classify each message according to some set of rules

          -    In edge devices, determine whether the data stream the
               message is part of is within or outside its rate

          -    Perform some set of resulting actions, minimally
               including applying a drop policy appropriate to the
               classification and queue in question, and in edge devices
               perhaps additionally marking the traffic with a
               Differentiated Services Code Point (DSCP) as defined in
               [DSCP].

          -    Enqueue the traffic for output in the appropriate queue,
               which may shape the traffic or simply forward it with
               some minimum rate or maximum latency.

          If we build the network out of N-port routers, we expect the
          behavior of the network to be identical. We are forced,
          therefore, to provide essentially the same set of functions on
          the ingress port of a router as on the egress port of a
          router. Some interfaces will be "edge" interfaces and some
          will be "interior" to the Differentiated Services domain. The
          one point of difference between an ingress and an egress
          interface is that all traffic on an egress interface is
          queued, while traffic on an ingress interface will typically
          be queued only for shaping purposes.

          Hence, in this MIB, we model them identically, making the
          distinction between ingress and egress interfaces an index
          variable.

          The MIB therefore contains six the following elements:
          - Behavior Aggregate Classification Table
	  - IP Six Tuple Multi-Field Classification Table

	  Draft		   Differentiated Services MIB	    October 1999
          - Classifier Table
          - Meter Table
          - Action Table and Action Type Tables
          - Queue Table Set, Queue, and Queue Measurement Tables

          3.2.  Classifier Table

          The classifier table indicates how traffic is sorted out. It
          identifies separable classes of traffic, by reference to an
          appropriate classifier, which may be anything from an
          individual micro-flow to aggregates identified by DSCP.  It
          then sends these classified streams to an appropriate meter or
          action. In a multi-stage meter, sub-classes of traffic may be
          sent to different stages. For example, in AF1, AF11 traffic
          might be sent to the first meter, AF12 traffic might be sent
          to the second, and AF13 traffic sent to the second meter
          stage's failure action.

          The structure of the classifier table is a sequence of
          unambiguous tests. Within each step in the sequence, it should
          not be important in which order - if order is present at all -
          the tests are made. This is to facilitate optimized
          implementations such as index trees. Sequence is present in
          order to resolve ambiguity.

          For example, one might want first to disallow certain
          applications from using the network at all, or to classify
          some individual traffic streams that are not diff-serv marked.
          Traffic that fails those tests might then be inspected for a
          DSCP. "Then" implies sequence, and the sequence must be
          somehow specified.

          An important form of classifier is "everything else". The
          final stage of the classifier should be configured to be
          complete, as the result of an incomplete classifier is not
          necessarily deterministic.

	  Two forms

          The actual classifier definition is referenced via a
          RowPointer, this enable the use of any sort of classification
          table that one might wish to design, public or proprietary.
          That classifier table need not be found in this MIB.  When
          ambiguity is present, we disambiguate by explicitly ordering
          the application of classification rules.

          The classifiers are Behavior	Aggregate (BA) and
	  Multi-Field (MF) Classifiers.	 These classifiers are specified here are at the per interface level,
          they can may be derived from some higher level policies.  For example, QoS	Policies
	  provisioned via QoS PIB (Policy Information Base), Routing
	  Policies with	QoS information	via BGP	Policy setting
	  mechanism, and Routing Policies with QoS information from policies, but such
          discussion is out- side the scope of this document.

          3.2.1.  IP Six Tuple Classifier Table

          This MIB currently specifies the IP Six Tuple Classifier, used
          for IP traffic engineered routes.  The source classification.  Entry of classifier this Classifier Table
          is
	  indicated by referenced from the diffServClassifierConfigType	attribute entries of the diffServClassifierTable
          via a RowPointer, namely diffServClassifierPattern attribute
          of diffServClassifierEntry object.

          The attribute

	  Draft		   Differentiated Services MIB	    October 1999

	  diffServClassifierConfigTypeInfo can be used to further
	  associate the	classifier with	specific grouping based	on Behavior Aggregate (BA) Classifier is a simple form of the
	  ConfigType.  For example, with PIB ConfigType,
          IP Six Tuple Classifier.  It is represented by having the
	  ConfigTypeInfo
          diffServSixTupleClfrDscp attribute can hold the	RoleCombination	from
	  which set to the classifier is derived.  With BGP ConfigType, desired DSCP,
          and all other classification attributes set to match-all, the
	  ConfigTypeInfo can hold the BGP Community String that
	  identifies the BGP Routing Policy from which the classifier is
	  derived.  With the use of higher level policies, the
	  classifier table is used primarily for monitoring purpose, but
	  this does not	exclude	its use	for configuration purpose.

	  3.2.1.  Behavior Aggregate Classification Table

	  The Behavior Aggregate Classification	Table is present for
	  several reasons. First, the DSCP must	be identified somewhere
	  for identifying tagged streams of traffic. This could	be done
	  in-line, and is not.

	  The reason the BA Classifier is pulled out into a separate
	  table	is that	we envisage the	use of other tables for	other
	  kinds	of classifiers,	public or proprietary. For example, the
	  typical "five-tuple" used in per-flow	classification (as in
	  RSVP)	might be represented by	a table	whose objects include
	  the necessary	IP Addresses,
          default setting.

          Each entry in the IP protocol, the necessary
	  TCP/UDP port numbers,	and a RowStatus	variable. By pulling the
	  classifier itself into a table that can be referenced	via a
	  RowPointer, we enable	the use	of any sort of classification
	  table	that one might wish to design. That classifier table
	  need not be found in this MIB. When ambiguity	is present, we
	  disambiguate by explicitly ordering the application of
	  classification rules.

	  3.2.2.  Multi-Field Classification Table

	  In the same spirit as	the BA Classification Table, the Multi-
	  Field	Classification Table is	in a separate table that can be
	  referenced via a RowPointer, namely
	  diffServClassifierMatchObject	attribute of
	  diffServClassifierEntry object.  Each	entry in the MF
	  Classification Six Tuple Classifier Table defines a MF Classifier.	 With
          single Classifier, with the use of
	  InetEndpoint InetAddress [INETADDR] for
          both IPv4 and IPv6 addressing.  The use of MF IP Six Tuple
          Classifiers is discussed in [DSARCH] [Architecture] and abstract
          examples of how they might be configured are provided in [DSMODEL].

	  Draft		   Differentiated Services MIB	    October 1999
          [Model].

          3.3.  Meter Table

          A meter, according to the conceptual model, measures the rate
          at which a stream of traffic passes it, compares it to some
          set of thresholds, and produces some number (two or more)
          potential results. A given message is said to "conform" to the
          meter if at the time that the message is being looked at the
          stream appears to be within the meter's limit rate. In the
          MIB, the structure of SNMP makes it easiest to implement this
          as a set of one or more simple pass/fail tests, which are
          cascaded. It is to be understood that the meter in a Traffic
          Control Block is therefore implemented as a set of if-then-
          else constructs.

          The result of	metering traffic is always some	action.

	  The concept of conformance to a meter bears a comment. The
          concept applied in several rate-control architectures,
          including ATM, Frame Relay, Integrated Services, and
          Differentiated Services, is variously described as a "leaky
          bucket" or a "token bucket".

          A leaky bucket algorithm is primarily used for traffic
          shaping: traffic theoretically departs from the switch at a
          flat rate of one bit every so many time units, and in fact
          departs in packets at a rate approximating that. It is also
          possible to build multi-rate leaky buckets, in which traffic
          departs from the switch at varying rates depending on recent
          activity or inactivity.

          A token bucket is used to measure the behavior of a peer's
          leaky bucket, for verification purposes. It is, by definition,
          a relationship

                            interval = burst/rate, or
                              rate = burst/interval

          for some defined burst size, in bits, rate, in bits per
          second, and time interval. Multi-rate token buckets (token
          buckets with both a peak and a mean rate, and sometimes more
          rates) are commonly used. In this case, the burst size for the
          baseline traffic is conventionally referred to as the
          "committed burst", and the time interval is as specified by

                       interval = committed burst/mean rate

	  Draft		   Differentiated Services MIB	    October 1999

          but additional burst sizes (each an increment over its
          predecessor) are defined, which are conventionally referred to
          as "excess" burst sizes.  The peak rate therefore equals the
          sum of the burst sizes per interval.

          A data stream is said to "conform" to a simple token bucket if
          the switch receives at most the burst size in a given time
          interval. In the multi-rate case, the traffic is said to
          conform to the token bucket at a given level if its rate does
          not exceed the sum of the relevant burst sizes in a given
          interval. Received traffic pre-classified at one of the
          "excess" rates (e.g., AF12 or AF13 traffic) is only compared
          to the relevant excess buckets.

          The fact that data is organized into variable length packets
          introduces some uncertainty in this. For this reason, the
          token bucket accepts a packet if any of its bits would have
          been accepted, and "borrows" any excess capacity required from
          that allotted to equivalently classified traffic in a previous
          or subsequent interval. More information about this is
          available in [Model].

          Multiple classes of traffic, as identified by the classifier
          table, may be presented to the same meter. Imagine, for
          example, that we desire to drop all traffic that uses any DSCP
          that has not been publicly defined.  A classifier entry might
          exist for each such DSCP, shunting it to an "accepts
          everything" meter, and dropping all traffic that conforms to
          only that meter.

          Clearly, it is necessary to identify what is to be done with
          messages that conform to the meter, and with messages that do
          not. It is also necessary for the meter to be arbitrarily
          extensible, as some PHBs require the successive application of
          an arbitrary number of meters.  The approach taken in this
          design is to have each meter indicate what action is to be
          taken for conforming traffic, and what meter is to be used for
          traffic which fails to conform. With the definition of a
          special type of meter to which all traffic conforms, we now
          have the necessary flexibility.

          3.4.  Action Table

          Considerable discussion has taken place regarding the possible
          actions.  Suggested actions include "no action", "mark the
          traffic", "drop the traffic, randomly	or all of it", and based on some algorithm", "shape
          the traffic." In this MIB, three actions are

	  Draft		   Differentiated Services traffic", "count it".  This MIB	    October 1999

	  contemplated:	marking attempts to make the traffic, counting
          specification of the traffic that
	  passes that route, applying a	drop policy. The author	notes
	  that marking action flexible by using the traffic Action Table
          to organize one Action's relationship with the same DSCP as it already has
	  no effect, Meter element
          before it, with the Queueing element following it, and all traffic must expect with
          other Action elements to come up against some
	  drop policy.

	  Two sizes allow multiple Actions be applied to
          a single traffic stream.  The parameters needed will depend on
          the type of objects Action to be taken.  Hence there are defined Action Tables
          for some counters. These are
	  defined in accordance	with the method	found different Action Types.  This MIB currently defines
          parameters for:  1. Mark Action, 2. Count Action, 3. Drop
          Action,

          This flexibility allows additional Actions be specified in [IFMIB];
          future revisions of this MIB, or in other MIBs.  And possible
          usage of propietary Action without impact to the Actions
          provided here.

          The Mark Action is relatively straight forward.

          For Count Action, when it is specified, it will always be
          applied first, before any other type of Actions.  For example,
          when both
	  32 Count and 64 bit	counters a Drop Action is specified, the Count
          Action will always count the total counts of this traffic
          stream, before any traffic gets dropped, even if the Action
          entries are defined, chained with the expectation that Drop Action first, before the 32 bit counter is	simply
          Count Action.  There are counters in the least significant bits Drop Actions to
          indicate the ammount of traffic dropped, within the
	  64 bit counter. For interfaces that operate drop
          context.

          The Drop Actions require close relationship with queueing,
          with detail as follows:

          The Tail Drop Action requires the specification of a maximum
          queue depth, at 20,000,000 (20
	  million) bits	per second or less, 32-bit byte which point any traffic exceeding the maximum
          queue depth gets discarded.

          *Editor's Note Start*
          There is still debates on what
          attributes are needed and packet
	  counters MUST how they may be used.  For interfaces that operate faster
	  than 20,000,000 bits/second, and slower than 650,000,000
	  bits/second, 32-bit packet counters MUST related to queueing.
          The following is viewed as the complex description of how it
          may be used done.  The following set of attributes and 64-bit
	  octet	counters MUST be used.	For interfaces that operate at
	  650,000,000 bits/second or faster, 64-bit packet counters AND
	  64-bit octet counters	MUST its
          description may be	used.

	  Traffic conforming to	a meter	and not	dropped	is presented to
	  a queue for further processing.

	  3.5.	Queue Table

	  In simplified before this version of the MIB, a	relatively simple FIFO queue memo is
	  envisaged within the Traffic Control Block (TCB).  Each queue finalized.
          There is capable of	acting as a work-conserving queue (one which
	  transmits as rapidly as its weight allows, but guarantees to
	  its class of traffic,	as a side effect more detail discussion of its	weight,	a
	  minimum rate), or as a non-work-conserving or	"shaping" queue.
	  Queue	structure can be built from why these FIFO queues, including
	  chain	of queues using	the NextTCB attribute. attributes are
          required in [ActQMgmt].
          *Editor's Note End*

          The scheduling
	  discipline of	a queue	amongst Random Drop Action requires the queue set specification of an inter- face
	  is specified.	 When all its drop
          characteristic with the queues in following parameters (drop
          characteristic described using a plot with drop probability,
          P, as Y axis, and average queue	set uses
	  priority queue discipline, length, Q, as X axis):
          1. Pmin and Qmin defines the start of the characteristic plot.
             Normally Pmin=0, meaning with average queue set length below
             Qmin, there will	use strict
	  priority queue scheduling using each queue's priority
	  attribute.  When all the queues in be no drops.
          2. Pmax and Qmax defines a "knee" on the plot, after which
             point the drop probability become more progressive (greater
             slope).
             Qclip defines the average queue set length at which all packets
             will be dropped, probability = 1.  Notice this is different
             from Tail Drop because this uses weighted
	  fair average queue discipline, length.
             It is possible for Qclip = Qmax, meaning when the average
             queue set length exceeds Qmax, all packets will use	weighted fair
	  queue	scheduling, with the weight specified by the minimum
	  rate attribute.  A mixed scheduling discipline can be	built dropped.
          3. The sampling interval and average weight parameters are used
             for a	queue set.  For	example, with calculation of average queue.  These parameters are
             important because they can affect the following queue set:
	    Q Number  Q	Discipline  Q MinRate  Q Priority
	    --------  ------------  ---------  ----------
	    11	      PQ	    0	       10
	    12	      PQ	    0		9
	    13	      WFQ	    800	KBPS	8
	    14	      WFQ	    600	KBPS	8

	  Draft		   Differentiated Services MIB	    October 1999

	    15	      WFQ	    300	KBPS	8

	  All traffic in queue 11 will be serviced first, then all
	  traffic in queue 12 will be serviced second.	After traffic in
	  queues 11 behavior and	12 are serviced, queues	13, 14,	15 are serviced
	  among	themselves in a	round robin fashion,  with their
	  respective weights indicated by their	minimum	rate attribute.

	  The queue outcome
             of the drop process.  They can also operate as be very sensitive and
             may have a traffic shaper by using the
	  maximum rate attribute.

	  In addition some dropping algorithms rely on an averaged queue
	  depth	to measure sustained, as opposed wide range of possible values due to instantaneous,
	  congestion.  There are several methods for averaging wide range
             of link speeds, hence the queue
	  depth.  All use of these methods share real number format for
             average weight.

          Deterministic Drop Action can be viewed as a mechanism specifying the
	  influence special case of
          Random Drop with drop probability restricted to zero and one.
          Hence Deterministic Drop Action can be described as follows:
          1. Pmin = 0 and Pmax = 1.  2. Qmin = Qmax = Qclip indicating
          the actual queue	depth on the averaged average queue
	  depth.  Hence length that drop occurs.

          For the attribute diffServQueueOccupancyWeight drop actions, each drop process specification is
	  used.

	  Multiple meters may direct their traffic to the same
          associated with a queue.
	  For example, the Assured Forwarding PHB suggests that	all
	  traffic marked AF11, AF12,  This allows multiple drop processes
          (of same or	AF13 different types) be	placed in associated with the same queue
	  without reordering.

	  Some discussion has elapsed concerning
          queue, as different PHB implementation may require.  This
          setup allows the structure flexibility for Action specification,
          including multiple sequential drop processes if necessary.

          When counters are specified, two sizes of the
	  queue objects are defined.
          These are defined in question, accordance with the method found in
          [IFMIB]; both 32 and its functions.	It is expected that 64 bit counters are defined, with the
	  description of
          expectation that the queuing system will grow during working
	  group	discussion. This 32 bit counter is an area where vendors differ
	  markedly in their architectures.

	  3.6.	The use simply the least
          significant bits of RowPointer

	  RowPointer is	a textual convention the 64 bit counter. For interfaces that
          operate at 20,000,000 (20 million) bits per second or less,
          32-bit byte and packet counters MUST be used.  For interfaces
          that operate faster than 20,000,000 bits/second, and slower
          than 650,000,000 bits/second, 32-bit packet counters MUST be
          used and 64-bit octet counters MUST be used.  For interfaces
          that operate at 650,000,000 bits/second or faster, 64-bit
          packet counters AND 64-bit octet counters MUST be used.

          Multiple Actions can be chained using the ActionNext
          attribute.  The last Action's ActionNext attribute points to identify
          the next TCB, normally a
	  conceptual row in an SNMP Queue Entry for the Queue element.

          3.5.  Queueing Element

          The Queueing element consists of Queue Table and Queue Set
          Table.  With Queue Table containing relatively simple FIFO
          queues.  Using the Queue Set Table by pointing to one of	its
	  objects. In this MIB,	it is used allow flexibility in two ways:	to indicate
	  indirection,
          constructing both simple and to indicate succession.

	  When used for	indirection, as complex queueing hierarchies.

          The queue entries in the Classifier table, the
	  idea is to allow other MIBs, including proprietary ones, Queue Table have simple attributes,
          it includes a reference to
	  identify new and arcane classifiers -	MAC headers, IP4 and IP6
	  headers, BGP Communities, which queue set the queue belongs
          to, and	all sorts of things.

	  When used for	succession, it answers a weight parameter.  For Priority Queueing, the question "what
	  happens next?".  Rather than presume that weight
          parameter indicates the	next table must
	  be as priority of this queue with respect to
          all the other queues within the same queue set.  A higher
          weight value queue will be service first over a lower weight
          value queue in the same queue set.  For weighed queueing
          algorithms, the weight parameter is a percentage number.  With
          the value of 1,000 meaning 1 percent, allowing fine control of
          bandwidth allocation when needed.  A higher weight value queue
          will have higher probability of being service when compared to
          a lower weight value queue in the same queue set.  The weight
          values for all the queues within a queue set must add up to
          less than or equal to 100,000 (100%).  Each queue is capable
          of acting as a work-conserving queue, one which transmits as
          rapidly as its weight allows, but guarantees to its class of
          traffic, as a side effect of its weight, a minimum rate.  Or
          acting as a non-work-conserving "shaping" queue.

          The entries in the Queue Set Table describes the attributes
          common to all queues within the queue set.  This includes the
          dequeueing Method, or algorithm used amongst the queues in the
          queue set.  Currently, priority queueing, Weighed Fair
          Queueing, Weighed Round Robin are listed as the possible
          chooses, other methods/algorithms, e.g. Class Base Queueing,
          can be added.

          The rates, both minimum and maximum, are specified for the
          queue set instead of per queue.  This allows

          A hierarchical tree of queue sets can be constructed using the
          parent/child queue set concept.  The attributes QSetParentId
          and QSetWeight is used for this purpose, with QSetParentId
          indicating the parent's QSetId, and QSetWeight used as the
          child queue set's total weight amongst the queues in the
          parent queue set.  There can be multiple children queue set
          under one parent queue set, with each child queue set looks
          like a queue from the parent queue set's perspective.  Hence
          queue sets can be recursively defined, inter mixing with
          queues at any level.

          A mixed dequeue scheduling discipline can be built for an
          interface.  For example, with the following queues and queue
          sets:

            Q Parameters          Q Set Parameters

            QId QSetId QWeight    Method MinRate ParentId QSetWeight
            --- ------ -------    ------ ------- -------- ----------
             11     61     100        PQ       0        0          0
             12     61      99        PQ       0        0          0

             21     71  50,000       WFQ   10000       61         98
             22     71  30,000       WFQ   10000       61         98
             23     71  20,000       WFQ   10000       61         98

             31     81  70,000       WRR     500       61         97
             32     81  30,000       WRR     500       61         97

          Notice in this example there are three queue sets:  Queue Set
          61 uses Priority Queueing, it have 2 child Queue Sets.  Queue
          Set 71 uses Weighed Fair Queueing with KBPS as RateUnit.

          Queue Set 81 uses Weighed Round Robin with Packets/Sec as
          RateUnit.

          Queues 11, 12, queue sets 71 and 81 belongs to Queue Set 61.
          Queues 21, 22, 23 belongs to Queue Set 71.  Queues 31, 32
          belongs to Queue Set 81.

          All traffic in queue 11 will be serviced first, then all
          traffic in queue 12 will be serviced second.  After traffic in
          queues 11 and 12 are serviced, queues 21, 22, 23 are serviced
          among themselves in a fair queueing fashion, based on their
          respective weight.  After traffic in queues 21, 22, 23 are
          serviced, queues 31, 32 are serviced among themselves in a
          round robin fashion, based on their respective weight.  Notice
          Queue Set 71 uses KBPS RateUnit, resulting in bit/byte fair
          queueing.  Queue Set 81 uses Packet RateUnit, resulting in
          packet fair queueing.

          The rates for each queue can be derived:  Queue 21 have
          minimum rate of 50% of 10000 KBPS, 5000 KBPS.  Queue 31 have
          minimum rate of 70% of 500 Pkt/Sec, 350 Pkt/Sec.

          Other types of scheduling algorithms can be used in the parent
          or child queue sets, creating different queueing behaviors.

          The queue set can also operate as a traffic shaper by using
          the maximum rate attribute.

          Chains of Queues/Queue Sets can be built using the NextTCB
          attribute in Queue Set entry.

          Multiple meters may direct their traffic to the same queue.
          For example, the Assured Forwarding PHB suggests that all
          traffic marked AF11, AF12, or AF13 be placed in the same queue
          without reordering.

          3.6.  The use of RowPointer

          RowPointer is a textual convention used to identify a
          conceptual row in an SNMP Table by pointing to one of its
          objects. In this MIB, it is used in two ways: to indicate
          indirection, and to indicate succession.

          When used for indirection, as in the Classifier table, the
          idea is to allow other MIBs, including proprietary ones, to
          identify new and arcane classifiers - MAC headers, IP4 and IP6
          headers, BGP Communities, and all sorts of things.

          When used for succession, it answers the question "what
          happens next?".  Rather than presume that the next table must
          be as specified in the conceptual model and providing its
          index, the RowPointer takes you to the MIB row representing
          that thing. In the Meter Table, for example, the "FailNext"
          RowPointer might take you to another meter, while the
          "SucceedNext" RowPointer would take you to an action.

          4.  MIB Definition

          DIFF-SERV-MIB DEFINITIONS ::= BEGIN

              IMPORTS
              Unsigned32, Counter32, Counter64, OBJECT-TYPE,
              MODULE-IDENTITY, zeroDotZero, mib-2          FROM SNMPv2-SMI
              TEXTUAL-CONVENTION, RowStatus, RowPointer, TestAndIncr
                                                           FROM SNMPv2-TC
              MODULE-COMPLIANCE, OBJECT-GROUP              FROM SNMPv2-CONF
              ifIndex                                      FROM IF-MIB
              DisplayString                                FROM RFC1213-MIB
              InetAddressType, InetAddress                 FROM INET-ADDRESS-MIB;

          diffServMib MODULE-IDENTITY
              LAST-UPDATED "9907190100Z" -- Mon Jul 19 01:00:00 PDT 1999
              ORGANIZATION "Cisco Systems"
              CONTACT-INFO
                 "       Fred Baker
                 Postal: 519 Lado Drive
                         Santa Barbara, California 93111
                 Tel: +1 (408) 526-4257
                 FAX: +1 (805) 681-0115
                 E-mail: fred@cisco.com

                         Kwok Ho Chan
                 Postal: 600 Technology Park Drive
                         Billerica, Massachusetts 01821, USA
                 Tel: +1 (978) 288-8175
                 FAX: +1 (978) 288-4690
                 E-mail: khchan@nortelnetworks.com

                         Andrew Smith
                 Postal: 3585 Monroe St.
                         Santa Clara, California 95051
                 Tel: +1 (408) 579 2821
                 FAX: +1 (408) 579 3000
                 E-mail: andrew@extremenetworks.com"
              DESCRIPTION
                 "This MIB defines the objects necessary to manage a
                 device that uses the Differentiated Services
                 Architecture described in RFC 2475 and the Conceptual
                 Model for DiffServ Routers in draft-ietf-diffserv-
                 model-01.txt."
              REVISION "9907190100Z" -- Mon Jul 19 01:00:00 PDT 1999
              DESCRIPTION
                 "Initial version, published as RFC xxxx."
              ::= { mib-2 12345 }  -- anybody who uses this unassigned
                                   -- number deserves the wrath of IANA

          diffServObjects        OBJECT IDENTIFIER ::= { diffServMib 1 }
          diffServTables         OBJECT IDENTIFIER ::= { diffServMib 2 }
          diffServAugments       OBJECT IDENTIFIER ::= { diffServMib 3 }
          diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 4 }

          --
          -- These textual conventions has no effect on either the syntax
          -- nor the semantics of any managed object.  Objects defined
          -- using this convention are always encoded by means of the
          -- rules that define their primitive type.
          --
          Dscp ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "d"
              STATUS   current
              DESCRIPTION
                 "The code point used for discriminating a traffic
                 stream."
              SYNTAX   INTEGER (-1 | 0..63)

          SixTupleClfrL4Port ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "d"
              STATUS   current
              DESCRIPTION
                 "A value indicating a Layer-4 protocol port number."
              SYNTAX   INTEGER (0..65535)
          --
          -- Classifiers
          --
          -- The tools for IP Six Tuple Classification.

          -- This object allows a configuring system to obtain a
          -- unique value for diffServSixTupleClfrId for purposes
          -- of configuration.

          diffServSixTupleClfrUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServSixTupleClfrUnique object yields a unique new
                 value for diffServSixTupleClfrId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 1 }

          diffServSixTupleClfrTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServSixTupleClfrEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "A table of IP Six Tuple Classifier entries that a
                 system may use to identify traffic."
              ::= { diffServTables 1 }

          diffServSixTupleClfrEntry OBJECT-TYPE
              SYNTAX       DiffServSixTupleClfrEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An IP Six Tuple Classifier entry describes a single
                 classifier."
              INDEX { diffServSixTupleClfrId }
              ::= { diffServSixTupleClfrTable 1 }

          DiffServSixTupleClfrEntry ::= SEQUENCE {
              diffServSixTupleClfrId           Unsigned32,
              diffServSixTupleClfrAddrType     InetAddressType,
              diffServSixTupleClfrDstAddr      InetAddress,
              diffServSixTupleClfrDstAddrMask  InetAddress,
              diffServSixTupleClfrSrcAddr      InetAddress,
              diffServSixTupleClfrSrcAddrMask  InetAddress,
              diffServSixTupleClfrDscp         Dscp,
              diffServSixTupleClfrProtocol     INTEGER,
              diffServSixTupleClfrDstL4PortMin SixTupleClfrL4Port,
              diffServSixTupleClfrDstL4PortMax SixTupleClfrL4Port,
              diffServSixTupleClfrSrcL4PortMin SixTupleClfrL4Port,
              diffServSixTupleClfrSrcL4PortMax SixTupleClfrL4Port,
              diffServSixTupleClfrStatus       RowStatus
          }

          diffServSixTupleClfrId OBJECT-TYPE
              SYNTAX         Unsigned32 (1..2147483647)
              MAX-ACCESS     not-accessible
              STATUS         current
              DESCRIPTION
                 "A unique id for the classifier. This object is meant
                 to be pointed to by a RowPointer from other tables,
                 such as the diffServClassifierPattern."
              ::= { diffServSixTupleClfrEntry 1 }

          diffServSixTupleClfrAddrType OBJECT-TYPE
              SYNTAX         InetAddressType
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The type of IP address used by this classifier entry."
              ::= { diffServSixTupleClfrEntry 2 }

          diffServSixTupleClfrDstAddr OBJECT-TYPE
              SYNTAX         InetAddress
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The IP address to match against the packet's
                 destination IP address."
              ::= { diffServSixTupleClfrEntry 3 }

          diffServSixTupleClfrDstAddrMask OBJECT-TYPE
              SYNTAX         InetAddress
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "A mask for the matching of the destination IP address.
                 A zero bit in the mask means that the corresponding bit
                 in the address always matches."
              DEFVAL         {0}
              ::= { diffServSixTupleClfrEntry 4 }

          diffServSixTupleClfrSrcAddr OBJECT-TYPE
              SYNTAX         InetAddress
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The IP address to match against the source IP address
                 of each packet."
              ::= { diffServSixTupleClfrEntry 5 }

          diffServSixTupleClfrSrcAddrMask OBJECT-TYPE
              SYNTAX         InetAddress
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "A mask for the matching of the source IP address.  A
                 zero bit in the mask means that the corresponding bit
                 in the address always matches."
              DEFVAL         {0}
              ::= { diffServSixTupleClfrEntry 6 }

          diffServSixTupleClfrDscp OBJECT-TYPE
              SYNTAX         Dscp
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The value that the DSCP in the packet must have to
                 match this entry. A value of -1 indicates that a
                 specific DSCP value has not been defined and thus all
                 DSCP values are considered a match."
              DEFVAL         {-1}
              ::= { diffServSixTupleClfrEntry 7 }

          diffServSixTupleClfrProtocol OBJECT-TYPE
              SYNTAX         INTEGER (0..255)
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The IP protocol to match against the IPv4 protocol
                 number in the packet. A value of zero means match all."
              DEFVAL         {0}
              ::= { diffServSixTupleClfrEntry 8 }

          diffServSixTupleClfrDstL4PortMin OBJECT-TYPE
              SYNTAX         SixTupleClfrL4Port
              MAX-ACCESS     read-create
              STATUS         current
              DESCRIPTION
                 "The minimum value that the layer-4 destination port
                 number in the packet must have in order to match this
                 classifier entry."
              DEFVAL         {0}
              ::= { diffServSixTupleClfrEntry 9 }

          diffServSixTupleClfrDstL4PortMax OBJECT-TYPE
              SYNTAX         SixTupleClfrL4Port
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The maximum value that the layer-4 destination port
                 number in the packet must have in order to match this
                 classifier entry. This value must be equal to or
                 greater that the value specified for this entry in
                 diffServSixTupleClfrDstL4PortMin."
              DEFVAL         {65535}
              ::= { diffServSixTupleClfrEntry 10 }

          diffServSixTupleClfrSrcL4PortMin OBJECT-TYPE
              SYNTAX         SixTupleClfrL4Port
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The minimum value that the layer-4 source port number
                 in the packet must have in order to match this
                 classifier entry."
              DEFVAL         {0}
              ::= { diffServSixTupleClfrEntry 11 }

          diffServSixTupleClfrSrcL4PortMax OBJECT-TYPE
              SYNTAX         SixTupleClfrL4Port
              MAX-ACCESS     read-write
              STATUS         current
              DESCRIPTION
                 "The maximum value that the layer-4 source port number
                 in the packet must have in oder to match this
                 classifier entry. This value must be equal to or
                 greater that the value specified for this entry in
                 dsSixTupleIpSrcL4PortMin."
              DEFVAL         {65535}
              ::= { diffServSixTupleClfrEntry 12 }

          diffServSixTupleClfrStatus OBJECT-TYPE
              SYNTAX      RowStatus
              MAX-ACCESS  read-create
              STATUS      current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a classifier. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServSixTupleClfrEntry 13 }

          -- Classifier Table
          -- This object allows a configuring system to obtain a
          -- unique value for diffServClassifierNumber for purposes of
          -- configuration

          diffServClassifierUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServClassifierUnique object yields a unique
                 new value for diffServClassifierId when read and
                 subsequently set. This value must be tested for
                 uniqueness."
              ::= { diffServObjects 2 }

          -- The Classifier Table allows us to enumerate the relationship
          -- between arbitrary classifiers and the meters which apply
          -- to classified streams.

          diffServClassifierTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServClassifierEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The classifier table defines the classifiers that a
                 system applies to incoming traffic.  Specific
                 classifiers are defined by RowPointers in this table
                 which identify entries in classifier tables of specific
                 type, e.g.  Multi-field classifiers for IP are defined
                 in diffServSixTupleClfrTable.  Other classifier types
                 may be defined elsewhere."
              ::= { diffServTables 2 }

          diffServClassifierEntry OBJECT-TYPE
              SYNTAX       DiffServClassifierEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the classifier table describes a single
                 classifier."
              INDEX { ifIndex, diffServInterfaceDirection,
                      diffServClassifierId }
              ::= { diffServClassifierTable 1 }

          DiffServClassifierEntry ::= SEQUENCE  {
              diffServInterfaceDirection     INTEGER,
              diffServClassifierId           Unsigned32,
              diffServClassifierPattern      RowPointer,
              diffServClassifierNext         RowPointer,
              diffServClassifierPrecedence   Unsigned32,
              diffServClassifierStatus       RowStatus
          }

          diffServInterfaceDirection OBJECT-TYPE
              SYNTAX  INTEGER {
                          inbound(1),     -- ingress interface
                          outbound(2)     -- egress interface
                      }
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Specifies the direction for this entry on the
                 interface. 'inbound' traffic is operated on during
                 receipt, while 'outbound' traffic is operated on prior
                 to transmission."
              ::= { diffServClassifierEntry 1 }

          diffServClassifierId OBJECT-TYPE
              SYNTAX       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Classifier Id enumerates the classifier entry."
              ::= { diffServClassifierEntry 2 }

          diffServClassifierPattern OBJECT-TYPE
              SYNTAX       RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "A pointer to a valid entry in another table that
                 describes the applicable classification pattern, e.g.
                 an entry in diffServSixTupleClfrTable.  If the row
                 pointed to does not exist, the classifier is ignored.

                 The value zeroDotZero is interpreted to match anything
                 not matched by another classifier - only one such entry
                 may exist in this table."
              DEFVAL { zeroDotZero }
              ::= { diffServClassifierEntry 3 }

          diffServClassifierNext OBJECT-TYPE
              SYNTAX       RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The 'next' variable selects the next datapath element
                 to handle the classified flow.  For example, this can
                 points to an entry in the meter or action table."
              ::= { diffServClassifierEntry 4 }

          diffServClassifierPrecedence OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The relative precedence in which classifiers are
                 applied, higer numbers represent classifiers with
                 higher precedence.  Classifiers with the same
                 precedence must be unambiguous, i.e. they must define
                 non-overlapping patterns.  Classifiers with different
                 precedence may overlap in their patterns:  the
                 classifier with the highest precedence that matches is
                 taken."
              DEFVAL { 0 }
              ::= { diffServClassifierEntry 5 }

          diffServClassifierStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a classifier. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServClassifierEntry 6 }
          --
          -- Meters
          --

          -- This MIB includes definitions for Token-Bucket
          -- Meters as one example of possible meters.

          -- This object allows a configuring system to obtain a
          -- unique value for diffServTBMeterId for purposes of
          -- configuration

          diffServTBMeterUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServTBMeterUnique object yields a unique new
                 value for diffServTBMeterId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 3 }

          diffServTBMeterTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServTBMeterEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Meter Table enumerates specific token bucket
                 meters that a system may use to police a stream of
                 classified traffic. The traffic stream is defined by
                 the classifier.  It may include all traffic."
              ::= { diffServTables 3 }

          diffServTBMeterEntry OBJECT-TYPE
              SYNTAX       DiffServTBMeterEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the meter table describes a single token
                 bucket meter. Note that a meter has exactly one rate,
                 defined as the burst size each time interval. Multiple
                 meters may be cascaded should a multi-rate token bucket
                 be needed in a given Per-Hop Behavior. An example of
                 such a PHB is AF."
              INDEX { ifIndex, diffServInterfaceDirection,
                      diffServTBMeterId  }
              ::= { diffServTBMeterTable 1 }
          DiffServTBMeterEntry ::= SEQUENCE  {
              diffServTBMeterId                Unsigned32,
              diffServTBMeterRate              Unsigned32,
              diffServTBMeterBurstSize         Unsigned32,
              diffServTBMeterFailNext          RowPointer,
              diffServTBMeterSucceedNext       RowPointer,
              diffServTBMeterStatus            RowStatus
          }

          diffServTBMeterId OBJECT-TYPE
              SYNTAX       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "MeterId enumerates the meter entry."
              ::= { diffServTBMeterEntry 1 }

          diffServTBMeterRate OBJECT-TYPE
              SYNTAX       Unsigned32
              UNITS        "KBPS"
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The token bucket rate, in kilo-bits per second (KBPS).
                 Note that if multiple meters are cascaded onto one PHB,
                 the conceptual model and providing	its
	  index, peak rate of the data stream is the sum of their
                 rates."
              ::= { diffServTBMeterEntry 2 }

          diffServTBMeterBurstSize OBJECT-TYPE
              SYNTAX       Unsigned32
              UNITS        "bytes"
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The number of bytes in a single transmission burst.
                 The interval can be derived with (BurstSizex8)/Rate."
              ::= { diffServTBMeterEntry 3 }

          diffServTBMeterFailNext OBJECT-TYPE
              SYNTAX       RowPointer	takes you
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "If the traffic does NOT conform to the meter, FailNext
                 indicates the next datapath element to handle the
                 traffic.  For example, an Action or Meter datapath
                 element.  The value zeroDotZero in this variable
                 indicates no further DiffServ treatment is performed on
                 this flow by the current interface for this interface
                 direction."
              DEFVAL      { zeroDotZero }
              ::= { diffServTBMeterEntry 4 }

          diffServTBMeterSucceedNext OBJECT-TYPE
              SYNTAX       RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "If the traffic does conform to the meter, SucceedNext
                 indicates the next datapath element to handle the
                 traffic.  For example, an Action or Meter datapath
                 element.  The value zeroDotZero in this variable
                 indicates no further DiffServ treatment is performed on
                 this flow by the current interface for this interface
                 direction."
              DEFVAL      { zeroDotZero }
              ::= { diffServTBMeterEntry 5 }

          diffServTBMeterStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a meter. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServTBMeterEntry 6 }
          --
          -- Actions
          --
          -- Notice the MIB row representing
	  that thing. In Drop Action attributes are referenced by the Meter Table, for example,
          -- action table rather than by the "FailNext"

	  Draft queue table because
          -- Differentiated Services MIB	    October 1999

	  RowPointer might take	you PHBs, such as the Assured Service,
          -- permit differently classified traffic to another meter, while have different
          -- drop parameters even though they occupy the
	  "SucceedNext"	RowPointer would take you same queue."
          --

          -- Mark Action Table
          -- Rows of this table is pointed to by diffServAction to
          -- provide detail parameters specific to an	action.

	  Draft		   Differentiated Services MIB	    October 1999

	  4.  MIB Definition

	  DIFF-SERV-MIB	DEFINITIONS ::=	BEGIN

	      IMPORTS
	      Unsigned32, Counter32, Counter64,	OBJECT-TYPE,
	      MODULE-IDENTITY, zeroDotZero, mib-2	   FROM	SNMPv2-SMI
	      TEXTUAL-CONVENTION, RowStatus, RowPointer, TestAndIncr
							   FROM	SNMPv2-TC
	      MODULE-COMPLIANCE, OBJECT-GROUP		   FROM	SNMPv2-CONF
	      ifIndex					   FROM	IF-MIB;
	      InetEndpointType,	InetEndpoint		   FROM	INET-ENDPOINT-MIB;

	  diffServMib MODULE-IDENTITY
	      LAST-UPDATED "9907190100Z" Action Type.

          -- Mon	Jul 19 01:00:00	PDT 1999
	      ORGANIZATION "Cisco Systems"
	      CONTACT-INFO
		 "	 Fred Baker
		 Postal: 519 Lado Drive
			 Santa Barbara,	California 93111
		 Tel: +1 (408)526-4257
		 FAX: +1 (805)681-0115
		 E-mail: fred@cisco.com"
		 "	 Kwok Ho Chan
		 Postal: 600 Technology	Park Drive
			 Billerica, Massachusetts 01821, USA
		 Tel: +1 (978)288-8175
		 E-mail: khchan@nortelnetworks.com"
		 "	 Andrew	Smith
		 Postal: 3585 Monroe St.
			 Santa Clara, California 95051
		 Tel: +1 (408) 579 2821
		 FAX: +1 (408) 579 3000
		 E-mail: andrew@extremenetworks.com" This object allows a configuring system to obtain a
          -- unique value for diffServMarkActId for purposes of
          -- configuration.

          diffServMarkActUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
		 "This MIB defines
                 "The diffServMarkActUnique object yields a unique new
                 value for diffServMarkActId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 4 }

          diffServMarkActTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServMarkActEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The mark action table enumerates specific DSCPs used
                 for marking or remarking the objects necessary DSCP field.  The entries
                 of this table is meant to manage a
		 device	that uses be referenced by the Differentiated Services
		 Architecture described
                 diffServAction attribute of entries in RFC 2475."
	      REVISION "9907190100Z" --	Mon Jul	19 01:00:00 PDT	1999
	      DESCRIPTION
		 "Initial version, published as	RFC xxxx."
                 diffServActionTable for diffServActionType = mark."
              ::= { mib-2 12345 diffServTables 4 }  -- anybody who uses this
				   -- unassigned number
				   -- deserves

          diffServMarkActEntry OBJECT-TYPE
              SYNTAX       DiffServMarkActEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the wrath of IANA

	  diffServObjects OBJECT IDENTIFIER mark action table describes a single
                 DSCP used for marking."
              INDEX { diffServMarkActId }
              ::= { diffServMib diffServMarkActTable 1 }
	  diffServTables OBJECT	IDENTIFIER

          DiffServMarkActEntry ::= SEQUENCE  { diffServMib 2
              diffServMarkActId            Unsigned32,
              diffServMarkActDscp          Dscp,
              diffServMarkActStatus        RowStatus
          }

          diffServMarkActId OBJECT-TYPE
              SYNTAX       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Mark Action Id enumerates the Mark Action entry."
              ::= { diffServMarkActEntry 1 }

	  Draft

          diffServMarkActDSCP OBJECT-TYPE
              SYNTAX       Dscp
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The DSCP this Action TCB uses for marking/remarking
                 traffic with."  Note that if the classifier is working
                 from the same DSCP value, no effective change in the
                 DSCP results.

                 Differentiated Services MIB	    October 1999

	  diffServMIBConformance OBJECT	IDENTIFIER may result in packet remarking
                 both on ingress to a network and on egress, and it is
                 quite possible that ingress and egress would occur in
                 the same router."
              ::= { diffServMib diffServMarkActEntry 2 }

          diffServMarkActStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of this entry. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServMarkActEntry 3 }

	  Draft		   Differentiated Services MIB	    October 1999

          -- The tools necessary Count Action Table
          -- Rows of this table is pointed to perform basic Behavior by diffServAction to
          -- provide detail parameters specific to Count Action.

          -- This object allows a configuring system to obtain a
          -- Aggregate Classification unique value for diffServCountActId for purposes of
          --
	  Dscp ::= TEXTUAL-CONVENTION
	      DISPLAY-HINT "d" configuration.

          diffServCountActUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The code point used for discriminating diffServCountActUnique object yields a traffic
		 stream."
	      SYNTAX   INTEGER (0..63)

	  diffServAggregateTable unique new
                 value for diffServCountActId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 5 }

          diffServCountActTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServAggregateEntry DiffServCountActEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The 'Aggregate' Table	enumerates Behavior Aggregate
		 classifiers (DSCPs) that a system may identify	traffic
		 using." count action table contains flow specific
                 counters.  The entries of this table is meant to be
                 referenced by the diffServAction attribute of entries
                 in diffServActionTable for diffServActionType = count."
              ::= { diffServTables 1 5 }

	  diffServAggregateEntry

          diffServCountActEntry OBJECT-TYPE
              SYNTAX	   DiffServAggregateEntry       DiffServCountActEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An 'aggregate' entry in the count action table describes a single BA
		 classifier."
                 set of flow specific counters.  This counter entry is
                 associated with a traffic flow via the
                 diffServActionEntry pointing to it."
              INDEX { diffServAggregateDSCP diffServActionId, diffServCountActId }
              ::= { diffServAggregateTable diffServCountActTable 1 }

	  DiffServAggregateEntry

          DiffServCountActEntry ::= SEQUENCE  {
	      diffServAggregateDSCP	    Dscp
              diffServCountActId           Unsigned32,
              diffServCountActOctetsCnt    Counter32,
              diffServCountActPktsCnt      Counter32,
              diffServCountActStatus       RowStatus
          }

	  diffServAggregateDSCP

          diffServCountActId OBJECT-TYPE
              SYNTAX	   Dscp       Unsigned32 (1..2147483647)
              MAX-ACCESS   read-only   not-accessible
              STATUS       current
              DESCRIPTION
		 "This is the Differentiated Services Code Point (DSCP)
		 for the classifier. This object is only meant to be
		 pointed to by a RowPointer from other tables, such as
                 "Count Action Id enumerates the diffServClassifierMatchObject, and	is not actually
		 configured or changed." Count Action entry."
              ::= { diffServAggregateEntry diffServCountActEntry 1 }

	  Draft		   Differentiated Services MIB	    October 1999

	  -- The tools for MultiField Classification.
	  --
	  -- This textual convention

          diffServCountActOctetsCnt OBJECT-TYPE
              SYNTAX       Counter32
              UNITS        "octets"
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The number of Octets at the Action datapath element.
                 Meaning the octets has no effect been classified and possibly
                 metered, and prior to any dropping process. This object
                 may be used on either low speed interfaces, and represents the syntax
	  -- nor
                 least significant 32 bits of diffServCountActOctetsHCnt
                 in the semantics augmented extension.

                 Discontinuities in the value of any managed object.  Objects defined
	  -- using this	convention are always encoded counter can occur
                 at re-initialization of the management system, and at
                 other times as indicated by means of the
	  -- rules that	define their primitive type.
	  --
	  MFClassifierL4Port ::= TEXTUAL-CONVENTION
	      DISPLAY-HINT "d"
	      STATUS   current
	      DESCRIPTION
		 "A value indicating a Layer-4 protocol	port number."
	      SYNTAX   INTEGER (0..65535)

	  -- This object allows	a configuring system to	obtain a
	  -- unique value for diffServClassifierNumber for purposes of
	  -- configuration.

	  diffServMFClassifierUnique
                 ifCounterDiscontinuityTime."
              ::= { diffServCountActEntry 2 }

          diffServCountActPktsCnt OBJECT-TYPE
              SYNTAX	   TestAndIncr       Counter32
              UNITS        "packets"
              MAX-ACCESS   read-write   read-only
              STATUS       current
              DESCRIPTION
                 "The diffServMFClassifierUnique number of Packets at the Action datapath element.
                 Meaning the packets has been classified and possibly
                 metered, and prior to any dropping process. This object	yields a
		 unique	new
                 may be used on low speed interfaces, and represents the
                 least significant 32 bits of diffServCountActPktsHCount
                 in the augmented extension.

                 Discontinuities in the value for diffServMFClassifierIndex	when read of this counter can occur
                 at re-initialization of the management system, and
		 subsequently set. This at
                 other times as indicated by the value must be tested for
		 uniqueness." of
                 ifCounterDiscontinuityTime."
              ::= { diffServObjects 1 diffServCountActEntry 3 }

	  diffServMFClassifierTable

          diffServCountActStatus OBJECT-TYPE
              SYNTAX	   SEQUENCE OF diffServMFClassifierEntry       RowStatus
              MAX-ACCESS   not-accessible   read-create
              STATUS       current
              DESCRIPTION
		 "A table
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of MF	(IP 6-tuple multi-field) classifier
		 entries that a	system this entry. Any writable
                 variable may use to identify traffic." be modified whether the row is active or
                 notInService."
              ::= { diffServTables 2 diffServCountActEntry 4 }

	  diffServMFClassifierEntry

          --
          -- High Capacity Counter Extension for Count Action Table
          --

          diffServCountActXTable OBJECT-TYPE
              SYNTAX	   DiffServMFClassifierEntry
	      MAX-ACCESS   not-accessible
	      STATUS	   current
	      DESCRIPTION
		 "A multi-field	classifier entry describes a single MF
		 classifier."
	      INDEX { diffServMFClassifierIndex	}
	      ::= { diffServMFClassifierTable 1	}

	  Draft		   Differentiated Services MIB	    October 1999

	  DiffServMFClassifierEntry ::=       SEQUENCE {
	      diffServMFClassifierIndex	       INTEGER,
	      diffServMFClassifierAddrType     InetEndpointType,
	      diffServMFClassifierDstAddr      InetEndpoint,
	      diffServMFClassifierDstAddrMask  InetEndpoint,
	      diffServMFClassifierSrcAddr      InetEndpoint,
	      diffServMFClassifierSrcAddrMask  InetEndpoint,
	      diffServMFClassifierDscp	       INTEGER,
	      diffServMFClassifierProtocol     INTEGER,
	      diffServMFClassifierDstL4PortMin MFClassifierL4Port,
	      diffServMFClassifierDstL4PortMax MFClassifierL4Port,
	      diffServMFClassifierSrcL4PortMin MFClassifierL4Port,
	      diffServMFClassifierSrcL4PortMax MFClassifierL4Port,
	      diffServMFClassifierStatus       RowStatus
	  }

	  diffServMFClassifierIndex OBJECT-TYPE
	      SYNTAX	  INTEGER (1..2147483647) OF DiffServCountActXEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "This is a unique index table contains the high capacity counters for the classifier. This object
		 is meant to be	pointed	to by a	RowPointer from	other
		 tables, such as
                 counters in the Count Action Table.  These objects are
                 all 64-bit versions of the basic counters, having the diffServClassifierMatchObject."
                 same basic semantics as their 32-bit counterparts, with
                 syntax extended to 64 bits."
              AUGMENTS { diffServCountActEntry }
              ::= { diffServMFClassifierEntry diffServAugments 1 }

	  diffServMFClassifierAddrType

          diffServCountActXEntry OBJECT-TYPE
              SYNTAX	     InetEndpointType       DiffServCountActXEntry
              MAX-ACCESS     read-create   not-accessible
              STATUS       current
              DESCRIPTION
		 "The type of IP address used by this classifier
                 "An entry containing the 64 bit counters applicable to
                 a specific drop action entry."
              ::= { diffServMFClassifierEntry 2 diffServActionXTable 1 }

	  diffServMFClassifierDstAddr OBJECT-TYPE
	      SYNTAX	     InetEndpoint
	      MAX-ACCESS     read-create
	      STATUS	     current
	      DESCRIPTION
		 "The IP address to match against the packet's
		 destination IP	address."

          DiffServCountActXEntry ::= SEQUENCE  { diffServMFClassifierEntry 3
              diffServCountActOctetsHCnt     Counter64,
              diffServCountActPktsHCnt       Counter64
          }

	  diffServMFClassifierDstAddrMask

          diffServCountActOctetsHCnt OBJECT-TYPE
              SYNTAX	     InetEndpoint       Counter64
              MAX-ACCESS     read-create   read-only
              STATUS       current

	  Draft		   Differentiated Services MIB	    October 1999
              DESCRIPTION
		 "A mask for the matching
                 "The number of Octets at the destination IP	address.
		 A zero	bit Action datapath element.
                 Meaning the packets has been classified and possibly
                 metered, and prior to any dropping process.  This
                 object should be used on high speed interfaces.

                 Discontinuities in the mask	means that value of this counter can occur
                 at re-initialization of the corresponding bit
		 in management system, and at
                 other times as indicated by the	address	always matches." value of
                 ifCounterDiscontinuityTime."
              ::= { diffServMFClassifierEntry 4 diffServCountActXEntry 1 }

	  diffServMFClassifierSrcAddr

          diffServCountActPktsHCnt OBJECT-TYPE
              SYNTAX	     InetEndpoint       Counter64
              MAX-ACCESS     read-create   read-only
              STATUS       current
              DESCRIPTION
                 "The IP address number of Packets at the Action datapath element.
                 Meaning the packets has been classified and possibly
                 metered, and prior to match against any dropping process.  This
                 object should be used on high speed interfaces.

                 Discontinuities in the source IP	address value of each packet." this counter can occur
                 at re-initialization of the management system, and at
                 other times as indicated by the value of
                 ifCounterDiscontinuityTime."
              ::= { diffServMFClassifierEntry 5 diffServCountActXEntry 2 }

	  diffServMFClassifierSrcAddrMask OBJECT-TYPE
	      SYNTAX	     InetEndpoint
	      MAX-ACCESS     read-create
	      STATUS	     current
	      DESCRIPTION
		 "A mask

          -- Drop Action Table
          -- Rows of this table is pointed to by diffServAction to
          -- provide detail parameters specific to an Action Type.

          -- Notice the use of diffServQueueId as part of this
          -- table's index.  Hence each entry is queue specific.

          -- This object allows a configuring system to obtain a
          -- unique value for the matching diffServDropActId for purposes of the source	IP address."
	      ::= { diffServMFClassifierEntry 6	}

	  diffServMFClassifierDscp
          -- configuration.

          diffServDropActUnique OBJECT-TYPE
              SYNTAX	     INTEGER (-1 | 0..63)       TestAndIncr
              MAX-ACCESS     read-create   read-write
              STATUS       current
              DESCRIPTION
                 "The value that the DSCP in the packet	must have to
		 match this entry. A value of -1 indicates that diffServDropActUnique object yields a
		 specific DSCP unique new
                 value has not been defined for diffServDropActId when read and thus all
		 DSCP values are considered a match." subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServMFClassifierEntry 7 diffServObjects 6 }

	  diffServMFClassifierProtocol
          diffServDropActTable OBJECT-TYPE
              SYNTAX	     INTEGER (0..255)       SEQUENCE OF DiffServDropActEntry
              MAX-ACCESS     read-create   not-accessible
              STATUS       current
              DESCRIPTION
                 "The IP protocol drop action table enumerates sets of attributes
                 used to match against represent a drop process.  Each set is normally
                 associated with a queue.  The entries of this table is
                 meant to be referenced by the IPv4 protocol
		 number diffServAction attribute
                 of entries in the packet. A value diffServActionTable.  The entries of zero means match all." this
                 table is used for:  Tail Drop Action when
                 diffServActionType = tailDrop Random Drop Action when
                 diffServActionType = randomDrop Deterministic Drop
                 Action when diffServActionType = deterDrop"
              ::= { diffServMFClassifierEntry 8 diffServTables 6 }

	  diffServMFClassifierDstL4PortMin

          diffServDropActEntry OBJECT-TYPE
              SYNTAX	     MFClassifierL4Port       DiffServDropActEntry
              MAX-ACCESS     read-create   not-accessible
              STATUS       current

	  Draft		   Differentiated Services MIB	    October 1999
              DESCRIPTION
		 "The minimum value that the layer-4 destination port
		 number
                 "An entry in the packet must have	in order to match this
		 classifier entry."
	      ::= { diffServMFClassifierEntry 9	}

	  diffServMFClassifierDstL4PortMax OBJECT-TYPE
	      SYNTAX	     MFClassifierL4Port
	      MAX-ACCESS     read-create
	      STATUS	     current
	      DESCRIPTION
		 "The maximum value that drop action table describes a single
                 drop process's configuration.  For Tail Drop Process:

                 For Random Drop Process:  (QMin,PMin) and (QMax,PMax)
                 defines the layer-4 destination port
		 number	in drop probability used for the packet must random drop
                 process.  Normally PMin have	in order to match this
		 classifier entry. This a value must be equal of zero.  QClip
                 defines the guaranteed average queue depth, after which
                 the drop probability reaches 100%.  For Deterministic
                 Drop Process:  QMeasure points to or
		 greater that an entry providing
                 Queue Measurement needed for the drop process."
              INDEX { diffServQueueId, diffServDropActId }
              ::= { diffServTable 1 }

          DiffServDropActEntry ::= SEQUENCE  {
              diffServDropActId               Unsigned32,
              diffServDropActQMin             Unsigned32,
              diffServDropActQMax             Unsigned32,
              diffServDropActQClip            Unsigned32,
              diffServDropActPMin             Unsigned32,
              diffServDropActPMax             Unsigned32,
              diffServDropActPCur             Unsigned32,
              diffServDropActQMeasure         RowPointer,
              diffServDropActOctetsCnt        Counter32,
              diffServDropActPktsCnt          Counter32,
              diffServDropActStatus           RowStatus
          }
          diffServDropActId OBJECT-TYPE
              SYNTAX       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Drop Action Id enumerates the value	specified for this entry in
		 diffServMFClassifierDstL4PortMin." Drop Action entry."
              ::= { diffServMFClassifierEntry 10 diffServDropActEntry 1 }

	  diffServMFClassifierSrcL4PortMin

          diffServDropActQMin OBJECT-TYPE
              SYNTAX	     MFClassifierL4Port       Unsigned32
              UNITS        "Kilo Bits"
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
		 "The minimum value that
                 "QMin, with PMin, defines the layer-4 source port number
		 in lowerest drop probability
                 point for this random drop process.  With PMin=0, the
                 queue may drop if a packet must have in order is presented to match this
		 classifier entry." it and the
                 average queue depth exceeds QMin."
              ::= { diffServMFClassifierEntry 11 diffServDropActEntry 2 }

	  diffServMFClassifierSrcL4PortMax

          diffServDropActQMax OBJECT-TYPE
              SYNTAX	     MFClassifierL4Port       Unsigned32
              UNITS        "Kilo Bits"
              MAX-ACCESS   read-create
              STATUS       current
	      DESCRIPTION
		 "The maximum value that
                 "QMax, with PMax, defines the layer-4 source port number
		 in higher point of drop
                 probability for random drop process.  For Tail Drop
                 Process:  This represents the measure by which the
                 queue will drop if a packet must have in oder to match this
		 classifier entry. This	value must be equal is presented to or
		 greater that the value	specified for this entry in
		 dsSixTupleIpSrcL4PortMin." it."
              ::= { diffServMFClassifierEntry 12 diffServDropActEntry 3 }

	  diffServMFClassifierStatus

          diffServDropActQClip OBJECT-TYPE
              SYNTAX	  RowStatus       Unsigned32
              UNITS        "Kilo Bits"
              MAX-ACCESS   read-create
              STATUS       current
	      DESCRIPTION
		 "This indicates
                 "The average queue length at which point the status of this classifier entry." drop
                 probability reaches 100%."
              ::= { diffServMFClassifierEntry 13 diffServDropActEntry 4 }

	  Draft		   Differentiated Services MIB	    October 1999

	  -- This object allows	a configuring system to	obtain a
	  -- unique value for diffServClassifierNumber for purposes of
	  -- configuration

	  diffServClassifierUnique

          diffServDropActPMin OBJECT-TYPE
              SYNTAX	   TestAndIncr       Unsigned32 (0..1000000)
              UNITS        "per-micro-age"
              MAX-ACCESS   read-write
              STATUS       current
	      DESCRIPTION
		 "The diffServClassifierUnique object yields a unique
		 new value
                 "QMin, with PMin, defines the lowerest drop probability
                 point for diffServClassifierNumber	when read this random drop process.  With PMin=0, the
                 queue may drop if a packet is presented to it and
		 subsequently set. the
                 average queue depth exceeds QMin.  This drop
                 probability is expressed in per-micro-age, the value must in
                 this attribute needs to be tested for
		 uniqueness."
	      ::= { diffServObjects 2 }

	  -- The Classifier Table allows us divided by 1,000,000 to enumerate
                 obtain the
	  -- relationship drop probability between arbitrary classifiers 0 and
	  -- the meters	which apply to classified streams.

	  diffServClassifierTable 1."
              ::= { diffServDropActEntry 5 }

          diffServDropActPMax OBJECT-TYPE
              SYNTAX	   SEQUENCE OF DiffServClassifierEntry       Unsigned32 (0..1000000)
              UNITS        "per-micro-age"
              MAX-ACCESS   not-accessible   read-write
              STATUS       current
	      DESCRIPTION
		 "The classifier table enumerates specific classifiers
		 that a	system may apply, including Differentiated
		 Services Code Points (DSCPs)
                 "QMax and Multi-field
		 discriminators	such as	{Source	IP Address, Destination
		 IP Address, IP	Protocol, Source TCP/UDP Port,
		 Destination TCP/UDP Port)." PMax are part of the drop probability
                 configuration.  This drop probability is expressed in
                 per-micro-age, the value in this attribute needs to be
                 divided by 1,000,000 to obtain the drop probability
                 between 0 and 1."
              ::= { diffServTables 3 diffServDropActEntry 6 }

	  diffServClassifierEntry

          diffServDropActPCur OBJECT-TYPE
              SYNTAX	   DiffServClassifierEntry       Unsigned32 (0..1000000)
              UNITS        "per-micro-age"
              MAX-ACCESS   not-accessible   read-only
              STATUS       current
	      DESCRIPTION
		 "An entry
                 "The current drop probability.  This drop probability
                 is expressed in per-micro-age, the classifier table describes a single
		 classifier."
	      INDEX { ifIndex, diffServInterfaceDirection,
		      diffServClassifierNumber }
	      ::= { diffServClassifierTable 1 }

	  DiffServClassifierEntry value in this
                 attribute needs to be divided by 1,000,000 to obtain
                 the drop probability between 0 and 1."
              ::= SEQUENCE {
	      diffServInterfaceDirection     INTEGER,
	      diffServClassifierNumber	     INTEGER,
	      diffServClassifierMatchObject  RowPointer,

	  Draft		   Differentiated Services MIB	    October 1999

	      diffServClassifierNext	     RowPointer,
	      diffServClassifierSequence     Unsigned32,
	      diffServClassifierConfigType   INTEGER,
	      diffServClassifierConfigTypeInfo	OCTET STRING,
	      diffServClassifierStatus	     RowStatus diffServDropActEntry 7 }

	  diffServInterfaceDirection

          diffServDropActQMeasure OBJECT-TYPE
              SYNTAX  INTEGER {
			  inbound(1),	  -- ingress interface
			  outbound(2)	  -- egress interface
		      }       RowPointer
              MAX-ACCESS   not-accessible   read-create
              STATUS       current
	      DESCRIPTION
		 "Specifies
                 "Points to an entry in the	direction diffServQMeasureTable for this entry on
                 queue information required by the
		 interface. 'inbound' traffic is operated on during
		 receipt, while	'outbound' traffic is operated on prior
		 to transmission." drop process."
              ::= { diffServClassifierEntry 1 diffServDropActEntry 8 }

	  diffServClassifierNumber

          diffServDropActOctetsCnt OBJECT-TYPE
              SYNTAX	   INTEGER (1..2147483647)       Counter32
              MAX-ACCESS   not-accessible   read-only
              STATUS       current
              DESCRIPTION
		 "diffServClassifierNumber enumerates
                 "The number of octets that have been dropped by a drop
                 process.  On high speed devices, this object implements
                 the classifier
		 entry." least significant 32 bits of
                 diffServDropActOctetsHCnt.

                 Discontinuities in the value of this counter can occur
                 at re-initialization of the management system, and at
                 other times as indicated by the value of
                 ifCounterDiscontinuityTime."
              ::= { diffServClassifierEntry 2 { diffServDropActEntry 9 }

	  diffServClassifierMatchObject

          diffServDropActPktsCnt OBJECT-TYPE
              SYNTAX	   RowPointer       Counter32
              MAX-ACCESS   read-create   read-only
              STATUS       current
              DESCRIPTION
		 "A pointer to the row
                 "The number of packets that describes the applicable
		 classifier. An	obvious	choice would be	the
		 diffServAggregateEntry	for have been dropped by a given DSCP, but other
		 choices include tables	describing any classifier that
		 may be drop
                 process.  On high speed devices, this object implements
                 the least significant 32 bits of interest. If
                 diffServDropActPktsHCnt.

                 Discontinuities in the row	pointed	to does	not
		 exist, value of this counter can occur
                 at re-initialization of the classifier is ignored.

		 The NULL OID zeroDotZero is interpreted to match
		 anything not matched management system, and at
                 other times as indicated by another classifier."
	      DEFVAL { zeroDotZero } the value of
                 ifCounterDiscontinuityTime."
              ::= { diffServClassifierEntry 3 diffServDropActEntry 10 }

	  Draft		   Differentiated Services MIB	    October 1999

	  diffServClassifierNext

          diffServDropActStatus OBJECT-TYPE
              SYNTAX	   RowPointer       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The 'next' RowStatus variable selects controls the appropriate meter activation,
                 deactivation, or
		 action	to apply to this class deletion of traffic." this entry. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServClassifierEntry 4 diffServDropActEntry 11 }

	  diffServClassifierSequence

          --
          -- High Capacity Counter Extension for Drop Action Table
          --

          diffServDropActXTable OBJECT-TYPE
              SYNTAX	   Unsigned32       SEQUENCE OF DiffServDropActXEntry
              MAX-ACCESS   read-create   not-accessible
              STATUS       current
              DESCRIPTION
		 "The sequence
                 "This table contains the high capacity counters for the
                 counters in which	classifiers the Drop Action Table.  These objects are	applied, in
		 ascending order. Classifiers with
                 all 64 bit versions of the basic counters, having the
                 same sequence
		 number	must be	unambiguous.  Classifiers with different
		 sequence numbers may overlap in basic semantics as their ranges, 32-bit counterparts, with the
		 understanding that the	first applied classifier
                 syntax extended to
		 match a packet	is taken."
	      DEFVAL 64 bits."
              AUGMENTS { 0 diffServDropActEntry }
              ::= { diffServClassifierEntry 5 diffServAugments 2 }

	  diffServClassifierConfigType

          diffServDropActXEntry OBJECT-TYPE
              SYNTAX	   INTEGER {
			       OTHER (0),
			       MIB (1),	   -- Configured via MIB
			       PIB (2),	   -- Configured via PIB
			       BGP (3)	   -- Configured via BGP
			   }       DiffServDropActXEntry
              MAX-ACCESS   read-write   not-accessible
              STATUS       current
              DESCRIPTION
		 "Used to indicate how
                 "An entry containing the classifer is	configured." 64 bit counters applicable to
                 a specific drop action entry."
              ::= { diffServClassifierEntry 6 diffServDropActXTable 1 }

          DiffServDropActXEntry ::= SEQUENCE  {
              diffServDropActOctetsHCnt       Counter64,
              diffServDropActPktsHCnt         Counter64
          }

	  diffServClassifierConfigTypeInfo

          diffServDropActOctetsHCnt OBJECT-TYPE
              SYNTAX	   OCTET STRING       Counter64
              MAX-ACCESS   read-write   read-only
              STATUS       current
              DESCRIPTION
		 "Additional information associated with how
                 "The number of octets that have been dropped by a drop
                 process.  This object should be used on high speed
                 interfaces.

                 Discontinuities in the
		 classifier is configured." value of this counter can occur
                 at re-initialization of the management system, and at
                 other times as indicated by the value of
                 ifCounterDiscontinuityTime."
              ::= { diffServClassifierEntry 7 diffServDropActXEntry 1 }

	  diffServClassifierStatus

          diffServDropActPktsHCnt OBJECT-TYPE
              SYNTAX	   RowStatus

	  Draft		   Differentiated Services MIB	    October 1999       Counter64
              MAX-ACCESS   read-create   read-only
              STATUS       current
              DESCRIPTION
                 "The RowStatus	variable controls the activation,
		 deactivation, or deletion number of packets that have been dropped by a	classifier. Any	writable
		 variable may drop
                 process.  This object should be modified whether used on high speed
                 interfaces.

                 Discontinuities in the row is active or
		 notInService." value of this counter can occur
                 at re-initialization of the management system, and at
                 other times as indicated by the value of
                 ifCounterDiscontinuityTime."
              ::= { diffServClassifierEntry 8 diffServDropActXEntry 2 }

	  Draft		   Differentiated Services MIB	    October 1999
          -- This object allows a configuring system to obtain a
          -- unique value for diffServClassifierNumber diffServActionId for purposes of
          -- configuration

	  diffServTBMeterUnique

          diffServActionUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServTBMeterUnique diffServActionUnique object yieldiffServ yields a unique new
                 value for diffServTBMeterNumber diffServActionId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 3 7 }

          -- The Meter Action Table allows us to enumerate the different
          -- relationship between  meters and the actions, other
	  -- meters, and queues	that result from them.

	  diffServTBMeterTable types of actions to be applied to a flow.

          diffServActionTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServTBMeterEntry DiffServActionEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Meter Action Table enumerates specific token bucket
		 meters actions that a system may use can be
                 performed to police a stream of
		 classified traffic. Such  Multiple Actions can
                 be concatenated.  For example, marking of a stream may include a single
		 micro-flow, all traffic from a	given source to	a given
		 destination, all traffic conforming to	a single
		 classifier, or	any other cut of the traffic, including
		 all of	it.

		 Note that the conceptual model	requires all
                 traffic to
		 pass through one or more meters, and that the last exiting a meter configured in such (conforming or non-conforming),
                 then perform a sequence must always
		 conform.

		 Counters in this table	start drop process with dropped traffic counts
                 maintained.  Notice counting on creation is considered as a type of
                 action.  The set of flow specific counters in the meter Count
                 Action Table maintains statistics for a flow that	specifies their	existence."
                 arrives to this Action datapath element.  This count is
                 always taken before any drop processing is performed."
              ::= { diffServTables 4 7 }

	  diffServTBMeterEntry

          diffServActionEntry OBJECT-TYPE
              SYNTAX	   DiffServTBMeterEntry       DiffServActionEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the meter action table describes	a single token

	  Draft		   Differentiated Services MIB	    October 1999

		 bucket	meter. Note that a meter has exactly one rate,
		 defined as the	burst size each	time interval. Multiple
		 meters	may be cascaded	should a multi-rate token bucket
		 be needed in actions
                 applied to traffic exiting a given Per-Hop Behavior.	An example of
		 such a	PHB is AF." meter."
              INDEX { ifIndex, diffServInterfaceDirection,
		      diffServTBMeterNumber
                      diffServActionId }
              ::= { diffServTBMeterTable diffServActionTable 1 }

	  DiffServTBMeterEntry

          DiffServActionEntry ::= SEQUENCE  {
	      diffServTBMeterNumber	       INTEGER,
	      diffServTBMeterInterval
              diffServActionId                Unsigned32,
	      diffServTBMeterBurstSize	       Unsigned32,
	      diffServTBMeterFailNext
              diffServActionNext              RowPointer,
	      diffServTBMeterSucceedNext
              diffServActionType              INTEGER,
              diffServAction                  RowPointer,
	      diffServTBMeterStatus
              diffServActionStatus            RowStatus
          }

	  diffServTBMeterNumber

          diffServActionId OBJECT-TYPE
              SYNTAX	   INTEGER       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
		 "The number of	the meter, for reference from the
		 classifier or in cascade from another meter."
	      ::= { diffServTBMeterEntry 1 }

	  diffServTBMeterInterval OBJECT-TYPE
	      SYNTAX	   Unsigned32
	      UNITS	   "microseconds"
	      MAX-ACCESS   read-create
	      STATUS	   current
	      DESCRIPTION
		 "The number of	microseconds in	the token bucket
		 interval for this meter. Note that implementations
		 frequently do not keep	time in	microseconds internally,
		 so in implementation the effect of this value must be
		 approximated."
	      ::= { diffServTBMeterEntry 2 }

	  diffServTBMeterBurstSize OBJECT-TYPE
	      SYNTAX	   Unsigned32
	      UNITS	   "bytes"
	      MAX-ACCESS   read-create
	      STATUS	   current
	      DESCRIPTION
		 "The number of	bytes in a single transmission burst.

	  Draft		   Differentiated Services MIB	    October 1999

		 The rate at which the metered traffic may run is one
		 burst per interval. Note that if multiple meters are
		 cascaded onto one PHB,	such as	in AF, their intervals
		 must be equal,	and the	peak rate of the data stream is
                 "Action Id enumerates the sum of their intervals per	interval." Action entry."
              ::= { diffServTBMeterEntry 3 { diffServActionEntry 1 }

	  diffServTBMeterFailNext

          diffServActionNext OBJECT-TYPE
              SYNTAX       RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
		 "If
                 "The Next pointer indicates the traffic does not conform next datapath element
                 to handle the meter, traffic.  For example, a queue datapath
                 element.  The value zeroDotZero in this variable
                 indicates no further DiffServ treatment is performed on
                 this flow by the next
		 meter current interface for this interface
                 direction."
              DEFVAL      { zeroDotZero }
              ::= { diffServActionEntry 2 }

          diffServActionType OBJECT-TYPE
              SYNTAX       INTEGER {
                               other(1),      -- types not specified here.
                               mark(2),       -- mark or remark
                               count(3),      -- count
                               alwaysDrop(4), -- disallow traffic
                               tailDrop(5),   -- fix queue size Drop
                               randomDrop(6), -- Random Drop
                               deterDrop(7)   -- Deterministic Drop
                           }
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "Indicates the type of action to enquire of." diffServAction points
                 to."
              ::= { diffServTBMeterEntry 4 diffServActionEntry 3 }

	  diffServTBMeterSucceedNext

          diffServAction OBJECT-TYPE
              SYNTAX       RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
		 "The 'Succeed Next' pointer selects which action or
		 queue on the interface	that
                 "Points to	be used	with a row in a Action Type Table that provides
                 all the
		 message. Incoming traffic may use parameters for the value zeroDotZero type of action indicated in this variable to indicate that no queuing on receipt
		 occurs. Incoming interfaces generally use queuing
		 either
                 diffServActionType.  Can also points to divert routing traffic for speedier
		 processing during a flap, or for shaping purposes."
	      DEFVAL	  { zeroDotZero	} row in some
                 other MIB to provide some proprietary action type."
              ::= { diffServTBMeterEntry 5 diffServActionEntry 4 }

	  diffServTBMeterStatus

          diffServActionStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a meter. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServTBMeterEntry 6 diffServActionEntry 5 }

	  Draft		   Differentiated Services MIB	    October 1999
          --
          -- Queue Set Table
          -- The Queue Set Table is used for organizing queues
          -- defined in the Queue Table into Queue Sets, with
          -- queue scheduling defined in the queue set entry.
          -- Queue Set Table provides flexibility in queue
          -- organization and allows more complex hierarchical
          -- scheduling algorithms be defined.  For example,
          -- multiple scheduling algorithms, each with multiple
          -- queues, used on the same logical/physical interface.
          --

          -- This object allows a configuring system to obtain a
          -- unique value for diffServActionNumber diffServQSetId for purposes of
          -- configuration

	  diffServActionUnique

          diffServQSetUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServActionUnique diffServQSetUnique object yields a unique new
                 value for diffServActionNumber diffServQSetId when read and subsequently
                 set. This value must be tested for uniqueness."
	      ::= { diffServObjects 4 }

	  -- The Meter Table allows us to enumerate the
	  -- relationship between  meters and the actions, other meters,
	  -- and queues	that result from them.

	  diffServActionTable
              ::= { diffServObjects 8 }

          diffServQSetTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServActionEntry DiffServQSetEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Action Queue Set Table enumerates specific apply the queue sets.  Queue
                 Sets are used to	a stream organize queues based on their
                 scheduling algorithms.  Multiple sheduling algorithms
                 can be used, with each algorithm described by one Queue
                 Set Entry.  Multiple instances of classified traffic.	Such a stream may include a single	micro-flow, all	traffic	from a given source sheduling
                 algorithm, each with different scheduling parameters
                 can also be expressed, each described by its own Queue
                 Set Entry.  Relationships between Queue Sets are used
                 to build scheduling algorithm hierarchies.  For
                 example, a
		 given destination, all	traffic	conforming to weighed fair queueing queue set can be a	single
		 classifier, or	any other cut
                 part of a priority queueing queue set, having the traffic, including
		 all of	it.

		 Counters in this table	start counting on creation
                 weighed fair queueing queue set be a branch of the action that specifies their existence."
                 priority queueing queue set.  More complex hierarchies
                 can also be expressed using this mechanism."
              ::= { diffServTables 5 8 }

	  diffServActionEntry
          diffServQSetEntry OBJECT-TYPE
              SYNTAX	   DiffServActionEntry       DiffServQSetEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the action table Queue Set Table describes the actions
		 applied to traffic conforming to a given meter."
	      INDEX { ifIndex, diffServInterfaceDirection,
		      diffServActionNumber  }
	      ::= { diffServActionTable	1 }

	  DiffServActionEntry ::= SEQUENCE  {

	  Draft		   Differentiated Services MIB	    October 1999

	      diffServActionNumber	      INTEGER,
	      diffServActionNext	      RowPointer,
	      diffServActionDSCP	      Dscp,
	      diffServActionMinThreshold      Unsigned32,
	      diffServActionMaxThreshold      Unsigned32,
	      diffServActionDropPolicy	      INTEGER,
	      diffServActionHCConformingPackets	Counter64,
	      diffServActionConformingPackets Counter32,
	      diffServActionHCConformingOctets	Counter64,
	      diffServActionConformingOctets  Counter32,
	      diffServActionTailDrops	      Counter32,
	      diffServActionHCTailDrops	      Counter64,
	      diffServActionRandomDrops	      Counter32,
	      diffServActionHCRandomDrops     Counter64,
	      diffServActionStatus	      RowStatus
	  }

	  diffServActionNumber OBJECT-TYPE
	      SYNTAX	   INTEGER (1..2147483647)
	      MAX-ACCESS   not-accessible
	      STATUS	   current
	      DESCRIPTION
		 "The number of	the meter, for reference from the
		 classifier or in cascade from another meter."
	      ::= { diffServActionEntry	1 }

	  diffServActionNext OBJECT-TYPE
	      SYNTAX	   RowPointer
	      MAX-ACCESS   read-create
	      STATUS	   current
	      DESCRIPTION
		 "The 'Next' pointer selects which queue or Traffic
		 Control Block on the interface. Incoming traffic may
		 use the value zeroDotZero in this variable to indicate
		 that no queuing on receipt occurs. Incoming interfaces
		 generally use queuing either to divert	routing	traffic
		 for speedier processing during a flap,	or for shaping
		 purposes."
	      DEFVAL single
                 queue set."
              INDEX { zeroDotZero ifIndex, diffServInterfaceDirection,
                      diffServQSetId }
              ::= { diffServActionEntry	2 diffServQSetTable 1 }

	  diffServActionDSCP

          DiffServQSetEntry ::= SEQUENCE  {
              diffServQSetId                   Unsigned32,
              diffServQSetParentId             Unsigned32,
              diffServQSetWeight               Unsigned32,
              diffServQSetMethod               INTEGER,
              diffServQSetRateUnit             INTEGER,
              diffServQSetMinRate              Unsigned32,
              diffServQSetMaxRate              Unsigned32,
              diffServQSetNext                 RowPointer,
              diffServQSetStatus               RowStatus
          }

          diffServQSetId OBJECT-TYPE
              SYNTAX	   Dscp       Unsigned32 (1..2147483647)
              MAX-ACCESS   read-create   not-accessible
              STATUS       current
              DESCRIPTION
                 "The DSCP that	traffic	conforming to this classifier

	  Draft		   Differentiated Services MIB	    October 1999

		 and this meter	is remarked with. Note that if the
		 classifier is working from the	same DSCP value, no
		 effective change in the DSCP results.

		 Differentiated	Services may result in packet remarking
		 both on ingress to a network and on egress, and it is
		 quite possible	that ingress and egress	would occur in Queue Set Id enumerates the same router." Queue Set entry."
              ::= { diffServActionEntry	3 diffServQSetEntry 1 }

	  diffServActionMinThreshold

          diffServQSetParentId OBJECT-TYPE
              SYNTAX       Unsigned32
	      UNITS	   "packets" (1..2147483647)
              MAX-ACCESS   read-create   not-accessible
              STATUS       current
              DESCRIPTION
                 "The min-threshold is the queue depth that a random
		 drop process will seek	to manage the queue's depth to.

		 This object is	in the action table rather than	the
		 queue table because Differentiated Services PHBs, such
		 as the	Assured	Service, permit	differently classified
		 traffic to have different drop	parameters even	though
		 they occupy Queue Set Parent Id allows the same queue." formation of
                 hierarchical relationships between scheduling
                 algorithms."
              ::= { diffServActionEntry	4 diffServQSetEntry 2 }

	  diffServActionMaxThreshold

          diffServQSetWeight OBJECT-TYPE
              SYNTAX       Unsigned32
	      UNITS	   "packets"
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
		 "The max-threshold is the maximum permissible queue
		 depth.	In tail	drop scenarios,
                 "Used with QSetParentId in hierarchical scheduling
                 setup.  QSetWeight represent the weight of all queues
                 within this queue will drop if a
		 packet	is presented set, with respect to	it and it is instantaneously
		 full by queues in other
                 queue sets in hierarchical scheduling.  For example,
                 this measure. In random drop scenarios, queue set represents the weighed fair queueing
                 scheduling amongst all the queues in this queue will drop if set.
                 This set of weighted fair queueing queues as a packet is	presented whole
                 belongs to it	and the
		 average a priority queueing queue depth exceeds the max-threshold.

		 This object is set.  QSetWeight
                 determines this queue set's priority/weight in the action table rather
                 parent queue set's priority queueing scheduling
                 algorithm.  There can be more than	the one weighed fair
                 queueing queue table because Differentiated Services PHBs, such
		 as the	Assured	Service, permit	differently classified
		 traffic sets belonging to have different drop	parameters even	though
		 they occupy the same queue." priority
                 queueing parent queue set."
              ::= { diffServActionEntry	5 diffServQSetEntry 3 }

	  diffServActionDropPolicy

          diffServQSetMethod OBJECT-TYPE

	  Draft		   Differentiated Services MIB	    October 1999
              SYNTAX       INTEGER {
                               other(1),
			       alwaysDrop (2), -- Disallowed traffic
			       tailDrop(3), not listed here
                               pq(2),    -- Fixed	Queue Size
			       randomDrop(4) Priority Queueing
                               wfq(3),   -- RED w/thresholds Weighed Fair Queueing
                               wrr(4)    --     per class Weighed Round Robin
                           }
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The drop policy applied to traffic." scheduling algorithm used by queues in this queue
                 set."
              ::= { diffServActionEntry	6 diffServQSetEntry 4 }

	  diffServActionHCConformingPackets

          diffServQSetRateUnit OBJECT-TYPE
              SYNTAX	   Counter64
	      UNITS	   "bytes"       INTEGER {
                               kbps(1),    -- kilo bits per second
                               packets(2)  -- packets per second
                           }
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
                 "The number of	Packets	conforming to this meter. This
		 object	is used	on high	speed interfaces.

		 Discontinuities in the	value of this counter can occur
		 at re-initialization unit of measure for the management	system, MinRate and at
		 other times as	indicated by the value of
		 ifCounterDiscontinuityTime." MaxRate
                 attributes.  The packet unit allows packet fair
                 algorithms in addition to bit fair algorithms."
              ::= { diffServActionEntry	7 diffServQSetEntry 5 }

	  diffServActionConformingPackets

          diffServQSetMinRate OBJECT-TYPE
              SYNTAX	   Counter32       Unsigned32
              UNITS	   "bytes"        "KBPS"
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
                 "The number of	Packets	conforming to this meter.  This
		 object	may be used on low speed interfaces, and
		 represents minimum rate for the	least significant 32 bits of
		 diffServActionHCConformingPackets.

		 Discontinuities in whole queue set.  If the
                 value of this counter can occur
		 at re-initialization of the management	system,	and at
		 other times as	indicated by is zero, then there is effectively no minimum
                 rate.  If the value is non-zero, the queue set will
                 seek to assure this class of
		 ifCounterDiscontinuityTime." traffic at least this
                 rate."
              ::= { diffServActionEntry	8 diffServQSetEntry 6 }

	  diffServActionHCConformingOctets

          diffServQSetMaxRate OBJECT-TYPE
              SYNTAX	   Counter64

	  Draft		   Differentiated Services MIB	    October 1999       Unsigned32
              UNITS	   "bytes"        "KBPS"
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
                 "The number of	octets conforming to this meter. This
		 object maximum rate for the whole queue set.  If the
                 value is zero, then there is used	on high	speed interfaces.

		 Discontinuities in effectively no maximum
                 rate.  If the value of is non-zero, the queue set will
                 seek to assure this counter can occur
		 at re-initialization class of the management	system,	and traffic at
		 other times as	indicated by the value of
		 ifCounterDiscontinuityTime." most this
                 rate."
              ::= { diffServActionEntry	9 diffServQSetEntry 7 }

	  diffServActionConformingOctets

          diffServQSetNext OBJECT-TYPE
              SYNTAX	   Counter32
	      UNITS	   "bytes"       RowPointer
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
		 "The number
                 "Selects the next data path component, which can be
                 another Queue Set.  One usage of	octets conforming to multiple serial Queue
                 Sets is for Class Base Queueing (CBQ).  The value
                 zeroDotZero in this meter.  This
		 object	may be used variable indicates no further
                 DiffServ treatment is performed on low speed interfaces, and
		 represents this flow by the	least significant 32 bits of
		 diffServActionHCConformingOctets.

		 Discontinuities in
                 current interface for this interface direction.  For
                 example, for an inbound interface the value of this counter can occur
		 at re-initialization of zeroDotZero
                 indicates that the management	system, packet flow has now completed
                 inbound DiffServ treatment and at
		 other times as	indicated by should be forwarded on
                 to the value of
		 ifCounterDiscontinuityTime." appropriate outbound interface."
              DEFVAL       { zeroDotZero }
              ::= { diffServActionEntry	10 diffServQSetEntry 8 }

	  diffServActionTailDrops

          diffServQSetStatus OBJECT-TYPE
              SYNTAX	   Counter32       RowStatus
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
                 "The number of	packets	conforming to this classifier
		 and meter that	have been dropped because either RowStatus variable controls the
		 meter always drops, activation,
                 deactivation, or	the queue's depth exceeds the
		 max-threshold value.  On high speed devices, this
		 object	implements the least significant 32 bits deletion of
		 diffServActionHCTailDrops .

		 Discontinuities in a queue. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServQSetEntry 9 }
          --
          -- Queue Table
          --

          -- This object allows a configuring system to obtain a
          -- unique value for diffServQId for purposes of this counter can occur
		 at re-initialization of the management	system,
          -- configuration.

          diffServQUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServQUnique object yields a unique new value
                 for diffServQId when read and at
		 other times as	indicated by the subsequently set. This
                 value of
		 ifCounterDiscontinuityTime." must be tested for uniqueness."
              ::= { diffServActionEntry	11 diffServObjects 9 }

	  Draft		   Differentiated Services MIB	    October 1999

	  diffServActionHCTailDrops

          -- The Queue Table allows us to describe individual queues

          diffServQTable OBJECT-TYPE
              SYNTAX	   Counter64       SEQUENCE OF DiffServQEntry
              MAX-ACCESS   read-only   not-accessible
              STATUS       current
              DESCRIPTION
                 "The number of	packets	conforming to this classifier
		 and meter that	have been dropped because either the
		 meter always drops, or	the queue's depth exceeds Queue Table enumerates the
		 max-threshold value.  This object should be used queues on
		 high speed interfaces.

		 Discontinuities an
                 interface."
              ::= { diffServTables 9 }

          diffServQEntry OBJECT-TYPE
              SYNTAX       DiffServQEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the	value of this counter can occur
		 at re-initialization of the management	system,	and at
		 other times as	indicated by the value of
		 ifCounterDiscontinuityTime." Queue Table describes a single FIFO
                 queue."
              INDEX { diffServQQSetId, diffServQId }
              ::= { diffServActionEntry	12 diffServQTable 1 }

          DiffServQEntry ::= SEQUENCE  {
              diffServQId                      Unsigned32,
              diffServQQSetId                  Unsigned32,
              diffServQSchedulerWeight         Unsigned32,
              diffServQStatus                  RowStatus
          }

	  diffServActionRandomDrops

          diffServQId OBJECT-TYPE
              SYNTAX	   Counter32       Unsigned32 (1..2147483647)
              MAX-ACCESS   read-only   not-accessible
              STATUS       current
              DESCRIPTION
                 "The number of	packets	conforming to this classifier
		 and meter that	have been dropped by a random drop
		 process because the queue is over-full.  On high speed
		 lines,	this object reflects Queue Id enumerates the least significant 32
		 bits of diffServActionHCRandomDrops.

		 Discontinuities in Queue entry."
              ::= { diffServQEntry 1 }

          diffServQQSetId OBJECT-TYPE
              SYNTAX       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Indicates the	value of Queue Set this counter can occur
		 at re-initialization of the management	system,	and at
		 other times as	indicated by the value of
		 ifCounterDiscontinuityTime." queue is part of."
              ::= { diffServActionEntry	13 diffServQEntry 2 }

	  diffServActionHCRandomDrops

          diffServQSchedulerWeight OBJECT-TYPE
              SYNTAX	   Counter64       Unsigned32
              MAX-ACCESS   read-only   read-create
              STATUS       current
              DESCRIPTION
                 "The number of	packets	conforming to this classifier
		 and meter that	have been dropped by a random drop
		 process because weight or priority of the queue is over-full.  This object is
		 used queue, depending on high speed lines.

		 Discontinuities in the	value
                 scheduling method used.  Notice only the weight of this counter can occur
		 at re-initialization the
                 queue is used, instead of the management	system,	and at
		 other times as	indicated by rate.  The rate can be
                 derived based on the value rate of

	  Draft		   Differentiated Services MIB	    October 1999

		 ifCounterDiscontinuityTime." the queue set.  This is to
                 facilitate changing link speed and/or changing
                 scheduling method without reconfiguring the queues."
              ::= { diffServActionEntry	14 diffServQEntry 3 }

	  diffServActionStatus

          diffServQStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a	meter. queue. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServActionEntry	15 diffServQEntry 4 }

	  Draft		   Differentiated Services MIB	    October 1999

          -- Queue Measurement Table

          -- This object allows a configuring system to obtain a
          -- unique value for diffServQueueNumber diffServQMeasureId for purposes of
          -- configuration

	  diffServQueueUnique configuration.

          diffServQMeasureUnique OBJECT-TYPE
              SYNTAX       TestAndIncr
              MAX-ACCESS   read-write
              STATUS       current
              DESCRIPTION
                 "The diffServQueueUnique diffServQMeasureUnique object yields a unique new
                 value for diffServQueueNumber diffServQMeasureId when read and subsequently
                 set. This value must be tested for uniqueness."
              ::= { diffServObjects 5 10 }

	  -- The Queue Table allows us to describe queues

	  diffServQueueTable

          diffServQMeasureTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DiffServQueueEntry DiffServQMeasureEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Queue Measurement Table enumerates the queues	on an interface.
		 Queues	are used to store traffic during intervals when
		 the arrival rate exceeds the departure	rate for a class
		 of traffic. Because some PHBs indicate	that contains entries
                 describing the use state of
		 a priority queue may be advisable, each queue in this
		 system	is seen	as having a priority. Those queues that
		 share the same	priority operate in what may externally
		 appear	to be a	Weighted Round Robin manner, and preempt
		 the traffic belonging to any lower priority. For this
		 reason, it is strongly	urged that traffic placed into
		 prioritized queues be strongly	policed	to avoid traffic
		 lockout.

		 Queues	in this	table also have	a minimum and a	maximum
		 rate.	When a maximum rate is specified, the queue acts
		 as a shaper if	it has sufficient traffic and capacity
		 is available.	If it is a minimum rate, then the weight
		 in the	WRR is effectively set to queues, this rate divided by
		 the sum of the	rates of queues	on the interface,
		 guaranteeing it at least that throughput rate.	If it is
		 a maximum rate, the queue operates as a shaper. A
		 shaper	potentially reduces the	rate of include states for
                 implementing traffic	through
		 it to treatment algorithms.  Notice
                 multiple queue measurement entries for the indicated rate, and minimizes variations in
		 rate." same queue
                 is allowed."
              ::= { diffServTables 6 10 }

	  Draft		   Differentiated Services MIB	    October 1999

	  diffServQueueEntry

          diffServQMeasureEntry OBJECT-TYPE
              SYNTAX	   DiffServQueueEntry       DiffServQMeasureEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the Queue Measure Table describes a single FIFO
                 set of measurement for a specific queue."
              INDEX { ifIndex, diffServInterfaceDirection,
		      diffServQueueNumber diffServQMeasureQId, diffServQMeasureId }
              ::= { diffServQueueTable diffServQMeasureTable 1 }

	  DiffServQueueEntry

          DiffServQMeasureEntry ::= SEQUENCE  {
	      diffServQueueNumber    INTEGER,
	      diffServQueueMinimumRate
              diffServQMeasureId               Unsigned32,
	      diffServQueueMaximumRate
              diffServQMeasureQId              Unsigned32,
	      diffServQueuePriority
              diffServQMeasureAvgSampleInt     Unsigned32,
	      diffServQueueNextTCB   RowPointer,
	      diffServQueueOccupancyWeight
              diffServQMeasureAvgWeightExp     Unsigned32,
	      diffServQueueStatus
              diffServQMeasureAvgWeightMan     Unsigned32,
              diffServQMeasureQAverage         Unsigned32,
              diffServQMeasureStatus           RowStatus
          }

	  diffServQueueNumber

          diffServQMeasureId OBJECT-TYPE
              SYNTAX	   INTEGER       Unsigned32 (1..2147483647)
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The number of Queue Measure Id enumerates the queue." Queue Measure
                 entry."
              ::= { diffServQueueEntry diffServQMeasureEntry 1 }

	  diffServQueueMinimumRate

          diffServQMeasureQId OBJECT-TYPE
              SYNTAX       Unsigned32
	      UNITS	   "KBPS" (1..2147483647)
              MAX-ACCESS   read-create   not-accessible
              STATUS       current
              DESCRIPTION
		 "The rate of the queue, in kilobits per second	(KBPS).
		 This unit is chosen because interfaces	exist at the
		 time of this writing which exceed the number of bits
		 per second which may be represented in	a 32 bit number.

		 If the	value is zero, then there is effectively no
		 minimum rate. If the value is non-zero,
                 "Indicates the queue set
		 will seek to assure this class	of traffic at least this
		 rate." measurement is associated
                 with."
              ::= { diffServQueueEntry diffServQMeasureEntry 2 }

	  diffServQueueMaximumRate

          diffServQMeasureAvgSampleInt OBJECT-TYPE

	  Draft		   Differentiated Services MIB	    October 1999
              SYNTAX       Unsigned32
	      UNITS	   "KBPS"
              UNIT         millisecond
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The rate of the queue, sampling interval for queue average calculation,
                 in kilobits per second	(KBPS).
		 This unit is chosen because interfaces	exist at the
		 time of milliseconds.  For queue sampling based on packet
                 enqueueing or dequeueing intervals, this writing which exceed the number of bits
		 per second which may be represented in	a 32 bit number.

		 If the	value is zero, then there is effectively no
		 maximum rate. If attribute
                 should contain the value is non-zero, the queue set
		 will seek to assure this class of traffic at most this
		 rate." zero."
              ::= { diffServQueueEntry diffServQMeasureEntry 3 }

	  diffServQueuePriority

          diffServQMeasureAvgWeightExp OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
	      DESCRIPTION
                 "The priority exponent part of the queue. If	multiple queues	exist on
		 the same interface at the same	priority, they are
		 effectively given Weighted Round Robin	service. If
		 multiple priorities are configured on an interface,
		 traffic with a	numerically higher priority weight (in real number format)
                 for queue average calculation.  This is
		 deemed a base 10
                 exponent, with the attribute representing a negative
                 value.  For example, with 8 in this attribute meaning
                 10 to have	higher priority	than other traffic, and
		 is preemptively serviced." the power of -8.  An 8 bit value here will be
                 sufficient."
              ::= { diffServQueueEntry diffServQMeasureEntry 4 }

	  diffServQueueNextTCB

          diffServQMeasureAvgWeightMan OBJECT-TYPE
              SYNTAX	   RowPointer       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
	      DESCRIPTION
                 "The 'Next' pointer selects the successor TCB on the
		 interface.  Incoming traffic may use the value
		 zeroDotZero in	this variable to indicate that the
		 packet	is now to be routed; outbound traffic may use
		 the same value	to indicate that no subsequent queuing
		 applies.  Ingress interfaces generally	use queuing
		 either	to divert routing traffic mantissa part of weight (in real number format)
                 for speedier
		 processing during queue average calculation.  Always a flap, or for shaping purposes."
	      DEFVAL	  { zeroDotZero	} positive
                 number.  Need 16 bits of accuracy."
              ::= { diffServQueueEntry diffServQMeasureEntry 5 }

	  diffServQueueOccupancyWeight

          diffServQMeasureQAverage OBJECT-TYPE

	  Draft		   Differentiated Services MIB	    October 1999
              SYNTAX       Unsigned32
              UNITS        kilo-bits
              MAX-ACCESS   read-create   read-only
              STATUS       current
	      DESCRIPTION
                 "The amount, in the form of a factor, that the	current,
		 actual	queue occupancy	should influence the averaged
		 queue occupancy.  The averaged	queue occupancy	can be
		 used for comparison to	configured drop	thresholds in
		 RED or	RED-like dropper implementations.  Larger the
		 weight, the greater the instantaneous queue occupancy
		 influences the	averaged queue occupancy.  Usually,
		 dramatic changes in the instantaneous current queue occupancy
		 is the	result of bursty input streams.	 Notice	this
		 numeric attribute is divided by 10,000	to get the
		 effective fractional factor used average in the actual
		 calculations." kilo bits."
              ::= { diffServQueueEntry diffServQMeasureEntry 6 }

	  diffServQueueStatus

          diffServQMeasureStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the activation,
                 deactivation, or deletion of a queue. Any writable
                 variable may be modified whether the row is active or
                 notInService."
              ::= { diffServQueueEntry diffServQMeasureEntry 7 }

	  Draft		   Differentiated Services MIB	    October 1999
          -- MIB Compliance statements. Three variations of
          -- compliance are described, for optical, LAN, and low speed
          -- interfaces.  The difference is the implementation of
          -- diffServActionHCConformingOctets diffServActionOctetsHCnt, diffServActionPktsHCnt
          -- and diffServActionHCConformingPackets diffServCountActOctetsHCnt, diffServCountActPktsHCnt.

          diffServMIBCompliances OBJECT IDENTIFIER ::= { diffServMIBConformance 1 }
          diffServMIBGroups      OBJECT IDENTIFIER ::= { diffServMIBConformance 2 }

          diffServMIBCompliance MODULE-COMPLIANCE
              STATUS current
              DESCRIPTION
                 "This MIB may be implemented as a read-only or as a
                 read-create MIB. As a result, it may be used for
                 monitoring or for configuration.

                 Standard compliance implies that the implementation
                 complies for interfaces for which an interface's octet
                 counter might wrap at most once an hour, which by the
                 IFMIB's convention applies to interfaces under 20 MBPS.
                 It thus applies to any device which might implement a
                 low speed serial line, Ethernet, Token Ring."
              MODULE -- This Module
              MANDATORY-GROUPS {
                  diffServMIBClassifierGroup, diffServMIBMeterGroup,
                  diffServMIBQueueGroup, diffServMIBActionGroup

                  -- note that diffServMIBHCCounterGroup is
                  -- mandatory for medium and high speed interfaces

                  -- note that diffServMIBVHCCounterGroup is
                  -- mandatory for high speed interfaces

                  -- note that the diffServMIBStaticGroup is
                  -- mandatory for implementations that implement a
                  -- read-write or read-create mode.
              }

              GROUP diffServMIBHCCounterGroup
              DESCRIPTION
                 "This group is mandatory for those network interfaces
                 for which the value of the corresponding instance of
                 ifSpeed is greater than 20,000,000 bits/second."

              GROUP diffServMIBVHCCounterGroup
              DESCRIPTION
                 "This group is mandatory for those network interfaces

	  Draft		   Differentiated Services MIB	    October 1999
                 for which the value of the corresponding instance of
                 ifSpeed is greater than 650,000,000 bits/second."

              OBJECT diffServClassifierMatchObject
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierSequence
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterInterval
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterBurstSize
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterFailNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterSucceedNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

	  Draft		   Differentiated Services MIB	    October 1999
              OBJECT diffServActionNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDSCP
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionMinThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionMaxThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDropPolicy
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMinimumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMaximumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueuePriority
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueNextTCB
              MIN-ACCESS read-only

	  Draft		   Differentiated Services MIB	    October 1999
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."
              ::= { diffServMIBCompliances 1 }

	  Draft		   Differentiated Services MIB	    October 1999
          diffServMIBVHCCompliance MODULE-COMPLIANCE
              STATUS current
              DESCRIPTION
                 "This MIB may be implemented as a read-only or as a
                 read-create MIB. As a result, it may be used for
                 monitoring or for configuration.

                 Very High Speed compliance implies that the
                 implementation complies for interfaces for which an
                 interface's packet or octet counters might wrap more
                 than once an hour, which by the IFMIB's convention
                 applies to interfaces over 650 MBPS, or OC-12."
              MODULE -- This Module
              MANDATORY-GROUPS {
                  diffServMIBClassifierGroup, diffServMIBMeterGroup,
                  diffServMIBQueueGroup, diffServMIBHCCounterGroup,
                  diffServMIBVHCCounterGroup, diffServMIBActionGroup

                  -- note that the diffServMIBStaticGroup is
                  -- mandatory for implementations that implement a
                  -- read-write or read-create mode.
              }

              OBJECT diffServClassifierMatchObject
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierSequence
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterInterval
              MIN-ACCESS read-only
              DESCRIPTION

	  Draft		   Differentiated Services MIB	    October 1999
                 "Write access is not required."

              OBJECT diffServTBMeterBurstSize
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterFailNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterSucceedNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDSCP
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionMinThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionMaxThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDropPolicy
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

	  Draft		   Differentiated Services MIB	    October 1999
              OBJECT diffServActionStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMinimumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMaximumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueuePriority
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueNextTCB
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."
              ::= { diffServMIBCompliances 2 }

	  Draft		   Differentiated Services MIB	    October 1999
          diffServMIBHCCompliance MODULE-COMPLIANCE
              STATUS current
              DESCRIPTION
                 "This MIB may be implemented as a read-only or as a
                 read-create MIB. As a result, it may be used for
                 monitoring or for configuration.

                 High Speed compliance implies that the implementation
                 complies for interfaces for which an interface's octet
                 counters might wrap more than once an hour, which by
                 the IFMIB's convention applies to interfaces over 20
                 MBPS, but under 650 MBPS.  It thus applies to devices
                 which implement a 100 MBPS Ethernet, FDDI, E3, DS3, or
                 SONET/SDH interface up to OC-12."
              MODULE -- This Module
              MANDATORY-GROUPS {
                  diffServMIBClassifierGroup, diffServMIBMeterGroup,
                  diffServMIBQueueGroup, diffServMIBHCCounterGroup,
                  diffServMIBActionGroup

                  -- note that diffServMIBVHCCounterGroup is
                  -- mandatory for high speed interfaces

                  -- note that the diffServMIBStaticGroup is
                  -- mandatory for implementations that implement a
                  -- read-write or read-create mode.
              }

              GROUP diffServMIBVHCCounterGroup
              DESCRIPTION
                 "This group is mandatory for those network interfaces
                 for which the value of the corresponding instance of
                 ifSpeed is greater than 650,000,000 bits/second."

              OBJECT diffServClassifierMatchObject
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServClassifierSequence
              MIN-ACCESS read-only
              DESCRIPTION

	  Draft		   Differentiated Services MIB	    October 1999
                 "Write access is not required."

              OBJECT diffServClassifierStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterInterval
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterBurstSize
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterFailNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterSucceedNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServTBMeterStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionNext
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDSCP
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionMinThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

	  Draft		   Differentiated Services MIB	    October 1999
              OBJECT diffServActionMaxThreshold
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionDropPolicy
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServActionStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMinimumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueMaximumRate
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueuePriority
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueNextTCB
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."

              OBJECT diffServQueueStatus
              MIN-ACCESS read-only
              DESCRIPTION
                 "Write access is not required."
              ::= { diffServMIBCompliances 3 }

	  Draft		   Differentiated Services MIB	    October 1999
          diffServMIBClassifierGroup OBJECT-GROUP
              OBJECTS {
                  diffServAggregateDSCP,
                  diffServClassifierMatchObject,
                  diffServClassifierNext,
                  diffServClassifierSequence,
                  diffServClassifierStatus
              }
              STATUS current
              DESCRIPTION
                 "The Classifier Group defines the MIB Objects that
                 describe a classifier."
              ::= { diffServMIBGroups 1 }

          diffServMIBMeterGroup OBJECT-GROUP
              OBJECTS {
                  diffServTBMeterInterval, diffServTBMeterBurstSize,
                  diffServTBMeterSucceedNext, diffServTBMeterFailNext,
                  diffServTBMeterStatus
              }
              STATUS current
              DESCRIPTION
                 "The Meter Group defines the objects used in describing
                 a meter."
              ::= { diffServMIBGroups 2 }

          diffServMIBActionGroup OBJECT-GROUP
              OBJECTS {
                  diffServActionDropPolicy,
                  diffServActionRandomDrops,
                  diffServActionTailDrops,
                  diffServActionMinThreshold,
                  diffServActionMaxThreshold, diffServActionDSCP,
                  diffServActionNext,
                  diffServActionConformingPackets,
                  diffServActionConformingOctets,
                  diffServActionStatus
              }
              STATUS current
              DESCRIPTION
                 "The Action Group defines the objects used in
                 describing an action."
              ::= { diffServMIBGroups 3 }

          diffServMIBHCCounterGroup OBJECT-GROUP
              OBJECTS {
                  diffServActionHCConformingOctets

	  Draft		   Differentiated Services MIB	    October 1999
              }
              STATUS current
              DESCRIPTION
                 "At 20,000,000 bits per second or greater, the number
                 of octets a given class may count can overflow a 32 bit
                 counter in under an hour.  Therefore, by convention
                 established in the IFMIB, the 64 bit counter must be
                 implemented as well."
              ::= { diffServMIBGroups 4 }

          diffServMIBVHCCounterGroup OBJECT-GROUP
              OBJECTS {
                  diffServActionHCConformingPackets,
                  diffServActionHCRandomDrops,
                  diffServActionHCTailDrops
              }
              STATUS current
              DESCRIPTION
                 "At 650,000,000 bits per second or greater, the number
                 of packets a given class may count can overflow a 32
                 bit counter in under an hour.  Therefore, by convention
                 established in the IFMIB, the 64 bit counter must be
                 implemented as well."
              ::= { diffServMIBGroups 5 }

          diffServMIBQueueGroup OBJECT-GROUP
              OBJECTS {
                  diffServQueueMinimumRate,
                  diffServQueueMaximumRate,
                  diffServQueuePriority, diffServQueueStatus,
                  diffServQueueNextTCB
              }
              STATUS current
              DESCRIPTION
                 "The Queue Group contains the objects that describe an
                 interface's queues."
              ::= { diffServMIBGroups 6 }

          diffServMIBStaticGroup OBJECT-GROUP
              OBJECTS {
                  diffServClassifierUnique, diffServTBMeterUnique,
                  diffServQueueUnique, diffServActionUnique
              }
              STATUS current
              DESCRIPTION
                 "The Static Group contains scalar objects used in
                 creating unique enumerations for classifiers, meters,

	  Draft		   Differentiated Services MIB	    October 1999
                 and queues."
              ::= { diffServMIBGroups 7 }
          END

	  Draft		   Differentiated Services MIB	    October 1999
          5.  Acknowledgments

          This MIB has been developed with active involvement from a
          number of sources, but most notably Yoram Bernet, Steve Blake,
          Brian Carpenter, Kwok Chan, Dave Durham, Jeremy Greene, Roch
          Guerin, Scott Hahn, Keith McCloghrie, Kathleen Nichols, Ping
          Pan, Andrew Smith, and Bert Wijnen.

          6.  Security Considerations

          It is clear that this MIB is potentially useful for
          configuration, and anything that can be configured can be
          misconfigured, with potentially disastrous effect.

          At this writing, no security holes have been identified beyond
          those that SNMP Security is itself intended to address. These
          relate to primarily controlled access to sensitive information
          and the ability to configure a device - or which might result
          from operator error, which is beyond the scope of any security
          architecture.

          There are a number of management objects defined in this MIB
          that have a MAX-ACCESS clause of read-write and/or read-
          create. Such objects may be considered sensitive or vulnerable
          in some network environments.  The support for SET operations
          in a non-secure environment without proper protection can have
          a negative effect on network operations. The use of SNMP
          Version 3 is recommended over prior versions, for
          configuration control, as its security model is improved.

          There are a number of managed objects in this MIB that may
          contain information that may be sensitive from a business
          perspective, in that they may represent a customer's service
          contract or the filters that the service provider chooses to
          apply to a customer's ingress or egress traffic. There are no
          objects which are sensitive in their own right, such as
          passwords or monetary amounts.

          It may be important to control even GET access to these
          objects and possibly to even encrypt the values of these
          object when sending them over the network via SNMP.  Not all
          versions of SNMP provide features for such a secure
          environment.

	  Draft		   Differentiated Services MIB	    October 1999

          7.  References

          [1]  Harrington, D., Presuhn, R., and B. Wijnen, "An
               Architecture for Describing SNMP Management Frameworks",
               RFC 2571, Cabletron Systems, Inc., BMC Software, Inc.,
	       IBM T. J. Watson	Research, April	1999
          [2]  Rose, M., and K. McCloghrie, "Structure and
               Identification of Management Information for TCP/IP-based
               Internets", RFC 1155, STD 16, Performance Systems
          [3]  Rose, M., and K. McCloghrie, "Concise MIB Definitions",
               RFC 1212, STD 16, Performance Systems International,
          [4]  M. Rose, "A Convention for Defining Traps for use with
               the SNMP", RFC 1215, Performance Systems International,
          [5]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M., and S. Waldbusser, "Structure of Management
               Information Version 2 (SMIv2)", RFC 2578, STD 58, Cisco
               Systems, SNMPinfo, TU Braunschweig, SNMP Research, First
               Virtual Holdings, International Network Services, April
               1999

          [6]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M., and S. Waldbusser, "Textual Conventions for
               SMIv2", RFC 2579, STD 58, Cisco Systems, SNMPinfo, TU
               Braunschweig, SNMP Research, First Virtual Holdings,
          [7]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M., and S. Waldbusser, "Conformance Statements for
               SMIv2", RFC 2580, STD 58, Cisco Systems, SNMPinfo, TU
               Braunschweig, SNMP Research, First Virtual Holdings,
          [8]  Case, J., Fedor, M., Schoffstall, M., and J. Davin,
               "Simple Network Management Protocol", RFC 1157, STD 15,
               SNMP Research, Performance Systems International,
               Performance Systems International, MIT Laboratory for
               Computer Science, May 1990.

          [9]  Case, J., McCloghrie, K., Rose, M., and S. Waldbusser,
               "Introduction to Community-based SNMPv2", RFC 1901, SNMP

	  Draft		   Differentiated Services MIB	    October 1999
               Research, Inc., Cisco Systems, Inc., Dover Beach
               Consulting, Inc., International Network Services, January
               1996.

          [10] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser,
               "Transport Mappings for Version 2 of the Simple Network
               Management Protocol (SNMPv2)", RFC 1906, SNMP Research,
               Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
               International Network Services, January 1996.

          [11] Case, J., Harrington D., Presuhn R., and B. Wijnen,
               "Message Processing and Dispatching for the Simple
               Network Management Protocol (SNMP)", RFC 2572, SNMP
               Research, Inc., Cabletron Systems, Inc., BMC Software,
          [12] Blumenthal, U., and B. Wijnen, "User-based Security Model
               (USM) for version 3 of the Simple Network Management
               Protocol (SNMPv3)", RFC 2574, IBM T. J. Watson Research,
          [13] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser,
               "Protocol Operations for Version 2 of the Simple Network
               Management Protocol (SNMPv2)", RFC 1905, SNMP Research,
               Inc., Cisco Systems, Inc., Dover Beach Consulting, Inc.,
               International Network Services, January 1996.

          [14] Levi, D., Meyer, P., and B. Stewart, "SNMPv3
               Applications", RFC 2573, SNMP Research, Inc., Secure
          [15] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based
               Access Control Model (VACM) for the Simple Network
               Management Protocol (SNMP)", RFC 2575, IBM T. J. Watson
               Research, BMC Software, Inc., Cisco Systems, Inc., April
               1999

          [16] Case, J., Mundy, R., Partain, D., and B. Stewart,
               "Introduction to Version 3 of the Internet-standard
               Network Management Framework", RFC 2570, SNMP Research,
               Inc., TIS Labs at Network Associates, Inc., Ericsson,
          [DSCP]
               K. Nichols, S. Blake, F. Baker, D. Black, "Definition of
               the Differentiated Services Field (DS Field) in the IPv4
               and IPv6 Headers." RFC 2474, December 1998.

	  Draft		   Differentiated Services MIB	    October 1999

          [Architecture]
               S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W.
               Weiss, "An Architecture for Differentiated Service." RFC
               2475, December 1998.

          [AF] J. Heinanen, F. Baker, W. Weiss, J.  Wroclawski, "Assured
               Forwarding PHB Group." RFC 2597, June 1999.

          [EF] V. Jacobson, K. Nichols, K. Poduri.  "An Expedited
               Forwarding PHB." RFC 2598, June 1999.

          [Model]
               Bernet et al, "A Conceptual Model for Diffserv Routers",
	       06/25/1999, draft-ietf-diffserv-model-00.txt
               March 2000, draft-ietf-diffserv-model-02.txt

          [IFMIB]
               K. McCloghrie, F.  Kastenholz.  "The Interfaces Group MIB
               using SMIv2", Request for Comments 2233, November 1997.

          [DSPIB]
               M. Fine, K. McCloghrie, J. Seligson, K. Chan, S. Hahn, A.
               Smith "Differentiated Services Policy Information Base",
               March 2000, draft-ietf-diffserv-pib-00.txt

          [INETADDRESS]
               Daniele, M., Haberman, B., Routhier, S., Schoenwaelder,
               J.  "Textual Conventions for Internet Network
               Addresses.", February 17, 2000, draft-ops-endpoint-mib-
               07.txt

          [ActQMgmt]
               V. Firoiu, M. Borden "A Study of Active Queue Management
               for Congestion Control", March 2000, In IEEE Infocom
               2000, http://www.ieee-infocom.org/2000/papers/405.pdf

          8.  Authors'  Addresses:

                 Fred Baker
                 519 Lado Drive
                 Santa Barbara, California 93111
                 fred@cisco.com

                 Kwok Ho Chan
                 Nortel Networks
                 600 Technology Park Drive
                 Billerica, MA 01821
                 khchan@nortelnetworks.com
                 Andrew Smith
                 Extreme Networks
                 3585 Monroe Street
                 Santa Clara, CA 95051
                 USA
                 andrew@extremenetworks.com