送信帯域を制限する

日付 2016.02.03
タイトル 送信帯域を制限する
本文
Linuxサーバからの送信速度を制限する。

# デバイス eth0 の通信レートを 1Mbpsに制限
# ※ 制限をかけてもターミナル操作にあまり支障が出ないよう、burstを低めに設定
tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 1500

# デバイス eth0 から IPアドレス 192.168.1.2 への送信レートを 1Mbit に制限する
# ※ とても大きなバックアップファイルを他サーバへ送りたいが、稼働環境への影響を極力抑えたい、など。
# ※ ratency設定が無いため、コマンド作業サーバと送信先サーが場同一の場合、ターミナル入力に影響が出る可能性がある。
tc qdisc add dev eth0 root handle 1:0 htb
tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1mbit burst 1500
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.2 flowid 1:1

# 状態を確認
tc -s qdisc ls

# 設定の解除
tc qdisc del dev eth0 root

# 受信帯域を制限するにはどうするか
9.7. 中間キューイングデバイス (Intermediate queueing device :IMQ)の9.7.1. 設定例が使えるかもしれない。ただ、iptablesを利用する必要があるため、作業ごとに設定の追加削除は危険が伴うのでは?

あるいは、予め二段構成にしておき、一旦受け取ってから再送出するときに制限をかけられるようにしておくのが運用上現実的かもしれない。具体的には仮想サーバをルータとして作成し、仮想サーバで一旦パケットを受け取り、実サーバ側へ流す際に送信帯域として制限するなど。

# 参考
Linux Advanced Routing & Traffic Control HOWTO