Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Лучшие статьи журнала ╚Компьютеры+Программы╩


Информационный Канал Subscribe.Ru

Здравствуйте, уважаемые читатели!

В этом выпуске рассылки публикуется статья, занявшая по результатам голосования третье место.


Евгений Высокович,
eugen@comizdat.com

Как сбалансировать «потребление» интернета в офисе?

Несмотря на свой небольшой размер, программа, о которой пойдет речь, обеспечивает «справедливое» распределение общего канала доступа к интернету между несколькими пользователями. Чтобы желающим было легче ее установить и настроить, рассмотрен конкретный пример

Сформулируем задачу

В небольшом офисе есть несколько компьютеров, объединенных в сеть. Есть также выход в интернет через один из компьютеров, который в дальнейшем будем называть сервером. Если этот сервер работает под одной из версий Windows, то выход пользователей локальной сети в интернет может быть организован либо стандартными средствами Windows (ICS), либо с помощью какого-нибудь специального ПО. Одной из наиболее популярных программ такого рода является WinRoute, о которой мы уже рассказывали на страницах нашего журнала («К+П»'2001, NN10,12).

На первых порах кажется, что все хорошо: все подключены к интернету и все довольны. Однако спустя некоторое время обнаруживается, что интернета, как и денег, много не бывает. Стоит только начать закачку нескольких больших файлов с одного из компьютеров, как канал забивается, делая работу остальных пользователей практически невозможной.

Руководство же волнует тот вопрос, что объемы закачки трудно контролировать. Не помогают даже различные запреты на выкачку баннеров, файлов EXE, ZIP, MP3 и т.п. Совершенно естественным образом возникает желание как-то дозировать доступ — причем сделать это справедливо и так, чтобы пользователи с самого начала знали, сколько всего они имеют право закачать и сколько еще осталось. Тогда все они будут заранее планировать свою работу.

Оказывается, существует свободно распространяемая программа, разработанная Александром Мантровым и названная им BSB (Band Speed Balancer). Она не только регулирует пропускную способность, но и имеет еще много полезных функций. Объем же этой программы по нынешним меркам совсем ничтожен (примерно 200 Кб).

Поскольку настройка программы может вызвать некоторые затруднения, давайте рассмотрим ее на конкретном примере.

Дано

В нашем случае на компьютерах используется сетевой протокол TCP/IP, статическая адресация, маска локальной сети 255.255.255.0. Все компьютеры в офисе работают под управлением Windows различных версий: от 95-й до Workstation 2000. На сервере с IP 192.168.1.1 установлена Windows NT 4.0 (хотя для BSB это не принципиально — она работает, начиная с Windows 98) и WinRoute со включенным прокси-сервером, через который осуществляется доступ к интернету и которым ограничивается доступ пользователей к отдельным ресурсам Сети. IP-адреса локальных компьютеров начинаются с адреса 192.168.1.2, где последняя цифра — номер компьютера.

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

Установку BSB следует начинать только в случае, когда вы уверены, что локальная сеть нормально работает и пользователи могут подключиться к интернету.

Принцип работы BSB

Программа выступает в качестве шлюза по каждому из используемых ею протоколов (HTTP, NNTP и POP3). Через эти шлюзы осуществляется доступ пользователей. Если без BSB пользователи подключались непосредственно к прокси-серверу WinRoute, то теперь им предстоит обращаться к BSB, а тот уже обратится к WinRoute. Последний будет по-прежнему выполнять свою роль — без него или подобной ему программы обойтись нельзя, так как BSB не умеет пока связываться напрямую с веб- и FTP-серверами. Роль BSB — дозировать трафик, ограничивать количество соединений с каждого компьютера, следить как за общим объемом выкачанной информации, так и за тем, что фактически «отработал» каждый пользователь.

Программа BSB имеет полный контроль над передаваемыми данными и, благодаря встроенной в протокол TCP возможности управления потоком, регулирует как среднюю скорость приема данных от сервера, так и его загруженность. Накапливая статистику о точном количестве байт, передаваемых по протоколу TCP от сервера к клиенту, программа способна отказывать клиентам в соединении или обрывать существующие соединения при превышении заранее установленных предельных объемов трафика за неделю и месяц.

Установка

Можно спорить о том, является ли простота достоинством или недостатком, но программа действительно организована очень просто и безо всяких излишеств. Не пугайтесь — в BSB ей нет графического интерфейса, но это позволило ей оставаться компактной и эффективной. Для ее инсталляции следует:

  • распаковав файлы, переписать их в отдельную папку на жестком диске;
  • настроить параметры, перечисленные в файле bsb.cfg;
  • запустить программу.

Первый пункт дополнительных пояснений не требует. А вот на остальном остановимся подробнее.

Настраиваем конфигурацию

На момент написания статьи самой свежей была версией программы 1.7.2. Именно нею мы и воспользовались. В число файлов, которые включены в поставку, входит и файл конфигурации bsb.cfg, который можно отредактировать любым текстовым редактором — например, Блокнотом. Для упрощения этих действий существует программа BSBConfig Михаила Позднышева — она имеет красивый и удобный графический интерфейс, но, к сожалению, соответствует предыдущей версии BSB и не может настраивать некоторые новые параметры. Поэтому самым правильным будет редактирование конфигурации вручную.

Структура файла очень проста: каждая строка — отдельный параметр. Значения и назначение наиболее важных параметров приведены в таблице. С остальными можно познакомиться на сайте программы (http://bsb.net.ru/).

Файл конфигурации для нашего случая приведен ниже. Пояснения даны прямо по тексту в виде комментариев.

; Секция общих настроек
[Config]
; Подробнее о параметрах на сайте bsb.net.ru
; Порты шлюзов NNTP и POP3, в нашем случае выключены
NNTPGatewayPort=0
POP3GatewayPort=0
; Порт шлюза, к которому обращаются пользователи
HTTPGatewayPort=80
; Тот же порт (параметр старой версии BSB)
ListenPort=80
; Порт администрирования и статистики
AdminPort=3121
; IP адрес сетевой платы сервера,
; подключенной к локальной сети
BindIP=192.168.1.1
; IP адрес прокси-сервера отдела
; (в нашем случае совпадает с BindIP)
ParentProxy=192.168.1.1
; Порт прокси-сервера WinRoute
; (не может совпадать с ListenPort)
ParentPort=4480
; Полная скорость канала
TotalSpeed=4000
; Минимальная скорость, выделяемая клиенту по умолчанию
DefaultSpeedLimit=500
; Ограничение недельного трафика
WDefaultSizeLimit=50
; Ограничение месячного трафика
MDefaultSizeLimit=200
; Время в сек., по истечение которого начинает
; ограничиваться скорость
LimitTime=20
; Число соединений с BSB, начиная с которого
; начинает ограничиваться скорость
ConnectionsCount=20
; Допустимое количество соединений с клиентского
; компьютера по умолчанию
MaxConnections=4
;
ConnTimeoutTime=240
SpeedLimitHours=0:00-23:59
SizeLimitFile=errors\bsb.html
ParentNoConnFile=errors\pnc.html
ConnTimeoutFile=errors\cto.html
NoConnFile=errors\nmc.html
; Текстовый файл, в который ежеминутно
; пишется статистика
IPSizeLog=ipsize.csv
; Разрешить подключение только с компьютеров,
; перечисленных в секции [IP]
AllIPMode=0
; Распределять скорость равномерно по всем
; соединениям с отдельного IP
IPSpeedLimitType=1
; Максимальный размер файла журнала
LogMaxSizeM=20
; Создавать журнал ежемесячно
LogCreate=Monthly

; Секция индивидуальных настроек
[IP]
192.168.1.2=L500 W70 C5 Nw3
192.168.1.6=L500 W15 C4 Nw6
192.168.1.3=L500 W20 C5 Nw3
192.168.1.4=L400 W10 C5 Nw4
192.168.1.5=L400 W10 C5 Nw5
192.168.1.10=L500 W15 C5 Nw10
192.168.1.7=L0 W0 C0 Nhost 

Когда наша сетка работала без BSB, прокси-сервер WinRoute использовал порт 80. Теперь это значение было присвоено параметру HTTPGatewayPort, чтобы избежать необходимости менять что-либо на компьютерах клиентов. А порт прокси-сервера мы настроили на новый номер — 4480. Чтобы пользователи не имели возможности обойти BSB, в WinRoute была включена фильтрация пакетов на работу только по этому порту и запрещена работа по остальным портам. Правда, есть еще административный порт, который желательно тоже оставить открытым,- по нему клиенты смогут получать сведения о текущем состоянии своего баланса. По умолчанию его номер 3121.

Физически BSB не обязательно устанавливать на том же компьютере, где установлен прокси-сервер. Но тогда, чтобы исключить обращение к прокси-серверу напрямую, следует разрешить доступ к нему только с IP-адреса того компьютера, на котором стоит BSB.

Запуск-останов

Программа может работать и как консольное приложение, и как служба. В первом случае она может быть запущена из командной строки с параметром –d:
bsb —d

А остановлена — нажатием <Ctrl+Break> или <Ctrl+C>.

Консольный запуск полезен на этапе проверки ошибок в файле конфигурации. С сообщениями об ошибках можно ознакомиться в файле bsb.log, на экран они не выдаются.

Когда все будет правильно настроено, следует запустить BSB как службу. Чтобы это стало возможным, необходимо дать команду:
bsb —i

и перезагрузить компьютер. Программа стартует автоматически, издав несколько звуковых сигналов.

В процессе работы может потребоваться остановка службы. Ее можно выполнить либо стандартными средствами Windows NT, либо дав команду:
bsb —s

Деинсталлирует службу команда:
bsb —u

Несколько замечаний

Программа BSB может использоваться на нескольких уровнях одновременно. Например, одна ее копия, установленная на сервере отдела, регулирует доступ пользователей на уровне отдела. Она, в свою очередь, подключена к такой же программе, установленной на сервере организации и регулирующей уже трафик отделов в целом.

Системные требования более чем скромны. Нам удалось организовать совместный доступ десяти пользователей, собрав для этого «сервер» из того, что лежало без дела в шкафу. В дело пошел процессор AMD-5x86 (помните еще такой?), память 16 Мб, жесткий диск на 500 Мб. Каких-либо замедлений в работе по вине сервера никто не почувствовал. Единственное неудобство — его утренняя загрузка немного затягивалась, но ведь компьютер можно и не выключать.

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

Сколько выкачано?

BSB записывает информацию об объемах закачки в двоичном виде в файл bsb.itt раз в две минуты и дублирует эту информацию в текстовый файл, указанный в параметре IPSizeLog. Формат текстового файла удобен для загрузки и просмотра в MS Excel.

BSB регистрирует запросы пользователей в файлах журналов, которые сохраняются в подкаталоге logs. Формат log-файлов абсолютно совпадает с форматом, используемым WinRoute, поэтому можно в дальнейшем анализировать их тем же ПО — например, ProxyInspector for WinRoute. Только теперь ведение протокола доверьте BSB, а в WinRoute эту функцию отключите.

Любой пользователь может узнать о том, сколько он уже выкачал из браузера. Для этого в строке адреса нужно набрать http://x.x.x.x:3121, где х.х.х.х — IP-адрес сетевой платы того компьютера, на котором установлен BSB. Эти же сведения можно получить и с помощью специальной маленькой утилиты BSB Client Informer (файл bsbcl.exe), которую рекомендуется переписать на каждый клиентский компьютер. При запуске в качестве параметров следует указывать IP-адрес и порт, разделенные пробелом. Советуем предусмотреть специальный ярлык на рабочем столе каждого клиентского компьютера. После запуска программа попадает в панель задач. Краткая информация высвечивается после наведения мыши на значок программы, а более полная — после щелчка на нем.

Заключение

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

Основные параметры, используемые в файле конфигурации
Общие настройки. Секция [Config]
Параметр Описание
BindIP= у сервера с двумя сетевыми платами это обычно IP-адрес платы, которая подключена к локальной сети
ListenPort=
или
HTTPGatewayPort=
номер порта TCP. Значение 0 выключает работу HTTP-шлюза
AdminPort= номер порта TCP, через который BSB будет принимать от пользователей запросы по статистике
ParentProxy=
или
ParentPort=
соответственно, адрес или имя и порт следующего прокси-сервера, входящий трафик от которого BSB будет ограничивать
TotalSpeed= значение полной скорости канала в байтах в секунду для входящего трафика, который необходимо ограничивать. Например, для выделенки на 256 Кбит/с значение параметра — 32000
DefaultSpeedLimit= максимальная скорость (по умолчанию) в байтах в секунду входящего трафика на IP-адрес, не указанный во второй секции файла конфигурации. Значение должно быть не менее 100 или же нулевым. При значении, равном нулю, ограничений нет
DefaultSizeLimit=
или
WDefaultSizeLimit=
ограничение недельного трафика в мегабайтах для всех IP-адресов по умолчанию
MDefaultSizeLimit= ограничение месячного трафика в мегабайтах для всех IP-адресов по умолчанию
LimitTime= время (в секундах) от момента установки клиентом соединения, по истечении которого начинает работать ограничение по скорости. Рекомендуются значения от 10 до 60 секунд
ConnectionsCount= число одновременных активных соединений со всех IP-адресов, начиная с которого действуют ограничения скорости для каждого соединения. Если на данный момент времени с BSB установлено соединений меньше, чем указано в параметре, то ограничение скорости не производится
MaxConnections= ограничение на максимальное число соединений с одного компьютера по умолчанию
ConnTimeoutTime= количество секунд ожидания поступления каких-нибудь данных от сервера, после чего соединение закрывается, а клиенту отсылается предупреждающее сообщение
SpeedLimitHours= список временных интервалов, на протяжении которых программа BSB регулирует скорость. Вне этих интервалов ограничения на скорость скачивания не накладываются. Несколько интервалов времени задаются через запятую; часы — от 0 до 24, минуты — от 0 до 59
AllIPMode= параметр разрешает подключения:
  • значение 0 — допускаются подключения клиентов к BSB только с адресов, перечисленных в секции IP;
  • значение 1 — допускаются подключения к BSB с любого адреса; если он не прописан в секции [IP], то применяются значения ограничений по умолчанию.
  • значение 2 — с BSB может установить соединение клиент с любого адреса безо всяких ограничений
IPSpeedLimitType= параметр определяет тип ограничения по скорости:
  • значение 0 — лимит по скорости действует на каждое из соединений с какого-либо IP-адреса;
  • значение 1 — лимит по скорости распределяется на все соединения с IP-адреса.
Индивидуальные настройки. Секция [IP]
В этой секции перечисляются IP-адреса, c которых возможны подключения к BSB по протоколу TCP. Для каждого IP-адреса можно задать ряд настроек. Они разделяются пробелами и обозначаются буквами, перечисленными в таблице ниже, и цифрами значений, записываемых сразу за ними.
В балансирующее соединение, при котором скорость распределяется равномерно между клиентами
L скорость скачивания в байтах в секунду
W допустимый недельный объем (в мегабайтах)
M допустимый месячный объем
C допустимое количество одновременных соединений
N имя, которое будет ассоциироваться в журналах с данным IP-адресом
Нулевые значения снимают соответствующие ограничения. У первого параметра значений нет.
Когда после IP-адресов параметры не указаны, то к этим адресам будут применены ограничения по умолчанию заданные в секции [Config]. Чтобы программа BSB воспринимала перечисленные в этой секции IP-адреса параметр AllIPMode должен быть равен 0 или 1.

Евгений Высокович,
eugen@comizdat.com


Задать вопрос
Прислать свою статью для публикации в журнале
Просто поговорить
Получить именной бланк подписки на "бумажную" версию

До следующего выпуска!
Елена Полонская, редактор "К+П"
www.comizdat.com

Перепечатка материалов этой рассылки разрешается только по согласованию с редакцией журнала "Компьютеры+Программы"



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное