TC(8) TC(8) tc - / tc [ ] qdisc [ add | change | replace | link | delete ] dev [ parent -qdisc | root ] [ handle -qdisc ] [ ingress_block _ ] [ egress_block _ ] qdisc [ qdisc ] tc [ ] class [ add | change | replace | delete | show ] dev parent -qdisc [ classid - ] qdisc [ qdisc ] tc [ ] filter [ add | change | replace | delete | get ] dev [ parent -qdisc | root ] [ handle - ] protocol prio filtertype [ ] flowid - tc [ ] filter [ add | change | replace | delete | get ] block _ [ handle - ] protocol prio filtertype [ ] flowid - tc [ ] chain [ add | delete | get ] dev [ parent -qdisc | root ] filtertype [ ] tc [ ] chain [ add | delete | get ] block _ filtertype [ ] tc [ ] [ ] qdisc { show | list } [ dev ] [ root | ingress | handle _Q | parent _ ] [ invisible ] tc [ ] [ ] class show dev tc [ ] filter show dev tc [ ] filter show block _ tc [ ] chain show dev tc [ ] chain show block _ tc [ ] monitor [ file _ ] := { [ -force ] -b[atch] [ _ ] | [ -n[etns] name ] | [ -N[umeric] ] | [ -nm | -nam[es] ] | [ { -cf | -c[onf] } [ _ ] ] [ -t[imestamp] ] | [ -t[short] | [ -o[neline] ] | [ -echo ] } := { -s[tatistics] | -d[etails] | -r[aw] | -i[ec] | -g[raph] | -j[son] | -p[retty] | -col[or] } Tc . : . - . . . . . . . : qdiscs . QDISCS qdisc 'queueing discipline' . qdisc . qdisc . QDISC 'pfifo' . . CLASSES qdiscs qdiscs - qdiscs . qdisc . qdisc . qdisc . . . . . qdisc. qdiscs - . : basic ematch. tc-ematch(8) . bpf (e)BPF tc-bpf(8) . cgroup . tc-cgroup(8) . flow, flower ( ). tc-flow(8) tc-flower(8) . fw fwmark. fwmark . tc-fw(8). route . tc-route(8) . u32 . tc-u32(8) . matchall . tc-matchall(8) . QEVENTS Qdiscs qdisc. qevent . "tc block BLOCK_IDX". qevent . qdisc qevent . : tc qdisc add dev eth0 root handle 1: red limit 500K avpkt 1K \ qevent early_drop block 10 tc filter add block 10 matchall action mirred egress mirror dev eth1 QDISCS qdiscs : choke CHOKe ( ) . CHOKe RED RED. codel CoDel ( "") (AQM) " " RED . [p|b]fifo . . fq TCP . fq_codel CoDel AQM. FQ_Codel . CoDel. Codel FIFO. fq_pie FQ-PIE ( ) PIE AQM. FQ-PIE Jenkins . PIE. gred RED . (RFC 2597). hhf . . ingress . mqprio . 1:1 . multiq . . . netem . pfifo_fast ' '. . pie (PIE) . . . . sfb ( ) . RED BLUE . sfq '' . tbf . . . : tc qdisc add dev DEV root QDISC QDISC-PARAMETERS tc qdisc del dev DEV root pfifo_fast . : ATM . DRR . SFQ -- . RED . -- . ETS ETS PRIO DRR . ETS 802.1Qaz. HFSC . HTB . HTB . HTB . TBF . PRIO PRIO . . . QFQ O(1) . QFQ . . . qdisc (HTB) (PRIO) . qdisc . qdisc pfifo qdisc . qdisc . qdisc . qdisc : tc tc . iptables. qdisc TOS. skb->priority 'skb->priority' SO_PRIORITY. . qdisc . qdisc . qdisc . - :. 16 . : . QDISCS qdisc '' . '10:'. qdisc . CLASSES qdisc qdisc ' ' qdisc . qdisc. . TC. qdisc . . ( SI IEC ) '%' ( 5% 99.5%). : . / / / / / IEC SI (k-, m-, g-, t-) IEC (ki-, mi-, gi- ti-) . TC 32 bps 4294967295 bps. . : . TC ( ) 32 4294967295 . . : . TC 32 4294967295 . . TC '0' '0x' . TC qdiscs : add (qdisc) (class) (filter) . parent . handle. classid. delete (handle) 'root'. (leaf qdiscs) . change ' '. 'add' (handle) (parent). change . replace / . . get DEV qdisc-id priority protocol filter-id. show . (parent ID) . link (qdiscs) . tc / . monitor: file tc . netlink. -b -b filename -batch -batch filename . tc. -force tc (batch mode). . -o -oneline '\'. wc(1) grep(1) . -n -net -netns tc NETNS. : ip netns exec NETNS tc [ OPTIONS ] OBJECT { COMMAND | help } tc -n[etns] NETNS [ OPTIONS ] OBJECT { COMMAND | help } -N -Numeric dsfield . -cf -conf . ( -nm). -t -timestamp tc monitor : : <> <> <> <::> <> <> -ts -tshort tc monitor : [--.] -echo . : -s -stats -statistics . -d -details . -r, -raw . -p -pretty u32 TCP/IP. JSON . -iec IEC ( 1K = 1024). -g, -graph ASCII. -s. dev. -c[][={always|auto|never} . always () stdout. auto () stdout . never () . . -json . -j -json JSON. -nm, -name /etc/iproute2/tc_cls -cf. classid : # 1:40 voip # 1:50 web 1:60 ftp 1:2 home tc -nm -cf /etc/iproute2/tc_cls -nm tc. -br -brief ( ) . tc filter show tc actions ls . tc -g class show dev eth0 ASCII eth0. tc -g -s class show dev eth0 ASCII . tc . 2.2. tc-basic(8), tc-bfifo(8), tc-bpf(8), tc-cake(8), tc-cgroup(8), tc-choke(8), tc-codel(8), tc-drr(8), tc-ematch(8), tc-ets(8), tc-flow(8), tc-flower(8), tc-fq(8), tc-fq_codel(8), tc-fq_pie(8), tc-fw(8), tc-gact(8), tc-hfsc(7), tc-hfsc(8), tc-htb(8), tc-mqprio(8), tc-pfifo(8), tc-pfifo_fast(8), tc-pie(8), tc-red(8), tc-route(8), tc-sfb(8), tc-sfq(8), tc-stab(8), tc-tbf(8), tc-u32(8) http://lartc.org/ : (ahu@ds9a.nl) 3 . . : . iproute2 16 2001 TC(8)