9.5.8. Ограничение канала

9.5.8. Ограничение канала

При организации доступа в Интернет очень часто требуется отдельным пользователям обеспечить большую скорость подключения. Как это сделать, когда по умолчанию все равноправны и могут работать на максимально доступной на данный момент скорости? Для этого нужно определиться с приоритетами. Для некоторых пользователей должен быть зарезервирован высокоскоростной канал связи. Нельзя повысить скорость одному человеку без ущерба остальным.

Если кому-то требуется полоса гарантированной пропускной способности для работы с приложениями, требующими высокой скорости обмена (например, для проведения презентаций), вы должны зарезервировать для них более мощный, чем для остальных канал.

Ограничение внешнего канала достаточно легко выполнить с помощью squid, Директивы, которые нужно использовать, можно увидеть в следующем примере:

delay_pools 3

delay_class 1 1

delay_class 2 2

delay_class 3 1

delay_parameters 1 256000/256000

delay_access 1 deny all

delay_access 1 allow admins

delay_parameters 2 256000/256000 4000/8000

delay_access 2 allow all

delay_access 2 deny admins

delay_parameters 3 64000/64000

delay_access 3 deny all

delay_access 3 allow bigboss

Этот код нужно добавить в файл конфигурации /etc/squid/squid.conf после комментария:

# DELAY POOL PARAMETERS (all require DELAY_POOLS compilation option)

#-------------------------------------------------------------------

Большинство параметров уже заданы по умолчанию, и их следует заменить.

Давайте подробно рассмотрим конфигурацию. Для начала нужно определить, сколько у вас будет пулов (правил, описывающих скорость доступа). Для этого используется директива delay_pools n, где n — это количество пулов. По умолчанию n равно нулю, и нет никаких ограничений. Мы создадим три пула, поэтому в примере указано число 3.

После этого нужно определить, к какому классу относится пул. Это делается с помощью директивы delay_class n c, где n — это порядковый номер, а c — номер класса. Каждая строка с директивой delay_class должна иметь свой порядковый номер, который начинается с 1. В нашем примере две строки, поэтому в первой параметр n равен 1, а во второй — 2.

Номеров класса (второй параметр) может быть три:

? 1 — ограничение канала происходит для всей сети. Например, у вас внешний канал 256 Кбит/с, вы можете его уменьшить для всех до 64 Кбит/с;

? 2 — сузить можно общий канал и помимо этого для каждого пользователя индивидуально. В этом случае общий канал может быть понижен до 64 Кбит/с, и каждый пользователь в отдельности сможет работать только на скорости 4 Кбит/с;

? 3 — ограничивать можно общий канал, индивидуально и для каждой сети в отдельности. Например, если скорость канала равна 256 Кбит/с, а в вашей сети работает 4 подсети, то каждой из них можно выделить по 64 Кбит/с, чтобы равномерно разделить нагрузку.

В нашем примере мы используем пулы 1 и 2 и снова 1 класса. Я специально расположил их не последовательно, чтобы пример был более наглядным.

Теперь описываем параметры скорости доступа. Это делается с помощью следующей директивы:

delay_parameters пул скорость_канала скорость_сети индивидуально

пул — это номер пула, скорость которого мы хотим описать. Так, в нашем примере следующая строка описывает скорость для первого пула:

delay_parameters 1 256000/256000

Так как пул 1 имеет 1 класс (delay_class 1 1), у которого можно ограничивать только канал полностью, в директиве используется единственный параметр — скорость_канала (256000/256000). Он формируется в виде двух чисел, разделенных знаком "/". До слэша указывается скорость, с которой будут скачиваться данные из сети, а после — размер пула, т.е. емкость, которую можно наполнить полученными из сети данными.

Количество параметров зависит от класса используемого пула. Если вы используете 1 класс, где можно ограничивать только общий канал, то должны быть указаны только два параметра:

delay_parameters пул скорость_канала

Если используется второй класс, то директива выглядит следующим образом:

