Ограничения по скорости
На сегодняшний день, когда ушли в прошлое каналы с пропускной способностью в 256 кбит/с и менее, можно ошибочно предположить что устанавливать ограничения по скорости соединения в случае небольшого количества клиентов локальной сети бессмысленно. Тем не менее, очень желательно устанавливать хотя бы самые простые правила регулирования скорости соединения для отдельных пользователей, чтобы избежать перегрузки сети и нехватки ресурсов для отдельных пользователей, для которых важна хорошая скорость работы сети. Подводные камни могут скрываться в следующих процессах:
- автоматическое резервное копирование данных с сервера компании и прочие процессы передачи больших объемов данных, выполняющиеся сервером по расписанию;
- операции передачи файлов для личных и рабочих нужд, особенно своей способностью использовать все доступные сетевые ресурсы известен протокол BitTorrent;
- технические неисправности в отдельных компьютерах и программах, а так же действия вредоносных программ;
- злонамеренные сетевые атаки на отдельные компьютеры локальной сети.
Прокси-сервер Squid позволяет реализовывать политику ограничения скорости с помощью механизма пулов. Пул можно представить себе, как емкость с водой, которая постоянно заполняется до краёв, а клиенты по мере надобности наливают воду в свои стаканы через персональные краны.
Работу пулов регулируют три директивы: delay_class
, delay_parameters
, delay_access
.
Количество пулов устанавливает директива delay_pools:
delay_pools количество_объявленных_пулов
Создадим несколько пулов:
delay_pools 2 #всего 2 пула с номерами 1 и 2 соответственно
Пулы могут быть трёх классов:
- Один кран на всю сеть ограничивает поток воды;
- Весь поток ограничен одним краном, после которого идут отдельные персональные краны(для каждого IP-адреса сети);
- Весь поток ограничен одним краном, от которого идут отдельные краны для каждой группы пользователей(подсети), каждый из которых, в свою очередь, делится на персональные краны для каждого клиента(для отдельного IP-адреса).
Класс пула должен быть указан в директиве delay_class
:
delay_class номер_пула класс_пула
Укажем класс пула:
delay_class 1 1 #пул №1 ограничит скорость для всех клиентов, для которых он будет применен
Директива delay_parameters
устанавливает параметры пула:
delay_parameters номер_пула параметры
Формат записи параметров зависит от выбранного класса пула:
delay_parameters 1 байт_на_всю_сеть # для класса 1
delay_parameters 1 на_всю_сеть на_клиента #для класса 2
delay_parameters 1 на_всю_сеть на_подсеть на_клиента #для класса 3
Для пула №1 выбран класс 1, установим для него скорость передачи данных в 512 кбит/с:
delay_parameters 1 64000/64000 # 512 Кбит = 64 Кбайта = 64000 байт
Запись параметра производится по следующим правилам: сперва указывается ограничение скорости, затем указывается лимит, после которого это ограничение начинает действовать. Таким образом значение параметра 64000/64000 говорит о том, что после того, как пользователь скачал на максимальной скорости первые 64Кб запроса, на клиента накладывается ограничение скорости в 512 Кбит/с. Удобно устанавливать второе значение параметра несколько больше чем первое, например конфигурация:
delay_parameters 1 64000/256000
позволяет пользователю получить первые 256Кбайт запроса на максимальной скорости и только потом ограничить клиента шириной канала в 512 Кбит/с.
Для снятия ограничений по скорости используйте значение -1, например:
delay_parameters 1 -1 #неограниченная скорость доступа для пула №1
Теперь можно распространять действие пула на отдельных клиентов сети при помощи директивы delay_access
, имеющей формат:
delay_access номер_пула действие имя_acl
Параметр “ действие” имеет значения allow
(разрешить) и deny
(запретить). Пул будет действовать на тех клиентов, которым он разрешен и не будет действовать на тех, кому запрещён.
Например, конфигурация:
delay_access 1 deny UserGroup
delay_access 1 allow SingleUser
распространяет действия пула №1 на отдельного пользователя SingleUser, но не затрагивает группу пользователей UserGroup.
Для группы пользователей используем пул №2:
delay_class 2 2 # пул №2 позволит отрегулировать общую ширину канала для всей группы клиентов и установить отдельные органичения для каждого пользователя группы.
Опишем ограничения:
delay_parameters 2 512000/512000 64000/128000 # 8 Мбит/с - ограничение ширина канала для всей группы, на этой скорости клиент может скачать первые 128Кбайт запроса, а затем скорость его соединения упадёт до 512 Кбит/с.
Применим ограничения пула №2:
delay_access 1 allow UserGroup #действует на группу пользователей UserGroup
delay_access 1 deny SingleUser #но не действует на отдельного пользователя SingleUser