Вы находитесь на странице: 1из 28

Document No: DOC026922

Version: 1.2

© 2009 MFI-SOFT
All rights reserved.
TRAFFIC BALANCER. РУКОВОДСТВО
ПОЛЬЗОВАТЕЛЯ
ОБЩИЕ СВЕДЕНИЯ.................................................................................................................................................3
НАЗНАЧЕНИЕ И ПРИМЕНИМОСТЬ...............................................................................................................................3
ОСОБЕННОСТИ...........................................................................................................................................................3
ВЕРСИЯ TRAFFIC BALANCER.....................................................................................................................................4
СПИСОК ЛИТЕРАТУРЫ................................................................................................................................................4
УСТАНОВКА...............................................................................................................................................................5
ПАКЕТ УСТАНОВКИ TRAFFIC BALANCER..................................................................................................................5
ПОРЯДОК УСТАНОВКИ...............................................................................................................................................5
СПОСОБЫ ЗАПУСКА..............................................................................................................................................6
РУЧНОЙ ЗАПУСК (КОМАНДНАЯ СТРОКА)..................................................................................................................6
АВТОМАТИЧЕСКИЙ ЗАПУСК (СИСТЕМНЫЙ СЕРВИС).................................................................................................6
РЕЖИМЫ ИСПОЛЬЗОВАНИЯ..............................................................................................................................8
БАЛАНСИРОВКА ТРАФИКА.........................................................................................................................................8
ЗАПИСЬ ДАМПА..........................................................................................................................................................8
ПРОИГРЫВАНИЕ ДАМПА............................................................................................................................................9
НАСТРОЙКА БАЛАНСЕРА..................................................................................................................................11
ОБЩИЕ ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ.............................................................................................................11
ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ РЕЖИМА ЗАПИСИ ДАМПА................................................................................11
ПАРАМЕТРЫ КОМАНДНОЙ СТРОКИ РЕЖИМА ПРОИГРЫВАНИЯ ДАМПА..................................................................11
НАСТРОЙКА УСТРОЙСТВ ЗАХВАТА ТРАФИКА.........................................................................................................12
НАСТРОЙКА УСТРОЙСТВ ПЕРЕДАЧИ ТРАФИКА.......................................................................................................13
НАСТРОЙКА ФИЛЬТРАЦИИ ТРАФИКА.......................................................................................................................15
НАСТРОЙКА КОПИРОВАНИЯ ТРАФИКА....................................................................................................................16
КОНФИГУРАЦИОННЫЙ ФАЙЛ СЕРВИСА БАЛАНСЕРА...............................................................................................16
КОНФИГУРАЦИОННЫЙ ФАЙЛ БАЛАНСЕРА..............................................................................................................18
УТИЛИТА ТЕСТИРОВАНИЯ TEST_BALANCER...........................................................................................29

© 2009 MFI-SOFT
All rights reserved.
Общие сведения
Назначение и применимость
Балансер предназначен для распределения сетевого трафика, получаемого с набора
входных устройств, между набором выходных устройств.
Основные режимы работы балансера:
 Распределение входного трафика между процессами-обработчиками;
 Запись входного трафика в файл;
 Проигрывание сетевого трафика из файла;
 Генерации случайного трафика с заданной скоростью.

Особенности
 Поддерживаются следующие типы входных/выходных устройств
o Захват/передача при помощи штатных драйверов Linux (pcap);
o Захват при помощи драйвера kreader_mmap;
o Захват при помощи драйвера kreader_storage;
o Захват/передача через очереди (pipe) Directnetio;
o Чтение из файла, запись в файл;
o Чтение из буфера в памяти, запись в буфер в памяти;
o Генерация искусственного трафика;
o Передача трафика в «никуда» (устройство null).
 Съём с произвольного количества устройств различных типов;
 Передача в произвольное количество устройств различных типов;
 Распределение (балансировка) трафика между выходными устройствами по
различным правилам:
o Хэш на основе VLAN, MPLS тэгов;
o Хэш на основе IP адресов;
o Хэш на основе TCP/UDP портов;
o Суммарный хэш по IP и портам;
o Случайное распределение (round robin);
o Корректировка распределения путём назначения весов выходным
устройствам;
 Одновременная передача (копирование) трафика в несколько устройств;
 Фильтрация трафика на выходных устройствах;
 Гибкая комбинация балансировки, копирования и фильтрации для ответвления
трафика при настройке точки съёма и поиске неполадок;
 Поддержка обратной связи со снифером для блокирования передачи
определённых потоков;
 Несколько режимов работы:
o simple – декодирование до 3го уровня;
o normal – декодирование до 4го уровня с разбором туннельных
протоколов;
o full – декодирование до 4го уровня и ведение дерева потоков для
поддержки обратной связи со снифером;
 Возможность запуска в виде системного сервиса;

© 2009 MFI-SOFT
All rights reserved.
 Максимальная эффективность при использовании устройств Directnetio;

Версия Traffic Balancer


Данный документ описывает Traffic Balancer версии 1.2.

Список литературы
Таблица 0-1: Справочная литература
Ссылка Название документа
[1]

© 2009 MFI-SOFT
All rights reserved.
Установка
Пакет установки Traffic Balancer
Traffic Balancer поставляется в виде установочного пакета RPM.
Для различных версий аппаратных платформ имеются разные пакеты установки. Имя
пакета имеет следующий формат:

balancer-V.P.rpm
V– версия Traffic Balancer.
Внимание! Неофициальные (отладочные версии) имеют добавочный суффикс –
DEV. Использование таких версий допускается только по прямому указанию
разработчиков!

P– название аппаратной платформы

Во время установки пакета производятся следующие действия:


 Исполняемые файлы копируются в каталог /opt/balancer/bin;
 В каталоге /usr/sbin создаются ссылки на исполняемые файлы балансера и
утилиты тестирования;
 Конфигурационные файлы копируются в каталог /opt/balancer/etc;
 Файлы с документацией копируются в каталог /opt/balancer/man;
 Cкрипты для запуска сервиса балансера копируются в каталог /etc/init.d;
 Регистрируется сервис balancer;

