Subject: Question on DOCSIS-QOS MIB - Whoops

From: [email-masked]
Date: Mon, 23 Aug 1999 13:16:33 -0700

I left out the word not in an important spot in my original 
copy of this. My sincere apologies to anyone who has now
received this message 6 times.

In the June 25, 1999 draft version of the DOCSIS-QOS MIB document
,the docsQosPktClassEntry of the docsQosPktClassTable object does 
NOT  contain an object 
to specify whether a Classifier is active or inactive. The
SP-RFIv1.1-I02-990731
spec allows for Classifiers to exist in a CM or CMTS in either
an active or inactive state.  Is there an unstated assumption that 
only active Classifiers are returned in this Table?
If this is true it should be stated in the text somewhere in the 
MIB document. If it is not true then an object needs to be added
to hold the state of the Classifier.

Lisa Ruby
General Instrument

---

From: "Mike StJohns" <[email-masked]>
Date: Mon, 23 Aug 1999 14:52:55 -0700

Hi All -

I just ran the qos mib through a basic QA process of checking it against the 
mib compiler.... lots of problems.

1) IMPORTANT!!!!!   Don't use { docsIfMib 6 } as the root - that's been 
assigned to BPIplus mib.  Use { docsIfMib 7 } instead.

2) There are some indexing problems.  I need to do a closer read on what's 
going on here, but for now the docsQosPHSTable should not be used.

3) I fixed some basic syntax problems.  New MIB body is attached.  
Specifically, don't use the "-- -- some comment --" syntax since the second 
pair of dashes closes the comment and the rest of the line tries to be 
interpreted as valid asn1.

4) This mib is missing the constraints section.  This needs to be added post 
haste and resubmit the mib.

5) Generic comment for nroffing anything to be an internet draft - make sure 
you get rid of all the backspace overstrike stuff.  Pipe it through "col" to 
remove them.

Here's the "fixed" mib.  

DOCS-QOS-MIB  DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY, 
	OBJECT-TYPE,
        Integer32, 
	Counter32,
        IpAddress, 
	BITS,
	Unsigned32            
		FROM SNMPv2-SMI
        TEXTUAL-CONVENTION, 
	MacAddress,
        RowStatus, 
	TruthValue,
        DisplayString
                FROM SNMPv2-TC
        OBJECT-GROUP, 
	MODULE-COMPLIANCE  
		FROM SNMPv2-CONF
        ifIndex
		FROM IF-MIB
        docsIfMib
		FROM DOCS-IF-MIB
	;

docsQosMIB   MODULE-IDENTITY
        LAST-UPDATED    "9906251527Z" -- June 25, 1999
        ORGANIZATION    "IETF IPCDN Working Group"
        CONTACT-INFO
            "              Co-Author: Michael Patrick
             Postal:    Motorola ISG
                        20 Cabot Blvd, MS M4-30
                        Mansfield, MA 02048-1193
                        U.S.A.
             Phone:     +1 508 261 5707
             E-mail:    [email-masked]

             Co-Author: John Harvey
             Postal:    Motorola ING
                        20 Cabot Blvd, MS M4-25
                        Mansfield, MA 02048-1193
                        U.S.A.
             Phone:     +1-508-261-4579
             E-mail:    [email-masked]"
        DESCRIPTION
            "This is the management information for
             Quality Of Service (QOS) for DOCSIS 1.1."
        ::= { docsIfMib 7 }                -- BPI mib was docsIfMIb 5
					   -- and BPIplus mib was 6

docsQosMIBObjects  OBJECT IDENTIFIER ::= { docsQosMIB 1 }

-- Textual Conventions

IfDirection ::=  TEXTUAL-CONVENTION
        STATUS          current
        DESCRIPTION
        "Indicates a directionality on an interface, relative to the
        managed device."
        SYNTAX  INTEGER  {
                inbound(1),
                outbound(2)
        }

BitRate ::= TEXTUAL-CONVENTION
        DISPLAY-HINT  "d"
        STATUS         current
        DESCRIPTION   "The rate of traffic in unit of bits per second.
                       Used to specify traffic rate for QOS."
        SYNTAX         Unsigned32

-- Packet Classifier Table -- 

docsQosPktClassTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosPktClassEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "This table describes the packet classification
                        configured on the CM or CMTS.
                        The model is that a packet either received
                        as input from an interface or transmittted
                        for output on an interface may be compared
                        against an ordered list of rules pertaining to
                        the packet contents. Each rule is a row of this
                        table. A matching rule provides a service flow
                        id to to which the packet is classified."
        ::= { docsQosMIBObjects 1 }

docsQosPktClassEntry OBJECT-TYPE
        SYNTAX          DocsQosPktClassEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "An entry in this table provides a single packet
                         classifier rule. The index ifIndex is an ifType
                         of docsCableMaclayer(127)."
        INDEX { ifIndex, docsQosServiceFlowId, docsQosPktClassId }
        ::= { docsQosPktClassTable 1 }

DocsQosPktClassEntry ::= SEQUENCE {
        docsQosPktClassId               Integer32,
        docsQosPktClassDirection        IfDirection,
        docsQosPktClassPriority         Integer32,
        docsQosPktClassIpTosLow         OCTET STRING,
        docsQosPktClassIpTosHigh        OCTET STRING,
        docsQosPktClassIpTosMask        OCTET STRING,
        docsQosPktClassIpProtocol       Integer32,
        docsQosPktClassIpSourceAddr     IpAddress,
        docsQosPktClassIpSourceMask     IpAddress,
        docsQosPktClassIpDestAddr       IpAddress,
        docsQosPktClassIpDestMask       IpAddress,
        docsQosPktClassSourcePortStart  Integer32,
        docsQosPktClassSourcePortEnd    Integer32,
        docsQosPktClassDestPortStart    Integer32,
        docsQosPktClassDestPortEnd      Integer32,
        docsQosPktClassDestMacAddr      MacAddress,
        docsQosPktClassDestMacMask      MacAddress,
        docsQosPktClassSourceMacAddr    MacAddress,
        docsQosPktClassEnetProtocolType INTEGER,
        docsQosPktClassEnetProtocol     Integer32,
        docsQosPktClassUserPriLow       Integer32,
        docsQosPktClassUserPriHigh      Integer32,
        docsQosPktClassVlanId           Integer32
      }

docsQosPktClassId       OBJECT-TYPE
        SYNTAX          Integer32 (1..65535)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "Index assigned to packet classifier entry by
                         the CMTS which is unique per serivce flow."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.3.2"
        ::= { docsQosPktClassEntry 1 }

docsQosPktClassDirection OBJECT-TYPE
        SYNTAX          IfDirection
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
        "Indicates the direction inBound(1) or outBound(2) to which the
         rule for this row applies"
        ::= { docsQosPktClassEntry 2 }

docsQosPktClassPriority OBJECT-TYPE
        SYNTAX          Integer32 (0..255)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "The value specificies the order of evaluation
                         of the classifiers.
                         The higher the value the higher the priority."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.3.5"
        ::= { docsQosPktClassEntry 3 }

docsQosPktClassIpTosLow OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(1))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "The low value of a range of TOS byte values."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.1"
        ::= { docsQosPktClassEntry 4 }

docsQosPktClassIpTosHigh OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(1))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "The 8-bit high value of a range of TOS byte
                         values."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.1"
        ::= { docsQosPktClassEntry 5 }

docsQosPktClassIpTosMask OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(1))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "The mask value is bitwise ANDed with TOS byte
                         in ip packet and this value is used check for
                         the range checking of TosLow and TosHigh."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.1"
        ::= { docsQosPktClassEntry 6 }

docsQosPktClassIpProtocol OBJECT-TYPE
        SYNTAX          Integer32 (0..257)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object indicates the value of the IP
                        Protocol field required for IP packets to match
                        this rule. The value 256 matches traffic with
                        any IP Protocol value.
                        The value 257 by convention matches both TCP
                        and UDP. A value greater than 257 matches no
                        IP Protocol values."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.2"
        ::= { docsQosPktClassEntry 7 }

docsQosPktClassIpSourceAddr OBJECT-TYPE
        SYNTAX          IpAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This object specifies the value of the IP
                         Source Address required for packets to match
                         this rule. An IP packet matches the rule when
                         the packet ip source address bitwise ANDed
                         with the docsQosPktClassIpSourceMask value
                         equals the docsQosPktClassIpSourceAddr value."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.3"
        ::= { docsQosPktClassEntry 8 }

docsQosPktClassIpSourceMask OBJECT-TYPE
        SYNTAX          IpAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object specifies which bits of a packet's
                        IP Source Address that are compared to match
                        this rule.
                        An IP packet matches the rule when the packet
                        source address bitwise ANDed with the
                        docsQosPktClassIpSourceMask value equals the
                        docsQosIpPktClassSourceAddr value."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.4"
        ::= { docsQosPktClassEntry 9 }

