最終更新日: 2014年 5月18日
Squid Home / FAQトップ

遅延プール・クラス2

クラス 2(Class 2)の遅延プールでは、Class 1によるプール毎に集約バケット(バケツ)を作成し、さらに「個別の接続ごと」のバケットを作成し、そのバケットに目的に合わせた速度を定義することで、遅延プールの速度制限としていきます。 
速度定義された遅延プールにアクセスリスト(ACL)を定義することで、そのアクセスリストに対応する端末やサーバの速度制限を実施していきます。
この遅延プールの利用シーンとしては、単一バケットで全体の速度を設定して、その範囲の中でさらに細かな速度設定をしていきます。
個別のバケットの判定は、IPv4アドレスにおけるIPアドレスの第4オクテッド(24~32ビット / xx.xx.xx.yy の yyの部分)によって判断されます。例えば、192.168.10.0/24のサブネットの所属するクライアントに対してのみクラス2の遅延プールを利用させた場合、個別バケットはそれぞれのクライアント端末用と同じ意味となります。
個別のバケット毎に速度制限されるので、クライアントが別のバケットを使う限り負荷が集中しないようになります。なお、クラス2プールはIPv4での接続においてのみ利用可能です。
(なお、以下で使っている帯域制限でのバイトサイズは 1KB=1000バイト とする近似値です)

1. 一つのクラス2遅延プールを用意して端末の帯域を制限する構成

この構成の設定例は次のようになります。
  • 100MBの集約バケットで 50MB/sec の速度制限を実施する。 (全個別バケットを合わせて、この速度までで上限となる)
  • 個別バケットは、 速度ともに 5MB/sec とする。 
  • ACLとしてサブネットで192.168.10.0/24と192.168.20.0/24を対象にする 。(すべてを対象にするなら、 0.0.0.0/0 とするか、delay_accessのACLの指定部分を "all"にすれば良い。(...ハズ)
  • ACLにマッチしなかった場合には、通常の速度(システムの速度)で転送される。
(squid.conf)
# ACLs
acl some_clients_1 src 192.168.10.0/24
acl some_clients_1 src 192.168.20.0/24

# Delay Pool
delay_pools 1

delay_class 1 2 # pool 1 is a class 2 pool

delay_parameters 1 50000000/100000000 5000000/5000000 # 50MB/sec, 100MBバケット、 5MB/sec, 5MBバケット
# もし、集約バケットを無制限としたいなら以下のように設定します。
# delay_parameters 1 -1/-1 5000000/5000000

delay_access 1 allow some_clients_1
delay_access 1 deny all
この構成では、ACLにマッチしたクライアントは、最大で5MB/secでの転送が行われます。192.168.10.0/24 と 192.168.20.0/24 のそれぞれのネットワークにおいて、同一のホストアドレスとなるクライアントは”同じ個別バケット”を共有します。

クラス2と他のクラスを組み合わせて構成することも可能です。

クラス2の遅延プールを複数用意する方法は、クラス1の「遅延プール(高速用・低速用)を複数用意する構成」を参照してください。この構成において、使用するプールの設定がクラス2に変更されるだけです。
なお、複数のプールを構成する場合には、プールが評価される順に注意してください。 プールの評価は、delay_access の登録順では無く、プール番号順となります。


参考: