Fred Baker


    Draft                Differentiated Services MIB         June 1999

                       Management Information Base for the
                       Differentiated Services Architecture

                         draft-baker-diffserv-mib-00.txt

                                     Abstract

          This memo describes a proposed MIB for the Differentiated
          Services Architecture.

          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
          Diffferentiated 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

          Fred Baker        Expiration: December 1999           [Page 1]

          Draft            Differentiated Services MIB         June 1999

          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
                  (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

          Fred Baker        Expiration: December 1999           [Page 2]

          Draft            Differentiated Services MIB         June 1999

                  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.

          Fred Baker        Expiration: December 1999           [Page 3]

          Draft            Differentiated Services MIB         June 1999

          3.  Structure of this MIB

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

          3.1.  Overview

          In principle, if one were to construct a network 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 it is within or outside its
            intended 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.

          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, and to admit that 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 five elements:
          - Behavior Aggregate Classification Table
          - Classifier Table
          - Meter Table
          - Actions (which are found in the Meter Table)
          - Queue Table

          Fred Baker        Expiration: December 1999           [Page 4]

          Draft            Differentiated Services MIB         June 1999

          3.2.  Behavior Aggregate Classification Table

          The Behavior Aggregate Classification Table is present for
          several reasons.  First, the DSCP must be identified somewhere
          for the purpose of 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 because 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, 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 an
          instanced Object Identifier, we enable the use of any sort of
          classification table that one might wish to design - and that
          classifier table need not be found in this MIB.

          3.3.  Classifier Table

          The classifier table, now, indicates how traffic is sorted
          out. It identifies separable classes of traffic, by reference
          to an appropriate classifier, from individual micro-flows to
          aggregates identified by DSCP.  It then sends these classified
          streams to an appropriate meter.

          An important form of classifier is "everything else".

          3.4.  Meter Table

          A meter, according to the conceptual model, measures the rate
          at which a stream of traffic passes it and compares it to some
          threshold. 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.

          Multiple classes of traffic, as identified by the classifier
          table, may be presented to the same meter. For example, if it
          is desired to drop all traffic which 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 matches that meter.

          Clearly, it is necessary to identify what is to be done with

          Fred Baker        Expiration: December 1999           [Page 5]

          Draft            Differentiated Services MIB         June 1999

          messages which conform to the meter's limit, 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 which always matches, we
          now have the necessary flexibility.

          3.5.  Actions (which are found in the Meter 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
          "shape the traffic.  In this MIB, two actions are
          contemplated: marking the traffic, and applying a drop policy.
          The author notes that marking the traffic with the same DSCP s
          it already has has no effect, and all traffic must expect to
          come up against some drop policy.

          Also found in the Meter Table are counters that record how
          much traffic conformed to the given meter and therefore
          received the configured actions, and how much was dropped as a
          result of the configured drop policy.

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

          3.6.  Queue Table

          In this version of the MIB, a relatively simple queue is
          envisaged which places some form of Class Weighted Round Robin
          to one or more sets of queues, each of which enjoys preemptive
          priority over lower numbered priorities of queue sets.  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 as a non-work-conserving or
          "shaping" queue.

          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.

          Fred Baker        Expiration: December 1999           [Page 6]

          Draft            Differentiated Services MIB         June 1999

          Some discussion has elapsed concerning the structure of the
          queue in question, and its functions.  It is expected that the
          description of the queuing system will grow during working
          group discussion, as this is an area where vendors differ
          markedly in their architectures.

          Fred Baker        Expiration: December 1999           [Page 7]

          Draft            Differentiated Services MIB         June 1999

          4.  MIB Definition

          DIFF-SERV-MIB DEFINITIONS ::= BEGIN

              IMPORTS
              transmission, Unsigned32, Counter32, Counter64, OBJECT-TYPE,
              MODULE-IDENTITY                              FROM SNMPv2-SMI
              TEXTUAL-CONVENTION, RowStatus, TruthValue, RowPointer,
              TestAndIncr                                  FROM SNMPv2-TC
              MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF
              ifIndex                                      FROM IF-MIB;

          diffServMib MODULE-IDENTITY
              LAST-UPDATED "9906250138Z" -- Fri Jun 25 01:38:49 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"
              DESCRIPTION
                 "This MIB defines the objects necessary to manage a
                 device that uses the Differentiated Services
                 Architecture described in RFC 2475."
              ::= { transmission 12345 }

          dsObjects OBJECT IDENTIFIER ::= { diffServMib 1 }
          dsTables OBJECT IDENTIFIER ::= { diffServMib 2 }
          dsConform OBJECT IDENTIFIER ::= { diffServMib 3 }
          diffServMibCompliance OBJECT IDENTIFIER ::= { dsMib 4 }
          dsGroups OBJECT IDENTIFIER ::= { diffServMib 5 }

          Fred Baker        Expiration: December 1999           [Page 8]

          Draft            Differentiated Services MIB         June 1999

          -- The tools necessary to perform basic Behavior Aggregate
          -- Classification
          --
          Dscp ::= TEXTUAL-CONVENTION
              DISPLAY-HINT "d"
              STATUS   current
              DESCRIPTION
                 "The code point used for discriminating a traffic
                 stream."
              SYNTAX   INTEGER (0..63)

          dsAggregateTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DsAggregateEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The 'Aggregate' Table enumerates Behavior Aggregate
                 classifiers (DSCPs) that a system may identify traffic
                 using."
              ::= { dsTables 1 }

          dsAggregateEntry OBJECT-TYPE
              SYNTAX       DsAggregateEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "A 'aggregate' entry describes a single BA classifier."
              INDEX { dsAggregateDSCP }
              ::= { dsAggregateTable 1 }

          DsAggregateEntry ::= SEQUENCE  {
              dsAggregateDSCP         Dscp
          }

          dsAggregateDSCP OBJECT-TYPE
              SYNTAX       Dscp
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "This is the Differentiated Services Code Point (DSCP)
                 for the classifier. This is used only as a RowPointer
                 in the dsClassifierMFPointer, and is not actually
                 configured to changed."
              ::= { dsAggregateEntry 1 }

          Fred Baker        Expiration: December 1999           [Page 9]

          Draft            Differentiated Services MIB         June 1999

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

          dsClassifierUnique OBJECT-TYPE
              SYNTAX       TestAndIncrement
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The dsClassifierUnique object yields a unique new
                 value for dsClassifierNumber when read."
              ::= { dsObjects 1 }

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

          dsClassifierTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DsClassifierEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The classifier table enumerates specific classifiers
                 that a system may apply, including Differentiated
                 Services Code Points (DSCPs) and Multi-field
                 discriminators such as {Source IP Address, Destination
                 IP Address, IP Protocol, Source TCP/UDP Port,
                 Destination TCP/UDP Port)."
              ::= { dsTables 2 }

          dsClassifierEntry OBJECT-TYPE
              SYNTAX       DsClassifierEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the classifier table describes a single
                 classifier."
              INDEX { ifIndex, dsInterfaceDirection, dsClassifierNumber }
              ::= { dsClassifierTable 1 }

          DsClassifierEntry ::= SEQUENCE  {
              dsInterfaceDirection     INTEGER,
              dsClassifierNumber       Unsigned32,
              dsClassifierMFPointer    RowPointer,
              dsClassifierMeterNumber  Unsigned32,
              dsClassifierStatus       RowStatus
          }

          Fred Baker        Expiration: December 1999          [Page 10]

          Draft            Differentiated Services MIB         June 1999

          dsInterfaceDirection 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."
              ::= { dsClassifierEntry 1 }

          dsClassifierNumber OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "Number enumerates the classifier entry."
              ::= { dsClassifierEntry 2 }

          dsClassifierMFPointer OBJECT-TYPE
              SYNTAX        RowPointer
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "A pointer to the row that describes the applicable
                 classifier. An obvious choice would be the
                 dsAggregateEntry for a given DSCP, but other choices
                 include tables describing any classifier that may be of
                 interest.

                 The NULL OID { 0 0 } is interpreted to match anything
                 not matched by another classifier."
              ::= { dsClassifierEntry 3 }

          dsClassifierMeterNumber OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The Meter Number selects the Meter Entry that will
                 govern the rate-limited acceptance of traffic of this
                 type."
              ::= { dsClassifierEntry 4 }

          Fred Baker        Expiration: December 1999          [Page 11]

          Draft            Differentiated Services MIB         June 1999

          dsClassifierStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the reading, writing,
                 enabling, and disabling of a classifier entry."
              ::= { dsClassifierEntry 5 }

          Fred Baker        Expiration: December 1999          [Page 12]

          Draft            Differentiated Services MIB         June 1999

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

          dsMeterUnique OBJECT-TYPE
              SYNTAX       TestAndIncrement
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The dsMeterUnique object yields a unique new value for
                 dsMeterNumber when read."
              ::= { dsObjects 2 }

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

          dsMeterTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DsMeterEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Meter Table enumerates specific meters that a
                 system may apply to a stream of classified traffic.
                 Such 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 model requires all traffic to pass
                 through one or more meters, and that the last meter
                 configured in such a sequence must always conform.

                 Counters in this table start counting on creation of
                 the meter that specifies their existence."
              ::= { dsTables 3 }

          dsMeterEntry OBJECT-TYPE
              SYNTAX       DsMeterEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "An entry in the meter table describes a single 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 meter be needed in a given
                 Per-Hop Behavior. An example of such a PHB is AF."
              INDEX {  ifIndex, dsInterfaceDirection, dsMeterNumber  }

          Fred Baker        Expiration: December 1999          [Page 13]

          Draft            Differentiated Services MIB         June 1999

              ::= { dsMeterTable 1 }

          DsMeterEntry ::= SEQUENCE  {
              dsMeterNumber            Unsigned32,
              dsMeterInterval          Unsigned32,
              dsMeterBurstSize         Unsigned32,
              dsMeterFailMeter         Unsigned32,
              dsMeterQueueNumber       Unsigned32,
              dsMeterDSCP              Dscp,
              dsMeterMinThreshold      Unsigned32,
              dsMeterMaxThreshold      Unsigned32,
              dsMeterAlwaysDrop        TruthValue,
              dsMeterAlwaysConform      TruthValue,
              dsMeterConformingPackets Counter32,
              dsMeterConformingOctets  Counter64,
              dsMeterTailDrops         Counter32,
              dsMeterRandomDrops       Counter32,
              dsMeterStatus            RowStatus
          }

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

          dsMeterInterval OBJECT-TYPE
              SYNTAX       Unsigned32
              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."
              ::= { dsMeterEntry 2 }

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

          Fred Baker        Expiration: December 1999          [Page 14]

          Draft            Differentiated Services MIB         June 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
                 the sum of their intervals per interval."
              ::= { dsMeterEntry 3 }

          dsMeterFailMeter OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "If the traffic does not conform to the meter, the
                 number of the next meter to enquire of. If Always-
                 Conform is true, this number must be zero, as no more
                 tests are necessary. If Always-Conform is false, this
                 number may not be zero, as there is some possibility
                 that the test will fail."
              ::= { dsMeterEntry 4 }

          dsMeterQueueNumber OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The Queue Number selects which queue on the interface
                 that a message is placed into. Incoming traffic may use
                 the value zero 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."
              ::= { dsMeterEntry 5 }

          dsMeterDSCP OBJECT-TYPE
              SYNTAX       Dscp
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The DSCP that traffic conforming to this classifier
                 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."
              ::= { dsMeterEntry 6 }

          dsMeterMinThreshold OBJECT-TYPE
              SYNTAX       Unsigned32

          Fred Baker        Expiration: December 1999          [Page 15]

          Draft            Differentiated Services MIB         June 1999

              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The min-threshold is the queue depth that a random
                 drop process will seek to manage the queue's depth to."
              ::= { dsMeterEntry 7 }

          dsMeterMaxThreshold OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The max-threshold is the maximum permissible queue
                 depth. In tail drop scenarios, the queue will drop if a
                 packet is presented to it and it is instantaneously
                 full by this measure. In random drop scenarios, the
                 queue will drop if a packet is presented to it and the
                 average queue depth exceeds the max-threshold."
              ::= { dsMeterEntry 8 }

          dsMeterAlwaysDrop OBJECT-TYPE
              SYNTAX       TruthValue
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "If true, traffic conforming to this meter is always
                 dropped. In such a case, the drop controls are
                 ignored."
              ::= { dsMeterEntry 9 }

          dsMeterAlwaysConform OBJECT-TYPE
              SYNTAX       TruthValue
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "If true, the meter always accepts all traffic; its
                 rate is effectively infinite. In such a case, the token
                 bucket defined by the Interval and Burst-Size
                 parameters is ignored."
              ::= { dsMeterEntry 10 }

          dsMeterConformingPackets OBJECT-TYPE
              SYNTAX       Counter32
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The number of packets conforming to this meter."

          Fred Baker        Expiration: December 1999          [Page 16]

          Draft            Differentiated Services MIB         June 1999

              ::= { dsMeterEntry 11 }

          dsMeterConformingOctets OBJECT-TYPE
              SYNTAX       Counter64
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The number of octets conforming to this meter."
              ::= { dsMeterEntry 12 }

          dsMeterTailDrops OBJECT-TYPE
              SYNTAX       Counter32
              MAX-ACCESS   read-only
              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 the
                 max-threshold value."
              ::= { dsMeterEntry 13 }

          dsMeterRandomDrops OBJECT-TYPE
              SYNTAX       Counter32
              MAX-ACCESS   read-only
              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."
              ::= { dsMeterEntry 14 }

          dsMeterStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the reading, writing,
                 enabling, and disabling of a meter entry."
              ::= { dsMeterEntry 15 }

          Fred Baker        Expiration: December 1999          [Page 17]

          Draft            Differentiated Services MIB         June 1999

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

          dsQueueUnique OBJECT-TYPE
              SYNTAX       TestAndIncrement
              MAX-ACCESS   read-only
              STATUS       current
              DESCRIPTION
                 "The dsQueueUnique object yields a unique new value for
                 dsQueueNumber when read."
              ::= { dsObjects 3 }

          -- The Queue Table allows us to describe queues

          dsQueueTable OBJECT-TYPE
              SYNTAX       SEQUENCE OF DsQueueEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The Queue 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 the use 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 rate, which may be a
                 minimum or a maximum rate. If it is a minimum rate,
                 then the weight in the WRR is effectively set to 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, potentially reducing the rate of traffic
                 through it to the indicated rate."
              ::= { dsTables 4 }

          dsQueueEntry OBJECT-TYPE
              SYNTAX       DsQueueEntry
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION

          Fred Baker        Expiration: December 1999          [Page 18]

          Draft            Differentiated Services MIB         June 1999

                 "An entry in the Queue Table describes a single queue."
              INDEX {  ifIndex, dsInterfaceDirection, dsQueueNumber  }
              ::= { dsQueueTable 1 }

          DsQueueEntry ::= SEQUENCE  {
              dsQueueNumber    Unsigned32,
              dsQueueRate      Unsigned32,
              dsQueueType      INTEGER,
              dsQueuePriority  Unsigned32,
              dsQueueStatus    RowStatus
          }

          dsQueueNumber OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   not-accessible
              STATUS       current
              DESCRIPTION
                 "The number of the queue, used as a link from the Meter
                 Table to the Queue Table."
              ::= { dsQueueEntry 1 }

          dsQueueRate OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              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."
              ::= { dsQueueEntry 2 }

          dsQueueType OBJECT-TYPE
              SYNTAX       INTEGER {
                                  minimum(1), -- work-conserving queue
                                  maximum(2)  -- non-work-conserving queue
                           }
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "A queue guarantees its traffic, assuming ifSpeed is
                 properly configured or calculated, at least or at most
                 the rate in question. If the value 'minimum' is
                 selected, the queue is a work-conserving queue, and
                 guarantees at least the rate specified. If other queues
                 are not fully utilized, it may give a higher service

          Fred Baker        Expiration: December 1999          [Page 19]

          Draft            Differentiated Services MIB         June 1999

                 rate. If the value guarantees that its throughput will
                 not exceed that rate."
              ::= { dsQueueEntry 3 }

          dsQueuePriority OBJECT-TYPE
              SYNTAX       Unsigned32
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The priority 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 number is
                 deemed to have higher priority than other traffic, and
                 is preemptively serviced."
              ::= { dsQueueEntry 4 }

          dsQueueStatus OBJECT-TYPE
              SYNTAX       RowStatus
              MAX-ACCESS   read-create
              STATUS       current
              DESCRIPTION
                 "The RowStatus variable controls the reading, writing,
                 enabling, and disabling of a queue entry."
              ::= { dsQueueEntry 5 }

          dsCompliance 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."
              MODULE -- This Module
              MANDATORY-GROUPS {
                  dsClassifierGroup,
                  dsMeterGroup,
                  dsQueueGroup
                  -- note that the dsStaticGroup is not mandatory
              }

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

              OBJECT dsClassifierMFPointer

          Fred Baker        Expiration: December 1999          [Page 20]

          Draft            Differentiated Services MIB         June 1999

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

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

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

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

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

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

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

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

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

              OBJECT dsMeterDSCP
              MIN-ACCESS read-only
              DESCRIPTION

          Fred Baker        Expiration: December 1999          [Page 21]

          Draft            Differentiated Services MIB         June 1999

                 "Write access is not required."

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

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

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

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

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

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

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

              dsClassifierGroup OBJECT-GROUP
              OBJECTS {
                  dsAggregateDSCP, dsClassifierMFPointer,
                  dsClassifierMeterNumber, dsClassifierStatus
              }
              STATUS current
              DESCRIPTION
                 "The Classifier Group defines the MIB Objects that
                 describe a classifier."

          Fred Baker        Expiration: December 1999          [Page 22]

          Draft            Differentiated Services MIB         June 1999

              ::= { dsGroups 1 }

              dsMeterGroup OBJECT-GROUP
              OBJECTS {
                  dsMeterInterval, dsMeterBurstSize, dsMeterAlwaysConform,
                  dsMeterAlwaysDrop, dsMeterRandomDrops, dsMeterTailDrops,
                  dsMeterMinThreshold, dsMeterMaxThreshold, dsMeterDSCP,
                  dsMeterQueueNumber, dsMeterConformingPackets,
                  dsMeterConformingOctets, dsMeterFailMeter, dsMeterStatus
              }
              STATUS current
              DESCRIPTION
                 "The Meter Group defines the objects used in describing
                 a meter."
              ::= { dsGroups 2 }

              dsQueueGroup OBJECT-GROUP
              OBJECTS {
                  dsQueueRate, dsQueueType, dsQueuePriority, dsQueueStatus
              }
              STATUS current
              DESCRIPTION
                 "The Queue Group contains the objects that describe an
                 interface's queues."
              ::= { dsGroups 3 }

              dsStaticGroup OBJECT-GROUP
              OBJECTS {
                  dsClassifierUnique, dsMeterUnique, dsQueueUnique
              }
              STATUS current
              DESCRIPTION
                 "The Static Group contains scalar objects used in
                 creating unique enumerations for classifiers, meters,
                 and queues."
              ::= { dsGroups 4 }

          Fred Baker        Expiration: December 1999          [Page 23]

          Draft            Differentiated Services MIB         June 1999

          5.  Acknowledgments

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

          6.  Security Considerations

          This part remains to be filled in.

          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 which SNMP Security is itself intended to address -
          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.

          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
               International, Hughes LAN Systems, May 1990

          [3]  Rose, M., and K. McCloghrie, "Concise MIB Definitions",
               RFC 1212, STD 16, Performance Systems International,
               Hughes LAN Systems, March 1991

          [4]  M. Rose, "A Convention for Defining Traps for use with
               the SNMP", RFC 1215, Performance Systems International,
               March 1991

          [5]  McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J.,
               Rose, M., and S. Waldbusser, "Structure of Management

          Fred Baker        Expiration: December 1999          [Page 24]

          Draft            Differentiated Services MIB         June 1999

               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,
               International Network Services, April 1999

          [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,
               International Network Services, April 1999

          [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
               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,
               Inc., IBM T. J. Watson Research, April 1999

          [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,
               April 1999

          Fred Baker        Expiration: December 1999          [Page 25]

          Draft            Differentiated Services MIB         June 1999

          [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
               Computing Corporation, Cisco Systems, April 1999

          [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,
               Cisco Systems, April 1999

          [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.

          [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.

          [Framework]
               Bernet et al, "A Framework for Differentiated Services",
               03/01/1999, draft-ietf-diffserv-framework-02.txt

          8.  Author's  Address:
          Fred Baker
          519 Lado Drive
          Santa Barbara, California 93111
          fred.baker@cisco.com

          Fred Baker        Expiration: December 1999          [Page 26]

          Draft            Differentiated Services MIB         June 1999

          Fred Baker        Expiration: December 1999          [Page 27]