Tech-invite3GPPspaceIETFspace
959493929190898887868584838281807978777675747372717069686766656463626160595857565554535251504948474645444342414039383736353433323130292827262524232221201918171615141312111009080706050403020100
in Index   Prev   Next

RFC 3289

Management Information Base for the Differentiated Services Architecture

Pages: 116
Proposed Standard
Errata
Part 3 of 6 – Pages 35 to 56
First   Prev   Next

Top   ToC   RFC3289 - Page 35   prevText

6. MIB Definition

DIFFSERV-DSCP-TC DEFINITIONS ::= BEGIN IMPORTS Integer32, MODULE-IDENTITY, mib-2 FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC;
Top   ToC   RFC3289 - Page 36
diffServDSCPTC MODULE-IDENTITY
    LAST-UPDATED "200205090000Z"
    ORGANIZATION "IETF Differentiated Services WG"
    CONTACT-INFO
       "       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
       "The Textual Conventions defined in this module should be used
       whenever a Differentiated Services Code Point is used in a MIB."
    REVISION "200205090000Z"
    DESCRIPTION
       "Initial version, published as RFC 3289."
    ::= { mib-2 96 }

Dscp ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    DESCRIPTION
       "A Differentiated Services Code-Point that may be used for
       marking a traffic stream."
    REFERENCE
        "RFC 2474, RFC 2780"
    SYNTAX   Integer32 (0..63)

DscpOrAny ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    DESCRIPTION
       "The IP header Differentiated Services Code-Point that may be
Top   ToC   RFC3289 - Page 37
       used for discriminating among traffic streams. The value -1 is
       used to indicate a wild card i.e. any value."
    REFERENCE
        "RFC 2474, RFC 2780"
    SYNTAX   Integer32 (-1 | 0..63)

END

DIFFSERV-MIB DEFINITIONS ::= BEGIN

    IMPORTS
    Unsigned32, Counter64, MODULE-IDENTITY, OBJECT-TYPE,
    OBJECT-IDENTITY, zeroDotZero, mib-2
         FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus, RowPointer,
    StorageType, AutonomousType
         FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
         FROM SNMPv2-CONF
    ifIndex, InterfaceIndexOrZero
        FROM IF-MIB
    InetAddressType, InetAddress, InetAddressPrefixLength,
    InetPortNumber
        FROM INET-ADDRESS-MIB
    BurstSize
        FROM INTEGRATED-SERVICES-MIB
    Dscp, DscpOrAny
        FROM DIFFSERV-DSCP-TC;

diffServMib MODULE-IDENTITY
    LAST-UPDATED "200202070000Z"
    ORGANIZATION "IETF Differentiated Services WG"
    CONTACT-INFO
       "       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
Top   ToC   RFC3289 - Page 38
               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 "200202070000Z"
    DESCRIPTION
       "Initial version, published as RFC 3289."
    ::= { mib-2 97 }

diffServMIBObjects     OBJECT IDENTIFIER ::= { diffServMib 1 }
diffServMIBConformance OBJECT IDENTIFIER ::= { diffServMib 2 }
diffServMIBAdmin       OBJECT IDENTIFIER ::= { diffServMib 3 }

IndexInteger ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    DESCRIPTION
       "An integer which may be used as a table index."
    SYNTAX   Unsigned32 (1..4294967295)

IndexIntegerNextFree ::= TEXTUAL-CONVENTION
    DISPLAY-HINT "d"
    STATUS   current
    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,
Top   ToC   RFC3289 - Page 39
       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."
    SYNTAX   Unsigned32 (0..4294967295)

IfDirection ::= TEXTUAL-CONVENTION
    STATUS current
    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."
    SYNTAX  INTEGER {
                inbound(1),     -- ingress interface
                outbound(2)     -- egress interface
}

--
-- Data Path
--

diffServDataPath       OBJECT IDENTIFIER ::= { diffServMIBObjects 1 }