docsQosPktClassIpDestAddr OBJECT-TYPE
        SYNTAX          IpAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This object specifies the value of the IP
                         Destination Address required for packets to
                         match this rule. An IP packet matches the rule
                         when the packet IP destination address
                         bitwise ANDed with the
                         docsQosPktClassIpDestMask value equals the
                         docsQosPktClassIpDestAddr value."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.5"
        ::= { docsQosPktClassEntry 10 }

docsQosPktClassIpDestMask OBJECT-TYPE
        SYNTAX          IpAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object specifies which bits of a packet's
                        IP Destination Address that are compared to
                        match this rule.
                        An IP packet matches the rule when the packet
                        destination address bitwise ANDed with the
                        docsQosPktClassIpDestMask value equals the
                        docsQosPktClassIpDestAddr value."
        REFERENCE        "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.6"
        ::= { docsQosPktClassEntry 11}

docsQosPktClassSourcePortStart OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This object specifies the low end inclusive
                         range of TCP/UDP source port numbers to which
                         a packet is compared."
        REFERENCE        "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.7"
        ::= { docsQosPktClassEntry 12 }

docsQosPktClassSourcePortEnd OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This object specifies the high end inclusive
                         range of TCP/UDP source port numbers to which
                         a packet is compared."
        REFERENCE        "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.8"
        ::= { docsQosPktClassEntry 13 }

docsQosPktClassDestPortStart OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "This object specifies the low end inclusive
                         range of TCP/UDP destination port numbers to
                         which a packet is compared."
        REFERENCE        "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.9"
        ::= { docsQosPktClassEntry 14 }

docsQosPktClassDestPortEnd OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object specifies the high end inclusive
                        range of TCP/UDP source port numbers to which
                        a packet is compared."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.5.10"
        ::= { docsQosPktClassEntry 15 }

docsQosPktClassDestMacAddr OBJECT-TYPE
        SYNTAX          MacAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "An Ethernet packet matches an entry when its
                        destination MAC address bitwise ANDed with
                        docsQosPktClassDestMacMask equals the value of
                        docsQosPktClassDestMacAddr."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.6.1"
        ::= { docsQosPktClassEntry 16 }

docsQosPktClassDestMacMask OBJECT-TYPE
        SYNTAX          MacAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "An Ethernet packet matches an entry when its
                        destination MAC address bitwise ANDed with
                        docsQosPktClassDestMacMask equals the value of
                        docsQosPktClassDestMacAddr."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.6.1"
        ::= { docsQosPktClassEntry 17 }

docsQosPktClassSourceMacAddr OBJECT-TYPE
        SYNTAX          MacAddress
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "An Ethernet packet matches this entry when its
                        source MAC address equals the value of
                        this object."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.6.2"
        ::= { docsQosPktClassEntry 18 }

docsQosPktClassEnetProtocolType OBJECT-TYPE
        SYNTAX          INTEGER {
                          none(0),
                          ethertype(1),
                          dsap(2)
                        }
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object indicates the format of the layer 3
                        protocol id in the Ethernet packet. A value of
                        none(0) means that the rule does not use the
                        layer 3 protocol type as a matching criteria.

                        A value of ethertype(1) means that the rule
                        applies only to frames which contains an
                        EtherType value. Ethertype values are contained
                        in packets using the Dec-Intel-Xerox (DIX)
                        encapsulation or the RFC1042 Sub-Network Access
                        Protocol (SNAP) encapsulation formats.

                        A value of dsap(2) means that the rule applies
                        only to frames using the IEEE802.3
                        encapsulation format with a Destination Service
                        Access Point (DSAP) other
                        than 0xAA (which is reserved for SNAP).

                        If the Ethernet frame contains an 802.1P/Q Tag
                        header (i.e. EtherType 0x8100), this object
                        applies to the embedded EtherType field within
                        the 802.1P/Q header."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.6.3"
        ::= { docsQosPktClassEntry 19 }

docsQosPktClassEnetProtocol OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION
        "If docsQosEthPktClassProtocolType is none(0), this object is
        ignored when considering whether a packet matches the current
        rule.
        If dosQosEthPktClassEncap is ethertype(1), this object gives the
        16-bit value of the EtherType that the packet must match in
        order to match the rule.
        If docsQosEthPktClassEncap is dsap(2), the lower 8 bits of this
        object's value must match the DSAP byte of the packet in order
        to match the rule.

        If the Ethernet frame contains an 802.1P/Q Tag header (i.e.
        EtherType 0x8100), this object applies to the embedded EtherType
        field within the 802.1P/Q header."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.6.3"
        ::= { docsQosPktClassEntry 20 }

