Подробное описание Squid delay pools, с примерами

В прокси сервере Squid есть возможность ограничивать скорость, делаеться это при помощи Delay pools. В версии 2.X этих пулов три класса, а в 3.X добавили еще два новых и их стало пять.
Но для начала давайте рассмотрим основные параметры.

 

И так delay_pools это параметр который задает общее количество наших пулов, тоесть если вы собираетесь использовать например три пула, то соответственно вы должны в самом начале написать

delay_pools 3

Далее идет delay_class. Этим параметром мы задаем номер пула и его класс, например мы хотим описать второй пул, который у нас пренадлежит к третьему классу:

delay_class 2 3

Необходимо так же задать на какой лист доступа будет распространяться данный пул при помощи delay_access:

delay_access 1 allow users

где users задеться при помощи acl, а "1" это номер нашего пула.

И последний параметр, это delay_parameters, в котором мы описываем ограничение:

delay_parameters 1 64000/128000

означает, что мы хотим ограничить наших пользователей первого пула скоротью в 512 кбит = 64 кбайта = 64000 байт, при этом первые 128 кбайт каждого запроса будут скачаны на максимальной скорости, затем, скорость будет ограничена до 512 кбит. Для того что бы убрать ограничение используйте значение -1, пример:

delay_parameters 1 -1/-1

означает, что для пула номер один нет никаких ограничений.

Итак, давайте перейдем к классам

Class 1 -ограничивает общюю скорость для всех хостов входящих в определенную группу. Пример:

delay_pools 1
delay_class 1 1
delay_access 1 allow all
delay_parameters 1 64000/128000

тоесть, пул номер один, первого класса, для сети описанной в листе доступа all, ограничивает скорость до 512 кбит/с, при этом первые 128 кбайт будут скачиваться на максимальной скорости, это ограничение общее и действует на всех, у пользователей никаких ограничений нет.

Class 2 - Ограничена общая скорость загрузки и скорость загрузки индивидуального хоста(IPv4 class C)

acl users src 192.168.0.1/24
delay_pools 1
delay_class 1 2
delay_access 1 allow users
delay_parameters 1 -1/-1 64000/128000

Пул номер один, второго класса, для сети описанной в листе доступа users. -1/-1 означает что для сети 192.168.0.1/24 в целом нет ограничений, но есть ограничение 64000/128000 для каждого пользователя.

Class 3 - Ограничена общая скорость загрузки, скорость загузки подсети и скорость загрузки индивидуального хоста (IPv4 class B).

acl users src 192.168.0.1/23
acl office src 172.16.0.1/24
acl bad_office src 172.16.0.15/32
delay_pools 1
delay_class 1 3
delay_access 1 allow users office !bad_office
delay_parameters 1 -1/-1 64000/128000 4000/1000

Пул номер один, третьего класса, для сетей описанных в листе доступа users и office. -1/-1 означает что общая скорость не ограничена, для сетей описанных в листах доступа users и office она ограничена 64000/128000 и каждый IP в данных сетях ограничен 4000/1000. При этом на IP адресс из листа доступа bad_office это правило не распространяеться, так как в параметре delay_access перед ним стоит восклецательный знак

Class 4 - Все то же самое что в Class 3, плюс ограничение для каждого пользователя. Данный пул будет работать только если у вас включен хоть какой-то способ аутентификации(IPv4 class B).

acl users src 192.168.0.1/23
acl auth  proxy_auth  user1 user2 user3
delay_pools 1
delay_class 1 4
delay_access 1 allow users office !bad_office
delay_parameters 1 -1/-1-1/-1 32000/32000 16000/16000

И так, пул номер 1, четвертого класса, для сети 192.168.0.1/23 и пользователей описанных в листе доступа auth. Общего ограничения и на сеть нету, но есть ограничение на IP - 32000/32000 и для пользователей из листа auth 16000/16000. Например если пользователь будет залогинен сразу на нескольких компьютерах, то на всех этих компьютерах его сумарная скорость не привысит 16000/16000, при этом все остальные пользователи из сети 192.168.0.1/23 будут ограничены 32000/32000.

Небольшой пример. Пускай у нас есть оффис, в нем есть три пользователя(user1, user2, user3) для которых должно быть ограничени 128 кбит/с, так же один человек(user4) для которого должно быть ограничени 256 кбит/с и босс(boss1), на которого не должно быть ограничения. Конфигурация будет выглядить так:

acl user_normal proxy_auth  user1 user2 user3
acl user_speed proxy_auth  user4
acl boss proxy_auth  boss1
delay_pools 2
delay_class 1 4
delay_class 2 4
delay_access 1 allow user_normal
delay_access 1 deny all
delay_access 2 allow user_speed
delay_access 2 deny all
delay_parameters 1 -1/-1-1/-1 -1/-1 16000/16000
delay_parameters 2 -1/-1-1/-1 -1/-1 32000/32000

Class 5 - Ограничивает скорость для запросов сгрупированных по их тегу, работает на external_acl's с тагом reply.

По поводу Class 5, тяжело что-то сказать, но в ближайшее время, я постараюсь дополнить примерами этот раздел.

И еще один параметр, это delay_initial_bucket_level. С первого взгляда он не совсем понятен, но все очень просто, когда пользователь обращаеться первый раз к сквиду, после перезапуска или реконфигурации, то сквид проверяет в delay pools этого пользователя, и помещает его в определенную группу(воронку) ограничения, например 16000/16000, так вот, параметр delay_initial_bucket_level отвечает за первичную заполненость этих групп. Если вы не изменяете этот параметр, то изначально он равен 50%. Как пример, если поставить значение 100%, то все возможные клиенты из листа доступа к которому приминим наш delay pool будут внесены во все группы, это ускорит их первый запрос к серверу, но при этом сервер должен хранить всю, возможно лишнюю, информацию в памяти, это может быть лишним расточительством ресурсов. 50% достаточно оптимальное значений.

В завершении лишь скажу, что для того, что бы пользоваться delay pools, вам необходимо скомпелировать Squid с параметром --enable-delay-pools

Теги

Добавить комментарий

Ограниченный HTML

  • Допустимые HTML-теги: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.