netconfcentral logo

DIFFSERV-MIB.yang



   module DIFFSERV-MIB {

      yang-version 1;

      namespace
         "urn:ietf:params:xml:ns:yang:smiv2:DIFFSERV-MIB";

      prefix "diffserv-mib";

      import DIFFSERV-DSCP-TC {
         prefix "diffserv-dscp";
      }
      import IF-MIB {
         prefix "if-mib";
      }
      import INET-ADDRESS-MIB {
         prefix "inet-address";
      }
      import INTEGRATED-SERVICES-MIB {
         prefix "integrated-services";
      }
      import SNMPv2-TC {
         prefix "smiv2";
      }
      import yang-smi {
         prefix "smi";
      }
      import ietf-yang-types {
         prefix "yang";
      }

      organization "IETF Differentiated Services WG";

      contact
         "       Fred Baker
         Cisco Systems
         1121 Via Del Rey
         Santa Barbara, CA 93117, USA
         E-mail: fred@cisco.com
         
         Kwok Ho Chan
         Nortel Networks
         600 Technology Park Drive
         Billerica, MA 01821, USA
         E-mail: khchan@nortelnetworks.com
         
         Andrew Smith
         Harbour Networks
         Jiuling Building
         
         
         21 North Xisanhuan Ave.
         Beijing, 100089, PRC
         E-mail: ah_smith@acm.org
         
         Differentiated Services Working Group:
         diffserv@ietf.org";

      description
         "This MIB defines the objects necessary to manage a device that
         uses the Differentiated Services Architecture described in RFC
         2475. The Conceptual Model of a Differentiated Services Router
         provides supporting information on how such a router is modeled.";

      revision "2002-02-07" {
         description
            "Initial version, published as RFC 3289.";
      }


      typedef IndexInteger {
         type uint32 {
            range "1..4294967295";
            smi:display-hint "d";
         }
         description
            "An integer which may be used as a table index.";
      }

      typedef IndexIntegerNextFree {
         type uint32 {
            range "0..4294967295";
            smi:display-hint "d";
         }
         description
            "An integer which may be used as a new Index in a table.
            
            The special value of 0 indicates that no more new entries can be
            created in the relevant table.
            
            When a MIB is used for configuration, an object with this SYNTAX
            always contains a legal value (if non-zero) for an index that is
            not currently used in the relevant table. The Command Generator
            (Network Management Application) reads this variable and uses the
            (non-zero) value read when creating a new row with an SNMP SET.
            When the SET is performed, the Command Responder (agent) must
            determine whether the value is indeed still unused; Two Network
            Management Applications may attempt to create a row
            (configuration entry) simultaneously and use the same value. If
            it is currently unused, the SET succeeds and the Command
            Responder (agent) changes the value of this object, according to
            an implementation-specific algorithm.  If the value is in use,
            
            
            
            however, the SET fails.  The Network Management Application must
            then re-read this variable to obtain a new usable value.
            
            An OBJECT-TYPE definition using this SYNTAX MUST specify the
            relevant table for which the object is providing this
            functionality.";
      }

      typedef IfDirection {
         type enumeration {
            enum "inbound" {
               value 1;
            }
            enum "outbound" {
               value 2;
            }
         }
         description
            "IfDirection specifies a direction of data travel on an
            interface. 'inbound' traffic is operated on during reception from
            the interface, while 'outbound' traffic is operated on prior to
            transmission on the interface.";
      }

      container diffServDataPath {
         list diffServDataPathEntry {
            key "ifIndex diffServDataPathIfDirection";
            description
               "An entry in the data path table indicates the start of a single
               Differentiated Services Functional Data Path in this device.
               
               These are associated with individual interfaces, logical or
               physical, and therefore are instantiated by ifIndex. Therefore,
               the interface index must have been assigned, according to the
               procedures applicable to that, before it can be meaningfully
               used. Generally, this means that the interface must exist.
               
               When diffServDataPathStorage is of type nonVolatile, however,
               this may reflect the configuration for an interface whose ifIndex
               has been assigned but for which the supporting implementation is
               not currently present.";
            leaf ifIndex {
               type leafref {
                  path
                     "/if-mib:interfaces/if-mib:ifEntry/if-mib:ifIndex";
               }
               description "Automagically generated leafref leaf.";
            }

            leaf diffServDataPathIfDirection {
               type IfDirection;
               description
                  "IfDirection specifies whether the reception or transmission path
                  for this interface is in view.";
               smi:oid "1.3.6.1.2.1.97.1.1.1.1.1";
            }

            leaf diffServDataPathStart {
               type smiv2:RowPointer;
               description
                  "This selects the first Differentiated Services Functional Data
                  Path Element to handle traffic for this data path. This
                  RowPointer should point to an instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                    diffServActionEntry
                    diffServAlgDropEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates that no
                  Differentiated Services treatment is performed on traffic of this
                  data path. A pointer with the value zeroDotZero normally
                  terminates a functional data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.1.1.1.2";
            }

            leaf diffServDataPathStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.1.1.1.3";
            }

            leaf diffServDataPathStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time.";
               smi:oid "1.3.6.1.2.1.97.1.1.1.1.4";
            }
            smi:oid "1.3.6.1.2.1.97.1.1.1.1";
         }  // list diffServDataPathEntry
         smi:oid "1.3.6.1.2.1.97.1.1";
      }  // container diffServDataPath

      container diffServClassifier {
         leaf diffServClfrNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServClfrId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.2.1";
         }

         list diffServClfrEntry {
            key "diffServClfrId";
            description
               "An entry in the classifier table describes a single classifier.
               All classifier elements belonging to the same classifier use the
               classifier's diffServClfrId as part of their index.";
            leaf diffServClfrId {
               type IndexInteger;
               description
                  "An index that enumerates the classifier entries.  Managers
                  should obtain new values for row creation in this table by
                  reading diffServClfrNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.2.2.1.1";
            }

            leaf diffServClfrStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.2.2.1.2";
            }

            leaf diffServClfrStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.2.2.1.3";
            }
            smi:oid "1.3.6.1.2.1.97.1.2.2.1";
         }  // list diffServClfrEntry

         leaf diffServClfrElementNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServClfrElementId,
               or a zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.2.3";
         }

         list diffServClfrElementEntry {
            key "diffServClfrId diffServClfrElementId";
            description
               "An entry in the classifier element table describes a single
               element of the classifier.";
            leaf diffServClfrId {
               type leafref {
                  path
                     "/diffserv-mib:diffServClassifier/diffserv-mib:diffServClfrEntry/diffserv-mib:diffServClfrId";
               }
               description "Automagically generated leafref leaf.";
            }

            leaf diffServClfrElementId {
               type IndexInteger;
               description
                  "An index that enumerates the Classifier Element entries.
                  Managers obtain new values for row creation in this table by
                  reading diffServClfrElementNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.1";
            }

            leaf diffServClfrElementPrecedence {
               type uint32 {
                  range "1..4294967295";
               }
               description
                  "The relative order in which classifier elements are applied:
                  higher numbers represent classifier element with higher
                  precedence.  Classifier elements with the same order must be
                  unambiguous i.e. they must define non-overlapping patterns, and
                  are considered to be applied simultaneously to the traffic
                  stream. Classifier elements with different order may overlap in
                  their filters:  the classifier element with the highest order
                  that matches is taken.
                  
                  On a given interface, there must be a complete classifier in
                  place at all times in the ingress direction.  This means one or
                  more filters must match any possible pattern. There is no such
                  
                  
                  
                  requirement in the egress direction.";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.2";
            }

            leaf diffServClfrElementNext {
               type smiv2:RowPointer;
               description
                  "This attribute provides one branch of the fan-out functionality
                  of a classifier described in the Informal Differentiated Services
                  Model section 4.1.
                  
                  This selects the next Differentiated Services Functional Data
                  Path Element to handle traffic for this data path. This
                  RowPointer should point to an instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                    diffServActionEntry
                    diffServAlgDropEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates no further
                  Differentiated Services treatment is performed on traffic of this
                  data path. The use of zeroDotZero is the normal usage for the
                  last functional data path element of the current data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.3";
            }

            leaf diffServClfrElementSpecific {
               type smiv2:RowPointer;
               description
                  "A pointer to a valid entry in another table, filter table, that
                  describes the applicable classification parameters, e.g. an entry
                  in diffServMultiFieldClfrTable.
                  
                  The value zeroDotZero is interpreted to match anything not
                  matched by another classifier element - only one such entry may
                  exist for each classifier.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  
                  
                  
                  becomes inactive by other means, the element is ignored.";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.4";
            }

            leaf diffServClfrElementStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.5";
            }

            leaf diffServClfrElementStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.2.4.1.6";
            }
            smi:oid "1.3.6.1.2.1.97.1.2.4.1";
         }  // list diffServClfrElementEntry

         leaf diffServMultiFieldClfrNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for
               diffServMultiFieldClfrId, or a zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.2.5";
         }

         list diffServMultiFieldClfrEntry {
            key "diffServMultiFieldClfrId";
            description
               "An IP Multi-field Classifier entry describes a single filter.";
            leaf diffServMultiFieldClfrId {
               type IndexInteger;
               description
                  "An index that enumerates the MultiField Classifier filter
                  entries.  Managers obtain new values for row creation in this
                  table by reading diffServMultiFieldClfrNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.1";
            }

            leaf diffServMultiFieldClfrAddrType {
               type inet-address:InetAddressType;
               description
                  "The type of IP address used by this classifier entry.  While
                  other types of addresses are defined in the InetAddressType
                  
                  
                  
                  textual convention, and DNS names, a classifier can only look at
                  packets on the wire. Therefore, this object is limited to IPv4
                  and IPv6 addresses.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.2";
            }

            leaf diffServMultiFieldClfrDstAddr {
               type inet-address:InetAddress;
               description
                  "The IP address to match against the packet's destination IP
                  address. This may not be a DNS name, but may be an IPv4 or IPv6
                  prefix.  diffServMultiFieldClfrDstPrefixLength indicates the
                  number of bits that are relevant.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.3";
            }

            leaf diffServMultiFieldClfrDstPrefixLength {
               type inet-address:InetAddressPrefixLength;
               units "bits";
               description
                  "The length of the CIDR Prefix carried in
                  diffServMultiFieldClfrDstAddr. In IPv4 addresses, a length of 0
                  indicates a match of any address; a length of 32 indicates a
                  match of a single host address, and a length between 0 and 32
                  indicates the use of a CIDR Prefix. IPv6 is similar, except that
                  prefix lengths range from 0..128.";
               smi:default "0";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.4";
            }

            leaf diffServMultiFieldClfrSrcAddr {
               type inet-address:InetAddress;
               description
                  "The IP address to match against the packet's source IP address.
                  This may not be a DNS name, but may be an IPv4 or IPv6 prefix.
                  diffServMultiFieldClfrSrcPrefixLength indicates the number of
                  bits that are relevant.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.5";
            }

            leaf diffServMultiFieldClfrSrcPrefixLength {
               type inet-address:InetAddressPrefixLength;
               units "bits";
               description
                  "The length of the CIDR Prefix carried in
                  diffServMultiFieldClfrSrcAddr. In IPv4 addresses, a length of 0
                  indicates a match of any address; a length of 32 indicates a
                  match of a single host address, and a length between 0 and 32
                  indicates the use of a CIDR Prefix. IPv6 is similar, except that
                  prefix lengths range from 0..128.";
               smi:default "0";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.6";
            }

            leaf diffServMultiFieldClfrDscp {
               type diffserv-dscp:DscpOrAny;
               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.";
               smi:default "-1";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.7";
            }

            leaf diffServMultiFieldClfrFlowId {
               type uint32 {
                  range "0..1048575";
               }
               description "The flow identifier in an IPv6 header.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.8";
            }

            leaf diffServMultiFieldClfrProtocol {
               type uint32 {
                  range "0..255";
               }
               description
                  "The IP protocol to match against the IPv4 protocol number or the
                  IPv6 Next- Header number in the packet. A value of 255 means
                  match all.  Note the protocol number of 255 is reserved by IANA,
                  and Next-Header number of 0 is used in IPv6.";
               smi:default "255";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.9";
            }

            leaf diffServMultiFieldClfrDstL4PortMin {
               type inet-address:InetPortNumber;
               description
                  "The minimum value that the layer-4 destination port number in
                  the packet must have in order to match this classifier entry.";
               smi:default "0";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.10";
            }

            leaf diffServMultiFieldClfrDstL4PortMax {
               type inet-address:InetPortNumber;
               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 than the value specified
                  for this entry in diffServMultiFieldClfrDstL4PortMin.";
               smi:default "65535";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.11";
            }

            leaf diffServMultiFieldClfrSrcL4PortMin {
               type inet-address:InetPortNumber;
               description
                  "The minimum value that the layer-4 source port number in the
                  packet must have in order to match this classifier entry.";
               smi:default "0";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.12";
            }

            leaf diffServMultiFieldClfrSrcL4PortMax {
               type inet-address:InetPortNumber;
               description
                  "The maximum value that the layer-4 source port number in the
                  packet must have in order to match this classifier entry. This
                  value must be equal to or greater than the value specified for
                  this entry in diffServMultiFieldClfrSrcL4PortMin.";
               smi:default "65535";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.13";
            }

            leaf diffServMultiFieldClfrStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.14";
            }

            leaf diffServMultiFieldClfrStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.2.6.1.15";
            }
            smi:oid "1.3.6.1.2.1.97.1.2.6.1";
         }  // list diffServMultiFieldClfrEntry
         smi:oid "1.3.6.1.2.1.97.1.2";
      }  // container diffServClassifier

      container diffServMeter {
         leaf diffServMeterNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServMeterId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.3.1";
         }

         list diffServMeterEntry {
            key "diffServMeterId";
            description
               "An entry in the meter table describes a single conformance level
               of a meter.";
            leaf diffServMeterId {
               type IndexInteger;
               description
                  "An index that enumerates the Meter entries.  Managers obtain new
                  values for row creation in this table by reading
                  diffServMeterNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.1";
            }

            leaf diffServMeterSucceedNext {
               type smiv2:RowPointer;
               description
                  "If the traffic does conform, this selects the next
                  Differentiated Services Functional Data Path element to handle
                  traffic for this data path. This RowPointer should point to an
                  instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                    diffServActionEntry
                    diffServAlgDropEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates that no
                  further Differentiated Services treatment is performed on traffic
                  of this data path. The use of zeroDotZero is the normal usage for
                  the last functional data path element of the current data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.2";
            }

            leaf diffServMeterFailNext {
               type smiv2:RowPointer;
               description
                  "If the traffic does not conform, this selects the next
                  Differentiated Services Functional Data Path element to handle
                  traffic for this data path. This RowPointer should point to an
                  instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                  
                  
                  
                    diffServActionEntry
                    diffServAlgDropEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates no further
                  Differentiated Services treatment is performed on traffic of this
                  data path. The use of zeroDotZero is the normal usage for the
                  last functional data path element of the current data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.3";
            }

            leaf diffServMeterSpecific {
               type smiv2:RowPointer;
               description
                  "This indicates the behavior of the meter by pointing to an entry
                  containing detailed parameters. Note that entries in that
                  specific table must be managed explicitly.
                  
                  For example, diffServMeterSpecific may point to an entry in
                  diffServTBParamTable, which contains an instance of a single set
                  of Token Bucket parameters.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the meter always succeeds.";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.4";
            }

            leaf diffServMeterStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.5";
            }

            leaf diffServMeterStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.3.2.1.6";
            }
            smi:oid "1.3.6.1.2.1.97.1.3.2.1";
         }  // list diffServMeterEntry
         smi:oid "1.3.6.1.2.1.97.1.3";
      }  // container diffServMeter

      container diffServTBParam {
         leaf diffServTBParamNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServTBParamId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.4.1";
         }

         list diffServTBParamEntry {
            key "diffServTBParamId";
            description
               "An entry that describes a single set of token bucket
               parameters.";
            leaf diffServTBParamId {
               type IndexInteger;
               description
                  "An index that enumerates the Token Bucket Parameter entries.
                  Managers obtain new values for row creation in this table by
                  reading diffServTBParamNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.1";
            }

            leaf diffServTBParamType {
               type smiv2:AutonomousType;
               description
                  "The Metering algorithm associated with the Token Bucket
                  parameters.  zeroDotZero indicates this is unknown.
                  
                  Standard values for generic algorithms:
                  diffServTBParamSimpleTokenBucket, diffServTBParamAvgRate,
                  diffServTBParamSrTCMBlind, diffServTBParamSrTCMAware,
                  diffServTBParamTrTCMBlind, diffServTBParamTrTCMAware, and
                  diffServTBParamTswTCM are specified in this MIB as OBJECT-
                  IDENTITYs; additional values may be further specified in other
                  MIBs.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.2";
            }

            leaf diffServTBParamRate {
               type uint32 {
                  range "1..4294967295";
               }
               units "kilobits per second";
               description
                  "The token-bucket rate, in kilobits per second (kbps). This
                  attribute is used for:
                  1. CIR in RFC 2697 for srTCM
                  2. CIR and PIR in RFC 2698 for trTCM
                  3. CTR and PTR in RFC 2859 for TSWTCM
                  4. AverageRate in RFC 3290.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.3";
            }

            leaf diffServTBParamBurstSize {
               type integrated-services:BurstSize;
               units "Bytes";
               description
                  "The maximum number of bytes in a single transmission burst. This
                  attribute is used for:
                  1. CBS and EBS in RFC 2697 for srTCM
                  2. CBS and PBS in RFC 2698 for trTCM
                  3. Burst Size in RFC 3290.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.4";
            }

            leaf diffServTBParamInterval {
               type uint32 {
                  range "1..4294967295";
               }
               units "microseconds";
               description
                  "The time interval used with the token bucket.  For:
                  1. Average Rate Meter, the Informal Differentiated Services Model
                     section 5.2.1, - Delta.
                  2. Simple Token Bucket Meter, the Informal Differentiated
                     Services Model section 5.1, - time interval t.
                  3. RFC 2859 TSWTCM, - AVG_INTERVAL.
                  4. RFC 2697 srTCM, RFC 2698 trTCM, - token bucket update time
                     interval.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.5";
            }

            leaf diffServTBParamStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.6";
            }

            leaf diffServTBParamStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.4.2.1.7";
            }
            smi:oid "1.3.6.1.2.1.97.1.4.2.1";
         }  // list diffServTBParamEntry
         smi:oid "1.3.6.1.2.1.97.1.4";
      }  // container diffServTBParam

      container diffServAction {
         leaf diffServActionNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServActionId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.5.1";
         }

         list diffServActionEntry {
            key "diffServActionId";
            description
               "Each entry in the action table allows description of one
               specific action to be applied to traffic.";
            leaf diffServActionId {
               type IndexInteger;
               description
                  "An index that enumerates the Action entries.  Managers obtain
                  new values for row creation in this table by reading
                  diffServActionNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.1";
            }

            leaf diffServActionInterface {
               type if-mib:InterfaceIndexOrZero;
               description
                  "The interface index (value of ifIndex) that this action occurs
                  on. This may be derived from the diffServDataPathStartEntry's
                  index by extension through the various RowPointers. However, as
                  this may be difficult for a network management station, it is
                  placed here as well.  If this is indeterminate, the value is
                  zero.
                  
                  This is of especial relevance when reporting the counters which
                  may apply to traffic crossing an interface:
                     diffServCountActOctets,
                     diffServCountActPkts,
                     diffServAlgDropOctets,
                     diffServAlgDropPkts,
                     diffServAlgRandomDropOctets, and
                     diffServAlgRandomDropPkts.
                  
                  It is also especially relevant to the queue and scheduler which
                  may be subsequently applied.";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.2";
            }

            leaf diffServActionNext {
               type smiv2:RowPointer;
               description
                  "This selects the next Differentiated Services Functional Data
                  Path Element to handle traffic for this data path. This
                  RowPointer should point to an instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                    diffServActionEntry
                    diffServAlgDropEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates no further
                  Differentiated Services treatment is performed on traffic of this
                  data path. The use of zeroDotZero is the normal usage for the
                  last functional data path element of the current data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.3";
            }

            leaf diffServActionSpecific {
               type smiv2:RowPointer;
               description
                  "A pointer to an object instance providing additional information
                  for the type of action indicated by this action table entry.
                  
                  For the standard actions defined by this MIB module, this should
                  point to either a diffServDscpMarkActEntry or a
                  diffServCountActEntry. For other actions, it may point to an
                  object instance defined in some other MIB.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the Meter should be treated as
                  if it were not present.  This may lead to incorrect policy
                  behavior.";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.4";
            }

            leaf diffServActionStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.5";
            }

            leaf diffServActionStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.5.2.1.6";
            }
            smi:oid "1.3.6.1.2.1.97.1.5.2.1";
         }  // list diffServActionEntry

         list diffServDscpMarkActEntry {
            key "diffServDscpMarkActDscp";
            description
               "An entry in the DSCP mark action table that describes a single
               DSCP used for marking.";
            leaf diffServDscpMarkActDscp {
               type diffserv-dscp:Dscp;
               description
                  "The DSCP that this Action will store into the DSCP field of the
                  subject. It is quite possible that the only packets subject to
                  this Action are already marked with this DSCP. Note also that
                  Differentiated Services processing may result in packet being
                  marked on both ingress to a network and on egress from it, and
                  that ingress and egress can occur in the same router.";
               smi:oid "1.3.6.1.2.1.97.1.5.3.1.1";
            }
            smi:oid "1.3.6.1.2.1.97.1.5.3.1";
         }  // list diffServDscpMarkActEntry

         leaf diffServCountActNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for
               diffServCountActId, or a zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.5.4";
         }

         list diffServCountActEntry {
            key "diffServCountActId";
            description
               "An entry in the count action table describes a single set of
               traffic counters.";
            leaf diffServCountActId {
               type IndexInteger;
               description
                  "An index that enumerates the Count Action entries.  Managers
                  obtain new values for row creation in this table by reading
                  
                  
                  
                  diffServCountActNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.5.5.1.1";
            }

            leaf diffServCountActOctets {
               type yang:counter64;
               config "false";
               description
                  "The number of octets at the Action data path element.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.5.5.1.2";
            }

            leaf diffServCountActPkts {
               type yang:counter64;
               config "false";
               description
                  "The number of packets at the Action data path element.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.5.5.1.3";
            }

            leaf diffServCountActStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.5.5.1.4";
            }

            leaf diffServCountActStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  
                  
                  
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.5.5.1.5";
            }
            smi:oid "1.3.6.1.2.1.97.1.5.5.1";
         }  // list diffServCountActEntry
         smi:oid "1.3.6.1.2.1.97.1.5";
      }  // container diffServAction

      container diffServAlgDrop {
         leaf diffServAlgDropNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServAlgDropId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.6.1";
         }

         list diffServAlgDropEntry {
            key "diffServAlgDropId";
            description
               "An entry describes a process that drops packets according to
               some algorithm. Further details of the algorithm type are to be
               found in diffServAlgDropType and with more detail parameter entry
               pointed to by diffServAlgDropSpecific when necessary.";
            leaf diffServAlgDropId {
               type IndexInteger;
               description
                  "An index that enumerates the Algorithmic Dropper entries.
                  Managers obtain new values for row creation in this table by
                  reading diffServAlgDropNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.1";
            }

            leaf diffServAlgDropType {
               type enumeration {
                  enum "other" {
                     value 1;
                  }
                  enum "tailDrop" {
                     value 2;
                  }
                  enum "headDrop" {
                     value 3;
                  }
                  enum "randomDrop" {
                     value 4;
                  }
                  enum "alwaysDrop" {
                     value 5;
                  }
               }
               description
                  "The type of algorithm used by this dropper. The value other(1)
                  requires further specification in some other MIB module.
                  
                  In the tailDrop(2) algorithm, diffServAlgDropQThreshold
                  represents the maximum depth of the queue, pointed to by
                  diffServAlgDropQMeasure, beyond which all newly arriving packets
                  will be dropped.
                  
                  In the headDrop(3) algorithm, if a packet arrives when the
                  current depth of the queue, pointed to by
                  diffServAlgDropQMeasure, is at diffServAlgDropQThreshold, packets
                  currently at the head of the queue are dropped to make room for
                  the new packet to be enqueued at the tail of the queue.
                  
                  In the randomDrop(4) algorithm, on packet arrival, an Active
                  Queue Management algorithm is executed which may randomly drop a
                  packet. This algorithm may be proprietary, and it may drop either
                  the arriving packet or another packet in the queue.
                  diffServAlgDropSpecific points to a diffServRandomDropEntry that
                  describes the algorithm. For this algorithm,
                  
                  
                  
                  diffServAlgDropQThreshold is understood to be the absolute
                  maximum size of the queue and additional parameters are described
                  in diffServRandomDropTable.
                  
                  The alwaysDrop(5) algorithm is as its name specifies; always
                  drop. In this case, the other configuration values in this Entry
                  are not meaningful; There is no useful 'next' processing step,
                  there is no queue, and parameters describing the queue are not
                  useful. Therefore, diffServAlgDropNext, diffServAlgDropMeasure,
                  and diffServAlgDropSpecific are all zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.2";
            }

            leaf diffServAlgDropNext {
               type smiv2:RowPointer;
               description
                  "This selects the next Differentiated Services Functional Data
                  Path Element to handle traffic for this data path. This
                  RowPointer should point to an instance of one of:
                    diffServClfrEntry
                    diffServMeterEntry
                    diffServActionEntry
                    diffServQEntry
                  
                  A value of zeroDotZero in this attribute indicates no further
                  Differentiated Services treatment is performed on traffic of this
                  data path. The use of zeroDotZero is the normal usage for the
                  last functional data path element of the current data path.
                  
                  When diffServAlgDropType is alwaysDrop(5), this object is
                  ignored.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.3";
            }

            leaf diffServAlgDropQMeasure {
               type smiv2:RowPointer;
               description
                  "Points to an entry in the diffServQTable to indicate the queue
                  that a drop algorithm is to monitor when deciding whether to drop
                  a packet. If the row pointed to does not exist, the algorithmic
                  dropper element is considered inactive.
                  
                  
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.4";
            }

            leaf diffServAlgDropQThreshold {
               type uint32 {
                  range "1..4294967295";
               }
               units "Bytes";
               description
                  "A threshold on the depth in bytes of the queue being measured at
                  which a trigger is generated to the dropping algorithm, unless
                  diffServAlgDropType is alwaysDrop(5) where this object is
                  ignored.
                  
                  For the tailDrop(2) or headDrop(3) algorithms, this represents
                  the depth of the queue, pointed to by diffServAlgDropQMeasure, at
                  which the drop action will take place. Other algorithms will need
                  to define their own semantics for this threshold.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.5";
            }

            leaf diffServAlgDropSpecific {
               type smiv2:RowPointer;
               description
                  "Points to a table entry that provides further detail regarding a
                  drop algorithm.
                  
                  Entries with diffServAlgDropType equal to other(1) may have this
                  point to a table defined in another MIB module.
                  
                  Entries with diffServAlgDropType equal to randomDrop(4) must have
                  this point to an entry in diffServRandomDropTable.
                  
                  For all other algorithms specified in this MIB, this should take
                  the value zeroDotZero.
                  
                  The diffServAlgDropType is authoritative for the type of the drop
                  algorithm and the specific parameters for the drop algorithm
                  needs to be evaluated based on the diffServAlgDropType.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.6";
            }

            leaf diffServAlgDropOctets {
               type yang:counter64;
               config "false";
               description
                  "The number of octets that have been deterministically dropped by
                  this drop process.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.7";
            }

            leaf diffServAlgDropPkts {
               type yang:counter64;
               config "false";
               description
                  "The number of packets that have been deterministically dropped
                  by this drop process.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.8";
            }

            leaf diffServAlgRandomDropOctets {
               type yang:counter64;
               config "false";
               description
                  "The number of octets that have been randomly dropped by this
                  drop process.  This counter applies, therefore, only to random
                  droppers.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.9";
            }

            leaf diffServAlgRandomDropPkts {
               type yang:counter64;
               config "false";
               description
                  "The number of packets that have been randomly dropped by this
                  drop process. This counter applies, therefore, only to random
                  droppers.
                  
                  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 on the
                  relevant interface.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.10";
            }

            leaf diffServAlgDropStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.11";
            }

            leaf diffServAlgDropStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.6.2.1.12";
            }
            smi:oid "1.3.6.1.2.1.97.1.6.2.1";
         }  // list diffServAlgDropEntry

         leaf diffServRandomDropNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServRandomDropId,
               or a zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.6.3";
         }

         list diffServRandomDropEntry {
            key "diffServRandomDropId";
            description
               "An entry describes a process that drops packets according to a
               random algorithm.";
            leaf diffServRandomDropId {
               type IndexInteger;
               description
                  "An index that enumerates the Random Drop entries.  Managers
                  obtain new values for row creation in this table by reading
                  diffServRandomDropNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.1";
            }

            leaf diffServRandomDropMinThreshBytes {
               type uint32 {
                  range "1..4294967295";
               }
               units "bytes";
               description
                  "The average queue depth in bytes, beyond which traffic has a
                  non-zero probability of being dropped. Changes in this variable
                  may or may not be reflected in the reported value of
                  diffServRandomDropMinThreshPkts.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.2";
            }

            leaf diffServRandomDropMinThreshPkts {
               type uint32 {
                  range "1..4294967295";
               }
               units "packets";
               description
                  "The average queue depth in packets, beyond which traffic has a
                  non-zero probability of being dropped. Changes in this variable
                  may or may not be reflected in the reported value of
                  diffServRandomDropMinThreshBytes.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.3";
            }

            leaf diffServRandomDropMaxThreshBytes {
               type uint32 {
                  range "1..4294967295";
               }
               units "bytes";
               description
                  "The average queue depth beyond which traffic has a probability
                  indicated by diffServRandomDropProbMax of being dropped or
                  marked. Note that this differs from the physical queue limit,
                  which is stored in diffServAlgDropQThreshold. Changes in this
                  variable may or may not be reflected in the reported value of
                  diffServRandomDropMaxThreshPkts.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.4";
            }

            leaf diffServRandomDropMaxThreshPkts {
               type uint32 {
                  range "1..4294967295";
               }
               units "packets";
               description
                  "The average queue depth beyond which traffic has a probability
                  indicated by diffServRandomDropProbMax of being dropped or
                  marked. Note that this differs from the physical queue limit,
                  which is stored in diffServAlgDropQThreshold. Changes in this
                  variable may or may not be reflected in the reported value of
                  diffServRandomDropMaxThreshBytes.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.5";
            }

            leaf diffServRandomDropProbMax {
               type uint32 {
                  range "0..1000";
               }
               description
                  "The worst case random drop probability, expressed in drops per
                  thousand packets.
                  
                  For example, if in the worst case every arriving packet may be
                  dropped (100%) for a period, this has the value 1000.
                  Alternatively, if in the worst case only one percent (1%) of
                  traffic may be dropped, it has the value 10.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.6";
            }

            leaf diffServRandomDropWeight {
               type uint32 {
                  range "0..65536";
               }
               description
                  "The weighting of past history in affecting the Exponentially
                  Weighted Moving Average function that calculates the current
                  average queue depth.  The equation uses
                  diffServRandomDropWeight/65536 as the coefficient for the new
                  sample in the equation, and (65536 -
                  diffServRandomDropWeight)/65536 as the coefficient of the old
                  value.
                  
                  Implementations may limit the values of diffServRandomDropWeight
                  to a subset of the possible range of values, such as powers of
                  two. Doing this would facilitate implementation of the
                  Exponentially Weighted Moving Average using shift instructions or
                  registers.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.7";
            }

            leaf diffServRandomDropSamplingRate {
               type uint32 {
                  range "0..1000000";
               }
               description
                  "The number of times per second the queue is sampled for queue
                  average calculation.  A value of zero is used to mean that the
                  queue is sampled approximately each time a packet is enqueued (or
                  dequeued).";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.8";
            }

            leaf diffServRandomDropStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.9";
            }

            leaf diffServRandomDropStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.6.4.1.10";
            }
            smi:oid "1.3.6.1.2.1.97.1.6.4.1";
         }  // list diffServRandomDropEntry
         smi:oid "1.3.6.1.2.1.97.1.6";
      }  // container diffServAlgDrop

      container diffServQueue {
         leaf diffServQNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServQId, or a zero
               to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.7.1";
         }

         list diffServQEntry {
            key "diffServQId";
            description
               "An entry in the Queue Table describes a single queue or class of
               traffic.";
            leaf diffServQId {
               type IndexInteger;
               description
                  "An index that enumerates the Queue entries.  Managers obtain new
                  values for row creation in this table by reading
                  diffServQNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.1";
            }

            leaf diffServQNext {
               type smiv2:RowPointer;
               description
                  "This selects the next Differentiated Services Scheduler.  The
                  RowPointer must point to a diffServSchedulerEntry.
                  
                  A value of zeroDotZero in this attribute indicates an incomplete
                  diffServQEntry instance. In such a case, the entry has no
                  operational effect, since it has no parameters to give it
                  meaning.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.2";
            }

            leaf diffServQMinRate {
               type smiv2:RowPointer;
               description
                  "This RowPointer indicates the diffServMinRateEntry that the
                  scheduler, pointed to by diffServQNext, should use to service
                  this queue.
                  
                  If the row pointed to is zeroDotZero, the minimum rate and
                  priority is unspecified.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.3";
            }

            leaf diffServQMaxRate {
               type smiv2:RowPointer;
               description
                  "This RowPointer indicates the diffServMaxRateEntry that the
                  scheduler, pointed to by diffServQNext, should use to service
                  this queue.
                  
                  If the row pointed to is zeroDotZero, the maximum rate is the
                  line speed of the interface.
                  
                  
                  
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.4";
            }

            leaf diffServQStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.5";
            }

            leaf diffServQStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.7.2.1.6";
            }
            smi:oid "1.3.6.1.2.1.97.1.7.2.1";
         }  // list diffServQEntry
         smi:oid "1.3.6.1.2.1.97.1.7";
      }  // container diffServQueue

      container diffServScheduler {
         leaf diffServSchedulerNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServSchedulerId, or
               a zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.8.1";
         }

         list diffServSchedulerEntry {
            key "diffServSchedulerId";
            description
               "An entry in the Scheduler Table describing a single instance of
               a scheduling algorithm.";
            leaf diffServSchedulerId {
               type IndexInteger;
               description
                  "An index that enumerates the Scheduler entries.  Managers obtain
                  new values for row creation in this table by reading
                  diffServSchedulerNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.1";
            }

            leaf diffServSchedulerNext {
               type smiv2:RowPointer;
               description
                  "This selects the next Differentiated Services Functional Data
                  Path Element to handle traffic for this data path. This normally
                  is null (zeroDotZero), or points to a diffServSchedulerEntry or a
                  diffServQEntry.
                  
                  However, this RowPointer may also point to an instance of:
                    diffServClfrEntry,
                    diffServMeterEntry,
                    diffServActionEntry,
                    diffServAlgDropEntry.
                  
                  It would point another diffServSchedulerEntry when implementing
                  multiple scheduler methods for the same data path, such as having
                  one set of queues scheduled by WRR and that group participating
                  in a priority scheduling system in which other queues compete
                  with it in that way.  It might also point to a second scheduler
                  in a hierarchical scheduling system.
                  
                  If the row pointed to is zeroDotZero, no further Differentiated
                  Services treatment is performed on traffic of this data path.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.2";
            }

            leaf diffServSchedulerMethod {
               type smiv2:AutonomousType;
               description
                  "The scheduling algorithm used by this Scheduler. zeroDotZero
                  indicates that this is unknown.  Standard values for generic
                  algorithms: diffServSchedulerPriority, diffServSchedulerWRR, and
                  diffServSchedulerWFQ are specified in this MIB; additional values
                  
                  
                  
                  may be further specified in other MIBs.";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.3";
            }

            leaf diffServSchedulerMinRate {
               type smiv2:RowPointer;
               description
                  "This RowPointer indicates the entry in diffServMinRateTable
                  which indicates the priority or minimum output rate from this
                  scheduler. This attribute is used only when there is more than
                  one level of scheduler.
                  
                  When it has the value zeroDotZero, it indicates that no minimum
                  rate or priority is imposed.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.4";
            }

            leaf diffServSchedulerMaxRate {
               type smiv2:RowPointer;
               description
                  "This RowPointer indicates the entry in diffServMaxRateTable
                  which indicates the maximum output rate from this scheduler.
                  When more than one maximum rate applies (eg, when a multi-rate
                  shaper is in view), it points to the first of those rate entries.
                  This attribute is used only when there is more than one level of
                  scheduler.
                  
                  When it has the value zeroDotZero, it indicates that no maximum
                  rate is imposed.
                  
                  Setting this to point to a target that does not exist results in
                  an inconsistentValue error.  If the row pointed to is removed or
                  becomes inactive by other means, the treatment is as if this
                  attribute contains a value of zeroDotZero.";
               smi:default "zeroDotZero";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.5";
            }

            leaf diffServSchedulerStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.6";
            }

            leaf diffServSchedulerStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.8.2.1.7";
            }
            smi:oid "1.3.6.1.2.1.97.1.8.2.1";
         }  // list diffServSchedulerEntry

         leaf diffServMinRateNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServMinRateId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.8.3";
         }

         list diffServMinRateEntry {
            key "diffServMinRateId";
            description
               "An entry in the Minimum Rate Parameters Table describes a single
               set of scheduling parameters for use by one or more queues or
               schedulers.";
            leaf diffServMinRateId {
               type IndexInteger;
               description
                  "An index that enumerates the Scheduler Parameter entries.
                  Managers obtain new values for row creation in this table by
                  reading diffServMinRateNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.8.4.1.1";
            }

            leaf diffServMinRatePriority {
               type uint32 {
                  range "1..4294967295";
               }
               description
                  "The priority of this input to the associated scheduler, relative
                  
                  
                  
                  to the scheduler's other inputs. A queue or scheduler with a
                  larger numeric value will be served before another with a smaller
                  numeric value.";
               smi:oid "1.3.6.1.2.1.97.1.8.4.1.2";
            }

            leaf diffServMinRateAbsolute {
               type uint32 {
                  range "1..4294967295";
               }
               units "kilobits per second";
               description
                  "The minimum absolute rate, in kilobits/sec, that a downstream
                  scheduler element should allocate to this queue. If the value is
                  zero, then there is effectively no minimum rate guarantee. If the
                  value is non-zero, the scheduler will assure the servicing of
                  this queue to at least this rate.
                  
                  Note that this attribute value and that of
                  diffServMinRateRelative are coupled: changes to one will affect
                  the value of the other. They are linked by the following
                  equation, in that setting one will change the other:
                  
                    diffServMinRateRelative =
                  	  (diffServMinRateAbsolute*1000000)/ifSpeed
                  
                  or, if appropriate:
                  
                    diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed";
               reference
                  "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863";

               smi:oid "1.3.6.1.2.1.97.1.8.4.1.3";
            }

            leaf diffServMinRateRelative {
               type uint32 {
                  range "1..4294967295";
               }
               description
                  "The minimum rate that a downstream scheduler element should
                  allocate to this queue, relative to the maximum rate of the
                  interface as reported by ifSpeed or ifHighSpeed, in units of
                  1/1000 of 1. If the value is zero, then there is effectively no
                  minimum rate guarantee. If the value is non-zero, the scheduler
                  will assure the servicing of this queue to at least this rate.
                  
                  Note that this attribute value and that of
                  diffServMinRateAbsolute are coupled: changes to one will affect
                  the value of the other. They are linked by the following
                  equation, in that setting one will change the other:
                  
                  
                  
                    diffServMinRateRelative =
                  	  (diffServMinRateAbsolute*1000000)/ifSpeed
                  
                  or, if appropriate:
                  
                    diffServMinRateRelative = diffServMinRateAbsolute/ifHighSpeed";
               reference
                  "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863";

               smi:oid "1.3.6.1.2.1.97.1.8.4.1.4";
            }

            leaf diffServMinRateStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.8.4.1.5";
            }

            leaf diffServMinRateStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.8.4.1.6";
            }
            smi:oid "1.3.6.1.2.1.97.1.8.4.1";
         }  // list diffServMinRateEntry

         leaf diffServMaxRateNextFree {
            type IndexIntegerNextFree;
            config "false";
            description
               "This object contains an unused value for diffServMaxRateId, or a
               zero to indicate that none exist.";
            smi:oid "1.3.6.1.2.1.97.1.8.5";
         }

         list diffServMaxRateEntry {
            key "diffServMaxRateId diffServMaxRateLevel";
            description
               "An entry in the Maximum Rate Parameter Table describes a single
               set of scheduling parameters for use by one or more queues or
               schedulers.";
            leaf diffServMaxRateId {
               type IndexInteger;
               description
                  "An index that enumerates the Maximum Rate Parameter entries.
                  Managers obtain new values for row creation in this table by
                  reading diffServMaxRateNextFree.";
               smi:oid "1.3.6.1.2.1.97.1.8.6.1.1";
            }

            leaf diffServMaxRateLevel {
               type uint32 {
                  range "1..32";
               }
               description
                  "An index that indicates which level of a multi-rate shaper is
                  being given its parameters. A multi-rate shaper has some number
                  of rate levels. Frame Relay's dual rate specification refers to a
                  'committed' and an 'excess' rate; ATM's dual rate specification
                  refers to a 'mean' and a 'peak' rate. This table is generalized
                  to support an arbitrary number of rates. The committed or mean
                  rate is level 1, the peak rate (if any) is the highest level rate
                  configured, and if there are other rates they are distributed in
                  monotonically increasing order between them.";
               smi:oid "1.3.6.1.2.1.97.1.8.6.1.2";
            }

            leaf diffServMaxRateAbsolute {
               type uint32 {
                  range "1..4294967295";
               }
               units "kilobits per second";
               description
                  "The maximum rate in kilobits/sec that a downstream scheduler
                  element should allocate to this queue. If the value is zero, then
                  there is effectively no maximum rate limit and that the scheduler
                  should attempt to be work conserving for this queue. If the value
                  is non-zero, the scheduler will limit the servicing of this queue
                  to, at most, this rate in a non-work-conserving manner.
                  
                  Note that this attribute value and that of
                  diffServMaxRateRelative are coupled: changes to one will affect
                  the value of the other. They are linked by the following
                  
                  
                  
                  equation, in that setting one will change the other:
                  
                    diffServMaxRateRelative =
                  	  (diffServMaxRateAbsolute*1000000)/ifSpeed
                  
                  or, if appropriate:
                  
                    diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed";
               reference
                  "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863";

               smi:oid "1.3.6.1.2.1.97.1.8.6.1.3";
            }

            leaf diffServMaxRateRelative {
               type uint32 {
                  range "1..4294967295";
               }
               description
                  "The maximum rate that a downstream scheduler element should
                  allocate to this queue, relative to the maximum rate of the
                  interface as reported by ifSpeed or ifHighSpeed, in units of
                  1/1000 of 1. If the value is zero, then there is effectively no
                  maximum rate limit and the scheduler should attempt to be work
                  conserving for this queue. If the value is non-zero, the
                  scheduler will limit the servicing of this queue to, at most,
                  this rate in a non-work-conserving manner.
                  
                  Note that this attribute value and that of
                  diffServMaxRateAbsolute are coupled: changes to one will affect
                  the value of the other. They are linked by the following
                  equation, in that setting one will change the other:
                  
                    diffServMaxRateRelative =
                  	  (diffServMaxRateAbsolute*1000000)/ifSpeed
                  
                  or, if appropriate:
                  
                    diffServMaxRateRelative = diffServMaxRateAbsolute/ifHighSpeed";
               reference
                  "ifSpeed, ifHighSpeed, Interface MIB, RFC 2863";

               smi:oid "1.3.6.1.2.1.97.1.8.6.1.4";
            }

            leaf diffServMaxRateThreshold {
               type integrated-services:BurstSize;
               units "Bytes";
               description
                  "The number of bytes of queue depth at which the rate of a
                  
                  
                  
                  multi-rate scheduler will increase to the next output rate. In
                  the last conceptual row for such a shaper, this threshold is
                  ignored and by convention is zero.";
               reference
                  "Adaptive rate Shaper, RFC 2963";

               smi:oid "1.3.6.1.2.1.97.1.8.6.1.5";
            }

            leaf diffServMaxRateStorage {
               type smiv2:StorageType;
               description
                  "The storage type for this conceptual row.  Conceptual rows
                  having the value 'permanent' need not allow write-access to any
                  columnar objects in the row.";
               smi:default "nonVolatile";
               smi:oid "1.3.6.1.2.1.97.1.8.6.1.6";
            }

            leaf diffServMaxRateStatus {
               type smiv2:RowStatus;
               description
                  "The status of this conceptual row. All writable objects in this
                  row may be modified at any time. Setting this variable to
                  'destroy' when the MIB contains one or more RowPointers pointing
                  to it results in destruction being delayed until the row is no
                  longer used.";
               smi:oid "1.3.6.1.2.1.97.1.8.6.1.7";
            }
            smi:oid "1.3.6.1.2.1.97.1.8.6.1";
         }  // list diffServMaxRateEntry
         smi:oid "1.3.6.1.2.1.97.1.8";
      }  // container diffServScheduler
   }  // module DIFFSERV-MIB