Порядок установки
1. Установить RPM балансера
rpm –Uhv <имя файла пакета установки>
a. при обновления балансера с версии 1.1.x необходимо предварительно
сохранить конфигурационный файл, остановить сервис балансера и удалить
RPM.
cp /etc/balancer/balancer.conf /etc/balancer/balancer.conf.saved
service balancer stop
rpm –e balancer
2. При необходимости запуска балансера в режиме сервиса, необходимо
отредактировать конфигурационный файл сервира балансера:
/opt/balancer/etc/balancer.conf
После этого запустить сервис балансера
service balancer start
Дальнейшая настройка зависит от способа запуска и режима использования балансера

© 2009 MFI-SOFT
All rights reserved.
Способы запуска
Ручной запуск (командная строка)
Балансер может быть запущен с использованием или без использования
конфигурационного файла.
Без конфигурационного балансер может быть запущен в режиме записи или
проигрывания дампов.
Использование конфигурационного файла позволяет производить более глубокую
настройку, а так же комбинировать режимы работы балансера.

Запуск с конфигурационным файлом:


balancer [common options] <config file>

Запуск в режиме записи дампов (см. Запись дампа):


balancer –w [common options] indev0 [indev1...] file <write options>

Запуск в режиме проигрывания дампов (см. Проигрывание дампа):


balancer –p [common options] outdev file0 [file1...] <play options>

Параметры командной строки и конфигурационного файла описаны в разделе Настройка


балансера

Примеры
balancer –c0 –vv ~/balancer.my.cfg
balancer –w –c4 –vv direct:digbe0 /dumps/some.dump –m 2G –l 100M
balancer –p –vv eth:eth1 /dumps/some.dump –m 1G –s 2G

Автоматический запуск (системный сервис)


Балансер может быть запущен в виде системного сервиса. Сервис запускает один или
несколько процессов балансеров, в зависимости от настроек. Для обеспечения
возможности удалённого тестирования балансеров запускается утилита
test_balancer.
Все настройки сервиса балансера, а так же каждого процесса балансера хранятся в
конфигурационном файле сервиса:
/opt/balancer/etc/balancer.conf
При старте сервиса на основе этого файла генерируются отдельные конфигурационные
файлы для каждого процесса балансера. Эти файлы сохраняются в каталоге:
/opt/balancer/etc/.cfg
Конфигурационные файлы из этого каталога могут быть использованы при ручном
запуске балансера (например, при поиске неполадок с автоматическим запуском
балансеров).

Для запуска, перезапуска и останова сервиса балансера используются команды


service balancer start
service balancer restart
service balancer stop

© 2009 MFI-SOFT
All rights reserved.
Конфигурационный файл сервиса описан в разделе «Конфигурационный файл сервиса
балансера»

© 2009 MFI-SOFT
All rights reserved.
Режимы использования
Балансировка трафика
Режим балансировки трафика является основным и, формально, единственным режимом
работы балансера. Режимы записи и проигрывания файлов являются частными случаями
режима балансировки и рассматриваются отдельно только из-за частоты использования
(по этой же причине для данных режимов созданы отдельные способы запуска).
В режиме балансировки трафик принимается с набора входных устройств (устройств
захвата или генерации трафика) и распределяется между выходными устройствами.

В общем случае балансер запускается с использованием конфигурационного файла.


Запуск может производиться в ручном (командная строка) или автоматическом
(системный сервис) режиме (см. Способы запуска).
В приведённой ниже таблице указаны параметры файла конфигурации, определяющие
работу балансера. Детальное описание параметров конфигурации приведено в разделе
«_Конфигурационный_файл_балансераНастройка балансера».
Параметр Описание
in Устройства захвата (входные устройства). Полный перечень
устройств приводится в разделе «Настройка устройств
захвата трафика».
out Устройства передачи (выходные устройства). Полный
перечень устройств приводится в разделе «Настройка
устройств передачи трафика». При описании выходных
устройств так же может быть настроено копирование
трафика (см. Настройка копирования трафика)
filter Условия фильтрации трафика. Описание параметра
приведено в разделе «Настройка фильтрации трафика»
processing_mode Режим обработки трафика (см. Конфигурационный файл
балансера)

В качестве входных и/или выходных устройств может быть использован файл, в этом
случае режим балансировки комбинируется с режимом проигрывания и/или записи дампа.
Такое комбинирование может использоваться, например, для ответвления из точки съёма
трафика определённого пользователя, при помощи фильтрации по IP, с последующей
записью в файл.

Запись дампа
При записи дампа используется команда

balancer –w [common options] indev0 [indev1...] file <write options>

-w Опция, активирующая режим записи дампа

common options см. Общие параметры командной строки

write options см. Параметры командной строки режима записи дампа

© 2009 MFI-SOFT
All rights reserved.
indev Входные устройства, см. Настройка устройств захвата трафика
Если указано несколько входных устройств, захват трафика
производится одновременно со всех устройств.
При запуске записи дампа из командной строки допустима
сокращённая запись имён устройств:
 Для устройств eth тип можно опускать.
eth0 тоже что eth:eth0
 Для устройств direct можно написать знак «+» вместо
«direct:».
+dixgbe0.rx0 тоже что direct:dixgbe0.rx0

file Имя файла для записи дампа.

Пример
Пакеты захватываются с порта digbe0 с использованием драйвера Directnetio. Для
записи выделен буфер 2 Гбайт, захваченный трафик сохраняется в серии дамп-файлов,
каждый файл размером 100 Мбайт.
Балансер запускается с привязкой к 4му процессору. Выводится диагностическая
информация.
balancer –w –c4 –vv direct:digbe0 /dumps/some.dump –m 2G –l 100M

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

balancer –p [common options] outdev file0 [file1...] <play options>

-p Опция, активирующая режим проигрывания дампа

common options см. Общие параметры командной строки

play options см. Параметры командной строки режима проигрывания дампа

