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