mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 17:20:08 +00:00 
			
		
		
		
	 a89d5329d4
			
		
	
	
		a89d5329d4
		
	
	
	
	
		
			
			Result of the following command:
    sed -ri 's/\.  /. /g' man/*/*
Signed-Off-By: Pavel Šimerda <psimerda@redhat.com>
		
	
			
		
			
				
	
	
		
			214 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH SFB 8 "August 2011" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| sfb \- Stochastic Fair Blue
 | |
| .SH SYNOPSIS
 | |
| .B tc qdisc ... blue
 | |
| .B rehash
 | |
| milliseconds
 | |
| .B db
 | |
| milliseconds
 | |
| .B limit
 | |
| packets
 | |
| .B max
 | |
| packets
 | |
| .B target
 | |
| packets
 | |
| .B increment
 | |
| float
 | |
| .B decrement
 | |
| float
 | |
| .B penalty_rate
 | |
| packets per second
 | |
| .B penalty_burst
 | |
| packets
 | |
| 
 | |
| .SH DESCRIPTION
 | |
| Stochastic Fair Blue is a classless qdisc to manage congestion based on
 | |
| packet loss and link utilization history 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.
 | |
| 
 | |
| .SH ALGORITHM
 | |
| 
 | |
| The
 | |
| .B 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
 | |
| .B 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
 | |
| .B penalty_rate
 | |
| packets per second.
 | |
| 
 | |
| .SH 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.
 | |
| 
 | |
| .SH PARAMETERS
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| 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 section
 | |
| 4.4 of the SFB reference.
 | |
| While one set is used to manage the queue, a second set is warmed up:
 | |
| Whenever a flow is then determined to be non-responsive, the marking
 | |
| probabilities in the second set are updated. When the rehashing
 | |
| happens, these bins will be used to manage the queue and all non-responsive
 | |
| flows can be rate-limited immediately.
 | |
| This value determines how much time has to pass before the 2nd set
 | |
| will start to be warmed up.
 | |
| Defaults to one minute, should be lower than
 | |
| .B
 | |
| rehash.
 | |
| .TP
 | |
| limit
 | |
| Hard limit on the real (not average) total queue size in packets.
 | |
| Further packets are dropped. Defaults to the transmit queue length of the
 | |
| device the qdisc is attached to.
 | |
| .TP
 | |
| max
 | |
| Maximum length of a buckets queue, in packets, before packets start being
 | |
| dropped. Should be sightly larger than
 | |
| .B target
 | |
| , but should not be set to values exceeding 1.5 times that of
 | |
| .B target .
 | |
| Defaults to 25.
 | |
| .TP
 | |
| target
 | |
| The desired average bin length. If the bin queue length reaches this value,
 | |
| the marking probability is increased by
 | |
| .B increment.
 | |
| The default value depends on the
 | |
| .B max
 | |
| setting, with max set to 25
 | |
| .B target
 | |
| will default to 20.
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| penalty_burst
 | |
| The number of packets a flow is permitted to exceed the penalty rate before packets
 | |
| start being dropped.
 | |
| Defaults to 20 packets.
 | |
| 
 | |
| .SH STATISTICS
 | |
| 
 | |
| This qdisc exposes additional statistics via 'tc -s qdisc' output.
 | |
| These are:
 | |
| .TP
 | |
| earlydrop
 | |
| The number of packets dropped before a per-flow queue was full.
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| 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.
 | |
| .TP
 | |
| queuedrop
 | |
| The number of packets dropped due to reaching limit. This should normally be 0.
 | |
| .TP
 | |
| marked
 | |
| The number of packets marked with ECN.
 | |
| .TP
 | |
| maxqlen
 | |
| The length of the current longest per-flow (virtual) queue.
 | |
| .TP
 | |
| maxprob
 | |
| The maximum per-flow drop probability. 1 means that some
 | |
| flows have been detected as non-reactive.
 | |
| 
 | |
| .SH 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 maintains virtual queue states, the inner qdisc must not
 | |
| drop a packet previously queued.
 | |
| Furthermore, if a buckets queue has a very high marking rate,
 | |
| this implementation will start dropping packets instead of
 | |
| marking them, as such a situation points to either bad congestion, or an
 | |
| unresponsive flow.
 | |
| 
 | |
| .SH EXAMPLE & USAGE
 | |
| 
 | |
| To attach to interface $DEV, using default options:
 | |
| .P
 | |
| # tc qdisc add dev $DEV handle 1: root sfb
 | |
| 
 | |
| Only use destination ip addresses for assigning packets to bins, perturbing
 | |
| hash results every 10 minutes:
 | |
| .P
 | |
| # tc filter add dev $DEV parent 1: handle 1 flow hash keys dst perturb 600
 | |
| 
 | |
| .SH SEE ALSO
 | |
| .BR tc (8),
 | |
| .BR tc-red (8),
 | |
| .BR tc-sfq (8)
 | |
| .SH SOURCES
 | |
| .TP
 | |
| 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.
 | |
| 
 | |
| .SH AUTHORS
 | |
| 
 | |
| This SFB implementation was contributed by Juliusz Chroboczek and Eric Dumazet.
 |