一般的にTCには2つのethのNICがあります。これを便宜的にeth1, eth2とします。上記のコマンドは、どの方向の帯域制限になりますか
tc
コマンドの帯域制限 (tbf
や netem
) は 送信(アウトバウンド, egress) に適用されます。したがって、上記のコマンドは eth0 から外部に送信されるトラフィック に対して帯域制限が適用されます。
eth1, eth2 の場合の制限方向
eth1
と eth2
がある場合、それぞれのインターフェースに tc
を適用すると、次のようになります。
tc qdisc add dev eth1 root tbf rate 5mbit burst 10kb latency 1ms
- eth1 から外部へ送信するトラフィック(egress) に 5Mbps の帯域制限
tc qdisc add dev eth2 root tbf rate 5mbit burst 10kb latency 1ms
- eth2 から外部へ送信するトラフィック(egress) に 5Mbps の帯域制限
つまり、各インターフェースから送信される通信に適用される ため、受信(ingress)には影響しません。
受信(ingress)側の帯域制限をしたい場合
tc
は基本的に送信 (egress
) に適用されるため、受信 (ingress
) の帯域制限を行うには ingress qdisc
を利用するか、ifb
(Intermediate Functional Block device) を使います。
eth1 の受信帯域を 5Mbps に制限する場合
これにより、eth1 への受信トラフィック を 5Mbps に制限できます。
まとめ
tc
のデフォルトの動作では 送信(egress) のみ帯域制限される。tc
をeth1
に適用すると、eth1
から出ていく通信に制限がかかる。- 受信(ingress)を制限したい場合は
ifb
デバイスを使う。
したがって、最初のコマンドは eth0 の送信(egress)方向 に適用される帯域制限になります。