ALTQ

ALTQ（代替キューイング：ALTernate Queueing）は、BSD系UNIXのネットワークインタフェースでのキュー制御に関連するパケットスケジューラのためのフレームワークである。ALTQはキューイングによる制御と、リソースの共有とサービスの質の向上を実現するのに必要なQoS関連のコンポーネンツを提供する。ほとんどのBSD系のルーターに実装されている。ALTQは、ベースディストリビューションに含まれているFreeBSD・NetBSD・DragonFly BSDのベースとするディストリビューションに含まれており、OpenBSDのパケットフィルタであるPFにも統合されている。

 仕組み 
 キューイング 
通信プロトコルには、HTTPやSSHのようなアクセスの遅延に敏感に対処せざるを得ないものとFTPのように多少時間がかかってもQoSにさほど問題にならないものがある。

例えば、SSHクライアントで鍵がタイプされた場合には、直ちに反応することが期待されるが、ルーターがSSH接続の処理の前にFTP接続からの大量のパケットの塊を処理しようとした場合、SSH接続のパケットはキューに取り残されるので、SSH の接続は遅延し、動きが悪くなったように見えるかも知れない。あるいは、ルーターがすべてのパケットを保持するのに十分大きなキューがない場合には、 このようなパケットは廃棄されてしまうかも知れない。そこで、 使用されているキューイングの戦略を変更することが出来れば、異なるアプリケーション・ユーザ・コンピュータの間でネットワークの帯域幅を適正に共有することができるようになる。

 スケジューラ 
ALTQのスケジューラは、処理すべきキューとその中の順序を決定する。原則として、処理はFIFO（先入れ先出し）とする。もし、キューが一杯になると、 新しく到着したパケットは廃棄される(テイルドロップ)。

CBQ (Class Based Queueing)
複数のキューやクラスの間で、ネットワーク接続の帯域幅の分割を行うキューイングアルゴリズムである。
CBQ のキューは階層的なツリー構造で配置される。階層の最上位には、利用可能な帯域幅の総量を定義する「ルート (root) キュー」が位置していて、「子キュー」がルートキューの下に生成され、それぞれにルートキューの帯域幅の一部が割り当てられている構造である。
子キューの更に下の階層も設けることが出来る。 親キューが割り当てられた帯域幅以内で、帯域をその子キューに分割することが出来る。

PRIQ (Priority Queueing)
それぞれのキューに固有の優先度が与えられた複数のキューを、ネットワークインタフェースに割り当てることで、より高い優先度を持つキューは、常により低い優先度のキューより先に処理が行われるようにする。

RED (Random Early Detection)
輻輳回避アルゴリズムである。その仕事は、キューが一杯にならないことを確実にすることで、ネットワークの輻輳を 回避することである。
これは、キューの平均的な長さ(サイズ)を連続的に計算し、それを2つの閾(しきい)値、つまり下限の閾値および上限の閾値と比較することによって行われる。
もし、平均的なキューのサイズが下限の閾値を下回っている場合には、パケットが廃棄されるようなことは全くない。
しかし、平均値が上限の 閾値を上回っているような場合には、新しく着信するすべてのパケットが 廃棄されてしまう。
もし、平均値がこれらふたつの閾値の間の値であれば、 平均的なキューのサイズから計算された確率に基づいて、パケットは廃棄されることになる。これは換言すれば、平均的なキューのサイズが上限の閾値に近付けば近付くほどパケットはより多く廃棄されることになるということである。
パケットを廃棄する場合には、REDはパケットを廃棄する接続をランダムに選択する。 これは、より大きな帯域幅の総量を使用している接続ほど、パケットが廃棄される 確率がより高いということになる。

 設計されるまでの経緯 
BSD系オペレーティングシステム (OS) 上にIPv6を中心としたインターネット技術の標準コードを実装することを目的としたKAMEプロジェクトの一員であった長 健二朗によってQoSを実現するトラフィック管理技術として設計・実装した。

 関連項目 
帯域制御
帯域幅調整
トラフィックシェーピング
Berkeley Software Distribution (BSD)
FreeBSD
OpenBSD
NetBSD
DragonFly BSD
PF (ファイアウォール)
KAMEプロジェクト

 脚注 

 外部リンク 
ALTQ home
PF: パケットキューイングと優先順位付け OpenBSD
PF and ALTQ FreeBSDプロジェクト作成ドキュメント

Category:スケジューリング (コンピューティング)
Category:コンピュータ・ネットワーク・セキュリティ
Category:コンピュータネットワーク
Category:BSD
Category:通信工学
Category:インターネット接続
Category:データ転送
Category:ネットワークソフト
Category:入出力
Category:Cでプログラムされた自由ソフトウェア