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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2