mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 02:59:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH TC 8 "January 2010" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| drr \- deficit round robin scheduler
 | |
| .SH SYNOPSIS
 | |
| .B tc qdisc ... add drr
 | |
| .B [ quantum
 | |
| bytes
 | |
| .B ]
 | |
| 
 | |
| .SH DESCRIPTION
 | |
| 
 | |
| The Deficit Round Robin Scheduler is a classful queuing discipline as
 | |
| a more flexible replacement for Stochastic Fairness Queuing.
 | |
| 
 | |
| Unlike SFQ, there are no built-in queues \-\- you need to add classes
 | |
| and then set up filters to classify packets accordingly.
 | |
| This can be useful e.g. for using RED qdiscs with different settings for particular
 | |
| traffic. There is no default class \-\- if a packet cannot be classified,
 | |
| it is dropped.
 | |
| 
 | |
| .SH ALGORITHM
 | |
| Each class is assigned a deficit counter, initialized to
 | |
| .B quantum.
 | |
| 
 | |
| DRR maintains an (internal) ''active'' list of classes whose qdiscs are
 | |
| non-empty.  This list is used for dequeuing.  A packet is dequeued from
 | |
| the class at the head of the list if the packet size is smaller or equal
 | |
| to the deficit counter.  If the counter is too small, it is increased by
 | |
| .B quantum
 | |
| and the scheduler moves on to the next class in the active list.
 | |
| 
 | |
| 
 | |
| .SH PARAMETERS
 | |
| .TP
 | |
| quantum
 | |
| Amount of bytes a flow is allowed to dequeue before the scheduler moves to
 | |
| the next class.  Defaults to the MTU of the interface. The minimum value is 1.
 | |
| 
 | |
| .SH EXAMPLE & USAGE
 | |
| 
 | |
| To attach to device eth0, using the interface MTU as its quantum:
 | |
| .P
 | |
| # tc qdisc add dev eth0 handle 1 root drr
 | |
| .P
 | |
| Adding two classes:
 | |
| .P
 | |
| # tc class add dev eth0 parent 1: classid 1:1 drr
 | |
| # tc class add dev eth0 parent 1: classid 1:2 drr
 | |
| .P
 | |
| You also need to add at least one filter to classify packets.
 | |
| .P
 | |
| # tc filter add dev eth0 protocol .. classid 1:1
 | |
| .P
 | |
| 
 | |
| Like SFQ, DRR is only useful when it owns the queue \-\- it is a pure scheduler and does
 | |
| not delay packets.  Attaching non-work-conserving qdiscs like tbf to it does not make
 | |
| sense \-\- other qdiscs in the active list will also become inactive until the dequeue
 | |
| operation succeeds.  Embed DRR within another qdisc like HTB or HFSC to ensure it owns the queue.
 | |
| .P
 | |
| You can mimic SFQ behavior by assigning packets to the attached classes using the
 | |
| flow filter:
 | |
| 
 | |
| .B tc qdisc add dev .. drr
 | |
| 
 | |
| .B for i in .. 1024;do
 | |
| .br
 | |
| .B \ttc class add dev ..  classid $handle:$(print %x $i)
 | |
| .br
 | |
| .B \ttc qdisc add dev .. fifo limit 16
 | |
| .br
 | |
| .B done
 | |
| 
 | |
| .B tc filter add .. protocol ip .. $handle flow hash keys src,dst,proto,proto-src,proto-dst divisor 1024 perturb 10
 | |
| 
 | |
| 
 | |
| .SH SOURCE
 | |
| .TP
 | |
| o
 | |
| M. Shreedhar and George Varghese "Efficient Fair
 | |
| Queuing using Deficit Round Robin", Proc. SIGCOMM 95.
 | |
| 
 | |
| .SH NOTES
 | |
| 
 | |
| This implementation does not drop packets from the longest queue on overrun,
 | |
| as limits are handled by the individual child qdiscs.
 | |
| 
 | |
| .SH SEE ALSO
 | |
| .BR tc (8),
 | |
| .BR tc-htb (8),
 | |
| .BR tc-sfq (8)
 | |
| 
 | |
| .SH AUTHOR
 | |
| sched_drr was written by Patrick McHardy.
 | |
| 
 | 