--
-- Data Path Table
--
-- The Data Path Table enumerates the Differentiated Services
-- Functional Data Paths within this device.  Each entry in this table
-- is indexed by ifIndex and ifDirection.  Each entry provides the
-- first Differentiated Services Functional Data Path Element to
-- process data flowing along specific data path.  This table should
-- have at most two entries for each interface capable of
-- Differentiated Services processing on this device: ingress and
-- egress.

-- Note that Differentiated Services Functional Data Path Elements
-- linked together using their individual next pointers and anchored by
-- an entry of the diffServDataPathTable constitute a functional data
-- path.
--

diffServDataPathTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF DiffServDataPathEntry
    MAX-ACCESS   not-accessible
    STATUS       current
Top   ToC   RFC3289 - Page 40
    DESCRIPTION
       "The data path table contains RowPointers indicating the start of
       the functional data path for each interface and traffic direction
       in this device. These may merge, or be separated into parallel
       data paths."
    ::= { diffServDataPath 1 }

diffServDataPathEntry OBJECT-TYPE
    SYNTAX       DiffServDataPathEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    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."
    INDEX { ifIndex, diffServDataPathIfDirection }
    ::= { diffServDataPathTable 1 }

DiffServDataPathEntry ::= SEQUENCE  {
    diffServDataPathIfDirection    IfDirection,
    diffServDataPathStart          RowPointer,
    diffServDataPathStorage        StorageType,
    diffServDataPathStatus         RowStatus
}

diffServDataPathIfDirection OBJECT-TYPE
    SYNTAX       IfDirection
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "IfDirection specifies whether the reception or transmission path
       for this interface is in view."
    ::= { diffServDataPathEntry 1 }

diffServDataPathStart OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
Top   ToC   RFC3289 - Page 41
    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."
    ::= { diffServDataPathEntry 2 }

diffServDataPathStorage OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL { nonVolatile }
    ::= { diffServDataPathEntry 3 }

diffServDataPathStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    DESCRIPTION
       "The status of this conceptual row. All writable objects in this
       row may be modified at any time."
    ::= { diffServDataPathEntry 4 }

--
-- Classifiers
--

diffServClassifier     OBJECT IDENTIFIER ::= { diffServMIBObjects 2 }

--
Top   ToC   RFC3289 - Page 42
-- Classifier Table
--
-- The Classifier Table allows multiple classifier elements, of same or
-- different types, to be used together. A classifier must completely
-- classify all packets presented to it. This means that all traffic
-- presented to a classifier must match at least one classifier element
-- within the classifier, with the classifier element parameters
-- specified by a filter.

-- If there is ambiguity between classifier elements of different
-- classifier, classifier linkage order indicates their precedence; the
-- first classifier in the link is applied to the traffic first.

-- Entries in the classifier element table serves as the anchor for
-- each classification pattern, defined in filter table entries.  Each
-- classifier element table entry also specifies the subsequent
-- downstream Differentiated Services Functional Data Path Element when
-- the classification pattern is satisfied. Each entry in the
-- classifier element table describes one branch of the fan-out
-- characteristic of a classifier indicated in the Informal
-- Differentiated Services Model section 4.1.  A classifier is composed
-- of one or more classifier elements.

diffServClfrNextFree OBJECT-TYPE
    SYNTAX       IndexIntegerNextFree
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object contains an unused value for diffServClfrId, or a
       zero to indicate that none exist."
    ::= { diffServClassifier 1 }

diffServClfrTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF DiffServClfrEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "This table enumerates all the diffserv classifier functional
       data path elements of this device.  The actual classification
       definitions are defined in diffServClfrElementTable entries
       belonging to each classifier.

       An entry in this table, pointed to by a RowPointer specifying an
       instance of diffServClfrStatus, is frequently used as the name
       for a set of classifier elements, which all use the index
       diffServClfrId. Per the semantics of the classifier element
       table, these entries constitute one or more unordered sets of
       tests which may be simultaneously applied to a message to
