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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2