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>
		
	
			
		
			
				
	
	
		
			144 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH TC 8 "13 December 2001" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| tbf \- Token Bucket Filter
 | |
| .SH SYNOPSIS
 | |
| .B tc qdisc ... tbf rate
 | |
| rate
 | |
| .B burst
 | |
| bytes/cell
 | |
| .B ( latency 
 | |
| ms 
 | |
| .B | limit
 | |
| bytes
 | |
| .B ) [ mpu 
 | |
| bytes
 | |
| .B [ peakrate
 | |
| rate
 | |
| .B mtu
 | |
| bytes/cell
 | |
| .B ] ]
 | |
| .P
 | |
| burst is also known as buffer and maxburst. mtu is also known as minburst.
 | |
| .SH DESCRIPTION
 | |
| 
 | |
| The Token Bucket Filter is a classful queueing discipline available for
 | |
| traffic control with the 
 | |
| .BR tc (8)
 | |
| command.
 | |
| 
 | |
| TBF is a pure shaper and never schedules traffic. It is non-work-conserving and may throttle
 | |
| itself, although packets are available, to ensure that the configured rate is not exceeded. 
 | |
| It is able to shape up to 1mbit/s of normal traffic with ideal minimal burstiness, 
 | |
| sending out data exactly at the configured rates.
 | |
| 
 | |
| Much higher rates are possible but at the cost of losing the minimal burstiness. In that
 | |
| case, data is on average dequeued at the configured rate but may be sent much faster at millisecond 
 | |
| timescales. Because of further queues living in network adaptors, this is often not a problem.
 | |
| 
 | |
| .SH ALGORITHM
 | |
| As the name implies, traffic is filtered based on the expenditure of 
 | |
| .B tokens.
 | |
| Tokens roughly correspond to bytes, with the additional constraint
 | |
| that each packet consumes some tokens, no matter how small it is. This
 | |
| reflects the fact that even a zero-sized packet occupies the link for
 | |
| some time.
 | |
| 
 | |
| On creation, the TBF is stocked with tokens which correspond to the amount of traffic that can be burst 
 | |
| in one go. Tokens arrive at a steady rate, until the bucket is full.
 | |
| 
 | |
| If no tokens are available, packets are queued, up to a configured limit. The TBF now 
 | |
| calculates the token deficit, and throttles until the first packet in the queue can be sent.
 | |
| 
 | |
| If it is not acceptable to burst out packets at maximum speed, a peakrate can be configured 
 | |
| to limit the speed at which the bucket empties. This peakrate is implemented as a second TBF
 | |
| with a very small bucket, so that it doesn't burst.
 | |
| 
 | |
| To achieve perfection, the second bucket may contain only a single packet, which leads to 
 | |
| the earlier mentioned 1mbit/s limit. 
 | |
| 
 | |
| This limit is caused by the fact that the kernel can only throttle for at minimum 1 'jiffy', which depends
 | |
| on HZ as 1/HZ. For perfect shaping, only a single packet can get sent per jiffy - for HZ=100, this means 100 
 | |
| packets of on average 1000 bytes each, which roughly corresponds to 1mbit/s.
 | |
| 
 | |
| .SH PARAMETERS
 | |
| See 
 | |
| .BR tc (8)
 | |
| for how to specify the units of these values.
 | |
| .TP
 | |
| limit or latency
 | |
| Limit is the number of bytes that can be queued waiting for tokens to become
 | |
| available. You can also specify this the other way around by setting the
 | |
| latency parameter, which specifies the maximum amount of time a packet can
 | |
| sit in the TBF. The latter calculation takes into account the size of the
 | |
| bucket, the rate and possibly the peakrate (if set). These two parameters
 | |
| are mutually exclusive. 
 | |
| .TP
 | |
| burst
 | |
| Also known as buffer or maxburst.
 | |
| Size of the bucket, in bytes. This is the maximum amount of bytes that tokens can be available for instantaneously. 
 | |
| In general, larger shaping rates require a larger buffer. For 10mbit/s on Intel, you need at least 10kbyte buffer 
 | |
| if you want to reach your configured rate!
 | |
| 
 | |
| If your buffer is too small, packets may be dropped because more tokens arrive per timer tick than fit in your bucket.
 | |
| The minimum buffer size can be calculated by dividing the rate by HZ.
 | |
| 
 | |
| Token usage calculations are performed using a table which by default has a resolution of 8 packets. 
 | |
| This resolution can be changed by specifying the 
 | |
| .B cell
 | |
| size with the burst. For example, to specify a 6000 byte buffer with a 16
 | |
| byte cell size, set a burst of 6000/16. You will probably never have to set
 | |
| this. Must be an integral power of 2.
 | |
| .TP
 | |
| mpu
 | |
| A zero-sized packet does not use zero bandwidth. For ethernet, no packet uses less than 64 bytes. The Minimum Packet Unit 
 | |
| determines the minimal token usage (specified in bytes) for a packet. Defaults to zero.
 | |
| .TP
 | |
| rate
 | |
| The speed knob. See remarks above about limits! See 
 | |
| .BR tc (8)
 | |
| for units.
 | |
| .PP
 | |
| Furthermore, if a peakrate is desired, the following parameters are available:
 | |
| 
 | |
| .TP
 | |
| peakrate
 | |
| Maximum depletion rate of the bucket. The peakrate does not
 | |
| need to be set, it is only necessary if perfect millisecond timescale
 | |
| shaping is required.
 | |
| 
 | |
| .TP
 | |
| mtu/minburst
 | |
| Specifies the size of the peakrate bucket. For perfect accuracy, should be set to the MTU of the interface.
 | |
| If a peakrate is needed, but some burstiness is acceptable, this size can be raised. A 3000 byte minburst
 | |
| allows around 3mbit/s of peakrate, given 1000 byte packets.
 | |
| 
 | |
| Like the regular burstsize you can also specify a 
 | |
| .B cell
 | |
| size.
 | |
| .SH EXAMPLE & USAGE
 | |
| 
 | |
| To attach a TBF with a sustained maximum rate of 0.5mbit/s, a peakrate of 1.0mbit/s,
 | |
| a 5kilobyte buffer, with a pre-bucket queue size limit calculated so the TBF causes
 | |
| at most 70ms of latency, with perfect peakrate behaviour, issue:
 | |
| .P
 | |
| # tc qdisc add dev eth0 handle 10: root tbf rate 0.5mbit \\
 | |
|   burst 5kb latency 70ms peakrate 1mbit       \\
 | |
|   minburst 1540
 | |
| .P
 | |
| To attach an inner qdisc, for example sfq, issue:
 | |
| .P
 | |
| # tc qdisc add dev eth0 parent 10:1 handle 100: sfq
 | |
| .P
 | |
| Without inner qdisc TBF queue acts as bfifo. If the inner qdisc is changed
 | |
| the limit/latency is not effective anymore.
 | |
| .P
 | |
| 
 | |
| .SH SEE ALSO
 | |
| .BR tc (8)
 | |
| 
 | |
| .SH AUTHOR
 | |
| Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>. This manpage maintained by
 | |
| bert hubert <ahu@ds9a.nl>
 | |
| 
 | |
| 
 |