www.eserv.ru // TrafC/SimpleMan

oldwiki /2007-05-04 22:17/ (v1)
Продукты и услуги Скачать Документация Купить Поддержка Форумы Партнёрам Статьи О компании
News
15.05.2012
Eserv504
15.05.2012
ActiveSync
01.04.2012
Eproxy508
25.03.2012
Eserv503
26.02.2012
Eserv502
08.02.2012
UMI.CMS
22.12.2011
Eserv431
20.12.2011
Eproxy507
15.11.2011
Eproxy506
19.09.2011
Eproxy505
08.09.2011
Eserv430
07.09.2011
Lightning
19.07.2011
PoweredBy
16.07.2011
IPv6
08.07.2011
Eproxy5beta1
17.06.2011
IPv6DNS
13.06.2011
IPv6Mail
21.03.2011
Eserv428
22.10.2010
Eserv426
22.10.2010
SSL
22.04.2010
Eserv423
20.04.2010
Eserv4WhatsNew
19.04.2010
EservLDAP
19.04.2010
EservDHCP
19.04.2010
EservRubricator
08.04.2010
EservDNS
08.04.2010
NSСI
08.04.2010
WPAD
27.03.2010
Eserv422
27.03.2010
Eserv4Docs
26.03.2010
Eserv4FAQ
21.03.2010
EservIrc
05.03.2010
Eserv421
05.03.2010
HttpProxy
02.03.2010
EservVideo
02.12.2009
Eserv4Wiki
02.12.2009
Eserv4acWEB
02.12.2009
PopPull
22.11.2009
PigMailPigProxy2/WhatsNew
22.11.2009
PigMail/WhatsNew
23.09.2009
FossilEservHowTo
22.09.2009
SourceCodeManagement
22.09.2009
FossilScm
16.09.2009
SendEmail
08.09.2009
RoundCube
07.05.2009
GitScm
07.05.2009
GitEservHowTo
06.05.2009
SunBird

TRAFC

Управление трафиком для Eserv/3 и EProxy

TOC

Введение: зачем это нужно

Представим себе типичную ситуацию: в небольшой офис приходит долгожданный Интернет. Покупается модем или мрачный мужик в резиновых сапогах прибивает гвоздями кабель выделенной линии. Все сотрудники в предвкушении радостного момента собираются у сервера, дергают администратора за рукав и спрашивают, когда же заработает это достижение современной мысли. Поскольку выход в Интернет только один, на этот компьютер ставится Eserv/3 или только Eproxy. Сисадмин настраивает программы, дает каждому адрес прокси-сервера и рассказывает, как запустить программу просмотра.
Целый месяц длится эйфория. На расстоянии одного щелчка мышью есть все — и новые программы, и целые библиотеки, мелодии для мобильных телефонов, обсуждение концепции кармы и даже картинки с жалкими котятами.
Но в конце месяца вместе со счетом за Интернет приходит страшная расплата. Начальник, уязвленный суммой счета в самое сердце, начинает страшный суд. Кто изучал концепцию кармы в рабочее время? Кто забил себе весь рабочий стол жалкими котятами? Кто только и делал, что трепался в чатах под эльфийским именем? Сисадмин, дай ответ. Сисадмин огрызается, дескать за всеми не уследишь, но его никто уже не слушает...
Страшно? Но закономерно — надо было думать раньше. Интернета, как и денег, всегда не хватает, поэтому нужна жесткая дисциплина его распределения между сотрудниками и учет использования. Чтобы помочь сисадмину в управлении трафиком и был разработан плагин TrafC.

1. Виртуальные каналы