file Имя файла, содержащего проигрываемый дамп. Файлов может


быть несколько, в этом случае они проигрываются по очереди.
В имени файла допускается использовать подстановочные
символы ‘*’ и ‘?’. В этом случае балансер будет
последовательно проигрывать все файлы, удовлетворяющие
указанной маске.
Внимание! При использовании подстановочных символов в
командной строке параметр file должен быть заключён в
двойные кавычки.
outdev Выходное устройство, см. Настройка устройств передачи
трафика
При запуске проигрывания дампа из командной строки
допустима сокращённая запись имёни устройства:
 Для устройств eth тип можно опускать.
eth0 тоже что eth:eth0

© 2009 MFI-SOFT
All rights reserved.
 Для устройств direct можно написать знак «+» вместо
«direct:».
+dixgbe0.rx0 тоже что direct:dixgbe0.rx0

Пример
Запуск балансера в режиме проигрывания дампа (опция –p). Пакеты из дампа
передаются в порт eth0 с использованием системного драйвера. Проигрывание ведётся с
предварительной буферизацией 1 Гбайт, скорость проигрывания 2 Гбит/с. Проигрывание
производится 5 раз.
Выводится диагностическая информация.
balancer –p –vv eth:eth1 /dumps/some.dump –m 1G –s 2G –r5

© 2009 MFI-SOFT
All rights reserved.
Настройка балансера
Общие параметры командной строки
Параметры, используемые при запуске балансера из командной строки во всех режимах
работы.
Краткая Полная форма Значение По умолчанию
форма
-c N --cpubind N Привязка к процессорному ядру Привязка не
N. устанавливается
-n Name --name=Name Присвоить балансеру имя Name. Имя не
Имя может использоваться при устанавливается
запросе тестирования балансера.
-v --verbose N Управление выводимой Информация не
-vv диагностической информацией выводится
-vvv
-i --version Вывести версию балансера.
--print-config Вывести содержимое
конфигурационного файла. В
случае, если имя
конфигурационного файла не
указано, балансер выводит
описание параметров и значения
по умолчанию.
-h --help Вывод на экран помощи по
использованию балансера. После
вывода работа завершается.

Параметры командной строки режима записи дампа


Краткая Полная форма Значение По умолчанию
форма
-m N --memory N Размер буфера, используемого 300 М
при записи, в байтах*
-t N --total N Общий размер дампа, который Размер
нужно записать, по окончании неограничен
записи балансер завершает
работу, в байтах* На скоростях
больше 200 Мбит/с
рекомендуется устанавливать не
больше чем размер буфера
-l N --split N Разделять дамп на файлы 2G
указанного размера, в байтах*
* Можно указывать производные единицы измерения K M G, например 2G – 2 гигабайта,
если величина измеряется в байтах, 2 гигабита, если в битах

Параметры командной строки режима проигрывания дампа


Краткая Полная форма Значение По умолчанию

© 2009 MFI-SOFT
All rights reserved.
форма
-m N --memory N Размер буфера, в который Буферизация не
считывается дамп перед началом используется,
передачи, в байтах.* Размер буфера чтение с диска (не
должен быть не меньше общего рекомендуется)
размера проигрываемых файлов
-s N --speed N Скорость проигрывания дампа, в 1x
бит/сек* Если после N указан
символ «x» дамп проигрывается со
оригинальной скоростью (по
штампам времени), умноженной на
N
-r N --repeat N Количество повторов при 1
проигрывании дампов
-u --unlimited Проигрывать дам без ограничения
числа повторов
* Можно указывать производные единицы измерения K M G, например 2G – 2 гигабайта,
если величина измеряется в байтах, 2 гигабита, если в битах

Настройка устройств захвата трафика


Описание устройств захвата требуется в параметре in конфигурационного файла, а так же
в командной строке при запуске балансера в режиме записи дампа.
Устройства захвата описываются строками следующих форматов:
1. eth:<имя eth устройства>
Захват с eth порта при помощи стандартного драйвера;
2. file:<dump файл>[,speed=S][,repeat=R][,memory=M]
Чтение трафика из файла. Параметры:
a. dump файл – путь к файлу содержащего запись сетевого трафика в pcap
формате. Путь может быть указан с символами подстановки ‘*’ и ‘?’. В
случае, если маске удовлетворяют несколько файлов, они будут проиграны
последовательно в порядке, соответствующем сортировке по имени в дереве
каталогов;
b. S – скорость в бит/с (допустимы ед. измерения K M G, по умолчанию –
скорость на основе штампов времени из файла);
c. R – число повторов или * - неограниченное число повторов. По умолчанию
1;
d. M – объем буфера для опережающего чтения файла в байтах (допустимы ед.
измерения К М G, по умолчанию без буфера – чтение сразу с диска);
3. kreader_mmap[.n0[.n1 ...]]
Захват с eth портов при помощи драйвера e1000_kreader_mmap. Через точку могут
указываться индексы захваченных портов, с которых производить чтение
(например, kreader_mmap.0.2.3). Если номера не указаны, чтение производится со
всех захваченных портов;
4. /dev/kreader_mmap*
Захват с eth портов при помощи драйвера kreader_storage. Указывается путь к
файлу устройства;
5. mem:<путь к файлу разделяемой памяти>
Захват трафика из циклического буфера в разделяемой памяти. Запись трафика в

© 2009 MFI-SOFT
All rights reserved.
буфер производится из некоторого декодирующего процесса (STM, E1 декодеры,
eth_player и т.п.);
6. <direct|bridge>:<имя интерфейса>.<rx|tn><N>
Захват трафика с сетевых интерфейсов при помощи драйвера Directnetio.
Устройство описывает одну очередь Directnetio.
a. direct|bridge – режим работы. В режиме bridge пакет при передаче в
выходные устройства не копируется. Выходные устройства при этом
должны иметь тип direct или bridge.
b. имя интерфейса – имя сетевого интерфейса, захваченного Directnetio;
c. rx|tn – тип очереди Directnetio;
d. N - номер очереди Directnetio;
7. gen:len=L, speed=S
Генерация случайных IP пакетов длиной L со скоростью S.

