mirror of
				https://git.proxmox.com/git/mirror_iproute2
				synced 2025-10-31 14:01:31 +00:00 
			
		
		
		
	 8c8a9089ba
			
		
	
	
		8c8a9089ba
		
	
	
	
	
		
			
			Parameter priomap use blank instead of comma to separate bands, update manpage to confirms to this.
		
			
				
	
	
		
			188 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .TH PRIO 8 "16 December 2001" "iproute2" "Linux"
 | |
| .SH NAME
 | |
| PRIO \- Priority qdisc
 | |
| .SH SYNOPSIS
 | |
| .B tc qdisc ... dev
 | |
| dev
 | |
| .B  ( parent
 | |
| classid 
 | |
| .B | root) [ handle 
 | |
| major: 
 | |
| .B ] prio [ bands 
 | |
| bands
 | |
| .B ] [ priomap
 | |
| band band band...
 | |
| .B ] [ estimator 
 | |
| interval timeconstant
 | |
| .B ]
 | |
| 
 | |
| .SH DESCRIPTION
 | |
| The PRIO qdisc is a simple classful queueing discipline that contains
 | |
| an arbitrary number of classes of differing priority. The classes are
 | |
| dequeued in numerical descending order of priority. PRIO is a scheduler 
 | |
| and never delays packets - it is a work-conserving qdisc, though the qdiscs
 | |
| contained in the classes may not be.
 | |
| 
 | |
| Very useful for lowering latency when there is no need for slowing down
 | |
| traffic.
 | |
| 
 | |
| .SH ALGORITHM
 | |
| On creation with 'tc qdisc add', a fixed number of bands is created. Each
 | |
| band is a class, although is not possible to add classes with 'tc qdisc
 | |
| add', the number of bands to be created must instead be specified on the
 | |
| command line attaching PRIO to its root.
 | |
| 
 | |
| When dequeueing, band 0 is tried first and only if it did not deliver a
 | |
| packet does PRIO try band 1, and so onwards. Maximum reliability packets
 | |
| should therefore go to band 0, minimum delay to band 1 and the rest to band
 | |
| 2.
 | |
| 
 | |
| As the PRIO qdisc itself will have minor number 0, band 0 is actually
 | |
| major:1, band 1 is major:2, etc. For major, substitute the major number
 | |
| assigned to the qdisc on 'tc qdisc add' with the
 | |
| .B handle
 | |
| parameter.
 | |
| 
 | |
| .SH CLASSIFICATION
 | |
| Three methods are available to PRIO to determine in which band a packet will
 | |
| be enqueued.
 | |
| .TP
 | |
| From userspace
 | |
| A process with sufficient privileges can encode the destination class
 | |
| directly with SO_PRIORITY, see
 | |
| .BR socket(7).
 | |
| .TP 
 | |
| with a tc filter
 | |
| A tc filter attached to the root qdisc can point traffic directly to a class
 | |
| .TP 
 | |
| with the priomap
 | |
| Based on the packet priority, which in turn is derived from the Type of
 | |
| Service assigned to the packet.
 | |
| .P
 | |
| Only the priomap is specific to this qdisc. 
 | |
| .SH QDISC PARAMETERS
 | |
| .TP
 | |
| bands
 | |
| Number of bands. If changed from the default of 3,
 | |
| .B priomap
 | |
| must be updated as well.
 | |
| .TP 
 | |
| priomap
 | |
| The priomap maps the priority of
 | |
| a packet to a class. The priority can either be set directly from userspace,
 | |
| or be derived from the Type of Service of the packet.
 | |
| 
 | |
| Determines how packet priorities, as assigned by the kernel, map to
 | |
| bands. Mapping occurs based on the TOS octet of the packet, which looks like
 | |
| this:
 | |
| 
 | |
| .nf
 | |
| 0   1   2   3   4   5   6   7
 | |
| +---+---+---+---+---+---+---+---+
 | |
| |           |               |   |
 | |
| |PRECEDENCE |      TOS      |MBZ|
 | |
| |           |               |   |
 | |
| +---+---+---+---+---+---+---+---+
 | |
| .fi
 | |
| 
 | |
| The four TOS bits (the 'TOS field') are defined as:
 | |
| 
 | |
| .nf
 | |
| Binary Decimal  Meaning
 | |
| -----------------------------------------
 | |
| 1000   8         Minimize delay (md)
 | |
| 0100   4         Maximize throughput (mt)
 | |
| 0010   2         Maximize reliability (mr)
 | |
| 0001   1         Minimize monetary cost (mmc)
 | |
