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