このページでは、Squidに用意されている遅延プールの利用方法について説明を行っていきます。
遅延プール(Delay Pool/ディレイ・プール)は、Proxyの利用者(クライアント)にインターネット接続における接続速度を強制させる仕組みです。
この機能の目的は、限り有るインターネット回線の帯域をユーザや組織、地域単位で制限することで特定の端末やサーバに優先的な接続速度を提供したり、最小限のアクセス速度に制限することです。
遅延プールは1つのプールに最低1つのバケット(バケツ)を用意し、各バケット単位で速度の調整をすることで、このバケットを経由のアクセス通信速度の制御を行う仕組みです。
もっとも基本的な概念図は左図のとおりとなります。
左図では、本来100MB/sec(bpsではなくバイト/秒です)の帯域のあるネットワークに設置された Squid に遅延プールとして1つのバケットを用意して、このバケット経由の通信速度を10MB/secへと強制します。
結果として、このバケットを使うようにACLで設定されたクライアントでは、10MB/sec以上での通信はできないことになります。
遅延プールは、同時に複数持たせることが可能です。
これにより、複数の遅延プールでそれぞれ違う速度のバケットを用意しておき、ACLでどの遅延プールを利用させるかを設定することで、特定の端末には速い(または遅い)遅延プールを利用させることも可能です。
(例えば、サーバセグメントには速い遅延プールを利用させ、一般ユーザには遅い遅延プールを利用させるなど)
上記までは、1つのプールに1つのバケット(バケツ)を定義していく尤も基本的な遅延プールの形式です。 Squidでは、遅延プールに設定するバケットの形態として、上記での(Class
1)の形態以外に合計5つのクラス形態が用意れています。
用意されている5つのクラスでは、それぞれのクラスによりプールに定義されるバケットの数および構成が変わってきます。これによって、ネットワークの規模や、利用者、利用させる通信速度によって使うバケットを細かく調整できるようになっています。
各クラスによって定義されるバケットは次のようになります。
クラス | 機能概要 | 利用シーン |
---|---|---|
Class 1 | 1つのプールに単一のバケットを割り当てます | 同じACLに属するすべての端末で同じバケットをシェアする尤も基本的な遅延プールです。 |
Class 2 | Class 1と合わせ、IPアドレス毎の個別バケットが割り当てれます。個別バケットはIPアドレスの第4オクテッド目で判断されます。(xx.xx.xx.yy の yy の部分) | Class 1に比べ、各端末での負荷が分散されます。隣の端末が大きなデータをダウンロード中でも、別のバケットを使ってのアクセスができる可能性が高くなります。 |
Class 3 | Class 2と合わせ、IPアドレスの第3オクテッドによるネットワーク毎のバケットが割り当てられます。 ( xx.xx.zz.yy の zz の部分) | Class 2に比べ、ネットワーク単位での負荷分散が実施されます。 |
Class 4 | Class 3に合わせユーザ認証毎のバケットが割り当てられます。 Squidのユーザ認証機能(Basic,NTLM,LDAP等)を設定する必要があります。 |
Class 3に比べユーザ単位のバケットが割り当てされるので、負荷分散はユーザ単位となります。 |
Class 5 | ACLはクライアントからのリクエスト中のタグによって個別のバケットが割り当てられます。 | ACL単位で負荷分散が実施されるので、ネットワークの配置状況に関係のない負荷分散が実現できます。(訳者: 例えば、画像用には100MB/secとかでしょうか?) |