// Copyright (c) 2005 DMTF.  All rights reserved.
// <change cr="ArchCR00066.004" type="add">Add UmlPackagePath
// qualifier values to CIM Schema.</change>
// ==================================================================
//  CIM_REDDropperService
// ==================================================================
   [UMLPackagePath ( "CIM::Network::QoS" ), Version ( "2.7.0" ), 
    Description (
       "REDDropperService represents the ability to drop network "
       "traffic using a Random Early Detection (RED) algorithm. The "
       "purpose of a RED algorithm is to avoid congestion (as opposed "
       "to managing congestion). Instead of waiting for the queues to "
       "fill up, and then dropping large numbers of packets, RED works "
       "by monitoring average queue depth. When the queue depth "
       "exceeds a minimum threshold, packets are randomly discarded. "
       "These discards cause TCP to slow its transmission rate for "
       "those connections that experienced the packet discards. Other "
       "connections are not affected by these discards. \n"
       "\n"
       "A RED dropper always drops packets from a single queue, which "
       "is related to the dropper as the following Service in the "
       "NextService association. The queue(s) examined by the drop "
       "algorithm are found by following the "
       "CalculationServiceForDropper association(s) to determine the "
       "dropper's DropThresholdCalculationService(s), and then "
       "following the CalculationBasedOnQueue association to find the "
       "queue being watched by each CalculationService.")]
class CIM_REDDropperService : CIM_DropperService {

      [Description (
          "This is an unsigned 32-bit integer that defines the minimum "
          "average queue depth at which packets are subject to being "
          "dropped. (See the ThresholdUnits property to determine the "
          "units of the threshold.) The slope of the drop probability "
          "function is described by the Start/StopProbability "
          "properties."), 
       ModelCorrespondence { "CIM_REDDropperService.ThresholdUnits" }]
   uint32 MinQueueThreshold;

      [Description (
          "This is an unsigned 32-bit integer that defines the maximum "
          "average queue length at which packets are subject to always "
          "being dropped, regardless of the dropping algorithm and "
          "probabilities being used. (See the ThresholdUnits property "
          "to determine the units of the threshold.)"), 
       MinValue ( 0 ), MaxValue ( 1000 ), 
       ModelCorrespondence { "CIM_REDDropperService.ThresholdUnits" }]
   uint32 MaxQueueThreshold;

      [Description (
          "This is an unsigned 32-bit integer, used in conjunction "
          "with the StopDropProbability property. The start and stop "
          "probabilities define the slope of the drop probability "
          "function. This function governs the rate at which packets "
          "are subject to being dropped, as a function of the queue "
          "length. \n"
          "\n"
          "This property expresses a drop probability in drops per "
          "thousand packets. For example, the value 100 indicates a "
          "drop probability of 100 per 1000 packets, that is, 10%. Min "
          "and max values are 0 to 1000."), 
       Units ( "Per Thousand Packets" ), 
       ModelCorrespondence { "CIM_REDDropperService.StopProbability" }]
   uint32 StartProbability;

      [Description (
          "This is an unsigned 32-bit integer, used in conjunction "
          "with the StartDropProbability property. The start and stop "
          "probabilities define the slope of the drop probability "
          "function. This function governs the rate at which packets "
          "are subject to being dropped, as a function of the queue "
          "length. \n"
          "\n"
          "This property expresses a drop probability in drops per "
          "thousand packets. For example, the value 100 indicates a "
          "drop probability of 100 per 1000 packets, that is, 10%. Min "
          "and max values are 0 to 1000."), 
       Units ( "Per Thousand Packets" ), MinValue ( 0 ),
       MaxValue ( 1000 ), 
       ModelCorrespondence { "CIM_REDDropperService.StartProbability" }]
   uint32 StopProbability;

      [Description (
          "ThresholdUnits is an enumerated integer that identifies the "
          "units for the Min and MaxQueueThreshold properties. The "
          "values are either bytes (1) or packets (2)."), 
       ValueMap { "1", "2" }, 
       Values { "Bytes", "Packets" }]
   uint16 ThresholdUnits;
};