delay_parameters пул скорость_канала индивидуально

Итак, первая директива использует полную скорость канала 256 000 байт в секунду. Обратите внимание, что скорость указывается именно в байтах, а характеристика модема задается в битах в секунду. Если в качестве скорости указать значение -1, то никаких ограничений не будет.

После определения параметров для первого пула нужно установить права доступа к нему. Это делается директивой delay_access, которая имеет следующий вид:

delay_access пул доступ acl

Первый параметр — это снова номер пула. Потом указывается доступ allow или deny, и последним идет имя списка.

В нашем примере для первого пула используется две строки:

delay_access 1 deny all

delay_access 1 allow admins

Сначала мы запрещаем доступ для всех, а потом разрешаем работать на данной скорости только ACL-списку admins. Подразумевается, что в этот список входят администраторы.

Далее идет описание скорости и прав доступа для второго пула:

delay_parameters 2 256000/256000 4000/8000

delay_access 2 allow all

delay_access 2 deny admins

Так как второй пул относится ко 2 классу, то здесь нужно указать общую скорость (256 000 байт в секунду) и скорость доступа каждого компьютера в отдельности — 4000 байт в секунду. На такой скорости будут работать все пользователи в сети, кроме администраторов.

Если вы установите такие правила в какой-либо организации, то могут возникнуть проблемы с руководством, потому что директор тоже попадет в список all и будет работать на скорости 4000 байт в секунду. Я думаю, что его это не устроит, и для него мы сделаем отдельную запись:

delay_parameters 3 64000/64000

delay_access 3 deny all

delay_access 3 allow bigboss

С помощью ограничения пропускной способности канала можно запретить загрузку мультимедийных файлов в рабочее время. В следующем примере мы разрешаем быстро читать Web-странички, но уменьшаем скорость загрузки других медиафайлов (листинг 9.4).

Листинг 9.4. Ограничение скорости загрузки медиафайлов в рабочее время

# ACL-список, описывающий сеть

acl fullspeed url_regex -i 192.168.1

# ACL-список, описывающий медиафайлы, для которых необходимо

# понизить скорость

acl mediaspeed url_regex -i ftp .exe .mp3 .avi .mpeg .iso .wav

# Время, которое будет действовать ограничение на скорость

# загрузки медиафайлов

acl day time 08:00-18:59

# Нам нужно два пула второго класса

delay_pools 2

delay_class 1 2

delay_class 2 2

# Первый пул не имеет ограничений для всех

delay_parameters 1 -1/-1 -1/-1

delay_access 1 allow fullspeed

# Второй пул ограничивает доступ в дневное время

delay_parameters 2 4000/100000 4000/100000

delay_access 2 allow day

delay_access 2 deny !day

delay_access 2 allow mediaspeed

Я постарался снабдить листинг подробными комментариями, чтобы вы могли с ним разобраться без дополнительных пояснений. Хочу только заметить, что скорость понижается для всех. Если вы хотите разрешить определенным пользователям работать на полной скорости, можно внести их в список (например, allowfull) и добавить в конец листинга следующую строку:

delay_access 2 deny !allowfull

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

5.12.2 Открытие поименованного канала

Из книги Архитектура операционной системы UNIX автора Бах Морис Дж

5.12.2 Открытие поименованного канала Поименованный канал — это файл, имеющий почти такую же семантику, как и непоименованный канал, за исключением того, что этому файлу соответствует запись в каталоге и обращение к нему производится по имени. Процессы открывают


Синдром запястного канала

Из книги Как справиться с компьютерной зависимостью автора Краснова С В

Синдром запястного канала Синдром запястного канала в целом является травмой запястья. Для распознавания его сущности, разберемся в физиологии. Запястье — это место соединения лучевой и локтевой костей (костей предплечья) и восьми костей кисти (мелких костей ладони).


15.7. Разделение канала

Из книги Linux-сервер своими руками автора Колисниченко Денис Николаевич