TrafC основывается на идее виртуальных каналов. Представьте, что трафик к каждому пользователю идет через отдельную трубочку, которую сисадмин провел от своей машины. На трубочке стоит счетчик и запорный краник, который можно в случае необходимости и слегка привернуть, и даже вообще закрыть. Каждая трубочка и есть виртуальный канал. На самом деле, к каждому пользователю может даже идти несколько таких трубочек — одна для писем, другая для поиска рекламодателей, а третья — скачать мелодии. Настроить каждый такой канал можно независимо. Можно пойти еще дальше — прогонять каждый байт трафика через несколько каналов одновременно. С настоящими трубочками такого не получится, но наши каналы виртуальные. Таким образом, можно, например, вести учет трафика по нескольким независимым параметрам. Каналы работают только в одну сторону — или на вход, или на выход.
Виртуальные каналы бывают двух видов. Продолжая нашу водопроводную аналогию, одни каналы запорные — на них стоит счетчик, автоматически регистрирующий трафик. Как только счетчик дойдет до предела, канал будет закрыт и ни одного байта через него больше не пройдет. Предел обычно устанавливается на конкретное время — на неделю или на месяц, после чего счетчик сбрасывается. Такие каналы в настройках именуются (квоты).
Другие каналы можно сравнить с вентилем (краном), задающим скорость тока воды: чем больше открыт вентиль, тем сильней течет вода. Эти каналы ограничивают скорость доставки информации, так сказать, притормаживают трафик. Для вентиль-канала можно выставить систему приоритетов, чтобы более важный трафик проходил вперед менее важного (например, почтовый трафик может считаться самым важным). Эти каналы именуются (от bandwidth). Если один и тот же трафик идет через несколько каналов-вентилей, то полученная пропускная способность будет на уровне того вентиля, который больше всего закручен — точно, как было бы c водой.

2. Настройка

Настройка производится в два этапа. На первом этапе надо определить, какие именно каналы и в каком количестве вам нужны для учета вашего трафика. На втором этапе эти каналы связываются с помощью правил с трафиком, то есть вы указываете, в каких случаях какие каналы должны работать. И, наконец, надо подключить сам плагин к конкретным протоколам, трафик которых вы хотите учитывать.
Настройки каналов хранятся в файлах CONF/lists/proxy/trafc/BandsList.txt и CONF/lists/proxy/trafc/QuotaList.txt. В первом файле настраиваются каналы-вентили. Типичное содержимое файла выглядит так:
"NAME";"CPS";"DIRECTION" vip;1000;IN std;500;IN

Здесь мы определяем два канала: канал vip для важного трафика с пропускной способностью 1000 б/с и обыкновенный канал std со скоростью в 2 раза меньшей. Оба канала работают только <на прием> (), то есть считают трафик только из Интернета к пользователю. Это самый распространенный случай, так как обычно входящий трафик намного больше исходящего.
Во втором файле мы настраиваем запорные каналы. Файл выглядит так:
"NAME";"VOLUME";"PERIOD";"DIRECTION" "admin";"200 Mb";"4 Weeks";"IN" "lawyer";"100 Mb";"4 Weeks";"IN" "secr";"100 Mb";"4 Weeks";"IN"

Здесь определены три канала. Один — с названием , по этому каналу выделяется 200 мегабайтов трафика в месяц. Два других канала — по 100 мегабайт в месяц. Все три каналы — входные.
Каналы можно настроить также через веб-интерфейс. Для этого сисадмину нужно обратиться по адресу http://server:3140/main/CONF/lists/proxy/trafc/BandsList.txt и http://server:3140/main/CONF/lists/proxy/trafc/QuotasList.txt (Параметры прокси сервера > Управление трафиком > Band-каналы, Квоты). Вместо в адресе надо, естественно, поставить имя или адрес машины, на которой работает Eproxy.
На втором этапе сопоставим определенные нами каналы с конкретным трафиком. Плагин написан очень гибко, сопоставление можно проводить практически по любым критериям, поэтому файл CONF/lists/proxy/trafc/RulesList.txt выглядит примерно так:
"Antecedent";"Consequent" PeerIP= 192.168.0.3;admin

Первое поле — условие срабатывания, второе поле — назначаемый при этом канал и возможный приоритет.
Список самых важных условий приведен в таблице.
Из всего перечисленного изобилия чаще всего используется идентификация по IP-адресу ( PeerIP= 192.168.0.3, обратите внимание на пробел после знака равенства) или идентификация по имени пользователя (User =~ Admin).
В правой части правила может указываться несколько каналов и приоритет правила, например так:
~PeerIP= 192.168.0.3;admin sysadmin Priority: 5
Приоритет задается в относительных единицах, чем меньше число — тем выше приоритет. Если приоритет не указывается, он считается равным нулю, то есть самым высоким.
Настройка правил через веб-интерфейс проводится по адресу http://server:3140/main/CONF/lists/proxy/trafc/RulesList.txt (Параметры прокси сервера > Управление трафиком > Правила).
И наконец третий этап — подключение самого плагина. Для этого нужно вставить (или раскомментировать) в файл конфигурации Eproxy OnStartupPlugins.rules.txt такие строчки:
Plugin: pluginsTrafC
Plugin: http-proxypluginsTrafC
Или через веб-интерфейс: http://server:3140/conf/ru/plugins.html (Параметры прокси сервера > Основные параметры > Расширения).
После этого вместе с сервером будет грузиться сам плагин и его дополнительная часть, отвечающая за подсчет трафика по протоколу HTTP.
Если вы хотите вести учет и по другим протоколам (а в Eproxy их много: ftp-proxy, socks, tcpmap, http-map, pop3proxy, udpmap, ...), нужно добавить в соответствующий файл конфигурации данного протокола (обычно это OnRequest.rules.txt или OnThreadConnect.rules.txt) строку
NewlyCanalsKit AssignCanals(DB)