Настройка устройств передачи трафика


Описание устройств передачи требуется в параметре out конфигурационного файла, а так
же в командной строке при запуске балансера в режиме проигрывания дампа.
Устройства передачи трафика описываются строками заданного формата. Существует
сокращённый (простой) и расширенный формат записи.

Сокращённый формат
1. eth:<имя eth устройства>
Передача на eth порт при помощи стандартного драйвера;
2. file:<dump файл>[,buffer=B][,flush=F][,size=S][,split=L]
[,timestamps=TS]
Запись трафика в файл.
a. dump файл – путь к файлу для сохранения записи сетевого трафика в pcap
формате;
b. B – объем буфера, в котором сохранется трафик перед записью на диск (в
байтах, допустимы ед. измерения K M G, по умолчанию – 300 М);
c. F – при сборе указанного объема данных начинается сброс из буфера на
диск (в байтах, допустимы ед. измерения К М G, по умолчанию 200К);
d. S – общий объем данных, которые нужно записать, после этого балансер
завершает работу, 0 – - не ограничено (в байтах, допустимы ед. измерения К
М G, по умолчанию 0);
e. L – дамп разбивается на файлы указанного размера (в байтах, допустимы ед.
измерения К М G, по умолчанию 2G)
f. TS – в дамп для каждого пакета записываются временные метки (0 –
отключено, 1 – включено, по умолчанию - отключено)
3. mem:<путь к файлу разделяемой памяти>
Передача трафика в циклический буфер в разделяемой памяти.
4. null
Аннулирование трафика, передача в «никуда».
5. <direct|bridge>:<имя интерфейса>.<tx|tn><N>
Передача трафика в сетевой интерфейс при помощи драйвера Directnetio.
Устройство описывает одну очередь Directnetio.
a. direct|bridge – режим работы. Для устройств передачи оба режима
эквивалентны, два названия используются для удобства;

© 2009 MFI-SOFT
All rights reserved.
b. имя интерфейса – имя сетевого интерфейса, захваченного Directnetio;
c. tx|tn – тип очереди Directnetio;
d. N - номер очереди Directnetio;

Расширенный формат
Строка описывающая устройство состоит из набора обязательных и необязательных
параметров. Расширенный формат используется при необходимости указания
дополнительных опций устройства (copyfrom, filter, weight и т.п.).

dev=”<device>”[,<parameter>=<value>][...]
dev – обязательный параметр:
1. device – описание устройства в формате сокращённой записи (см. выше);
parameter – опциональные параметры:
2. weight – «вес» устройства. Параметр предназначен для регулирования
распределения трафика: каждое устройство получает количество пакетов
пропорционально своему весу.
Необязательный параметр, по умолчанию равен 1.
Пример
dev=”direct:dev.tn0”,weight=4
Внимание! Параметр weight не учитывается при наличии параметра copyfrom.
3. alias – сокращённое имя устройства для именования его в параметрах,
требующих ссылок на другие устройства (например, copyfrom);
Пример
dev=”direct:dev.tn0”,alias=”main”
4. copyfrom – переключение устройства в режим копирования трафика с других
устройств. Детальное описание копирования трафика приведено в разделе
«Настройка копирования трафика»;
5. filter – правило применения фильтров пакетов. Пакет обрабатывается
устройством только в том случае, если удовлетворяет одному или нескольким
фильтрам по описанному правилу. Детальное описание фильтрации трафика
приведено в разделе «Настройка фильтрации трафика»;
6. srcmac=”XX:XX:XX:XX:XX:XX” – заменять в пакетах, передаваемых через
данное устройство, значение MAC-адреса отправителя на значение данного
параметра;
7. dstmac=”XX:XX:XX:XX:XX:XX” – заменять в пакетах, передаваемых через
данное устройство, значение MAC-адреса получателя на значение данного
параметра;
Внимание! Функционал подмены MAC-адресов (параметры srcmac и dstmac)
используется только при работе с direct устройствами.
8. group=group_name – все пакеты принадлежащие заданной группе будут подаваться
на это выходное устройство. Существует возможность настроить следующие
группы:
a. группа пакетов-IP-фрагментов. Применяется для перенаправления всех IP-
фрагментов на определенное выходное устройство:
ipv4_defrag_mode: pass, group=ipfrag
bs0.out: dev="direct:bific0.tn0", group=ipfrag
b. группа пакетов, принадлежащих одному протоколу 4-го уровня:
using_l4_decoders: <decoder>, pass=<group>

© 2009 MFI-SOFT
All rights reserved.
bs0.out: dev="direct:branch0.tn0", group=<group>
9. server=S, mcluster=G, process=P — параметры роутинга по DID'у
пакета:
bs0.out: dev="direct2:some_pipe",server=S
bs0.out: dev="direct2:some_pipe",server=S,mcluster=G
bs0.out: dev="direct2:some_pipe",server=S,mcluster=G,process=P
если выходное устройство прописано в одном из вышеуказанных видов, то такое
устройство исключается из балансировки входного трафика, а вместо этого на выход
такого устройства направляются пакеты, DID которых удовлетворяет маске S:*:*, или
S:G:*, или S:G:P соответственно. Параметр 'mcluster' анализируется только если
присутствует параметр 'server'. Параметр 'process' анализируется только если
присутствуют оба параметра 'server' и 'mcluster'.

Настройка фильтрации трафика


Описание условий фильтрации требуется при необходимости отбрасывать часть трафика
на одном или нескольких выходных устройства. Условия фильтрации описываются
параметром filter конфигурационного файла балансера.

