Пулы задержки 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.
- Официальная вики: все еще недостаточно объяснений о нескольких ACL
- Visolve.com: консалтинговая фирма с открытым исходным кодом.
- Статья Squid ACL и пул задержек
- Статья Howtoforge о пулах задержки: это упоминалось в другом вопросе в serverfault
- С этого сайта набор инструментов
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 не использует его в то время.