Top   ToC   RFC3289 - Page 43
       classify it.

       The primary function of this table is to ensure that the value of
       diffServClfrId is unique before attempting to use it in creating
       a diffServClfrElementEntry. Therefore, the diffServClfrEntry must
       be created on the same SET as the diffServClfrElementEntry, or
       before the diffServClfrElementEntry is created."
    ::= { diffServClassifier 2 }

diffServClfrEntry OBJECT-TYPE
    SYNTAX       DiffServClfrEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    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."
    INDEX { diffServClfrId }
    ::= { diffServClfrTable 1 }

DiffServClfrEntry ::= SEQUENCE  {
    diffServClfrId              IndexInteger,
    diffServClfrStorage         StorageType,
    diffServClfrStatus          RowStatus
}

diffServClfrId OBJECT-TYPE
    SYNTAX       IndexInteger
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An index that enumerates the classifier entries.  Managers
       should obtain new values for row creation in this table by
       reading diffServClfrNextFree."
    ::= { diffServClfrEntry 1 }

diffServClfrStorage OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL { nonVolatile }
    ::= { diffServClfrEntry 2 }

diffServClfrStatus OBJECT-TYPE
Top   ToC   RFC3289 - Page 44
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    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."
    ::= { diffServClfrEntry 3 }

--
-- Classifier Element Table
--
diffServClfrElementNextFree OBJECT-TYPE
    SYNTAX       IndexIntegerNextFree
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object contains an unused value for diffServClfrElementId,
       or a zero to indicate that none exist."
    ::= { diffServClassifier 3 }

diffServClfrElementTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF DiffServClfrElementEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "The classifier element table enumerates the relationship between
       classification patterns and subsequent downstream Differentiated
       Services Functional Data Path elements.
       diffServClfrElementSpecific points to a filter that specifies the
       classification parameters. A classifier may use filter tables of
       different types together.

       One example of a filter table defined in this MIB is
       diffServMultiFieldClfrTable, for IP Multi-Field Classifiers
       (MFCs). Such an entry might identify anything from a single
       micro-flow (an identifiable sub-session packet stream directed
       from one sending transport to the receiving transport or
       transports), or aggregates of those such as the traffic from a
       host, traffic for an application, or traffic between two hosts
       using an application and a given DSCP. The standard Behavior
       Aggregate used in the Differentiated Services Architecture is
       encoded as a degenerate case of such an aggregate - the traffic
       using a particular DSCP value.

       Filter tables for other filter types may be defined elsewhere."
Top   ToC   RFC3289 - Page 45
    ::= { diffServClassifier 4 }

diffServClfrElementEntry OBJECT-TYPE
    SYNTAX       DiffServClfrElementEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An entry in the classifier element table describes a single
       element of the classifier."
    INDEX { diffServClfrId, diffServClfrElementId }
    ::= { diffServClfrElementTable 1 }

DiffServClfrElementEntry ::= SEQUENCE  {
    diffServClfrElementId          IndexInteger,
    diffServClfrElementPrecedence  Unsigned32,
    diffServClfrElementNext        RowPointer,
    diffServClfrElementSpecific    RowPointer,
    diffServClfrElementStorage     StorageType,
    diffServClfrElementStatus      RowStatus
}

diffServClfrElementId OBJECT-TYPE
    SYNTAX       IndexInteger
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An index that enumerates the Classifier Element entries.
       Managers obtain new values for row creation in this table by
       reading diffServClfrElementNextFree."
    ::= { diffServClfrElementEntry 1 }

diffServClfrElementPrecedence OBJECT-TYPE
    SYNTAX       Unsigned32  (1..4294967295)
    MAX-ACCESS   read-create
    STATUS       current
    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
Top   ToC   RFC3289 - Page 46
       requirement in the egress direction."
    ::= { diffServClfrElementEntry 2 }

diffServClfrElementNext OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
    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."

    ::= { diffServClfrElementEntry 3 }

diffServClfrElementSpecific OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
    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
Top   ToC   RFC3289 - Page 47
       becomes inactive by other means, the element is ignored."
    ::= { diffServClfrElementEntry 4 }

diffServClfrElementStorage OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL { nonVolatile }
    ::= { diffServClfrElementEntry 5 }

diffServClfrElementStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
    STATUS       current
    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."
    ::= { diffServClfrElementEntry 6 }

--
-- IP Multi-field Classification Table
--
-- Classification based on six different fields in the IP header.
-- Functional Data Paths may share definitions by using the same entry.
--

diffServMultiFieldClfrNextFree OBJECT-TYPE
    SYNTAX       IndexIntegerNextFree
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object contains an unused value for
       diffServMultiFieldClfrId, or a zero to indicate that none exist."
    ::= { diffServClassifier 5 }

diffServMultiFieldClfrTable OBJECT-TYPE
    SYNTAX   SEQUENCE OF DiffServMultiFieldClfrEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
       "A table of IP Multi-field Classifier filter entries that a
Top   ToC   RFC3289 - Page 48
       system may use to identify IP traffic."
    ::= { diffServClassifier 6 }

diffServMultiFieldClfrEntry OBJECT-TYPE
    SYNTAX       DiffServMultiFieldClfrEntry
    MAX-ACCESS   not-accessible
    STATUS   current
    DESCRIPTION
       "An IP Multi-field Classifier entry describes a single filter."
    INDEX { diffServMultiFieldClfrId }
    ::= { diffServMultiFieldClfrTable 1 }

DiffServMultiFieldClfrEntry ::= SEQUENCE {
    diffServMultiFieldClfrId           IndexInteger,
    diffServMultiFieldClfrAddrType     InetAddressType,
    diffServMultiFieldClfrDstAddr      InetAddress,
    diffServMultiFieldClfrDstPrefixLength InetAddressPrefixLength,
    diffServMultiFieldClfrSrcAddr      InetAddress,
    diffServMultiFieldClfrSrcPrefixLength InetAddressPrefixLength,
    diffServMultiFieldClfrDscp         DscpOrAny,
    diffServMultiFieldClfrFlowId       Unsigned32,
    diffServMultiFieldClfrProtocol     Unsigned32,
    diffServMultiFieldClfrDstL4PortMin InetPortNumber,
    diffServMultiFieldClfrDstL4PortMax InetPortNumber,
    diffServMultiFieldClfrSrcL4PortMin InetPortNumber,
    diffServMultiFieldClfrSrcL4PortMax InetPortNumber,
    diffServMultiFieldClfrStorage      StorageType,
    diffServMultiFieldClfrStatus       RowStatus
}

diffServMultiFieldClfrId OBJECT-TYPE
    SYNTAX         IndexInteger
    MAX-ACCESS     not-accessible
    STATUS     current
    DESCRIPTION
       "An index that enumerates the MultiField Classifier filter
       entries.  Managers obtain new values for row creation in this
       table by reading diffServMultiFieldClfrNextFree."

    ::= { diffServMultiFieldClfrEntry 1 }

diffServMultiFieldClfrAddrType OBJECT-TYPE
    SYNTAX         InetAddressType
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The type of IP address used by this classifier entry.  While
       other types of addresses are defined in the InetAddressType
Top   ToC   RFC3289 - Page 49
       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."
    ::= { diffServMultiFieldClfrEntry 2 }

diffServMultiFieldClfrDstAddr OBJECT-TYPE
    SYNTAX         InetAddress
    MAX-ACCESS     read-create
    STATUS         current
    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."
    ::= { diffServMultiFieldClfrEntry 3 }

diffServMultiFieldClfrDstPrefixLength OBJECT-TYPE
    SYNTAX         InetAddressPrefixLength
    UNITS          "bits"
    MAX-ACCESS     read-create
    STATUS         current
    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."
    DEFVAL         { 0 }
    ::= { diffServMultiFieldClfrEntry 4 }

diffServMultiFieldClfrSrcAddr OBJECT-TYPE
    SYNTAX         InetAddress
    MAX-ACCESS     read-create
    STATUS         current
    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."
    ::= { diffServMultiFieldClfrEntry 5 }