Формат
Условия фильтрации пакетов описываются строкой следующего формата:
<filter_type>=<value>
Поддерживаются следующие типы фильтров:
1. ip=ip_address[/mask]
ip_address – IPv4 адрес в формате xxx.xxx.xxx.xxx
mask – маска подсети в формате xxx.xxx.xxx.xxx или числовом.
Примеры:
ip=10.10.10.1
ip=212.43.18.0/24
ip=212.43.0.0/255.255.0.0
2. port=port_num
port_num – номер порта TCP/UDP в десятичном формате
Пример (фильтрация HTTP):
port=80
3. proto=proto_code
proto_code – код протокола (L4) из заголовка IP пакета в десятичном формате
Пример (фильтрация UDP):
proto=17
4. vlan=tag
tag – номер VLAN тэга в десятичном формате
5. mpls=tag
tag – номер MPLS тэга в десятичном формате
Использование
1. В конфигурационном файле балансера описываются все используемые условия
фильтрации в указанном формате (параметр filter, см. Конфигурационный файл
балансера). При дальнейшей настройки фильтрации используются индексы
описанных фильтров: 0 для первого фильтра, 1 для второго и т.д.;

© 2009 MFI-SOFT
All rights reserved.
2. В описании выходного устройства используется расширенный формат. В поле
filter описывается правило применения фильтров.
Формат строки описания правила применения фильтра:
[!!][!]fidx0[, [!]fidx1 ...]
Строка состоит из перечисленных через запятую индексов фильтров.
Перед номером индекса может быть указан знак ‘!’. В этом случае фильтр
используется в правиле с оператором НЕ (отрицание элемента).
В начале строки может быть указан двойной знак ‘!’ («!!»). В этом случае
используется инвертирование правила при анализе (отрицание объединения по И).
Внимание! Поле filter множественное, для одного out устройства может быть
указано несколько фильтров. В этом случае они объединяются по ИЛИ.

Примеры
# перечень условий фильтрации
filter: ip=192.168.1.1
filter: port=80
filter: proto=6
...
# правило фильтрации: ip-addr and NOT TCP
out: dev=”file:my.dump”,filter=”0,!2”

# правило фильтрации: NOT (ip-addr and TCP) OR HTTP


out: dev=”file:my.dump”,filter=”!!0,2”,filter=”1”

Настройка копирования трафика


Настройка копирования трафика требуется при необходимости одновременной передаче
пакетов в несколько устройств. Так же копирование может использоваться при
ответвлении части трафика в отдельное устройство при помощи правил фильтрации (см.
примеры).
Для настройки копирования трафика в описании выходного устройства используется
расширенный формат. В поле copyfrom указываются источники пакетов для данного
устройства. В качестве источника пакетов может быть использовано только другое
выходное устройство. Источник пакетов указывается при помощи индекса или
сокращённого имени.
Индекс устройства – целое число, определяющееся положением устройства в списке
устройств, описанных в конфигурационном файле. Первое устройство имеет индекс 0,
второе 1, третье 2 и т.д.
Сокращённое имя устройства – строка, указанная для некоторого устройства при помощи
поля alias.
При копировании устройством трафика с нескольких источников, индексы/имена
разделяются запятыми.
Для исключения нарушения формата рекомендуется значение параметра copyfrom
заключать в двойные кавычки.
Внимание! Если для устройство находится в режиме копирования (указан
параметр copyfrom), то оно не участвует в распределении входящего трафика,
т.е. получает пакеты только как копии с других выходных устройств.

Примеры

© 2009 MFI-SOFT
All rights reserved.
# перечень фильтров
filter: proto=6
...
dev=”direct:dev0.tn0”
dev=”direct:dev0.tn1”,alias=”second”
dev=”file:my.dump”,copyfrom=”0,second”

# Пример разделения трафика (копирования не происходит)


dev=”direct:dev1.tn0”,alias=”fourth”,filter=”0”
dev=”direct:dev1.tn0”,copyfrom=”fourth”,filter=”!0”

Конфигурационный файл сервиса балансера


Сервис запускает несколько экземпляров процессов-балансеров.
Конфигурационный файл сервиса содержит параметры сервиса, параметры общие для
всех балансеров, и параметры специфические для каждого балансера в отдельности. При
запуске сервиса на основе конфигурации сервиса создаются конфигурационные файлы
для каждого экземпляра балансера в каталоге /opt/balancer/etc/.cfg
Конфигурационный файл балансера содержит параметры трёх типов:
1. Собственные параметры сервиса;
2. Общие параметры процессов балансеров. Эти параметры передаются каждому
запускаемому процессу балансеру. Описание этих параметров приведено в разделе
«Конфигурационный файл балансера»
3. Параметры конкретных процессов балансеров. Эти параметры передаются при
запуске конкретному процессу балансеру. Любой общий параметр может быть
отдельно определён для конкретного процесса балансера при помощи
специального формата:
<balancer_name>.<parameter_name>
balancer_name – имя процесса балансера. Задаётся в собственных параметрах
сервиса (см. balancer);
parameter_name – название общего параметра (см. Конфигурационный файл
балансера)
При настройке автоматического запуска балансера как правило требуется определить
параметры:
1. Имена процессов балансеров (см. balancer);
2. Режим работы в общих параметрах (режим по умолчанию, обычно normal) и для
конкретных процессов, которые работают в отличных режимах;
3. Номер процессора, к которому выполняется привязка каждого процесса балансера
(см. cpu);
4. Входные устройства для каждого процесса балансера;
5. Выходные устройства для каждого процесса балансера;

control_port
Описание Порт для диагностики
Важность Важный
Тип Целый
Кратность Одиночный
Значение Номер порта для тестирования сервиса
По умолчанию 999
Влияние Если порт уже используется, сервис не запускается.

© 2009 MFI-SOFT
All rights reserved.
Рекомендуется использовать значение по умолчанию

balancer
Описание Имя процесса балансера
Важность Важный
Тип Строковый
Кратность Множественный
Значение Имя процесса балансера, под которым он будет описан в этом
конфигурационном файле. Параметры в конфигурационном
файле, имеющие формат <имя>.<параметр> относятся к данному
экземпляру балансера.
Рекомендуется применять следующие правила именования
процессов балансеров:
bf<N> – Balancer Fast. Быстрые балансеры, выполняющие
промежуточное распределение трафика. Работают в режиме
simple. N – индекс, начинается с 0.
bs<N> – Balancer Slow. Медленные балансеры, выполняющие
распределение трафика между процессами csniff. Работают в
режиме normal. N – индекс, начинается с 0.
fb0 – FeedBack балансер. Отдельный процесс, выполняющий
передачу правил обратной связи.
По умолчанию Не указывается
Влияние Для каждого из этих параметров сервис запускает один процесс
балансера, который конфигурируется отдельно. Если ни один
параметр не указан, не будет запущено ни одного процесса.