docsQosPktClassUserPriLow OBJECT-TYPE
        SYNTAX          Integer32 (0..7)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object applies only to Ethernet frames
                        using the 802.1P/Q tag header (indicated with
                        EtherType 0x8100). Such frames include a 16-bit
                        Tag that contains a 3 bit Priority field and
                        a 12 bit VLAN number.

                        Tagged Ethernet packets must have a 3-bit
                        Priority field within the range of
                        docsQosPktClassPriLow and
                        docsQosPktClassPriHigh in order to match this
                        rule."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.7.1"
        ::= { docsQosPktClassEntry 21 }

docsQosPktClassUserPriHigh OBJECT-TYPE
        SYNTAX          Integer32 (0..7)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object applies only to Ethernet frames
                        using the 802.1P/Qtag header (indicated with
                        EtherType 0x8100). Such frames include a 16-bit
                        Tag that contains a 3 bit Priority field and
                        a 12 bit VLAN number.

                        Tagged Ethernet packets must have a 3-bit
                        Priority field within the range of
                        docsQosPktClassPriLow and
                        docsQosPktClassPriHigh in order to match this
                        rule."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.7.1"
        ::= { docsQosPktClassEntry 22 }

docsQosPktClassVlanId OBJECT-TYPE
        SYNTAX          Integer32 (0..4095)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "This object applies only to Ethernet frames
                        using the 802.1P/Q tag header.

                        If this object's value is nonzero, tagged
                        packets must have a VLAN Identifier that matches
                        the value in order to match the rule.
                        If this object's value is zero, it matches
                         *any* VLAN Identifier of a tagged packet."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.7.2"
        ::= { docsQosPktClassEntry 23 }

-- Qos Parameter Set Table 

docsQosParamSetTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosParamSetEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "This table describes the set of DOCSIS QoS
                        parameters defined in a  managed device.
                        Each entry in this table is used to define one
                        Qos Parameter Set.

                        Only rows of serviceClass type are read-create.
                        The serviceFlow type rows are read-only."
        ::= { docsQosMIBObjects 2 }

docsQosParamSetEntry OBJECT-TYPE
        SYNTAX          DocsQosParamSetEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION
        "A unique set of Qos parameters."
        INDEX {
                docsQosParamSetType,
                docsQosParamSetIndex
              }
        ::= { docsQosParamSetTable 1 }

DocsQosParamSetEntry ::= SEQUENCE {         
	docsQosParamSetType		  INTEGER,
        docsQosParamSetIndex              Unsigned32,
        docsQosParamSetRowStatus          RowStatus,
        docsQosParamSetServiceClassName   DisplayString,
        docsQosParamSetPriority           Integer32,
        docsQosParamSetMaxTrafficRate     BitRate,
        docsQosParamSetMaxTrafficBurst    Unsigned32,
        docsQosParamSetMinReservedRate    BitRate,
        docsQosParamSetMinReservedPkt     Integer32,
        docsQosParamSetActiveTimeout      Integer32,
        docsQosParamSetAdmittedTimeout    Integer32,
        docsQosParamSetMaxConcatBurst     Integer32,
        docsQosParamSetServiceFlowType    INTEGER,
        docsQosParamSetRequestPolicy      BITS,
        docsQosParamSetNomPollInterval    Unsigned32,
        docsQosParamSetTolPollJitter      Unsigned32,
        docsQosParamSetUnsolicitGrantSize Integer32,
        docsQosParamSetNomGrantInterval   Unsigned32,
        docsQosParamSetTolGrantJitter     Unsigned32,
        docsQosParamSetGrantsPerInterval  Integer32,
        docsQosParamSetTosAndMask         OCTET STRING,
        docsQosParamSetTosOrMask          OCTET STRING,
        docsQosParamSetMinPhsSize         Integer32,
        docsQosParamSetMaxLatency         Unsigned32
        }

docsQosParamSetType     OBJECT-TYPE
        SYNTAX          INTEGER {                            serviceFlow
(1),                            serviceClass (2)
                        }
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "Defines the type of parameter set.

                         A serviceFlow(1) type is used to define a
                         parameter set associated with a service flow
                         and are read-only entries in this table. The
                         entries are added and deleted by the device.

                         A serviceClass(2) type is used to define a
                         parameter set associated with a service class
                         name and are read-create entries in this
                         table."
        ::= { docsQosParamSetEntry 1 }

