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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2