15.7. Разделение канала Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна группа компьютеров могла работать с одной скоростью, а другая — с другой. Это может потребоваться, например, для разграничения пользователей, которые используют канал для работы,


7.2.2.1. Учебный пример: создание канала к пейджеру

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

7.2.2.1. Учебный пример: создание канала к пейджеру Существует множество вариантов использования конвейеров. Например, Unix-утилита ps( 1) выводит на стандартный вывод список процессов, "не заботясь" о том, что верхняя часть длинного листинга может не поместиться на


Настройка канала RSS

Из книги Microsoft Windows SharePoint Services 3.0. Русская версия. Главы 9-16 автора Лондер Ольга

Настройка канала RSS Ранее в этой главе рассказывалось о том, как управлять оповещениями, которые являются отправляемыми по электронной почте уведомлениями о том, что содержимое списка или библиотеки SharePoint изменилось. Новая функция Outlook 2007 – поддержка каналов RSS (Really Simple


Конфигурация канала FXO для соединения с PSTN

Из книги Asterisk™: будущее телефонии Второе издание автора Меггелен Джим Ван

Конфигурация канала FXO для соединения с PSTN Начнем с конфигурации FXO-канала. Сначала сконфигурируем оборудование Zaptel, а затем - устройства Zapata. Зададим очень простой диалплан и покажем, как тестировать канал.Подключение FXS-порта (зеленый модуль) к PSTN может привести к выходу


7.2.2.1. Учебный пример: создание канала к пейджеру

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

7.2.2.1. Учебный пример: создание канала к пейджеру Существует множество вариантов использования конвейеров. Например, Unix-утилита ps(1) выводит на стандартный вывод список процессов, "не заботясь" о том, что верхняя часть длинного листинга может не поместиться на


Измерение полосы пропускания канала

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Измерение полосы пропускания канала На рис. А.7 приведена схема описываемой программы. Рис. А.7. Схема программы измерения полосы пропускания каналаВ листинге А.1 приведен текст первой половины программы bw_pipe, измеряющей полосу пропускания канала.Листинг А.1. Функция main,


Программа измерения задержки канала

Из книги Бесплатные разговоры через Интернет автора Фрузоров Сергей

Программа измерения задержки канала Программа для измерения задержки канала приведена в листинге А.14.Листинг А.14. Программа измерения задержки канала//bench/lat_pipe.c1  #include "unpipc.h"2  void3  doit(int readfd, int writefd)4  {5   char c;6   Write(writefd, &c, 1);7   if (Read(readfd, &c, 1) != 1)8    err_quit("read error");9 


Полоса пропускания канала

Из книги Введение в QNX/Neutrino 2. Руководство по программированию приложений реального времени в QNX Realtime Platform автора Кёртен Роб

Полоса пропускания канала Следующая вкладка диалогового окна настроек (рис. 4.20) называется Bandwidth (Ширина звукового канала). Если у вас низкоскоростной Интернет, то настройка этого параметра для вас особенно важна. Например, когда вы используете IP-телефонию и одновременно


18.8. Разделение канала с помощью SQUID

Из книги Linux глазами хакера автора Флёнов Михаил Евгеньевич

18.8. Разделение канала с помощью SQUID Допустим, вам нужно настроить прокси-сервер таким образом, чтобы одна группа компьютеров работала в Интернете с одной скоростью, а другая — с другой. Это может потребоваться, например, для разграничения пользователей, которые


Флаги канала

Из книги автора

Флаги канала Когда мы вначале книги изучали сервер (в параграфе «Сервер»), мы упомянули, что функция ChannelCreate() принимает параметр flags (флаги); правда, тогда мы вместо этого параметра передавали нуль.Теперь пришло время более подробно изучить назначение параметра flags.


10.1.4. Режим канала данных

Из книги автора

10.1.4. Режим канала данных Мы уже говорили о том, что для работы с FTP-сервером необходимо два канала. Порт 21 является командным, и по нему передаются только FTP-команды. Для передачи файлов создается отдельное соединение. Этот процесс можно описать следующим