docsQosParamSetIndex    OBJECT-TYPE
        SYNTAX          Unsigned32 (1..4294967295)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION     "Unique index for a QOS parameter set for each
                         docsQosParamSetType."
        ::= { docsQosParamSetEntry 2 }

docsQosParamSetRowStatus OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Used to control creation and deletion of
                        rows of only type serviceClass(2)."
        ::= { docsQosParamSetEntry 3 }

docsQosParamSetServiceClassName OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Refers to the Service Class Name that the
                        parameter set values were derived.
                        If service class name was not used to specify
                        parameter set values then used zero length
                        DisplayString value."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.3.4"
        ::= { docsQosParamSetEntry 4 }

docsQosParamSetPriority OBJECT-TYPE
        SYNTAX          Integer32 (0..7)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "The relative priority of a service flow.
                        Higher numbers indicate higher priority.
                        This priority should only be used to diffentiate
                        service flow with identical parameter sets."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.2"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 5 }

docsQosParamSetMaxTrafficRate OBJECT-TYPE
        SYNTAX          BitRate
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Maximum data rate allowed for this service flow
                        in bits/sec. Must could all MAC frame data PDU
                        from the bytes following the MAC header HCS to
                        the end of the CRC. The number of bytes
                        forwarded is limited during any time interval.
                        The value zero means no maximum traffic rate is
                        enforced."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.3"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 6 }

docsQosParamSetMaxTrafficBurst OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum token bucket size in bytes
                        for this parameter set. The value is calculated
                        from the byte following the MAC header HCS to
                        the end of the CRC."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.4"
        DEFVAL          { 1522 }
        ::= { docsQosParamSetEntry 7 }

docsQosParamSetMinReservedRate OBJECT-TYPE
        SYNTAX          BitRate
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the guaranteed minimum rate in
                        bits/sec for this parameter set. The value is
                        calculated from the byte following the MAC
                        header HCS to the end of the CRC. The default
                        0, meaning no bandwidth is reserved."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.5"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 8 }

docsQosParamSetMinReservedPkt OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies an assumed minimum packet size in
                        bytes for which the
                        docsQosParamSetMinReservedRate will
                        be provided. The value is calculated from
                        the byte following the MAC header HCS to the
                        end of the CRC."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.6"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 9 }

docsQosParamSetActiveTimeout OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum duration in seconds that
                        resources remain unused on an active service
                        flow before CMTS signals that both active and
                        admitted parameters set are null.
                        The default value of zero signifies an
                        infinite amount of time."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.7"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 10 }

docsQosParamSetAdmittedTimeout OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum duration in seconds that
                        resources remain in admitted state before
                        resources must be released.
                        The value of zero signifies an infinite amount
                        of time."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.5.9"
        DEFVAL          { 200 }
        ::= { docsQosParamSetEntry 11 }

docsQosParamSetMaxConcatBurst OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum concatenated burst in
                        bytes which a service flow is allowed.
                        The value is calculated from the FC byte of the
                        Concatenation MAC Header to the last CRC in
                        concatenated MAC frame.
                        The value of zero specifies no maximum burst."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.1"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 12 }

docsQosParamSetServiceFlowType OBJECT-TYPE
        SYNTAX          INTEGER {
                          undefined (1),
                          bestEffort (2),
                          nonRealTimePollingService(3),
                          realTimePollingService(4),
                          unsolictedGrantServiceWithAD(5),
                          unsolictedGrantService(6)
                        }
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies which upstream service is used for
                        upstream transmission."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.2"
        DEFVAL          { bestEffort }
        ::= { docsQosParamSetEntry 13 }

docsQosParamSetRequestPolicy OBJECT-TYPE
        SYNTAX          BITS {
                          broadcastReqOpp (0),
			  priorityReqMulticastReq (1),
                          reqDataForReq (2),
			  reqDataForData (3),
			  piggybackReqWithData (4),
			  concatenateData (5),
                          fragmentData (6),
                          supressPayloadHeaders (7),
                          dropPktsExceedUGSize (8)
                        }
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies which IUC opportunities the CM uses
                        for upstream tranmission requests and packet
                        transmissions.
                        A bit value of 1 mean is must not use that
                        opportunity for transmission."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.3"
        DEFVAL          { {} }
        ::= { docsQosParamSetEntry 14 }

docsQosParamSetNomPollInterval OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the nominal interval in microseconds
                        between successive unicast request
                        opportunities on an upstream service flow."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.4"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 15 }

docsQosParamSetTolPollJitter OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum amount of time in
                        microseconds that the unicast request interval
                        may be delayed from the nominal periodic
                        schedule."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.5"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 16 }

