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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2