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