docsQosParamSetUnsolicitGrantSize OBJECT-TYPE
        SYNTAX          Integer32 (0..65535)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the unsolicited grant size in bytes.
                        The grant size includes the entired MAC frame
                        data PDU from the Frame Control byte to end of
                        the MAC frame."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.6"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 17 }

docsQosParamSetNomGrantInterval OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the nominal interval in microseconds
                        between successive data grant opportunities
                        on an upstream service flow."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.7"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 18 }

docsQosParamSetTolGrantJitter OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum amount of time in
                        microseconds that the transmission opportunities
                        may be delayed from the nominal periodic
                        schedule."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.8"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 19 }

docsQosParamSetGrantsPerInterval OBJECT-TYPE
        SYNTAX          Integer32 (0..255)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the number of data grants per Nominal
                        Grant Interval
                        (docsQosParamSetNomGrantInterval)."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.9"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 20 }

docsQosParamSetTosAndMask OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(1))
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the AND mask for IP TOS byte."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.10"
        DEFVAL          { '00'H }
        ::= { docsQosParamSetEntry 21 }

docsQosParamSetTosOrMask OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(1))
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the OR mask for IP TOS byte."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.10"
        DEFVAL          { '00'H }
        ::= { docsQosParamSetEntry 22 }

docsQosParamSetMinPhsSize OBJECT-TYPE
        SYNTAX          Integer32 (0..255)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the minimum payload header suppression
                        size in bytes to be used by CM."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.6.11"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 23 }

docsQosParamSetMaxLatency OBJECT-TYPE
        SYNTAX          Unsigned32
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Specifies the maximum latency between the
                        reception of a packet by the CMTS on its NSI
                        and the forwarding of the packet to the RF
                        interface."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.7.1"
        DEFVAL          { 0 }
        ::= { docsQosParamSetEntry 24 }

-- Service Flow Table

docsQosServiceFlowTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosServiceFlowEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "This table describes the set of Docsis-QOS
                         Service Flows active in a managed device. "
        ::= { docsQosMIBObjects 3 }

docsQosServiceFlowEntry OBJECT-TYPE
        SYNTAX          DocsQosServiceFlowEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "Describe a service flow.
                         An entry in the table exists for each
                         Service Flow ID. The ifIndex is an
                         ifType of docsCableMaclayer(127)."
        INDEX { ifIndex, docsQosServiceFlowId }
        ::= { docsQosServiceFlowTable 1 }

DocsQosServiceFlowEntry ::= SEQUENCE {
        docsQosServiceFlowId                       Unsigned32,
        docsQosServiceFlowProvisionedParamSetIndex Unsigned32,
        docsQosServiceFlowAdmittedParamSetIndex    Unsigned32,
        docsQosServiceFlowActiveParamSetIndex      Unsigned32,
        docsQosServiceFlowSID                      Unsigned32
        }

docsQosServiceFlowId    OBJECT-TYPE
        SYNTAX          Unsigned32 (0..10000) -- fix this range msj
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "An index assigned to a service flow by CMTS."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.3.2"
        ::= { docsQosServiceFlowEntry 1 }

docsQosServiceFlowProvisionedParamSetIndex  OBJECT-TYPE
        SYNTAX          Unsigned32 (0..4294967295)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Refers to an entry in docsQosParamSetTable
                        with a docsQosParamSetType of serviceFlow(1)
                        that contains the provisioned parameter set
                        values for this service flow.
                        The value is docsQosParamSetIndex for the
                        provisioned parameters set associated with
                        this service flow entry.
                        This object return zero if the
                        docsQosParamSetEntry does not exist."
        ::= { docsQosServiceFlowEntry 3 }

docsQosServiceFlowAdmittedParamSetIndex  OBJECT-TYPE
        SYNTAX          Unsigned32 (0..4294967295)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Refers to an entry in docsQosParamSetTable
                        with a docsQosParamSetType of serviceFlow(1)
                        that contains the admitted parameter set
                        values for this service flow.
                        The value is docsQosParamSetIndex for the
                        admitted parameters set associated with
                        this service flow entry.
                        This object return zero if the
                        docsQosParamSetEntry does not exist."
        ::= { docsQosServiceFlowEntry 4 }

