Squid延迟池和多个ACL评估

我在Ubuntu的amd64盒子上testing鱿鱼3.0。 当我使用多个ACL设置delay_access参数时,我遇到了延迟池类的问题。 已经通过鱿鱼维基和没有结论。 也许有人或鱿鱼大师可以在鱿鱼3.x使用延迟池分享他们的经验,2.x略有不同,我认为。 我把所有的问题都放在一个问题上,因为所有的东西都和这个有趣的鱿鱼有关。

一个简单的例子:

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规则来匹配两个或更多的ACL,那么我们如何为多个ACLS实现OR。

问题2:下面的参数是否给出了相同的效果?

 delay_access 1 work_day streaming_site 

要么

 delay_access 1 work_day delay_access 1 streaming_site 

问题3:一旦延迟池不被使用。 该池会影响总带宽吗? 例如delay_access 1规则在工作时间18:01 ++之后已过期。 为什么延迟池不能重置回不使用。 或者如何将其重置为空?

提前感谢您分享您的经验。


我已经检查,阅读和阅读和testing的引用….但仍然有兴趣知道一些其他人使用多个ACL的经验。

  1. 官方wiki :仍然没有足够的关于多个ACL的解释
  2. Visolve.com :开源咨询公司与一些鱿鱼工作
  3. Squid ACL和延迟池文章
  4. 有关延迟池的Howtoforge文章 :这已在serverfault中的另一个问题中提到
  5. 从它工具箱的网站

你可能想检查你的例子中列出的“delay_pool”指令 – 不应该是“delay_pools”(用“s”)吗? 我在本地testing了它(鱿鱼2.7而不是3),并导致所有的delay_pools失败。

关于问题1,ACL是“或”的。 以下是我如何使用它来不使用延迟池通过代理访问内部资源的示例:

 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当时没有使用,桶也会以正常的速率重新填充。