cpu
Описание Процессор, к которому будет привязан балансер. Применяется
только к конкретному процессу балансера, описывается в
формате:
<имя балансера>.cpu: <номер процессора>
Важность Важный
Тип Целый
Кратность Одиночный
Значение Номер процессора, к которому будет привязан балансер
По умолчанию Не выполнять привязку, процесс выполняется на любом
свободном процессоре
Влияние Если число процессоров в системе меньше чем указанный
номер, балансер не будет запущен. Если другой балансер или
служебные процессы драйверов directnetio будут привязаны к
тому же процессору, возникнут потери пакетов. Если процессор
не указан, также могут возникнуть потери из-за того что система
автоматически выберет процессор, назначенный другому
критическому по времени процессу.

Конфигурационный файл балансера


Конфигурационный файл балансера содержит настройки, управляющие работой
балансера. Формат параметров:
<имя параметра>: <значение параметра>

© 2009 MFI-SOFT
All rights reserved.
Если параметр не указан в переданном балансеру файлу конфигурации, балансер
использует для данного параметра значение, заданное по умолчанию (см. описания
параметров).

bugreports_to_stdout
Описание Выводить сообщения со снифера на стандартный вывод
Тип Булевый
Кратность Одиночный
Значение 0 – сохранять сообщения в /etc/balancer/sniffer.err
1 – выводить сообщения на стандартный вывод (отладочный
режим работы)
По умолчанию 0
Влияние Использование параметра допускается только в отладочном
режиме работы.
В нормальном режиме работы передача сообщений на
стандартный вывод эквивалентна их блокированию!
Запрещается перенаправлять сообщения на стандартный вывод в
нормальном режиме работы!

enable_debug_info
Описание Выводить отладочные сообщения
Тип Булевый
Кратность Одиночный
Значение 0 – не выводить отладочные сообщения
1 – выводить отладочные сообщения
По умолчанию 0
Влияние Использование параметра рекомендуется только в отладочном
режиме работы.
В нормальном режиме использование параметра не
рекомендуется, т.к. приведёт к появлению в системном журнале
большого количества ненужных сообщений.

language
Описание Язык для вывода сообщений балансера
Тип Перечисляемый
Кратность Одиночный
Значение Одно из значений:
«russian» – вывод сообщений на русском языке
«english» – вывод сообщений на английском языке
По умолчанию «russian»
Влияние Нет влияния на работу снифера. Определяется только язык, на
котором сообщения от снифера отображаются в системном
журнале ПУ.

idle_sleep
Описание Задержка процесса при отсутствии данных для обработки
Тип Целый
Кратность Одиночный

© 2009 MFI-SOFT
All rights reserved.
Значение Время задержки в микросекундах. Нулевое значение означает
отсутствие задержки.
По умолчанию 1000
Влияние Слишком большие значения (более 10000) могут привести к
потерям пакетов из-за слишком долгого «сна» балансера.
Нулевое значение приводит к лишней трате процессорного
времени

ip_timeout_check_rate
Описание Скорость проверки таймаутов потоков
Тип Целый
Кратность Одиночный
Значение Целое число, определяющее, через сколько входящих пакетов
выполняется проверка одного потока на таймаут
По умолчанию 10
(каждые 10 пакетов 1 поток проверяется на таймаут)
Влияние Большие значения (50 - 100) параметра приводят к медленному
закрытию потоков по таймауту, и увеличению количества
открытых потоков.
Маленькие значения (1 - 5) параметра приводят к повышению
нагрузки на проверку таймаутов и к снижению эффективности
L3 декодера, при этом возможно уменьшение количества
потоков и прирост производительности

ip_close_timeout
Описание Таймаут закрытия неопознанных IP потоков
Тип Целый
Кратность Одиночный
Значение Время с момента поступления последнего пакета, через которое
закрываются IP потоки. Время указывается в секундах.
Управление потоками осцществляется только в режиме
балансировки FULL
По умолчанию 30
Влияние Большое значение таймаута ведёт к увеличению количества
открытых неопознанных IP потоков. Маленькие значения
увеличивают скорость открытия/закрытия таких потоков.
Рекомендуется оставить значение по умолчанию.

ip_flows_limit
Описание Максимальное количество одновременно открытых потоков
Тип Целый
Кратность Одиночный
Значение Числовое значение, определяющее предел одновременно
открытых потоков.
Рекомендуется устанавливать параметр из расчёта 45000 на
каждые 100 Мбит трафика, приходящегося на один
декодирующий процесс.
По умолчанию 100000
Влияние Большие значения ведут к увеличению расхода памяти

© 2009 MFI-SOFT
All rights reserved.
процессом балансера (на каждый поток 256 байт, независимо от
того, сколько потоков реально будет открыто). Маленькие
значения могут привести к потерям пакетов из-за невозможности
открыть поток.

l3_common_alloc_size
Описание Объем памяти для кэширования потоков
Тип Целый
Кратность Одиночный
Значение Объём памяти (в байтах), предварительно выделенной для
сборки потоков.
По умолчанию 10485760
Влияние Маленькие значения параметра могут привести к переполнению
аллокатора в процессе декодирования и к потере
пакетов/потоков.
Большие значения могут привести к полной нехватке памяти в
системе при запуске или при работе снифера.

