Part1では、トラフィック制御機構のアプローチについて紹介する。主に、トラフィック制御を行う場所や、パケットを処理する際のキューイング方式などを解説する。
前述した制御方式は、数多くあるものの一部といって良い。OSで使用可能なネットワーク制御ツールによって、どのようなトラフィック制御方式を実装しているかは異なっている。いずれの場合も、実装している方式をうまく組み合わせて目的とするQoS管理を行うわけだ。
以下、代表的なトラフィック制御機構について解説しておこう。
FreeBSDのパケットフィルタリングツールであるIPFWでは、カーネルオプションとして、
options DUMMYNET
を組み込むか、あるいはカーネルモジュールdummynet.koをロードすることで、dummynetによる帯域制御が利用可能となる。
IPFW+dummynetでは、Packet ShapingとWF2Q+による帯域制御をサポートしている。
PFでは、パケットキューイングの統合的な実装であるALTQと一体化して、パケットフィルタリングだけでなく、トラフィック制御も可能になっている。PFは比較的新しいパケットフィルタツールであり、OpenBSD以外にFreeBSDとNetBSDにも取り込まれたことを受け、今後利用の幅が広がっていくと予想される。
PF経由で呼ばれるALTQでは、制御方式としてPRIQ、CBQ、HFSC(Hierarchical Fair Service Curve)が利用できる。ALTQを単体利用する場合は、さらにRED(Random Early Drop)、RIO(RED with IN/OUT)など選択肢が増える。これらの詳細については、次のURLを参照してほしい。
http://www.csl.sony.co.jp/person/kjc/kjc/software.html#ALTQ
Linuxカーネルに含まれるIP接続に関する制御用フレームワークiproute2でも、トラフィック制御の機能が利用可能だ。トラフィック制御関連の設定を行うものとしては、tcコマンドが用意されている。
iproute2で利用できる制御方式には、CBQ、RED、TBF(Token Bucket Filter)、SFQ(Stochastic Fairness Queueing)、HTB(Hierarchical TBF)など、一般的なものから独自に実装されたアルゴリズムまで多数存在する。この中の使用頻度の高いものについては、以下のサイトに解説があるので参考にしていただきたい。
http://www.linux.or.jp/JF/JFdocs/Adv-Routing-HOWTO/ (日本語)
WANに接続している機器では、パケットフィルタによって不正アクセスを未然に防ぐというのはもはや常識だろう。ただ、パケットフィルタの場合、特定のホストからのアクセスを禁止/許可の2値しか選べない。その中間的な選択肢として、「○○へのアクセスが多くて仕方ないが、全面禁止してしまうのは忍びない。少し遅くしようか」といった設定もできるのがトラフィック制御の良い点でもある。積極的にサービスを公開しつつ、DoSや突発的なアクセス過多に対する耐性も考慮したサーバー環境を構築していきたい。
カーネルオプションとして「options IPFIREWALL」も必要だが、/etc/rc.confで「firewall_enable=YES」と指定しておけば、自動的にカーネルモジュールipfw.koがロードされる。したがって、ipfwによるファイアウォール機能を利用している場合、自動的に組み込まれているはずだ。
FreeBSD 5.xでは、IPFW2。
Alternate Queueing for BSD UNIXの略で、各キューイング方式を実装するためのフレームワーク。詳細はこちらを参照。
詳細は、http://www.openbsd.org/faq/pf/ja/、http://www.openbsd.org/faq/pf/ja/queueing.htmlを参照。
Copyright(c)2010 SOFTBANK Creative Inc. All rights reserved.