2008年7月15日火曜日

Windows、Linuxで帯域制限をする

帯域を制限したいという相談を立て続けにもらいまいした。
 
思惑はそれぞれでしたが、プラットフォームが違う環境での話だったので少々困って、
OS別にちょっと調べて見た結果を備忘録代わりに。
 
 


Linuxで帯域制限をする


てっきりiptablesでできるもんだと思っていましたが、
iprouteパッケージのtc コマンドでやるようです。最近のディストリビューションなら大体使えるはず。
 

詳しくは下記から「Chapter 9. キューイング規則とバンド幅管理」を参照します。
http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/
 

大分細かい設定ができる反面、敷居が高い。Filterまで理解すれば使えるはず。
一応、単純にすべて制限するならtcコマンドでtbfの設定一行でできるのでそれだけ覚えておけばいいかも。
 
 

Windowsで帯域制限する


といっても今回触れるのはWindowsServer2008です。
 

WindowsServer2008には「ポリシーベースのQOS」という機能がついていて、
GUIで結構柔軟なポリシーを設定できます。
 
詳しくはTechNetみるのが一番です。
http://www.microsoft.com/japan/technet/windowsserver/2008/library/6de2a6ca-c01a-475d-9aea-202587a7227f.mspx?mfr=true
 

結構どこから設定すればよいのか分からないかも知れないのでメモ
mmc.exeでコンソールを起動して、スナップインの追加削除で、「グループポリシーオブジェクトエディタ」を追加。
 
コンピュータポリシーの設定項目なので、デフォルト管理ツールにある「ローカルセキュリティポリシー、」では出てこないです、何でこんな仕様なんでしょうね。
 
使う分にはIP制限、トランスポート層での制限と、色々設定できて使いやすそうです。
 
 

ただこれ、送信方向はきっちり設定できるけど、受信方向はすごく簡素な設定しかない。
Linuxの文書読んで、少し認識が間違ってたので修正、
結局QOSでやる範囲では、インターフェースから送信する時点でしかコントロールできない。そりゃそうか。
 
サーバとしては別によいんですが、回線のシミュレートには使っちゃ駄目ですね。
 


おまけ:
結局、使えるならルータなどのネットワーク機器でやってしまうのが一番手っ取り早くて確実です、
YAMAHAのルータ、RTXシリーズで見ると、フィルタプロパティでbandwithを指定してインターフェイスに割り当てるだけとシンプルでした。