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

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

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2