| 0000   0         Normal Service
 | |
| .fi
 | |
| 
 | |
| As there is 1 bit to the right of these four bits, the actual value of the
 | |
| TOS field is double the value of the TOS bits. Tcpdump -v -v shows you the
 | |
| value of the entire TOS field, not just the four bits. It is the value you
 | |
| see in the first column of this table:
 | |
| 
 | |
| .nf
 | |
| TOS     Bits  Means                    Linux Priority    Band
 | |
| ------------------------------------------------------------
 | |
| 0x0     0     Normal Service           0 Best Effort     1
 | |
| 0x2     1     Minimize Monetary Cost   1 Filler          2
 | |
| 0x4     2     Maximize Reliability     0 Best Effort     1
 | |
| 0x6     3     mmc+mr                   0 Best Effort     1
 | |
| 0x8     4     Maximize Throughput      2 Bulk            2
 | |
| 0xa     5     mmc+mt                   2 Bulk            2
 | |
| 0xc     6     mr+mt                    2 Bulk            2
 | |
| 0xe     7     mmc+mr+mt                2 Bulk            2
 | |
| 0x10    8     Minimize Delay           6 Interactive     0
 | |
| 0x12    9     mmc+md                   6 Interactive     0
 | |
| 0x14    10    mr+md                    6 Interactive     0
 | |
| 0x16    11    mmc+mr+md                6 Interactive     0
 | |
| 0x18    12    mt+md                    4 Int. Bulk       1
 | |
| 0x1a    13    mmc+mt+md                4 Int. Bulk       1
 | |
| 0x1c    14    mr+mt+md                 4 Int. Bulk       1
 | |
| 0x1e    15    mmc+mr+mt+md             4 Int. Bulk       1
 | |
| .fi
 | |
| 
 | |
| The second column contains the value of the relevant
 | |
| four TOS bits, followed by their translated meaning. For example, 15 stands
 | |
| for a packet wanting Minimal Monetary Cost, Maximum Reliability, Maximum
 | |
| Throughput AND Minimum Delay. 
 | |
| 
 | |
| The fourth column lists the way the Linux kernel interprets the TOS bits, by
 | |
| showing to which Priority they are mapped.
 | |
| 
 | |
| The last column shows the result of the default priomap. On the command line,
 | |
| the default priomap looks like this:
 | |
| 
 | |
|     1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
 | |
| 
 | |
| This means that priority 4, for example, gets mapped to band number 1.
 | |
| The priomap also allows you to list higher priorities (> 7) which do not
 | |
| correspond to TOS mappings, but which are set by other means.
 | |
| 
 | |
| This table from RFC 1349 (read it for more details) explains how
 | |
| applications might very well set their TOS bits:
 | |
| 
 | |
| .nf
 | |
| TELNET                   1000           (minimize delay)
 | |
| FTP
 | |
|         Control          1000           (minimize delay)
 | |
|         Data             0100           (maximize throughput)
 | |
| 
 | |
| TFTP                     1000           (minimize delay)
 | |
| 
 | |
| SMTP 
 | |
|         Command phase    1000           (minimize delay)
 | |
|         DATA phase       0100           (maximize throughput)
 | |
| 
 | |
| Domain Name Service
 | |
|         UDP Query        1000           (minimize delay)
 | |
|         TCP Query        0000
 | |
|         Zone Transfer    0100           (maximize throughput)
 | |
| 
 | |
| NNTP                     0001           (minimize monetary cost)
 | |
| 
 | |
| ICMP
 | |
|         Errors           0000
 | |
|         Requests         0000 (mostly)
 | |
|         Responses        <same as request> (mostly)
 | |
| .fi
 | |
| 
 | |
| 
 | |
| .SH CLASSES
 | |
| PRIO classes cannot be configured further - they are automatically created
 | |
| when the PRIO qdisc is attached. Each class however can contain yet a
 | |
| further qdisc.
 | |
| 
 | |
| .SH BUGS
 | |
| Large amounts of traffic in the lower bands can cause starvation of higher
 | |
| bands. Can be prevented by attaching a shaper (for example, 
 | |
| .BR tc-tbf(8)
 | |
| to these bands to make sure they cannot dominate the link.
 | |
| 
 | |
| .SH AUTHORS
 | |
| Alexey N. Kuznetsov, <kuznet@ms2.inr.ac.ru>,  J Hadi Salim
 | |
| <hadi@cyberus.ca>. This manpage maintained by bert hubert <ahu@ds9a.nl>
 | |
| 
 | |
| 
 |