ipv4_defrag_enable
Описание Включение IP реассемблера
Тип Булевый
Кратность Одиночный
Значение 0 – IP реассемблер выключен
1 – IP реассемблер включен
По умолчанию 1
Влияние Сборка фрагментированных пакетов создаёт дополнительную
нагрузку. Отключение сборки ведёт к пропуску
фрагментированных IP пакетов в режимах балансировки full и
normal (см. 8.1.2.9). Не рекомендуется отключать IP реассемблер
в режимах full и normal. В режиме simple каждый фрагмент
передается отдельно, IP реассемлер не используется.

ipv4_defrag_mode
Описание Режим обработки IP-фрагментов
Тип Перечисляемый
Кратность Одиночный
Значение decode – проводить сборку IP-фрагментов
skip – отбрасывать IP-фрагменты
pass – перенаправлять все фрагменты на заданное выходное
устройство
По умолчанию decode
Влияние Влияет на алгоритм обработки IP-фрагментов. Всего существует
несколько методов:
1) декодирование фрагментов IP-реассемблером
(decode)
2) вывод всех фрагментов на заданный выход (pass)
3) skip – отбрасывать все встречаемые фрагменты

© 2009 MFI-SOFT
All rights reserved.
ipv4_frag_timeout
Описание Таймаут сборки фрагментированного IP пакета
Тип Целый
Кратность Одиночный
Значение Максимальное время ожидания фрагментов IP пакета.
Указывается в секундах.
По умолчанию 5
Влияние Увеличение параметра ведёт к увеличению расхода
динамической памяти и памяти в l3_allocator. При уменьшении
параметра расход памяти снижается, но появляется вероятность
пропуска фрагментированных IP пакетов из-за прерывания
процесса сборки по таймауту.

ipv4_frag_nodup
Описание Отбрасывать дубли IP фрагментов
(параметр актуален для GTP)
Тип Булевый
Кратность Одиночный
Значение 0 – не отбрасывать дубли (собирать дубли IP пакетов)
1 – отбрасывать дубли IP фрагментов
По умолчанию 0
Влияние Отбрасывание дублей приводит к увеличению собираемых
пакетов и закрытию их по таймауту.
Сборка дублей приводит к увеличению расхода памяти в
l3_allocator и к повышенной нагрузке на L3-L4 декодеры из-за
подачи в них дублей IP пакетов.

ipv4_frag_limit
Описание Максимальное количество одновременно собираемых IP-пакетов
Тип Целый
Кратность Одиночный
Значение Целое число, определяющее максимальное количество
фрагментированных IP пакетов, собираемых в реассемблере.
По умолчанию 10000
Влияние Большое количество одновременно собираемых пакетов
увеличивает расход памяти в L3_allocator. В нормальном режиме
работы (без потерь пакетов, без дублирования фрагментов)
предел в 10000 собираемых пакетов достаточен. Увеличение
числа собираемых пакетов чаще всего происходит при потерях
пакетов или при дублировании фрагментов со включенной
опцией ipv4_frag_nodup (отбрасывать дубли).

slow_start
Описание Время плавного входа в рабочий режим
Тип Целый
Кратность Одиночный
Значение 0... 65535
Время после запуска балансера, в течении которого балансер

© 2009 MFI-SOFT
All rights reserved.
будет передавать на выходные интерфейсы не весь трафик, в
секндах. Скорость плавно нарастает в течении указанного
времени с момента запуска балансера, 0 – весь трафик подается
сразу.
По умолчанию 0
Влияние Слишком большое значение приведет к потерям данных на
протяжении всего указанного промежутка времени. Ненулевое
значение в режиме записи дампов приведет к потерям при
записи.

l2_hash_rule
Описание Правило вычисления хэша пакетов на втором уровне
декодирования
Тип Перечисляемый
Кратность Одиночный
Значение Одно из значений:
random – случайный хеш для каждого пакета
vlan – хеш вычисляется на основе меток vlan,
mpls – хеш вычисляется на основе тагов mpls,
l3_pass – передавать пакет на обработку (вычисление хеша) на
третий уровень декодирования
По умолчанию l3_pass
Влияние Значение хэша определяет, через какой из выходных
интерфейсов будет отправлен пакет. Если пакеты одного потока
будут иметь разный хэш, они будут направлены на разные
интерфейсы, и сниффер не сможет собрать поток. Рекомендуется
оставить значение по умолчанию.
В случае использования значений: random, vlan, mpls хеш
вычисляется на 2-ом уровне декодирования, пакет отправляется
в одно из выходных устройств сразу со второго уровня,
декодирование третьего уровня не выполняется.

hash_rule
Описание Правило вычисления хэша пакетов
Тип Перечисляемый
Кратность Одиночный
Значение Одно из значений:
«ip» - вычисление хэша по IP адресу отправителя и получателя
«port» - вычисление хэша по номеру порта отправителя и
получателя (использовать только в режиме балансировки normal
и full)
«ipport» - вычисление хэша по IP адресу и номеру порта
отправителя и получателя (использовать только в режиме
балансировки normal и full)
«adaptive» - случайный хэш, один и тот же для всех пакетов
одного потока (использовать только в режиме балансировки full)
«random» - случайный хэш для каждого пакета
По умолчанию ip
Влияние Значение хэша определяет через какой из выходных

© 2009 MFI-SOFT
All rights reserved.
интерфейсов будет отправлен пакет. Если пакеты одного потока
будут иметь разный хэш, они будут направлены на разные
интерфесы, и сниффер не сможет собрать поток. Рекомендуется
оставить значение по умолчанию

hash_offset
Описание Управление модификацией вычисленного хэша пакетов
Тип Целый
Кратность Одиночный
Значение Значение смещения хэша (0-16)
По умолчанию 0
Влияние При передаче траффика через цепочку из нескольких балансеров
алгоритм вычисления хэша должен различаться у разных
балансеров. Рекомендуется увеличивать значение на 4 у каждого
последующего балансера в цепочке. Одинаковое значение у
нескольких балансеров будет приводить к неравномерному
распределению трафика на втором балансере

