1 tony 1.1 // ===================================================================
2 // Title: Network Quality of Service 2.8
3 // Filename: Network28_QoS.mof
4 // Version: 2.8
5 // Status: Preliminary
6 // Date: August 18, 2003
7 // ===================================================================
8 // Copyright 1998-2003 Distributed Management Task Force, Inc. (DMTF).
9 // All rights reserved.
10 // DMTF is a not-for-profit association of industry members dedicated
11 // to promoting enterprise and systems management and interoperability.
12 // DMTF specifications and documents may be reproduced for uses
13 // consistent with this purpose by members and non-members,
14 // provided that correct attribution is given.
15 // As DMTF specifications may be revised from time to time,
16 // the particular version and release date should always be noted.
17 //
18 // Implementation of certain elements of this standard or proposed
19 // standard may be subject to third party patent rights, including
20 // provisional patent rights (herein "patent rights"). DMTF makes
21 // no representations to users of the standard as to the existence
22 tony 1.1 // of such rights, and is not responsible to recognize, disclose, or
23 // identify any or all such third party patent right, owners or
24 // claimants, nor for any incomplete or inaccurate identification or
25 // disclosure of such rights, owners or claimants. DMTF shall have no
26 // liability to any party, in any manner or circumstance, under any
27 // legal theory whatsoever, for failure to recognize, disclose, or
28 // identify any such third party patent rights, or for such party's
29 // reliance on the standard or incorporation thereof in its product,
30 // protocols or testing procedures. DMTF shall have no liability to
31 // any party implementing such standard, whether such implementation
32 // is foreseeable or not, nor to any patent owner or claimant, and shall
33 // have no liability or responsibility for costs or losses incurred if
34 // a standard is withdrawn or modified after publication, and shall be
35 // indemnified and held harmless by any party implementing the
36 // standard from any and all claims of infringement by a patent owner
37 // for such implementations.
38 //
39 // For information about patents held by third-parties which have
40 // notified the DMTF that, in their opinion, such patent may relate to
41 // or impact implementations of DMTF standards, visit
42 // http://www.dmtf.org/about/policies/disclosures.php.
43 tony 1.1 // ===================================================================
44 // Description: The Network Model extends the management concepts to
45 // represent protocol interfaces and network/protocol
46 // services. This file defines classes to manage
47 // DiffServ/IntServ quality of service.
48 //
49 // The object classes below are listed in an order that
50 // avoids forward references. Required objects, defined
51 // by other working groups, are omitted.
52 // ==================================================================
53 // Change Log for v2.8 - None
54 //
55 // Change Log for v2.7
56 // CR662 - Modify Description of QoSService to indicate that
57 // NetworkService has been deprecated
58 // CR794 - Updates to PacketSchedulingService:
59 // - Update description
60 // - Change subclassing from ForwardingService to
61 // ConditioningService
62 // (ERRATA) - Change the enumeration for SchedulerType
63 // - Update description for OtherSchedulerType
64 tony 1.1 // - Add NextScheduler Association
65 // - Add NonWorkConservingSchedulingService and FailNextScheduler
66 // (ERRATA) - Remove PrioritySchedulingService,
67 // PriorityBandwidthSchedulingService,
68 // BandwidthSchedulingService,
69 // RoundRobinPacketSchedulingService and
70 // WeightedRoundRobinPacketSchedulingService
71 // - Deprecate SchedulerUsed
72 // CR795 - Updates to DropperService:
73 // - Update description
74 // (ERRATA) - Change the enumeration for DropperType
75 // - Deprecate AlwaysDrop property
76 // - Add DropFrom property
77 // - Changes to REDDropperService to update description, update
78 // description of MinQueueThreshold and MaxQueueThreshold
79 // properties, and add ThresholdUnits property
80 // (ERRATA) - In REDDropperService, change the datatype of the
81 // StartProbability and StopProbability properties
82 // - Add HeadTrailDropper
83 // - Deprecate WeightedREDDropperService
84 // CR795 (Continued) - Updates to QueuingService:
85 tony 1.1 // - Update description
86 // - Add CurrentQueueDepth and DepthUnits properties
87 // (ERRATA) - Remove the SmoothingWeight, TimeInterval, and
88 // GiveExcessCapacity properties
89 // - Add DropThresholdCalculationService
90 // - Add QueueAllocation.AllocationPercentage
91 // - Deprecate QueueHierarchy
92 // - Add CalculationServiceForDropper, CalculationBasedOnQueue
93 // and HeadTailDropQueueBinding
94 // CR796 - Updates to MarkerService:
95 // - Update description
96 // - Remove the CanRemark, RemarkType, OtherRemarkType,
97 // and RemarkValue properties
98 // - Add PreambleMarkerService, ToSMarkerService,
99 // DSCPMarkerService and 8021QMarkerService
100 // CR797 - Update description for MeterService and expand the
101 // abbreviations for MeterType
102 // - Update description for AverageRateMeterService
103 // (ERRATA) - Change the datatype for AverageRateMeterService.
104 // AverageRate from real32 to uint32 and change the
105 // units for AverageRateMeterService.DeltaInterval
106 tony 1.1 // - Update the description for EWMAMeterService
107 // (ERRATA) - Change the datatype for EWMAMeterService
108 // .AverageRate and.Gain from real32 to uint32
109 // (ERRATA) - Change the Units of EWMAMeterService.DeltaIntervals
110 // - Update the description for TokenBucketMeterService
111 // - Change the datatype for TokenBucketMeterService
112 // .AverageRate, .PeakRate, .BurstSize, and
113 // .ExcessBurstSize from real32 to uint32
114 // (ERRATA) - Fix subclassing of NextServiceAfterMeter, fix
115 // misspelled property name, and update the enum values for
116 // MeterResult
117 // CR798 - Updates to ClassifierService:
118 // - Update description
119 // - Remove ClassifierType, OtherClassifierType, and
120 // HaveClassifiedPacket properties
121 // - Add ClassifierElement, ClassifierElementInClassifierService,
122 // ClassifierElementUsesFilterList, and
123 // NextServiceAfterClassifierElement
124 // - Deprecate ClassifierFilterSet
125 // CR799 - Updates to QoSService:
126 // - Update the description
127 tony 1.1 // (ERRATA) - Change the subclassing
128 // - Add Composition qualifier to QoSSubService
129 // - Update description for QoSConditioningSubService and
130 // remove the Max (1) from the "Group" ref
131 // - Update the description for DiffServService
132 // - Deprecate DiffServService.DSCP
133 // - Add DiffServService.PHBID
134 // - Update the description for AFService and its ClassNumber
135 // and DropperNumber properties
136 // - Add FlowService
137 // - Deprecate PrecedenceService, 8021PService and EFService
138 // CR800 - Updates to ConditioningService:
139 // - Update the class description
140 // - Deprecate the Enabled property
141 // (ERRATA) - Change the subclassing
142 // - Deprecate ConditioningServiceOnEndpoint
143 // - Add IngressConditioningServiceOnEndpoint and
144 // EgressConditioningServiceOnEndpoint
145 // CR800 (Continued) - Updates for NextService:
146 // - Update the class description
147 // (ERRATA) - Remove the TrafficClass property
148 tony 1.1 // - Fix spelling of reference (Preceeding, should be Preceding)
149 // CR849 - Define InstanceID as the Key of SchedulingElement
150 // CR914 - Change inheritance of the deprecated association,
151 // ConditioningServiceOnEndpoint (from ForwardsAmong to its
152 // superclass, Dependency). Remove the ValueMap qualifier
153 // from the properties, WRRSchedulingElement.WorkConserving,
154 // PrioritySchedulingElement.WorkConserving, and
155 // BoundedPrioritySchedulingElement.WorkConserving
156 // CR920 - Remove the Key qualifier from NextScheduler.FollowingService
157 // since its superclass defines the key; Add missing parenthesis
158 // to the Description of AFService
159 // CR961 - Update the reference to EnabledLogicalElement.EnabledState
160 // CR982 - Removal of Experimental for preliminary to final
161 // CR983 - v2.7 Deprecations promoted to final
162 // CR994 - Update the InstanceID property Description
163 // ===================================================================
164
165 #pragma Locale ("en_US")
166
167
168 // ===================================================================
169 tony 1.1 // QoSService
170 // ===================================================================
171 [Version ("2.7.0"), Description (
172 "This is a concrete class that represents the ability to "
173 "conceptualize a QoS service as a set of coordinated "
174 "sub-services. This enables the network administrator to map "
175 "business rules to the network, and the network designer to "
176 "engineer the network such that it can provide different "
177 "functions for different traffic streams.\n"
178 "\n"
179 "This class has two main purposes. First, it serves as a "
180 "common base class for defining various sub-services that are "
181 "needed to build higher-level QoS services. Second, it serves "
182 "as a way to consolidate relationships between different types "
183 "of QoS services and different types of ConditioningServices.\n"
184 "\n"
185 "For example, Gold Service may be defined as a QoSService which "
186 "aggregates two other QoSServices together. Each of these "
187 "'other' QoSServices could be DiffServServices - one "
188 "representing the servicing of very high demand packets "
189 "(instantiated as a DiffServService directly), and one "
190 tony 1.1 "representing the service given to most of the packets "
191 "(instantiated as an AFService). The high demand "
192 "DiffServService instance would use QoSConditioning SubService "
193 "to aggregate together the necessary classifiers to indicate "
194 "which traffic it applies to, the appropriate meters for "
195 "contract limits, the marker to mark the EF PHB in the packets, "
196 "and the queuing-related services. The AFService instance "
197 "would similarly use QoSConditioning SubService to aggregate "
198 "its classifiers, meters, the several markers used to mark the "
199 "different AF PHBs in the packets, and the queuing-related "
200 "services needed to deliver the packet treatment.") ]
201 class CIM_QoSService : CIM_Service {
202 };
203
204
205 // ==================================================================
206 // QoSSubService
207 // ==================================================================
208 [Association, Aggregation, Composition, Version ("2.7.0"),
209 Description (
210 "The associations - QoSSubService and QoSConditioningSub "
211 tony 1.1 "Service - operate in conjunction. High level QoS definitions, "
212 "such as 'John gets Gold Service', map to lower level, more "
213 "concrete QoSServices (the subclasses of QoSService). This is "
214 "described by the QoSSubService association. In turn, each of "
215 "the SubServices may require their own conditioning. This is "
216 "modeled using the QoSConditioningSubService aggregation.\n"
217 "\n"
218 "Note that a more concrete QoSService may only be aggregated "
219 "into one higher level Service, using this association. The "
220 "cardinality on the GroupComponent reference is Max (1).") ]
221 class CIM_QoSSubService : CIM_ServiceComponent {
222
223 [Aggregate, Override ("GroupComponent"), Max (1), Description (
224 "The higher level QoSService that is constructed by "
225 "aggregating one or more lower-level QoSServices.") ]
226 CIM_QoSService REF GroupComponent;
227
228 [Override ("PartComponent"), Description (
229 "The more concrete QoSService that is used to provide the "
230 "higher level Service.") ]
231 CIM_QoSService REF PartComponent;
232 tony 1.1 };
233
234
235 // ===================================================================
236 // PrecedenceService
237 // ===================================================================
238 [Deprecated {"CIM_QoSService"}, Version ("2.7.0"), Description (
239 "This class represents a specialization of the general concept "
240 "of forwarding network traffic by adding specific semantics "
241 "that define how traffic is forwarded based on the value of the "
242 "ToS byte of a packet.\n"
243 "\n"
244 "This class is used to enable DiffServ devices and non- "
245 "DiffServ devices to exchange traffic. This is done by "
246 "defining a sibling class, DiffServService, to represent "
247 "devices that forward traffic based on the DiffServ code "
248 "point. This enables the administrator to define mappings "
249 "between devices that do not support DiffServ (and instead use "
250 "IP Precedence) and those that do support DiffServ.\n"
251 "\n"
252 "PrecedenceService is deprecated since forwarding based on the "
253 tony 1.1 "value of the ToS byte is specified using a FilterList, which "
254 "is associated with a ClassifierElement. If there is a need to "
255 "distinguish a higher-level set of coordinated QoS services, "
256 "the QoSService class can be instantiated directly.") ]
257 class CIM_PrecedenceService : CIM_QoSService {
258
259 [Deprecated {"CIM_IPHeadersFilter.HdrDSCP"}, Description (
260 "This property is an 8-bit unsigned integer that defines the "
261 "notion of precedence for different types of traffic.") ]
262 uint8 PrecedenceValue;
263 };
264
265
266 // ===================================================================
267 // DiffServService
268 // ===================================================================
269 [Version ("2.7.0"), Description (
270 "DiffServService represents the use of standard or custom "
271 "DiffServ services (associated with particular Per Hop "
272 "Behaviors, PHBs) to implement a (higher-level) QoSService. "
273 "Note that the DiffServService may be just one of a set of "
274 tony 1.1 "coordinated QoSSubServices that together implement a "
275 "higher-level QoSService. The relationship between the "
276 "QoSServices is described using the association, "
277 "QoSSubService.") ]
278 class CIM_DiffServService : CIM_QoSService {
279
280 [Deprecated {"CIM_DiffServService.PHBID"}, Description (
281 "This property is an unsigned 8-bit integer, and defines the "
282 "Differentiated Services Code Point (DSCP) that this link "
283 "uses to represent various types of differentiated services "
284 "through device-specific configuration commands. It is "
285 "deprecated since this information is conveyed via filter "
286 "lists, associated with ClassifierElements. The "
287 "DiffServService is better represented as a Per Hop "
288 "Behavior.") ]
289 uint8 DSCP;
290
291 [Description (
292 "A 16-bit unsigned integer which identifies a particular per "
293 "hop behavior, or family of per hop behaviors. The value is "
294 "a Per Hop Behavior Identification Code, as defined in "
295 tony 1.1 "[R3140]. Note that as defined, these identification codes "
296 "use the default, recommended, code points for PHBs as part "
297 "of their structure. These values may well be different "
298 "from the actual value used in the marker, as the marked "
299 "value is domain-dependent. The ability to indicate the PHB "
300 "Identification Code associated with a DiffServService is "
301 "helpful when tying the QoSService to reference documents, "
302 "and for inter-domain coordination and operation.") ]
303 uint16 PHBID;
304 };
305
306
307 // ===================================================================
308 // 8021PService
309 // ===================================================================
310 [Deprecated {"CIM_QoSService"}, Version ("2.7.0"), Description (
311 "This class represents a specialization of the general concept "
312 "of forwarding network traffic by adding specific semantics "
313 "that define how traffic is forwarded based on the value of the "
314 "Priority field in the 802.1P header.\n"
315 "\n"
316 tony 1.1 "This class is used to enable DiffServ domains and domains that "
317 "support 802.1P only to exchange traffic. It represents the "
318 "mapping between implementations that only support 802.1P "
319 "priority marking to be mapped to implementations that support "
320 "DiffServ, which use DSCPs.\n"
321 "\n"
322 "8021PService is deprecated since forwarding based on the value "
323 "of the Priority field in the 802.1P header is specified using "
324 "a FilterList, which is associated with a ClassifierElement. "
325 "If there is a need to distinguish a higher-level set of "
326 "coordinated QoS services, the QoSService class can be "
327 "instantiated directly.") ]
328 class CIM_8021PService : CIM_QoSService {
329
330 [Deprecated {"CIM_8021Filter.8021HdrPriorityValue"},
331 Description (
332 "This property is an 8-bit unsigned integer that defines the "
333 "notion of priority as specified in 802.1P implementations.") ]
334 uint8 PriorityValue;
335 };
336
337 tony 1.1
338 // ===================================================================
339 // AFService
340 // ===================================================================
341 [Version ("2.7.0"), Description (
342 "This class represents a specialization to the general concept "
343 "of forwarding network traffic by adding specific semantics "
344 "that characterize the operation of the Assured Forwarding (AF) "
345 "Service (RFC2597). This RFC defines four different AF classes "
346 "to represent four different treatments of traffic (e.g., a "
347 "different amount of forwarding resources, such as buffer space "
348 "and bandwidth, are allocated). Within each AF class, IP "
349 "packets are marked with one of three possible drop precedence "
350 "values. The drop precedence of a packet determines the "
351 "relative importance of that packet compared to other packets "
352 "within the same AF class if congestion occurs. A congested "
353 "interface will try to avoid dropping packets with a lower drop "
354 "precedence value by instead discarding packets with a higher "
355 "drop precedence value.\n"
356 "\n"
357 "Note that [R2597] defines 12 DSCPs that together represent the "
358 tony 1.1 "AF Per Hop Behavior (PHB) group. Implementations are free to "
359 "extend this (e.g., add more classes and/or drop precedences).\n"
360 "\n"
361 "The AFService class is modeled as a specialization of "
362 "DiffServService, which is in turn a specialization of "
363 "QoSService. This enables it to be related to higher-level "
364 "QoSServices, as well as to lower-level conditioning "
365 "sub-services (e.g., classification, metering, dropping, "
366 "queuing, and others).") ]
367 class CIM_AFService : CIM_DiffServService {
368
369 [Description (
370 "This property is an 8-bit unsigned integer that indicates "
371 "the number of AF classes that this AF implementation uses. "
372 "Among the instances aggregated into AFService (using "
373 "QoSConditioningSubService), one SHOULD find markers with as "
374 "many distinct values as is indicated by ClassNumber.") ]
375 uint8 ClassNumber;
376
377 [Description (
378 "This property is an 8-bit unsigned integer that indicates "
379 tony 1.1 "the number of drop precedence values that this AF "
380 "implementation uses. The number of drop precedence values "
381 "is the number PER AF CLASS. The corresponding droppers are "
382 "found in the collection of ConditioningServices aggregated "
383 "by QoSConditioningSubService.") ]
384 uint8 DropperNumber;
385 };
386
387
388 // ===================================================================
389 // FlowService
390 // ===================================================================
391 [Version ("2.7.0"), Description (
392 "This class represents a service that supports a particular "
393 "microflow. The microflow is identified by the string-valued "
394 "property FlowID. In some implementations, an instance of this "
395 "class corresponds to an entry in the implementation's flow "
396 "table.") ]
397 class CIM_FlowService : CIM_QoSService {
398
399 [Description (
400 tony 1.1 "This property is a string containing an identifier for a "
401 "microflow.") ]
402 string FlowID;
403 };
404
405
406 // ===================================================================
407 // EFService
408 // ===================================================================
409 [Deprecated {"CIM_DiffServService"}, Version ("2.7.0"),
410 Description (
411 "This class represents a specialization of the general concept "
412 "of forwarding network traffic by adding specific semantics "
413 "that characterize the operation of the Expedited Forwarding "
414 "(EF) Service (defined in RFC 2598).\n"
415 "\n"
416 "The EF PHB can be used to build a low loss, low latency, low "
417 "jitter, assured bandwidth, end-to-end service through DiffServ "
418 "domains. Such a service appears to the endpoints like a "
419 "point-to-point connection or a virtual leased line. This "
420 "service has also been described as Premium service in the IETF literature.\n"
421 tony 1.1 "\n"
422 "RFC 2598 defines one DSCP for the EF service. Thus, there is "
423 "no need to define any attributes in this class, since an "
424 "instance of the EFService class, by definition, means that "
425 "this particular DSCP is used.\n"
426 "\n"
427 "EFService is deprecated since forwarding based on the value of "
428 "the DiffServ Code Point is specified using a FilterList, which "
429 "is associated with a ClassifierElement. If there is a need to "
430 "distinguish a higher-level set of coordinated QoS services, "
431 "the DiffServService class can be instantiated directly.") ]
432 class CIM_EFService : CIM_DiffServService {
433 };
434
435
436 // ==================================================================
437 // AFRelatedServices
438 // ==================================================================
439 [Association, Version ("2.6.0"), Description (
440 "The IETF's RFC2597 describes a Differentiated Services "
441 "Per-Hop-Behavior (PHB) Group called Assured Forwarding (AF). "
442 tony 1.1 "Quoting from the RFC, 'The AF PHB group provides delivery of "
443 "IP packets in four independently forwarded AF classes. Within "
444 "each AF class, an IP packet can be assigned one of three "
445 "different levels of drop precedence.' The AFRelatedServices "
446 "association describes the precedence of the individual AF "
447 "drop-related Services within an AF IP packet-forwarding "
448 "class.") ]
449 class CIM_AFRelatedServices {
450
451 [Key, Max (1), Description (
452 "The AFService with a lower drop precedence (ie, lower "
453 "probability of dropping packets).") ]
454 CIM_AFService REF AFLowerDropPrecedence;
455
456 [Key, Description (
457 "An AFService at the same IP packet-forwarding class level, "
458 "but at a higher drop precedence.") ]
459 CIM_AFService REF AFHigherDropPrecedence;
460 };
461
462
463 tony 1.1 // ===================================================================
464 // ConditioningService
465 // ===================================================================
466 [Version ("2.7.0"), Description (
467 "ConditioningService represents the ability to define how "
468 "traffic is conditioned in the data-forwarding path of a "
469 "device. The subclasses of ConditioningService define the "
470 "particular types of conditioning that are done. These are the "
471 "services performed by a classifier, a meter, a marker, a "
472 "dropper, a queue, and a scheduler. Other, more sophisticated "
473 "types of conditioning may be defined in the future.\n"
474 "\n"
475 "ConditioningService is a concrete class because its superclass "
476 "(ForwardingService) is concrete. While this class can be "
477 "instantiated, an instance of it does not accomplish anything, "
478 "because the nature of the conditioning, and the parameters "
479 "that control it, are specified only in the subclasses of ConditioningService.\n"
480 "\n"
481 "Two associations in which ConditioningService participates are "
482 "critical to its usage in QoS - QoSConditioningSubService and "
483 "NextService. QoSConditioningSubService aggregates "
484 tony 1.1 "ConditioningServices into a particular QoS service (such as "
485 "AF), to describe the specific conditioning functionality that "
486 "underlies that QoSService in a particular device. NextService "
487 "indicates the subsequent conditioning service(s) for different "
488 "traffic streams.") ]
489 class CIM_ConditioningService : CIM_Service {
490
491 [Deprecated {"CIM_EnabledLogicalElement.EnabledState"},
492 Description (
493 "This property is a boolean that, if TRUE, signifies that "
494 "one or more conditioning functions can be performed on "
495 "traffic encountered by this ConditioningService. This "
496 "allows one or more ConditioningServices to be enabled or "
497 "disabled to provide different types of conditioning for "
498 "traffic. Enabled is deprecated in lieu of a similar (but "
499 "more generally and completely defined) property which is "
500 "inherited.") ]
501 boolean Enabled;
502 };
503
504
505 tony 1.1 // ==================================================================
506 // QoSConditioningSubService
507 // ==================================================================
508 [Association, Aggregation, Version ("2.7.0"), Description (
509 "A QoSService utilizes underlying ConditioningServices as part "
510 "of its overall functionality. This is modeled using the "
511 "QoSConditioningSubService association. Note that a "
512 "ConditioningService may only be part of a single QoSService - "
513 "the cardinality on the QoSService reference is Max (1).") ]
514 class CIM_QoSConditioningSubService : CIM_ServiceComponent {
515
516 [Aggregate, Override ("GroupComponent"), Description (
517 "This aggregation identifies the set of ConditioningServices "
518 "that together condition traffic for a particular "
519 "QoSService.") ]
520 CIM_QoSService REF GroupComponent;
521
522 [Override ("PartComponent"), Description (
523 "The ConditioningService.") ]
524 CIM_ConditioningService REF PartComponent;
525 };
526 tony 1.1
527
528 // ==================================================================
529 // ConditioningServiceOnEndpoint
530 // ==================================================================
531 [Association,
532 Deprecated {"CIM_IngressConditioningServiceOnEndpoint",
533 "CIM_EgressConditioningServiceOnEndpoint"}, Version ("2.7.0"),
534 Description (
535 "The QoS Model describes the traffic conditioning functions in "
536 "place for a network device. In order to 'be conditioned', a "
537 "packet is received at a ProtocolEndpoint. After "
538 "'conditioning', a packet is dropped or leaves the device via a "
539 "ProtocolEndpoint. This dependency on ProtocolEndpoints is "
540 "defined by the ConditioningServiceOn Endpoint association. A "
541 "property of the association, ServiceType, indicates whether "
542 "the ConditioningService handles incoming (\"Ingress\") or "
543 "out-going (\"Egress\") packets. This association is "
544 "deprecated since different cardinalities are needed on the "
545 "ingress and egress classes. This cannot be done using a "
546 "single association.") ]
547 tony 1.1 class CIM_ConditioningServiceOnEndpoint : CIM_Dependency {
548
549 [Deprecated {
550 "CIM_IngressConditioningServiceOnEndpoint.Antecedent",
551 "CIM_EgressConditioningServiceOnEndpoint.Antecedent "},
552 Override ("Antecedent"), Max (1), Description (
553 "The ProtocolEndpoint through which traffic arrives at or "
554 "leaves from a network device.") ]
555 CIM_ProtocolEndpoint REF Antecedent;
556
557 [Deprecated {
558 "CIM_IngressConditioningServiceOnEndpoint.Dependent",
559 "CIM_EgressConditioningServiceOnEndpoint.Dependent"},
560 Override ("Dependent"), Description (
561 "The ConditioningService which begins or ends the traffic "
562 "conditioning processing within a network device.") ]
563 CIM_ConditioningService REF Dependent;
564
565 [Deprecated {"CIM_IngressConditioningServiceOnEndpoint",
566 "CIM_EgressConditioningServiceOnEndpoint"}, Description (
567 "Indicates whether a packet is incoming (value = 1, "
568 tony 1.1 "\"Ingress\") or out-going (value = 2, \"Egress\") at the "
569 "ProtocolEndpoint, relative to the ConditioningService."),
570 ValueMap {"0", "1", "2"},
571 Values {"Unknown", "Ingress", "Egress"} ]
572 uint16 ServiceType;
573 };
574
575
576 // ==================================================================
577 // IngressConditioningServiceOnEndpoint
578 // ==================================================================
579 [Association, Version ("2.7.0"), Description (
580 "This association represents the binding, in the ingress "
581 "direction, between a ProtocolEndpoint and the first "
582 "ConditioningService that processes packets received via that "
583 "Endpoint. Since there can only be one 'first' "
584 "ConditioningService for a ProtocolEndpoint, the cardinality "
585 "for the Dependent object reference is narrowed from 0..n to "
586 "0..1. On the other hand, a single ConditioningService can be "
587 "the first to process packets received via multiple "
588 "ProtocolEndpoints. So, the cardinality of the Antecedent "
589 tony 1.1 "object reference remains 0..n.") ]
590 class CIM_IngressConditioningServiceOnEndpoint : CIM_ServiceSAPDependency {
591
592 [Override ("Antecedent"), Description (
593 "The ProtocolEndpoint through which traffic arrives at a "
594 "network device.") ]
595 CIM_ProtocolEndpoint REF Antecedent;
596
597 [Override ("Dependent"), Max (1), Description (
598 "The ConditioningService which begins the traffic "
599 "conditioning processing within a network device.") ]
600 CIM_ConditioningService REF Dependent;
601 };
602
603
604 // ==================================================================
605 // EgressConditioningServiceOnEndpoint
606 // ==================================================================
607 [Association, Version ("2.7.0"), Description (
608 "This association represents the binding, in the egress "
609 "direction, between a ProtocolEndpoint and the last "
610 tony 1.1 "ConditioningService that processes packets before they leave a "
611 "network device (via that ProtocolEndpoint). This 'last' "
612 "ConditioningService is ordinarily a scheduler, but it does not "
613 "have to be. There can be multiple 'last' ConditioningServices "
614 "for an Endpoint (for example, in the case of a fallback "
615 "scheduler). Therefore, the cardinality for the Dependent "
616 "object reference remains 0..n. On the other hand, a single "
617 "ConditioningService cannot be the last one to process packets "
618 "for multiple Endpoints. So, the cardinality of the Antecedent "
619 "object reference is narrowed from 0..n to 0..1.") ]
620 class CIM_EgressConditioningServiceOnEndpoint : CIM_ServiceSAPDependency {
621
622 [Override ("Antecedent"), Max (1), Description (
623 "The ProtocolEndpoint through which traffic leaves a network "
624 "device.") ]
625 CIM_ProtocolEndpoint REF Antecedent;
626
627 [Override ("Dependent"), Description (
628 "The ConditioningService which ends the traffic conditioning "
629 "processing within a network device.") ]
630 CIM_ConditioningService REF Dependent;
631 tony 1.1 };
632
633
634 // ==================================================================
635 // NextService
636 // ==================================================================
637 [Association, Version ("2.7.0"), Description (
638 "NextService establishes a predecessor-successor relationship "
639 "between two ConditioningService objects. This association is "
640 "used to indicate the sequence of ConditioningServices required "
641 "to process a particular type of traffic.\n"
642 "\n"
643 "Instances describe the various relationships between different "
644 "ConditioningServices (such as classifiers, meters, droppers, "
645 "etc.) that are used collectively to condition traffic. Both "
646 "one-to-one and more complicated fan-in and/or fan-out "
647 "relationships can be described. The Conditioning Services may "
648 "feed one another directly, or they may be mapped to multiple "
649 "'next' Services based on the characteristics of the packet.") ]
650 class CIM_NextService {
651
652 tony 1.1 [Key, Description (
653 "The preceding ConditioningService, 'earlier' in the "
654 "processing sequence for a packet.") ]
655 CIM_ConditioningService REF PrecedingService;
656
657 [Key, Description (
658 "The 'next' or following ConditioningService.") ]
659 CIM_ConditioningService REF FollowingService;
660 };
661
662
663 // ===================================================================
664 // ClassifierService
665 // ===================================================================
666 [Version ("2.7.0"), Description (
667 "ClassifierService represents a logical entity associated with "
668 "an ingress or egress interface of a device, that takes a "
669 "single input stream, and sorts it into one or more output "
670 "streams. The sorting is done by a set of filters that select "
671 "packets based on the packet contents, or possibly based on "
672 "other attributes associated with the packet. Each output "
673 tony 1.1 "stream is the result of matching a particular filter.\n"
674 "\n"
675 "Rather than being linked directly to its filters (instantiated "
676 "as FilterLists), a classifier is modeled as an aggregation of "
677 "ClassifierElements. Each of these ClassifierElements is "
678 "linked to a single FilterList, by the association "
679 "ClassifierElementUsesFilterList. Note that ClassifierServices "
680 "are designed to allow hierarchical classification. When "
681 "hierarchical classification is used, a ClassifierElement may "
682 "point to another ClassifierService (via the association, "
683 "NextServiceAfterClassifierElement). When this is true, the "
684 "ClassifierElement MUST NOT use the ClassifierElementUses "
685 "FilterList association.\n"
686 "\n"
687 "A classifier is modeled as a ConditioningService so that it "
688 "can be aggregated into a QoSService (using the "
689 "QoSConditioningSubService aggregation), and can use the "
690 "NextService association to identify the subsequent "
691 "ConditioningServices for different traffic streams.") ]
692 class CIM_ClassifierService : CIM_ConditioningService {
693 };
694 tony 1.1
695
696 // ===================================================================
697 // ClassifierElement
698 // ===================================================================
699 [Version ("2.7.0"), Description (
700 "ClassifierElement represents the linkage, within a single "
701 "ClassifierService, between a FilterList (that defines the "
702 "criteria to select packets from the stream of packets coming "
703 "into the Service) and the next ConditioningService (to which "
704 "the selected packets go after they leave the "
705 "ClassifierService). ClassifierElement has no properties of "
706 "its own. It is present to serve as an aggregated entity into "
707 "ClassifierService (using the ClassifierElementIn "
708 "ClassifierService association), and for associations with its "
709 "FilterList (ClassifierElementUsesFilterList) and its next "
710 "ConditioningService (NextServiceAfterClassifierElement).\n"
711 "\n"
712 "Note that a ClassifierElement may be associated with a "
713 "ClassifierService through the NextServiceAfterClassifier "
714 "Element association. This will occur when implementing "
715 tony 1.1 "hierarchical classification. In this case, the "
716 "ClassifierElement MUST NOT instantiate the ClassifierElement "
717 "UsesFilterList association. Further, when a ClassifierElement "
718 "is associated with a ClassifierService as described above, the "
719 "order of processing of the associated ClassifierService is a "
720 "function of the ClassifierOrder property of the "
721 "ClassifierElementInClassifierService aggregation.") ]
722 class CIM_ClassifierElement : CIM_ClassifierService {
723 };
724
725
726 // ===================================================================
727 // ClassifierElementInClassifierService
728 // ===================================================================
729 [Association, Aggregation, Composition, Version ("2.7.0"),
730 Description (
731 "This aggregation represents the relationship between a "
732 "ClassifierService and the ClassifierElements that provide its "
733 "fan-out function. ClassifierElements represent the traffic "
734 "selectors for the Service. A ClassifierService typically "
735 "aggregates multiple ClassifierElements. An individual "
736 tony 1.1 "Element, however, is aggregated only by a single "
737 "ClassifierService.") ]
738 class CIM_ClassifierElementInClassifierService : CIM_ServiceComponent {
739
740 [Aggregate, Override ("GroupComponent"), Min (1), Max (1),
741 Description (
742 "The ClassifierService which aggregates ClassifierElements.") ]
743 CIM_ClassifierService REF GroupComponent;
744
745 [Override ("PartComponent"), Description (
746 "The aggregated ClassifierElement, defined in the context of "
747 "one ClassifierService.") ]
748 CIM_ClassifierElement REF PartComponent;
749
750 [Description (
751 "Because the filters for a classifier can overlap, it is "
752 "necessary to specify the order in which the "
753 "ClassifierElements are aggregated by a ClassifierService. "
754 "This then dictates the order in which packets coming into "
755 "the classifier are presented. Values are represented in "
756 "ascending order: first '1', then '2', and so on. Different "
757 tony 1.1 "values MUST be assigned for each of the ClassifierElements "
758 "aggregated by a given ClassifierService.") ]
759 uint32 ClassifierOrder;
760 };
761
762
763 // ===================================================================
764 // ClassifierElementUsesFilterList
765 // ===================================================================
766 [Association, Version ("2.7.0"), Description (
767 "This association relates one or more ClassifierElements with a "
768 "FilterList that defines the criteria to select packets for the "
769 "classifier to process. Note that a classifier is always "
770 "modeled as a ClassifierService that aggregates a set of "
771 "ClassifierElements. Each of these ClassifierElements is "
772 "EITHER associated with a single FilterList OR associated to "
773 "another ClassifierService (via NextServiceAfterClassifier "
774 "Element to describe hierarchical classification).") ]
775 class CIM_ClassifierElementUsesFilterList : CIM_Dependency {
776
777 [Override ("Antecedent"), Max (1), Description (
778 tony 1.1 "The FilterList that specifies the traffic criteria for a "
779 "ClassifierElement.") ]
780 CIM_FilterList REF Antecedent;
781
782 [Override ("Dependent"), Description (
783 "The ClassifierElement that depends on the FilterList for "
784 "its traffic criteria.") ]
785 CIM_ClassifierElement REF Dependent;
786 };
787
788
789 // ===================================================================
790 // NextServiceAfterClassifierElement
791 // ===================================================================
792 [Association, Version ("2.7.0"), Description (
793 "An association used to establish a predecessor-successor "
794 "relationship between a single ClassifierElement (within a "
795 "ClassifierService) and the next ConditioningService object "
796 "that further processes the selected traffic. Note that the "
797 "cardinalities indicate that a FollowingService MUST be "
798 "defined, after the ClassifierElement. This is because there "
799 tony 1.1 "is no reason to classify traffic unless further processing "
800 "will be done.") ]
801 class CIM_NextServiceAfterClassifierElement : CIM_NextService {
802
803 [Override ("PrecedingService"), Description (
804 "The ClassifierElement that selects traffic to be passed to "
805 "the FollowingService.") ]
806 CIM_ClassifierElement REF PrecedingService;
807
808 [Override ("FollowingService"), Min (1), Max (1), Description (
809 "The ConditioningService that follows the "
810 "ClassifierElement.") ]
811 CIM_ConditioningService REF FollowingService;
812 };
813
814
815 // ==================================================================
816 // ClassifierFilterSet
817 // ==================================================================
818 [Association, Deprecated {"CIM_ClassifierElementUsesFilterList",
819 "ClassifierElementInClassifierService"}, Version ("2.7.0"),
820 tony 1.1 Description (
821 "In order for a ClassifierService to correctly identify and "
822 "process network traffic, that traffic must be described by "
823 "FilterEntries, which are aggregated into FilterLists. This "
824 "association defines the Dependency of the ClassifierService on "
825 "FilterLists (and therefore, their FilterEntries). The "
826 "cardinality of the association requires that the Classifier "
827 "Service operate against at least one FilterList.\n"
828 "\n"
829 "The association is deprecated in lieu of associating Filter "
830 "Lists to ClassifierElements, and ClassifierElements into "
831 "ClassifierServices. The latter approach is very flexible "
832 "regarding the implementations that can be modeled, and removes "
833 "the need to track individual traffic streams using an "
834 "artificial model property, TrafficClass. Using "
835 "ClassifierElements, each stream is processed beginning with a "
836 "single FilterList and progressing through various "
837 "ConditioningServices, associated via instances of "
838 "NextService.") ]
839 class CIM_ClassifierFilterSet : CIM_Dependency {
840
841 tony 1.1 [Deprecated {"CIM_ClassifierElementUsesFilterList.Antecedent"},
842 Override ("Antecedent"), Description (
843 "The FilterList aggregating FilterEntries, these in turn "
844 "describe how traffic is identified and processed by the "
845 "ClassifierService.") ]
846 CIM_FilterList REF Antecedent;
847
848 [Deprecated {"CIM_ClassifierElementUsesFilterList.Dependent"},
849 Override ("Dependent"), Description (
850 "The ClassifierService which uses the FilterList and its "
851 "aggregated FilterEntries.") ]
852 CIM_ClassifierService REF Dependent;
853
854 [Deprecated {
855 "CIM_ClassifierElementInClassifierService.ClassifierOrder"},
856 Description (
857 "The ordering of the FilterLists used in the classification "
858 "and forwarding functions of the ClassifierService.") ]
859 uint16 FilterListPosition;
860 };
861
862 tony 1.1
863 // ===================================================================
864 // MeterService
865 // ===================================================================
866 [Version ("2.7.0"), Description (
867 "This class represents the metering of network traffic. "
868 "Metering is the function of monitoring the arrival times of "
869 "packets of a traffic stream and determining the level of "
870 "conformance of each packet with respect to a pre- established "
871 "traffic profile. A meter has the ability to invoke different "
872 "ConditioningServices for conforming and non-conforming "
873 "traffic. Traffic leaving a meter may be further conditioned "
874 "(e.g., dropped or queued) by routing the packet to another "
875 "conditioning element.\n"
876 "\n"
877 "This class is modeled as a ConditioningService so that it can "
878 "be aggregated into a QoSService (using the "
879 "QoSConditioningSubService association), to indicate that its "
880 "functionality underlies that QoS service. MeterService also "
881 "participates in a subclass of the NextService association, to "
882 "identify the subsequent ConditioningServices for conforming "
883 tony 1.1 "and non-conforming traffic.") ]
884 class CIM_MeterService : CIM_ConditioningService {
885
886 [Description (
887 "This property is an enumerated 16-bit unsigned integer that "
888 "is used to specify the particular type of meter. Defined "
889 "values of the enumeration are:\n"
890 "\n"
891 "1: Other\n"
892 "2: Average Rate Meter\n"
893 "3: Exponentially Weighted Moving Average Meter\n"
894 "4: Token Bucket Meter\n"
895 "\n"
896 "Note: The MeterType property and the MeterService "
897 "subclasses provide similar information. This property is "
898 "defined for query purposes and for future expansion. It is "
899 "assumed that not all MeterServices will require a subclass "
900 "to define them. Therefore, MeterService will be "
901 "instantiated directly and the Type property is needed."),
902 ValueMap {"1", "2", "3", "4"},
903 Values {"Other", "Average Rate Meter",
904 tony 1.1 "Exponentially Weighted Moving Average Meter",
905 "Token Bucket Meter"},
906 ModelCorrespondence {"CIM_MeterService.OtherMeterType"} ]
907 uint16 MeterType;
908
909 [Description (
910 "This property is a string used in conjunction with the "
911 "MeterType property. When the value of MeterType is 1 "
912 "(i.e., \"Other\"), then the name of the conformance level "
913 "for this meter is defined in this property."),
914 ModelCorrespondence {"CIM_MeterService.MeterType"} ]
915 string OtherMeterType;
916
917 [Description (
918 "An unsigned integer indicating the number of conformance "
919 "levels supported by the Meter. For example, when only "
920 "'in-profile' or 'out of profile' metering is supported. "
921 "ConformanceLevels is set to 2.") ]
922 uint16 ConformanceLevels;
923 };
924
925 tony 1.1
926 // ===================================================================
927 // AverageRateMeterService
928 // ===================================================================
929 [Version ("2.7.0"), Description (
930 "This is a concrete subclass of MeterService that represents a "
931 "simple meter, called an Average Rate Meter. This type of "
932 "meter measures the average rate at which packets are submitted "
933 "to it over a specified time. Packets are defined as "
934 "conformant if their average arrival rate does not exceed the "
935 "specified measuring rate of the meter. Any packet that causes "
936 "the specified measuring rate to be exceeded is defined to be "
937 "non-conforming.") ]
938 class CIM_AverageRateMeterService : CIM_MeterService {
939
940 [Description (
941 "This property is a 32-bit unsigned integer that defines the "
942 "rate used to determine whether admitted packets are in "
943 "conformance or not. The value is specified in kilobits per "
944 "second."),
945 Units ("KiloBits per Second") ]
946 tony 1.1 uint32 AverageRate;
947
948 [Description (
949 "This property is a 64-bit unsigned integer that defines the "
950 "time period over which the average measurement should be "
951 "taken. The value is specified in microseconds."),
952 Units ("MicroSeconds") ]
953 uint64 DeltaInterval;
954 };
955
956
957 // ===================================================================
958 // EWMAMeterService
959 // ===================================================================
960 [Version ("2.7.0"), Description (
961 "This is a concrete subclass of the MeterService class that "
962 "represents an exponentially weighted moving average meter. "
963 "This meter is a simple low-pass filter that measures the rate "
964 "of incoming packets over a small, fixed sampling interval. "
965 "Any admitted packet that pushes the average rate over a "
966 "pre-defined limit is defined to be non-conforming.") ]
967 tony 1.1 class CIM_EWMAMeterService : CIM_MeterService {
968
969 [Description (
970 "This property is a 32-bit unsigned integer that defines the "
971 "average rate against which the sampled arrival rate of "
972 "packets should be measured. Any packet that causes the "
973 "sampled rate to exceed this rate is deemed non-conforming. "
974 "The value is specified in kilobits per second."),
975 Units ("KiloBits Per Second") ]
976 uint32 AverageRate;
977
978 [Description (
979 "This property is a 64-bit unsigned integer that defines the "
980 "sampling interval used to measure the arrival rate. The "
981 "calculated rate is averaged over this interval and checked "
982 "against the AverageRate property. All packets whose "
983 "computed average arrival rate is less than the AverageRate "
984 "are deemed conforming. The value is specified in "
985 "microseconds."),
986 Units ("MicroSeconds") ]
987 uint64 DeltaInterval;
988 tony 1.1
989 [Description (
990 "This property is a 32-bit unsigned integer representing the "
991 "reciprocal of the time constant (e.g., frequency response) "
992 "of what is essentially a simple low-pass filter. For "
993 "example, the value 64 for this property represents a time "
994 "constant value of 1/64.") ]
995 uint32 Gain;
996 };
997
998
999 // ===================================================================
1000 // TokenBucketMeterService
1001 // ===================================================================
1002 [Version ("2.7.0"), Description (
1003 "This is a concrete subclass of the MeterService class that "
1004 "represents the metering of network traffic using a token "
1005 "bucket meter. Two types of token bucket meters are defined "
1006 "using this class - a simple, two-parameter bucket meter, and a "
1007 "multi-stage meter.\n"
1008 "\n"
1009 tony 1.1 "A simple token bucket usually has two parameters, an average "
1010 "token rate and a burst size, and has two conformance levels: "
1011 "'conforming' and 'non-conforming'. This class also defines an "
1012 "excess burst size, which enables the meter to have three "
1013 "conformance levels ('conforming', 'partially conforming', and "
1014 "'non-conforming'). In this case, packets that exceed the "
1015 "excess burst size are deemed non-conforming, while packets "
1016 "that exceed the smaller burst size but are less than the "
1017 "excess burst size are deemed partially conforming.") ]
1018 class CIM_TokenBucketMeterService : CIM_MeterService {
1019
1020 [Description (
1021 "This property is a 32-bit unsigned integer that is used to "
1022 "define the committed rate of the meter. The value is "
1023 "expressed in kilobits per second."),
1024 Units ("KiloBits per Second") ]
1025 uint32 AverageRate;
1026
1027 [Description (
1028 "This attribute is a 32-bit unsigned integer that is used to "
1029 "define the peak rate of the meter. The value is expressed "
1030 tony 1.1 "in kilobits per second."),
1031 Units ("KiloBits per Second") ]
1032 uint32 PeakRate;
1033
1034 [Description (
1035 "This property is a 32-bit unsigned integer that is used to "
1036 "define the maximum number of tokens available for the "
1037 "committed rate (specified by the AverageRate property). "
1038 "The value is specified in kilobytes."),
1039 Units ("KiloBytes") ]
1040 uint32 BurstSize;
1041
1042 [Description (
1043 "This property is a 32-bit unsigned integer that is used to "
1044 "define the maximum number of tokens available for the peak "
1045 "rate (specified by the PeakRate property). The value is "
1046 "specified in kilobytes."),
1047 Units ("KiloBytes") ]
1048 uint32 ExcessBurstSize;
1049 };
1050
1051 tony 1.1
1052 // ==================================================================
1053 // NextServiceAfterMeter
1054 // ==================================================================
1055 [Association, Version ("2.7.0"), Description (
1056 "This association describes a predecessor-successor "
1057 "relationship between a MeterService and one or more "
1058 "ConditioningService objects that process traffic from the "
1059 "meter. For example, for devices that implement preamble "
1060 "marking, the FollowingService reference (after the meter) is a "
1061 "PreambleMarkerService - to record the results of the metering "
1062 "in the preamble.\n"
1063 "\n"
1064 "It might be expected that the NextServiceAfterMeter "
1065 "association would subclass from NextService. However, meters "
1066 "are 1:n fan-out elements, and require a mechanism to "
1067 "distinguish between the different results/outputs of the "
1068 "meter. Therefore, this association defines a new key "
1069 "property, MeterResult, which is used to record the result and "
1070 "identify the output through which this traffic left the "
1071 "meter.") ]
1072 tony 1.1 class CIM_NextServiceAfterMeter {
1073
1074 [Key, Description (
1075 "The preceding MeterService, 'earlier' in the processing "
1076 "sequence for a packet.") ]
1077 CIM_MeterService REF PrecedingService;
1078
1079 [Key, Description (
1080 "The 'next' or following ConditioningService.") ]
1081 CIM_ConditioningService REF FollowingService;
1082
1083 [Key, Description (
1084 "Information on the result of the metering. Traffic is "
1085 "distinguished as being conforming, non-conforming, or "
1086 "partially conforming. More complicated metering can be "
1087 "built either by extending the enumeration or by cascading "
1088 "meters."),
1089 ValueMap {"0", "1", "2", "3"},
1090 Values {"Unknown", "Conforming", "Partially Conforming",
1091 "Non-Conforming"} ]
1092 uint16 MeterResult;
1093 tony 1.1 };
1094
1095
1096 // ===================================================================
1097 // MarkerService
1098 // ===================================================================
1099 [Version ("2.6.0"), Description (
1100 "MarkerService represents the general process of marking a "
1101 "selected field in a network packet with a specified value. "
1102 "Packets are marked in order to control the conditioning that "
1103 "they will subsequently receive. Subclasses of MarkerService "
1104 "identify the specific fields to be marked, and introduce "
1105 "properties to represent the values used in marking these "
1106 "fields. Markers are usually invoked as a result of a "
1107 "preceding classifier match.\n"
1108 "\n"
1109 "MarkerService is a concrete class because its superclass "
1110 "(ConditioningService) is concrete. While this class can be "
1111 "instantiated, an instance of it does not accomplish anything, "
1112 "because both the field to be marked and the value used to mark "
1113 "it are defined in subclasses.\n"
1114 tony 1.1 "\n"
1115 "MarkerService is modeled as a ConditioningService so that it "
1116 "can be aggregated into a QoSService (using the "
1117 "QoSConditioningSubService association). This association "
1118 "indicates that the MarkerService's functionality underlies the "
1119 "QoSService. MarkerService also participates in the "
1120 "NextService association to identify the subsequent "
1121 "ConditioningService(s) that act on packets after they have "
1122 "been marked.") ]
1123 class CIM_MarkerService : CIM_ConditioningService {
1124 };
1125
1126
1127 // ===================================================================
1128 // PreambleMarkerService
1129 // ===================================================================
1130 [Version ("2.7.0"), Description (
1131 "PreambleMarkerService models the storing of traffic- "
1132 "conditioning results in a packet preamble. An instance "
1133 "appends a two-part string of the form '<type>,<value>' to the "
1134 "packet preamble. The concept of 'type's is discussed more "
1135 tony 1.1 "fully in the Description of the class' FilterItemList "
1136 "property.") ]
1137 class CIM_PreambleMarkerService : CIM_MarkerService {
1138
1139 [Description (
1140 "To foster interoperability, the basic format of the "
1141 "information captured by a PreambleMarker is specified. "
1142 "That information is contained in the FilterItemList "
1143 "property (an ordered, string array). Each entry in the "
1144 "array takes the form 'type,value'. When entries are added, "
1145 "they are appended to the end of the list.\n"
1146 "\n"
1147 "A limited set of standardized 'type's exist. They are:\n"
1148 "- ConformingFromMeter, NonConformingFromMeter and "
1149 "PartConformingFromMeter to convey metering results (where "
1150 "the 'value' is the name of the meter)\n"
1151 "- VlanId to describe the traffic's VLAN information (where "
1152 "the 'value' is the VLAN ID).\n"
1153 "An implementation is free to define and use other preamble 'types'.\n"
1154 "Note that a wildcard value of \"any\" is allowed to "
1155 "indicate that the preamble entry matches for any 'value' of "
1156 tony 1.1 "the specified 'type'. For example, using the wildcard, an "
1157 "administrator can define a filter to select all packets "
1158 "that were found to be conforming ('type' = "
1159 "\"ConformingFromMeter\") without having to name each meter "
1160 "individually."),
1161 ArrayType ("Ordered") ]
1162 string FilterItemList[];
1163 };
1164
1165
1166 // ===================================================================
1167 // ToSMarkerService
1168 // ===================================================================
1169 [Version ("2.7.0"), Description (
1170 "ToSMarkerService marks the ToS (type of service) field in the "
1171 "IPv4 packet header [R791] with a specific value. Packets are "
1172 "marked in order to control the conditioning that they will "
1173 "subsequently receive. Following common practice, the value to "
1174 "be written into the ToS field is represented as an unsigned "
1175 "8-bit integer.") ]
1176 class CIM_ToSMarkerService : CIM_MarkerService {
1177 tony 1.1
1178 [Description (
1179 "This property is an unsigned 8-bit integer, representing a "
1180 "value to be used for marking the type of service (ToS) "
1181 "field in the IPv4 packet header. The ToS field is defined "
1182 "to be a complete octet, so the range for this property is "
1183 "0..255. Some implementations, however, require that the "
1184 "lowest-order bit in the field is always 0. Such an "
1185 "implementation cannot support an odd TosValue.") ]
1186 uint8 ToSValue;
1187 };
1188
1189
1190 // ===================================================================
1191 // DSCPMarkerService
1192 // ===================================================================
1193 [Version ("2.7.0"), Description (
1194 "DSCPMarkerService marks the differentiated services codepoint "
1195 "(DSCP) within the DS field in the IPv4 and IPv6 packet "
1196 "headers, as defined in [R2474]. It is marked with the "
1197 "specific value defined in the property, DSCPValue. Following "
1198 tony 1.1 "common practice, the value to be written into the field is "
1199 "represented as an unsigned 8-bit integer.") ]
1200 class CIM_DSCPMarkerService : CIM_MarkerService {
1201
1202 [Description (
1203 "This property is an unsigned 8-bit integer, representing a "
1204 "value to be used for marking the DSCP field in an IPv4 or "
1205 "Ipv6 packet header. Since the DSCP consists of 6 bits, the "
1206 "values for this property are limited to the range 0..63. "
1207 "When the DSCP is marked, the remaining two bits in the DS "
1208 "field are left unchanged."),
1209 MinValue (0), MaxValue (63) ]
1210 uint8 DSCPValue;
1211 };
1212
1213
1214 // ===================================================================
1215 // 8021QMarkerService
1216 // ===================================================================
1217 [Version ("2.7.0"), Description (
1218 "8021QMarkerService marks the Priority field in an 802.1Q- "
1219 tony 1.1 "compliant frame, with a specified value. Frames are marked in "
1220 "order to control the conditioning that they will subsequently "
1221 "receive. Following common practice, the value to be written "
1222 "into the field is represented as an unsigned 8-bit integer.") ]
1223 class CIM_8021QMarkerService : CIM_MarkerService {
1224
1225 [Description (
1226 "This property is an unsigned 8-bit integer, representing a "
1227 "value to be used for marking the Priority field in the "
1228 "802.1Q header. Since the Priority field consists of 3 "
1229 "bits, the values for this property are limited to the range "
1230 "0..7. When the Priority field is marked, the remaining two "
1231 "bits in the octet are left unchanged."),
1232 MinValue (0), MaxValue (7) ]
1233 uint8 PriorityValue;
1234 };
1235
1236
1237 // ===================================================================
1238 // DropperService
1239 // ===================================================================
1240 tony 1.1 [Version ("2.7.0"), Description (
1241 "DropperService represents the ability to selectively drop "
1242 "network traffic, and/or to invoke another ConditioningService "
1243 "(indicated using the NextService association) for further "
1244 "processing of traffic that is not dropped. It is the base "
1245 "class for different types of droppers. Droppers are "
1246 "distinguished by the algorithm that they use to drop traffic.\n"
1247 "\n"
1248 "The NextService association has special semantics for "
1249 "droppers, in addition to conveying the general information of "
1250 "'what happens next' (that apply to all Conditioning "
1251 "Services). The queue(s) from which a particular dropper drops "
1252 "packets are identified by following chain(s) of NextService "
1253 "associations 'rightwards' from the dropper, until they reach a "
1254 "queue.") ]
1255 class CIM_DropperService : CIM_ConditioningService {
1256
1257 [Description (
1258 "This property is an enumerated 16-bit unsigned integer that "
1259 "defines the type of dropper. Its Values are:\n"
1260 "1: Other\n"
1261 tony 1.1 "2: Random\n"
1262 "3: HeadTail\n"
1263 "4: Absolute Dropper\n"
1264 "\n"
1265 "Note: The DropperType property and the DropperService "
1266 "subclasses provide similar information. This property is "
1267 "defined for query purposes and to not require a subclass "
1268 "for all types of DropperServices (for example, to describe "
1269 "an Absolute Dropper in today's model). Therefore, "
1270 "DropperService can be instantiated directly and the Type "
1271 "property is needed."),
1272 ValueMap {"1", "2", "3", "4"},
1273 Values {"Other", "Random", "HeadTail", "Absolute Dropper"},
1274 ModelCorrespondence { "CIM_DropperService.OtherDropperType"} ]
1275 uint16 DropperType;
1276
1277 [Description (
1278 "This property contains a vendor-specific value for the type "
1279 "of dropping that is done. It is used when the value of the "
1280 "DropperType property is 1 (Other)."),
1281 ModelCorrespondence {"CIM_DropperService.DropperType"} ]
1282 tony 1.1 string OtherDropperType;
1283
1284 [Deprecated { "CIM_DropperService.TypeOfDropper (=4, Absolute "
1285 "Dropper)"}, Description (
1286 "This property indicates whether the Dropper will always "
1287 "drop incoming packets (value=1) regardless of their type. "
1288 "It is deprecated since its information is conveyed by the "
1289 "TypeOfDropper property (value=4, 'Absolute Dropper')."),
1290 ValueMap {"0", "1", "2"},
1291 Values {"Unknown", "Always Drop", "Do Not Always Drop"} ]
1292 uint16 AlwaysDrop;
1293
1294 [Description (
1295 "This enumeration indicates the point in the associated "
1296 "queue (associated via the NextService relationship) from "
1297 "which packets should be dropped. If the value is 0 "
1298 "\"Unknown\", then packets MAY be dropped from any location "
1299 "in the queue."),
1300 ValueMap {"0", "1", "2"},
1301 Values {"Unknown", "Head", "Tail"} ]
1302 uint16 DropFrom;
1303 tony 1.1
1304 [Description (
1305 "This property is an enumerated unsigned 16-bit integer that "
1306 "defines the metric used to trigger the start of dropping "
1307 "packets. This does NOT mean that all packets will be "
1308 "dropped; it does mean that SOME packets will start to be "
1309 "dropped. The number and type of packets dropped is a "
1310 "function of the type of algorithm used by this Dropper. "
1311 "Values are:\n"
1312 "\n"
1313 "1: Other\n"
1314 "2: Queue Threshold\n"
1315 "3: Arrival Rate."),
1316 ValueMap {"1", "2", "3"},
1317 Values {"Other", "Queue Threshold", "Arrival Rate"} ]
1318 uint16 DropStartMetric;
1319
1320 [Description (
1321 "This property is an enumerated unsigned 16-bit integer that "
1322 "defines the metric used to determine when ALL packets will "
1323 "be dropped REGARDLESS of the type of algorithm used by this "
1324 tony 1.1 "Dropper. Values are:\n"
1325 "\n"
1326 "1: Other\n"
1327 "2: Queue Threshold\n"
1328 "3: Arrival Rate."),
1329 ValueMap {"1", "2", "3"},
1330 Values {"Other", "Queue Threshold", "Arrival Rate"} ]
1331 uint16 DropMaintainMetric;
1332 };
1333
1334
1335 // ===================================================================
1336 // REDDropperService
1337 // ===================================================================
1338 [Version ("2.7.0"), Description (
1339 "REDDropperService represents the ability to drop network "
1340 "traffic using a Random Early Detection (RED) algorithm. The "
1341 "purpose of a RED algorithm is to avoid congestion (as opposed "
1342 "to managing congestion). Instead of waiting for the queues to "
1343 "fill up, and then dropping large numbers of packets, RED works "
1344 "by monitoring average queue depth. When the queue depth "
1345 tony 1.1 "exceeds a minimum threshold, packets are randomly discarded. "
1346 "These discards cause TCP to slow its transmission rate for "
1347 "those connections that experienced the packet discards. Other "
1348 "connections are not affected by these discards.\n"
1349 "\n"
1350 "A RED dropper always drops packets from a single queue, which "
1351 "is related to the dropper as the following Service in the "
1352 "NextService association. The queue(s) examined by the drop "
1353 "algorithm are found by following the "
1354 "CalculationServiceForDropper association(s) to determine the "
1355 "dropper's DropThresholdCalculationService(s), and then "
1356 "following the CalculationBasedOnQueue association to find the "
1357 "queue being watched by each CalculationService.") ]
1358 class CIM_REDDropperService : CIM_DropperService {
1359
1360 [Description (
1361 "This is an unsigned 32-bit integer that defines the minimum "
1362 "average queue depth at which packets are subject to being "
1363 "dropped. (See the ThresholdUnits property to determine the "
1364 "units of the threshold.) The slope of the drop probability "
1365 "function is described by the Start/StopProbability "
1366 tony 1.1 "properties."),
1367 ModelCorrespondence {"CIM_REDDropperService.ThresholdUnits"} ]
1368 uint32 MinQueueThreshold;
1369
1370 [Description (
1371 "This is an unsigned 32-bit integer that defines the maximum "
1372 "average queue length at which packets are subject to always "
1373 "being dropped, regardless of the dropping algorithm and "
1374 "probabilities being used. (See the ThresholdUnits property "
1375 "to determine the units of the threshold.)"),
1376 MinValue (0), MaxValue (1000),
1377 ModelCorrespondence {"CIM_REDDropperService.ThresholdUnits"} ]
1378 uint32 MaxQueueThreshold;
1379
1380 [Description (
1381 "This is an unsigned 32-bit integer, used in conjunction "
1382 "with the StopDropProbability property. The start and stop "
1383 "probabilities define the slope of the drop probability "
1384 "function. This function governs the rate at which packets "
1385 "are subject to being dropped, as a function of the queue length.\n"
1386 "\n"
1387 tony 1.1 "This property expresses a drop probability in drops per "
1388 "thousand packets. For example, the value 100 indicates a "
1389 "drop probability of 100 per 1000 packets, that is, 10%. "
1390 "Min and max values are 0 to 1000."),
1391 Units ("Per Thousand Packets"),
1392 ModelCorrespondence { "CIM_REDDropperService.StopProbability"} ]
1393 uint32 StartProbability;
1394
1395 [Description (
1396 "This is an unsigned 32-bit integer, used in conjunction "
1397 "with the StartDropProbability property. The start and stop "
1398 "probabilities define the slope of the drop probability "
1399 "function. This function governs the rate at which packets "
1400 "are subject to being dropped, as a function of the queue length.\n"
1401 "\n"
1402 "This property expresses a drop probability in drops per "
1403 "thousand packets. For example, the value 100 indicates a "
1404 "drop probability of 100 per 1000 packets, that is, 10%. "
1405 "Min and max values are 0 to 1000."),
1406 Units ("Per Thousand Packets"), MinValue (0), MaxValue (1000),
1407 ModelCorrespondence { "CIM_REDDropperService.StartProbability"} ]
1408 tony 1.1 uint32 StopProbability;
1409
1410 [Description (
1411 "ThresholdUnits is an enumerated integer that identifies the "
1412 "units for the Min and MaxQueueThreshold properties. The "
1413 "values are either bytes (1) or packets (2)."),
1414 ValueMap {"1", "2"},
1415 Values {"Bytes", "Packets"} ]
1416 uint16 ThresholdUnits;
1417 };
1418
1419
1420 // ===================================================================
1421 // WeightedREDDropperService
1422 // ===================================================================
1423 [Deprecated {"No value"}, Version ("2.7.0"), Description (
1424 "This class represents a logical entity that resides in the "
1425 "data forwarding path of a network device. It describes the "
1426 "ability to drop network traffic using a Weighted Random Early "
1427 "Detection (WRED) algorithm. Like RED, the purpose of WRED is "
1428 "to avoid congestion (as opposed to managing congestion). This "
1429 tony 1.1 "modification of the basic RED algorithm enables packets "
1430 "belonging to different traffic classes to be dropped at "
1431 "different queue depths. This algorithm also enables discard "
1432 "to be done based on different information contained in the "
1433 "packet header, such as IP Precedence, RSVP session parameters, "
1434 "or even on other factors not directly encoded in the packet "
1435 "header, such as the queue depth.\n"
1436 "\n"
1437 "Implementation of this class has shown that weighting should "
1438 "not be a property of the class (but on an association to it), "
1439 "and that there is insufficient data to process the drop "
1440 "metric. The class is deprecated pending further definition by "
1441 "the DMTF.") ]
1442 class CIM_WeightedREDDropperService : CIM_DropperService {
1443
1444 [Deprecated {"No value"}, Description (
1445 "This property is an enumerated 16-bit unsigned integer, and "
1446 "defines the type of metric that is used to drop traffic. "
1447 "Values are:\n"
1448 "\n"
1449 "1: Other\n"
1450 tony 1.1 "2: IP Precedence\n"
1451 "3: DSCP Value\n"
1452 "4: 802.1P Priority Value\n"
1453 "5: RSVP Session\n"
1454 "6: Queue Depth\n"
1455 "7: Packet Arrival Rate."),
1456 ValueMap {"1", "2", "3", "4", "5", "6", "7"},
1457 Values {"Other", "IP Precedence", "DSCP Value",
1458 "802.1P Priority Value", "RSVP Session", "Queue Depth",
1459 "Packet Arrival Rate"},
1460 ModelCorrespondence {
1461 "CIM_WeightedREDDropperService.OtherDropMetric"} ]
1462 uint16 DropMetric;
1463
1464 [Deprecated {"No value"}, Description (
1465 "This string property is used in conjunction with the "
1466 "DropMetric property. When the value of DropMetric is 1 "
1467 "(i.e., \"Other\"), then the type of metric to be used is "
1468 "defined in this property."),
1469 ModelCorrespondence {
1470 "CIM_WeightedREDDropperService.DropMetric"} ]
1471 tony 1.1 string OtherDropMetric;
1472
1473 [Deprecated {
1474 "CIM_DropperThresholdCalculationService.SmoothingWeight"},
1475 Description (
1476 "This is a 32-bit real number that represents the weighting "
1477 "factor used to determine which queues get more service."),
1478 MinValue (0), MaxValue (100) ]
1479 real32 Weight;
1480 };
1481
1482
1483 // ===================================================================
1484 // HeadTailDropper
1485 // ===================================================================
1486 [Version ("2.7.0"), Description (
1487 "HeadTailDropper describes the threshold information of a head "
1488 "or tail dropper. The inherited property DropFrom indicates "
1489 "whether a particular instance of this class is a head dropper "
1490 "or a tail dropper.\n"
1491 "\n"
1492 tony 1.1 "A head dropper always examines the same queue from which it "
1493 "drops packets, and this queue is always related to the dropper "
1494 "as the following service in the NextService association.") ]
1495 class CIM_HeadTailDropper : CIM_DropperService {
1496
1497 [Description (
1498 "This is an unsigned 32-bit integer that indicates the queue "
1499 "depth (in bytes) at which traffic is dropped. For a tail "
1500 "dropper, all newly arriving traffic is dropped. For a head "
1501 "dropper, packets at the front of the queue are dropped to "
1502 "make room for new packets, which are added at the end."),
1503 Units ("Bytes") ]
1504 uint32 QueueThreshold;
1505 };
1506
1507
1508 // ===================================================================
1509 // QueuingService
1510 // ===================================================================
1511 [Version ("2.7.0"), Description (
1512 "QueuingService represents the ability to queue network "
1513 tony 1.1 "traffic, and to specify the characteristics for determining "
1514 "long-term congestion. It is modeled as a ConditioningService "
1515 "so that it can be aggregated into a QoSService (using the "
1516 "QoSConditioningSubService association). This indicates that "
1517 "its functionality underlies the QoSService.") ]
1518 class CIM_QueuingService : CIM_ConditioningService {
1519
1520 [Description (
1521 "Indicates the current depth of this queue in units "
1522 "specified by DepthUnits. This value may be important in "
1523 "diagnosing unexpected behavior."),
1524 Gauge,
1525 ModelCorrespondence {"CIM_QueuingService.DepthUnits"} ]
1526 uint32 CurrentQueueDepth;
1527
1528 [Description (
1529 "DepthUnits is an enumerated integer that identifies the "
1530 "units for the CurrentQueueDepth property. The values are "
1531 "either bytes (1) or packets (2)."),
1532 ValueMap {"1", "2"},
1533 Values {"Bytes", "Packets"} ]
1534 tony 1.1 uint16 DepthUnits;
1535 };
1536
1537
1538 // ===================================================================
1539 // DropThresholdCalculationService
1540 // ===================================================================
1541 [Version ("2.7.0"), Description (
1542 "This class calculates an average depth for a queue, based on a "
1543 "smoothing weight and a sampling time interval. The latter are "
1544 "properties of this Service, describing how it operates and its "
1545 "necessary parameters. The Service does the calculation on "
1546 "behalf of a RED dropper (as indicated by the association, "
1547 "CalculationServiceForDroppper). A "
1548 "DropThresholdCalculationService is always associated to the "
1549 "single queue that it examines via the Calculation BasedOnQueue "
1550 "relationship.") ]
1551 class CIM_DropThresholdCalculationService : CIM_Service {
1552
1553 [Description (
1554 "This property is a 32-bit unsigned integer, ranging between "
1555 tony 1.1 "0 and 100,000 - specified in thousandths. It defines the "
1556 "weighting of past history in affecting the calculation of "
1557 "the current average queue depth. The current queue depth "
1558 "calculation uses the inverse of this value as its factor, "
1559 "and one minus that inverse as the factor for the historical "
1560 "average. The calculation takes the form:\n"
1561 "average = (old_average*(1-inverse of SmoothingWeight))\n"
1562 "+ (current_queue_depth*inverse of SmoothingWeight)\n"
1563 "Implementations may choose to limit the acceptable set of "
1564 "values to a specified set, such as powers of 2."),
1565 Units ("Thousandths"), MinValue (0), MaxValue (100000) ]
1566 uint32 SmoothingWeight;
1567
1568 [Description (
1569 "This property is a 32-bit unsigned integer, and defines the "
1570 "number of nanoseconds between each calculation of "
1571 "average/smoothed queue depth. When this property is not "
1572 "specified, the CalculationService may determine an "
1573 "appropriate interval."),
1574 Units ("NanoSeconds") ]
1575 uint32 TimeInterval;
1576 tony 1.1 };
1577
1578
1579 // ==================================================================
1580 // QueueHierarchy
1581 // ==================================================================
1582 [Association, Deprecated {"No value"}, Version ("2.7.0"),
1583 Description (
1584 "Describes the reliance of a QueuingService on other, "
1585 "supporting queues and their QueuingServices. A given Service "
1586 "can only act in support of one QueuingService; but a higher "
1587 "level queue may be supported by many lower level QueuingServices.\n"
1588 "\n"
1589 "The class is deprecated since a queue only stores network "
1590 "traffic. It does not support other queues, or manipulate "
1591 "their entries. This type of processing is described using "
1592 "NextService associations 'rightwards' from the "
1593 "QueuingService. These associations reference 'other' "
1594 "ConditioningServices that may send traffic to 'other' "
1595 "queues).") ]
1596 class CIM_QueueHierarchy : CIM_ServiceServiceDependency {
1597 tony 1.1
1598 [Deprecated {"No value"}, Override ("Antecedent"), Description (
1599 "The supporting queue(s) and its QueuingService. This "
1600 "Service can only support at most one, higher level "
1601 "QueuingService.") ]
1602 CIM_QueuingService REF Antecedent;
1603
1604 [Deprecated {"No value"}, Override ("Dependent"), Max (1),
1605 Description (
1606 "The QueuingService dependent on other, supporting Queuing "
1607 "Services.") ]
1608 CIM_QueuingService REF Dependent;
1609 };
1610
1611
1612 // ==================================================================
1613 // CalculationServiceForDropper
1614 // ==================================================================
1615 [Association, Version ("2.7.0"), Description (
1616 "This association is a subclass of ServiceServiceDependency, "
1617 "and represents the reliance of a REDDropperService on one or "
1618 tony 1.1 "more DropThresholdCalculationServices. The latter calculate "
1619 "average queue depth, based on the observed depths of a queue. "
1620 "The specific queue examined by each CalculationService is "
1621 "defined using the CalculationBasedOnQueue association.") ]
1622 class CIM_CalculationServiceForDropper : CIM_ServiceServiceDependency {
1623
1624 [Override ("Antecedent"), Min (1), Description (
1625 "A calculation service for the dropper.") ]
1626 CIM_DropThresholdCalculationService REF Antecedent;
1627
1628 [Override ("Dependent"), Description (
1629 "The RED dropper which is dependent on average queue depth "
1630 "calculations by the Antecedent Service.") ]
1631 CIM_REDDropperService REF Dependent;
1632 };
1633
1634
1635 // ==================================================================
1636 // CalculationBasedOnQueue
1637 // ==================================================================
1638 [Association, Version ("2.7.0"), Description (
1639 tony 1.1 "This association establishes a dependency relationship between "
1640 "a QueuingService and an instance of the "
1641 "DropThresholdCalculationService class. The queue's current "
1642 "depth is used by the CalculationService in calculating an "
1643 "average/smoothed queue depth.") ]
1644 class CIM_CalculationBasedOnQueue : CIM_ServiceServiceDependency {
1645
1646 [Override ("Antecedent"), Min (1), Max (1), Description (
1647 "The queue examined by the CalculationService.") ]
1648 CIM_QueuingService REF Antecedent;
1649
1650 [Override ("Dependent"), Description (
1651 "The CalculationService that provides an average queue "
1652 "depth.") ]
1653 CIM_DropThresholdCalculationService REF Dependent;
1654 };
1655
1656
1657 // ==================================================================
1658 // HeadTailDropQueueBinding
1659 // ==================================================================
1660 tony 1.1 [Association, Version ("2.7.0"), Description (
1661 "This association describes the relationship between a head or "
1662 "tail dropper and the queue that it monitors to determine when "
1663 "to drop traffic. The referenced queue's depth is compared "
1664 "against the Dropper's threshold property. Although the "
1665 "dropper drops from only one queue, the drop decision may be "
1666 "influenced by the state of several queues. The rule for "
1667 "combining the multiple inputs is simple addition: if the sum "
1668 "of the lengths of the monitored queues exceeds the dropper's "
1669 "QueueThreshold value, then packets are dropped. Note that "
1670 "this rule for combining inputs may be overridden.") ]
1671 class CIM_HeadTailDropQueueBinding : CIM_Dependency {
1672
1673 [Override ("Antecedent"), Min (1), Description (
1674 "A QueuingService examined by the CalculationService.") ]
1675 CIM_QueuingService REF Antecedent;
1676
1677 [Override ("Dependent"), Description (
1678 "The CalculationService that provides an average queue "
1679 "depth.") ]
1680 CIM_HeadTailDropper REF Dependent;
1681 tony 1.1 };
1682
1683
1684 // ==================================================================
1685 // QueueAllocation
1686 // ==================================================================
1687 [Association, Version ("2.6.0"), Description (
1688 "Describes the reliance of a QueuingService on the availability "
1689 "of space in a BufferPool.") ]
1690 class CIM_QueueAllocation : CIM_Dependency {
1691
1692 [Override ("Antecedent"), Description (
1693 "The BufferPool supporting packet storage for a "
1694 "QueuingService.") ]
1695 CIM_BufferPool REF Antecedent;
1696
1697 [Override ("Dependent"), Description (
1698 "The QueuingService dependent on the BufferPool for storage "
1699 "space.") ]
1700 CIM_QueuingService REF Dependent;
1701
1702 tony 1.1 [Description (
1703 "This property is an 8-bit unsigned integer representing a "
1704 "percentage from 0 to 100. It defines the percentage of the "
1705 "BufferPool that should be allocated to the referenced "
1706 "QueuingService. If absolute sizes are desired, this is "
1707 "accomplished by defining individual BufferPools of the "
1708 "specified sizes, with QueueAllocation.AllocationPercentages "
1709 "set to 100."),
1710 Units ("Percent"), MinValue (0), MaxValue (100) ]
1711 uint8 AllocationPercentage;
1712 };
1713
1714
1715 // ===================================================================
1716 // PacketSchedulingService
1717 // ===================================================================
1718 [Version ("2.7.0"), Description (
1719 "This class represents the scheduling service, which is a "
1720 "process that determines whether a queued packet should be "
1721 "removed from a queue and sent to an output interface. Note "
1722 "that output interfaces can be physical network interfaces or "
1723 tony 1.1 "interfaces to components internal to systems, such as "
1724 "crossbars or backplanes. In either case, if multiple queues "
1725 "are involved, schedulers are used to provide access to the "
1726 "interface. Each instance of a PacketSchedulingService "
1727 "describes a scheduler from the perspective of the queues that "
1728 "the scheduler is servicing. One can describe that different "
1729 "schedulers support different queues, or that a scheduler "
1730 "supports several queues.\n"
1731 "\n"
1732 "PacketSchedulingService is modeled as a ConditioningService so "
1733 "that it can be aggregated into a QoSService (using the "
1734 "QoSConditioningSubService association) to indicate that its "
1735 "functionality underlies that QoS service. It participates in "
1736 "the NextService association to identify a subsequent "
1737 "ConditioningService, if any, that acts on traffic after it has "
1738 "been processed by the scheduler.") ]
1739 class CIM_PacketSchedulingService : CIM_ConditioningService {
1740
1741 [Description (
1742 "This property is an enumerated 16-bit unsigned integer, and "
1743 "defines the type of scheduler. Values are:\n"
1744 tony 1.1 "1: Other\n"
1745 "2: FIFO\n"
1746 "3: Priority\n"
1747 "4: Allocation\n"
1748 "5: Bounded Priority\n"
1749 "6: Weighted Round Robin Packet\n"
1750 "If no value is specified, 2 (\"FIFO\") should be assumed."),
1751 ValueMap {"1", "2", "3", "4", "5", "6"},
1752 Values {"Other", "FIFO", "Priority", "Allocation",
1753 "Bounded Priority", "Weighted Round Robin Packet"},
1754 ModelCorrespondence {
1755 "CIM_PacketSchedulingService.OtherSchedulerType"} ]
1756 uint16 SchedulerType;
1757
1758 [Description (
1759 "This string property is used in conjunction with the "
1760 "SchedulerType property. When the value of SchedulerType is "
1761 "1 (i.e., \"Other\"), then the type of scheduler to be used "
1762 "is defined in this attribute."),
1763 ModelCorrespondence { "CIM_ "
1764 "PacketSchedulingService.SchedulerType"} ]
1765 tony 1.1 string OtherSchedulerType;
1766 };
1767
1768
1769 // ==================================================================
1770 // NextScheduler
1771 // ==================================================================
1772 [Association, Version ("2.7.0"), Description (
1773 "This association is a subclass of NextService, and defines a "
1774 "predecessor-successor relationship between Packet "
1775 "SchedulingServices. In a hierarchical queuing configuration "
1776 "(where a second scheduler treats the output of a first "
1777 "scheduler as a single, aggregated input), the two schedulers "
1778 "are related via the NextScheduler association.") ]
1779 class CIM_NextScheduler : CIM_NextService {
1780
1781 [Override ("PrecedingService"), Description (
1782 "The PacketSchedulingService whose output is treated as a "
1783 "single, aggregated input by the FollowingService "
1784 "scheduler. The [0..n] cardinality indicates that a single "
1785 "FollowingService scheduler may bring together the "
1786 tony 1.1 "aggregated outputs of multiple prior schedulers.") ]
1787 CIM_PacketSchedulingService REF PrecedingService;
1788
1789 [Override ("FollowingService"), Max (1), Description (
1790 "A scheduler that includes among its inputs the aggregated "
1791 "outputs of one or more PrecedingService schedulers.") ]
1792 CIM_PacketSchedulingService REF FollowingService;
1793 };
1794
1795
1796 // ==================================================================
1797 // SchedulerUsed
1798 // ==================================================================
1799 [Association, Deprecated {"CIM_QueueToSchedule",
1800 "CIM_SchedulingServiceToSchedule"}, Version ("2.7.0"),
1801 Description (
1802 "In order to remove queued packets, a process or Service "
1803 "(identified as a PacketSchedulingService) runs. This "
1804 "association describes the Dependency of the queue and its "
1805 "QueuingService on a SchedulingService, which empties it.\n"
1806 "\n"
1807 tony 1.1 "The association is deprecated in lieu of associating Queuing "
1808 "Services to SchedulingElements, and SchedulingElements into "
1809 "SchedulingServices. The latter approach is very flexible "
1810 "regarding the implementations that can be modeled, and removes "
1811 "the need to track individual traffic streams using an "
1812 "artificial model property, TrafficClass.") ]
1813 class CIM_SchedulerUsed : CIM_ServiceServiceDependency {
1814
1815 [Deprecated {"CIM_QueueToSchedule.Queue"},
1816 Override ("Antecedent"), Max (1), Description (
1817 "The PacketSchedulingService which empties the Queuing "
1818 "Service's queue.") ]
1819 CIM_PacketSchedulingService REF Antecedent;
1820
1821 [Deprecated {"CIM_QueueToSchedule.SchedElement"},
1822 Override ("Dependent"), Description (
1823 "The queue and its QueuingService from which packets are "
1824 "emptied.") ]
1825 CIM_QueuingService REF Dependent;
1826 };
1827
1828 tony 1.1
1829 // ==================================================================
1830 // NonWorkConservingSchedulingService
1831 // ==================================================================
1832 [Version ("2.7.0"), Description (
1833 "A type of packet scheduler, that is capable of operating in a "
1834 "non-work conserving manner. This class does not add any "
1835 "properties beyond those it inherits from "
1836 "PacketSchedulingService. It does, however, participate in one "
1837 "additional association, FailNextScheduler.") ]
1838 class CIM_NonWorkConservingSchedulingService : CIM_PacketSchedulingService {
1839 };
1840
1841
1842 // ==================================================================
1843 // FailNextScheduler
1844 // ==================================================================
1845 [Association, Version ("2.7.0"), Description (
1846 "This association is a subclass of NextScheduler, and defines a "
1847 "predecessor-successor relationship between a NonWork "
1848 "ConservingSchedulingService and another PacketScheduling "
1849 tony 1.1 "Service. It indicates that the NonWorkConserving scheduler "
1850 "may pass up a scheduling opportunity (thereby behaving in a "
1851 "non-work conserving manner), and make the resulting bandwidth "
1852 "available to the FollowingService scheduler.") ]
1853 class CIM_FailNextScheduler : CIM_NextScheduler {
1854
1855 [Override ("PrecedingService"), Description (
1856 "The NonWorkConservingSchedulingService whose excess "
1857 "bandwidth is made available to the scheduler identified by "
1858 "the FollowingService reference. The [0..n] cardinality "
1859 "indicates that a single FollowingService scheduler may have "
1860 "the opportunity to use the unused bandwidth of multiple "
1861 "prior non-work-conserving schedulers.") ]
1862 CIM_NonWorkConservingSchedulingService REF PrecedingService;
1863
1864 [Override ("FollowingService"), Max (1), Description (
1865 "A scheduler that may use the bandwidth available from the "
1866 "non-work conserving scheduler.") ]
1867 CIM_PacketSchedulingService REF FollowingService;
1868 };
1869
1870 tony 1.1
1871 // ==================================================================
1872 // SchedulingElement
1873 // ==================================================================
1874 [Abstract, Version ("2.7.0"), Description (
1875 "SchedulingElement represents the configuration information "
1876 "that a PacketSchedulingService has for one of the elements "
1877 "that it is scheduling. The scheduled element is either a "
1878 "QueuingService or another Packet SchedulingService.\n"
1879 "\n"
1880 "Among the subclasses of this class, some are defined in such a "
1881 "way that all of their instances are work conserving. Other "
1882 "subclasses, however, have instances that either are or are not "
1883 "work conserving. In this class, the boolean property "
1884 "WorkConserving indicates whether an instance is or is not work "
1885 "conserving. Note that WorkConserving is restricted to TRUE in "
1886 "the subclasses that are inherently work conserving, since "
1887 "instances of these classes cannot be anything else.") ]
1888 class CIM_SchedulingElement : CIM_ManagedElement {
1889
1890 [Key, Description (
1891 tony 1.1 "Within the scope of the instantiating Namespace, InstanceID "
1892 "opaquely and uniquely identifies an instance of this "
1893 "class. In order to ensure uniqueness within the NameSpace, "
1894 "the value of InstanceID SHOULD be constructed using the "
1895 "following 'preferred' algorithm:\n"
1896 " <OrgID>:<LocalID>\n"
1897 "Where <OrgID> and <LocalID> are separated by a colon ':', "
1898 "and where <OrgID> MUST include a copyrighted, trademarked "
1899 "or otherwise unique name that is owned by the business "
1900 "entity creating/defining the InstanceID, or is a registered "
1901 "ID that is assigned to the business entity by a recognized "
1902 "global authority. (This is similar to the <Schema "
1903 "Name>_<Class Name> structure of Schema class names.) In "
1904 "addition, to ensure uniqueness <OrgID> MUST NOT contain a "
1905 "colon (':'). When using this algorithm, the first colon to "
1906 "appear in InstanceID MUST appear between <OrgID> and <LocalID>.\n"
1907 "<LocalID> is chosen by the business entity and SHOULD not "
1908 "be re-used to identify different underlying (real-world) "
1909 "elements. If the above 'preferred' algorithm is not used, "
1910 "the defining entity MUST assure that the resultant "
1911 "InstanceID is not re-used across any InstanceIDs produced "
1912 tony 1.1 "by this or other providers for this instance's NameSpace.\n"
1913 "For DMTF defined instances, the 'preferred' algorithm MUST "
1914 "be used with the <OrgID> set to 'CIM'.") ]
1915 string InstanceID;
1916
1917 [Write, Description (
1918 "A boolean property indicating whether the "
1919 "PacketSchedulingService tied to this instance (by the "
1920 "ElementInSchedulingService aggregation) is treating the "
1921 "queue/input tied to this instance, in a work-conserving "
1922 "manner. The queue/input is indicated by either the "
1923 "QueueToSchedule or SchedulingServiceToSchedule "
1924 "association. Note that this property is writeable, "
1925 "indicating that an administrator can change the behavior of "
1926 "the SchedulingElement - but only for those elements that "
1927 "can operate in a non-work conserving mode.") ]
1928 boolean WorkConserving;
1929 };
1930
1931
1932 // ==================================================================
1933 tony 1.1 // AllocationSchedulingElement
1934 // ==================================================================
1935 [Version ("2.7.0"), Description (
1936 "This class is a subclass of the abstract class "
1937 "SchedulingElement. It introduces five new properties to "
1938 "support bandwidth-based scheduling. As is the case with all "
1939 "subclasses of SchedulingElement, the input associated with an "
1940 "instance of AllocationSchedulingElement is of one of two "
1941 "types: either a queue, or another scheduler.") ]
1942 class CIM_AllocationSchedulingElement : CIM_SchedulingElement {
1943
1944 [Description (
1945 "A 16-bit unsigned integer enumeration that identifies the "
1946 "units in which the BandwidthAllocation and BurstAllocation "
1947 "properties are expressed. The following values are defined:\n"
1948 "- Bytes(1)\n"
1949 "- Packets(2)\n"
1950 "- Cells(3) (fixed-size, for example, ATM)\n"
1951 "If no value is specified, 1 (\"Bytes\") should be assumed."),
1952 ValueMap {"1", "2", "3"},
1953 Values {"Bytes", "Packets", "Cells"} ]
1954 tony 1.1 uint16 AllocationUnits;
1955
1956 [Description (
1957 "A 32-bit bit unsigned integer defining the number of "
1958 "'units' per second that should be allocated to the "
1959 "associated input. 'Units' are identified by the "
1960 "AllocationUnits property."),
1961 ModelCorrespondence {
1962 "CIM_AllocationSchedulingElement.AllocationUnits"} ]
1963 uint32 BandwidthAllocation;
1964
1965 [Description (
1966 "A 32-bit bit unsigned integer specifying the amount of "
1967 "temporary or short-term bandwidth (in 'units' per second) "
1968 "that can be allocated to an input, beyond the amount of "
1969 "bandwidth allocated through the BandwidthAllocation "
1970 "property. If the maximum actual bandwidth allocation for "
1971 "the input were to be measured, it would be the sum of the "
1972 "BurstAllocation and the BandwidthAllocation properties. "
1973 "'Units' are identified by the AllocationUnits property."),
1974 ModelCorrespondence {
1975 tony 1.1 "CIM_AllocationSchedulingElement.AllocationUnits"} ]
1976 uint32 BurstAllocation;
1977
1978 [Description (
1979 "A boolean property that, if TRUE, enables unused bandwidth "
1980 "from the associated input to be allocated to other inputs "
1981 "serviced by the Scheduler.") ]
1982 boolean CanShare;
1983
1984 [Description (
1985 "A boolean property that, if TRUE, indicates that the "
1986 "behavior of the scheduler relative to this input can be "
1987 "altered by changing the value of the inherited property, "
1988 "WorkConserving.") ]
1989 boolean WorkFlexible;
1990 };
1991
1992
1993 // ==================================================================
1994 // WRRSchedulingElement
1995 // ==================================================================
1996 tony 1.1 [Version ("2.7.0"), Description (
1997 "This class is a subclass of the abstract class "
1998 "SchedulingElement. It introduces a new property, "
1999 "WeightingFactor, to give some inputs a higher probability of "
2000 "being serviced than other inputs. It also introduces a "
2001 "Priority property, to serve as a tiebreaker to be used when "
2002 "inputs have equal weighting factors. As is the case with all "
2003 "subclasses of SchedulingElement, the input associated with an "
2004 "instance of WRRSchedulingElement is of one of two types: "
2005 "either a queue, or another scheduler. Because scheduling of "
2006 "this type is always work conserving, the inherited boolean "
2007 "property, WorkConserving, is restricted to TRUE in this "
2008 "class.") ]
2009 class CIM_WRRSchedulingElement : CIM_SchedulingElement {
2010
2011 [Override ("WorkConserving") ]
2012 boolean WorkConserving = TRUE;
2013
2014 [Description (
2015 "A 32-bit bit unsigned integer defining the weighting factor "
2016 "that offers some inputs a higher probability of being "
2017 tony 1.1 "serviced than other inputs. The property's minimum value "
2018 "is 0, its maximum value is 100000, and its Units are "
2019 "thousandths."),
2020 Units ("Thousandths"), MinValue (0), MaxValue (100000) ]
2021 uint32 WeightingFactor;
2022
2023 [Description (
2024 "A 16-bit bit unsigned integer which serves as a tiebreaker, "
2025 "in the event that two or more inputs have equal weights. A "
2026 "larger value represents a higher priority. While this "
2027 "condition may not occur in some implementations of a "
2028 "weighted round robin scheduler, many implementations "
2029 "require a priority to resolve an equal-weight condition. "
2030 "In the instances where this behavior is not necessary or is "
2031 "undesirable, the property may be left unspecified.") ]
2032 uint16 Priority;
2033 };
2034
2035
2036 // ==================================================================
2037 // PrioritySchedulingElement
2038 tony 1.1 // ==================================================================
2039 [Version ("2.7.0"), Description (
2040 "This class is a subclass of the abstract class "
2041 "SchedulingElement. It indicates that a scheduler is taking "
2042 "packets from a set of inputs using the priority scheduling "
2043 "discipline. As is the case with all subclasses of "
2044 "SchedulingElement, the input associated with an instance of "
2045 "PrioritySchedulingElement is of one of two types: either a "
2046 "queue, or another scheduler. The Priority property represents "
2047 "the priority for an input, relative to the priorities of all "
2048 "the other inputs to which the scheduler (that aggregates this "
2049 "PrioritySchedulingElement) is associated. Inputs to which the "
2050 "scheduler is related via other scheduling disciplines do not "
2051 "figure in this prioritization. Because scheduling of this "
2052 "type is always work conserving, the inherited boolean "
2053 "property, WorkConserving, is restricted to TRUE in this "
2054 "class.") ]
2055 class CIM_PrioritySchedulingElement : CIM_SchedulingElement {
2056
2057 [Override ("WorkConserving") ]
2058 boolean WorkConserving = TRUE;
2059 tony 1.1
2060 [Description (
2061 "A 16-bit unsigned integer indicating the priority level of "
2062 "this SchedulingElement's input, relative to the other "
2063 "inputs serviced by the SchedulingElement's aggregating "
2064 "PacketSchedulingService. A larger value represents a "
2065 "higher priority.") ]
2066 uint16 Priority;
2067 };
2068
2069
2070 // ==================================================================
2071 // BoundedPrioritySchedulingElement
2072 // ==================================================================
2073 [Version ("2.7.0"), Description (
2074 "This class is a subclass of the class PriorityScheduling "
2075 "Element, which is itself derived from the abstract class "
2076 "SchedulingElement. As is the case with all subclasses of "
2077 "SchedulingElement, the input associated with an instance of "
2078 "BoundedPrioritySchedulingElement is of one of two types: "
2079 "either a queue, or another scheduler. BoundedPriority "
2080 tony 1.1 "SchedulingElement adds an upper bound (BandwidthBound in "
2081 "kilobits per second) on how much traffic can be handled from "
2082 "an input. This data is specific to that one input. It is "
2083 "needed when bounded strict priority scheduling is performed. "
2084 "Note that this class inherits from its superclass the "
2085 "restriction of the inherited boolean property WorkConserving "
2086 "to TRUE.") ]
2087 class CIM_BoundedPrioritySchedulingElement : CIM_PrioritySchedulingElement {
2088
2089 [Override ("WorkConserving") ]
2090 boolean WorkConserving = TRUE;
2091
2092 [Description (
2093 "A 32-bit unsigned integer that defines the upper limit on "
2094 "the amount of traffic that can be handled from the input "
2095 "(through this SchedulingElement). This is not a shaped "
2096 "upper bound, since bursts can occur. It is a strict bound, "
2097 "limiting the impact of the input. Units are kilobits per "
2098 "second."),
2099 Units ("KiloBits per Second") ]
2100 uint32 BandwidthBound;
2101 tony 1.1 };
2102
2103
2104 // ==================================================================
2105 // QueueToSchedule
2106 // ==================================================================
2107 [Association, Version ("2.7.0"), Description (
2108 "This is a top-level association, representing the relationship "
2109 "between a queue (QueuingService) and a SchedulingElement. The "
2110 "SchedulingElement, in turn, represents the information in a "
2111 "packet scheduling service that is specific to this queue, such "
2112 "as relative priority or allocated bandwidth.\n"
2113 "\n"
2114 "Although it cannot be expressed formally with the association "
2115 "cardinalities, there is an additional constraint on "
2116 "participation in this association. A particular instance of "
2117 "(a subclass of) SchedulingElement always participates either "
2118 "in exactly one instance of this association, or in exactly one "
2119 "instance of the association SchedulingServiceToSchedule.") ]
2120 class CIM_QueueToSchedule {
2121
2122 tony 1.1 [Key, Max (1), Description (
2123 "The queue and its QueuingService from which packets are "
2124 "emptied.") ]
2125 CIM_QueuingService REF Queue;
2126
2127 [Key, Description (
2128 "The SchedulingElement for the input queue.") ]
2129 CIM_SchedulingElement REF SchedElement;
2130 };
2131
2132
2133 // ==================================================================
2134 // SchedulingServiceToSchedule
2135 // ==================================================================
2136 [Association, Version ("2.7.0"), Description (
2137 "This is a top-level association, representing the relationship "
2138 "between a scheduler (PacketSchedulingService) and a "
2139 "SchedulingElement, in a configuration involving cascaded "
2140 "schedulers. The SchedulingElement, in turn, represents the "
2141 "information in a packet scheduling service that is specific to "
2142 "this scheduler, such as relative priority or allocated bandwidth.\n"
2143 tony 1.1 "\n"
2144 "Although it cannot be expressed formally with the association "
2145 "cardinalities, there is an additional constraint on "
2146 "participation in this association. A particular instance of "
2147 "(a subclass of) SchedulingElement always participates either "
2148 "in exactly one instance of this association, or in exactly one "
2149 "instance of the association QueueToSchedule.") ]
2150 class CIM_SchedulingServiceToSchedule {
2151
2152 [Key, Max (1), Description (
2153 "The scheduler being cascaded.") ]
2154 CIM_PacketSchedulingService REF SchedService;
2155
2156 [Key, Description (
2157 "A SchedulingElement in the subsequent scheduler.") ]
2158 CIM_SchedulingElement REF SchedElement;
2159 };
2160
2161
2162 // ==================================================================
2163 // ElementInSchedulingService
2164 tony 1.1 // ==================================================================
2165 [Association, Aggregation, Composition, Version ("2.7.0"),
2166 Description (
2167 "This association represents the relationship between a "
2168 "PacketSchedulingService and the set of SchedulingElements that "
2169 "tie it to its inputs (either QueuingServices or other "
2170 "PacketSchedulingServices).") ]
2171 class CIM_ElementInSchedulingService : CIM_Component {
2172
2173 [Aggregate, Override ("GroupComponent"), Max (1), Description (
2174 "The scheduler aggregating the SchedulingElement. A "
2175 "SchedulingElement can be associated with at most one "
2176 "SchedulingService.") ]
2177 CIM_PacketSchedulingService REF GroupComponent;
2178
2179 [Override ("PartComponent"), Min (1), Description (
2180 "A SchedulingElement that ties either a queue or another "
2181 "scheduler to the referenced PacketSchedulingService. Every "
2182 "PacketSchedulingService MUST have at least one Scheduling "
2183 "Element/input.") ]
2184 CIM_SchedulingElement REF PartComponent;
2185 tony 1.1 };
2186
2187
2188 // ===================================================================
2189 // end of file
2190 // ===================================================================
|