私はubuntuAMD64ボックスでsquid3.0をテストしています。複数のACLでdelay_accessパラメータを設定すると、遅延プールクラスで問題が発生します。イカのウィキを通過してきましたが、決定的なものは何もありません。おそらく誰かまたはイカの第一人者がイカ3.xの遅延プールを使用して経験を共有することができます。2.xは少し違うと思います。すべてがイカのこの興味深い機能に関連しているので、私はすべてを1つの質問に入れています。
簡単な例:
acl workday time MTWHF
acl work_time time 9:00 - 18:00
acl work_day time MTWHF 9:00 - 18:00
acl streaming_site dstdomain youtube.com hulu.com
delay_pools 2
delay_class 1 2
delay_class 2 2
delay_access 1 work_day streaming_site
delay_parameters 1 500000/500000 100000/100000
delay_access 1 deny all
delay_access 2 !work_day
delay_parameters 2 1000000/1000000 500000/500000
delay_access 2 deny all
質問1:squidはdelay_accessで複数のACLをどのように評価しますか?ORルールまたはANDルールを使用していますか。 ANDルールを使用して2つ以上のACLを照合している場合、複数のACLでORを達成するにはどうすればよいですか。
質問2:以下のパラメーターは同じ効果をもたらしますか?
delay_access 1 work_day streaming_site
または
delay_access 1 work_day
delay_access 1 streaming_site
質問3:遅延プールが使用されていない場合。そのプールは合計帯域幅に影響しますか?たとえば、18:01 ++の勤務時間後に期限切れになったdelay_access1ルール。遅延プールが未使用にリセットされない理由。または、それを空にリセットする方法は?
あなたの経験を共有してくれてありがとう。
私がチェックし、読み、読み、テストした参考文献....しかし、他の人々が複数のACLを経験していることを知りたいと思っています。
例にリストされている「delay_pool」ディレクティブを確認することをお勧めします。「delay_pools」(「s」付き)ではないでしょうか。私はそれをローカルでテストしました(まあ、Squid 2.7は3ではありません)、そしてそれはすべてのdelay_poolsを失敗させました。
質問1に関しては、ACLはORされています。これは、プロキシを介した内部リソースへのアクセスに遅延プールを使用しないために使用する方法の例です。
acl delay_pool_local_1 dst 192.168.0.0/24
acl delay_pool_local_2 dst 192.168.1.0/24
delay_access 1 allow delay_pool_local_1
delay_access 1 allow delay_pool_local_2
delay_access 1 deny all
質問2に関しては、各aclディレクティブを独自の行に配置する必要があります。
質問3の場合、簡単な答えは、あなたの例に基づくと、各クライアントが利用できる帯域幅の「バケット」は常に即座に補充されるということです。したがって、それらが空になることはありません。
より長い説明は、「バケツ」は常に指定した速度で補充されるということです。クライアントは、delay_initial_bucket_levelの帯域幅で開始します。クライアントがダウンロードすると、データはバケットから削除されます。したがって、delay_initial_bucket_level 50を指定すると、バケットは50%いっぱいで開始されます。上記の例では、バケットは常に即座に補充されます(たとえば、「100000/100000」として指定されているため)。つまり、クライアントは単純に100000に調整されます。5000/ 100000を指定した場合、バケットは次の時点で「補充」されます。 5000のレート。その場合、ACLがその時点でバケットを使用していなくても、バケットは通常のレートで補充されます。