Edited at

tcコマンドの使い方


1 tcコマンド,qdiscとは?

tcコマンドは、qdisc(Queueing Discipline)に対する設定、削除、参照等の

操作をするときに使います。

qdiscは、カーネル(kernel)とドライバ(network device driver)の間にあり、

送信パケットの送信順序の変更、遅延、廃棄等の機能を提供します。

    -*-  +----------------------------------------------------+

| | |
| | kernel |
| | |
| +----------------------------------------------------+
soft +------------------------+ +------------------------+
| | qdisc | | qdisc | <== tcコマンドは、ここ(qdisc)に対する操作をする
| +------------------------+ +------------------------+
| +------------------------+ +------------------------+
| | network device driver | | network device driver |
-*- +------------------------+ +------------------------+
-*- +------------------------+ +------------------------+
| | | | |
hard | eth0 | | eth1 |
| | | | |
-*- +------------------------+ +------------------------+


2 環境

VMware Workstation 12 Playerのゲストマシンで確認をしました。

ゲストマシンで使用するOSは以下のとおり。

[root@client ~]# cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

[root@client ~]# uname -r
3.10.0-514.el7.x86_64


3 qdiscの種類

man 8 tcより抜粋したものを以下に示す。抜粋したものはmanの一部です。詳細はmanを参照ください。

QDISCSの分類
qdiscの名前
カーネル ソースファイル
概要

クラスレス QDISCS
pfifo_fast
net/sched/sch_generic.c
デフォルトのqdiscです。FIFOのキューが3つあります。

pfifo
net/sched/sch_fifo.c
FIFOのキューが1つあります。キュー長の最大値はパケット数であらわされます

bfifo
同上
FIFOのキューが1つあります。 キュー長の最大値はバイト数であらわされます。

sfq
net/sched/sch_sfq.c
フローにもとづいてパケットをスケジューリングします。フローとは送信元/送信先のIPアドレス、ポート番号の組です。

tbf
net/sched/sch_tbf.c
パケットシェーピング機能を提供します。つまり、制限レートを超えたパケットはキューに保留されます。

netem
net/sched/sch_netem.c
送信パケットに対して、パケット廃棄、遅延等の操作をするためのqdiscです。

fq
net/sched/sch_fq.c
Fair Queue Packet Scheduler (per flow pacing)

クラスフル QDISCS
prio
net/sched/sch_prio.c
ルールにしたがってパケットを分類(class)します。デフォルトでは3つのクラスがあります。それぞれのクラスにqdisc(sfq,tbf等)を設定することができます。

htb
net/sched/sch_htb.c
1つのリンクを複数のサービス(www,ftp等)で共有する場合、各サービスに最低限必要な帯域を割り当てることができます。


4 クラスレスqdiscの設定、削除


4.1 クラスレスqdiscの設定、削除の書式

クラスレスqdiscの設定、削除は、下記書式に従います。


設定

# tc qdisc add dev DEV root QDISC QDISC-PARAMETERS



削除

# tc qdisc del dev DEV root



  • DEVはデバイス名(eth0,eth1等)を指定する。

  • QDISCはqdiscの名前(pfifo,sfq,tbf,netem等)を指定する。

  • QDISC-PARAMETERSは、QDISC毎のパラメータを指定する。


4.2 pfifoの設定、削除の方法

eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。

