tc(8): Negative indent and missing "-" after an escape
<groff: tc.8>:51: warning: total indent cannot be negative <groff: tc.8>:57: warning: escape character ignored before `i' ********************* Space at end of line removed General considerations a) Manuals should usually only be left justified. Use ".ad l" as the first regular command. b) Each sentence should begin on a new line. The conventions about the amount of space between sentences are different. This also makes a check on the number of space characters between words easier. c) Separate numbers from units with a (no-break) space. A no-break space can be code 0xA0, "\ " (\<space>), or "\~" (groff). d) Use macros "TS/TE" for tables with more than two columns. Then use '\" t as the first line in the source to tell "man" to use the "tbl" preprocessor. e) Protect last period (full stop) in abbreviations with "\&", if it is or might be (through new formatting of source) at the end of line, if it is also not an end of sentence. ********************* Originally filed at: http://bugs.debian.org/674704 Signed-off-by: Andreas Henriksson <andreas@fatal.se>
This commit is contained in:
parent
6fdd09d6a5
commit
7c34520bf5
178
man/man8/tc.8
178
man/man8/tc.8
|
|
@ -2,22 +2,22 @@
|
||||||
.SH NAME
|
.SH NAME
|
||||||
tc \- show / manipulate traffic control settings
|
tc \- show / manipulate traffic control settings
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B tc qdisc [ add | change | replace | link ] dev
|
.B tc qdisc [ add | change | replace | link ] dev
|
||||||
DEV
|
DEV
|
||||||
.B
|
.B
|
||||||
[ parent
|
[ parent
|
||||||
qdisc-id
|
qdisc-id
|
||||||
.B | root ]
|
.B | root ]
|
||||||
.B [ handle
|
.B [ handle
|
||||||
qdisc-id ] qdisc
|
qdisc-id ] qdisc
|
||||||
[ qdisc specific parameters ]
|
[ qdisc specific parameters ]
|
||||||
.P
|
.P
|
||||||
|
|
||||||
.B tc class [ add | change | replace ] dev
|
.B tc class [ add | change | replace ] dev
|
||||||
DEV
|
DEV
|
||||||
.B parent
|
.B parent
|
||||||
qdisc-id
|
qdisc-id
|
||||||
.B [ classid
|
.B [ classid
|
||||||
class-id ] qdisc
|
class-id ] qdisc
|
||||||
[ qdisc specific parameters ]
|
[ qdisc specific parameters ]
|
||||||
.P
|
.P
|
||||||
|
|
@ -36,38 +36,38 @@ flow-id
|
||||||
|
|
||||||
.B tc
|
.B tc
|
||||||
.RI "[ " FORMAT " ]"
|
.RI "[ " FORMAT " ]"
|
||||||
.B qdisc show [ dev
|
.B qdisc show [ dev
|
||||||
DEV
|
DEV
|
||||||
.B ]
|
.B ]
|
||||||
.P
|
.P
|
||||||
.B tc
|
.B tc
|
||||||
.RI "[ " FORMAT " ]"
|
.RI "[ " FORMAT " ]"
|
||||||
.B class show dev
|
.B class show dev
|
||||||
DEV
|
DEV
|
||||||
.P
|
.P
|
||||||
.B tc filter show dev
|
.B tc filter show dev
|
||||||
DEV
|
DEV
|
||||||
|
|
||||||
.ti -8
|
.ti 8
|
||||||
.IR FORMAT " := {"
|
.IR FORMAT " := {"
|
||||||
\fB\-s\fR[\fItatistics\fR] |
|
\fB\-s\fR[\fItatistics\fR] |
|
||||||
\fB\-d\fR[\fIetails\fR] |
|
\fB\-d\fR[\fIetails\fR] |
|
||||||
\fB\-r\fR[\fIaw\fR] |
|
\fB\-r\fR[\fIaw\fR] |
|
||||||
\fB\-p\fR[\fIretty\fR] |
|
\fB\-p\fR[\fIretty\fR] |
|
||||||
\fB\i\fR[\fIec\fR] }
|
\fB\-i\fR[\fIec\fR] }
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B Tc
|
.B Tc
|
||||||
is used to configure Traffic Control in the Linux kernel. Traffic Control consists
|
is used to configure Traffic Control in the Linux kernel. Traffic Control consists
|
||||||
of the following:
|
of the following:
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
SHAPING
|
SHAPING
|
||||||
When traffic is shaped, its rate of transmission is under control. Shaping may
|
When traffic is shaped, its rate of transmission is under control. Shaping may
|
||||||
be more than lowering the available bandwidth - it is also used to smooth out
|
be more than lowering the available bandwidth - it is also used to smooth out
|
||||||
bursts in traffic for better network behaviour. Shaping occurs on egress.
|
bursts in traffic for better network behaviour. Shaping occurs on egress.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
SCHEDULING
|
SCHEDULING
|
||||||
By scheduling the transmission of packets it is possible to improve interactivity
|
By scheduling the transmission of packets it is possible to improve interactivity
|
||||||
for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering
|
for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering
|
||||||
|
|
@ -80,34 +80,34 @@ arriving. Policing thus occurs on ingress.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
DROPPING
|
DROPPING
|
||||||
Traffic exceeding a set bandwidth may also be dropped forthwith, both on
|
Traffic exceeding a set bandwidth may also be dropped forthwith, both on
|
||||||
ingress and on egress.
|
ingress and on egress.
|
||||||
|
|
||||||
.P
|
.P
|
||||||
Processing of traffic is controlled by three kinds of objects: qdiscs,
|
Processing of traffic is controlled by three kinds of objects: qdiscs,
|
||||||
classes and filters.
|
classes and filters.
|
||||||
|
|
||||||
.SH QDISCS
|
.SH QDISCS
|
||||||
.B qdisc
|
.B qdisc
|
||||||
is short for 'queueing discipline' and it is elementary to
|
is short for 'queueing discipline' and it is elementary to
|
||||||
understanding traffic control. Whenever the kernel needs to send a
|
understanding traffic control. Whenever the kernel needs to send a
|
||||||
packet to an interface, it is
|
packet to an interface, it is
|
||||||
.B enqueued
|
.B enqueued
|
||||||
to the qdisc configured for that interface. Immediately afterwards, the kernel
|
to the qdisc configured for that interface. Immediately afterwards, the kernel
|
||||||
tries to get as many packets as possible from the qdisc, for giving them
|
tries to get as many packets as possible from the qdisc, for giving them
|
||||||
to the network adaptor driver.
|
to the network adaptor driver.
|
||||||
|
|
||||||
A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure
|
A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure
|
||||||
First In, First Out queue. It does however store traffic when the network interface
|
First In, First Out queue. It does however store traffic when the network interface
|
||||||
can't handle it momentarily.
|
can't handle it momentarily.
|
||||||
|
|
||||||
.SH CLASSES
|
.SH CLASSES
|
||||||
Some qdiscs can contain classes, which contain further qdiscs - traffic may
|
Some qdiscs can contain classes, which contain further qdiscs - traffic may
|
||||||
then be enqueued in any of the inner qdiscs, which are within the
|
then be enqueued in any of the inner qdiscs, which are within the
|
||||||
.B classes.
|
.B classes.
|
||||||
When the kernel tries to dequeue a packet from such a
|
When the kernel tries to dequeue a packet from such a
|
||||||
.B classful qdisc
|
.B classful qdisc
|
||||||
it can come from any of the classes. A qdisc may for example prioritize
|
it can come from any of the classes. A qdisc may for example prioritize
|
||||||
certain kinds of traffic by trying to dequeue from certain classes
|
certain kinds of traffic by trying to dequeue from certain classes
|
||||||
before others.
|
before others.
|
||||||
|
|
||||||
|
|
@ -117,45 +117,45 @@ A
|
||||||
is used by a classful qdisc to determine in which class a packet will
|
is used by a classful qdisc to determine in which class a packet will
|
||||||
be enqueued. Whenever traffic arrives at a class with subclasses, it needs
|
be enqueued. Whenever traffic arrives at a class with subclasses, it needs
|
||||||
to be classified. Various methods may be employed to do so, one of these
|
to be classified. Various methods may be employed to do so, one of these
|
||||||
are the filters. All filters attached to the class are called, until one of
|
are the filters. All filters attached to the class are called, until one of
|
||||||
them returns with a verdict. If no verdict was made, other criteria may be
|
them returns with a verdict. If no verdict was made, other criteria may be
|
||||||
available. This differs per qdisc.
|
available. This differs per qdisc.
|
||||||
|
|
||||||
It is important to notice that filters reside
|
It is important to notice that filters reside
|
||||||
.B within
|
.B within
|
||||||
qdiscs - they are not masters of what happens.
|
qdiscs - they are not masters of what happens.
|
||||||
|
|
||||||
.SH CLASSLESS QDISCS
|
.SH CLASSLESS QDISCS
|
||||||
The classless qdiscs are:
|
The classless qdiscs are:
|
||||||
.TP
|
.TP
|
||||||
[p|b]fifo
|
[p|b]fifo
|
||||||
Simplest usable qdisc, pure First In, First Out behaviour. Limited in
|
Simplest usable qdisc, pure First In, First Out behaviour. Limited in
|
||||||
packets or in bytes.
|
packets or in bytes.
|
||||||
.TP
|
.TP
|
||||||
pfifo_fast
|
pfifo_fast
|
||||||
Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band
|
Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band
|
||||||
queue which honors Type of Service flags, as well as the priority that may be
|
queue which honors Type of Service flags, as well as the priority that may be
|
||||||
assigned to a packet.
|
assigned to a packet.
|
||||||
.TP
|
.TP
|
||||||
red
|
red
|
||||||
Random Early Detection simulates physical congestion by randomly dropping
|
Random Early Detection simulates physical congestion by randomly dropping
|
||||||
packets when nearing configured bandwidth allocation. Well suited to very
|
packets when nearing configured bandwidth allocation. Well suited to very
|
||||||
large bandwidth applications.
|
large bandwidth applications.
|
||||||
.TP
|
.TP
|
||||||
sfq
|
sfq
|
||||||
Stochastic Fairness Queueing reorders queued traffic so each 'session'
|
Stochastic Fairness Queueing reorders queued traffic so each 'session'
|
||||||
gets to send a packet in turn.
|
gets to send a packet in turn.
|
||||||
.TP
|
.TP
|
||||||
tbf
|
tbf
|
||||||
The Token Bucket Filter is suited for slowing traffic down to a precisely
|
The Token Bucket Filter is suited for slowing traffic down to a precisely
|
||||||
configured rate. Scales well to large bandwidths.
|
configured rate. Scales well to large bandwidths.
|
||||||
.SH CONFIGURING CLASSLESS QDISCS
|
.SH CONFIGURING CLASSLESS QDISCS
|
||||||
In the absence of classful qdiscs, classless qdiscs can only be attached at
|
In the absence of classful qdiscs, classless qdiscs can only be attached at
|
||||||
the root of a device. Full syntax:
|
the root of a device. Full syntax:
|
||||||
.P
|
.P
|
||||||
.B tc qdisc add dev
|
.B tc qdisc add dev
|
||||||
DEV
|
DEV
|
||||||
.B root
|
.B root
|
||||||
QDISC QDISC-PARAMETERS
|
QDISC QDISC-PARAMETERS
|
||||||
|
|
||||||
To remove, issue
|
To remove, issue
|
||||||
|
|
@ -164,7 +164,7 @@ To remove, issue
|
||||||
DEV
|
DEV
|
||||||
.B root
|
.B root
|
||||||
|
|
||||||
The
|
The
|
||||||
.B pfifo_fast
|
.B pfifo_fast
|
||||||
qdisc is the automatic default in the absence of a configured qdisc.
|
qdisc is the automatic default in the absence of a configured qdisc.
|
||||||
|
|
||||||
|
|
@ -172,85 +172,85 @@ qdisc is the automatic default in the absence of a configured qdisc.
|
||||||
The classful qdiscs are:
|
The classful qdiscs are:
|
||||||
.TP
|
.TP
|
||||||
CBQ
|
CBQ
|
||||||
Class Based Queueing implements a rich linksharing hierarchy of classes.
|
Class Based Queueing implements a rich linksharing hierarchy of classes.
|
||||||
It contains shaping elements as well as prioritizing capabilities. Shaping is
|
It contains shaping elements as well as prioritizing capabilities. Shaping is
|
||||||
performed using link idle time calculations based on average packet size and
|
performed using link idle time calculations based on average packet size and
|
||||||
underlying link bandwidth. The latter may be ill-defined for some interfaces.
|
underlying link bandwidth. The latter may be ill-defined for some interfaces.
|
||||||
.TP
|
.TP
|
||||||
HTB
|
HTB
|
||||||
The Hierarchy Token Bucket implements a rich linksharing hierarchy of
|
The Hierarchy Token Bucket implements a rich linksharing hierarchy of
|
||||||
classes with an emphasis on conforming to existing practices. HTB facilitates
|
classes with an emphasis on conforming to existing practices. HTB facilitates
|
||||||
guaranteeing bandwidth to classes, while also allowing specification of upper
|
guaranteeing bandwidth to classes, while also allowing specification of upper
|
||||||
limits to inter-class sharing. It contains shaping elements, based on TBF and
|
limits to inter-class sharing. It contains shaping elements, based on TBF and
|
||||||
can prioritize classes.
|
can prioritize classes.
|
||||||
.TP
|
.TP
|
||||||
PRIO
|
PRIO
|
||||||
The PRIO qdisc is a non-shaping container for a configurable number of
|
The PRIO qdisc is a non-shaping container for a configurable number of
|
||||||
classes which are dequeued in order. This allows for easy prioritization
|
classes which are dequeued in order. This allows for easy prioritization
|
||||||
of traffic, where lower classes are only able to send if higher ones have
|
of traffic, where lower classes are only able to send if higher ones have
|
||||||
no packets available. To facilitate configuration, Type Of Service bits are
|
no packets available. To facilitate configuration, Type Of Service bits are
|
||||||
honored by default.
|
honored by default.
|
||||||
.SH THEORY OF OPERATION
|
.SH THEORY OF OPERATION
|
||||||
Classes form a tree, where each class has a single parent.
|
Classes form a tree, where each class has a single parent.
|
||||||
A class may have multiple children. Some qdiscs allow for runtime addition
|
A class may have multiple children. Some qdiscs allow for runtime addition
|
||||||
of classes (CBQ, HTB) while others (PRIO) are created with a static number of
|
of classes (CBQ, HTB) while others (PRIO) are created with a static number of
|
||||||
children.
|
children.
|
||||||
|
|
||||||
Qdiscs which allow dynamic addition of classes can have zero or more
|
Qdiscs which allow dynamic addition of classes can have zero or more
|
||||||
subclasses to which traffic may be enqueued.
|
subclasses to which traffic may be enqueued.
|
||||||
|
|
||||||
Furthermore, each class contains a
|
Furthermore, each class contains a
|
||||||
.B leaf qdisc
|
.B leaf qdisc
|
||||||
which by default has
|
which by default has
|
||||||
.B pfifo
|
.B pfifo
|
||||||
behaviour though another qdisc can be attached in place. This qdisc may again
|
behaviour though another qdisc can be attached in place. This qdisc may again
|
||||||
contain classes, but each class can have only one leaf qdisc.
|
contain classes, but each class can have only one leaf qdisc.
|
||||||
|
|
||||||
When a packet enters a classful qdisc it can be
|
When a packet enters a classful qdisc it can be
|
||||||
.B classified
|
.B classified
|
||||||
to one of the classes within. Three criteria are available, although not all
|
to one of the classes within. Three criteria are available, although not all
|
||||||
qdiscs will use all three:
|
qdiscs will use all three:
|
||||||
.TP
|
.TP
|
||||||
tc filters
|
tc filters
|
||||||
If tc filters are attached to a class, they are consulted first
|
If tc filters are attached to a class, they are consulted first
|
||||||
for relevant instructions. Filters can match on all fields of a packet header,
|
for relevant instructions. Filters can match on all fields of a packet header,
|
||||||
as well as on the firewall mark applied by ipchains or iptables.
|
as well as on the firewall mark applied by ipchains or iptables.
|
||||||
.TP
|
.TP
|
||||||
Type of Service
|
Type of Service
|
||||||
Some qdiscs have built in rules for classifying packets based on the TOS field.
|
Some qdiscs have built in rules for classifying packets based on the TOS field.
|
||||||
.TP
|
.TP
|
||||||
skb->priority
|
skb->priority
|
||||||
Userspace programs can encode a class-id in the 'skb->priority' field using
|
Userspace programs can encode a class-id in the 'skb->priority' field using
|
||||||
the SO_PRIORITY option.
|
the SO_PRIORITY option.
|
||||||
.P
|
.P
|
||||||
Each node within the tree can have its own filters but higher level filters
|
Each node within the tree can have its own filters but higher level filters
|
||||||
may also point directly to lower classes.
|
may also point directly to lower classes.
|
||||||
|
|
||||||
If classification did not succeed, packets are enqueued to the leaf qdisc
|
If classification did not succeed, packets are enqueued to the leaf qdisc
|
||||||
attached to that class. Check qdisc specific manpages for details, however.
|
attached to that class. Check qdisc specific manpages for details, however.
|
||||||
|
|
||||||
.SH NAMING
|
.SH NAMING
|
||||||
All qdiscs, classes and filters have IDs, which can either be specified
|
All qdiscs, classes and filters have IDs, which can either be specified
|
||||||
or be automatically assigned.
|
or be automatically assigned.
|
||||||
|
|
||||||
IDs consist of a major number and a minor number, separated by a colon.
|
IDs consist of a major number and a minor number, separated by a colon.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
QDISCS
|
QDISCS
|
||||||
A qdisc, which potentially can have children,
|
A qdisc, which potentially can have children,
|
||||||
gets assigned a major number, called a 'handle', leaving the minor
|
gets assigned a major number, called a 'handle', leaving the minor
|
||||||
number namespace available for classes. The handle is expressed as '10:'.
|
number namespace available for classes. The handle is expressed as '10:'.
|
||||||
It is customary to explicitly assign a handle to qdiscs expected to have
|
It is customary to explicitly assign a handle to qdiscs expected to have
|
||||||
children.
|
children.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
CLASSES
|
CLASSES
|
||||||
Classes residing under a qdisc share their qdisc major number, but each have
|
Classes residing under a qdisc share their qdisc major number, but each have
|
||||||
a separate minor number called a 'classid' that has no relation to their
|
a separate minor number called a 'classid' that has no relation to their
|
||||||
parent classes, only to their parent qdisc. The same naming custom as for
|
parent classes, only to their parent qdisc. The same naming custom as for
|
||||||
qdiscs applies.
|
qdiscs applies.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
FILTERS
|
FILTERS
|
||||||
Filters have a three part ID, which is only needed when using a hashed
|
Filters have a three part ID, which is only needed when using a hashed
|
||||||
filter hierarchy.
|
filter hierarchy.
|
||||||
|
|
@ -258,7 +258,7 @@ filter hierarchy.
|
||||||
All parameters accept a floating point number, possibly followed by a unit.
|
All parameters accept a floating point number, possibly followed by a unit.
|
||||||
.P
|
.P
|
||||||
Bandwidths or rates can be specified in:
|
Bandwidths or rates can be specified in:
|
||||||
.TP
|
.TP
|
||||||
kbps
|
kbps
|
||||||
Kilobytes per second
|
Kilobytes per second
|
||||||
.TP
|
.TP
|
||||||
|
|
@ -306,9 +306,9 @@ Microseconds.
|
||||||
The following commands are available for qdiscs, classes and filter:
|
The following commands are available for qdiscs, classes and filter:
|
||||||
.TP
|
.TP
|
||||||
add
|
add
|
||||||
Add a qdisc, class or filter to a node. For all entities, a
|
Add a qdisc, class or filter to a node. For all entities, a
|
||||||
.B parent
|
.B parent
|
||||||
must be passed, either by passing its ID or by attaching directly to the root of a device.
|
must be passed, either by passing its ID or by attaching directly to the root of a device.
|
||||||
When creating a qdisc or a filter, it can be named with the
|
When creating a qdisc or a filter, it can be named with the
|
||||||
.B handle
|
.B handle
|
||||||
parameter. A class is named with the
|
parameter. A class is named with the
|
||||||
|
|
@ -317,15 +317,15 @@ parameter.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
remove
|
remove
|
||||||
A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs
|
A qdisc can be removed by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs
|
||||||
are automatically deleted, as well as any filters attached to them.
|
are automatically deleted, as well as any filters attached to them.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
change
|
change
|
||||||
Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception
|
Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception
|
||||||
that the handle cannot be changed and neither can the parent. In other words,
|
that the handle cannot be changed and neither can the parent. In other words,
|
||||||
.B
|
.B
|
||||||
change
|
change
|
||||||
cannot move a node.
|
cannot move a node.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
|
|
@ -335,7 +335,7 @@ it is created.
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
link
|
link
|
||||||
Only available for qdiscs and performs a replace where the node
|
Only available for qdiscs and performs a replace where the node
|
||||||
must exist already.
|
must exist already.
|
||||||
|
|
||||||
.SH FORMAT
|
.SH FORMAT
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue