Содержание

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

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

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

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

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

  1. Распределение трафика между узлами сбора и хранения данных, в случае работы QoE в режиме "Кластера", когда хранение данных выполняется на разных серверах.
  2. Дублирование данных в режиме репликации, между узлами сбора и хранения, для решения вопроса отказоустойчивости или одновременного экспорта потока в разные направления, или между разными хостами приёма потока (Fullflow/Clickstream/DNS flow).
  3. Перенаправлять поток (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-балансировщиком необходимо завести подходящее оборудование. Для этого нужно:

  1. Перейти в раздел Администратор → Оборудование;
  2. Нажать на + над таблицей оборудования;
  3. В появившемся окне выбрать тип оборудования — Сервер IPFIX-балансира;
  4. Заполнить остальные поля, сохранить оборудование.
Подробное описание работы с разделом Оборудование — Управление оборудованием.

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

  1. В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);
  2. :!: В поле “Балансир” выбрать значение “All”.
  3. :!: Указать Тип порта, Субресиверы балансира, Тип субприемников балансира.
  4. Параметрам Тип порта и Тип субприемников балансира рекомендуется задавать одинаковое значение.
  5. Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

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

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

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

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

  1. В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);
  2. :!: В поле “Балансир” выбрать значение “RoundRobin”.
  3. :!: Указать Тип порта, Субресиверы балансира, Тип субприемников балансира.
    Параметрам Тип порта и Тип субприемников балансира рекомендуется задавать одинаковое значение.
  4. Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

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

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

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

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

  1. В разделе Администратор → Конфигурация IPFIX-балансировщика выбрать сервер IPFIX и добавить ресивер (по нажатию на + над таблицей ресиверов);
  2. :!: В поле “Балансир” выбрать значение “Отключено”;
  3. Настроить остальные параметры ресивера. Их описание приведено в разделе Описание параметров.

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

Настройка экспорта IPFIX на DPI описана в следующих разделах:

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

Работа в CLI

Настройка

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

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

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

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

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

# 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

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

Имя параметра в GUI Имя параметра в CLI Описание Возможные значения и формат записи Примечание
Тип ресивера FULLFLOW
CLICKSTREAM
DNSFLOW
Тип ресивера: Нетфлоу или Клистрим Значения:
- Нетфлоу - ресивер для получения данных Нетфлоу
- Кликстрим - ресивер для получения данных Кликстрим
Тип порта PORT_TYPE[0] Тип протокола, по которому ресивер передает данные Значения:
- TCP
- UDP
Рекомендуется использовать TCP
Порт PORT[0] Порт, через который ресивер слушает трафик Значения по умолчанию:
- 1500 для Нетфлоу
- 1501 для Кликстрим

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

Период поворота дампа для Кликстрим должен быть больше или равен тому же периоду для Нетфлоу. Когда дамп Нетфлоу оборачивается, посылается сигнал HUP для синхронизации потоков.
:!: Действует только в режиме записи
Не меняйте этот параметр без необходимости
Ротация в секундах 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 DPI_ID[0] Добавляет в статистику ИД DPI. Для удобства просмотра статистики по определенному 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
:!: Действует в режимах репликации и балансировки
Рекомендуется использовать TCP
Балансир авто Вариант создания и запуска субресиверов Значения:
- Отключено — субресиверы нужно прописать вручную
- Включено — субресиверы создаются и запускаются автоматически
Если QoE и IPFIX-балансировщик установлены на разных серверах, рекомендуется устанавливать значение “Отключено”