[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

eth0のqdiscをpfifoに変更する。
limit 100は、FIFOキューが最大100パケットをキューイングできることを意味しています。
[root@admin ~]# tc qdisc add dev eth0 root pfifo limit 100

eth0のqdiscを確認する。qdiscがpfifo(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo 8006: root refcnt 2 limit 100p

pfifoの統計情報を表示する。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc pfifo 8006: root refcnt 2 limit 100p
Sent 5904 bytes 34 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

少し時間をおいてから、再度、統計情報を表示する。送信パケット数が増加(34->42)していることがわかる。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc pfifo 8006: root refcnt 2 limit 100p
Sent 7300 bytes 42 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

pfifoを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1


4.3 sfq(Stochastic Fairness Queueing)の設定、削除の方法

フローにもとづいてパケットをスケジューリングします。

フローとは、下記4つの情報で識別されるパケットの流れです。

・送信元IPアドレス

・送信先IPアドレス

・送信元ポート番号

・送信先ポート番号

たとえば、TCPパケットAとBがあるとします。

上記4つの情報がAとBで全て同じであれば、AとBは同一フローになります。1つでも異なれば、別フローになります。

sfqを使うと、フローごとに公平にパケットを送信することができるようになります。

---------------------

1. デフォルトの使い方
---------------------
eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

eth0のqdiscをsfqに変更する。
[root@admin ~]# tc qdisc add dev eth0 root sfq

eth0のqdiscを確認する。qdiscがsfq(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★sfq 800b: root refcnt 2 limit 127p quantum 1514b depth 127 divisor 1024

sfqを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

-----------------------------------------------------
2. ハッシュアルゴリズムを定期的に変更(perturb)する方法
-----------------------------------------------------
フローからハッシュ値を求めるアルゴリズムを10秒毎に変更(perturb)する。
[root@admin ~]# tc qdisc add dev eth0 root sfq perturb 10

eth0のqdiscを確認する。qdiscがsfq(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★sfq 800c: root refcnt 2 limit 127p quantum 1514b depth 127 divisor 1024 ★perturb 10sec

sfqを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1


4.4 tbf(Token Bucket Filter)


4.4.1 tbf(Token Bucket Filter)の設定、削除の方法


(1)トークンと「同じ」割合で、TBF にデータが到着する場合

この場合各受信パケットは、それぞれ対応するトークンがあるので、 遅延することなしにキューを通過する。

(2)トークンの速度よりも「遅い」割合で、TBF にデータが到着する場合

キューに入った受信データパケットの出力に応じて 削除されるトークンは一部分のみなので、トークンはバケツサイズ一杯にまで溜まっていく。

使われなかったトークンは、 突発的なデータのバーストが起こったような場合に利用でき、 トークンの標準流入速度を越えたデータが送信できる。

(3)トークンの速度よりも「大きい」割合で、TBF にデータが到着する場合

この場合、バケツのトークンはすぐに空になってしまい、 TBF はしばらくの間入力を絞る。

これは「過負荷状態 (overlimit situation)」と呼ばれる。 パケットがそのまま入り続けてくる場合には、 パケットは破棄され始める。


eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。

[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

eth0のqdiscにtbfを設定する。
[root@admin ~]# tc qdisc add dev eth0 root tbf rate 0.5mbit burst 5kb latency 70ms peakrate 1mbit minburst 1540

eth0のqdiscを確認する。qdiscがtbf(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★tbf 8002: root refcnt 2 rate 500000bit burst 5Kb peakrate 1000Kbit minburst 1540b lat 70.0ms

tbfを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1


4.4.2 パラメータの意味

・burst:トークンを入れるバケツのサイズ(byte単位)をあらわします。

・latency:バケツのトークンが空の場合、送信パケットはtbfのキューにバッファリングされます。バッファリングする最大時間をあらわします。


4.5 netem(Network Emulator)の設定、削除の方法


4.5.1 遅延(DELAY)

送信パケットをqdiscのキューに保留し、デバイスからパケットを送信するタイミングを遅延させる。


遅延を一定にする場合(以下の例では、10ミリの遅延を設定)

eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。

[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

qdiscにnetemを設定する。設定内容は10ミリ秒遅延してパケットを送信する。
[root@admin ~]# tc qdisc add dev eth0 root netem delay 10ms

eth0のqdiscを確認する。qdiscがnetem(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★netem 8009: root refcnt 2 limit 1000 delay 10.0ms

netemを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1



遅延にばらつきを設定する場合(以下の例では、90~110ミリの遅延を設定)

[root@admin ~]# tc qdisc show dev eth0

qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
[root@admin ~]# tc qdisc add dev eth0 root netem delay 100ms 10ms
[root@admin ~]# tc qdisc show dev eth0
qdisc netem 8008: root refcnt 2 limit 1000 delay 100.0ms 10.0ms

[root@admin ~]# tc qdisc del dev eth0 root
[root@admin ~]# tc qdisc show dev eth0
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1



4.5.2 廃棄(LOSS)

送信パケットを一定の割合で廃棄する。

eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。

[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

netemに対して、パケット廃棄率を0.1%に設定する。
[root@admin ~]# tc qdisc add dev eth0 root netem loss 0.1%

パケット廃棄率が0.1%に設定(★印)できたことがわかる。
0.1%程度のパケット廃棄率だと、コマンドの実行に支障は感じられなかった。
[root@admin ~]# tc qdisc show dev eth0
qdisc netem 8004: root refcnt 2 limit 1000 ★loss 0.1%

netemに対して、パケット廃棄率を20%に変更する。
[root@admin ~]# tc qdisc change dev eth0 root netem loss 20%

パケット廃棄率が20%に変更(★印)できたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc netem 8003: root refcnt 2 limit 1000 loss 20%

統計情報を確認する。パケット廃棄数が5個であることがわかる。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc netem 8003: root refcnt 2 limit 1000 loss 20%
Sent 9308 bytes 52 pkt (★dropped 5, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

適当にコマンド(dateやls等)を実行したあと、統計情報を再度確認する。パケット廃棄数が12個に増えたことがわかる。
廃棄率を20%程度にすると、コマンドの実行がスムーズにできなくなった。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc netem 8003: root refcnt 2 limit 1000 loss 20%
Sent 12636 bytes 72 pkt (★dropped 12, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

netemを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1


4.5.3 破壊(CORRUPT)


4.5.4 重複(DUPLICATION)


4.5.4 並び替え(REORDERING)


4.5.5 並び替え(REORDERING)


4.6 pfifo_fastに対する操作


4.6.1 pfifo_fastのキュー長を変更する方法

pfifo_fastのキュー長を確認する。1000(★)であることがわかる。

[root@client ~]# ip l show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT ★qlen 1000
link/ether 00:0c:29:f4:7e:71 brd ff:ff:ff:ff:ff:ff

キュー長を2000に変更する。
[root@client ~]# ip l set eth0 txqueuelen 2000

pfifo_fastのキュー長を確認する。2000(★)に変更されたことがわかる。
[root@client ~]# ip l show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT ★qlen 2000
link/ether 00:0c:29:f4:7e:71 brd ff:ff:ff:ff:ff:ff


5 クラスフルqdiscの設定、削除


5.1 prioの設定、削除の方法

          1:   root qdisc

/ | \
/ | \
/ | \
1:1 1:2 1:3 classes
| | |
10: 20: 30: qdiscs qdiscs
sfq tbf sfq
band 0 1 2

eth0のqdiscを確認する。デフォルトのpfifo_fast(★印)が設定されていることがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

eth0のqdiscにprioを設定する。
[root@admin ~]# tc qdisc add dev eth0 root handle 1: prio

eth0のqdiscを確認する。qdiscがprio(★印)に変更されたことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★prio 1: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

classを確認する。classは自動的に3つ作成される。
[root@admin ~]# tc class show dev eth0
class prio 1:1 parent 1:
class prio 1:2 parent 1:
class prio 1:3 parent 1:

作成したclassに対して、sfqを設定する。
[root@admin ~]# tc qdisc add dev eth0 parent 1:1 handle 10: sfq

作成したclassに対して、tbfを設定する。
[root@admin ~]# tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 20kbit buffer 1600 limit 3000

作成したclassに対して、sfqを設定する。
[root@admin ~]# tc qdisc add dev eth0 parent 1:3 handle 30: sfq

eth0のqdiscを確認する。
[root@admin ~]# tc qdisc show dev eth0
qdisc prio 1: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
qdisc sfq 10: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024
qdisc tbf 20: parent 1:2 rate 20000bit burst 1600b lat 560.0ms
qdisc sfq 30: parent 1:3 limit 127p quantum 1514b depth 127 divisor 1024

qdiscの統計情報を確認する。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc prio 1: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 6780 bytes 46 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024
Sent 3340 bytes ★18 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc tbf 20: parent 1:2 rate 20000bit burst 1600b lat 560.0ms
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 30: parent 1:3 limit 127p quantum 1514b depth 127 divisor 1024
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

qdiscの統計情報を再度確認する。
[root@admin ~]# tc -s qdisc ls dev eth0
qdisc prio 1: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 23036 bytes 100 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 10: parent 1:1 limit 127p quantum 1514b depth 127 divisor 1024
Sent 19470 bytes ★69 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc tbf 20: parent 1:2 rate 20000bit burst 1600b lat 560.0ms
Sent 126 bytes ★3 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0
qdisc sfq 30: parent 1:3 limit 127p quantum 1514b depth 127 divisor 1024
Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0

netemを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

classを確認する。何も登録されていないことがわかる。
[root@admin ~]# tc class show dev eth0
[root@admin ~]#


5.2 htb(Hierarchy Token Bucket)の設定、削除の方法

HTB Home

[root@admin ~]# tc qdisc show dev eth0

qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

[root@admin ~]# tc qdisc add dev eth0 root handle 1: htb default 30
[root@admin ~]# tc qdisc show dev eth0
qdisc htb 1: root refcnt 2 r2q 10 default 30 direct_packets_stat 4

[root@admin ~]# tc class add dev eth0 parent 1: classid 1:1 htb rate 6mbit burst 15k
[root@admin ~]# tc qdisc show dev eth0
qdisc htb 1: root refcnt 2 r2q 10 default 30 direct_packets_stat 14
[root@admin ~]# tc class add dev eth0 parent 1:1 classid 1:10 htb rate 5mbit burst 15k
[root@admin ~]# tc class add dev eth0 parent 1:1 classid 1:20 htb rate 3mbit ceil 6mbit burst 15k
[root@admin ~]# tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1kbit ceil 6mbit burst 15k
[root@admin ~]# tc class show
[root@admin ~]# tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
[root@admin ~]# tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
[root@admin ~]# tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
[root@admin ~]# tc class show
[root@admin ~]# tc qdisc show dev eth0
qdisc htb 1: root refcnt 2 r2q 10 default 30 direct_packets_stat 25
qdisc sfq 10: parent 1:10 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
qdisc sfq 20: parent 1:20 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec
qdisc sfq 30: parent 1:30 limit 127p quantum 1514b depth 127 divisor 1024 perturb 10sec

[root@admin ~]# U32="tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32"
[root@admin ~]# $U32 match ip dport 80 0xffff flowid 1:10
[root@admin ~]# $U32 match ip sport 25 0xffff flowid 1:20
[root@admin ~]# tc filter show dev eth0
filter parent 1: protocol ip pref 1 u32
filter parent 1: protocol ip pref 1 u32 fh 800: ht divisor 1
filter parent 1: protocol ip pref 1 u32 fh 800::800 order 2048 key ht 800 bkt 0 flowid 1:10
match 00000050/0000ffff at 20
filter parent 1: protocol ip pref 1 u32 fh 800::801 order 2049 key ht 800 bkt 0 flowid 1:20
match 00190000/ffff0000 at 20

[root@admin ~]# tc class show dev eth0
class htb 1:1 root rate 6000Kbit ceil 6000Kbit burst 15Kb cburst 1599b
class htb 1:10 parent 1:1 leaf 10: prio 0 rate 5000Kbit ceil 5000Kbit burst 15Kb cburst 1600b
class htb 1:20 parent 1:1 leaf 20: prio 0 rate 3000Kbit ceil 6000Kbit burst 15Kb cburst 1599b
class htb 1:30 parent 1:1 leaf 30: prio 0 rate 1000bit ceil 6000Kbit burst 15Kb cburst 1599b

htbを削除する。
[root@admin ~]# tc qdisc del dev eth0 root

eth0のqdiscを確認する。qdiscがデフォルトのpfifo_fast(★印)に戻ったことがわかる。
[root@admin ~]# tc qdisc show dev eth0
qdisc ★pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

classとfilterを確認する。両方とも削除されていることがわかる。
[root@admin ~]# tc class show dev eth0
[root@admin ~]# tc filter show dev eth0


6 統計情報を表示する方法

[root@server ~]# tc -s qdisc show dev eth0

qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
Sent 353563 bytes 2635 pkt (dropped 0, overlimits 0 requeues 0)
backlog 0b 0p requeues 0


Z 参考情報

Chapter 9. キューイング規則とバンド幅管理

よくわかるLinux帯域制限

Linux TC (帯域制御、帯域保証) 設定ガイドライン

tcを利用したトラフィックコントロール

ネットワークエミュレータ

Traffic Control HOWTO

Advanced traffic control

Use Linux Traffic Control as impairment node in a test environment (part 1)

Use Linux Traffic Control as impairment node in a test environment (part 2)

設定の永続化

linuxで送信される(outboundな)パケットの帯域をIPアドレス+ポート毎に制限

Setting up HTB on CentOS 6

帯域制御する話題と実験

ポート毎に帯域制御したい

9.6. フィルタによるパケットのクラス選別

u32 クラス選別器

Etcd(Tuning)

tc prio qdisc for priorization of mysql traffic

Traffic Control

Network Traffic Control with tc command in Linux

Journey to the Center of the Linux Kernel: Traffic Control, Shaping and QoS

8. Using Class Based Queueing for bandwidth management

9.6. Classifying packets with filters

9.5. クラスフルなキューイング規則