docsQosServiceFlowActiveParamSetIndex  OBJECT-TYPE
        SYNTAX          Unsigned32 (0..4294967295)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Refers to an entry in docsQosParamSetTable
                        with a docsQosParamSetType of serviceFlow(1)
                        that contains the active parameter set
                        values for this service flow.
                        The value is docsQosParamSetIndex for the
                        active parameters set associated with
                        this service flow entry.
                        This object return zero if the
                        docsQosParamSetEntry does not exist."
        ::= { docsQosServiceFlowEntry 5 }

docsQosServiceFlowSID  OBJECT-TYPE
        SYNTAX          Unsigned32 (1..16383)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Service Identifier (SID) assigned to an
                        addmitted or active service flow."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.3.3"
        ::= { docsQosServiceFlowEntry 6 }

-- Service Class Table (CMTS ONLY) -- 
docsQosServiceClassTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosServiceClassEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "This table describes the set of Docsis-QOS
                         Service Classes in a CMTS. "
        ::= { docsQosMIBObjects 4 }

docsQosServiceClassEntry OBJECT-TYPE
        SYNTAX          DocsQosServiceClassEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "A provisioned service class."
        INDEX {
                 docsQosServiceClassName
              }
        ::= { docsQosServiceClassTable 1 }

DocsQosServiceClassEntry ::= SEQUENCE {
        docsQosServiceClassName          DisplayString,
        docsQosServiceClassParamSetIndex Unsigned32,
        docsQosServiceClassStatus        RowStatus
        }

docsQosServiceClassName OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Service Class Name."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.2.3.4"
        ::= { docsQosServiceClassEntry 1 }

docsQosServiceClassParamSetIndex OBJECT-TYPE
        SYNTAX          Unsigned32 (1..4294967295)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Refers  to an entry in docsQosParamSetTable
                        with a docsQosParamSetType of serviceClass(2).
                        The value is docsQosParamSetIndex for the
                        parameters set associated with this service
                        class entry."
        ::= { docsQosServiceClassEntry 2 }

docsQosServiceClassStatus OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Used to create or delete rows in this table.
                        This object should delete the entry in
                        docsQosParamSetTable referenced by
                        docsQosServiceClassParamSetIndex first
                        before deleting this entry."
        ::= { docsQosServiceClassEntry 3 }

-- Service Class PolicyTable 

docsQosServiceClassPolicyTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosServiceClassPolicyEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "This table describes the set of Docsis-QOS
                        Service Class Policies.

                        This table is an adjunt to the
                        docsDevFilterPolicy table.  Entries in
                        docsDevFilterPolicy table can  point to
                        specific rows in this table.

                        This table permits mapping a packet to a service
                        class name of an active service flow so long as
                        a classifier does not exist at a higher
                        priority.
                       "
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix E.2.1"
        ::= { docsQosMIBObjects 5 }

docsQosServiceClassPolicyEntry OBJECT-TYPE
        SYNTAX          DocsQosServiceClassPolicyEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "A service class name policy entry."
        INDEX {
                docsQosServiceClassPolicyIndex
              }
        ::= { docsQosServiceClassPolicyTable 1 }

DocsQosServiceClassPolicyEntry ::= SEQUENCE {
        docsQosServiceClassPolicyIndex        Integer32,
        docsQosServiceClassPolicyName         DisplayString,
        docsQosServiceClassPolicyRulePriority Integer32,
        docsQosServiceClassPolicyStatus       RowStatus
        }

docsQosServiceClassPolicyIndex OBJECT-TYPE
        SYNTAX          Integer32 (1..2147483647)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "Index value to uniquely identify an entry in
                        this table."
        ::= { docsQosServiceClassPolicyEntry 1 }

docsQosServiceClassPolicyName OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Service Class Name to identify the name of the
                        service class flow to which the packet should be
                        directed."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix E.2.1"
        ::= { docsQosServiceClassPolicyEntry 2 }

docsQosServiceClassPolicyRulePriority OBJECT-TYPE
        SYNTAX          Integer32 (0..255)
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Service Class Policy rule priority for the
                        entry."
        REFERENCE      "SP-RFIv1.1-I01-990311, Appendix C.2.1.3.5"
        ::= { docsQosServiceClassPolicyEntry 3 }

docsQosServiceClassPolicyStatus OBJECT-TYPE
        SYNTAX          RowStatus
        MAX-ACCESS      read-create
        STATUS          current
        DESCRIPTION    "Used to create or delete rows in this table.
                        This object should not be deleted if it is
                        reference by an entry in docsDevFilterPolicy.
                        The reference should be deleted first."
        ::= { docsQosServiceClassPolicyEntry 4 }

