]> git.proxmox.com Git - mirror_iproute2.git/blob - man/man8/tc.8
Merge branch 'main' into next
[mirror_iproute2.git] / man / man8 / tc.8
1 .TH TC 8 "16 December 2001" "iproute2" "Linux"
2 .SH NAME
3 tc \- show / manipulate traffic control settings
4 .SH SYNOPSIS
5 .B tc
6 .RI "[ " OPTIONS " ]"
7 .B qdisc [ add | change | replace | link | delete ] dev
8 \fIDEV\fR
9 .B
10 [ parent
11 \fIqdisc-id\fR
12 .B | root ]
13 .B [ handle
14 \fIqdisc-id\fR ]
15 .B [ ingress_block
16 \fIBLOCK_INDEX\fR ]
17 .B [ egress_block
18 \fIBLOCK_INDEX\fR ] qdisc
19 [ qdisc specific parameters ]
20 .P
21
22 .B tc
23 .RI "[ " OPTIONS " ]"
24 .B class [ add | change | replace | delete ] dev
25 \fIDEV\fR
26 .B parent
27 \fIqdisc-id\fR
28 .B [ classid
29 \fIclass-id\fR ] qdisc
30 [ qdisc specific parameters ]
31 .P
32
33 .B tc
34 .RI "[ " OPTIONS " ]"
35 .B filter [ add | change | replace | delete | get ] dev
36 \fIDEV\fR
37 .B [ parent
38 \fIqdisc-id\fR
39 .B | root ] [ handle \fIfilter-id\fR ]
40 .B protocol
41 \fIprotocol\fR
42 .B prio
43 \fIpriority\fR filtertype
44 [ filtertype specific parameters ]
45 .B flowid
46 \fIflow-id\fR
47
48 .B tc
49 .RI "[ " OPTIONS " ]"
50 .B filter [ add | change | replace | delete | get ] block
51 \fIBLOCK_INDEX\fR
52 .B [ handle \fIfilter-id\fR ]
53 .B protocol
54 \fIprotocol\fR
55 .B prio
56 \fIpriority\fR filtertype
57 [ filtertype specific parameters ]
58 .B flowid
59 \fIflow-id\fR
60
61 .B tc
62 .RI "[ " OPTIONS " ]"
63 .B chain [ add | delete | get ] dev
64 \fIDEV\fR
65 .B [ parent
66 \fIqdisc-id\fR
67 .B | root ]\fR filtertype
68 [ filtertype specific parameters ]
69
70 .B tc
71 .RI "[ " OPTIONS " ]"
72 .B chain [ add | delete | get ] block
73 \fIBLOCK_INDEX\fR filtertype
74 [ filtertype specific parameters ]
75
76
77 .B tc
78 .RI "[ " OPTIONS " ]"
79 .RI "[ " FORMAT " ]"
80 .B qdisc { show | list } [ dev
81 \fIDEV\fR
82 .B ] [ root | ingress | handle
83 \fIQHANDLE\fR
84 .B | parent
85 \fICLASSID\fR
86 .B ] [ invisible ]
87 .P
88 .B tc
89 .RI "[ " OPTIONS " ]"
90 .RI "[ " FORMAT " ]"
91 .B class show dev
92 \fIDEV\fR
93 .P
94 .B tc
95 .RI "[ " OPTIONS " ]"
96 .B filter show dev
97 \fIDEV\fR
98 .P
99 .B tc
100 .RI "[ " OPTIONS " ]"
101 .B filter show block
102 \fIBLOCK_INDEX\fR
103 .P
104 .B tc
105 .RI "[ " OPTIONS " ]"
106 .B chain show dev
107 \fIDEV\fR
108 .P
109 .B tc
110 .RI "[ " OPTIONS " ]"
111 .B chain show block
112 \fIBLOCK_INDEX\fR
113
114 .P
115 .B tc
116 .RI "[ " OPTIONS " ]"
117 .B monitor [ file
118 \fIFILENAME\fR
119 .B ]
120
121 .P
122 .ti 8
123 .IR OPTIONS " := {"
124 \fB[ -force ] -b\fR[\fIatch\fR] \fB[ filename ] \fR|
125 \fB[ \fB-n\fR[\fIetns\fR] name \fB] \fR|
126 \fB[ \fB-N\fR[\fIumeric\fR] \fB] \fR|
127 \fB[ \fB-nm \fR| \fB-nam\fR[\fIes\fR] \fB] \fR|
128 \fB[ \fR{ \fB-cf \fR| \fB-c\fR[\fIonf\fR] \fR} \fB[ filename ] \fB] \fR
129 \fB[ -t\fR[imestamp\fR] \fB\] \fR| \fB[ -t\fR[short\fR] \fR| \fB[
130 -o\fR[neline\fR] \fB]\fR }
131
132 .ti 8
133 .IR FORMAT " := {"
134 \fB\-s\fR[\fItatistics\fR] |
135 \fB\-d\fR[\fIetails\fR] |
136 \fB\-r\fR[\fIaw\fR] |
137 \fB\-i\fR[\fIec\fR] |
138 \fB\-g\fR[\fIraph\fR] |
139 \fB\-j\fR[\fIjson\fR] |
140 \fB\-p\fR[\fIretty\fR] |
141 \fB\-col\fR[\fIor\fR] }
142
143 .SH DESCRIPTION
144 .B Tc
145 is used to configure Traffic Control in the Linux kernel. Traffic Control consists
146 of the following:
147
148 .TP
149 SHAPING
150 When traffic is shaped, its rate of transmission is under control. Shaping may
151 be more than lowering the available bandwidth - it is also used to smooth out
152 bursts in traffic for better network behaviour. Shaping occurs on egress.
153
154 .TP
155 SCHEDULING
156 By scheduling the transmission of packets it is possible to improve interactivity
157 for traffic that needs it while still guaranteeing bandwidth to bulk transfers. Reordering
158 is also called prioritizing, and happens only on egress.
159
160 .TP
161 POLICING
162 Whereas shaping deals with transmission of traffic, policing pertains to traffic
163 arriving. Policing thus occurs on ingress.
164
165 .TP
166 DROPPING
167 Traffic exceeding a set bandwidth may also be dropped forthwith, both on
168 ingress and on egress.
169
170 .P
171 Processing of traffic is controlled by three kinds of objects: qdiscs,
172 classes and filters.
173
174 .SH QDISCS
175 .B qdisc
176 is short for 'queueing discipline' and it is elementary to
177 understanding traffic control. Whenever the kernel needs to send a
178 packet to an interface, it is
179 .B enqueued
180 to the qdisc configured for that interface. Immediately afterwards, the kernel
181 tries to get as many packets as possible from the qdisc, for giving them
182 to the network adaptor driver.
183
184 A simple QDISC is the 'pfifo' one, which does no processing at all and is a pure
185 First In, First Out queue. It does however store traffic when the network interface
186 can't handle it momentarily.
187
188 .SH CLASSES
189 Some qdiscs can contain classes, which contain further qdiscs - traffic may
190 then be enqueued in any of the inner qdiscs, which are within the
191 .B classes.
192 When the kernel tries to dequeue a packet from such a
193 .B classful qdisc
194 it can come from any of the classes. A qdisc may for example prioritize
195 certain kinds of traffic by trying to dequeue from certain classes
196 before others.
197
198 .SH FILTERS
199 A
200 .B filter
201 is used by a classful qdisc to determine in which class a packet will
202 be enqueued. Whenever traffic arrives at a class with subclasses, it needs
203 to be classified. Various methods may be employed to do so, one of these
204 are the filters. All filters attached to the class are called, until one of
205 them returns with a verdict. If no verdict was made, other criteria may be
206 available. This differs per qdisc.
207
208 It is important to notice that filters reside
209 .B within
210 qdiscs - they are not masters of what happens.
211
212 The available filters are:
213 .TP
214 basic
215 Filter packets based on an ematch expression. See
216 .BR tc-ematch (8)
217 for details.
218 .TP
219 bpf
220 Filter packets using (e)BPF, see
221 .BR tc-bpf (8)
222 for details.
223 .TP
224 cgroup
225 Filter packets based on the control group of their process. See
226 . BR tc-cgroup (8)
227 for details.
228 .TP
229 flow, flower
230 Flow-based classifiers, filtering packets based on their flow (identified by selectable keys). See
231 .BR tc-flow "(8) and"
232 .BR tc-flower (8)
233 for details.
234 .TP
235 fw
236 Filter based on fwmark. Directly maps fwmark value to traffic class. See
237 .BR tc-fw (8).
238 .TP
239 route
240 Filter packets based on routing table. See
241 .BR tc-route (8)
242 for details.
243 .TP
244 rsvp
245 Match Resource Reservation Protocol (RSVP) packets.
246 .TP
247 tcindex
248 Filter packets based on traffic control index. See
249 .BR tc-tcindex (8).
250 .TP
251 u32
252 Generic filtering on arbitrary packet data, assisted by syntax to abstract common operations. See
253 .BR tc-u32 (8)
254 for details.
255 .TP
256 matchall
257 Traffic control filter that matches every packet. See
258 .BR tc-matchall (8)
259 for details.
260
261 .SH QEVENTS
262 Qdiscs may invoke user-configured actions when certain interesting events
263 take place in the qdisc. Each qevent can either be unused, or can have a
264 block attached to it. To this block are then attached filters using the "tc
265 block BLOCK_IDX" syntax. The block is executed when the qevent associated
266 with the attachment point takes place. For example, packet could be
267 dropped, or delayed, etc., depending on the qdisc and the qevent in
268 question.
269
270 For example:
271 .PP
272 .RS
273 tc qdisc add dev eth0 root handle 1: red limit 500K avpkt 1K \\
274 qevent early_drop block 10
275 .RE
276 .RS
277 tc filter add block 10 matchall action mirred egress mirror dev eth1
278 .RE
279
280 .SH CLASSLESS QDISCS
281 The classless qdiscs are:
282 .TP
283 choke
284 CHOKe (CHOose and Keep for responsive flows, CHOose and Kill for unresponsive
285 flows) is a classless qdisc designed to both identify and penalize flows that
286 monopolize the queue. CHOKe is a variation of RED, and the configuration is
287 similar to RED.
288 .TP
289 codel
290 CoDel (pronounced "coddle") is an adaptive "no-knobs" active queue management
291 algorithm (AQM) scheme that was developed to address the shortcomings of
292 RED and its variants.
293 .TP
294 [p|b]fifo
295 Simplest usable qdisc, pure First In, First Out behaviour. Limited in
296 packets or in bytes.
297 .TP
298 fq
299 Fair Queue Scheduler realises TCP pacing and scales to millions of concurrent
300 flows per qdisc.
301 .TP
302 fq_codel
303 Fair Queuing Controlled Delay is queuing discipline that combines Fair
304 Queuing with the CoDel AQM scheme. FQ_Codel uses a stochastic model to classify
305 incoming packets into different flows and is used to provide a fair share of the
306 bandwidth to all the flows using the queue. Each such flow is managed by the
307 CoDel queuing discipline. Reordering within a flow is avoided since Codel
308 internally uses a FIFO queue.
309 .TP
310 fq_pie
311 FQ-PIE (Flow Queuing with Proportional Integral controller Enhanced) is a
312 queuing discipline that combines Flow Queuing with the PIE AQM scheme. FQ-PIE
313 uses a Jenkins hash function to classify incoming packets into different flows
314 and is used to provide a fair share of the bandwidth to all the flows using the
315 qdisc. Each such flow is managed by the PIE algorithm.
316 .TP
317 gred
318 Generalized Random Early Detection combines multiple RED queues in order to
319 achieve multiple drop priorities. This is required to realize Assured
320 Forwarding (RFC 2597).
321 .TP
322 hhf
323 Heavy-Hitter Filter differentiates between small flows and the opposite,
324 heavy-hitters. The goal is to catch the heavy-hitters and move them to a
325 separate queue with less priority so that bulk traffic does not affect the
326 latency of critical traffic.
327 .TP
328 ingress
329 This is a special qdisc as it applies to incoming traffic on an interface, allowing for it to be filtered and policed.
330 .TP
331 mqprio
332 The Multiqueue Priority Qdisc is a simple queuing discipline that allows
333 mapping traffic flows to hardware queue ranges using priorities and a
334 configurable priority to traffic class mapping. A traffic class in this context
335 is a set of contiguous qdisc classes which map 1:1 to a set of hardware exposed
336 queues.
337 .TP
338 multiq
339 Multiqueue is a qdisc optimized for devices with multiple Tx queues. It has
340 been added for hardware that wishes to avoid head-of-line blocking. It will
341 cycle though the bands and verify that the hardware queue associated with the
342 band is not stopped prior to dequeuing a packet.
343 .TP
344 netem
345 Network Emulator is an enhancement of the Linux traffic control facilities that
346 allow to add delay, packet loss, duplication and more other characteristics to
347 packets outgoing from a selected network interface.
348 .TP
349 pfifo_fast
350 Standard qdisc for 'Advanced Router' enabled kernels. Consists of a three-band
351 queue which honors Type of Service flags, as well as the priority that may be
352 assigned to a packet.
353 .TP
354 pie
355 Proportional Integral controller-Enhanced (PIE) is a control theoretic active
356 queue management scheme. It is based on the proportional integral controller but
357 aims to control delay.
358 .TP
359 red
360 Random Early Detection simulates physical congestion by randomly dropping
361 packets when nearing configured bandwidth allocation. Well suited to very
362 large bandwidth applications.
363 .TP
364 rr
365 Round-Robin qdisc with support for multiqueue network devices. Removed from
366 Linux since kernel version 2.6.27.
367 .TP
368 sfb
369 Stochastic Fair Blue is a classless qdisc to manage congestion based on
370 packet loss and link utilization history while trying to prevent
371 non-responsive flows (i.e. flows that do not react to congestion marking
372 or dropped packets) from impacting performance of responsive flows.
373 Unlike RED, where the marking probability has to be configured, BLUE
374 tries to determine the ideal marking probability automatically.
375 .TP
376 sfq
377 Stochastic Fairness Queueing reorders queued traffic so each 'session'
378 gets to send a packet in turn.
379 .TP
380 tbf
381 The Token Bucket Filter is suited for slowing traffic down to a precisely
382 configured rate. Scales well to large bandwidths.
383 .SH CONFIGURING CLASSLESS QDISCS
384 In the absence of classful qdiscs, classless qdiscs can only be attached at
385 the root of a device. Full syntax:
386 .P
387 .B tc qdisc add dev
388 \fIDEV\fR
389 .B root
390 QDISC QDISC-PARAMETERS
391
392 To remove, issue
393 .P
394 .B tc qdisc del dev
395 \fIDEV\fR
396 .B root
397
398 The
399 .B pfifo_fast
400 qdisc is the automatic default in the absence of a configured qdisc.
401
402 .SH CLASSFUL QDISCS
403 The classful qdiscs are:
404 .TP
405 ATM
406 Map flows to virtual circuits of an underlying asynchronous transfer mode
407 device.
408 .TP
409 CBQ
410 Class Based Queueing implements a rich linksharing hierarchy of classes.
411 It contains shaping elements as well as prioritizing capabilities. Shaping is
412 performed using link idle time calculations based on average packet size and
413 underlying link bandwidth. The latter may be ill-defined for some interfaces.
414 .TP
415 DRR
416 The Deficit Round Robin Scheduler is a more flexible replacement for Stochastic
417 Fairness Queuing. Unlike SFQ, there are no built-in queues \-\- you need to add
418 classes and then set up filters to classify packets accordingly. This can be
419 useful e.g. for using RED qdiscs with different settings for particular
420 traffic. There is no default class \-\- if a packet cannot be classified, it is
421 dropped.
422 .TP
423 DSMARK
424 Classify packets based on TOS field, change TOS field of packets based on
425 classification.
426 .TP
427 ETS
428 The ETS qdisc is a queuing discipline that merges functionality of PRIO and DRR
429 qdiscs in one scheduler. ETS makes it easy to configure a set of strict and
430 bandwidth-sharing bands to implement the transmission selection described in
431 802.1Qaz.
432 .TP
433 HFSC
434 Hierarchical Fair Service Curve guarantees precise bandwidth and delay allocation for leaf classes and allocates excess bandwidth fairly. Unlike HTB, it makes use of packet dropping to achieve low delays which interactive sessions benefit from.
435 .TP
436 HTB
437 The Hierarchy Token Bucket implements a rich linksharing hierarchy of
438 classes with an emphasis on conforming to existing practices. HTB facilitates
439 guaranteeing bandwidth to classes, while also allowing specification of upper
440 limits to inter-class sharing. It contains shaping elements, based on TBF and
441 can prioritize classes.
442 .TP
443 PRIO
444 The PRIO qdisc is a non-shaping container for a configurable number of
445 classes which are dequeued in order. This allows for easy prioritization
446 of traffic, where lower classes are only able to send if higher ones have
447 no packets available. To facilitate configuration, Type Of Service bits are
448 honored by default.
449 .TP
450 QFQ
451 Quick Fair Queueing is an O(1) scheduler that provides near-optimal guarantees,
452 and is the first to achieve that goal with a constant cost also with respect to
453 the number of groups and the packet length. The QFQ algorithm has no loops, and
454 uses very simple instructions and data structures that lend themselves very
455 well to a hardware implementation.
456 .SH THEORY OF OPERATION
457 Classes form a tree, where each class has a single parent.
458 A class may have multiple children. Some qdiscs allow for runtime addition
459 of classes (CBQ, HTB) while others (PRIO) are created with a static number of
460 children.
461
462 Qdiscs which allow dynamic addition of classes can have zero or more
463 subclasses to which traffic may be enqueued.
464
465 Furthermore, each class contains a
466 .B leaf qdisc
467 which by default has
468 .B pfifo
469 behaviour, although another qdisc can be attached in place. This qdisc may again
470 contain classes, but each class can have only one leaf qdisc.
471
472 When a packet enters a classful qdisc it can be
473 .B classified
474 to one of the classes within. Three criteria are available, although not all
475 qdiscs will use all three:
476 .TP
477 tc filters
478 If tc filters are attached to a class, they are consulted first
479 for relevant instructions. Filters can match on all fields of a packet header,
480 as well as on the firewall mark applied by iptables.
481 .TP
482 Type of Service
483 Some qdiscs have built in rules for classifying packets based on the TOS field.
484 .TP
485 skb->priority
486 Userspace programs can encode a \fIclass-id\fR in the 'skb->priority' field using
487 the SO_PRIORITY option.
488 .P
489 Each node within the tree can have its own filters but higher level filters
490 may also point directly to lower classes.
491
492 If classification did not succeed, packets are enqueued to the leaf qdisc
493 attached to that class. Check qdisc specific manpages for details, however.
494
495 .SH NAMING
496 All qdiscs, classes and filters have IDs, which can either be specified
497 or be automatically assigned.
498
499 IDs consist of a
500 .BR major " number and a " minor
501 number, separated by a colon -
502 .BR major ":" minor "."
503 Both
504 .BR major " and " minor
505 are hexadecimal numbers and are limited to 16 bits. There are two special
506 values: root is signified by
507 .BR major " and " minor
508 of all ones, and unspecified is all zeros.
509
510 .TP
511 QDISCS
512 A qdisc, which potentially can have children, gets assigned a
513 .B major
514 number, called a 'handle', leaving the
515 .B minor
516 number namespace available for classes. The handle is expressed as '10:'.
517 It is customary to explicitly assign a handle to qdiscs expected to have children.
518
519 .TP
520 CLASSES
521 Classes residing under a qdisc share their qdisc
522 .B major
523 number, but each have a separate
524 .B minor
525 number called a 'classid' that has no relation to their
526 parent classes, only to their parent qdisc. The same naming custom as for
527 qdiscs applies.
528
529 .TP
530 FILTERS
531 Filters have a three part ID, which is only needed when using a hashed
532 filter hierarchy.
533
534 .SH PARAMETERS
535 The following parameters are widely used in TC. For other parameters,
536 see the man pages for individual qdiscs.
537
538 .TP
539 RATES
540 Bandwidths or rates.
541 These parameters accept a floating point number, possibly followed by
542 either a unit (both SI and IEC units supported), or a float followed by a '%'
543 character to specify the rate as a percentage of the device's speed
544 (e.g. 5%, 99.5%). Warning: specifying the rate as a percentage means a fraction
545 of the current speed; if the speed changes, the value will not be recalculated.
546 .RS
547 .TP
548 bit or a bare number
549 Bits per second
550 .TP
551 kbit
552 Kilobits per second
553 .TP
554 mbit
555 Megabits per second
556 .TP
557 gbit
558 Gigabits per second
559 .TP
560 tbit
561 Terabits per second
562 .TP
563 bps
564 Bytes per second
565 .TP
566 kbps
567 Kilobytes per second
568 .TP
569 mbps
570 Megabytes per second
571 .TP
572 gbps
573 Gigabytes per second
574 .TP
575 tbps
576 Terabytes per second
577
578 .P
579 To specify in IEC units, replace the SI prefix (k-, m-, g-, t-) with
580 IEC prefix (ki-, mi-, gi- and ti-) respectively.
581
582 .P
583 TC store rates as a 32-bit unsigned integer in bps internally,
584 so we can specify a max rate of 4294967295 bps.
585 .RE
586
587 .TP
588 TIMES
589 Length of time. Can be specified as a floating point number
590 followed by an optional unit:
591 .RS
592 .TP
593 s, sec or secs
594 Whole seconds
595 .TP
596 ms, msec or msecs
597 Milliseconds
598 .TP
599 us, usec, usecs or a bare number
600 Microseconds.
601
602 .P
603 TC defined its own time unit (equal to microsecond) and stores
604 time values as 32-bit unsigned integer, thus we can specify a max time value
605 of 4294967295 usecs.
606 .RE
607
608 .TP
609 SIZES
610 Amounts of data. Can be specified as a floating point number
611 followed by an optional unit:
612 .RS
613 .TP
614 b or a bare number
615 Bytes.
616 .TP
617 kbit
618 Kilobits
619 .TP
620 kb or k
621 Kilobytes
622 .TP
623 mbit
624 Megabits
625 .TP
626 mb or m
627 Megabytes
628 .TP
629 gbit
630 Gigabits
631 .TP
632 gb or g
633 Gigabytes
634
635 .P
636 TC stores sizes internally as 32-bit unsigned integer in byte,
637 so we can specify a max size of 4294967295 bytes.
638 .RE
639
640 .TP
641 VALUES
642 Other values without a unit.
643 These parameters are interpreted as decimal by default, but you can
644 indicate TC to interpret them as octal and hexadecimal by adding a '0'
645 or '0x' prefix respectively.
646
647 .SH TC COMMANDS
648 The following commands are available for qdiscs, classes and filter:
649 .TP
650 add
651 Add a qdisc, class or filter to a node. For all entities, a
652 .B parent
653 must be passed, either by passing its ID or by attaching directly to the root of a device.
654 When creating a qdisc or a filter, it can be named with the
655 .B handle
656 parameter. A class is named with the
657 .B \fBclassid\fR
658 parameter.
659
660 .TP
661 delete
662 A qdisc can be deleted by specifying its handle, which may also be 'root'. All subclasses and their leaf qdiscs
663 are automatically deleted, as well as any filters attached to them.
664
665 .TP
666 change
667 Some entities can be modified 'in place'. Shares the syntax of 'add', with the exception
668 that the handle cannot be changed and neither can the parent. In other words,
669 .B
670 change
671 cannot move a node.
672
673 .TP
674 replace
675 Performs a nearly atomic remove/add on an existing node id. If the node does not exist yet
676 it is created.
677
678 .TP
679 get
680 Displays a single filter given the interface \fIDEV\fR, \fIqdisc-id\fR,
681 \fIpriority\fR, \fIprotocol\fR and \fIfilter-id\fR.
682
683 .TP
684 show
685 Displays all filters attached to the given interface. A valid parent ID must be passed.
686
687 .TP
688 link
689 Only available for qdiscs and performs a replace where the node
690 must exist already.
691
692 .SH MONITOR
693 The\fB\ tc\fR\ utility can monitor events generated by the kernel such as
694 adding/deleting qdiscs, filters or actions, or modifying existing ones.
695
696 The following command is available for\fB\ monitor\fR\ :
697 .TP
698 \fBfile\fR
699 If the file option is given, the \fBtc\fR does not listen to kernel events, but opens
700 the given file and dumps its contents. The file has to be in binary
701 format and contain netlink messages.
702
703 .SH OPTIONS
704
705 .TP
706 .BR "\-b", " \-b filename", " \-batch", " \-batch filename"
707 read commands from provided file or standard input and invoke them.
708 First failure will cause termination of tc.
709
710 .TP
711 .BR "\-force"
712 don't terminate tc on errors in batch mode.
713 If there were any errors during execution of the commands, the application return code will be non zero.
714
715 .TP
716 .BR "\-o" , " \-oneline"
717 output each record on a single line, replacing line feeds
718 with the
719 .B '\e'
720 character. This is convenient when you want to count records
721 with
722 .BR wc (1)
723 or to
724 .BR grep (1)
725 the output.
726
727 .TP
728 .BR "\-n" , " \-net" , " \-netns " <NETNS>
729 switches
730 .B tc
731 to the specified network namespace
732 .IR NETNS .
733 Actually it just simplifies executing of:
734
735 .B ip netns exec
736 .IR NETNS
737 .B tc
738 .RI "[ " OPTIONS " ] " OBJECT " { " COMMAND " | "
739 .BR help " }"
740
741 to
742
743 .B tc
744 .RI "-n[etns] " NETNS " [ " OPTIONS " ] " OBJECT " { " COMMAND " | "
745 .BR help " }"
746
747 .TP
748 .BR "\-N" , " \-Numeric"
749 Print the number of protocol, scope, dsfield, etc directly instead of
750 converting it to human readable name.
751
752 .TP
753 .BR "\-cf" , " \-conf " <FILENAME>
754 specifies path to the config file. This option is used in conjunction with other options (e.g.
755 .BR -nm ")."
756
757 .TP
758 .BR "\-t", " \-timestamp"
759 When\fB\ tc monitor\fR\ runs, print timestamp before the event message in format:
760 Timestamp: <Day> <Month> <DD> <hh:mm:ss> <YYYY> <usecs> usec
761
762 .TP
763 .BR "\-ts", " \-tshort"
764 When\fB\ tc monitor\fR\ runs, prints short timestamp before the event message in format:
765 [<YYYY>-<MM>-<DD>T<hh:mm:ss>.<ms>]
766
767 .SH FORMAT
768 The show command has additional formatting options:
769
770 .TP
771 .BR "\-s" , " \-stats", " \-statistics"
772 output more statistics about packet usage.
773
774 .TP
775 .BR "\-d", " \-details"
776 output more detailed information about rates and cell sizes.
777
778 .TP
779 .BR "\-r", " \-raw"
780 output raw hex values for handles.
781
782 .TP
783 .BR "\-p", " \-pretty"
784 for u32 filter, decode offset and mask values to equivalent filter commands based on TCP/IP.
785 In JSON output, add whitespace to improve readability.
786
787 .TP
788 .BR "\-iec"
789 print rates in IEC units (ie. 1K = 1024).
790
791 .TP
792 .BR "\-g", " \-graph"
793 shows classes as ASCII graph. Prints generic stats info under each class if
794 .BR "-s"
795 option was specified. Classes can be filtered only by
796 .BR "dev"
797 option.
798
799 .TP
800 .BR \-c [ color ][ = { always | auto | never }
801 Configure color output. If parameter is omitted or
802 .BR always ,
803 color output is enabled regardless of stdout state. If parameter is
804 .BR auto ,
805 stdout is checked to be a terminal before enabling color output. If parameter is
806 .BR never ,
807 color output is disabled. If specified multiple times, the last one takes
808 precedence. This flag is ignored if
809 .B \-json
810 is also given.
811
812 .TP
813 .BR "\-j", " \-json"
814 Display results in JSON format.
815
816 .TP
817 .BR "\-nm" , " \-name"
818 resolve class name from
819 .B /etc/iproute2/tc_cls
820 file or from file specified by
821 .B -cf
822 option. This file is just a mapping of
823 .B classid
824 to class name:
825
826 .RS 10
827 # Here is comment
828 .RE
829 .RS 10
830 1:40 voip # Here is another comment
831 .RE
832 .RS 10
833 1:50 web
834 .RE
835 .RS 10
836 1:60 ftp
837 .RE
838 .RS 10
839 1:2 home
840 .RE
841
842 .RS
843 .B tc
844 will not fail if
845 .B -nm
846 was specified without
847 .B -cf
848 option but
849 .B /etc/iproute2/tc_cls
850 file does not exist, which makes it possible to pass
851 .B -nm
852 option for creating
853 .B tc
854 alias.
855 .RE
856
857 .SH "EXAMPLES"
858 .PP
859 tc -g class show dev eth0
860 .RS 4
861 Shows classes as ASCII graph on eth0 interface.
862 .RE
863 .PP
864 tc -g -s class show dev eth0
865 .RS 4
866 Shows classes as ASCII graph with stats info under each class.
867 .RE
868
869 .SH HISTORY
870 .B tc
871 was written by Alexey N. Kuznetsov and added in Linux 2.2.
872 .SH SEE ALSO
873 .BR tc-basic (8),
874 .BR tc-bfifo (8),
875 .BR tc-bpf (8),
876 .BR tc-cake (8),
877 .BR tc-cbq (8),
878 .BR tc-cgroup (8),
879 .BR tc-choke (8),
880 .BR tc-codel (8),
881 .BR tc-drr (8),
882 .BR tc-ematch (8),
883 .BR tc-ets (8),
884 .BR tc-flow (8),
885 .BR tc-flower (8),
886 .BR tc-fq (8),
887 .BR tc-fq_codel (8),
888 .BR tc-fq_pie (8),
889 .BR tc-fw (8),
890 .BR tc-hfsc (7),
891 .BR tc-hfsc (8),
892 .BR tc-htb (8),
893 .BR tc-mqprio (8),
894 .BR tc-pfifo (8),
895 .BR tc-pfifo_fast (8),
896 .BR tc-pie (8),
897 .BR tc-red (8),
898 .BR tc-route (8),
899 .BR tc-sfb (8),
900 .BR tc-sfq (8),
901 .BR tc-stab (8),
902 .BR tc-tbf (8),
903 .BR tc-tcindex (8),
904 .BR tc-u32 (8),
905 .br
906 .RB "User documentation at " http://lartc.org/ ", but please direct bugreports and patches to: " <netdev@vger.kernel.org>
907
908 .SH AUTHOR
909 Manpage maintained by bert hubert (ahu@ds9a.nl)