Я тестирую squid 3.0 на коробке ubuntu amd64. Я сталкиваюсь с проблемой с классами пула задержки, когда устанавливаю параметры 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, с помощью правила ИЛИ или правила И. Если он использует правило И для сопоставления двух или более ACL, что мы делаем, чтобы достичь ИЛИ для нескольких 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.
Возможно, вы захотите проверить директиву "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 не использует ее в данный момент.