diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3670.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3670.txt')
-rw-r--r-- | doc/rfc/rfc3670.txt | 5435 |
1 files changed, 5435 insertions, 0 deletions
diff --git a/doc/rfc/rfc3670.txt b/doc/rfc/rfc3670.txt new file mode 100644 index 0000000..5ee2425 --- /dev/null +++ b/doc/rfc/rfc3670.txt @@ -0,0 +1,5435 @@ + + + + + + +Network Working Group B. Moore +Request for Comments: 3670 IBM Corporation +Category: Standards Track D. Durham + Intel + J. Strassner + INTELLIDEN, Inc. + A. Westerinen + Cisco Systems + W. Weiss + Ellacoya + January 2004 + + + Information Model for Describing + Network Device QoS Datapath Mechanisms + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2004). All Rights Reserved. + +Abstract + + The purpose of this document is to define an information model to + describe the quality of service (QoS) mechanisms inherent in + different network devices, including hosts. Broadly speaking, these + mechanisms describe the properties common to selecting and + conditioning traffic through the forwarding path (datapath) of a + network device. This selection and conditioning of traffic in the + datapath spans both major QoS architectures: Differentiated Services + and Integrated Services. + + This document should be used with the QoS Policy Information Model + (QPIM) to model how policies can be defined to manage and configure + the QoS mechanisms (i.e., the classification, marking, metering, + dropping, queuing, and scheduling functionality) of devices. + Together, these two documents describe how to write QoS policy rules + to configure and manage the QoS mechanisms present in the datapaths + of devices. + + + + + +Moore, et al. Standards Track [Page 1] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + This document, as well as QPIM, are information models. That is, + they represent information independent of a binding to a specific + type of repository. + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 + 1.1. Policy Management Conceptual Model . . . . . . . . . . . 6 + 1.2. Purpose and Relation to Other Policy Work. . . . . . . . 7 + 1.3. Typical Examples of Policy Usage . . . . . . . . . . . . 7 + 2. Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 + 2.1. Common Needs Of DiffServ and IntServ . . . . . . . . . . 8 + 2.2. Specific Needs Of DiffServ . . . . . . . . . . . . . . . 9 + 2.3. Specific Needs Of IntServ. . . . . . . . . . . . . . . . 9 + 3. Methodology. . . . . . . . . . . . . . . . . . . . . . . . . . 10 + 3.1. Level of Abstraction for Expressing QoS Policies . . . . 10 + 3.2. Specifying Policy Parameters . . . . . . . . . . . . . . 11 + 3.3. Specifying Policy Services . . . . . . . . . . . . . . . 12 + 3.4. Level of Abstraction for Defining QoS Attributes and + Classes. . . . . . . . . . . . . . . . . . . . . . . . . 13 + 3.5. Characterization of QoS Properties . . . . . . . . . . . 14 + 3.6. QoS Information Model Derivation . . . . . . . . . . . . 15 + 3.7. Attribute Representation . . . . . . . . . . . . . . . . 16 + 3.8. Mental Model . . . . . . . . . . . . . . . . . . . . . . 17 + 3.8.1. The QoSService Class . . . . . . . . . . . . . . 17 + 3.8.2. The ConditioningService Class. . . . . . . . . . 18 + 3.8.3. Preserving QoS Information from Ingress to + Egress . . . . . . . . . . . . . . . . . . . . . 19 + 3.9. Classifiers, FilterLists, and Filter Entries . . . . . . 21 + 3.10. Modeling of Droppers . . . . . . . . . . . . . . . . . . 23 + 3.10.1. Configuring Head and Tail Droppers . . . . . . . 23 + 3.10.2. Configuring RED Droppers . . . . . . . . . . . . 24 + 3.11. Modeling of Queues and Schedulers. . . . . . . . . . . . 25 + 3.11.1. Simple Hierarchical Scheduler. . . . . . . . . . 25 + 3.11.2. Complex Hierarchical Scheduler . . . . . . . . . 27 + 3.11.3. Excess Capacity Scheduler. . . . . . . . . . . . 29 + 3.11.4. Hierarchical CBQ Scheduler . . . . . . . . . . . 31 + 4. The Class Hierarchy. . . . . . . . . . . . . . . . . . . . . . 33 + 4.1. Associations and Aggregations. . . . . . . . . . . . . . 33 + 4.2. The Structure of the Class Hierarchies . . . . . . . . . 34 + 4.3. Class Definitions. . . . . . . . . . . . . . . . . . . . 38 + 4.3.1. The Abstract Class ManagedElement. . . . . . . . 38 + 4.3.2. The Abstract Class ManagedSystemElement. . . . . 39 + 4.3.3. The Abstract Class LogicalElement. . . . . . . . 39 + 4.3.4. The Abstract Class Service . . . . . . . . . . . 39 + 4.3.5. The Class ConditioningService. . . . . . . . . . 39 + 4.3.6. The Class ClassifierService. . . . . . . . . . . 40 + 4.3.7. The Class ClassifierElement. . . . . . . . . . . 41 + + + +Moore, et al. Standards Track [Page 2] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + 4.3.8. The Class MeterService . . . . . . . . . . . . . 42 + 4.3.9. The Class AverageRateMeterService. . . . . . . . 44 + 4.3.10. The Class EWMAMeterService . . . . . . . . . . . 44 + 4.3.11. The Class TokenBucketMeterService. . . . . . . . 46 + 4.3.12. The Class MarkerService. . . . . . . . . . . . . 47 + 4.3.13. The Class PreambleMarkerService. . . . . . . . . 47 + 4.3.14. The Class ToSMarkerService . . . . . . . . . . . 48 + 4.3.15. The Class DSCPMarkerService. . . . . . . . . . . 49 + 4.3.16. The Class 8021QMarkerService . . . . . . . . . . 49 + 4.3.17. The Class DropperService . . . . . . . . . . . . 50 + 4.3.18. The Class HeadTailDropperService . . . . . . . . 52 + 4.3.19. The Class REDDropperService. . . . . . . . . . . 52 + 4.3.20. The Class QueuingService . . . . . . . . . . . . 54 + 4.3.21. The Class PacketSchedulingService. . . . . . . . 55 + 4.3.22. The Class NonWorkConservingSchedulingService . . 56 + 4.3.23. The Class QoSService . . . . . . . . . . . . . . 57 + 4.3.24. The Class DiffServService. . . . . . . . . . . . 58 + 4.3.25. The Class AFService. . . . . . . . . . . . . . . 59 + 4.3.26. The Class FlowService. . . . . . . . . . . . . . 60 + 4.3.27. The Class DropThresholdCalculationService. . . . 60 + 4.3.28. The Abstract Class FilterEntryBase . . . . . . . 61 + 4.3.29. The Class IPHeaderFilter . . . . . . . . . . . . 62 + 4.3.30. The Class 8021Filter . . . . . . . . . . . . . . 62 + 4.3.31. The Class PreambleFilter . . . . . . . . . . . . 62 + 4.3.32. The Class FilterList . . . . . . . . . . . . . . 63 + 4.3.33. The Abstract Class ServiceAccessPoint. . . . . . 63 + 4.3.34. The Class ProtocolEndpoint . . . . . . . . . . . 63 + 4.3.35. The Abstract Class Collection. . . . . . . . . . 65 + 4.3.36. The Abstract Class CollectionOfMSEs. . . . . . . 65 + 4.3.37. The Class BufferPool . . . . . . . . . . . . . . 65 + 4.3.38. The Abstract Class SchedulingElement . . . . . . 65 + 4.3.39. The Class AllocationSchedulingElement. . . . . . 66 + 4.3.40. The Class WRRSchedulingElement . . . . . . . . . 67 + 4.3.41. The Class PrioritySchedulingElement. . . . . . . 69 + 4.3.42. The Class BoundedPrioritySchedulingElement . . . 70 + 4.4. Association Definitions. . . . . . . . . . . . . . . . . 70 + 4.4.1. The Abstract Association Dependency. . . . . . . 71 + 4.4.2. The Association ServiceSAPDependency . . . . . . 71 + 4.4.3. The Association + IngressConditioningServiceOnEndpoint . . . . . . 71 + 4.4.4. The Association + EgressConditioningServiceOnEndpoint. . . . . . . 72 + 4.4.5. The Association HeadTailDropQueueBinding . . . . 72 + 4.4.6. The Association CalculationBasedOnQueue. . . . . 73 + 4.4.7. The Association ProvidesServiceToElement . . . . 74 + 4.4.8. The Association ServiceServiceDependency . . . . 74 + 4.4.9. The Association CalculationServiceForDropper . . 75 + 4.4.10. The Association QueueAllocation. . . . . . . . . 75 + + + +Moore, et al. Standards Track [Page 3] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + 4.4.11. The Association ClassifierElementUsesFilterList. 76 + 4.4.12. The Association AFRelatedServices. . . . . . . . 77 + 4.4.13. The Association NextService. . . . . . . . . . . 78 + 4.4.14. The Association + NextServiceAfterClassifierElement. . . . . . . . 79 + 4.4.15. The Association NextScheduler. . . . . . . . . . 80 + 4.4.16. The Association FailNextScheduler. . . . . . . . 81 + 4.4.17. The Association NextServiceAfterMeter. . . . . . 82 + 4.4.18. The Association QueueToSchedule. . . . . . . . . 83 + 4.4.19. The Association SchedulingServiceToSchedule. . . 84 + 4.4.20. The Aggregation MemberOfCollection . . . . . . . 85 + 4.4.21. The Aggregation CollectedBufferPool. . . . . . . 85 + 4.4.22. The Abstract Aggregation Component . . . . . . . 86 + 4.4.23. The Aggregation ServiceComponent . . . . . . . . 86 + 4.4.24. The Aggregation QoSSubService. . . . . . . . . . 86 + 4.4.25. The Aggregation QoSConditioningSubService. . . . 87 + 4.4.26. The Aggregation + ClassifierElementInClassifierService . . . . . . 88 + 4.4.27. The Aggregation EntriesInFilterList. . . . . . . 89 + 4.4.28. The Aggregation ElementInSchedulingService . . . 90 + 5. Intellectual Property Statement. . . . . . . . . . . . . . . . 91 + 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 91 + 7. Security Considerations. . . . . . . . . . . . . . . . . . . . 91 + 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 92 + 8.1. Normative References. . . . . . . . . . . . . . . . . . . 92 + 8.2. Informative References . . . . . . . . . . . . . . . . . 92 + 9. Appendix A: Naming Instances in a Native CIM Implementation . 94 + 9.1. Naming Instances of the Classes Derived from Service. . . 94 + 9.2. Naming Instances of Subclasses of FilterEntryBase . . . . 94 + 9.3. Naming Instances of ProtocolEndpoint. . . . . . . . . . . 94 + 9.4. Naming Instances of BufferPool. . . . . . . . . . . . . . 95 + 9.4.1. The Property CollectionID. . . . . . . . . . . . 95 + 9.4.2. The Property CreationClassName . . . . . . . . . 95 + 9.5. Naming Instances of SchedulingElement . . . . . . . . . . 95 + 10. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 96 + 11. Full Copyright Statement . . . . . . . . . . . . . . . . . . . 97 + +1. Introduction + + The purpose of this document is to define an information model to + describe the quality of service (QoS) mechanisms inherent in + different network devices, including hosts. Broadly speaking, these + mechanisms describe the attributes common to selecting and + conditioning traffic through the forwarding path (datapath) of a + network device. This selection and conditioning of traffic in the + datapath spans both major QoS architectures: Differentiated Services + (see [R2475]) and Integrated Services (see [R1633]). + + + + +Moore, et al. Standards Track [Page 4] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + This document is intended to be used with the QoS Policy Information + Model [QPIM] to model how policies can be defined to manage and + configure the QoS mechanisms (i.e., the classification, marking, + metering, dropping, queuing, and scheduling functionality) of + devices. Together, these two documents describe how to write QoS + policy rules to configure and manage the QoS mechanisms present in + the datapaths of devices. + + This document, as well as [QPIM], are information models. That is, + they represent information independent of a binding to a specific + type of repository. A separate document could be written to provide + a mapping of the data contained in this document to a form suitable + for implementation in a directory that uses (L)DAP as its access + protocol. Similarly, a document could be written to provide a + mapping of the data in [QPIM] to a directory. Together, these four + documents (information models and directory schema mappings) would + then describe how to write QoS policy rules that can be used to store + information in directories to configure device QoS mechanisms. + + The approach taken in this document defines a common set of classes + that can be used to model QoS in a device datapath. Vendors can then + map these classes, either directly or using an intervening format + like a COP-PR PIB, to their own device-specific implementations. + Note that the admission control element of Integrated Services is not + included in the scope of this model. + + The design of the class, association, and aggregation hierarchies + described in this document is influenced by the Network QoS submodel + defined by the Distributed Management Task Force (DMTF) - see [CIM]. + These hierarchies are not derived from the Policy Core Information + Model [PCIM]. This is because the modeling of the QoS mechanisms of + a device is separate and distinct from the modeling of policies that + manage those mechanisms. Hence, there is a need to separate QoS + mechanisms (this document) from their control (specified using the + generic policy document [PCIM] augmented by the QoS Policy document + [QPIM]). + + While it is not a policy model per se, this document does have a + dependency on the Policy Core Information Model Extensions document + [PCIME]. The device-level packet filtering, through which a + Classifier splits a traffic stream into multiple streams, is based on + the FilterEntryBase and FilterList classes defined in [PCIME]. + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14, RFC 2119 + [R2119]. + + + + +Moore, et al. Standards Track [Page 5] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +1.1. Policy Management Conceptual Model + + The Policy Core Information Model [PCIM] describes a general + methodology for constructing policy rules. PCIM Extensions [PCIME] + updates and extends the original PCIM. A policy rule aggregates a + set of policy conditions and an ordered set of policy actions. The + semantics of a policy rule are such that if the set of conditions + evaluates to TRUE, then the set of actions are executed. + + Policy conditions and actions have two principal components: operands + and operators. Operands can be constants or variables. To specify a + policy, it is necessary to specify: + + o the operands to be examined (also known as state variables); + + o the operands to be changed (also known as configuration + variables); + + o the relationships between these two sets of operands. + + Operands can be specified at a high-level, such as Joe (a user) or + Gold (a service). Operands can also be specified at a much finer + level of detail, one that is much closer to the operation of the + device. Examples of the latter include an IP Address or a queue's + bandwidth allocation. Implicit in the use of operands is the binding + of legal values or ranges of values to an operand. For example, the + value of an IP address cannot be an integer. The concepts of + operands and their ranges are defined in [PCIME]. + + The second component of policy conditions and actions is a set of + operators. Operators can express both relationships (greater than, + member of a set, Boolean OR, etc.) and assignments. Together, + operators and operands can express a variety of conditions and + actions, such as: + + If Bob is an Engineer... + If the source IP address is in the Marketing Subnet... + Set Joe's IP address to 192.0.2.100 + Limit the bandwidth of application x to 10 Mb + + We recognize that the definition of operator semantics is critical to + the definition of policies. However, the definition of these + operators is beyond the scope of this document. Rather, this + document (with [QPIM]) takes the first steps in identifying and + standardizing a set of properties (operands) for use in defining + policies for Differentiated and Integrated Services. + + + + + +Moore, et al. Standards Track [Page 6] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +1.2. Purpose and Relation to Other Policy Work + + This model establishes a canonical model of the QoS mechanisms of a + network device (e.g., a router, switch, or host) that is independent + of any specific type of network device. This enables traffic + conditioning to be described using a common set of abstractions, + modeled as a set of services and sub-services. + + When the concepts of this document are used in conjunction with the + concepts of [QPIM], one is able to define policies that bind the + services in a network to the needs of applications using that + network. In other words, the business requirements of an + organization can be reflected in one set of policies, and those + policies can be translated to a lower-level set of policies that + control and manage the configuration and operation of network + devices. + +1.3. Typical Examples of Policy Usage + + Policies could be implemented as low-level rules using the + information model described in this specification. For example, in a + low-level policy, a condition could be represented as an evaluation + of a specific attribute from this model. Therefore, a condition such + as "If filter = HTTP" would be interpreted as a test determining + whether any HTTP filters have been defined for the device. A high- + level policy, such as "If protocol = HTTP, then mark with + Differentiated Services Code Point (DSCP) 24," would be expressed as + a series of actions in a low-level policy using the classes and + attributes described below: + + 1. Create HTTP filter + 2. Create DSCP marker with the value of 24 + 3. Bind the HTTP filter to the DSCP marker + + Note that unlike "mark with DSCP 24," these low-level actions are not + performed on a packet as it passes through the device. Rather, they + are configuration actions performed on the device itself, to make it + ready to perform the correct action(s) on the correct packet(s). The + act of moving from a high-level policy rule to the correct set of + low-level device configuration actions is an example of what + [POLTERM] characterizes as "policy translation" or "policy + conversion". + + + + + + + + + +Moore, et al. Standards Track [Page 7] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +2. Approach + + QoS activities in the IETF have mainly focused in two areas, + Integrated Services (IntServ) and Differentiated Services (DiffServ) + (see [POLTERM], [R1633] and [R2475]). This document focuses on the + specification of QoS properties and classes for modeling the datapath + where packet traffic is conditioned. However, the framework defined + by the classes in this document has been designed with the needs of + the admission control portion of IntServ in mind as well. + +2.1. Common Needs Of DiffServ and IntServ + + First, let us consider IntServ. IntServ has two principal + components. One component is embedded in the datapath of the + networking device. Its functions include the classification and + policing of individual flows, and scheduling admitted packets for the + outbound link. The other component of IntServ is admission control, + which focuses on the management of the signaling protocol (e.g., the + PATH and RESV messages of RSVP). This component processes + reservation requests, manages bandwidth, outsources decision making + to policy servers, and interacts with the Routing Table manager. + + We will consider RSVP when defining the structure of this information + model. As this document focuses on the datapath, elements of RSVP + applicable to the datapath will be considered in the structure of the + classes. The complete IntServ device model will, as we have + indicated earlier, be addressed in a subsequent document. + + This document models a small subset of the QoS policy problem, in + hopes of constructing a methodology that can be adapted for other + aspects of QoS in particular, and of policy construction in general. + The focus in this document is on QoS for devices that implement + traffic conditioning in the datapath. + + DiffServ operates exclusively in the datapath. It has all of the + same components of the IntServ datapath, with two major differences. + First, DiffServ classifies packets based solely on their DSCP field, + whereas IntServ examines a subset of a standard flow's addressing 5- + tuple. The exception to this rule occurs in a router or host at the + boundary of a DiffServ domain. A device in this position may examine + a packet's DSCP, its addressing 5-tuple, other fields in the packet, + or even information wholly outside the packet, in determining the + DSCP value with which to mark the packet prior to its transfer into + the DiffServ domain. However, routers in the interior of a DiffServ + domain will only need to classify based on the DSCP field. + + + + + + +Moore, et al. Standards Track [Page 8] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The second difference between IntServ and DiffServ is that the + signaling protocol used in IntServ (e.g., RSVP) affects the + configuration of the datapath in a more dynamic fashion. This is + because each newly admitted RSVP reservation requires a + reconfiguration of the datapath. In contrast, DiffServ requires far + fewer changes to the datapath after the Per Hop Behaviors (PHBs) have + been configured. + + The approach advocated in this document for the creation of policies + that control the various QoS mechanisms of networking devices is to + first identify the attributes with which policies are to be + constructed. These attributes are the parameters used in expressions + that are necessary to construct policies. There is also a parallel + desire to define the operators, relations, and precedence constructs + necessary to construct the conditions and actions that constitute + these policies. However, these efforts are beyond the scope of this + document. + +2.2. Specific Needs Of DiffServ + + DiffServ-specific rules focus on two particular areas: the core and + the edges of the network. As explained in the DiffServ Architecture + document [R2475], devices at the edge of the network classify traffic + into different traffic streams. The core of the network then + forwards traffic from different streams by using a set of Per Hop + Behaviors (PHBs). A DSCP identifies each PHB. The DSCP is part of + the IP header of each packet (as described in [R2474]). This enables + multiple traffic streams to be aggregated into a small number of + aggregated traffic streams, where each aggregate traffic stream is + identified by a particular DSCP, and forwarded using a particular + PHB. + + The attributes used to manipulate QoS capabilities in the core of the + network primarily address the behavioral characteristics of each + supported PHB. At the edges of the DiffServ network, the additional + complexities of flow classification, policing, RSVP mappings, + remarkings, and other factors have to be considered. Additional + modeling will be required in this area. However, first, the + standards for edges of the DiffServ network need more detail - to + allow the edges to be incorporated into the policy model. + +2.3. Specific Needs Of IntServ + + This document focuses exclusively on the forwarding aspects of + network QoS. Therefore, while the forwarding aspects of IntServ are + considered, the management of IntServ is not considered. This topic + will be addressed in a future document. + + + + +Moore, et al. Standards Track [Page 9] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +3. Methodology + + There is a clear need to define attributes and behavior that together + define how traffic should be conditioned. This document defines a + set of classes and relationships that represent the QoS mechanisms + used to condition traffic; [QPIM] is used to define policies to + control the QoS mechanisms defined in this document. + + However, some very basic issues need to be considered when combining + these documents. Considering these issues should help in + constructing a schema for managing the operation and configuration of + network QoS mechanisms through the use of QoS policies. + +3.1. Level of Abstraction for Expressing QoS Policies + + The first issue requiring consideration is the level of abstraction + at which QoS policies should be expressed. If we consider policies + as a set of rules used to react to events and manipulate attributes + or generate new events, we realize that policy represents a continuum + of specifications that relate business goals and rules to the + conditioning of traffic done by a device or a set of devices. An + example of a business level policy might be: from 1:00 pm PST to 7:00 + am EST, sell off 40% of the network capacity on the open market. In + contrast, a device-specific policy might be: if the queue depth grows + at a geometric rate over a specified duration, trigger a potential + link failure event. + + A general model for this continuum is shown in Figure 1 below. + + +---------------------+ + | High-Level Business | Not directly related to device + | Policies | operation and configuration details + +---------------------+ + | + | + +---------V-----------+ + | Device-Independent | Translate high-level policies to + | Policies | generic device operational and + +---------------------+ configuration information + | + | + +---------V-----------+ + | Device-Dependent | Translate generic device information + | Policies | to specify how particular devices + +---------------------+ should operate and be configured + + Figure 1. The Policy Continuum + + + + +Moore, et al. Standards Track [Page 10] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + High-level business policies are used to express the requirements of + the different applications, and prioritize which applications get + "better" treatment when the network is congested. The goal, then, is + to use policies to relate the operational and configuration needs of + a device directly to the business rules that the network + administrator is trying to implement in the network that the device + belongs to. + + Device-independent policies translate business policies into a set of + generalized operational and configuration policies that are + independent of any specific device, but dependent on a particular set + of QoS mechanisms, such as random early detection (RED) dropping or + weighted round robin scheduling. Not only does this enable different + types of devices (routers, switches, hosts, etc.) to be controlled by + QoS policies, it also enables devices made by different vendors that + use the same types of QoS mechanisms to be controlled. This enables + these different devices to each supply the correct relative + conditioning to the same type of traffic. + + In contrast, device-dependent policies translate device-independent + policies into ones that are specific for a given device. The reason + that a distinction is made between device-independent and device- + dependent policies is that in a given network, many different devices + having many different capabilities need to be controlled together. + Device-independent policies provide a common layer of abstraction for + managing multiple devices of different capabilities, while device- + dependent policies implement the specific conditioning that is + required. This document provides a common set of abstractions for + representing QoS mechanisms in a device-independent way. + + This document is focused on the device-independent representation of + QoS mechanisms. QoS mechanisms are modeled in sufficient detail to + provide a common device-independent representation of QoS policies. + They can also be used to provide a basis for specialization, enabling + each vendor to derive a set of vendor-specific classes that represent + how traffic conditioning is done for that vendor's set of devices. + +3.2. Specifying Policy Parameters + + Policies are a function of parameters (attributes) and operators + (boolean, arithmetic, relational, etc.). Therefore, both need to be + defined as part of the same policy in order to correctly condition + the traffic. If the parameters of the policy are specified too + narrowly, they will reflect the individual implementations of QoS in + each device. As there is currently little consensus in the industry + on what the correct implementation model for QoS is, most defined + attributes would only be applicable to the unique characteristics of + a few individual devices. Moreover, standardizing all of these + + + +Moore, et al. Standards Track [Page 11] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + potential implementation alternatives would be a never-ending task as + new implementations continued to appear on the market. + + On the other hand, if the parameters of the policy are specified too + broadly, it is impossible to develop meaningful policies. For + example, if we concentrate on the so-called Olympic set of policies, + a business policy like "Bob gets Gold Service," is clearly + meaningless to the large majority of existing devices. This is + because the device has no way of determining who Bob is, or what QoS + mechanisms should be configured in what way to provide Gold service. + + Furthermore, Gold service may represent a single service, or it may + identify a set of services that are related to each other. In the + latter case, these services may have different conditioning + characteristics. + + This document defines a set of parameters that fit into a canonical + model for modeling the elements in the forwarding path of a device + implementing QoS traffic conditioning. By defining this model in a + device-independent way, the needed parameters can be appropriately + abstracted. + +3.3. Specifying Policy Services + + Administrators want the flexibility to be able to define traffic + conditioning without having to have a low-level understanding of the + different QoS mechanisms that implement that conditioning. + Furthermore, administrators want the flexibility to group different + services together, describing a higher-level concept such as "Gold + Service". This higher-level service could be viewed as providing the + processing to deliver "Gold" quality of service. + + These two goals dictate the need for the following set of + abstractions: + + o a flexible way to describe a service + + o must be able to group different services that may use different + technologies (e.g., DiffServ and IEEE 802.1Q) together + + o must be able to define a set of sub-services that together make up + a higher-level service + + o must be able to associate a service and the set of QoS mechanisms + that are used to condition traffic for that service + + o must be able to define policies that manage the QoS mechanisms + used to implement a service. + + + +Moore, et al. Standards Track [Page 12] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + This document addresses this set of problems by defining a set of + classes and associations that can represent abstract concepts like + "Gold Service," and bind each of these abstract services to a + specific set of QoS mechanisms that implement the conditioning that + they require. Furthermore, this document defines the concept of + "sub-services," to enable Gold Service to be defined either as a + single service or as a set of services that together should be + treated as an atomic entity. + + Given these abstractions, policies (as defined in [QPIM]) can be + written to control the QoS mechanisms and services defined in this + document. + +3.4. Level of Abstraction for Defining QoS Attributes and Classes + + This document defines a set of classes and properties to support + policies that configure device QoS mechanisms. This document + concentrates on the representation of services in the datapath that + support both DiffServ (for aggregate traffic conditioning) and + IntServ (for flow-based traffic conditioning). Classes and + properties for modeling IntServ admission control services may be + defined in a future document. + + The classes and properties in this document are designed to be used + in conjunction with the QoS policy classes and properties defined in + [QPIM]. For example, to preserve the delay characteristics committed + to an end-user, a network administrator may wish to create policies + that monitor the queue depths in a device, and adjust resource + allocations when delay budgets are at risk (perhaps as a result of a + network topology change). The classes and properties in this + document define the specific services and mechanisms required to + implement those services. The classes and properties defined in + [QPIM] provide the overall structure of the policy that manages and + configures this service. + + This combination of low-level specification (using this document) and + high-level structuring (using [QPIM]) of network services enables + network administrators to define new services required of the + network, that are directly related to business goals, while ensuring + that such services can be managed. However, this goal (of creating + and managing service-oriented policies) can only be realized if + policies can be constructed that are capable of supporting diverse + implementations of QoS. The solution is to model the QoS + capabilities of devices at the behavioral level. This means that for + traffic conditioning services realized in the datapath, the model + must support the following characteristics: + + o modeling of a generic network service that has QoS capabilities + + + +Moore, et al. Standards Track [Page 13] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + o modeling of how the traffic conditioning itself is defined + + o modeling of how statistics are gathered to monitor QoS traffic + conditioning services - this facet of the model will be added in a + future document. + + This document models a network service, and associates it with one or + more QoS mechanisms that are used to implement that service. It also + models in a canonical form the various components that are used to + condition traffic, such that standard as well as custom traffic + conditioning services may be described. + +3.5. Characterization of QoS Properties + + The QoS properties and classes will be described in more detail in + Section 4. However, we should consider the basic characteristics of + these properties, to understand the methodology for representing + them. + + There are essentially two types of properties, state and + configuration. Configuration properties describe the desired state + of a device, and include properties and classes for representing + desired or proposed thresholds, bandwidth allocations, and how to + classify traffic. State properties describe the actual state of the + device. These include properties to represent the current + operational values of the attributes in devices configured via the + configuration properties, as well as properties that represent state + (queue depths, excess capacity consumption, loss rates, and so + forth). + + In order to be correlated and used together, these two types of + properties must be modeled using a common information model. The + possibility of modeling state properties and their corresponding + configuration settings is accomplished using the same classes in this + model - although individual instances of the classes would have to be + appropriately named or placed in different containers to distinguish + current state values from desired configuration settings. + + State information is addressed in a very limited fashion by QDDIM. + Currently, only CurrentQueueDepth is proposed as an attribute on + QueuingService. The majority of the model is related to + configuration. Given this fact, it is assumed that this model is a + direct memory map into a device. All manipulation of model classes + and properties directly affects the state of the device. If it is + desired to also use these classes to represent desired configuration, + that is left to the discretion of the implementor. + + + + + +Moore, et al. Standards Track [Page 14] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + It is acknowledged that additional properties are needed to + completely model current state. However, many of the properties + defined in this document represent exactly the state variables that + will be configured by the configuration properties. Thus, the + definition of the configuration properties has an exact + correspondence with the state properties, and can be used in modeling + both actual (state) and desired/proposed configuration. + +3.6. QoS Information Model Derivation + + The question of context also leads to another question: how does the + information specified in the core and QoS policy models ([PCIM], + [PCIME], and [QPIM], respectively) integrate with the information + defined in this document? To put it another way, where should + device-independent concepts that lead to device-specific QoS + attributes be derived from? + + Past thinking was that QoS was part of the policy model. This view + is not completely accurate, and it leads to confusion. QoS is a set + of services that can be controlled using policy. These services are + represented as device mechanisms. An important point here is that + QoS services, as well as other types of services (e.g., security), + are provided by the mechanisms inherent in a given device. This + means that not all devices are indeed created equal. For example, + although two devices may have the same type of mechanism (e.g., a + queue), one may be a simple implementation (i.e., a FIFO queue) + whereas one may be much more complex and robust (e.g., class-based + weighted fair queuing (CBWFQ)). However, both of these devices can + be used to deliver QoS services, and both need to be controlled by + policy. Thus, a device-independent policy can instruct the devices + to queue certain traffic, and a device-specific policy can be used to + control the queuing in each device. + + Furthermore, policy is used to control these mechanisms, not to + represent them. For example, QoS services are implemented with + classifiers, meters, markers, droppers, queues, and schedulers. + Similarly, security is also a characteristic of devices, as + authentication and encryption capabilities represent services that + networked devices perform (irrespective of interactions with policy + servers). These security services may use some of the same + mechanisms that are used by QoS services, such as the concepts of + filters. However, they will mostly require different mechanisms than + the ones used by QoS, even though both sets of services are + implemented in the same devices. + + Thus, the similarity between the QoS model and models for other + services is not so much that they contain a few common mechanisms. + Rather, they model how a device implements their respective services. + + + +Moore, et al. Standards Track [Page 15] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + As such, the modeling of QoS should be part of a networking device + schema rather than a policy schema. This allows the networking + device schema to concentrate on modeling device mechanisms, and the + policy schema to focus on the semantics of representing the policy + itself (conditions, actions, operators, etc.). While this document + concentrates on defining an information model to represent QoS + services in a device datapath, the ultimate goal is to be able to + apply policies that control these services in network devices. + Furthermore, these two schemata (device and policy) must be tightly + integrated in order to enable policy to control QoS services. + +3.7. Attribute Representation + + The last issue to be considered is the question of how attributes are + represented. If QoS attributes are represented as absolute numbers + (e.g., Class AF2 gets 2 Mbs of bandwidth), it is more difficult to + make them uniform across multiple ports in a device or across + multiple devices, because of the broad variation in link capacities. + However, expressing attributes in relative or proportional terms + (e.g., Class AF2 gets 5% of the total link bandwidth) makes it more + difficult to express certain types of conditions and actions, such + as: + + (If ConsumedBandwidth = AssignedBandwidth Then ...) + + There are really three approaches to addressing this problem: + + o Multiple properties can be defined to express the same value in + various forms. This idea has been rejected because of the + difficulty in keeping these different properties synchronized + (e.g., when one property changes, the others all have to be + updated). + + o Multi-modal properties can be defined to express the same value, + in different terms, based on the access or assignment mode. This + option was rejected because it significantly complicates the model + and is impossible to express in current directory access protocols + (e.g., (L)DAP). + + o Properties can be expressed as "absolutes", but the operators in + the policy schema would need to be more sophisticated. Thus, to + represent a percentage, division and multiplication operators are + required (e.g., Class AF2 gets .05 * the total link bandwidth). + This is the approach that has been taken in this document. + + + + + + + +Moore, et al. Standards Track [Page 16] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +3.8. Mental Model + + The mental model for constructing this schema is based on the work + done in the Differentiated Services working group. This schema is + based on information provided in the current versions of the DiffServ + Informal Management Model [DSMODEL], the DiffServ MIB [DSMIB], the + PIB [PIB], as well as on information in the set of RFCs that + constitute the basic definition of DiffServ itself ([R2475], [R2474], + [R2597], and [R3246]). In addition, a common set of terminology is + available in [POLTERM]. + + This model is built around two fundamental class hierarchies that are + bound together using a set of associations. The two class + hierarchies derive from the QoSService and ConditioningService base + classes. A set of associations relate lower-level QoSService + subclasses to higher-level QoS services, relate different types of + conditioning services together in processing a traffic class, and + relate a set of conditioning services to a specific QoS service. + This combination of associations enables us to view the device as + providing a set of services that can be configured, in a modular + building block fashion, to construct application-specific services. + Thus, this document can be used to model existing and future standard + as well as application-specific network QoS services. + +3.8.1. The QoSService Class + + The first of the classes defined here, QoSService, is used to + represent higher-level network services that require special + conditioning of their traffic. An instance of QoSService (or one of + its subclasses) is used to bring together a group of conditioning + services that, from the perspective of the system manager, are all + used to deliver a common service. Thus, the set of classifiers, + markers, and related conditioning services that provide premium + service to the "selected" set of user traffic may be grouped together + into a premium QoS service. + + QoSService has a set of subclasses that represent different + approaches to delivering IP services. The currently defined set of + subclasses are a FlowService for flow-oriented QoS delivery and a + DiffServService for DiffServ aggregate-oriented QoS service delivery. + + The QoS services can be related to each other as peers, or they can + be implemented as subservient services to each other. The + QoSSubService aggregation indicates that one or more QoSService + objects are subservient to a particular QoSService object. For + example, this enables us to define Gold Service as a combination of + two DiffServ services, one for high quality traffic treatment, and + one for servicing the rest of the traffic. Each of these + + + +Moore, et al. Standards Track [Page 17] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + DiffServService objects would be associated with a set of + classifiers, markers, etc, such that the high quality traffic would + get EF marking and appropriate queuing. + + The DiffServService class itself has an AFService subclass. This + subclass is used to represent the specific notion that several + related markings within the AF PHB Group work together to provide a + single service. When other DiffServ PHB Groups are defined that use + more than one code point, these will be likely candidates for + additional DiffServService subclasses. + + Technology-specific mappings of these services, representing the + specific use of PHB marking or 802.1Q marking, are captured within + the ConditioningService hierarchy, rather than in the subclasses of + QoSService. + + These concepts are depicted in Figure 2. Note that both of the + associations are aggregations: a QoSService object aggregates both + the set of QoSService objects subservient to it, and the set of + ConditioningService objects that realize it. See Section 4 for class + and association definitions. + + /\______ + 0..1 \/ | + +--------------+ | QoSSubService +---------------+ + | |0..n | | | + | QoSService |----- | Conditioning | + | | | Service | + | | | | + | |0..n 0..n| | + | | /\______________________| | + | | \/ QoSConditioning | | + +--------------+ SubService +---------------+ + + Figure 2. QoSService and its Aggregations + +3.8.2. The ConditioningService Class + + The goal of the ConditioningService classes is to describe the + sequence of traffic conditioning that is applied to a given traffic + stream on the ingress interface through which it enters a device, and + then on the egress interface through which it leaves the device. + This is done using a set of classes and relationships. The routing + decision in the device core, which selects which egress interface a + particular packet will use, is not represented in this model. + + A single base class, ConditioningService, is the superclass for a set + of subclasses representing the mechanisms that condition traffic. + + + +Moore, et al. Standards Track [Page 18] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + These subclasses define device-independent conditioning primitives + (including classifiers, meters, markers, droppers, queues, and + schedulers) that together implement the conditioning of traffic on an + interface. This model abstracts these services into a common set of + modular building blocks that can be used, regardless of device + implementation, to model the traffic conditioning internal to a + device. + + The different conditioning mechanisms need to be related to each + other to describe how traffic is conditioned. Several important + variations of how these services are related together exist: + + o A particular ingress or egress interface may not require all the + types of ConditioningServices. + + o Multiple instances of the same mechanism may be required on an + ingress or egress interface. + + o There is no set order of application for the ConditioningServices + on an ingress or egress interface. + + Therefore, this model does not dictate a fixed ordering among the + subclasses of ConditioningService, or identify a subclass of + ConditioningService that must appear first or last among the + ConditioningServices on an ingress or egress interface. Instead, + this model ties together the various ConditioningService instances on + an ingress or egress interface using the NextService, + NextServiceAfterMeter, and NextServiceAfterConditioningElement + associations. There are also separate associations, called + IngressConditioningServiceOnEndpoint and + EgressConditioningServiceOnEndpoint, which, respectively, tie an + ingress interface to its first ConditioningService, and tie an egress + interface to its last ConditioningService(s). + +3.8.3. Preserving QoS Information from Ingress to Egress + + There is one important way in which the QDDIM model diverges from the + [DSMODEL]. In [DSMODEL], traffic passes through a network device in + three stages: + + o It comes in on an ingress interface, where it may receive QoS + conditioning. + + o It traverses the routing core, where logic outside the scope of + QoS determines which egress interface it will use to leave the + device. + + + + + +Moore, et al. Standards Track [Page 19] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + o It may receive further QoS conditioning on the selected egress + interface, and then it leaves the device. + + In this model, no information about the QoS conditioning that a + packet receives on the ingress interface is communicated with the + packet across the routing core to the egress interface. + + The QDDIM model relaxes this restriction, to allow information about + the treatment that a packet received on an ingress interface to be + communicated along with the packet to the egress interface. (This + relaxation adds a capability that is present in many network + devices.) QDDIM represents this information transfer in terms of a + packet preamble, which is how many devices implement it. But + implementations are free to use other mechanisms to achieve the same + result. + + +---------+ + | Meter-A | + a | | b d + --->| In-|---PM-1---> + | | c e + | Out-|---PM-2---> + +---------+ + + Figure 3: Meter Followed by Two Preamble Markers + + Figure 3 shows an example in which meter results are captured in a + packet preamble. The arrows labeled with single letters represent + instances of either the NextService association (a, d, and e), or of + its peer association NextServiceAfterMeter (b and c). PreambleMarker + PM-1 adds to the packet preamble an indication that the packet exited + Meter A as conforming traffic. Similarly, PreambleMarker PM-2 adds to + the preambles of packets that come through it indications that they + exited Meter A as nonconforming traffic. A PreambleMarker appends + its information to whatever is already present in a packet preamble, + as opposed to overwriting what is already there. + + To foster interoperability, the basic format of the information + captured by a PreambleMarker is specified. (Implementations, of + course, are free to represent this information in a different way + internally - this is just how it is represented in the model.) The + information is represented by an ordered, multi-valued string + property FilterItemList, where each individual value of the property + is of the form "<type>,<value>". When a PreambleMarker "appends" its + information to the information that was already present in a packet + preamble, it does so by adding additional items of the indicated + format to the end of the list. + + + + +Moore, et al. Standards Track [Page 20] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + QDDIM provides a limited set of <type>'s that a PreambleMarker may + use: + + o ConformingFromMeter: the value is the name of the meter. + + o PartConformingFromMeter: the value is the name of the meter. + + o NonConformingFromMeter: the value is the name of the meter. + + o VlanId: the value is the virtual LAN identifier (VLAN ID). + + Implementations may recognize other <type>'s in addition to these. + If collisions of implementation-specific <type>'s become a problem, + it is possible that <type>'s may become an IANA-administered range in + a future revision of this document. + + To make use of the information that a PreambleMarker stores in a + packet preamble, a specific subclass PreambleFilter of + FilterEntryBase is defined, to match on the "<type>,<value>" strings. + To simplify the case where there's just a single level of metering in + a device, but different individual meters on each ingress interface, + PreambleFilter allows a wildcard "any" for the <value> part of the + three meter-related filters. With this wildcard, an administrator + can specify a Classifier to select all packets that were found to be + conforming (or partially conforming, or non-conforming) by their + respective meters, without having to name each meter individually in + a separate ClassifierElement. + + Once a meter result has been stored in a packet preamble, it is + available for any subsequent Classifier to use. So while the + motivation for this capability has been described in terms of + preserving QoS conditioning information from an ingress interface to + an egress interface, a prior meter result may also be used for + classifying packets later in the datapath on the same interface where + the meter resides. + +3.9. Classifiers, FilterLists, and Filter Entries + + This document uses a number of classes to model the classifiers + defined in [DSMODEL]: ClassifierService, ClassifierElement, + FilterList, FilterEntryBase, and various subclasses of + FilterEntryBase. There are also two associations involved: + ClassifierElementUsesFilterList and EntriesInFilterList. The QDDIM + model makes no use of CIM's FilterEntry class. + + In [DSMODEL], a single traffic stream coming into a classifier is + split into multiple traffic streams leaving it, based on which of an + ordered set of filters each packet in the incoming stream matches. A + + + +Moore, et al. Standards Track [Page 21] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + filter matches either a field in the packet itself, or possibly other + attributes associated with the packet. In the case of a multi-field + (MF) classifier, packets are assigned to output streams based on the + contents of multiple fields in the packet header. For example, an MF + classifier might assign packets to an output stream based on their + complete IP-addressing 5-tuple. + + To optimize the representation of MF classifiers, subclasses of + FilterEntryBase are introduced, which allow multiple related packet + header fields to be represented in a single object. These subclasses + are IPHeaderFilter and 8021Filter. With IPHeaderFilter, for example, + criteria for selecting packets based on all five of the IP 5-tuple + header fields and the DiffServ DSCP can be represented by a + FilterList containing one IPHeaderFilter object. Because these two + classes have applications beyond those considered in this document, + they, as well as the abstract class FilterEntryBase, are defined in + the more general document [PCIME] rather than here. + + The FilterList object is always needed, even if it contains only one + filter entry (that is, one FilterEntryBase subclass) object. This is + because a ClassifierElement can only be associated with a Filter + List, as opposed to an individual FilterEntry. FilterList is also + defined in [PCIME]. + + The EntriesInFilterList aggregation (also defined in [PCIME]) has a + property EntrySequence, which in the past (in CIM) could be used to + specify an evaluation order on the filter entries in a FilterList. + Now, however, the EntrySequence property supports only a single + value: '0'. This value indicates that the FilterEntries are ANDed + together to determine whether a packet matches the MF selector that + the FilterList represents. + + A ClassifierElement specifies the starting point for a specific + policy or data path. Each ClassifierElement uses the + NextServiceAfterClassifierElement association to determine the next + conditioning service to apply for packets to. + + A ClassifierService defines a grouping of ClassifierElements. There + are certain instances where a ClassifierService actually specifies an + aggregation of ClassifierServices. One practical case would be where + each ClassifierService specifies a group of policies associated with + a particular application and another ClassifierService groups the + application-specific ClassifierService instances. In this particular + case, the application-specific ClassifierService instances are + specified once, but unique combinations of these ClassifierServices + are specified, as needed, using other ClassifierService instances. + ClassifierService instances grouping other ClassifierService + instances may not specify a FilterList using the + + + +Moore, et al. Standards Track [Page 22] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + ClassifierElementUsesFilterList association. This special use of + ClassifierService serves just as a Classifier collecting function. + +3.10. Modeling of Droppers + + In [DSMODEL], a distinction is made between absolute droppers and + algorithmic droppers. In QDDIM, both of these types of droppers are + modeled with the DropperService class, or with one of its subclasses. + In both cases, the queue from which the dropper drops packets is tied + to the dropper by an instance of the NextService association. The + dropper always plays the PrecedingService role in these associations, + and the queue always plays the FollowingService role. There is + always exactly one queue from which a dropper drops packets. + + Since an absolute dropper drops all packets in its queue, it needs no + configuration beyond a NextService tie to that queue. For an + algorithmic dropper, however, further configuration is needed: + + o a specific drop algorithm; + + o parameters for the algorithm (for example, token bucket size); + + o the source(s) of input(s) to the algorithm; + + o possibly per-input parameters for the algorithm. + + The first two of these items are represented by properties of the + DropperService class, or properties of one of its subclasses. The + last two, however, involve additional classes and associations. + +3.10.1. Configuring Head and Tail Droppers + + The HeadTailDropQueueBinding is the association that identifies the + inputs for the algorithm executed by a tail dropper. This + association is not used for a head dropper, because a head dropper + always has exactly one input to its drop algorithm, and this input is + always the queue from which it drops packets. For a tail dropper, + this association is defined to have a many-to-many cardinality. + There are, however, two distinct cases: + + One dropper bound to many queues: This represents the case where the + drop algorithm for the dropper involves inputs from more than one + queue. The dropper still drops from only one queue, the one to which + it is tied by a NextService association. But the drop decision may + be influenced by the state of several queues. For the classes + HeadTailDropper and HeadTailDropQueueBinding, the rule for combining + the multiple inputs is simple addition: if the sum of the lengths of + the monitored queues exceeds the dropper's QueueThreshold value, then + + + +Moore, et al. Standards Track [Page 23] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + packets are dropped. This rule for combining inputs may, however, be + overridden by a different rule in subclasses of one or both of these + classes. + + One queue bound to many droppers: This represents the case where the + state of one queue (which is typically also the queue from which + packets are dropped) provides an input to multiple droppers' drop + algorithms. A use case here is a classifier that splits a traffic + stream into, say, four parts, representing four classes of traffic. + Each of the parts goes through a separate HeadTailDropper, then + they're re-merged onto the same queue. The net is a single queue + containing packets of four traffic types, with, say, the following + drop thresholds: + + o Class 1 - 90% full + o Class 2 - 80% full + o Class 3 - 70% full + o Class 4 - 50% full + + Here the percentages represent the overall state of the queue. With + this configuration, when the queue in question becomes 50% full, + Class 4 packets will be dropped rather than joining the queue, when + it becomes 70% full, Class 3 and 4 packets will be dropped, etc. + + The two cases described here can also occur together, if a dropper + receives inputs from multiple queues, one or more of which are also + providing inputs to other droppers. + +3.10.2. Configuring RED Droppers + + Like a tail dropper, a RED dropper, represented by an instance of the + REDDropperService class, may take as its inputs the states of + multiple queues. In this case, however, there is an additional step: + each of these inputs may be smoothed before the RED dropper uses it, + and the smoothing process itself must be parameterized. Consequently, + in addition to REDDropperService and QueuingService, a third class, + DropThresholdCalculationService, is introduced, to represent the + per-queue parameterization of this smoothing process. + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 24] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The following instance diagram illustrates how these classes work + with each other: + + RDSvc-A + | | | + +-----+ | +-----+ + | | | + DTCS-1 DTCS-2 DTCS-3 + | | | + Q-1 Q-2 Q-3 + + Figure 4. Inputs for a RED Dropper + + So REDDropperService-A (RDSvc-A) is using inputs from three queues to + make its drop decision. (As always, RDSvc-A is linked to the queue + from which it drops packets via the NextService association.) For + each of these three queues, there is a + (DropThresholdCalculationService) DTCS instance that represents the + smoothing weight and time interval to use when looking at that queue. + Thus each DTCS instance is tied to exactly one queue, although a + single queue may be examined (with different weight and time values) + by multiple DTCS instances. Also, a DTCS instance and the queue + behind it can be thought of as a "unit of reusability". So a single + DTCS can be referred to by multiple RDSvc's. + + Unless it is overridden by a different rule in a subclass of + REDDropperService, the rule that a RED dropper uses to combine the + smoothed inputs from the DTCS's to create a value to use in making + its drop decision is simple addition. + +3.11. Modeling of Queues and Schedulers + + In order to appreciate the rationale behind this rather complex model + for scheduling, we must consider the rather complex nature of + schedulers, as well as the extreme variations in algorithms and + implementations. Although these variations are broad, we have + identified four examples that serve to test the model and justify its + complexity. + +3.11.1. Simple Hierarchical Scheduler + + A simple, hierarchical scheduler has the following properties. First, + when a scheduling opportunity is given to a set of queues, a single, + viable queue is determined based on some scheduling criteria, such as + bandwidth or priority. The output of the scheduler is the input to + another scheduler that treats the first scheduler (and its queues) as + a single logical queue. Hence, if the first scheduler determined the + appropriate packet to release based on a priority assigned to each + + + +Moore, et al. Standards Track [Page 25] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + queue, the second scheduler might specify a bandwidth + limit/allocation for the entire set of queues aggregated by the first + scheduler. + + +----------+ NextService + |QueuingSvc+----------------------------------------------+ + | Name=EF1 | | + | | QueueTo +--------------+ ElementSched | + | +------------+PrioritySched +---------------+ | + +----------+ Schedule |Element | Service | | + | Name=EF1-Pri | | v + | Priority=1 | +-----------+-+-+ + +--------------+ |SchedulingSvc + + | Name=PriSched1+ + +--------------+ +----------+--+-+ + |PrioritySched | ElementSched | ^ + +----------+ |Element +---------------+ | + |QueuingSvc| QueueTo | Name=AF1x-Pri| Service | + | Name=AF1x+------------+ Priority=2 | | + | | Schedule +--------------+ | + | | NextService | + | +----------------------------------------------+ + +----------+ + : + +---------------+ NextScheduler + |SchedulingSvc +--------------------------------------------+ + | Name=PriSched1| | + +-------+-------+ +--------------------+ElementSchedSvc| + | SchedToSched |AllocationScheduling+--------+ | + +---------------+Element | | | + | Name=PriSched1-Band| | | + | Units=Bytes | | v + | Bandwidth=100 | +------+------+--+ + +--------------------+ |SchedulingSvc | + | Name=BandSched1| + +--------------------+ +------+------+--+ + |AllocationScheduling| | ^ + +---------------+ |Element +--------+ | + |QueuingService | | Name=BE-Band |ElementSchedSvc| + | Name=BE |QueueTo+ Units=Bytes | | + | |-------+ Bandwidth=50 | | + | |Sched +--------------------+ | + | | NextService | + | +--------------------------------------------+ + +---------------+ + + Figure 5. Example 1: Simple Hierarchical Scheduler + + + + +Moore, et al. Standards Track [Page 26] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + Figure 5 illustrates the example and how it would be instantiated + using the model. In the figure, NextService determines the first + scheduler after the queue. NextScheduler determines the + subsequent ordering of schedulers. In addition, the + ElementSchedulingService association determines the set of + scheduling parameters used by a specific scheduler. Scheduling + parameters can be bound either to queues or to schedulers. In + the case of the SchedulingElement EF1-Pri, the binding is to a + queue, so the QueueToSchedule association is used. In the case + of the SchedulingElement PriSched1-Band, the binding is to + another scheduler, so the SchedulerToSchedule association is + used. Note that due to space constraints of the document, the + SchedulingService PRISched1 is represented twice, to show how it + is connected to all the other objects. + +3.11.2. Complex Hierarchical Scheduler + + A complex, hierarchical scheduler has the same characteristics as + a simple scheduler, except that the criteria for the second + scheduler are determined on a per queue basis rather than on an + aggregate basis. One scenario might be a set of bounded priority + schedulers. In this case, each queue is assigned a relative + priority. However, each queue is also not allowed to exceed a + bandwidth allocation that is unique to that queue. In order to + support this scenario, the queue must be bound to two separate + schedulers. Figure 6 illustrates this situation, by describing + an EF queue and a best effort (BE) queue both pointing to a + priority scheduler via the NextService association. The + NextScheduler association between the priority scheduler and the + bandwidth scheduler in turn defines the ordering of the + scheduling hierarchy. Also note that each scheduler has a + distinct set of scheduling parameters that are bound back to each + queue. This demonstrates the need to support two or more + parameter sets on a per queue basis. + + + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 27] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + +----------------+ + |QueuingService | + | Name=EF | + | |QueueTo +----------------+ElementSchedSvc + | +----------+AllocationSched +--------+ + ++---+-----------+Schedule |Element | | + | | | Name=BandEF | | + | |QueueTo | Units=Bytes | | + | |Schedule | Bandwidth=100 | | + | | +----------------+ +------+---------+ + | | |SchedulingSvc | + | | +------------------+ | Name=BandSched | + | +------+PriorityScheduling| +------------+--++ + | |Element | ^ | + | | Name=PriEF |ElementSchedSvc | | + | | Priority=1 +---------------------+ | | + | +------------------+ | | | + |NextService | | | + +-------------------------------------------------+ | | | + | | | | + NextService | | | | + +-----------------------------------------------+ | | | | + | | | | | | + | +------------------+ElementSchedSvc | | | | | + | |PriorityScheduling+--------+ | | | | | + | |Element | | | | | | | + | | Name=PriBE | | v v | | | + | +------+ Priority=2 | +---+--------+-+-+-+Next| | + | | +------------------+ |SchedulingService +----+ | + | | | Name=PriSched |Sched | + | | +------------------+ | + | |QueueTo | + | |Schedule +----------------+ | + | | |AllocationSched |ElementSchedSvc | + +----+---------+ |Element +-----------------+ + |QueuingService|QueueTo | Name=BandBE | + | Name=BE +------------+ Units=Bytes | + | |Schedule | Bandwidth=50 | + | | +----------------+ + +--------------+ + + Figure 6. Example 2: Complex Hierarchical Scheduler + + + + + + + + + +Moore, et al. Standards Track [Page 28] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +3.11.3. Excess Capacity Scheduler + + An excess capacity scheduler offers a similar requirement to support + two scheduling parameter sets per queue. However, in this scenario + the reasons are a little different. Suppose a set of queues have + each been assigned bandwidth limits to ensure that no traffic class + starves out another traffic class. The result may be that one or + more queues have exceeded their allocation while the queues that + deserve scheduling opportunities are empty. + + The question then is how is the excess (idle) bandwidth allocated. + Conceivably, the scheduling criteria for excess capacity are + completely different from the criteria that determine allocations + under uniform load. This could be supported with a scheduling + hierarchy. However, the problem is that the criteria for using the + subsequent scheduler are different from those in the last two cases. + Specifically, the next scheduler should only be used if a scheduling + opportunity exists that was passed over by the prior scheduler. + + When a scheduler chooses to forgo a scheduling decision, it is + behaving as a non-work conserving scheduler. Work conserving + schedulers, by definition, will always take advantage of a scheduling + opportunity, irrespective of which queue is being serviced and how + much bandwidth it has consumed in the past. This point leads to an + interesting insight. The semantics of a non-work conserving + scheduler are equivalent to those of a meter, in that if a packet is + in profile it is given the scheduling opportunity, and if it is out + of profile it does not get a scheduling opportunity. However, with + meters there are semantics that determine the next action behavior + when the packet is in profile and when the packet is out of profile. + Similarly, with the non-work conserving scheduler, there needs to be + a means for determining the next scheduler when a scheduler chooses + not to utilize a scheduling opportunity. + + Figure 7 illustrates this last scenario. It appears very similar to + Figure 6, except that the binding between the allocation scheduler + and the WRR scheduler is using a FailNextScheduler association. This + association is explicitly indicating the fact that the only time the + WRR scheduler would be used is when there are non-empty queues that + the allocation scheduler rejected for scheduling consideration. Note + that Figure 7 is incomplete, in that typically there would be several + more queues that are bound to an allocation scheduler and a WRR + scheduler. + + + + + + + + +Moore, et al. Standards Track [Page 29] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + +------------+ + |QueuingSvc | + | Name=EF | + | | + | | + ++-+---------+ + | | + | |QueueTo + | |Schedule +--------------+ + | | |SchedulingSvc | + | | +------------------+ | Name=WRRSched| + | +------+AllocationSched | +----------+-+-+ + | |Element | ^ | + | | Name=BandEF |ElementSchedSvc | | + | | Units=Bytes +--------------------+ | | + | | Bandwidth=100 | | | | + | +------------------+ | | | + |NextService | | | + +----------------------------------------------+ | | | + | | | | + NextService | | | | + +--------------------------------------------+ | | | | + | | | | | | + | +------------------+ElementSchedSvc | | | | | + | |AllocationSched +--------+ | | | | | + | |Element | | | | | | | + | | Name=BandwidthAF1| | | | | | | + | | Units=Bytes | | v v | | | + | +------+ Bandwidth=50 | +--+----------+-+-++FailNext| | + | | +------------------+ |SchedulingService +--------+ | + | |QueueTo | Name=BandSched |Scheduler | + | |Schedule +------------------+ | + | | | + | | +---------------------+ | + ++-+-----------+ | WRRSchedulingElement| | + |QueuingService|QueueTo | Name=WRRBE +------------+ + | Name=BE +-----------+ Weight=30 |ElementSchedSvc + +--------------+Schedule +---------------------+ + + Figure 7. Example 3: Excess Capacity Scheduler + + + + + + + + + + + +Moore, et al. Standards Track [Page 30] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +3.11.4. Hierarchical CBQ Scheduler + + A hierarchical class-based queuing (CBQ) scheduler is the fourth + scenario to be considered. In hierarchical CBQ, each queue is + allocated a specific bandwidth allocation. Queues are grouped + together into a logical scheduler. This logical scheduler in turn + has an aggregate bandwidth allocation that equals the sum of the + queues it is scheduling. In turn, logical schedulers can be + aggregated into higher-level logical schedulers. Changing + perspectives and looking top down, the top-most logical scheduler has + 100% of the link capacity. This allocation is parceled out to + logical schedulers below it such that the sum of the allocations is + equal to 100%. These second tier schedulers may in turn parcel out + their allocation across a third tier of schedulers and so forth until + the lowest tier that parcels out their allocations to specific queues + representing relatively fine-grained classes of traffic. The unique + aspect of hierarchical CBQ is that when there is insufficient + bandwidth for a specific allocation, schedulers higher in the tree + are tested to see if another portion of the tree has capacity to + spare. + + Figure 8 demonstrates this example with two tiers. The example is + split in half because of space constraints, resulting in the CBQTier1 + scheduling service instance being represented twice. Note that the + total allocation at the top tier is 50 Mb. The voice allocation is + 22 Mb. The remaining 23 Mb is split between FTP and Web. Hence, if + Web traffic is actually consuming 20 Mb (5 Mb in excess of the + allocation). If FTP is consuming 5 Mb, then it is possible for the + CBQTier1 scheduler to offer 3Mb of its allocation to Web traffic. + However, this is not enough, so the FailNextScheduler association + needs to be traversed to determine if there is any excess capacity + available from the voice class. If the voice class is only consuming + 15 Mb of its 22 Mb allocation, there are sufficient resources to + allow the web traffic through. Note that FailNextScheduler is used + as the association. The reason is because the CBQTier1 scheduler in + fact failed to schedule a packet because of insufficient resources. + It is conceivable that a variant of hierarchical CBQ allows a + hierarchy for successful scheduling as well. Hence, both + associations are necessary. + + Note that due to space constraints of the document, the + SchedulingService CBQTier1 is represented twice, to show how it is + connected to all the other objects. + + + + + + + + +Moore, et al. Standards Track [Page 31] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + +-----------+ NextService + |QueuingSvc +-------------------------------------------+ + | Name=Web | | + | |QueueTo+----------------+ ElementSchedSvc | + | +-------+AllocationSched +----------------+ | + +-----------+Sched |Element | | | + | Name=Web-Alloc | | v + | Bandwidth=15 | +-----------+-+-+ + +----------------+ |SchedulingSvc + + | Name=CBQTier1 + + +----------------+ +-----------+-+-+ + |AllocationSched | ElementSchedSvc| ^ + +-----------+ |Element +----------------+ | + |QueuingSvc |QueueTo| Name=FTP-Alloc | | + | Name=FTP +-------+ Bandwidth=8 | | + | |Sched +----------------+ | + | | NextService | + | +-------------------------------------------+ + +-----------+ + : + + +---------------+ FailNextScheduler + |SchedulingSvc +---------------------------------------------+ + | Name=CBQTier1 | | + +-------+-------+ +---------------------+ElementSchedSvc| + | SchedToSched |AllocationScheduling +--------+ | + +---------------+Element | | | + | Name=LowPri-Alloc | | | + | Bandwidth=23 | | v + +---------------------+ +-----+------+-+ + |SchedulingSvc | + | Name=CBQTop | + +---------------------+ +----------+-+-+ + |AllocationScheduling |ElementSchedSvc | ^ + +------------+ |Element +----------------+ | + |QueuingSvc |QueueTo| Name=BE-Band | | + | Name=Voice +-------+ Bandwidth=22 | | + | |Sched +---------------------+ | + | | NextService | + | +------------------------------------------------+ + +------------+ + + Figure 8. Example 4: Hierarchical CBQ Scheduler + + + + + + + + +Moore, et al. Standards Track [Page 32] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4. The Class Hierarchy + + The following sections present the class and association hierarchies + that together comprise the information model for modeling QoS + capabilities at the device level. + +4.1. Associations and Aggregations + + Associations and aggregations are a means of representing + relationships between two (or theoretically more) objects. + Dependency, aggregation, and other relationships are modeled as + classes containing two (or more) object references. It should be + noted that aggregations represent either "whole-part" or "collection" + relationships. For example, aggregation can be used to represent the + containment relationship between a system and the components that + constitute the system. + + Since associations and aggregations are classes, they can benefit + from all of the object-oriented features that other non-relationship + classes have. For example, they can contain properties and methods, + and inheritance can be used to refine their semantics such that they + represent more specialized types of their superclasses. + + Note that an association (or an aggregation) object is treated as an + atomic unit (individual instance), even though it relates/collects/is + comprised of multiple objects. This is a defining feature of an + association (or an aggregation) - although the individual elements + that are related to other objects have their own identities, the + association (or aggregation) object that is constructed using these + objects has its own identity and name as well. + + It is important to note that associations and aggregations form an + inheritance hierarchy that is separate from the class inheritance + hierarchy. Although associations and aggregations are typically bi- + directional, there is nothing that prevents higher order associations + or aggregations from being defined. However, such associations and + aggregations are inherently more complex to define, understand, and + use. In practice, associations and aggregations of orders higher + than binary are rarely used, because of their greatly increased + complexity and lack of generality. All of the associations and + aggregations defined in this model are binary. + + Note also that by definition, associations and aggregations cannot be + unary. + + + + + + + +Moore, et al. Standards Track [Page 33] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + Finally, note that associations and aggregations that are defined + between two classes do not affect the classes themselves. That is, + the addition or deletion of an association or an aggregation does not + affect the interfaces of the classes that it is connecting. + +4.2. The Structure of the Class Hierarchies + + The structure of the class, association, and aggregation class + inheritance hierarchies for managing the datapaths of QoS devices is + shown, respectively, in Figure 9, Figure 10, and Figure 11. The + notation (CIMCORE) identifies a class defined in the CIM Core model. + Please refer to [CIM] for the definitions of these classes. + Similarly, the notation [PCIME] identifies a class defined in the + Policy Core Information Model Extensions document. This model has + been influenced by [CIM], and is compatible with the Directory + Enabled Networks (DEN) effort. + + +--ManagedElement (CIMCORE) + | + +--ManagedSystemElement (CIMCORE) + | | + | +--LogicalElement (CIMCORE) + | | + | +--Service (CIMCORE) + | | | + | | +--ConditioningService + | | | | + | | | +--ClassifierService + | | | | | + | | | | +--ClassifierElement + | | | | + | | | +--MeterService + | | | | | + | | | | +--AverageRateMeterService + | | | | | + | | | | +--EWMAMeterService + | | | | | + | | | | +--TokenBucketMeterService + | | | | + | | | +--MarkerService + | | | | | + | | | | +--PreambleMarkerService + | | | | | + | | | | +--TOSMarkerService + | | | | | + | | | | +--DSCPMarkerService + | | | | | + + + + +Moore, et al. Standards Track [Page 34] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + (continued from previous page; + the first four elements are repeated for convenience) + + +--ManagedElement (CIMCORE) + | + +--ManagedSystemElement (CIMCORE) + | | + | +--LogicalElement (CIMCORE) + | | + | +--Service (CIMCORE) + | | | | +--8021QMarkerService + | | | | + | | | +--DropperService + | | | | | + | | | | +--HeadTailDropperService + | | | | | + | | | | +--RedDropperService + | | | | + | | | +--QueuingService + | | | | + | | | +--PacketSchedulingService + | | | | + | | | +--NonWorkConservingSchedulingService + | | | + | | +--QoSService + | | | | + | | | +--DiffServService + | | | | | + | | | | +--AFService + | | | | + | | | +--FlowService + | | | + | | +--DropThresholdCalculationService + | | + | +--FilterEntryBase [PCIME] + | | | + | | +--IPHeaderFilter [PCIME] + | | | + | | +--8021Filter [PCIME] + | | | + | | +--PreambleFilter + | | + | +--FilterList [PCIME] + | | + | +--ServiceAccessPoint (CIMCORE) + | | + | +--ProtocolEndpoint + + + + +Moore, et al. Standards Track [Page 35] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + (continued from previous page; + the first four elements are repeated for convenience) + + +--ManagedElement (CIMCORE) + | + +--ManagedSystemElement (CIMCORE) + | | + | +--LogicalElement (CIMCORE) + | | + | +--Service (CIMCORE) + | + +--Collection (CIMCORE) + | | + | +--CollectionOfMSEs (CIMCORE) + | | + | +--BufferPool + | + +--SchedulingElement + | + +--AllocationSchedulingElement + | + +--WRRSchedulingElement + | + +--PrioritySchedulingElement + | + +--BoundedPrioritySchedulingElement + + Figure 9. Class Inheritance Hierarchy + + + + + + + + + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 36] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The inheritance hierarchy for the associations defined in this + document is shown in Figure 10. + + +--Dependency (CIMCORE) + | | + | +--ServiceSAPDependency (CIMCORE) + | | | + | | +--IngressConditioningServiceOnEndpoint + | | | + | | +--EgressConditioningServiceOnEndpoint + | | + | +--HeadTailDropQueueBinding + | | + | +--CalculationBasedOnQueue + | | + | +--ProvidesServiceToElement (CIMCORE) + | | | + | | +--ServiceServiceDependency (CIMCORE) + | | | + | | +--CalculationServiceForDropper + | | + | +--QueueAllocation + | | + | +--ClassifierElementUsesFilterList + | + +--AFRelatedServices + | + +--NextService + | | + | +--NextServiceAfterClassifierElement + | | + | +--NextScheduler + | | + | +--FailNextScheduler + | + +--NextServiceAfterMeter + | + +--QueueToSchedule + | + +--SchedulingServiceToSchedule + + Figure 10. Association Class Inheritance Hierarchy + + + + + + + + + +Moore, et al. Standards Track [Page 37] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The inheritance hierarchy for the aggregations defined in this + document is shown in Figure 11. + + +--MemberOfCollection (CIMCORE) + | | + | +--CollectedBufferPool + | + +--Component (CIMCORE) + | | + | +--ServiceComponent (CIMCORE) + | | | + | | +--QoSSubService + | | | + | | +--QoSConditioningSubService + | | | + | | +--ClassifierElementInClassifierService + | | + | +--EntriesInFilterList [PCIME] + | + +--ElementInSchedulingService + + Figure 11. Aggregation Class Inheritance Hierarchy + +4.3. Class Definitions + + This section presents the classes and properties that make up the + Information Model for describing QoS-related functionality in network + devices, including hosts. These definitions are derived from + definitions in the CIM Core model [CIM]. Only the QoS-related + classes are defined in this document. However, other classes drawn + from the CIM Core model, as well as from [PCIME], are described + briefly. The reader is encouraged to look at [CIM] and at [PCIME] + for further information. Associations and aggregations are defined + in Section 4.4. + +4.3.1. The Abstract Class ManagedElement + + This is an abstract class defined in the Core Model of CIM. It is + the root of the entire class inheritance hierarchy in CIM. Among the + associations that refer to it are two that are subclassed in this + document: Dependency and MemberOfCollection, which is an aggregation. + ManagedElement's properties are Caption and Description. Both are + free-form strings to describe an instantiated object. Please refer + to [CIM] for the full definition of this class. + + + + + + + +Moore, et al. Standards Track [Page 38] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.2. The Abstract Class ManagedSystemElement + + This is an abstract class defined in the Core Model of CIM; it is a + subclass of ManagedElement. ManagedSystemElement serves as the base + class for the PhysicalElement and LogicalElement class hierarchies. + LogicalElement, in turn, is the base class for a number of important + CIM hierarchies, including System. Any distinguishable component of + a System is a candidate for inclusion in this class hierarchy, + including physical components (e.g., chips and cards) and logical + components (e.g., software components, services, and other objects). + + None of the associations in which this class participates is used + directly in the QoS device state model. However, the aggregation + Component, which relates one ManagedSystemElement to another, is the + base class for the two aggregations that form the core of the QoS + device state model: QoSSubService and QoSConditioningSubService. + Similarly, the association ProvidesServiceToElement, which relates a + ManagedSystemElement to a Service, is the base class for the model's + CalculationServiceForDropper association. + + Please refer to [CIM] for the full definition of this class. + +4.3.3. The Abstract Class LogicalElement + + This is an abstract class defined in the Core Model of CIM. It is a + subclass of the ManagedSystemElement class, and is the base class for + all logical components of a managed System, such as Files, Processes, + or system capabilities in the form of Logical Devices and Services. + None of the associations in which this class participates is relevant + to the QoS device state model. Please refer to [CIM] for the full + definition of this class. + +4.3.4. The Abstract Class Service + + This is an abstract class defined in the Core Model of CIM. It is a + subclass of the LogicalElement class, and is the base class for all + objects that represent a "service" or functionality in a System. A + Service is a general-purpose object that is used to configure and + manage the implementation of functionality. As noted above in + section 4.3.2, this class participates in the + ProvidesServiceToElement association. Please refer to [CIM] for the + full definition of this class. + +4.3.5. The Class ConditioningService + + This is a concrete subclass of the CIM Core class Service; it + represents the ability to define how traffic is conditioned in the + data-forwarding path of a device. The subclasses of + + + +Moore, et al. Standards Track [Page 39] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + ConditioningService define the particular types of conditioning that + are done. Six fundamental types of conditioning are defined in this + document. These are the services performed by a classifier, a meter, + a marker, a dropper, a queue, and a scheduler. Other, more + sophisticated types of conditioning may be defined in future + documents. + + ConditioningService is a concrete class because at the time it was + defined in CIM, its superclass was concrete. While this class can be + instantiated, an instance of it would not accomplish anything, + because the nature of the conditioning, and the parameters that + control it, are specified only in the subclasses of + ConditioningService. + + Two associations in which ConditioningService participates are + critical to its usage in QoS - QoSConditioningSubService and + NextService. QoSConditioningSubService aggregates + ConditioningServices into a particular QoS service (such as AF), to + describe the specific conditioning functionality that underlies that + QoS service in a particular device. NextService indicates the + subsequent conditioning service(s) for different traffic streams. + + The class definition is as follows: + + NAME ConditioningService + DESCRIPTION A concrete class to define how traffic + is conditioned in the data forwarding + path of a host or network device. + DERIVED FROM Service + TYPE Concrete + PROPERTIES (none) + +4.3.6. The Class ClassifierService + + The concept of a Classifier comes from [DSMODEL]. ClassifierService + is a concrete class that represents a logical entity in an ingress or + egress interface of a device, that takes a single input stream, and + sorts it into one or more output streams. The sorting is done by a + set of filters that select packets based on the packet contents, or + possibly based on other attributes associated with the packet. Each + output stream is the result of matching a particular filter. + + The representation of classifiers in QDDIM is closely related to that + presented in [DSMIB] and [DSMODEL]. Rather than being linked + directly to its FilterLists, a classifier is modeled here as an + aggregation of ClassifierElements. Each of these ClassifierElements + is then linked to a single FilterList, by the association + ClassifierElementUsesFilterList. + + + +Moore, et al. Standards Track [Page 40] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + A Classifier is modeled as a subclass of ConditioningService so that + it can be aggregated into a QoSService (using the + QoSConditioningSubService aggregation), and can use the NextService + association to identify the subsequent ConditioningService objects + for the different traffic streams. + + ClassifierService is designed to allow hierarchical classification. + When hierarchical classification is used, a ClassifierElement may + point to another ClassifierService. When used for this purpose, the + ClassifierElement must not use the ClassifierElementUsesFilterList + association. + + The class definition is as follows: + + NAME ClassifierService + DESCRIPTION A concrete class describing how an input + traffic stream is sorted into multiple + output streams using one or more + filters. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES (none) + +4.3.7. The Class ClassifierElement + + The concept of a ClassifierElement comes from [DSMIB]. This concrete + class represents the linkage, within a single ClassifierService, + between a FilterList that specifies a set of criteria for selecting + packets from the stream of packets coming into the ClassifierService, + and the next ConditioningService to which the selected packets go + after they leave the ClassifierService. ClassifierElement has no + properties of its own. It is present to serve as the anchor for an + aggregation with its classifier, and for associations with its + FilterList and its next ConditioningService. + + When a ClassifierElement is associated with a ClassifierService + through the NextServiceAfterClassifierElement association, the + ClassifierElement may not use the ClassifierElementUsesFilterList + association. Further, when a ClassifierElement is associated with a + ClassifierService as described above, the order of processing of the + associated ClassifierService is a function of the ClassifierOrder + property of the ClassifierElementInClassifierService aggregation. + For example, lets assume the following: + + 1. ClassifierService (C1) aggregates ClassifierElements (E1), (E2) + and (E3), with relative ClassifierOrder values of 1, 2, and 3. + + + + + +Moore, et al. Standards Track [Page 41] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + 2. ClassifierElements (E1) and (E3) associations to FilterLists (F1) + and (F3) respectively using the ClassifierElementUsesFilterList + association. + + 3. (E1) & (E3) are associated with Meters (M1) and (M3) through their + respective NextServiceAfterClassifierElement associations. + + 4. (E2) is associated with ClassifierService (C2) through its + NextServiceAfterClassifierElement association. + + 5. ClassifierService (C2) aggregates ClassifierElements (E4) and (E5) + with relative ClassifierOrder values of 1 and 2. + + 6. ClassifierElements (E4) and (E5) have associations to FilterLists + (F4) and (F5) respectively using the + ClassifierElementUsesFilterList association. + + In this example, packet processing would match FilterLists in the + order of (F1), (F4), (F5), and (F3). + + The class definition is as follows: + + NAME ClassifierElement + DESCRIPTION A concrete class representing + the process by which a classifier + uses a filter to select packets + to forward to a specific next + conditioning service. + DERIVED FROM ClassifierService + TYPE Concrete + PROPERTIES (none) + +4.3.8. The Class MeterService + + This is a concrete class that represents the metering of network + traffic. Metering is the function of monitoring the arrival times of + packets of a traffic stream, and determining the level of conformance + of each packet with respect to a pre-established traffic profile. A + meter has the ability to invoke different ConditioningServices for + conforming and non-conforming traffic. Traffic leaving a meter may be + further conditioned (e.g., dropped or queued) by routing the packet + to another conditioning element. Please see [DSMODEL] for more + information on metering. + + This class is the base class for defining different types of meters. + As such, it contains common properties that all meter subclasses + share. It is modeled as a ConditioningService so that it can be + aggregated into a QoSService (using the QoSConditioningSubService + + + +Moore, et al. Standards Track [Page 42] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + association), to indicate that its functionality underlies that QoS + service. MeterService also participates in the NextServiceAfterMeter + association, to identify the subsequent ConditioningService objects + for conforming and non-conforming traffic. + + The class definition is as follows: + + NAME MeterService + DESCRIPTION A concrete class describing the + monitoring of traffic with respect to a + pre-established traffic profile. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES MeterType, OtherMeterType, + ConformanceLevels + + Note: The MeterType property and the MeterService subclasses provide + similar information. The MeterType property is defined for query + purposes and for future expansion. It is possible that not all + MeterServices will require a subclass to define them. In these + cases, MeterService will be instantiated directly, and the MeterType + property will provide the only way of identifying the type of the + meter. + +4.3.8.1. The Property MeterType + + This property is an enumerated 16-bit unsigned integer that is used + to specify the particular type of meter represented by an instance of + MeterService. The following enumeration values are defined: + + 1 - Other + 2 - Average Rate Meter + 3 - Exponentially Weighted Moving Average Meter + 4 - Token Bucket Meter + + Note: if the value of MeterType is not one of these four values, it + SHOULD be interpreted as if it had the value '1' (Other). + +4.3.8.2. The Property OtherMeterType + + This is a string property that defines a vendor-specific description + of a type of meter. It is used when the value of the MeterType + property in the instance is equal to 1. + + + + + + + + +Moore, et al. Standards Track [Page 43] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.8.3. The Property ConformanceLevels + + This property is a 16-bit unsigned integer. It indicates the number + of conformance levels supported by the meter. For example, when only + "in profile" versus "out of profile" metering is supported, + ConformanceLevels is equal to 2. + +4.3.9. The Class AverageRateMeterService + + This is a concrete subclass of MeterService that represents a simple + meter, called an Average Rate Meter. This type of meter measures the + average rate at which packets are submitted to it over a specified + time. Packets are defined as conformant if their average arrival + rate does not exceed the specified measuring rate of the meter. Any + packet that causes the specified measuring rate to be exceeded is + defined to be non-conforming. For more information, please see + [DSMODEL]. + + The class definition is as follows: + + NAME AverageRateMeterService + DESCRIPTION A concrete class classifying traffic as + either conforming or non-conforming, + depending on whether the arrival of a + packet causes the average arrival rate + to exceed a pre-determined value. + DERIVED FROM MeterService + TYPE Concrete + PROPERTIES AverageRate, DeltaInterval + +4.3.9.1. The Property AverageRate + + This is an unsigned 32-bit integer that defines the rate used to + determine whether admitted packets are in conformance or not. The + value is specified in kilobits per second. + +4.3.9.2. The Property DeltaInterval + + This is an unsigned 64-bit integer that defines the time period over + which the average measurement should be taken. The value is + specified in microseconds. + +4.3.10. The Class EWMAMeterService + + This is a concrete subclass of the MeterService class that represents + an exponentially weighted moving average meter. This meter is a + simple low-pass filter that measures the rate of incoming packets + + + + +Moore, et al. Standards Track [Page 44] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + over a small, fixed sampling interval. Any admitted packet that + pushes the average rate over a pre-defined limit is defined to be + non-conforming. Please see [DSMODEL] for more information. + + The class definition is as follows: + + NAME EWMAMeterService + DESCRIPTION A concrete class classifying admitted + traffic as either conforming or non- + conforming, depending on whether the + arrival of a packet causes the average + arrival rate in a small fixed + sampling interval to exceed a + pre-determined value or not. + DERIVED FROM MeterService + TYPE Concrete + PROPERTIES AverageRate, DeltaInterval, Gain + +4.3.10.1. The Property AverageRate + + This property is an unsigned 32-bit integer that defines the average + rate against which the sampled arrival rate of packets should be + measured. Any packet that causes the sampled rate to exceed this + rate is deemed non-conforming. The value is specified in kilobits + per second. + +4.3.10.2. The Property DeltaInterval + + This property is an unsigned 64-bit integer that defines the sampling + interval used to measure the arrival rate. The calculated rate is + averaged over this interval and checked against the AverageRate + property. All packets whose computed average arrival rate is less + than the AverageRate are deemed conforming. + + The value is specified in microseconds. + +4.3.10.3. The Property Gain + + This property is an unsigned 32-bit integer representing the + reciprocal of the time constant (e.g., frequency response) of what is + essentially a simple low-pass filter. For example, the value 64 for + this property represents a time constant value of 1/64. + + + + + + + + + +Moore, et al. Standards Track [Page 45] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.11. The Class TokenBucketMeterService + + This is a concrete subclass of the MeterService class that represents + the metering of network traffic using a token bucket meter. Two + types of token bucket meters are defined using this class - a simple, + two-parameter bucket meter, and a multi-stage meter. + + A simple token bucket usually has two parameters, an average token + rate and a burst size, and has two conformance levels: "conforming" + and "non-conforming". This class also defines an excess burst size, + which enables the meter to have three conformance levels + ("conforming", "partially conforming", and "non-conforming"). In + this case, packets that exceed the excess burst size are deemed non- + conforming, while packets that exceed the smaller burst size but are + less than the excess burst size are deemed partially conforming. + Operation of these meters is described in [DSMODEL]. + + The class definition is as follows: + + NAME TokenBucketMeterService + DESCRIPTION A concrete class classifying admitted + traffic with respect to a token bucket. + Either two or three levels of + conformance can be defined. + DERIVED FROM MeterService + TYPE Concrete + PROPERTIES AverageRate, PeakRate, + BurstSize, ExcessBurstSize + +4.3.11.1. The Property AverageRate + + This property is an unsigned 32-bit integer that specifies the + committed rate of the meter. The value is expressed in kilobits per + second. + +4.3.11.2. The Property PeakRate + + This property is an unsigned 32-bit integer that specifies the peak + rate of the meter. The value is expressed in kilobits per second. + +4.3.11.3. The Property BurstSize + + This property is an unsigned 32-bit integer that specifies the + maximum number of tokens available for the committed rate (specified + by the AverageRate property). The value is expressed in kilobytes. + + + + + + +Moore, et al. Standards Track [Page 46] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.11.4. The Property ExcessBurstSize + + This property is an unsigned 32-bit integer that specifies the + maximum number of tokens available for the peak rate (specified by + the PeakRate property). The value is expressed in kilobytes. + +4.3.12. The Class MarkerService + + This is a concrete class that represents the general process of + marking some field in a network packet with some value. Subclasses of + MarkerService identify particular fields to be marked, and introduce + properties to represent the values to be used in marking these + fields. Markers are usually invoked as a result of a preceding + classifier match. Operation of markers of various types is described + in [DSMODEL]. + + MarkerService is a concrete class because at the time it was defined + in CIM, its superclass was concrete. While this class can be + instantiated, an instance of it would not accomplish anything, + because both the field to be marked and the value to be used to mark + it are specified only in subclasses of MarkerService. + + MarkerService is modeled as a ConditioningService so that it can be + aggregated into a QoSService (using the QoSConditioningSubService + association) to indicate that its functionality underlies that QoS + service. It participates in the NextService association to identify + the subsequent ConditioningService object that acts on traffic after + it has been marked by the marker. + + The class definition is as follows: + + NAME MarkerService + DESCRIPTION A concrete class representing the + general process of marking a selected + field in a packet with a specified + value. Packets are marked in order + to control the conditioning that + they will subsequently receive. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES (none) + +4.3.13. The Class PreambleMarkerService + + This is a concrete class that models the storing of traffic- + conditioning results in a packet preamble. See Section 3.8.3 for a + discussion of how, and why, QDDIM models the capability to store + these results in a packet preamble. An instance of + + + +Moore, et al. Standards Track [Page 47] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PreambleMarkerService appends to a packet preamble a two-part string + of the form "<type>,<value>". Section 3.8.3 provides a list of the + <type> strings defined by QDDIM. Implementations may support other + <type>'s in addition to these. + + The class definition is as follows: + + NAME PreambleMarkerService + DESCRIPTION A concrete class representing the saving + of traffic-conditioning results in a + packet preamble. + DERIVED FROM MarkerService + TYPE Concrete + PROPERTIES FilterItemList[ ] + +4.3.13.1. The Multi-valued Property FilterItemList + + This property is an ordered list of strings, where each string has + the format "<type>,<value>". See Section 3.8.3 for a list of + <type>'s defined in QDDIM, and the nature of the associated <value> + for each of these types. + +4.3.14. The Class ToSMarkerService + + This is a concrete class that represents the marking of the ToS field + in the IPv4 packet header [R791]. Following common practice, the + value to be written into the field is represented as an unsigned 8- + bit integer. + + The class definition is as follows: + + NAME ToSMarkerService + DESCRIPTION A concrete class representing the + process of marking the type of service + (ToS) field in the IPv4 packet header + with a specified value. Packets are + marked in order to control the + conditioning that they will subsequently + receive. + DERIVED FROM MarkerService + TYPE Concrete + PROPERTIES ToSValue + + + + + + + + + +Moore, et al. Standards Track [Page 48] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.14.1. The Property ToSValue + + This property is an unsigned 8-bit integer, representing a value to + be used for marking the type of service (ToS) field in the IPv4 + packet header. The ToS field is defined to be a complete octet, so + the range for this property is 0..255. Some implementations, + however, require that the lowest-order bit in the ToS field always be + '0'. Such an implementation is consequently unable to support an odd + TosValue. + +4.3.15. The Class DSCPMarkerService + + This is a concrete class that represents the marking of the + differentiated services codepoint (DSCP) within the DS field in the + IPv4 and IPv6 packet headers, as defined in [R2474]. Following common + practice, the value to be written into the field is represented as an + unsigned 8-bit integer. + + The class definition is as follows: + + NAME DSCPMarkerService + DESCRIPTION A concrete class representing the + process of marking the DSCP field + in a packet with a specified + value. Packets are marked in order + to control the conditioning that + they will subsequently receive. + DERIVED FROM MarkerService + TYPE Concrete + PROPERTIES DSCPValue + +4.3.15.1. The Property DSCPValue + + This property is an unsigned 8-bit integer, representing a value to + be used for marking the DSCP within the DS field in an IPv4 or IPv6 + packet header. Since the DSCP consists of 6 bits, the values for + this property are limited to the range 0..63. When the DSCP is + marked, the remaining two bit in the DS field are left unchanged. + +4.3.16. The Class 8021QMarkerService + + This is a concrete class that represents the marking of the user + priority field defined in the IEEE 802.1Q specification [IEEE802Q]. + Following common practice, the value to be written into the field is + represented as an unsigned 8-bit integer. + + + + + + +Moore, et al. Standards Track [Page 49] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME 8021QMarkerService + DESCRIPTION A concrete class representing the + process of marking the Priority + field in an 802.1Q-compliant frame + with a specified value. Frames are + marked in order to control the + conditioning that they will + subsequently receive. + DERIVED FROM MarkerService + TYPE Concrete + PROPERTIES PriorityValue + +4.3.16.1. The Property PriorityValue + + This property is an unsigned 8-bit integer, representing a value to + be used for marking the Priority field in the 802.1Q header. Since + the Priority field consists of 3 bits, the values for this property + are limited to the range 0..7. When the Priority field is marked, + the remaining bits in its octet are left unchanged. + +4.3.17. The Class DropperService + + This is a concrete class that represents the ability to selectively + drop network traffic, or to invoke another ConditioningService for + further processing of traffic that is not dropped. This is the base + class for different types of droppers. Droppers are distinguished by + the algorithm that they use to drop traffic. Please see [DSMODEL] + for more information about the various types of droppers. Note that + this class encompasses both Absolute Droppers and Algorithmic + Droppers from [DSMODEL]. + + DropperService is modeled as a ConditioningService so that it can be + aggregated into a QoSService (using the QoSConditioningSubService + association) to indicate that its functionality underlies that QoS + service. It participates in the NextService association to identify + the subsequent ConditioningService object that acts on any remaining + traffic that is not dropped. + + NextService has special semantics for droppers, in addition to the + general "what happens next" semantics that apply to all + ConditioningServices. The queue(s) from which a particular dropper + drops packets are identified by following chain(s) of NextService + associations "rightwards" from the dropper until they reach a queue. + + + + + + +Moore, et al. Standards Track [Page 50] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME DropperService + DESCRIPTION A concrete base class describing the + common characteristics of droppers. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES DropperType, OtherDropperType, DropFrom + + Note: The DropperType property and the DropperService subclasses + provide similar information. The DropperType property is defined for + query purposes, as well as for those cases where a subclass of + DropperService is not needed to model a particular type of dropper. + For example, the Absolute Dropper defined in [DSMODEL] is modeled as + an instance of the DropperService class with its DropperType set to + '4' ("Absolute Dropper"). + +4.3.17.1. The Property DropperType + + This is an enumerated 16-bit unsigned integer that defines the type + of dropper. Values include: + + 1 - Other + 2 - Random + 3 - HeadTail + 4 - Absolute Dropper + + Note: if the value of DropperType is not one of these four values, it + SHOULD be interpreted as if it had the value '1' (Other). + +4.3.17.2. The Property OtherDropperType + + This string property is used in conjunction with the DropperType + property. When the value of DropperType is '1' (i.e., Other), then + the name of the type of dropper appears in this property. + +4.3.17.3. The Property DropFrom + + This is an unsigned 16-bit integer enumeration that indicates the + point in the associated queue from which packets should be dropped. + Defined enumeration values are: + + o unknown(0) + o head(1) + o tail(2) + + + + + + +Moore, et al. Standards Track [Page 51] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + Note: if the value of DropFrom is '0' (unknown), or if it is not one + of the three values listed here, then packets MAY be dropped from any + location in the associated queue. + +4.3.18. The Class HeadTailDropperService + + This is a concrete class that represents the threshold information of + a head or tail dropper. The inherited property DropFrom indicates + whether a particular instance of this class represents a head dropper + or a tail dropper. + + A head dropper always examines the same queue from which it drops + packets, and this queue is always related to the dropper as the + following service in the NextService association. + + The class definition is as follows: + + NAME HeadTailDropperService + DESCRIPTION A concrete class used to describe + a head or tail dropper. + DERIVED FROM DropperService + TYPE Concrete + PROPERTIES QueueThreshold + +4.3.18.1. The Property QueueThreshold + + This is an unsigned 32-bit integer that indicates the queue depth at + which traffic will be dropped. For a tail dropper, all newly + arriving traffic is dropped. For a head dropper, packets at the + front of the queue are dropped to make room for new packets, which + are added at the end. The value is expressed in bytes. + +4.3.19. The Class REDDropperService + + This is a concrete class that represents the ability to drop network + traffic using a Random Early Detection (RED) algorithm. This + algorithm is described in [RED]. The purpose of a RED algorithm is + to avoid congestion (as opposed to managing congestion). Instead of + waiting for the queues to fill up, and then dropping large numbers of + packets, RED works by monitoring the average queue depth. When the + queue depth exceeds a minimum threshold, packets are randomly + discarded. These discards cause TCP to slow its transmission rate + for those connections that experienced the packet discards. Other + TCP connections are not affected by these discards. Please see + [DSMODEL] for more information about a dropper. + + + + + + +Moore, et al. Standards Track [Page 52] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + A RED dropper always drops packets from a single queue, which is + related to the dropper as the following service in the NextService + association. The queue(s) examined by the drop algorithm are found + by following the CalculationServiceForDropper association to find the + dropper's DropThresholdCalculationService, and then following the + CalculationBasedOnQueue association(s) to find the queue(s) being + watched. + + The class definition is as follows: + + NAME REDDropperService + DESCRIPTION A concrete class used to describe + dropping using the RED algorithm (or + one of its variants). + DERIVED FROM DropperService + TYPE Concrete + PROPERTIES MinQueueThreshold, MaxQueueThreshold, + ThresholdUnits, StartProbability, + StopProbability + + NOTE: In [DSMIB], there is a single diffServRandomDropTable, which + represents the general category of random dropping. (RED is one type + of random dropping, but there are also types of random dropping + distinct from RED.) The REDDropperService class corresponds to the + columns in the table that apply to the RED algorithm in particular. + +4.3.19.1. The Property MinQueueThreshold + + This is an unsigned 32-bit integer that defines the minimum average + queue depth at which packets are subject to being dropped. The units + are identified by the ThresholdUnits property. The slope of the drop + probability function is described by the Start/StopProbability + properties. + +4.3.19.2. The Property MaxQueueThreshold + + This is an unsigned 32-bit integer that defines the maximum average + queue length at which packets are subject to always being dropped, + regardless of the dropping algorithm and probabilities being used. + The units are identified by the ThresholdUnits property. + +4.3.19.3. The Property ThresholdUnits + + This is an unsigned 16-bit integer enumeration that identifies the + units for the MinQueueThreshold and MaxQueueThreshold properties. + Defined enumeration values are: + + + + + +Moore, et al. Standards Track [Page 53] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + o bytes(1) + o packets(2) + + Note: if the value of ThresholdUnits is not one of these two values, + it SHOULD be interpreted as if it had the value '1' (bytes). + +4.3.19.4. The Property StartProbability + + This is an unsigned 32-bit integer; in conjunction with the + StopProbability property, it defines the slope of the drop + probability function. This function governs the rate at which + packets are subject to being dropped, as a function of the queue + length. + + This property expresses a drop probability in drops per thousand + packets. For example, the value 100 indicates a drop probability of + 100 per 1000 packets, that is, 10%. Min and max values are 0 to + 1000. + +4.3.19.5. The Property StopProbability + + This is an unsigned 32-bit integer; in conjunction with the + StartProbability property, it defines the slope of the drop + probability function. This function governs the rate at which + packets are subject to being dropped, as a function of the queue + length. + + This property expresses a drop probability in drops per thousand + packets. For example, the value 100 indicates a drop probability of + 100 per 1000 packets, that is, 10%. Min and max values are 0 to + 1000. + +4.3.20. The Class QueuingService + + This is a concrete class that represents the ability to queue network + traffic, and to specify the characteristics for determining long-term + congestion. Please see [DSMODEL] for more information about queuing + functionality. + + QueuingService is modeled as a ConditioningService so that it can be + aggregated into a QoSService (using the QoSConditioningSubService + association) to indicate that its functionality underlies that QoS + service. + + + + + + + + +Moore, et al. Standards Track [Page 54] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME QueuingService + DESCRIPTION A concrete class describing the ability + to queue network traffic and to specify + the characteristics for determining + long-term congestion. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES CurrentQueueDepth, DepthUnits + +4.3.20.1. The Property CurrentQueueDepth + + This is an unsigned 32-bit integer, which functions as a (read-only) + gauge representing the current depth of this one queue. This value + may be important in diagnosing unexpected behavior by a + DropThresholdCalculationService. + +4.3.20.2. The Property DepthUnits + + This is an unsigned 16-bit integer enumeration that identifies the + units for the CurrentQueueDepth property. Defined enumeration values + are: + + o bytes(1) + o packets(2) + + Note: if the value of DepthUnits is not one of these two values, it + SHOULD be interpreted as if it had the value '1' (bytes). The + +4.3.21. Class PacketSchedulingService + + This is a concrete class that represents a scheduling service, which + is a process that determines when a queued packet should be removed + from a queue and sent to an output interface. Note that output + interfaces can be physical network interfaces or interfaces to + components internal to systems, such as crossbars or back planes. In + either case, if multiple queues are involved, schedulers are used to + provide access to the interface. + + Each instance of a PacketSchedulingService describes a scheduler from + the perspective of the queues that it is servicing. Please see + [DSMODEL] for more information about a scheduler. + + PacketSchedulingService is modeled as a ConditioningService so that + it can be aggregated into a QoSService (using the + QoSConditioningSubService association) to indicate that its + functionality underlies that QoS service. It participates in the + + + +Moore, et al. Standards Track [Page 55] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + NextService association to identify the subsequent + ConditioningService object, if any, that acts on traffic after it has + been processed by the scheduler. + + The class definition is as follows: + + NAME PacketSchedulingService + DESCRIPTION A concrete class used to determine when + a packet should be removed from a + queue and sent to an output interface. + DERIVED FROM ConditioningService + TYPE Concrete + PROPERTIES SchedulerType, OtherSchedulerType + +4.3.21.1. The Property SchedulerType + + This property is an enumerated 16-bit unsigned integer, and defines + the type of scheduler. Values are: + + 1 - Other + 2 - FIFO + 3 - Priority + 4 - Allocation + 5 - Bounded Priority + 6 - Weighted Round Robin Packet + + Note: if the value of SchedulerType is not one of these six values, + it SHOULD be interpreted as if it had the value '2' (FIFO). + +4.3.21.2. The Property OtherSchedulerType + + This string property is used in conjunction with the SchedulerType + property. When the value of SchedulerType is 1 (i.e., Other), then + the type of scheduler is specified in this property. + +4.3.22. The Class NonWorkConservingSchedulingService + + This class does not add any properties beyond those it inherits from + its superclass, PacketSchedulingService. It does, however, + participate in one additional association, FailNextScheduler. + + + + + + + + + + + +Moore, et al. Standards Track [Page 56] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME NonWorkConservingSchedulingService + DESCRIPTION A concrete class representing a + scheduler that is capable of operating + in a non-work conserving manner. + DERIVED FROM PacketSchedulingService + TYPE Concrete + PROPERTIES (none) + +4.3.23. The Class QoSService + + This is a concrete class that represents the ability to conceptualize + a QoS service as a set of coordinated sub-services. This enables the + network administrator to map business rules to the network, and the + network designer to engineer the network such that it can provide + different functions for different traffic streams. + + This class has two main purposes. First, it serves as a common base + class for defining the various sub-services needed to build higher- + level QoS services. Second, it serves as a way to consolidate the + relationships between different types of QoS services and different + types of ConditioningServices. + + For example, Gold Service may be defined as a QoSService which + aggregates two QoS services together. Each of these QoS services + could be represented by an instance of the class DiffServService, one + for servicing of very high demand packets (represented by an instance + of DiffServService itself), and one for the service given to most of + the packets, represented by an instance of AFService, which is a + subclass of DiffServService. The high demand DiffServService + instance will then use the QoSConditioningSubService aggregation to + aggregate together the necessary classifiers to indicate which + traffic it applies to, and the appropriate meters for contract + limits, the marker to mark the EF PHB in the packets, and the + queuing-related conditioning services. The AFService instance will + also use the QoSConditioningSubService aggregation, to aggregate its + classifiers and meters, the several markers used to mark the + different AF PHBs in the packets, and the queuing-related + conditioning services needed to deliver the packet treatment. + + QoSService is modeled as a type of Service, which is used as the + anchor point for defining a set of sub-services that implement the + desired conditioning characteristics for different types of flows. + It will direct the specific type of conditioning services to be used + in order to implement this service. + + + + + +Moore, et al. Standards Track [Page 57] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME QoSService + DESCRIPTION A concrete class used to represent a QoS + service or set of services, as defined + by a network administrator. + DERIVED FROM Service + TYPE Concrete + PROPERTIES (none) + +4.3.24. The Class DiffServService + + This is a concrete class representing the use of standard or custom + DiffServ services to implement a (higher-level) QoS service. Note + that a DiffServService object may be just one of a set of coordinated + QoSSubServices objects that together implement a higher-level QoS + service. + + DiffServService is modeled as a subclass of QoSService. This enables + it to be related to a higher-level QoS service via QoSSubService, as + well as to specific ConditioningService objects (e.g., metering, + dropping, queuing, and others) via QoSConditioningSubService. + + The class definition is as follows: + + NAME DiffServService + DESCRIPTION A concrete class used to represent a + DiffServ service associated with a + particular Per Hop Behavior. + DERIVED FROM QoSService + TYPE Concrete + PROPERTIES PHBID + +4.3.24.1. The Property PHBID + + This property is a 16-bit unsigned integer, which identifies a + particular per hop behavior, or family of per hop behaviors. The + value here is a Per Hop Behavior Identification Code, as defined in + [R3140]. Note that as defined, these identification codes use the + default, recommended, code points for PHBs as part of their + structure. These values may well be different from the actual value + used in the marker, as the marked value is a domain-dependent value. + The ability to indicate the PHB Identification Code associated with a + service is helpful for tying the QoS Service to reference documents, + and for inter-domain coordination and operation. + + + + + + +Moore, et al. Standards Track [Page 58] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.25. The Class AFService + + This is a concrete class that represents a specialization of the + general concept of forwarding network traffic, by adding specific + semantics that characterize the operation of the Assured Forwarding + (AF) Service ([R2597]). + + [R2597] defines four different AF classes, to represent four + different treatments of traffic. A different amount of forwarding + resources, such as buffer space and bandwidth, are allocated to each + AF class. Within each AF class, IP packets are marked with one of + three possible drop precedence values. The drop precedence of a + packet determines the relative importance of that packet compared to + other packets within the same AF class, if congestion occurs. A + congested interface will try to avoid dropping packets marked with a + lower drop precedence value, by instead discarding packets marked + with a higher drop precedence value. + + Note that [R2597] defines 12 DSCPs that together represent the AF Per + Hop Behavior (PHB) group. Implementations are free to extend this + (e.g., add more classes and/or drop precedences). + + The AFService class is modeled as a specialization of + DiffServService, which is in turn a specialization of QoSService. + This enables it to be related to higher-level QoS services, as well + as to lower-level conditioning sub-services (e.g., classification, + metering, dropping, queuing, and others). + + The class definition is as follows: + + NAME AFService + DESCRIPTION A concrete class for describing the + common characteristics of differentiated + services that are used to affect + traffic forwarding, using the AF + PHB Group. + DERIVED FROM DiffServService + TYPE Concrete + PROPERTIES ClassNumber, DropperNumber + +4.3.25.1. The Property ClassNumber + + This property is an 8-bit unsigned integer that indicates the number + of AF classes that this AF implementation uses. Among the instances + aggregated using the QoSConditioningSubService aggregation with an + instance of AFService, one SHOULD find markers with as many distinct + values as the ClassNumber of the AFService instance. + + + + +Moore, et al. Standards Track [Page 59] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.25.2. The Property DropperNumber + + This property is an 8-bit unsigned integer that indicates the number + of drop precedence values that this AF implementation uses. The + number of drop precedence values is the number PER AF CLASS. The + corresponding droppers will be found in the collection of + conditioning services aggregated with the QoSConditioningSubService + aggregation. + +4.3.26. The Class FlowService + + This class represents a service that supports a particular microflow. + The microflow is identified by the string-valued property FlowID. In + some implementations, an instance of this class corresponds to an + entry in the implementation's flow table. + + The class definition is as follows: + + NAME FlowService + DESCRIPTION A concrete class representing a + microflow. + DERIVED FROM QoSService + TYPE Concrete + PROPERTIES FlowID + +4.3.26.1. The Property FlowID + + This property is a string containing an identifier for a microflow. + +4.3.27. The Class DropThresholdCalculationService + + This class represents a logical entity that calculates an average + queue depth for a queue, based on a smoothing weight and a sampling + time interval. It does this calculation on behalf of a RED dropper, + to allow the dropper to make its decisions whether to drop packets + based on a smoothed average queue depth for the queue. + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 60] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME DropThresholdCalculationService + DESCRIPTION A concrete class representing a logical + entity that calculates an average queue + depth for a queue, based on a smoothing + weight and a sampling time interval. + The latter are properties of this + Service, describing how it operates and + its necessary parameters. + DERIVED FROM Service + TYPE Concrete + PROPERTIES SmoothingWeight, TimeInterval + +4.3.27.1. The Property SmoothingWeight + + This property is a 32-bit unsigned integer, ranging between 0 and + 100,000 - specified in thousandths. It defines the weighting of past + history in affecting the calculation of the current average queue + depth. The current queue depth calculation uses the inverse of this + value as its factor, and one minus that inverse as the factor for the + historical average. The calculation takes the form: + + average = (old_average*(1-inverse of SmoothingWeight)) + + (current_queue_depth*inverse of SmoothingWeight) + + Implementations may choose to limit the acceptable set of values to a + specified set, such as powers of 2. + + Min and max values are 0 and 100000. + +4.3.27.2. The Property TimeInterval + + This property is a 32-bit unsigned integer, defining the number of + nanoseconds between each calculation of average/smoothed queue depth. + If this property is not specified, the CalculationService may + determine an appropriate interval. + +4.3.28. The Abstract Class FilterEntryBase + + FilterEntryBase is the abstract base class from which all filter + entry classes are derived. It serves as the endpoint for the + EntriesInFilterList aggregation, which groups filter entries into + filter lists. Its properties include CIM naming properties and an + IsNegated boolean property (to easily "NOT" the match information + specified in an instance of one of its subclasses). + + + + + +Moore, et al. Standards Track [Page 61] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + Because FilterEntryBase has general applicability, it is defined in + [PCIME]. See [PCIME] for the definition of this class. + +4.3.29. The Class IPHeaderFilter + + This concrete class makes it possible to represent an entire IP + header filter in a single object. A property IpVersion identifies + whether the IP addresses in an instance are IPv4 or IPv6 addresses. + (Since the source and destination IP addresses come from the same + packet header, they will always be of the same type.) + + See [PCIME] for the definition of this class. + +4.3.30. The Class 8021Filter + + This concrete class allows 802.1.source and destination MAC + addresses, as well as the 802.1 protocol ID, priority, and VLAN + identifier fields, to be expressed in a single object + + See [PCIME] for the definition of this class. + +4.3.31. The Class PreambleFilter + + This is a concrete class that models classifying packets using + traffic-conditioning results stored in a packet preamble by a + PreambleMarkerService. See Section 3.8.3 for a discussion of how, + and why, QDDIM models the capability to store these results in a + packet preamble. An instance of PreambleFilter is used to select + packets based on a two-part string identifying a specific result. + The logic for this match is "at least one". That is, a packet with + multiple results in its preamble matches a filter if at least one of + these results matches the filter. + + The class definition is as follows: + + NAME PreambleFilter + DESCRIPTION A concrete class representing criteria + for selecting packets based on prior + traffic-conditioning results stored in + a packet preamble. + DERIVED FROM FilterEntryBase + TYPE Concrete + PROPERTIES FilterItemList[ ] + + + + + + + + +Moore, et al. Standards Track [Page 62] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.31.1. The Multi-valued Property FilterItemList + + This property is an ordered list of strings, where each string has + the format "<type>,<value>". See Section 3.8.3 for a list of + <type>'s defined in QDDIM, and the nature of the associated <value> + for each of these types. + + Note that there are two parallel terminologies for characterizing + meter results. The enumeration value "conforming(1)" is sometimes + described as "in profile," and the value "nonConforming(3)" is + sometimes described as "out of profile". + +4.3.32. The Class FilterList + + This is a concrete class that aggregates instances of (subclasses of) + FilterEntryBase via the aggregation EntriesInFilterList. It is + possible to aggregate different types of filters into a single + FilterList - for example, packet header filters (represented by the + IPHeaderFilter class) and security filters (represented by subclasses + of FilterEntryBase defined by IPsec). + + The aggregation property EntriesInFilterList.EntrySequence is always + set to 0, to indicate that the aggregated filter entries are ANDed + together to form a selector for a class of traffic. + + See [PCIME] for the definition of this class. + +4.3.33. The Abstract Class ServiceAccessPoint + + This is an abstract class defined in the Core Model of CIM. It is a + subclass of the LogicalElement class, and is the base class for all + objects that manage access to CIM_Services. It represents the + management of utilizing or invoking a Service. Please refer to [CIM] + for the full definition of this class. + +4.3.34. The Class ProtocolEndpoint + + This is a concrete class derived from ServiceAccessPoint, which + describes a communication point from which the services of the + network or the system's protocol stack may be accessed. Please refer + to [CIM] for the full definition of this class. + + + + + + + + + + +Moore, et al. Standards Track [Page 63] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.35. The Abstract Class Collection + + This is an abstract class defined in the Core Model of CIM. It is + the superclass for all classes that represent groupings or bags, and + that carry no status or "state". (The latter would be more correctly + modeled as ManagedSystemElements.) Please refer to [CIM] for the + full definition of this class. + +4.3.36. The Abstract Class CollectionOfMSEs + + This is an abstract class defined in the Core Model of CIM. It is a + subclass of the Collection superclass, restricting the contents of + the Collection to ManagedSystemElements. Please refer to [CIM] for + the full definition of this class. + +4.3.37. The Class BufferPool + + This is a concrete class that represents the collection of buffers + used by a QueuingService. (The association QueueAllocation + represents this usage.) The existence and management of individual + buffers may be modeled in a future document. At the current level of + abstraction, modeling the existence of the BufferPool is necessary. + Long term, it is not sufficient. + + In implementations where there are multiple buffer sizes, an instance + of BufferPool should be defined for each set of buffers with + identical or similar sizes. These instances of buffer pools can then + be grouped together using the CollectedBuffersPool aggregation. + + Note that this class is derived from CollectionOfMSEs, and not from + Forwarding or ConditioningService. A BufferPool is only a collection + of storage, and is NOT a Service. + + The class definition is as follows: + + NAME BufferPool + DESCRIPTION A concrete class representing + a collection of buffers. + DERIVED FROM CollectionOfMSEs + TYPE Concrete + PROPERTIES Name, BufferSize, TotalBuffers, + AvailableBuffers, SharedBuffers + +4.3.37.1. The Property Name + + This property is a string with a maximum length of 256 characters. + It is the common name or label by which the object is known. + + + + +Moore, et al. Standards Track [Page 64] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.37.2. The Property BufferSize + + This property is a 32-bit unsigned integer, identifying the + approximate number of bytes in each buffer in the buffer pool. An + implementation will typically group buffers of roughly the same size + together, to reduce the number of buffer pools it needs to manage. + This model does not specify the degree to which buffers in the same + buffer pool may differ in size. + +4.3.37.3. The Property TotalBuffers + + This property is a 32-bit unsigned integer, reporting the total + number of individual buffers in the pool. + +4.3.37.4. The Property AvailableBuffers + + This property is a 32-bit unsigned integer, reporting the number of + buffers in the Pool that are currently not allocated to any instance + of a QueuingService. Buffers allocated to a QueuingService could + either be in use (that is, currently contain packet data), or be + allocated to a queue pending the arrival of new packet data. + +4.3.37.5. The Property SharedBuffers + + This property is a 32-bit unsigned integer, reporting the number of + buffers in the Pool that have been simultaneously allocated to + multiple instances of QueuingService. + +4.3.38. The Abstract Class SchedulingElement + + This is an abstract class that represents the configuration + information that a PacketSchedulingService has for one of the + elements that it is scheduling. The scheduled element is either a + QueuingService or another PacketSchedulingService. + + Among the subclasses of this class, some are defined in such a way + that all of their instances are work conserving. Other subclasses, + however, may have instances that either are or are not work + conserving. In this class, the boolean property WorkConserving + indicates whether an instance is or is not work conserving. The + range of values for WorkConserving is restricted to TRUE in the + subclasses that are inherently work conserving, since instances of + these classes cannot be anything other than work conserving. + + + + + + + + +Moore, et al. Standards Track [Page 65] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME SchedulingElement + DESCRIPTION An abstract class representing the + configuration information that a + PacketSchedulingService has for one of + the elements that it is scheduling. + DERIVED FROM ManagedElement + TYPE Abstract + PROPERTIES WorkConserving + +4.3.38.1. The Property WorkConserving + + This boolean property indicates whether the PacketSchedulingService + tied to this instance by the ElementInSchedulingService aggregation + is treating the input tied to this instance by the QueueToSchedule or + SchedulingServiceToSchedule association in a work-conserving manner. + Note that this property is writable, indicating that an administrator + can change the behavior of the SchedulingElement - but only for those + elements that can operate in a non-workconserving mode. + +4.3.39. The Class AllocationSchedulingElement + + This class is a subclass of the abstract class SchedulingElement. It + introduces five new properties to support bandwidth-based scheduling. + As is the case with all subclasses of SchedulingElement, the input + associated with an instance of AllocationSchedulingElement is of one + of two types: either a queue, or another scheduler. + + The class definition is as follows: + + NAME AllocationSchedulingElement + DESCRIPTION A concrete class containing parameters + for controlling bandwidth-based + scheduling. + + DERIVED FROM SchedulingElement + TYPE Concrete + PROPERTIES AllocationUnits, BandwidthAllocation, + BurstAllocation, CanShare, + WorkFlexible + + + + + + + + + + +Moore, et al. Standards Track [Page 66] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.39.1. The Property AllocationUnits + + This property is a 16-bit unsigned integer enumeration that + identifies the units in which the BandwidthAllocation and + BurstAllocation properties are expressed. The following values are + defined: + + o bytes(1) + o packets(2) + o cells(3) -- fixed-size, for example, ATM + + Note: if the value of AllocationUnits is not one of these three + values, it SHOULD be interpreted as if it had the value '1' (bytes). + +4.3.39.2. The Property BandwidthAllocation + + This property is a 32-bit unsigned integer that defines the number of + units/second that should be allocated to the associated input. The + units are identified by the AllocationUnits property. + +4.3.39.3. The Property BurstAllocation + + This property is a 32-bit unsigned integer that specifies the amount + of temporary or short-term bandwidth (in units per second) that can + be allocated to an input, beyond the amount of bandwidth allocated + through the BandwidthAllocation property. If the maximum actual + bandwidth allocation for the input were to be measured, it would be + the sum of the BurstAllocation and the BandwidthAllocation + properties. The units are identified by the AllocationUnits + property. + +4.3.39.4. The Property CanShare + + This is a boolean property that, if TRUE, enables unused bandwidth + from the associated input to be allocated to other inputs serviced by + the Scheduler. + +4.3.39.5. The Property WorkFlexible + + This is a boolean property that, if TRUE, indicates that the behavior + of the scheduler relative to this input can be altered by changing + the value of the inherited property WorkConserving. + +4.3.40. The Class WRRSchedulingElement + + This class is a subclass of the abstract class SchedulingElement, + representing a weighted round robin (WRR) scheduling discipline. It + introduces a new property WeightingFactor, to give some inputs a + + + +Moore, et al. Standards Track [Page 67] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + higher probability of being serviced than other inputs. It also + introduces a property Priority, to serve as a tiebreaker to be used + when inputs have equal weighting factors. As is the case with all + subclasses of SchedulingElement, the input associated with an + instance of WRRSchedulingElement is of one of two types: either a + queue, or another scheduler. + + Because scheduling of this type is always work conserving, the + inherited boolean property WorkConserving is restricted to the value + TRUE in this class. + + The class definition is as follows: + + NAME WRRSchedulingElement + DESCRIPTION This class specializes the + SchedulingElement class to add + a per-input weight. This is used + by a weighted round robin packet + scheduler when it handles its + associated inputs. It also adds a + second property to serve as a tie-breaker + in the case where multiple inputs have + been assigned the same weight. + DERIVED FROM SchedulingElement + TYPE Concrete + PROPERTIES WeightingFactor, Priority + +4.3.40.1. The Property WeightingFactor + + This property is a 32-bit unsigned integer, which defines the + weighting factor that offers some inputs a higher probability of + being serviced than other inputs. This property represents this + probability. Its minimum value is 0, its maximum value is 100000, + and its units are in thousandths. + +4.3.40.2. The Property Priority + + This property is a 16-bit unsigned integer, which serves as a + tiebreaker, in the event that two or more inputs have equal weights. + A larger value represents a higher priority. If this property is + specified for any of the WRRSchedulingElements associated with a + PacketSchedulingService, then it must be specified for all + WRRSchedulingElements for that PacketSchedulingService, and the + property values for these WRRSchedulingElements must all be + different. + + + + + + +Moore, et al. Standards Track [Page 68] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + While this condition may not occur in some implementations of a + weighted round-robin scheduler, many implementations require a + priority to resolve an equal-weight condition. In instances where + this behavior is not necessary or is undesirable, this property may + be left unspecified. + +4.3.41. The Class PrioritySchedulingElement + + This class is a subclass of the abstract class SchedulingElement. It + indicates that a scheduler is taking packets from a set of inputs + using the priority scheduling discipline. As is the case with all + subclasses of SchedulingElement, the input associated with an + instance of PrioritySchedulingElement is of one of two types: either + a queue, or another scheduler. The property Priority in + PrioritySchedulingElement represents the priority for an input, + relative to the priorities of all the other inputs to which the + scheduler that aggregates this PrioritySchedulingElement is + associated. Inputs to which the scheduler is related via other + scheduling disciplines do not figure in this prioritization. + + Because scheduling of this type is always work conserving, the + inherited boolean property WorkConserving is restricted to the value + TRUE in this class. + + The class definition is as follows: + + NAME PrioritySchedulingElement + DESCRIPTION A concrete class that specializes the + SchedulingElement class to add a + Priority property. This property is + used by a SchedulingService that is doing + priority scheduling for a set of inputs. + + DERIVED FROM SchedulingElement + TYPE Concrete + PROPERTIES Priority + +4.3.41.1. The Property Priority + + This property is a 16-bit unsigned integer that indicates the + priority level of a scheduler input relative to the other inputs + serviced by this PacketSchedulingService. A larger value represents + a higher priority. + + + + + + + + +Moore, et al. Standards Track [Page 69] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.3.42. The Class BoundedPrioritySchedulingElement + + This class is a subclass of the class PrioritySchedulingElement, + which is itself derived from the abstract class SchedulingElement. + As is the case with all subclasses of SchedulingElement, the input + associated with an instance of BoundedPrioritySchedulingElement is of + one of two types: either a queue, or another scheduler. + BoundedPrioritySchedulingElement adds an upper bound (in kilobits per + second) on how much traffic can be handled from an input. This data + is specific to that one input. It is needed when bounded strict + priority scheduling is performed. + + This class inherits from its superclass PrioritySchedulingElement the + restriction of the inherited boolean property WorkConserving to the + value TRUE. + + The class definition is as follows: + + NAME BoundedPrioritySchedulingElement + DESCRIPTION This concrete class specializes the + PrioritySchedulingElement class to add + a BandwidthBound property. This property + bounds the rate at which traffic from the + associated input can be handled. + + DERIVED FROM PrioritySchedulingElement + TYPE Concrete + PROPERTIES BandwidthBound + +4.3.42.1. The Property BandwidthBound + + This property is a 32-bit unsigned integer that defines the upper + limit on the amount of traffic that can be handled from the input. + This is not a shaped upper bound, since bursts can occur. It is a + strict bound, limiting the impact of the input. The units are + kilobits per second. + +4.4. Association Definitions + + This section details the QoS device datapath associations, including + the aggregations, which were shown earlier in Figures 4 and 5. These + associations are defined as classes in the Information Model. Each + of these classes has two properties referring to instances of the two + classes that the association links. Some of the association classes + have additional properties as well. + + + + + + +Moore, et al. Standards Track [Page 70] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.4.1. The Abstract Association Dependency + + This abstract association defines two object references (named + Antecedent and Dependent) that establish general dependency + relationships between different managed objects in the information + model. The Antecedent reference identifies the independent object in + the association, while the Dependent reference identifies the entity + that IS dependent. + + The association's cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + +4.4.2. The Association ServiceSAPDependency + + This association defines two object references that establish a + general dependency relationship between a Service object and a + ServiceAccessPoint object. This relationship indicates that the + referenced Service uses the ServiceAccessPoint of ANOTHER Service. + The Service is the Dependent reference, relying on the + ServiceAccessPoint to gain access to another Service. + + The association's cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + +4.4.3. The Association IngressConditioningServiceOnEndpoint + + This association is derived from the association + ServiceSAPDependency, and represents the binding, in the ingress + direction, between a protocol endpoint and the first + ConditioningService that processes packets received via that protocol + endpoint. Since there can only be one "first" ConditioningService + for a protocol endpoint, the cardinality for the Dependent object + reference is narrowed from 0..n to 0..1. Since, on the other hand, a + single ConditioningService can be the first to process packets + received via multiple protocol endpoints, the cardinality of the + Antecedent object reference remains 0..n. + + + + + + + + + + + +Moore, et al. Standards Track [Page 71] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME IngressConditioningServiceOnEndpoint + DESCRIPTION An association that establishes a + dependency relationship between a protocol + endpoint and the first conditioning + service that processes traffic arriving + via that protocol endpoint. + DERIVED FROM ServiceSAPDependency + ABSTRACT False + PROPERTIES Antecedent[ref ProtocolEndpoint[0..n]], + Dependent[ref ConditioningService[0..1]] + +4.4.4. The Association EgressConditioningServiceOnEndpoint + + This association is derived from the association + ServiceSAPDependency, and represents the binding, in the egress + direction, between a protocol endpoint and the last + ConditioningService that processes packets before they leave a + network device via that protocol endpoint. (This "last" + ConditioningService is ordinarily a scheduler, but it doesn't have to + be.) Since there can be multiple "last" ConditioningServices for a + protocol endpoint in the case of a fallback scheduler, the + cardinality for the Dependent object reference remains 0..n. Since, + however, a single ConditioningService cannot be the last one to + process packets for multiple protocol endpoints, the cardinality of + the Antecedent object reference is narrowed from 0..n to 0..1. + + The class definition is as follows: + + NAME EgressConditioningServiceOnEndpoint + DESCRIPTION An association that establishes a + dependency relationship between a protocol + endpoint and the last conditioning + service(s) that process traffic to be + transmitted via that protocol endpoint. + DERIVED FROM ServiceSAPDependency + ABSTRACT False + PROPERTIES Antecedent[ref ProtocolEndpoint[0..1]], + Dependent[ref ConditioningService[0..n]] + +4.4.5. The Association HeadTailDropQueueBinding + + This association is a subclass of Dependency, describing the + association between a head or tail dropper and a queue that it + monitors to determine when to drop traffic. The referenced queue is + the one whose queue depth is compared against the Dropper's + threshold. The cardinality is 1..n on the queue side, since a + + + +Moore, et al. Standards Track [Page 72] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + head/tail dropper must monitor at least one queue. For the classes + HeadTailDropper and HeadTailDropQueueBinding, the rule for combining + the inputs from multiple queues is simple addition: if the sum of the + lengths of the monitored queues exceeds the dropper's QueueThreshold + value, then packets are dropped. This rule for combining inputs may, + however, be overridden by a different rule in subclasses of one or + both of these classes. + + The class definition is as follows: + + NAME HeadTailDropQueueBinding + DESCRIPTION A generic association used to establish a + dependency relationship between a + head or tail dropper and a queue that it + monitors. + DERIVED FROM Dependency + ABSTRACT False + PROPERTIES Antecedent[ref QueuingService[1..n]], + Dependent[ref + HeadTailDropperService [0..n]] + +4.4.6. The Association CalculationBasedOnQueue + + This association is a subclass of Dependency, which defines two + object references that establish a dependency relationship between a + QueuingService and an instance of the DropThresholdCalculationService + class. The queue's current depth is used by the calculation service + in calculating an average queue depth. + + The class definition is as follows: + + NAME CalculationBasedOnQueue + DESCRIPTION A generic association used to establish a + dependency relationship between a + QueuingService object and a + DropThresholdCalculationService object. + DERIVED FROM ServiceServiceDependency + ABSTRACT False + PROPERTIES Antecedent[ref QueuingService[1..1]], + Dependent[ref + DropThresholdCalculationService [0..n]] + + + + + + + + + + +Moore, et al. Standards Track [Page 73] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.4.6.1. The Reference Antecedent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a QueuingService object + (instead of to the more general ManagedElement). This reference + identifies the queue that the DropThresholdCalculationService will + use in its calculation of average queue depth. + +4.4.6.2. The Reference Dependent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a + DropThresholdCalculationService object (instead of to the more + general ManagedElement). This reference identifies a + DropThresholdCalculationService that uses the referenced queue's + current depth as one of the inputs to its calculation of average + queue depth. + +4.4.7. The Association ProvidesServiceToElement + + This association defines two object references that establish a + dependency relationship in which a ManagedSystemElement depends on + the functionality of one or more Services. The association's + cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + +4.4.8. The Association ServiceServiceDependency + + This association defines two object references that establish a + dependency relationship between two Service objects. The particular + type of dependency is represented by the TypeOfDependency property; + typical examples include that one Service is required to be present + or required to have completed for the other Service to operate. + + This association is very similar to the ServiceSAPDependency + relationship. For the latter, the Service is dependent on an + AccessPoint to get at another Service. In this relationship, it + directly identifies its Service dependency. Both relationships + should not be instantiated, since their information is repetitive. + + The association's cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + + + + + +Moore, et al. Standards Track [Page 74] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.4.9. The Association CalculationServiceForDropper + + This association is a subclass of ServiceServiceDependency, which + defines two object references that represent the reliance of a + REDDropperService on a DropThresholdCalculationService - calculating + an average queue depth based on the observed depths of one or more + queues. + + The class definition is as follows: + + NAME CalculationServiceForDropper + DESCRIPTION A generic association used to establish a + dependency relationship between a + calculation service and a + REDDropperSrevice for which it performs + average queue depth calculations + DERIVED FROM ServiceServiceDependency + ABSTRACT False + PROPERTIES Antecedent[ref + DropThresholdCalculationService[1..n]], + Dependent[ref REDDropperService[0..n]] +4.4.9.1. The Reference Antecedent + + This property is inherited from the ServiceServiceDependency + association, and overridden to serve as an object reference to a + DropThresholdCalculationService object (instead of to the more + general Service object). The cardinality of the object reference is + 1..n, indicating that a RED dropper may be served by one or more + calculation services. + +4.4.9.2. The Reference Dependent + + This property is inherited from the ServiceServiceDependency + association, and overridden to serve as an object reference to a + REDDropperService object (instead of to the more general Service + object). This reference identifies a RED dropper served by a + DropThresholdCalculationService. + +4.4.10. The Association QueueAllocation + + This association is a subclass of Dependency, which defines two + object references that establish a dependency relationship between a + QueuingService and a BufferPool that provides storage space for the + packets in the queue. + + + + + + + +Moore, et al. Standards Track [Page 75] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME QueueAllocation + DESCRIPTION A generic association used to establish a + dependency relationship between a + QueuingService object and a BufferPool + object. + DERIVED FROM Dependency + ABSTRACT False + PROPERTIES Antecedent[ref BufferPool[0..n]], + Dependent[ref QueuingService[0..n]] + AllocationPercentage + +4.4.10.1. The Reference Antecedent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a BufferPool object. + This reference identifies the BufferPool in which packets on the + QueuingService's queue are stored. + +4.4.10.2. The Reference Dependent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a QueuingService + object. This reference identifies the QueuingService whose packets + are being stored in the BufferPool's buffers. + +4.4.10.3. The Property AllocationPercentage + + This property is an 8-bit unsigned integer with minimum value of zero + and maximum value of 100. It defines the percentage of the + BufferPool that should be allocated to the referenced QueuingService. + If absolute sizes are desired, this would be accomplished by defining + individual BufferPools of the specified sizes, with + QueueAllocation.AllocationPercentages set to 100. + +4.4.11. The Association ClassifierElementUsesFilterList + + This association is a subclass of the Dependency association. It + relates one or more ClassifierElements with a FilterList representing + the criteria for selecting packets for each of the ClassifierElements + to process. + + In the QDDIM model, a classifier is always modeled as a + ClassifierService that aggregates a set of ClassifierElements. When + ClassifierElements use the NextServiceAfterClassifierElement + + + + + +Moore, et al. Standards Track [Page 76] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + association to bind to another ClassifierService (to construct a + hierarchical classifier), the ClassifierElementUsesFilterList + association must not be specified. + + The class definition is as follows: + + NAME ClassifierElementUsesFilterList + DESCRIPTION An association relating a + ClassifierElement to the FilterList + representing the criteria for selecting + packets for that + ClassifierElement to process. + DERIVED FROM Dependency + ABSTRACT False + PROPERTIES Antecedent[ref FilterList [0..1]], + Dependent[ref ClassifierElement [0..n]] + +4.4.11.1. The Reference Antecedent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a FilterList object, + instead of to the more general ManagedElement object. Also, its + cardinality is restricted to 0 and 1, indicating that a + ClassifierElement uses either one FilterList to select packets for it + or no FilterList when the ClassifierElement uses the + NextServiceAfterClassifierElement association to bind to another + ClassifierService to form a hierarchical classifier. + +4.4.11.2. The Reference Dependent + + This property is inherited from the Dependency association, and + overridden to serve as an object reference to a ClassifierElement + object, instead of to the more general ManagedElement object. This + reference identifies a ClassifierElement that depends on the + associated FilterList object to represent its packet-selection + criteria. + +4.4.12. The Association AFRelatedServices + + This association defines two object references that establish a + dependency relationship between two AFService objects. This + dependency is the precedence of the individual AF drop-related + Services within an AF IP packet-forwarding class. + + + + + + + + +Moore, et al. Standards Track [Page 77] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME AFRelatedServices + DESCRIPTION An association used to establish + a dependency relationship between two + AFService objects. + DERIVED FROM Nothing + ABSTRACT False + PROPERTIES AFLowerDropPrecedence[ref + AFService[0..1]], + AFHigherDropPrecedence[ref + AFService[0..n]] + +4.4.12.1. The Reference AFLowerDropPrecedence + + This property serves as an object reference to an AFService object + that has the lower probability of dropping packets. + +4.4.12.2. The Reference AFHigherDropPrecedence + + This property serves as an object reference to an AFService object + that has the higher probability of dropping packets. + +4.4.13. The Association NextService + + This association defines two object references that establish a + predecessor-successor relationship between two ConditioningService + objects. This association is used to indicate the sequence of + ConditioningServices required to process a particular type of + traffic. + + Instances of this dependency describe the various relationships + between different ConditioningServices (such as classifiers, meters, + droppers, etc.) that are used collectively to condition traffic. + Both one-to-one and more complicated fan-in and/or fan-out + relationships can be described. The ConditioningServices may feed + one another directly, or they may be mapped to multiple "next" + Services based on the characteristics of the packet. + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 78] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME NextService + DESCRIPTION An association used to establish + a predecessor-successor relationship + between two ConditioningService objects. + DERIVED FROM Nothing + ABSTRACT False + PROPERTIES PrecedingService[ref + ConditioningService[0..n]], + FollowingService[ref + ConditioningService[0..n]] + +4.4.13.1. The Reference PrecedingService + + This property serves as an object reference to a ConditioningService + object that occurs earlier in the processing sequence for a given + type of traffic. + +4.4.13.2. The Reference FollowingService + + This property serves as an object reference to a ConditioningService + object that occurs later in the processing sequence for a given type + of traffic, immediately after the ConditioningService identified by + the PrecedingService object reference. + +4.4.14. The Association NextServiceAfterClassifierElement + + This association refines the definition of its superclass, the + NextService association, in two ways: + + o It restricts the PrecedingService object reference to the class + ClassifierElement. + + o It restricts the cardinality of the FollowingService object + reference to exactly 1. + + The class definition is as follows: + + NAME NextServiceAfterClassifierElement + DESCRIPTION An association used to establish + a predecessor-successor relationship + between a single ClassifierElement within + a Classifier and the next + ConditioningService object that is + responsible for further processing of + the traffic selected by that + ClassifierElement. + + + +Moore, et al. Standards Track [Page 79] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + DERIVED FROM NextService + ABSTRACT False + PROPERTIES PrecedingService + [ref ClassifierElement[0..n]], + FollowingService + [ref ConditioningService[1..1] + +4.4.14.1. The Reference PrecedingService + + This property is inherited from the NextService association. It is + overridden in this subclass to restrict the object reference to a + ClassifierElement, as opposed to the more general ConditioningService + defined in the NextService superclass. + + This property serves as an object reference to a ClassifierElement, + which is a component of a single ClassifierService. Packets selected + by this ClassifierElement are always passed to the + ConditioningService identified by the FollowingService object + reference. + +4.4.14.2. The Reference FollowingService + + This property is inherited from the NextService association. It is + overridden in this subclass to restrict the cardinality of the + reference to exactly 1. This reflects the requirement that the + behavior of a DiffServ classifier must be deterministic: the packets + selected by a given ClassifierElement in a given ClassifierService + must always go to one and only one next ConditioningService. + +4.4.15. The Association NextScheduler + + This association is a subclass of NextService, and defines two object + references that establish a predecessor-successor relationship + between PacketSchedulingServices. In a hierarchical queuing + configuration where a second scheduler treats the output of a first + scheduler as a single, aggregated input, the two schedulers are + related via the NextScheduler association. + + The class definition is as follows: + + NAME NextScheduler + DESCRIPTION An association used to establish + predecessor-successor relationships + between PacketSchedulingService objects + for simple hierarchical scheduling. + DERIVED FROM NextService + ABSTRACT False + + + + +Moore, et al. Standards Track [Page 80] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PROPERTIES PrecedingService[ref + PacketSchedulingService[0..n]], + FollowingService[ref + PacketSchedulingService[0..1]] + +4.4.15.1. The Reference PrecedingService + + This property is inherited from the NextService association, and + overridden to serve as an object reference to a + PacketSchedulingService object (instead of to the more general + ConditioningService object). This reference identifies a scheduler + whose output is being treated as a single, aggregated input by the + scheduler identified by the FollowingService reference. The [0..n] + cardinality indicates that a single FollowingService scheduler may + bring together the aggregated outputs of multiple prior schedulers. + +4.4.15.2. The Reference FollowingService + + This property is inherited from the NextService association, and + overridden to serve as an object reference to a + PacketSchedulingService object (instead of to the more general + ConditioningService object). This reference identifies a scheduler + that includes among its inputs the aggregated outputs of one or more + PrecedingService schedulers. + +4.4.16. The Association FailNextScheduler + + This association is a subclass of the NextScheduler association. + FailNextScheduler represents the relationship between two schedulers + when the first scheduler passes up a scheduling opportunity (thereby + behaving in a non-work conserving manner), and makes the resulting + bandwidth available to the second scheduler for its use. See + Sections 3.11.3 and 3.11.4 for examples of where this association + might be used. + + The class definition is as follows: + + NAME FailNextScheduler + DESCRIPTION This association specializes the + NextScheduler association. It + establishes a relationship between a + non-work-conserving scheduler and a + second scheduler to which it makes + available the bandwidth that it elects + not to use. + DERIVED FROM NextScheduler + ABSTRACT False + + + + +Moore, et al. Standards Track [Page 81] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PROPERTIES PrecedingService[ref + NonWorkConservingSchedulingService[0..n]] + +4.4.16.1. The Reference PrecedingService + + This property is inherited from the NextScheduler association, and + overridden to serve as an object reference to a + NonWorkConservingSchedulingService object (instead of to the more + general PacketSchedulingService object). This reference identifies a + non-work-conserving scheduler whose excess bandwidth is being made + available to the scheduler identified by the FollowingService + reference. The [0..n] cardinality indicates that a single + FollowingService scheduler may have the opportunity to use the unused + bandwidth of multiple prior non-work-conserving schedulers. + +4.4.17. The Association NextServiceAfterMeter + + This association describes a predecessor-successor relationship + between a MeterService and one or more ConditioningService objects + that process traffic from the meter. For example, for devices that + implement preamble marking, the FollowingService reference (after the + meter) is a PreambleMarkerService, to record the results of the + metering in the preamble. + + It might be expected that the NextServiceAfterMeter association would + subclass from NextService. However, meters are 1:n fan-out elements, + and require a mechanism to distinguish between the different + results/outputs of the meter. Therefore, this association defines a + new key property, MeterResult, which is used to record the result and + identify the output through which this traffic left the meter. + Because of this additional key, NextServiceAfterMeter cannot be a + subclass of NextService. + + The class definition is as follows: + + NAME NextServiceAfterMeter + DESCRIPTION An association used to establish + a predecessor-successor relationship + between a particular output of a + MeterService and the next + ConditioningService object that is + responsible for further processing of + the traffic. + DERIVED FROM Nothing + ABSTRACT False + + + + + + +Moore, et al. Standards Track [Page 82] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PROPERTIES PrecedingService[ref MeterService[0..n]], + FollowingService[ref + ConditioningService[0..n]], + MeterResult + +4.4.17.1. The Reference PrecedingService + + The preceding MeterService, 'earlier' in the processing sequence for + a packet. Since Meters are 1:n fan-out devices, this relationship + associates a particular output of a MeterService (identified by the + MeterResult property) to the next ConditioningService that is used to + further process the traffic. + +4.4.17.2. The Reference FollowingService + + The 'next' or following ConditioningService. + +4.4.17.3. The Property MeterResult + + This property is an enumerated 16-bit unsigned integer, and + represents information describing the result of the metering. Traffic + is distinguished as being conforming, non-conforming, or partially + conforming. More complicated metering can be built either by + extending the enumeration or by cascading meters. + + The enumerated values are: "Unknown" (0), "Conforming" (1), + "PartiallyConforming" (2), "NonConforming" (3). + +4.4.18. The Association QueueToSchedule + + This is a top-level association, representing the relationship + between a queue (QueuingService) and a SchedulingElement. The + SchedulingElement, in turn, represents the information in a packet + scheduling service that is specific to this queue, such as relative + priority or allocated bandwidth. + + It cannot be expressed formally with the association cardinalities, + but there is an additional constraint on participation in this + association. A particular instance of (a subclass of) + SchedulingElement always participates either in exactly one instance + of this association, or in exactly one instance of the association + SchedulingServiceToSchedule. + + + + + + + + + +Moore, et al. Standards Track [Page 83] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition is as follows: + + NAME QueueToSchedule + DESCRIPTION This association relates a queue to + the SchedulingElement containing + information specific to the queue. + DERIVED FROM Nothing + ABSTRACT False + PROPERTIES Queue[ref QueuingService[0..1]], + SchedElement[ref + SchedulingElement[0..n]] + +4.4.18.1. The Reference Queue + + This property serves as an object reference to a QueuingService + object. A QueuingService object may be associated 0 or more + SchedulingElement objects. + +4.4.18.2. The Reference SchedElement + + This property serves as an object reference to a SchedulingElement + object. A SchedulingElement is always associated either with exactly + one QueuingService or with exactly one upstream scheduler + (PacketSchedulingService). + +4.4.19. The Association SchedulingServiceToSchedule + + This is a top-level association, representing the relationship + between a scheduler (PacketSchedulingService) and a + SchedulingElement, in a configuration involving cascaded schedulers. + The SchedulingElement, in turn, represents the information in a + subsequent packet scheduling service that is specific to this + scheduler, such as relative priority or allocated bandwidth. + + It cannot be expressed formally with the association cardinalities, + but there is an additional constraint on participation in this + association. A particular instance of (a subclass of) + SchedulingElement always participates either in exactly one instance + of this association, or in exactly one instance of the association + QueueToSchedule. + + The class definition is as follows: + + NAME SchedulingServiceToSchedule + DESCRIPTION This association relates a scheduler to + the SchedulingElement in a subsequent + scheduler containing information specific + to this scheduler. + + + +Moore, et al. Standards Track [Page 84] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + DERIVED FROM Nothing + ABSTRACT False + PROPERTIES SchedService[ref + PacketSchedulingService[0..1]], + SchedElement[ref + SchedulingElement[0..n]] + +4.4.19.1. The Reference SchedService + + This property serves as an object reference to a + PacketSchedulingService object. A PacketSchedulingService object may + be associated 0 or more SchedulingElement objects. + +4.4.19.2. The Reference SchedElement + + This property serves as an object reference to a SchedulingElement + object. A SchedulingElement is always associated either with exactly + one QueuingService or with exactly one upstream scheduler + (PacketSchedulingService). + +4.4.20. The Aggregation MemberOfCollection + + This aggregation is a generic relationship used to model the + aggregation of a set of ManagedElements in a generalized Collection + object. The aggregation's cardinality is many to many. + + MemberOfCollection is defined in the Core Model of CIM. Please refer + to [CIM] for the full definition of this class. + +4.4.21. The Aggregation CollectedBufferPool + + This aggregation models the ability to treat a set of buffers as a + pool, or collection, that can in turn be contained in a "higher- + level" buffer pool. This class overrides the more generic + MemberOfCollection aggregation to restrict both the aggregate and the + part component objects to be instances only of the BufferPool class. + + The class definition for the aggregation is as follows: + + NAME CollectedBufferPool + DESCRIPTION A generic association used to aggregate + a set of related buffers into a + higher-level buffer pool. + DERIVED FROM MemberOfCollection + ABSTRACT False + PROPERTIES Collection[ref BufferPool[0..1]], + Member[ref BufferPool[0..n]] + + + + +Moore, et al. Standards Track [Page 85] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +4.4.21.1. The Reference Collection + + This property represents the parent, or aggregate, object in the + relationship. It is a BufferPool object. + +4.4.21.2. The Reference Member + + This property represents the child, or lower level pool, in the + relationship. It is one of the set of BufferPools that together make + up the higher-level pool. + +4.4.22. The Abstract Aggregation Component + + This abstract aggregation is a generic relationship used to establish + "part-of" relationships between managed objects (named GroupComponent + and PartComponent). The association's cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + +4.4.23. The Aggregation ServiceComponent + + This aggregation is used to model a set of subordinate Services that + are aggregated together to form a higher-level Service. This + aggregation is derived from the more generic Component superclass to + restrict the types of objects that can participate in this + relationship. The association's cardinality is many to many. + + The association is defined in the Core Model of CIM. Please refer to + [CIM] for the full definition of this class. + +4.4.24. The Aggregation QoSSubService + + This aggregation represents a set of subordinate QoSService objects + (that is, a set of instances of subclasses of the QoSService class) + that are aggregated together to form a higher-level QoSService. A + QoSService is a specific type of Service that conceptualizes QoS + functionality as a set of coordinated sub-services. + + This aggregation is derived from the more generic ServiceComponent + superclass to restrict the types of objects that can participate in + this relationship to QoSService objects, instead of a more generic + Service object. It also restricts the cardinality of the aggregate + to 0-or-1 (instead of the more generic 0-or-more). + + + + + + + +Moore, et al. Standards Track [Page 86] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + The class definition for the aggregation is as follows: + + NAME QoSSubService + DESCRIPTION A generic association used to establish + "part-of" relationships between a + higher-level QoSService object and the + set of lower-level QoSServices that + are aggregated to create/form it. + DERIVED FROM ServiceComponent + ABSTRACT False + PROPERTIES GroupComponent[ref QoSService[0..1]], + PartComponent[ref QoSService[0..n]] + +4.4.24.1. The Reference GroupComponent + + This property is overridden in this aggregation to represent an + object reference to a QoSService object (instead of to the more + generic Service object defined in its superclass). This object + represents the parent, or aggregate, object in the relationship. + +4.4.24.2. The Reference PartComponent + + This property is overridden in this aggregation to represent an + object reference to a QoSService object (instead of to the more + generic Service object defined in its superclass). This object + represents the child, or "component", object in the relationship. + +4.4.25. The Aggregation QoSConditioningSubService + + This aggregation identifies the set of conditioning services that + together condition traffic for a particular QoS service. + + This aggregation is derived from the more generic ServiceComponent + superclass; it restricts the types of objects that can participate in + it to ConditioningService and QoSService objects, instead of the more + generic Service objects. + + The class definition for the aggregation is as follows: + + NAME QoSConditioningSubService + DESCRIPTION A generic aggregation used to establish + "part-of" relationships between a set + of ConditioningService objects and the + particular QoSService object(s) that they + provide traffic conditioning for. + DERIVED FROM ServiceComponent + ABSTRACT False + + + + +Moore, et al. Standards Track [Page 87] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PROPERTIES GroupComponent[ref QoSService[0..n]], + PartComponent[ref + ConditioningService[0..n]] + +4.4.25.1. The Reference GroupComponent + + This property is overridden in this aggregation to represent an + object reference to a QoSService object (instead of to the more + generic Service object defined in its superclass). The cardinality + of the reference remains 0..n, to indicate that a given + ConditioningService may provide traffic conditioning for 0, 1, or + more than 1 QoSService objects. + + This object represents the parent, or aggregate, object in the + association. In this case, this object represents the QoSService + that aggregates one or more ConditioningService objects to implement + the appropriate traffic conditioning for its traffic. + +4.4.25.2. The Reference PartComponent + + This property is overridden in this aggregation to represent an + object reference to a ConditioningService object (instead of to the + more generic Service object defined in its superclass). This object + represents the child, or "component", object in the relationship. In + this case, this object represents one or more ConditioningService + objects that together indicate how traffic for a specific QoSService + is conditioned. + +4.4.26. The Aggregation ClassifierElementInClassifierService + + This aggregation represents the relationship between a classifier and + the classifier elements that provide the fan-out function for the + classifier. A classifier typically aggregates multiple classifier + elements. A classifier element, however, is aggregated only by a + single classifier. See [DSMODEL] and [DSMIB] for more about + classifiers and classifier elements. + + The class definition for the aggregation is as follows: + + NAME ClassifierElementInClassifierService + DESCRIPTION An aggregation representing the + relationship between a classifier + and its classifier elements. + DERIVED FROM ServiceComponent + ABSTRACT False + + + + + + +Moore, et al. Standards Track [Page 88] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + PROPERTIES GroupComponent[ref + ClassifierService[1..1]], + PartComponent[ref + ClassifierElement[0..n], + ClassifierOrder + +4.4.26.1. The Reference GroupComponent + + This property is overridden in this aggregation to represent an + object reference to a ClassifierService object (instead of to the + more generic Service object defined in its superclass). It also + restricts the cardinality of the aggregate to 1..1 (instead of the + more generic 0-or-more), representing the fact that a + ClassifierElement always exists within the context of exactly one + ClassifierService. + +4.4.26.2. The Reference PartComponent + + This property is overridden in this aggregation to represent an + object reference to a ClassifierElement object (instead of to the + more generic Service object defined in its superclass). This object + represents a single traffic selector for the classifier. A + ClassifierElement usually has an association to a FilterList that + provides selection criteria for packets from the traffic stream + coming into the classifier, and to a ConditioningService to which + packets selected by these criteria are next forwarded. + +4.4.26.3. The Property ClassifierOrder + + Because the filters for a classifier can overlap, it is necessary to + specify the order in which the ClassifierElements aggregated by a + ClassifierService are presented with packets coming into the + classifier. This property is an unsigned 32-bit integer representing + this order. Values are represented in ascending order: first '1', + then '2', and so on. Different values MUST be assigned for each of + the ClassifierElements aggregated by a given ClassifierService. + +4.4.27. The Aggregation EntriesInFilterList + + This aggregation is a specialization of the Component aggregation; it + is used to define a set of filter entries (subclasses of + FilterEntryBase) that are aggregated by a FilterList. + + The cardinalities of the aggregation itself are 0..1 on the + FilterList end, and 0..n on the FilterEntryBase end. Thus in the + general case, a filter entry can exist without being aggregated into + + + + + +Moore, et al. Standards Track [Page 89] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + any FilterList. However, the only way a filter entry can figure in + the QoS Device model is by being aggregated into a FilterList by this + aggregation. + + See [PCIME] for the definition of this aggregation. + +4.4.28. The Aggregation ElementInSchedulingService + + This concrete aggregation represents the relationship between a + PacketSchedulingService and the set of SchedulingElements that tie it + to its inputs. + + The class definition for the aggregation is as follows: + + NAME ElementInSchedulingService + DESCRIPTION An aggregation used to tie a + PacketSchedlingService to the + configuration information for one of + the elements (either a QueuingService or + another PacketSchedulingService) that it + schedules. + DERIVED FROM Component + ABSTRACT False + PROPERTIES GroupComponent[ref + PacketSchedulingService[0..1]], + PartComponent[ref + SchedulingElement[1..n] + +4.4.28.1. The Reference GroupComponent + + This property is overridden in this aggregation to represent an + object reference to a PacketSchedulingService object (instead of to + the more generic Service object defined in its superclass). It also + restricts the cardinality of the aggregate to 0..1 (instead of the + more generic 0-or-more), representing the fact that a + SchedulingElement exists within the context of at most one + PacketSchedulingService. + +4.4.28.2. The Reference PartComponent + + This property is overridden in this aggregation to represent an + object reference to a SchedulingElement object (instead of to the + more generic Service object defined in its superclass). This object + represents a single scheduling element for the scheduler. It also + restricts the cardinality of the SchedulingElement to 1..n (instead + of the more generic 0-or-more), representing the fact that a + PacketSchedulingService always includes at least one + SchedulingElement. + + + +Moore, et al. Standards Track [Page 90] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +5. Intellectual Property Statement + + The IETF takes no position regarding the validity or scope of any + intellectual property or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; neither does it represent that it + has made any effort to identify any such rights. Information on the + IETF's procedures with respect to rights in standards-track and + standards-related documentation can be found in BCP-11. + + Copies of claims of rights made available for publication and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF Secretariat. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights which may cover technology that may be required to practice + this standard. Please address the information to the IETF Executive + Director. + +6. Acknowledgements + + The authors wish to thank the participants of the Policy Framework + and Differentiated Services working groups for their many helpful + comments and suggestions. Special thanks to Joel Halpern, who + provided some key technical direction during the latter stages of the + document's development. + +7. Security Considerations + + Like [PCIM] and [PCIME], this document defines an information model + that cannot be implemented directly. Consequently, security issues + do not arise until it is mapped to an actual, implementable data + model such as a MIB, PIB, or LDAP schema. See [PCIM] for a general + discussion of security considerations for information models. See + also [DSMIB] (which in fact is a data model that corresponds to a + large extent with the QDDIM information model), for a discussion of + the security implications of specific objects in the model. + + + + + + + + + + +Moore, et al. Standards Track [Page 91] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +8. References + +8.1. Normative References + + [CIM] Common Information Model (CIM) Schema, version 2.5. + Distributed Management Task Force, Inc., available at + http://www.dmtf.org/standards/cim_schema_v25.php. + + [IEEE802Q] Virtual Bridged Local Area Networks, ANSI/IEEE std 802.1Q, + 1998 edition. Approved December 8, 1998 + + [PCIM] Moore, B., Ellesson, E., Strassner, J. and A. Westerinen, + "Policy Core Information Model - Version 1 Specification", + RFC 3060, February 2001. + + [PCIME] Moore, B., Ed., "Policy Core Information Model (PCIM) + Extensions", RFC 3460, January 2003. + + [R791] Postel, J., "Internet Protocol", STD 5, RFC 791, September + 1981. + + [R2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [R2474] Nichols, K., Blake, S., Baker, F. and D. Black, + "Definition of the Differentiated Services Field (DS + Field) in the IPv4 and IPv6 Headers", RFC 2474, December + 1998. + + [R2597] Heinanen, J., Baker, F., Weiss, W. and J. Wroclawski, + "Assured Forwarding PHB Group", RFC 2597, June 1999. + + [R3140] Black, D., Brim, S., Carpenter, B. and F. Le Faucheur, + "Per Hop Behavior Identification Codes", RFC 3140, June + 2001. + +8.2. Informative References + + [DSMIB] Baker, F., Chan, K. and A. Smith, "Management Information + Base for the Differentiated Services Architecture", RFC + 3289, May 2002. + + [DSMODEL] Bernet, Y., Blake, S., Grossman, D. and A. Smith, "An + Informal Management Model for DiffServ Routers", RFC 3290, + May 2002. + + + + + + +Moore, et al. Standards Track [Page 92] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + + [PIB] Chan, K., Sahita, R., Hahn, S. and K. McCloghrie, + "Differentiated Services Quality of Service Policy + Information Base", RFC 3317, March 2003. + + [POLTERM] Westerinen, A., Schnizlein, J., Strassner, J., Scherling, + M., Quinn, B., Herzog, S., Huynh, A., Carlson, M., Perry, + J. and S. Waldbusser, "Terminology for Policy-Based + Management", RFC 3198, November 2001. + + [QPIM] Snir, Y., Ramberg, Y., Strassner, J., Cohen, R. and B. + Moore, "Policy Quality of Service (QoS) Information + Model", RFC 3644, November 2003. + + [R1633] Braden, R., Clark, D. and S. Shenker, "Integrated Services + in the Internet Architecture: An Overview", RFC 1633, + June 1994. + + [R2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z. + and W. Weiss, "An Architecture for Differentiated + Service", RFC 2475, December 1998. + + [R3246] Davie, B., Charny, A., Bennet, J.C.R., Benson, K., Le + Boudec, J.Y., Courtney, W., Davari, S., Firoiu, V. and D. + Stiliadis, "An Expedited Forwarding PHB (Per-Hop + Behavior)", RFC 3246, March 2002. + + [RED] See http://www.aciri.org/floyd/red.html + + + + + + + + + + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 93] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +9. Appendix A: Naming Instances in a Native CIM Implementation + + Following the precedent established in [PCIM], this document has + placed the details of how to name instances of its classes in a + native CIM implementation here in an appendix. Since Appendix A in + [PCIM] has a lengthy discussion of the general principles of CIM + naming, this appendix does not repeat that information here. Readers + interested in a more global discussion of how instances are named in + a native CIM implementation should refer to [PCIM]. + +9.1. Naming Instances of the Classes Derived from Service + + Most of the classes defined in this model are derived from the CIM + class Service. Although Service is an abstract class, it + nevertheless has key properties included as part of its definition. + The purpose of including key properties in an abstract class is to + have instances of all of its instantiable subclasses named in the + same way. Thus, the majority of the classes in this model name their + instances in exactly the same way: with the two key properties + CreationClassName and Name that they inherit from Service. + +9.2. Naming Instances of Subclasses of FilterEntryBase + + Like Service, FilterEntryBase (defined in [PCIME]) is an abstract + class that includes key properties in its definition. + FilterEntryBase has four key properties. Two of them, + SystemCreationClassName and SystemName, are propagated to it via the + weak association FilterEntryInSystem. The other two, + CreationClassName and Name, are native to FilterEntryBase. + + Thus, instances of all of the subclasses of FilterEntryBase, + including the PreambleFilter class defined here, are named in the + same way: with the four key properties they inherit from + FilterEntryBase. + +9.3. Naming Instances of ProtocolEndpoint + + The class ProtocolEndpoint inherits its key properties from its + superclass, ServiceAccessPoint. These key properties provide the + same naming structure that we've seen before: two propagated key + properties SystemCreationClassName and SystemName, plus two native + key properties CreationClassName and Name. + + + + + + + + + +Moore, et al. Standards Track [Page 94] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +9.4. Naming Instances of BufferPool + + Unlike the other classes in this model, BufferPool is not derived + from Service. Consequently, it does not inherit its key properties + from Service. Instead, it inherits one of its key properties, + CollectionID, from its superclass Collection, and adds its other key + property, CreationClassName, in its own definition. + +9.4.1. The Property CollectionID + + CollectionID is a string property with a maximum length of 256 + characters. It identifies the buffer pool. Note that this property + is defined in the BufferPool class's superclass, CollectionOfMSEs, + but not as a key property. It is overridden in BufferPool, to make + it part of this class's composite key. + +9.4.2. The Property CreationClassName + + This property is a string property of with a maximum length of 256 + characters. It is set to "CIM_BufferPool" if this class is directly + instantiated, or to the class name of the BufferPool subclass that is + created. + +9.5. Naming Instances of SchedulingElement + + This class has not yet been incorporated into the CIM model, so it + does not have any CIM naming properties yet. If the normal pattern + is followed, however, instances will be named with two properties + CreationClassName and Name. + + + + + + + + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 95] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +10. Authors' Addresses + + Bob Moore + P. O. Box 12195, BRQA/B501/G206 + 3039 Cornwallis Rd. + Research Triangle Park, NC 27709-2195 + + Phone: (919) 254-4436 + EMail: remoore@us.ibm.com + + + David Durham + Intel + 2111 NE 25th Avenue + Hillsboro, OR 97124 + + Phone: (503) 264-6232 + EMail: david.durham@intel.com + + + John Strassner + INTELLIDEN, Inc. + 90 South Cascade Avenue + Colorado Springs, CO 80903 + + Phone: (719) 785-0648 + EMail: john.strassner@intelliden.com + + + Andrea Westerinen + Cisco Systems, Bldg 20 + 725 Alder Drive + Milpitas, CA 95035 + + EMail: andreaw@cisco.com + + + Walter Weiss + Ellacoya Networks + 7 Henry Clay Dr. + Merrimack, NH 03054 + + Phone: (603) 879-7364 + EMail: walterweiss@attbi.com + + + + + + + +Moore, et al. Standards Track [Page 96] + +RFC 3670 QoS Device Datapath Info Model January 2004 + + +11. Full Copyright Statement + + Copyright (C) The Internet Society (2004). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assignees. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Moore, et al. Standards Track [Page 97] + |