クラス 3(Class 3)の遅延プールでは、Class 2によるプール毎およびホスト毎のバケット(バケツ)を作成し、さらに「ネットワークアドレスごと」のバケットを作成し、そのバケットに目的に合わせた速度を定義することで、遅延プールの速度制限としていきます。
速度定義された遅延プールにアクセスリスト(ACL)を定義することで、そのアクセスリストに対応する端末やサーバの速度制限を実施していきます。
この遅延プールの利用シーンとしては、単一バケットで全体の速度を設定して、さらにネットワーク(通常は組織)範囲の中で制限をした上で、ホストアドレスによって細かな速度設定をしていきます。
ネットワーク・バケットの判定はIPv4アドレスにおけるIPアドレスの第3オクテッド(17~24ビット / xx.xx.zz.xx の zzの部分)部分を使い作成されます。
個別のバケットの判定は、IPv4アドレスにおけるIPアドレスの第4オクテッド(24~32ビット / xx.xx.xx.yy の yyの部分)によって判断されます。
個別のバケット毎に速度制限の前で、ネットワークバケットでの速度制限がされるので、例えば組織毎に速度の違うバケットを用意した上でクライアントの負荷が集中しないようバケットを構成できます。
(なお、以下で使っている帯域制限でのバイトサイズは 1KB=1000バイト とする近似値です)
次のような構成条件で遅延プールを構成するのものします。
- 集約バケットで 50MB/sec の速度制限を実施する。 (全ネットワークバケットを合わせて、この速度までで上限となる)
- ネットワークアドレス毎に、20MB/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 3 # pool 1 is a class 3 pool
delay_parameters 1 50000000/50000000 20000000/20000000 5000000/5000000
# 50MB/sec,50MBバケット、 20MB/sec,20MBバケット、5MB/sec, 5MBバケット
# もし、単一バケット、を無制限としたいなら以下のように設定します。
# delay_parameters 1 -1/-1 20000000/20000000 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
のそれぞれのネットワークにおいて、同一のホストアドレスとなるクライアントは”同じ個別バケット”を共有します。
クラス3と他のクラスを組み合わせて構成することも可能です。
クラス3の遅延プールを複数用意する方法は、
クラス1の「遅延プール(高速用・低速用)を複数用意する構成」を参照してください。この構成において、使用するプールの設定がクラス2に変更されるだけです。
なお、複数のプールを構成する場合には、プールが評価される順に注意してください。 プールの評価は、delay_access の登録順では無く、プール番号順となります。