mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 06:17:02 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH FQ 8 "10 Sept 2015" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| FQ \- Fair Queue traffic policing
 | |
| .SH SYNOPSIS
 | |
| .B tc qdisc ... fq
 | |
| [
 | |
| .B limit
 | |
| PACKETS ] [
 | |
| .B flow_limit
 | |
| PACKETS ] [
 | |
| .B quantum
 | |
| BYTES ] [
 | |
| .B initial_quantum
 | |
| BYTES ] [
 | |
| .B maxrate
 | |
| RATE ] [
 | |
| .B buckets
 | |
| NUMBER ]  [
 | |
| .B pacing
 | |
| |
 | |
| .B nopacing
 | |
| ]
 | |
| 
 | |
| .SH DESCRIPTION
 | |
| FQ (Fair Queue) is a classless packet scheduler meant to be mostly
 | |
| used for locally generated traffic.  It is designed to achieve per flow pacing.
 | |
| FQ does flow separation, and is able to respect pacing requirements set by TCP stack.
 | |
| All packets belonging to a socket are considered as a 'flow'.
 | |
| For non local packets (router workload), packet rxhash is used as fallback.
 | |
| 
 | |
| An application can specify a maximum pacing rate using the
 | |
| .B SO_MAX_PACING_RATE
 | |
| setsockopt call.  This packet scheduler adds delay between packets to
 | |
| respect rate limitation set by TCP stack.
 | |
| 
 | |
| Dequeueing happens in a round-robin fashion.
 | |
| A special FIFO queue is reserved for high priority packets (
 | |
| .B TC_PRIO_CONTROL
 | |
| priority), such packets are always dequeued first.
 | |
| 
 | |
| FQ is non-work-conserving.
 | |
| 
 | |
| TCP pacing is good for flows having idle times, as the congestion
 | |
| window permits TCP stack to queue a possibly large number of packets.
 | |
| This removes the 'slow start after idle' choice, badly hitting
 | |
| large BDP flows and applications delivering chunks of data such as video streams.
 | |
| 
 | |
| .SH PARAMETERS
 | |
| .SS limit
 | |
| Hard limit on the real queue size. When this limit is reached, new packets
 | |
| are dropped. If the value is lowered, packets are dropped so that the new limit is
 | |
| met. Default is 10000 packets.
 | |
| .SS flow_limit
 | |
| Hard limit on the maximum number of packets queued per flow.
 | |
| Default value is 100.
 | |
| .SS quantum
 | |
| The credit per dequeue RR round, i.e. the amount of bytes a flow is allowed to
 | |
| dequeue at once. A larger value means a longer time period before the next flow
 | |
| will be served.
 | |
| Default is 2 * interface MTU bytes.
 | |
| .SS initial_quantum
 | |
| The initial sending rate credit, i.e. the amount of bytes a new flow is allowed
 | |
| to dequeue initially.
 | |
| This is specifically meant to allow using IW10 without added delay.
 | |
| Default is 10 * interface MTU, i.e. 15140 for 'standard' ethernet.
 | |
| .SS maxrate
 | |
| Maximum sending rate of a flow.  Default is unlimited.
 | |
| Application specific setting via
 | |
| .B SO_MAX_PACING_RATE
 | |
| is ignored only if it is larger than this value.
 | |
| .SS buckets
 | |
| The size of the hash table used for flow lookups. Each bucket is assigned a
 | |
| red-black tree for efficient collision sorting.
 | |
| Default: 1024.
 | |
| .SS [no]pacing
 | |
| Enable or disable flow pacing. Default is enabled.
 | |
| .SH EXAMPLES
 | |
| #tc qdisc add dev eth0 root fq
 | |
| .br
 | |
| #tc -s -d qdisc
 | |
| .br
 | |
| qdisc fq 8003: dev eth0 root refcnt 2 limit 10000p flow_limit 100p buckets 1024 quantum 3028 initial_quantum 15140
 | |
|  Sent 503727981 bytes 1146972 pkt (dropped 0, overlimits 0 requeues 54452)
 | |
|  backlog 0b 0p requeues 54452
 | |
|   1289 flows (1289 inactive, 0 throttled)
 | |
|   0 gc, 31 highprio, 27411 throttled
 | |
| .br
 | |
| .SH SEE ALSO
 | |
| .BR tc (8),
 | |
| .BR socket (7)
 | |
| .SH AUTHORS
 | |
| FQ was written by Eric Dumazet.
 | 