processing_mode
Описание Режим балансироки
Тип Перечисляемый
Кратность Одиночный
Значение Одно из значений:
«simple» - решение об отправке пакета в то или иное выходное
устройство производится отдельно по каждому пакету сразу по
его поступлении, IP фрагменты обрабатываются по отдельности,
тунели не раскрываются
«normal» - решение об отправке пакета производится отдельно
по каждому пакету, фрагментированные пакеты собираются,
тунели раскрываются
«full» - производится сборка IP потоков, решение об отправке
принимается для потока

По умолчанию simple
Влияние В режиме simple хэш вычисляется только по ip адресу
полученного пакета, он является наиболее быстрым. При
большом объеме тунелированного трафика в режиме simple
пакеты распределяются неравномерно, так как все пакеты тунеля
имеют один и тот же хэш. В этом случае следует использовать
режим normal. При записи дампов всегда следует использовать
режим simple

l3_optimize
Описание Режим оптимизации обработки пакетов на 3-ем уровне
декодирования
Тип Целый
Кратность Одиночный
Значение 0 – режим выключен, 1 - включен
По умолчанию 1

© 2009 MFI-SOFT
All rights reserved.
Влияние При включенном режиме следущие типы пакетов отбрасываются
и не подаются ни на одно из выходных устройств:
4) tcp-пакеты c нулевым размером payload с флагом
ACK и без флагов RST, SYN, FIN – «обычные»
ACK-и. ВАЖНО: при включении режиме
ack_analyze декодера tcp на снифере (при
проблемах с перехватом больших файлов
(перехватываются битые файлы), значение
l3_optimize должно быть 0.
5) Пакеты с кодом протокола на уровне IP отличным
от следующих: TCP, UDP, GRE, IPIP, IPSec(AH).

filter
Описание Условия фильтрации пакетов
Тип Строковый
Кратность Множественный
Значение Строка формата описанного в разделе «Настройка фильтрации
трафика»
По умолчанию не указывается
Влияние Рекомендуется одновременно использовать не более 2-3
фильтров. Большое количество фильтров может значительно
снизить производительность балансера.

in
Описание Устройство для захвата трафика
Тип Строковый
Кратность Множественный
Значение Строка формата описанного в разделе «Настройка устройств
захвата трафика»
По умолчанию не указывается
Влияние Перечисляются все устройства, с которых собирается трафик.
Если при подключении к одному из устройств возникают
проблемы, балансер не запускается.

out
Описание Устройство для передачи трафика
Тип Строковый
Кратность Множественный
Значение Строка формата описанного в разделе «Настройка устройств
передачи трафика»
По умолчанию не указывается
Влияние Перечисляются все устройства, на которые передается трафик.
Если при подключении к одному из устройств возникают
проблемы, работа с ним не производится.

© 2009 MFI-SOFT
All rights reserved.
change_vlan_ethertype
Описание Подмена в Ethernet пакетах поля EtherType со значения 0x8100
(IEEE 802.1Q VLAN) на значение 0x8101
Тип Булевый
Кратность Одиночный
Значение 0 – не подменять
1 – подменять
По умолчанию 0
Влияние Использование параметра рекомендуется при балансировке
через свитч, если трафик содержит VLAN-ы. В противном
случае свитч не будет пропускать неизвестные ему VLAN-ы.
Подмена, если включена, производится на выходах балансера.
На входах балансеров и снифферов производится обратная
подмена для корректной работы декодеров. Обратная подмена
производится всегда вне зависимости от значения параметра.

© 2009 MFI-SOFT
All rights reserved.
Утилита тестирования test_balancer
Утилита test_balancer используется для предоставления расширенной диагностической
информации по работе балансера.
test_balancer используется в двух режимах:
1. Режим удалённого тестирования
2. Режим локального тестирования

В режиме удалённого тестирования утилита test_balancer ожидает на TCP порту команд


запроса статистики. Запросить статистику можно удалённо с другого сервера при помощи
утилиты test_tcp или test_sniffer.
В режиме удалённого тестирования утилита test_balancer как правило используется при
автоматическом запуске балансера. Сервис балансера запускает утилиту в фоновом
режиме при помощи команды
test_balancer [options] [port]
port – номер порта, на котором ожидаются подключения от утилит тестирования test_tcp,
test_sniff. При запуске сервиса балансера, номер порта берётся из конфигурационного
файла сервиса балансера (см . control_port).

В режиме локального тестирования утилита test_balancer запускается при помощи


команды:
test_balancer [-n Name]
Name – выводить тестирование только для балансера, чьё имя совпадает с Name. Имя
балансера задаётся при его запуске с помощью опции --name.
В результате работы утилиты test_balancer на экран выводится диагностическая
информация (тестирование) по запрошенному балансеру, либо по всем работающим на
данном сервере процессам балансеров, если параметр Name не указан.

Доступные опции тестирования (как в локальном так и удаленном):


Опция Описание Значение по-умолчанию
-q query строка содержащая список all (все доступные узлы
--query=query узлов для тестирования. тестирования)
Примеры:
-q all – вывести полный
список тестирования
-q
“all/capture;all/l3_decoder”
– вывести только
тестирование устройств
захвата, и L3-декодера
-l lang Выводить тестирование на rus (русский язык тестирования)
--lang=lang указанном языке. Набор
языков на которых
балансер может выводить
тестирование определяется
набором файлов шаблонов
тестирования в каталоге
/opt/balancer/etc/templates.
По-умолчанию доступны 2

© 2009 MFI-SOFT
All rights reserved.
языка: rus, eng
-f format Формат выдачи text
--format=format тестирования.
Доступно 2 формата:
text – тестирование
выводится в stdout в виде
текста, binary – в бинарном
виде (формат
common_stats)
-c comb Включение отключение 0
--combine=comb режима суммирования
тестирования с нескольких
балансеров.
0 – режим выключен
1 – режим включен
При выключенном режиме
тестирование для каждого
балансера выводится
отдельно, при включенном
режиме – выводится одно
общее суммарное
тестирование.
-n "balancers_names" Запрашивать тестирование * (выводить тестирование всех
--name="balancers_names" только для заданных балансеров)
параметром балансеров

© 2009 MFI-SOFT
All rights reserved.

Оценить