(file) Return to Network28_QoS.mof CVS log (file) (dir) Up to [Pegasus] / pegasus / Schemas / CIM28

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2