diffServMultiFieldClfrSrcPrefixLength OBJECT-TYPE
    SYNTAX         InetAddressPrefixLength
    UNITS          "bits"
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
Top   ToC   RFC3289 - Page 50
       "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."
    DEFVAL         { 0 }
    ::= { diffServMultiFieldClfrEntry 6 }

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

diffServMultiFieldClfrFlowId OBJECT-TYPE
    SYNTAX         Unsigned32 (0..1048575)
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The flow identifier in an IPv6 header."
    ::= { diffServMultiFieldClfrEntry 8 }

diffServMultiFieldClfrProtocol OBJECT-TYPE
    SYNTAX         Unsigned32 (0..255)
    MAX-ACCESS     read-create
    STATUS         current
    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."
    DEFVAL         { 255 }
    ::= { diffServMultiFieldClfrEntry 9 }

diffServMultiFieldClfrDstL4PortMin OBJECT-TYPE
    SYNTAX         InetPortNumber
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The minimum value that the layer-4 destination port number in
       the packet must have in order to match this classifier entry."
    DEFVAL         { 0 }
Top   ToC   RFC3289 - Page 51
    ::= { diffServMultiFieldClfrEntry 10 }

diffServMultiFieldClfrDstL4PortMax OBJECT-TYPE
    SYNTAX         InetPortNumber
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The maximum value that the layer-4 destination port number in
       the packet must have in order to match this classifier entry.
       This value must be equal to or greater than the value specified
       for this entry in diffServMultiFieldClfrDstL4PortMin."
    DEFVAL         { 65535 }
    ::= { diffServMultiFieldClfrEntry 11 }

diffServMultiFieldClfrSrcL4PortMin OBJECT-TYPE
    SYNTAX         InetPortNumber
    MAX-ACCESS     read-create
    STATUS         current
    DESCRIPTION
       "The minimum value that the layer-4 source port number in the
       packet must have in order to match this classifier entry."
    DEFVAL         { 0 }
    ::= { diffServMultiFieldClfrEntry 12 }

diffServMultiFieldClfrSrcL4PortMax OBJECT-TYPE
    SYNTAX         InetPortNumber
    MAX-ACCESS     read-create
    STATUS         current
    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."
    DEFVAL         { 65535 }
    ::= { diffServMultiFieldClfrEntry 13 }

diffServMultiFieldClfrStorage OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL { nonVolatile }
    ::= { diffServMultiFieldClfrEntry 14 }

diffServMultiFieldClfrStatus OBJECT-TYPE
Top   ToC   RFC3289 - Page 52
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    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."
    ::= { diffServMultiFieldClfrEntry 15 }

--
-- Meters
--

diffServMeter          OBJECT IDENTIFIER ::= { diffServMIBObjects 3 }

--
-- This MIB supports a variety of Meters.  It includes a specific
-- definition for Token Bucket Meter, which are but one type of
-- specification. Other metering parameter sets can be defined in other
-- MIBs.

-- Multiple meter elements may be logically cascaded using their
-- diffServMeterSucceedNext and diffServMeterFailNext pointers if
-- required. One example of this might be for an AF PHB implementation
-- that uses multiple level conformance meters.

-- Cascading of individual meter elements in the MIB is intended to be
-- functionally equivalent to multiple level conformance determination
-- of a packet.  The sequential nature of the representation is merely
-- a notational convenience for this MIB.

-- srTCM meters (RFC 2697) can be specified using two sets of
-- diffServMeterEntry and diffServTBParamEntry. The first set specifies
-- the Committed Information Rate and Committed Burst Size
-- token-bucket.  The second set specifies the Excess Burst Size
-- token-bucket.

-- trTCM meters (RFC 2698) can be specified using two sets of
-- diffServMeterEntry and diffServTBParamEntry. The first set specifies
-- the Committed Information Rate and Committed Burst Size
-- token-bucket.  The second set specifies the Peak Information Rate
-- and Peak Burst Size token-bucket.

