IPFIX-балансировщик [Документация VAS Experts]

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 — тип потока:

  • FULLFLOW — Fullflow
  • CLICKSTREAM — Clickstream
  • DNSFLOWDNS 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

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

Имя параметра в 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-балансировщик установлены на разных серверах, рекомендуется устанавливать значение “Отключено”