IPFIX-балансировщик

Ключевая задача модуля — ретрансляция (репликация и балансировка) всех экспортируемых с DPI IPFIX-потоков данных о трафике (Fullflow/Clickstream/DNS flow): он принимает IPFIX от fastDPI и далее ретранслирует его на другие хосты согласно настройкам. Дополнительно может быть реализован режим записи. IPFIX-балансировщик оперирует порциями данных (сообщениями) при их распределении между узлами сбора данных (ресиверами/коллекторами). Имеет 2 основных режима распределения данных:

Режим "RoundRobin" разделяет (балансирует) поток IPFIX по одному сообщению на каждый указанный хост.
Отправляет одно сообщение на один узел приема → коллектор → отправляет следующее сообщение на следующий доступный хост приёма → коллектор и так по кругу пока не закончатся сообщения.

Режим "All" реплицирует поток IPFIX.
Копирует полученные сообщения от DPI, на все узлы приема — коллекторы.

Позволяет работать как по UDP, так и по TCP, а также привязывать обработчик определенного типа трафика (Fullflow/Clickstream/DNS flow) к ядру CPU системы, обеспечивая тем самым распределение нагрузки между CPU.

С помощью балансировщика можно выполнить:

Распределение трафика между узлами сбора и хранения данных, в случае работы QoE в режиме "Кластера", когда хранение данных выполняется на разных серверах.

Дублирование данных в режиме репликации, между узлами сбора и хранения, для решения вопроса отказоустойчивости или одновременного экспорта потока в разные направления, или между разными хостами приёма потока (Fullflow/Clickstream/DNS flow).

Перенаправлять поток (Fullflow/Clickstream/DNS flow) с DPI без изменения конфигурации и необходимого рестарта процесса fastdpi.
Когда поток данных экспортируется в балансировщик по адресу 127.0.0.1, запущенный на том же хосте, где и DPI.
При этом при изменении адреса назначения потока или адреса коллектора, необходимо выполнить эти изменения в файле конфигурации IPFIX-балансировщика и выполнить его рестарт, без влияния на обрабатываемый DPI-трафик.

Управление

Установка:

yum install fast_ipfix_balancer

Модуль IPFIX-балансировщика рекомендуется устанавливать на тот же сервер, где установлен DPI.

Остановка и перезапуск:

ipfix-balancer-stop ipfix-balancer-restart

Просмотр логов:

journalctl -xe | grep IPFIXcol2 journalctl -f | grep IPFIXcol2

Определить, к какому CPU принадлежит процесс балансировки. CPU задается параметром IPFIX_xx_TASKSET, описание в разделе Работа в CLI → Настройка.

ps -ax -o %cpu,psr,comm | grep ipfix

Работа в GUI

Лог-файлы IPFIX-балансировщика можно посмотреть в разделе "Администратор" → "Логи IPFIX-балансира"

Добавление оборудования

Для работы с IPFIX-балансировщиком необходимо завести подходящее оборудование. Для этого нужно:

Перейти в раздел Администратор → Оборудование;

Нажать на + над таблицей оборудования;

В появившемся окне выбрать тип оборудования — Сервер IPFIX-балансира;

Заполнить остальные поля, сохранить оборудование.

Подробное описание работы с разделом Оборудование — Управление оборудованием.

Сценарий 1. Репликация

В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);

В поле “Балансир” выбрать значение “All”.

Указать Тип порта, Субресиверы балансира, Тип субприемников балансира.

Параметрам Тип порта и Тип субприемников балансира рекомендуется задавать одинаковое значение.

Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

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

Пример настроек ресивера для сценария репликации:

Логи IPFIX-балансировщика можно посмотреть в разделе Администратор → Логи IPFIX-балансира

Сценарий 2. Балансировка

В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);

В поле “Балансир” выбрать значение “RoundRobin”.

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

Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

В результате получим равномерное распределение пакетов по всем хостам.

Пример настроек ресивера для сценария балансировки:

Если включен один из режимов балансировки (All или RoundRobin), то начинает работать IPFIXCol2 и субресиверы, на которые он отправляет пакеты.

Сценарий 3. Режим записи

В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);

В поле “Балансир” выбрать значение “Отключено”;

Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

В этом случае работает IPFIX ресивер, пишет данные в файл и может делать экспорт IPFIX на IP-адреса, указанные в поле “Экспорт”.

Настройка экспорта IPFIX на DPI описана в документации VAS Experts: Нетфлоу Кликстрим, DNS и т.д.

Пример настроек ресивера для сценария записи:

Работа в CLI

Настройка

Файл конфигурации балансировщика находится по пути /var/fast_ipfix_balancer/backend/.env

Конфигурация состоит из параметров формата IPFIX_xx_yy, где:

xx — тип потока:

FULLFLOW — Fullflow

CLICKSTREAM — Clickstream

DNSFLOW — DNS flow

yy — имя параметра:

PORT_TYPE[0] — тип порта.
Возможные значения:

tcp (рекомендуется)

udp

PORT[0] — любой желаемый порт, он должен быть уникальным для каждого потока.
Значения по умолчанию:

1500 для Fullflow

1501 для Clickstream

ROTATE_MINUTES[0] — Период обращения дампа приемника или период загрузки данных в БД. Период поворота дампа для кликстрим должен быть больше или равен тому же периоду для фулфлоу. Когда дамп фулфлоу оборачивается, посылается сигнал HUP для синхронизации потоков. Не меняйте этот параметр без необходимости
Значение по умолчанию:

10 минут для Fullflow

12 минут для Clickstream

ROTATE_DELAY_SECONDS[0] — Ротация дампов в секундах. То же самое, что и ротация в минутах, только в секундах. Если это значение включено, значение в минутах игнорируется.

