Linuxでトラフィックチューニング

tcコマンドやiprouteコマンドでQoSを行うのは結構面倒なので、それをラッパーしたcbq.initを使う。

Kernelでの制限となるので、ミドルウェアに依存せず制限できるのが良い(apacheリスタートとかがいらない)。

クライアントから見てダウンロードしか制限できないのが欠点。

細かい説明は調べたらいっぱい出てくるから、とりあえず使う方法。

# wget http://jaist.dl.sourceforge.net/sourceforge/cbqinit/cbq.init-v0.7.3
# mv cbq.init-v0.7.3 cbq.init
# chmod 755 cbq.init
# cp -p cbq.init /etc/init.d/.
# chkconfig cbq.init on
# cd /etc/sysconfig/cbq/
# vi cbq-[0002-FFFF].(.*)

例えば、WEBサーバ(192.168.0.5)に対してクライアント(192.168.1.0/24)からのダウンロードを日曜日の20時から24時までは256Kbit、それ以外の時間帯は512Kbitに制限したい場合、

# cat cbq-0080.http
DEVICE=eth0,1000Mbit,100Mbit
RATE=512Kbit
WEIGHT=51Kbit
PRIO=5
RULE=192.168.0.5:80,192.168.1.0/24
TIME=0/20:00-24:00;256Kbit/25Kbit
として、起動スクリプトリスタート。
# /etc/init.d/cbq.init restart
結構細かく設定できるので、トラフィック系はこれでだいぶチューニング・制限できる。
DEVICE=<ifname>,<bandwidth>[,<weight>]
RATE=<speed>
WEIGHT=<speed>
PRIO=<1-8>
RULE=[[saddr[/prefix]][:port],][daddr[/prefix]][:port]
TIME=[<dow>,<dow>, …,<dow>/]<from>-<till>;<rate>/<weight>