-- Payload Header Suppression(PHS) Table
docsQosPHSTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF DocsQosPHSEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "This table describes set of payload header
                         suppression entries."
        ::= { docsQosMIBObjects 6 }

docsQosPHSEntry OBJECT-TYPE
        SYNTAX          DocsQosPHSEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "A payload header supression entry"
        INDEX { docsQosServiceFlowId, docsQosPHSIndex }
        ::= { docsQosPHSTable 1 }

DocsQosPHSEntry ::= SEQUENCE {
        docsQosPHSIndex    Integer32,         
	docsQosPHSField    OCTET STRING,         
	docsQosPHSMask     OCTET STRING,         
	docsQosPHSSize     Integer32,         
	docsQosPHSVerify   TruthValue
        }

docsQosPHSIndex         OBJECT-TYPE
        SYNTAX          Integer32 (1..255)
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION    "Payload header suppression index uniquely
                        references an entry on a per
                        docsQosServiceFlowId."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.2.10.2"
        ::= { docsQosPHSEntry 1 }

docsQosPHSField         OBJECT-TYPE
        SYNTAX          OCTET STRING (SIZE(0..255))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Payload header suppression field defines the
                        bytes of the header which must be
                        supressed/restored by the sending/receiving
                        device.

                        The number of octets in this object should be
                        the same as the value of docsQosPHSSize."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.2.10.1"
        ::= { docsQosPHSEntry 2 }

docsQosPHSMask          OBJECT-TYPE
        SYNTAX          OCTET STRING(SIZE(0..32))
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Payload header suppression mask defines the
                        bit mask which used in combination with the
                        docsQosPHSField defines which bytes in header
                        must be supressed/restored by the sending or
                        receiving device.

                        Each bit of this bit mask corresponds to a byte
                        in the docsQosPHSField, with the least
                        significant  bit corresponding to first byte of
                        the docsQosPHSField.

                        Each bit of the bit mask specifies whether of
                        not the corresponding byte should be supressed
                        in the packet. A bit value of '1' indicates that
                        the byte should be suppressed by the sending
                        device and restored by the receiving device.
                        A bit value of '0' indicates that
                        the byte should not be suppressed by the sending
                        device or restored by the receiving device.

                        If the bit mask does not contain a bit for each
                        byte in the docsQosPHSField then the bit mask is
                        extended with bit values of '1' to be the
                        neccessary length."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.2.10.3"
        ::= { docsQosPHSEntry 3 }

docsQosPHSSize          OBJECT-TYPE
        SYNTAX          Integer32 (0..255)
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Payload header suppression size specifies the
                        number of bytes in the header to be suppressed
                        and restored.

                        The value of this object must match the number
                        of bytes in the docsQosPHSField."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.2.10.4"
        ::= { docsQosPHSEntry 4 }

docsQosPHSVerify       OBJECT-TYPE
        SYNTAX          TruthValue
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION    "Payload header suppression verification value of
                        'true' the sender must verify docsQosPHSField
                        is the same as what is contained in the packet
                        to be suppressed."
        REFERENCE       "SP-RFIv1.1-I01-990311, Appendix C.2.2.10.5"
        ::= { docsQosPHSEntry 5 }

END

---

From: "Mike StJohns" <[email-masked]>
Date: Mon, 23 Aug 1999 17:19:07 -0700

OK - Found the issue with docsQosPHSTable.  Basically, this table extends 
docsQosServiceFlowTable and is required to have the same index values (plus 
the new one).  So the fix is to insert "ifIndex" at the beginning of the index 
list.

This MIB compiles clean (minus the conformance/compliance section).  Please 
use it for any future work.

Mike

IMPORTS
        MODULE-IDENTITY, 
	OBJECT-TYPE,
        Integer32, 
	Counter32,
        IpAddress, 
	BITS,
	Unsigned32            
		FROM SNMPv2-SMI
        TEXTUAL-CONVENTION, 
	MacAddress,
        RowStatus, 
	TruthValue,
        DisplayString
                FROM SNMPv2-TC
        OBJECT-GROUP, 
	MODULE-COMPLIANCE  
		FROM SNMPv2-CONF
        ifIndex
		FROM IF-MIB
        docsIfMib
		FROM DOCS-IF-MIB
	;

             Co-Author: John Harvey
             Postal:    Motorola ING
                        20 Cabot Blvd, MS M4-25
                        Mansfield, MA 02048-1193
                        U.S.A.
             Phone:     +1-508-261-4579

-- Textual Conventions

-- Service Flow Table

        INDEX { ifIndex, docsQosServiceFlowId, docsQosPHSIndex }

END