IPCDN Working Group Michael Patrick Motorola ING August 7, 1998 Data Over Cable System Quality of Service Management Information Base (DOCSIS-QOS MIB) Status of this Memo This document is an Internet Draft. Internet Drafts are working documents of the Internet Engineering Task Force (IETF), its Areas, and its Working Groups. Note that other groups may also distribute working documents as Internet Drafts. Internet Drafts are draft documents valid for a maximum of six months. Internet Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet Drafts as reference material or to cite them other than as a "working draft" or "work in progress." Please check the I-D abstract listing contained in each Internet Draft directory to learn the current status of this or any Internet Draft. Distribution of this document is unlimited. Revision History Rev Date Coments --- ------- ------------------------------------------- -00 8/7/98 Original to IPCDN for comment. This is an INCOMPLETE WORKING DRAFT distributed for comment. Changes from [DOCSIS-QOS] working group include: - Definition of IP Packet Classification and Ethernet Packet Classification objects - A "nesting" flow classification mechanism to permit both IP and Ethernet classification - Updates to match the D04 (06/03/98) spec. Expires January 1999 *** WORKING DRAFT *** [Page 1] March 11, 1998 Table of Contents 1 Introduction This document describes the control of the QOS features for the Cable Modem Termination System (CMTS) and Cable Modem (CM) entities of the Data Over Cable System Interface Specification (DOCSIS). The DOCSIS QOS framework can be found in [DOCSIS-QOS]. 2 The Network Management Framework The Internet-standard Network Management Framework consists of three components. They are: RFC 1155 which defines the SMI, the mechanisms used for describing and naming objects for the purpose of management. RFC 1212 defines a more concise description mechanism, which is wholly consistent with the SMI. RFC 1156 which defines MIB-I, the core set of managed objects for the Internet suite of protocols. RFC 1213, defines MIB-II, an evolution of MIB-I based on implementation experience and new operational requirements. RFC 1157 which defines the SNMP, the protocol used for network access to managed objects. The Framework permits new objects to be defined for the purpose of experimentation and evaluation. The SNMPv2 Network Management Framework consists of four major components. They are: 0 RFC 1442 which defines the SMI, the mechanisms used for describing and naming objects for the purpose of management. 0 STD 17, RFC 1213 defines MIB-II, the core set of managed objects for the Internet suite of protocols. 0 RFC 1445 which defines the administrative and other architectural aspects of the framework. 0 RFC 1448 which defines the protocol used for network access to managed objects. Expires January 1999 *** WORKING DRAFT *** [Page 2] March 11, 1998 The Framework permits new objects to be defined for the purpose of experimentation and evaluation. 3 Objects Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using the subset of Abstract Syntax Notation One (ASN.1) [ASN] defined in the SMI. In particular, each object has a name, a syntax, and an encoding. The name is an object identifier, an administratively assigned name, which specifies an object type. The object type together with an object instance serves to uniquely identify a specific instantiation of the object. For human convenience, we often use a textual string, termed the OBJECT DESCRIPTOR, to also refer to the object type. The syntax of an object type defines the abstract data structure corresponding to that object type. The ASN.1 language is used for this purpose. However, the SMI [RFC1155] purposely restricts the ASN.1 constructs which may be used. These restrictions are explicitly made for simplicity. The encoding of an object type is simply how that object type is represented using the object type's syntax. Implicitly tied to the notion of an object type's syntax and encoding is how the object type is represented when being transmitted on the network. The SMI specifies the use of the basic encoding rules of ASN.1 [BER] subject to the additional requirements imposed by the SNMP. 3.1. Format of Definitions Section 5 contains contains the specification of all object types contained in this MIB module. The object types are defined using the conventions defined in the SMI, as amended by the extensions specified in [RFC1212] 4. Overview 4.1. Textual Conventions 4.2 Structure of MIB Expires January 1999 *** WORKING DRAFT *** [Page 3] March 11, 1998 5. Definitions Expires January 1999 *** WORKING DRAFT *** [Page 4] March 11, 1998 -- -- Docsis QOS Extensions MIB -- DOCS-QOS-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, TimeTicks, IpAddress, UInteger32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, MacAddress, RowStatus, TruthValue, DisplayString FROM SNMPv2-TC OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF ifIndex FROM IF-MIB docsIfMib,InterfaceIndexOrZero FROM DOCS-IF-MIB docsDev FROM DOCS-CABLE-DEVICE-MIB Protocol, Port, BitRate, MessageSize FROM INTEGRATED-SERVICES-MIB; docsQosMIB MODULE-IDENTITY LAST-UPDATED "98031100000" -- Mar 11, 1998 ORGANIZATION "IETF IPCDN Working Group" CONTACT-INFO " 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: mpatrick@dma.isg.mot.com" DESCRIPTION "This is the MIB Module for QOS extensions to the MCNS protocol" ::= { docsIfMib 6 } -- BPI mib was docsIfMIb 5 Expires January 1999 *** WORKING DRAFT *** [Page 5] March 11, 1998 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) } ProtocolOrZero ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "The value of the IP Protocol field of an IP Datagram Header. This identifies the protocol layer above IP. For example, the value 6 is used for TCP and the value 17 is used for UDP. The values of this field are defined in the As- signed Numbers RFC. A value of Zero indicates object-specific treatment." SYNTAX INTEGER (0..255) Milliseconds16 ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "A time interval in milliseconds." SYNTAX INTEGER (0..65535) -- -- ServiceClassRefType: the creator of service class --- ServiceClassRefType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Indicates the process that created the Service Class. Each process has its own Service Class ID numbering space, to avoid having to co-ordinate among them. A Service Class Reference consists of a ServiceClassRefType and a ServiceClassRefId, where the RefId must be unique for a given RefType." SYNTAX INTEGER { none(0), -- No reference other(1), -- Classified via a mechanism other than below cmtsStatic(2), -- CMTS SNMP or static config Expires January 1999 *** WORKING DRAFT *** [Page 6] March 11, 1998 cmtsDynamic(3), -- CMTS-originated dynamic SID cmRegistration(4), -- CM registration file TLVs cmStatic(5), -- CM SNMP, reg varbinds, or static config cmDynamic(6) -- CM-originated dynamic SID } -- -- FlowRefType: the creator of flow (and its id number) --- FlowRefType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Indicates the process that created the Flow. Each process has its own Flow ID numbering space, to avoid having to co-ordinate among them. A Flow Reference consists of a FlowRefType and a FlowRefId, where the FlowRefId must be unique for a given FlowRefType." SYNTAX INTEGER { none(0), -- No reference other(1), -- Classified by mechanism other than below cmtsStatic(2), -- CMTS SNMP or static config cmtsDynamic(3), -- CMTS-originated flow (e.g. RSVP) cmRegistration(4), -- CM registration file TLVs cmStatic(5), -- CM SNMP, reg varbinds, or static config cmDynamic(6) -- CM-originated dynamic SID (e.g. SBM) } -- fyi, From INTEGRATED-SERVICES-MIB -- -- Port ::= TEXTUAL-CONVENTION -- DISPLAY-HINT "d" -- STATUS current -- DESCRIPTION -- "The value of the UDP or TCP Source or Destina- -- tion Port field, a virtual destination port or -- generalized port identifier used with the IPSEC -- Authentication Header or Encapsulating Security -- Payload, or other session discriminator. If it -- is not used, the value should be of length 0. -- This pair, when coupled with the IP Addresses -- of the source and destination system and the IP -- protocol field, uniquely identifies a data -- stream." -- SYNTAX OCTET STRING (SIZE(2..4)) -- -- BitRate ::= TEXTUAL-CONVENTION -- DISPLAY-HINT "d" Expires January 1999 *** WORKING DRAFT *** [Page 7] March 11, 1998 -- STATUS current -- DESCRIPTION -- "The rate, in bits/second, that data may move -- in the context. Applicable contexts minimally -- include the speed of an interface or virtual -- circuit, the data rate of a (potentially aggre- -- gated) data flow, or the data rate to be allo- -- cated for use by a flow." -- SYNTAX INTEGER (0..'7FFFFFFF'h) -- -- MessageSize ::= TEXTUAL-CONVENTION -- DISPLAY-HINT "d" -- STATUS current -- DESCRIPTION -- "The size of a message in bytes. This is used -- to specify the minimum and maximum size of a -- message along an integrated services route." -- SYNTAX INTEGER (0..'7FFFFFFF'h) -- ****************************************************************** -- -- IP Packet Classification Table -- -- The table is defined in a deliberately generic manner. -- -- DOCSIS-compliant Cable Modems shall add a docsQosIpPktClassEntry for -- each Type 21 Upstream Packet Classification Configuration Setting -- in the configuration file according to the following rules: -- The 'ClassType shall be docsQosStatic(2) for static config. -- The 'ClassIfIndex shall be the CM's IfIndex for its Upstream CATV interface; -- The 'ClassDirection shall be output(2); -- The 'ClassRuleIndex shall be Packet Classifier Index (type code 21.1, -- i.e. sub-type 1 of the Type 21 configuration file parameter) -- The 'ClassFlowRefType shall indicate the originator of the Type 21 -- config setting. -- The 'ClassFlowRefID shall equal the Packet Classifier Match ID (type 21.17), -- which in turn should match an Upstream Flow Scheduling Flow ID -- (type 23.1). -- Packet Classification Configuration Settings added via dyanmic SID -- request messages (e.g. for RSVP, SBM, or other vendor-specific dynamic -- SID mechanism) shall use 'ClassType docsQosDynamic(3). docsQosIpPktClassTable OBJECT-TYPE SYNTAX SEQUENCE OF DocsQosIpPktClassEntry MAX-ACCESS not-accessible Expires January 1999 *** WORKING DRAFT *** [Page 8] March 11, 1998 STATUS current DESCRIPTION "This table describes a genereralized mechanism for IP packet classification. The model is that an IP packet either received as input from an interface or routed for output on an interface may be compared against an ordered list of rules pertaining to the IP (and UDP/TCP) packet header. Each rule is a row of this table. A matching rule row provides a flow reference to the flow to which the packet is classified. The flow reference consists of a ClassFlowRefType and a ClassFlowRefId. The table is generalized to permit packet classification for a number of purposes. Packet Classification rules for a given 'ClassType are then grouped according to interface and direction from which the packet is processed by the managed device. Finally, for a given 'ClassType, interface, and direction, a unique RuleIndex must be assigned to each row in order to place it in order relative to other rules. RuleIndex must be unique for a given type, interface, and direction. Row entries are intended to be added both internally and externally; separate 'ClassTypes should be used for this purpose. " ::= { docsQosMIBObjects 1 } docsQosIpPktClassEntry OBJECT-TYPE SYNTAX DocsQosIpPktClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single row in the ordered IP Packet Classification Table" INDEX { docsQosIpPktClassType, docsQosIpPktClassIfIndex, docsQosIpPktClassDirection, docsQosIpPktClassRuleIndex } ::= { docsQosIpPktClassTable 1 } DocsQosIpPktClassEntry ::= SEQUENCE { docsQosIpPktClassRowStatus RowStatus, docsQosIpPktClassType INTEGER, docsQosIpPktClassIfIndex INTEGER, docsQosIpPktClassDirection IfDirection, Expires January 1999 *** WORKING DRAFT *** [Page 9] March 11, 1998 docsQosIpPktClassRuleIndex INTEGER, docsQosIpPktClassFlowRefType FlowRefType, docsQosIpPktClassFlowRefId INTEGER, docsQosIpPktClassTosLow INTEGER, docsQosIpPktClassTosHigh INTEGER, docsQosIpPktClassTosMask INTEGER, docsQosIpPktClassProtocol Protocol, docsQosIpPktClassSourceAddr IpAddress, docsQosIpPktClassSourceMask IpAddress, docsQosIpPktClassDestAddr IpAddress, docsQosIpPktClassDestMask IpAddress, docsQosIpPktClassSourcePortStart Port, docsQosIpPktClassSourcePortEnd Port, docsQosIpPktClassDestPortStart Port, docsQosIpPktClassDestPortEnd Port, docsQosIpPktClassNestFlowRefType FlowRefType, docsQosIpPktClassNestFlowRefId INTEGER } docsQosIpPktClassRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "Controls creation of rows. See SNMPv2-TC." ::= { docsQosIpPktClassEntry 1 } docsQosIpPktClassType OBJECT-TYPE SYNTAX INTEGER { other(1), docsQosStatic(2), -- docsQos static Flow classification docsQosDynamic(3) -- docsQos dynamic SID flow class'n } MAX-ACCESS read-create STATUS current DESCRIPTION "A value of docsQosStatic(2) means the row as created statically via SNMP or private configuration. A value of docsQosDynamic(3) means the row was created dynamically by the docsQos entity itself. This object may not be created by SNMP with the value docsQosDynamic(3)." ::= { docsQosIpPktClassEntry 2 } docsQosIpPktClassIfIndex OBJECT-TYPE SYNTAX UInteger32 MAX-ACCESS read-create STATUS current Expires January 1999 *** WORKING DRAFT *** [Page 10] March 11, 1998 DESCRIPTION "An ifIndex interface index of an IP packet interface of the system. This rule applies only to IP packets sent or received on that interface. A value of 2^32-1 matches all interfaces." ::= { docsQosIpPktClassEntry 3 } docsQosIpPktClassDirection OBJECT-TYPE SYNTAX IfDirection MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates the direction inBound(1) or outBound(2) to which the rule for this row applies" ::= { docsQosIpPktClassEntry 4 } docsQosIpPktClassRuleIndex OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The order of this row as compared to all other rows with the same docsQosIpPktClassType, docsQosIpPktClassIfIndex, and docsQosIpPktClassDirection." ::= { docsQosIpPktClassEntry 5 } docsQosIpPktClassFlowRefType OBJECT-TYPE SYNTAX FlowRefType MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates which entity and process created the flow and assigned the associated docsQosIpPktClassFlowRefId. The 'FlowRefType and 'FlowRefId uniquely identify an IP packet flow to which a packet which matches this rule is classified." ::= { docsQosIpPktClassEntry 6 } docsQosIpPktClassFlowRefId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "An arbitrary integer within the number space defined by docsQosIpPktClassFlowRefType to identify the flow to which a packet matching this rule is classified. This should be a small integer suitable as an index." ::= { docsQosIpPktClassEntry 7 } Expires January 1999 *** WORKING DRAFT *** [Page 11] March 11, 1998 docsQosIpPktClassTosLow OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The 8-bit low value of a range of TOS byte values. Corresponds to the first 'tos-low' byte of the DOCSIS QOS parameter [21/22].3.1" ::= { docsQosIpPktClassEntry 8 } docsQosIpPktClassTosHigh OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The 8-bit high value of a range of TOS byte values. Corresponds to the second 'tos-high' byte of the DOCSIS QOS parameter [21/22].3.1" ::= { docsQosIpPktClassEntry 9 } docsQosIpPktClassTosMask OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The 8-bit mask with a 1 bit for each bit checked in the TOS byte of packets compared to this rule. This object corresponds to the third 'tos-mask' byte of the DOCSIS QOS parameter [21/22].3.1" ::= { docsQosIpPktClassEntry 10 } docsQosIpPktClassProtocol OBJECT-TYPE SYNTAX Protocol MAX-ACCESS read-create 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. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.2." ::= { docsQosIpPktClassEntry 11 } docsQosIpPktClassSourceAddr OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create Expires January 1999 *** WORKING DRAFT *** [Page 12] March 11, 1998 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 source address logically ANDed with the docsQosIpPktClassSourceMask value equals the docsQosIpPktClassSourceAddr value. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.3." ::= { docsQosIpPktClassEntry 12 } docsQosIpPktClassSourceMask OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies which bits of a packet's IP Source Address are compared to match this rule. An IP packet matches the rule when the packet source address logically ANDed with the docsQosIpPktClassSourceMask value equals the docsQosIpPktClassSourceAddr value. This mask must be a valid CIDR interface mask, i.e. nonzero values must have contiguous 1 bits from the most significant end. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.4." ::= { docsQosIpPktClassEntry 13 } docsQosIpPktClassDestAddr OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create 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 destination IP address logically ANDed with the docsQosIpPktClassDestMask value equals the docsQosIpPktClassSourceAddr value. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.5." ::= { docsQosIpPktClassEntry 14 } docsQosIpPktClassDestMask OBJECT-TYPE SYNTAX IpAddress MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies which bits of a packet's IP Desination Address Expires January 1999 *** WORKING DRAFT *** [Page 13] March 11, 1998 are compared to match this rule. An IP packet matches the rule when the packet IP destination address logically ANDed with the docsQosIpPktClassDestMask value equals the docsQosIpPktClassDestAddr value. This mask must be a valid CIDR interface mask, i.e. nonzero values must have contiguous 1 bits from the most significant end. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.6." ::= { docsQosIpPktClassEntry 15 } docsQosIpPktClassSourcePortStart OBJECT-TYPE SYNTAX Port MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies the lower end, inclusive, of a range of IP layer 4 protocol (e.g. TCP, UDP, ICMP) soruce port numbers to which a packet is compared. Implementations MUST support port range classification for at least the TCP, UDP, and ICMP protocols. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.7." ::= { docsQosIpPktClassEntry 16 } docsQosIpPktClassSourcePortEnd OBJECT-TYPE SYNTAX Port MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies the upper end, inclusive, of a range of IP layer 4 protocol (e.g. TCP, UDP, ICMP) source port numbers to which a packet is compared. Implementations MUST support port range classification for at least the TCP, UDP, and ICMP protocols. When both 'SourcePortStart and 'SourcePortEnd are zero, the layer 4 source protocol port number is ignored. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.8." ::= { docsQosIpPktClassEntry 17 } docsQosIpPktClassDestPortStart OBJECT-TYPE SYNTAX Port MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies the lower end, inclusive, of a range of IP layer 4 protocol (e.g. TCP, UDP, ICMP) destination port numbers to which a packet is compared. Implementations MUST support port range classification for at least the TCP, UDP, and ICMP protocols. This object corresponds to DOCSIS QOS configuration parameter Expires January 1999 *** WORKING DRAFT *** [Page 14] March 11, 1998 [21/22].3.9." ::= { docsQosIpPktClassEntry 18 } docsQosIpPktClassDestPortEnd OBJECT-TYPE SYNTAX Port MAX-ACCESS read-create STATUS current DESCRIPTION "This object specifies the upper end, inclusive, of a range of IP layer 4 protocol (e.g. TCP, UDP, ICMP) destination port numbers to which a packet is compared. Implementations MUST support port range classification for at least the TCP, UDP, and ICMP protocols. When both 'DestPortStart and 'DestPortEnd are zero, the layer 4 destination protocol port number is ignored. This object corresponds to DOCSIS QOS configuration parameter [21/22].3.10." ::= { docsQosIpPktClassEntry 19 } docsQosIpPktClassNestFlowRefType OBJECT-TYPE SYNTAX FlowRefType MAX-ACCESS read-create STATUS current DESCRIPTION "The docQosIpPktClassNestFlowRefType and docsQosIpPktClassNestFlowRefId objects reference a particular IP or Ethernet flow classification that a packet must have already matched in order to also match the current rule. It permits 'nesting' of flow classifications. The 'NestFlowRefType,'NestFlowRefId pair referece a flow in which the current rule is 'nested'. One example is nesting an IP packet flow within the Ethernet flow for a particular VLAN. Another example is nesting a TOS classification rule within the flow to a particular port. Nesting of classification rules prevents duplication of rules that would otherwise be required. An implementation must permit at least one level of nesting to permit an IP packet classification flow to nest within an Ethernet packet classification flow. Further degrees of nesting are an implementation decision. A packet within a nested flow is considered to be in both 'inner' and 'outer' flows for flow statistic purposes. A value of none(0) for this object means that the rule is not nested within another flow." ::= { docsQosIpPktClassEntry 20 } docsQosIpPktClassNestFlowRefID OBJECT-TYPE Expires January 1999 *** WORKING DRAFT *** [Page 15] March 11, 1998 SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The docQosIpPktClassNestFlowRefType and docsQosIpPktClassNestFlowRefId objects reference a particular IP or Ethernet flow classification that a packet must have already matched in order to also match the current rule. This object value is ignored when docsQosIpPktClassNestFlowRefType is none(0)." ::= { docsQosIpPktClassEntry 21 } -- ********************************************************************** -- Ethernet Packet Classification Table -- This is similar to the IP packet classification table, but uses -- layer 2 headers instead. It includes support for an 802.1Q tag -- containing a user priority field. -- docsQosEthPktClassTable OBJECT-TYPE SYNTAX SEQUENCE OF DocsQosEthPktClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table describes a genereralized mechanism for Ethernet packet classification. It is similar to the IP Packet Classification table, but uses only information available in the Ethernet header. " ::= { docsQosMIBObjects 2 } docsQosEthPktClassEntry OBJECT-TYPE SYNTAX DocsQosEthPktClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single row in the ordered IP Packet Classification Table" INDEX { docsQosEthPktClassType, docsQosEthPktClassIfIndex, docsQosEthPktClassDirection, docsQosEthPktClassRuleIndex } ::= { docsQosEthPktClassTable 1 } Expires January 1999 *** WORKING DRAFT *** [Page 16] March 11, 1998 DocsQosEthPktClassEntry ::= SEQUENCE { docsQosEthPktClassRowStatus RowStatus, docsQosEthPktClassType INTEGER, docsQosEthPktClassIfIndex INTEGER, docsQosEthPktClassDirection IfDirection, docsQosEthPktClassRuleIndex INTEGER, docsQosEthPktClassFlowRefType FlowRefType, docsQosEthPktClassFlowRefId INTEGER, docsQosEthPktClassDestMac MacAddress, docsQosEthPktClassDestMask MacAddress, docsQosEthPkkClassSourceMac MacAddress, docsQosEthPktClassProtocolType INTEGER, docsQosEthPktClassProtocol INTEGER, docsQosEthPktClassPriLow INTEGER, docsQosEthPktClassPriHigh INTEGER, docsQosEthPktClassVlanId INTEGER, docsQosEthPktClassNestFlowRefType FlowRefType, docsQosEthPktClassNestFlowRefId INTEGER } docsQosEthPktClassRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "Controls additions of new rows. See SNMPv2-TC." ::= { docsQosEthPktClassEntry 1 } docsQosEthPktClassType OBJECT-TYPE SYNTAX INTEGER { other(1), docsQosStatic(2), -- docsQos static Flow classification docsQosDynamic(3) -- docsQos dynamic SID flow class'n } MAX-ACCESS read-create STATUS current DESCRIPTION "A value of docsQosStatic(2) means the row as created statically via SNMP or private configuration. A value of docsQosDynamic(3) means the row was created dynamically by the managed entity itself. A row may not be created via SNMP with a value of docsQosDynamic(3)." ::= { docsQosEthPktClassEntry 2 } docsQosEthPktClassIfIndex OBJECT-TYPE SYNTAX UInteger32 MAX-ACCESS read-create Expires January 1999 *** WORKING DRAFT *** [Page 17] March 11, 1998 STATUS current DESCRIPTION "An ifIndex interface index of an Ethernet frame interface of the system. This rule applies only to Ethernet framed packets sent or received on that interface. A value of (2^32)-1 matches all interfaces." ::= { docsQosEthPktClassEntry 3 } docsQosEthPktClassDirection OBJECT-TYPE SYNTAX IfDirection MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates the direction inBound(1) or outBound(2) to which the rule for this row applies" ::= { docsQosEthPktClassEntry 4 } docsQosEthPktClassRuleIndex OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The order of this row as compared to all other rows with the same docsQosEthPktClassType, docsQosEthPktClassifIndex, and docsQosEthPktClassDirection. Semantically, rows are checked in order of their index within the docsQosEthPktClassTable." ::= { docsQosEthPktClassEntry 5 } docsQosEthPktClassFlowRefType OBJECT-TYPE SYNTAX FlowRefType MAX-ACCESS read-create STATUS current DESCRIPTION "Indicates which entity and process created the flow and assigned the associated docsQosIpPktClassFlowRefId. The 'IpFlowRefType and 'IpFlowRefId uniquely identify an IP packet flow to which a packet which matches this rule is classified." ::= { docsQosEthPktClassEntry 6 } docsQosEthPktClassFlowRefId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "An arbitrary integer within the number space defined by docsQosIpPktClassIpFlowRefType to identify the flow to which a packet matching this rule is classified. This should be a small integer suitable as an index." Expires January 1999 *** WORKING DRAFT *** [Page 18] March 11, 1998 ::= { docsQosEthPktClassEntry 7 } docsQosEthPktClassDestMac OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "An Ethernet packet matches a row rule when its destination MAC address logically ANDED with docsQosEthPktClassDestMask equals the value of docsQosEthPktClassDestMac for the row. This object corresponds to the dst1..dst6 bytes of Docsis QOS configuration parameter [21/22].4.1. The MAC addresses in this object must be represented in IEEE 802.1 canonical bit order (as if transmitted least significant bit first)." ::= { docsQosEthPktClassEntry 8 } docsQosEthPktClassDestMask OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "An Ethernet packet matches a row rule when its destination MAC address logically ANDED with docsQosEthPktClassDestMask equals the value of docsQosEthPktClassDestMac for the row. This object corresponds to the msk1..msk6 bytes of Docsis QOS configuration parameter [21/22].4.1." ::= { docsQosEthPktClassEntry 9 } docsQosEthPktClassSourceMac OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "If this object is defined and not equal to 00-00-00-00-00-00, an Ethernet packet matches this row rule when its source MAC matches the object value. Note that all 48 bits must match. This object corresponds to the msk1..msk6 bytes of Docsis QOS configuration parameter [21/22].4.2." ::= { docsQosEthPktClassEntry 10 } docsQosEthPktClassProtocolType OBJECT-TYPE SYNTAX INTEGER { none(0), ethertype(1), dsap(2) } MAX-ACCESS read-create STATUS current Expires January 1999 *** WORKING DRAFT *** [Page 19] March 11, 1998 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 contain an EtherType value. Ethertype values are contained in packets using the Dex-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. This object corresponds to the first byte 'type' of the Docsis QOS configuration parameter [21/22].4.3." ::= { docsQosEthPktClassEntry 11 } docsQosEthPktClassProtocol OBJECT-TYPE SYNTAX INTEGER (0..65536) MAX-ACCESS read-create 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. This object corresponds to the 16-bit value formed from the 'eprot1' (msb) and 'eprot2' (lsb) bytes of the Docsis QOS configuration parameter [21/22].4.3." ::= { docsQosEthPktClassEntry 12 } docsQosEthPktClassPriLow OBJECT-TYPE SYNTAX INTEGER (0..7) Expires January 1999 *** WORKING DRAFT *** [Page 20] March 11, 1998 MAX-ACCESS read-create 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 docsQosEthPktClassPriLow and docsQosEthPktClassPriHigh in order to match this rule. A range of 0..7 matches all packets. This object corresponds to the pri-low byte of Docsis QOS configuration parameter [21/22].4.5.1." ::= { docsQosEthPktClassEntry 13 } docsQosEthPktClassPriHigh OBJECT-TYPE SYNTAX INTEGER (0..7) MAX-ACCESS read-create 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 docsQosEthPktClassPriLow and docsQosEthPktClassPriHigh in order to match this rule. A range of 0..7 matches all packets. This object corresponds to the pri-high byte of Docsis QOS configuration parameter [21/22].4.5.1." ::= { docsQosEthPktClassEntry 14 } docsQosEthPktClassVlanId OBJECT-TYPE SYNTAX INTEGER (0..4095) MAX-ACCESS read-create 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 Identifier. 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. Note that a tagged packet with a VLAN Identifer of Expires January 1999 *** WORKING DRAFT *** [Page 21] March 11, 1998 zero will only match rules with a zero docsQosEthPktClassVlanId. This object corresponds to the Docsis QOS configuration parameter [21/22].4.5.2." ::= { docsQosEthPktClassEntry 15 } docsQosEthPktClassNestFlowRefType OBJECT-TYPE SYNTAX FlowRefType MAX-ACCESS read-create STATUS current DESCRIPTION "The docQosEthPktClassNestFlowRefType and docsQosEthPktClassNestFlowRefId objects reference a particular IP or Ethernet flow classification that a packet must have already matched in order to also match the current rule. It permits 'nesting' of flow classifications. The 'NestFlowRefType,'NestFlowRefId pair referece a flow in which the current rule is 'nested'. An example of nesting includes classification to flows with a particular destination MAC range nested within flows addressed to a particular VLAN. A packet within a nested flow is considered to be in both 'inner' and 'outer' flows for flow statistic purposes. A value of none(0) for this object means that the flow to which this rule classifies is not nested within another flow." ::= { docsQosEthPktClassEntry 16 } docsQosIpPktClassNestFlowRefId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-create STATUS current DESCRIPTION "The docQosEthPktClassNestFlowRefType and docsQosEthPktClassNestFlowRefId objects reference a particular IP or Ethernet flow classification that a packet must have already matched in order to also match the current rule. This object value is ignored when docsQosEthPktClassNestFlowRefType is none(0)." ::= { docsQosEthPktClassEntry 17 } -- -- Service Class Group -- Expires January 1999 *** WORKING DRAFT *** [Page 22] March 11, 1998 -- A Service Class represents a level of service provided by the CMTS -- to a SID or to Flows. A SID and a Flow are associated with exactly -- one Service Class. -- Service Classes may be created at registration time or at dynamic -- SID creation with Docsis Type 23/24 tuples in the registration request or -- or dynamic SID request packet. They may also be created statically -- via SNMP or other proprietary configuration. They may be -- created by either the CM or the CMTS. -- Service Classes are identified by the tuple { RefType, RefId }, where -- Reftype indicates the creator, and RefId is the small integer assigned -- to the class by the creator. -- When a registration file or dynamic SID request refers to a CMTS-static -- Service Class, only those TLVs needed for modem implementation need -- to appear in the type 23/24 tuple (e.g. Request Policy, subtype 12). -- A CMTS MUST reject a Type 23/24 tuple SID request which refers to a CMTS-static -- service class where a sub-type in the type 23/24 tuple does not match -- the CMTS static configuration. -- -- Service Classes and Flows created for a single SID (e.g. at registration -- or for a dynamic SID) must be deleted when the SID is destroyed. -- -- docsQosServiceClassGroup OBJECT IDENTIFIER ::= { docsQosMIBObjects 3 } docsQosServiceClassTable OBJECT-TYPE SYNTAX SEQUENCE OF DocsQosServiceClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table describes the set of docsis-Qos Service Classes defined in the managed device. Each defined docsQosFlow object is classified into exactly one Flow Class. Each SID also is associated with a single Service Class. 'ServiceClassRefType identifies the creator of the Service Class. Rows with RefType CM_static or CMTS_static are read-create. All other RefType rows are read-only. " ::= { docsQosServiceClassGroup 1 } docsQosServiceClassEntry OBJECT-TYPE SYNTAX DocsQosServiceClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single row in the ordered IP Packet Classification Table" Expires January 1999 *** WORKING DRAFT *** [Page 23] March 11, 1998 INDEX { docsQosServiceClassRefType, docsQosServiceClassRefId } ::= { docsQosServiceClassTable 1 } DocsQosServiceClassEntry ::= SEQUENCE { -- DOCSIS reg param type docsQosServiceClassRowStatus RowStatus, docsQosServiceClassRefType INTEGER, -- docsQosServiceClassRefId INTEGER, -- docsQosServiceClassName DisplayString, -- docsQosServiceClassDirection IfDirection, -- docsQosServiceClassMaxDynSids INTEGER, -- [23/24].3 docsQosServiceClassPrivacy INTEGER, -- [23/24].4 docsQosServiceClassPriority INTEGER, -- [23/24].5 docsQosServiceClassMaxTrafficRate BitRate, -- [23/24].6 docsQosServiceClassReservedRate INTEGER, -- [23/24].7 docsQosServiceClassTrafficBurst BitRate, -- [23/24].8 docsQosServiceClassTrafficMaxTU MessageSize, -- [23/24].9 docsQosServiceClassTrafficMinTU MessageSize, -- [23/24].10 docsQosServiceClassMaxUpBurstSlots INTEGER, -- 23.11 docsQosServiceClassServiceType INTEGER, -- 23.12 docsQosServiceClassRequestPolicy INTEGER, -- 23.13 docsQosServiceClassMaxUniReqIntvl Milliseconds16, -- 23.14 docsQosServiceClassMinUniReqIntvl Milliseconds16, -- 23.15 docsQosServiceClassMaxUniGrantIntvl Milliseconds16, -- 23.16 docsQosServiceClassTosWriteValue INTEGER, -- 23.18 docsQosServiceClassTosWriteMask INTEGER, -- 23.18 docsQosServiceClassGroupFlowId INTEGER, -- 23.19 docsQosServiceClassMaxJitter Milliseconds16, -- 23.20 docsQosServiceClassMaxLatency Milliseconds16, -- 24.20 docsQosServiceClassDefault INTEGER -- } -- docsQosServiceClass<*> object definitions to follow -- -- Flow Table -- -- This table describes the Docsis-QOS flows active in the device. -- Each Docsis-QOS flow must also be an Intserv flow. -- This table is logically an extension of the intSrvFlowTable in RFC 2213. -- docsQosFlowTable OBJECT-TYPE SYNTAX SEQUENCE OF docsQosFlowEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION Expires January 1999 *** WORKING DRAFT *** [Page 24] March 11, 1998 "This table describes the set of Docsis-QOS Flows active in the managed device. ::= { docsQosMIBObjects 4 } docsQosFlowEntry OBJECT-TYPE SYNTAX docsQosFlowEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single flow" INDEX { docsQosFlowNumber } ::= { docsQosFlowTable 1 } docsQosFlowEntry ::= SEQUENCE { docsQosFlowRowStatus RowStatus, docsQosFlowNumber INTEGER, -- Same as RFC 2213 flowNumber docsQosFlowRefType INTEGER, -- flow creator docsQosFlowRefId INTEGER, -- flow creator's ID docsQosFlowDirection IfDirection, -- direction of flow docsQosServiceClassRefType INTEGER, -- flow's Service Class Creator docsQosServiceClassRefId INTEGER, -- flow's Service Class Creator ID docsQosFlowServiceID INTEGER, -- SID containing the flow } -- definitions -- -- SidToClass Table -- -- Reports the mapping of service classes to SIDs. -- When a SID is created (with a type 23 tuple), it must refer to the -- service class which describes the service to be given to the SID. -- This is via ServiceClassRefType and ServiceClassRefId TLVs which MUST -- appear in the type 23 tuple. -- docsQosSidToClassTable OBJECT-TYPE SYNTAX SEQUENCE OF docsQosSidToClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table describes the set of SidToClasss active in the managed device. ::= { docsQosMIBObjects 5 } docsQosSidToClassEntry OBJECT-TYPE Expires January 1999 *** WORKING DRAFT *** [Page 25] March 11, 1998 SYNTAX docsQosSidToClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single SidToClass" INDEX { docsQosSidToClassIfIndex, docsQosSidtoClassDirection, docsQosSidToClassServiceId } ::= { docsQosSidToClassTable 1 } -- Entries are read-only. docsQosSidToClassEntry ::= SEQUENCE { -- DOCSIS reg param type docsQosSidToClassRowStatus RowStatus, docsQosSidToClassIfIndex IfIndex, -- MAC interface docsQosSidToClassDirection IfDirection, -- Direction (CMTS has both) docsQosSidToClassServiceID INTEGER, -- SID docsQosSidToClassRefType ServiceClassReftype, -- Class Ref type docsQosSidToClassRefId INTEGER, -- Class Reference ID. } -- : Type 23 must have a TLV to identify the Class RefId being -- defined. (The RefType will be CM-reg or CM-dynamic, for registration -- file and dynamic SIds, respectively). -- : Type 23 must add a TLV for ClassRefType in order -- to explicitly refer to the requested SID as using a pre-defined -- CMTS Service Class. -- -- FlowToClass Table -- -- Allows external entities to explicitly map an externally defined -- flow number to a service class. -- Each service class (usually) has one or more SIDs assigned to it. -- Note that by mapping Sids to Classes and Flow to Classes that we -- avoid having to worry about externally specifiying a SID number via -- SNMP. -- -- The Type 23 tuple defines only a SINGLE flow to Class to SID mapping. -- [: should we permit multiple explicit flows to a SID by -- permitting multple Flow ID subtypes in the Type 23 type? -- We should really use {FlowRefType, FlowRefId} pairs rather than just -- FlowId. docsQosFlowToClassTable OBJECT-TYPE SYNTAX SEQUENCE OF docsQosFlowToClassEntry MAX-ACCESS not-accessible STATUS current Expires January 1999 *** WORKING DRAFT *** [Page 26] March 11, 1998 DESCRIPTION "This table allows an SNMP manager to configure the mapping of flows to Service Classes. ::= { docsQosMIBObjects 5 } docsQosFlowToClassEntry OBJECT-TYPE SYNTAX docsQosFlowToClassEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A single FlowToClass" INDEX { docsQosFlowToClassIfIndex docsQosFlowToClassFlowRefType, docsQosFlowToClassFlowRefId } ::= { docsQosFlowToClassTable 1 } -- FlowRefType must be CM-static or CMTS-static, depending on the device. -- ServiceClassReftype must be either CM-static or CMTS-static. docsQosFlowToClassEntry ::= SEQUENCE { -- DOCSIS reg param type docsQosFlotToClassIfIndex Integer, docsQosFlowToClassFlowRefType FlowRefType, docsQosFlowToClassFlowRefId INTEGER, docsQosFlowToClassServiceClassRefType ServiceClassRefType, -- Class Ref type docsQosFlowToClassServiceClassRefId INTEGER, -- Class Reference ID. } -- definitions 6.0 References [ASN] Information processing systems - Open Systems Interconnection - Specification of Abstract Syntax Notation One (ASN.1), International Organization for Standardization, International Standard 8824, December 1987. [BER] Information processing systems - Open Systems Interconnection - Specification of Basic Encoding Rules for Abstract Notation One (ASN.1), International Organization for Standardization, Expires January 1999 *** WORKING DRAFT *** [Page 27] March 11, 1998 International Standard 8825, December 1987. [DOCSIS-QOS] "Extensions to Support DOCSIS Quality of Service", document TR-QoS-D04-980603, available at www.cablemodem.com. [RFC1155] Rose M., and K. McCloghrie, "Structure and Identification of Management Information for TCP/IP-based internets", RFC 1155, Performance Systems International, Hughes LAN Systems, May 1990. [RFC1212] Rose, M., and K. McCloghrie, Editors, "Concise MIB Definitions", RFC 1212, Performance Systems International, Hughes LAN Systems, March 1991. [RFC1213] Rose M., Editor, "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", RFC 1213, Performance Systems International, March 1991. [RFC1573] K. McCloghrie, F. Kastenholz, "Evolution of the Interfaces Group of MIB-II", RFC1573, 01/20/1994. [RFC2213] F. Baker, etal "Integrated Services Management Information Base using SMIv2", RFC 2213. 7.0 Author's Address Michael W. Patrick Motorola ING 20 Cabot Blvd. MS M4-30 Mansfield, MA 02048 Phone: (508) 261-5707 Email: mpatrick@dma.isg.mot.com Expires January 1999 *** WORKING DRAFT *** [Page 28]