Пулы задержки Squid и оценка нескольких ACL

Я тестирую Squid 3.0 на Ubuntu AMD64 Box. Я сталкиваюсь с проблемой с классами пула задержки, когда я устанавливаю параметры delay_access с несколькими ACL. Проходили вики по squid и ничего убедительного. Возможно, кто-то или гуру squid могут поделиться своим опытом использования пулов задержек в squid 3.x, 2.x немного отличается, я думаю. Я помещаю все в один вопрос, так как все связано с этой интересной особенностью в squid.

Простой пример:

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 оценивает несколько ACL в delay_access, используя правило OR или правило AND. Если он использует правило AND для сопоставления двух или более списков ACL, что мы делаем для достижения OR для нескольких ACLS.

Вопрос 2: дают ли параметры ниже тот же эффект?

delay_access 1 work_day streaming_site

или же

delay_access 1 work_day
delay_access 1 streaming_site

Вопрос 3: Как только пул задержек не используется. Будет ли этот пул влиять на общую пропускную способность. Например, правило delay_access 1, срок действия которого истек в нерабочее время в 18:01++. Почему пул задержек не сбрасывается обратно, чтобы не использовался. Или как сбросить его обратно на пустой?

Заранее спасибо, что поделились своим опытом.


Ссылки, которые я проверил, прочитал, прочитал и протестировал.... но все еще хотел бы знать, что некоторые другие люди сталкиваются с несколькими ACL.

  1. Официальная вики: все еще недостаточно объяснений о нескольких ACL
  2. Visolve.com: консалтинговая фирма с открытым исходным кодом.
  3. Статья Squid ACL и пул задержек
  4. Статья Howtoforge о пулах задержки: это упоминалось в другом вопросе в serverfault
  5. С этого сайта набор инструментов

1 ответ

Решение

Возможно, вы захотите проверить директиву delay_pool, указанную в вашем примере - не должно ли это быть delay_pools (с 's')? Я протестировал его локально (ну, с Squid 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 не использует его в то время.

Другие вопросы по тегам