-- tswTCM meters (RFC 2859) can be specified using two sets of
-- diffServMeterEntry and diffServTBParamEntry. The first set specifies
-- the Committed Target Rate token-bucket.  The second set specifies
Top   ToC   RFC3289 - Page 53
-- the Peak Target Rate token-bucket. diffServTBParamInterval in each
-- token bucket reflects the Average Interval.
--

diffServMeterNextFree OBJECT-TYPE
    SYNTAX       IndexIntegerNextFree
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object contains an unused value for diffServMeterId, or a
       zero to indicate that none exist."
    ::= { diffServMeter 1 }

diffServMeterTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF DiffServMeterEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "This table enumerates specific meters that a system may use to
       police a stream of traffic. The traffic stream to be metered is
       determined by the Differentiated Services Functional Data Path
       Element(s) upstream of the meter i.e. by the object(s) that point
       to each entry in this table.  This may include all traffic on an
       interface.

       Specific meter details are to be found in table entry referenced
       by diffServMeterSpecific."
    ::= { diffServMeter 2 }

diffServMeterEntry OBJECT-TYPE
    SYNTAX       DiffServMeterEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An entry in the meter table describes a single conformance level
       of a meter."
    INDEX { diffServMeterId }
    ::= { diffServMeterTable 1 }

DiffServMeterEntry ::= SEQUENCE  {
    diffServMeterId                IndexInteger,
    diffServMeterSucceedNext       RowPointer,
    diffServMeterFailNext          RowPointer,
    diffServMeterSpecific          RowPointer,
    diffServMeterStorage           StorageType,
    diffServMeterStatus            RowStatus
}
Top   ToC   RFC3289 - Page 54
diffServMeterId OBJECT-TYPE
    SYNTAX       IndexInteger
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "An index that enumerates the Meter entries.  Managers obtain new
       values for row creation in this table by reading
       diffServMeterNextFree."
    ::= { diffServMeterEntry 1 }

diffServMeterSucceedNext OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL      { zeroDotZero }
    ::= { diffServMeterEntry 2 }

diffServMeterFailNext OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
    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
Top   ToC   RFC3289 - Page 55
         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."
    DEFVAL      { zeroDotZero }
    ::= { diffServMeterEntry 3 }

diffServMeterSpecific OBJECT-TYPE
    SYNTAX       RowPointer
    MAX-ACCESS   read-create
    STATUS       current
    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."
    ::= { diffServMeterEntry 4 }

diffServMeterStorage OBJECT-TYPE
    SYNTAX       StorageType
    MAX-ACCESS   read-create
    STATUS       current
    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."
    DEFVAL { nonVolatile }
    ::= { diffServMeterEntry 5 }

diffServMeterStatus OBJECT-TYPE
    SYNTAX       RowStatus
    MAX-ACCESS   read-create
Top   ToC   RFC3289 - Page 56
    STATUS       current
    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."
    ::= { diffServMeterEntry 6 }

--
-- Token Bucket Parameter Table
--

diffServTBParam        OBJECT IDENTIFIER ::= { diffServMIBObjects 4 }

-- Each entry in the Token Bucket Parameter Table parameterize a single
-- token bucket.  Multiple token buckets can be used together to
-- parameterize multiple levels of conformance.

-- Note that an entry in the Token Bucket Parameter Table can be shared
-- by multiple diffServMeterTable entries.
--

diffServTBParamNextFree OBJECT-TYPE
    SYNTAX       IndexIntegerNextFree
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
       "This object contains an unused value for diffServTBParamId, or a
       zero to indicate that none exist."
    ::= { diffServTBParam 1 }

diffServTBParamTable OBJECT-TYPE
    SYNTAX       SEQUENCE OF DiffServTBParamEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
       "This table enumerates a single set of token bucket meter
       parameters that a system may use to police a stream of traffic.
       Such meters are modeled here as having a single rate and a single
       burst size. Multiple entries are used when multiple rates/burst
       sizes are needed."
    ::= { diffServTBParam 2 }

diffServTBParamEntry OBJECT-TYPE
    SYNTAX       DiffServTBParamEntry
    MAX-ACCESS   not-accessible
    STATUS       current


(next page on part 4)

Next Section