3. Пример настройки

Предположим следующую ситуацию: провайдер отдает по выделенной линии 1 гигабайт трафика в месяц. Нам надо распределить эти данные по нескольким пользователям: директору — 300 Мб, трем программистам — по 100 Мб, отделу маркетинга — 200 Мб. Остальное пойдет на почту. При этом маркетингу нужно ограничить скорость передачи информации (назло , а почтовому серверу — наоборот, обеспечить приоритет. Отдел маркетинга находится в отдельной подсети с адресом 192.168.1.0, остальные работники идентифицируются в Eproxy по именам.
Сначала настраиваем все необходимые каналы:
BandList.txt
"NAME";"CPS";"DIRECTION" post;1000;IN std;500;IN slow;200;IN


QuotaList.txt
"NAME";"VOLUME";"PERIOD";"DIRECTION" "dir";"300 Mb";"4 Weeks";"IN" "prog1";"100 Mb";"4 Weeks";"IN" "prog2";"100 Mb";"4 Weeks";"IN" "prog3";"100 Mb";"4 Weeks";"IN" "mark";"100 Mb";"4 Weeks";"IN"


Затем сопоставляем каналы и трафик:
RulesList.txt
"Antecedent";"Consequent" User =~ Director;dir std Priority: 5 User =~ Wirth;prog1 std Priority: 5 User =~ Dijkstra;prog2 std Priority: 5 User =~ Knuth;prog3 std Priority: 5 User =~ postserver;post Priority: 1 PeerIP:Mask = 192.168.1.0:255.255.255.0;mark slow


4. Вопросы и ответы

Как сделать сброс квот по расписанию?

  1. Квоты надо создать с заведомо большим периодом.
  2. Воспользовавшись внешним планировщиком, надо в нужный момент поместить (скопировать или создать) в каталог ~Eserv3/DATA/FLAGS/Eproxy файл-флаг reset-quotas-all.flag — чтобы сбросить все квоты, или файл reset-quotas-list.flag со списком квот (разделитель: пробел, новая строка), которые надо сбросить.
  3. После отработки задания файл-флаг будет удален. Если Eproxy не запущен во время появления флага, то флаг будет обработаны только после запуска Eproxy. В качестве планировщика можно использовать известный nncron или встроенную в Windows возможность выполнения по расписанию (команда at).

Как посмотреть, сколько трафика осталось неиспользованным?

Пользователь может смотреть статистику использования quota-каналов через веб: http://server:3140/my/trafc/ (Для сисадмина: Управление трафиком > Статистика > Пользовательский вид).

Почему статистика, насчитанная плагином, не совпадает с цифрами провайдера?

Во-первых, вы просто могли не настроить подсчет информации от пользователя к провайдеру. Если вы регулярно посылаете огромные файлы, там может собраться порядочно байтов трафика.
Во-вторых, плагин считает только полезную информацию, дошедшую до пользователя, а провайдер — всю физическую информацию, пересланную по его сети. Туда входит разнообразная служебная информация, например, заголовки пакетов IP или других протоколов, а также повторная передача одних и тех же данных при плохой связи. Обычно физической информации процентов на 10-15 больше, чем полезной.

Где можно узнать о более тонких настройках плагина?

Техническое описание работы плагина и его настроек находятся в каталоге ~Eserv3/Eproxy/conf/plugins/TrafC/ru/docs

Юрий Жиловец, 2004


См. также Статьи

Работает на Eserv/7.0.beta1/Linux/arm64 (Dec 25 2023)