FW_MAX_QUEUE_SIZE[0] — Ротация по количеству записей в флоу. Работает одновременно с ротацией в минутах или секундах.

DUMP_INSERT_PROCESSES[0] — Ресивер(ы), на который(е) происходит экспорт данных.
Формат: 10.0.0.2/9920/tcp,10.0.0.3/3440/udp.

DPI_ID[0] — Номер DPI.
Значение по умолчанию: -1.
Если значение равно -1 или не указано, то номер DPI определяется порядком получателя в списке.

BALANCER[0] — Тип балансировщика.
Возможные значения:

RoundRobin — разделяет поток IPFIX

All — реплицирует поток IPFIX

BALANCER_SUB[0] — приемник(и), на который(е) происходит разделение или репликация данных.
Формат: 10.0.0.2/9920,10.0.0.3/3440

BALANCER_SUB_PROTO[0] — Тип порта.
Возможные значения:

tcp (рекомендуется)

udp

TASKSET — Номер CPU в системе, на котором будет работать обработчик трафика.

Пример конфигурационного файла

# Fullflow распределяется между тремя QoE-серверами IPFIX_FULLFLOW_PORT_TYPE[0]=tcp IPFIX_FULLFLOW_PORT[0]=1500 IPFIX_FULLFLOW_BALANCER[0]=RoundRobin IPFIX_FULLFLOW_BALANCER_SUB[0]=10.19.3.21/1500,10.19.3.23/1600,10.19.3.24/1600 IPFIX_FULLFLOW_BALANCER_SUB_PROTO[0]=tcp IPFIX_FULLFLOW_BALANCER_TASKSET[0]=61 # Clickstream распределяется между двумя QoE-серверами: 10.19.3.21/10102 и 10.19.3.22/10102 IPFIX_CLICKSTREAM_PORT_TYPE[0]=tcp IPFIX_CLICKSTREAM_PORT[0]=1501 IPFIX_CLICKSTREAM_BALANCER[0]=RoundRobin IPFIX_CLICKSTREAM_BALANCER_SUB[0]=10.19.3.21/1501,10.19.3.23/1601 IPFIX_CLICKSTREAM_BALANCER_SUB_PROTO[0]=tcp IPFIX_CLICKSTREAM_BALANCER_TASKSET[0]=62 # DNS flow распределяется между двумя QoE-серверами: 10.19.3.21/10103 и 10.19.3.22/10103 IPFIX_DNSFLOW_PORT_TYPE[0]=tcp IPFIX_DNSFLOW_PORT[0]=1101 IPFIX_DNSFLOW_BALANCER[0]=RoundRobin IPFIX_DNSFLOW_BALANCER_SUB[0]=10.19.3.21/1101,10.19.3.23/2101 IPFIX_DNSFLOW_BALANCER_SUB_PROTO[0]=tcp IPFIX_DNSFLOW_BALANCER_TASKSET[0]=63

Описание параметров

Параметр	Описание	Возможные значения и формат записи	Примечание
Тип ресивера	Тип ресивера: Нетфлоу или Клистрим	Значения: - Нетфлоу - ресивер для получения данных Нетфлоу - Кликстрим - ресивер для получения данных Кликстрим
Тип порта	Тип протокола, по которому ресивер передает данные	Значения: - TCP - UDP	Рекомендуется использовать TCP
Порт	Порт, через который ресивер слушает трафик	Значения по умолчанию: - 1500 для Нетфлоу - 1501 для Кликстрим Можно указать любой порт. Главное, чтобы он отличался для каждого потока
Ротация в минутах	Период обращения дампа приемника или период загрузки данных в БД	Значения по умолчанию: - 10 минут для Нетфлоу - 12 минут для Кликстрим Период поворота дампа для Кликстрим должен быть больше или равен тому же периоду для Нетфлоу. Когда дамп Нетфлоу оборачивается, посылается сигнал HUP для синхронизации потоков.	Действует только в режиме записи Не меняйте этот параметр без необходимости
Ротация в секундах	Период обращения дампа приемника или период загрузки данных в БД	Действует только в режиме записи Если это значение включено, значение в минутах игнорируется.
Ротация по флоу	Период обращения дампа приемника или период загрузки данных в БД	Действует только в режиме записи Работает одновременно с ротацией в минутах или секундах.
Экспорт	Адреса ресиверов, куда экспортируются данные.	Формат: 10.0.0.2/9920/tcp,10.0.0.3/3440/udp	Действует только в режиме записи
Идентификатор DPI	Добавляет в статистику ИД DPI. Для удобства просмотра статистики по определенному DPI	Значение по умолчанию: -1 Если значение равно -1 или не указано, то номер DPI определяется порядком получателя в списке.	Действует только в режиме записи
Балансир	Тип балансировки	Значения: - Отключено — отключает балансировку, включает режим записи - RoundRobin — разделяет поток IPFIX - All — реплицирует поток IPFIX
Субресиверы балансира	Адреса субресиверов, на которые будут отправляться разделенные или реплицированные данные	Формат: 10.0.0.2/9920,10.0.0.3/3440	Действует в режимах репликации и балансировки
Тип субприемников балансира	Тип протокола, по которому ресивер передает данные на субресиверы	Значения: - TCP - UDP	Действует в режимах репликации и балансировки Рекомендуется использовать TCP
Балансир авто	Вариант создания и запуска субресиверов	Значения: - Отключено — субресиверы нужно прописать вручную - Включено — субресиверы создаются и запускаются автоматически	Если QoE и IPFIX-балансировщик установлены на разных серверах, рекомендуется устанавливать значение “Отключено”