Back to main site | Back to man page index

SFB(8)                                                  Linux                                                  SFB(8)



NAME
       sfb - Stochastic Fair Blue

SYNOPSIS
       tc qdisc ... blue rehash milliseconds db milliseconds limit packets max packets target packets increment float
       decrement float penalty_rate packets per second penalty_burst packets


DESCRIPTION
       Stochastic Fair Blue is a classless qdisc to manage congestion based on packet loss and link utilization  his‐
       tory  while  trying  to  prevent  non-responsive  flows (i.e. flows that do not react to congestion marking or
       dropped packets) from impacting performance of responsive flows.  Unlike RED, where  the  marking  probability
       has to be configured, BLUE tries to determine the ideal marking probability automatically.


ALGORITHM
       The BLUE algorithm maintains a probability which is used to mark or drop packets that are to be queued. If the
       queue overflows, the mark/drop probability is increased. If  the  queue  becomes  empty,  the  probability  is
       decreased.  The  Stochastic  Fair Blue (SFB) algorithm is designed to protect TCP flows against non-responsive
       flows.

       This SFB implementation maintains 8 levels of 16 bins each for accounting.  Each flow is mapped into a bin  of
       each level using a per-level hash value.

       Every  bin  maintains  a marking probability, which gets increased or decreased based on bin occupancy. If the
       number of packets exceeds the size of that bin, the marking probability is increased. If the number  drops  to
       zero, it is decreased.

       The  marking  probability  is  based on the minimum value of all bins a flow is mapped into, thus, when a flow
       does not respond to marking or gradual packet drops, the marking probability quickly reaches one.

       In this case, the flow is rate-limited to penalty_rate packets per second.


LIMITATIONS
       Due to SFBs nature, it is possible for responsive flows to share all of its bins with a  non-responsive  flow,
       causing the responsive flow to be misidentified as being non-responsive.

       The  probability  of a responsive flow to be misidentified is dependent on the number of non-responsive flows,
       M. It is (1 - (1 - (1 / 16.0)) ** M) **8, so for example with 10 non-responsive flows  approximately  0.2%  of
       responsive flows will be misidentified.

       To  mitigate  this, SFB performs performs periodic re-hashing to avoid misclassification for prolonged periods
       of time.

       The default hashing method will use source and destination ip addresses and port numbers if possible, and also
       supports tunneling protocols.  Alternatively, an external classifier can be configured, too.


PARAMETERS
       rehash Time  interval in milliseconds when queue perturbation occurs to avoid erroneously detecting unrelated,
              responsive flows as being part of a non-responsive flow for prolonged periods of time.  Defaults to  10
              minutes.

       db     Double  buffering  warmup wait time, in milliseconds.  To avoid destroying the probability history when
              rehashing is performed, this implementation maintains a second set of levels/bins as described in  sec‐

       target The desired average bin length. If the bin queue length reaches this value, the marking probability  is
              increased  by  increment.  The default value depends on the max setting, with max set to 25 target will
              default to 20.

       increment
              A value used to increase the marking probability when the  queue  appears  to  be  over-used.  Must  be
              between 0 and 1.0. Defaults to 0.00050.

       decrement
              Value  used  to decrease the marking probability when the queue is found to be empty. Must be between 0
              and 1.0.  Defaults to 0.00005.

       penalty_rate
              The maximum number of packets belonging to  flows  identified  as  being  non-responsive  that  can  be
              enqueued  per  second.  Once this number has been reached, further packets of such non-responsive flows
              are dropped.  Set this to a reasonable fraction of your uplink throughput;  the  default  value  of  10
              packets is probably too small.

       penalty_burst
              The  number  of  packets  a  flow  is  permitted  to exceed the penalty rate before packets start being
              dropped.  Defaults to 20 packets.


STATISTICS
       This qdisc exposes additional statistics via 'tc -s qdisc' output.  These are:

       earlydrop
              The number of packets dropped before a per-flow queue was full.

       ratedrop
              The number of packets dropped because of rate-limiting.  If this value is high,  there  are  many  non-
              reactive flows being sent through sfb. In such cases, it might be better to embed sfb within a classful
              qdisc to better control such flows using a different, shaping qdisc.

       bucketdrop
              The number of packets dropped because a per-flow queue was full.  High bucketdrop may point to  a  high
              number of aggressive, short-lived flows.

       queuedrop
              The number of packets dropped due to reaching limit. This should normally be 0.

       marked The number of packets marked with ECN.

       maxqlen
              The length of the current longest per-flow (virtual) queue.

       maxprob
              The maximum per-flow drop probability. 1 means that some flows have been detected as non-reactive.


NOTES
       SFB  automatically  enables use of Explicit Congestion Notification (ECN).  Also, this SFB implementation does
       not queue packets itself.  Rather, packets are enqueued to the inner qdisc (defaults to pfifo).   Because  sfb
       # tc filter add dev $DEV parent 1: handle 1 flow hash keys dst perturb 600


SEE ALSO
       tc(8), tc-red(8), tc-sfq(8)

SOURCES
       o      W.  Feng,  D.  Kandlur,  D.  Saha, K. Shin, BLUE: A New Class of Active Queue Management Algorithms, U.
              Michigan CSE-TR-387-99, April 1999.


AUTHORS
       This SFB implementation was contributed by Juliusz Chroboczek and Eric Dumazet.



iproute2                                             August 2011                                               SFB(8)