Ключевая задача модуля — ретрансляция (репликация и балансировка) всех экспортируемых с DPI IPFIX-потоков данных о трафике (Fullflow/Clickstream/DNS flow): он принимает IPFIX от fastDPI и далее ретранслирует его на другие хосты согласно настройкам. Дополнительно может быть реализован режим записи. IPFIX-балансировщик оперирует порциями данных (сообщениями) при их распределении между узлами сбора данных (ресиверами/коллекторами). Имеет 2 основных режима распределения данных:
Позволяет работать как по UDP, так и по TCP, а также привязывать обработчик определенного типа трафика (Fullflow/Clickstream/DNS flow) к ядру CPU системы, обеспечивая тем самым распределение нагрузки между CPU.
С помощью балансировщика можно выполнить:
Установка:
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
Для работы с IPFIX-балансировщиком необходимо завести подходящее оборудование. Для этого нужно:
В результате получим два одинаковых потока на два разных хоста.
Пример настроек ресивера для сценария репликации:
В результате получим равномерное распределение пакетов по всем хостам.
Пример настроек ресивера для сценария балансировки:
В этом случае работает IPFIX ресивер, пишет данные в файл и может делать экспорт IPFIX на IP-адреса, указанные в поле “Экспорт”.
Пример настроек ресивера для сценария записи:
Файл конфигурации балансировщика находится по пути /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
для Fullflow1501
для Clickstream ROTATE_MINUTES[0]
— Период обращения дампа приемника или период загрузки данных в БД. Период поворота дампа для кликстрим должен быть больше или равен тому же периоду для фулфлоу. Когда дамп фулфлоу оборачивается, посылается сигнал HUP для синхронизации потоков. Не меняйте этот параметр без необходимости10
минут для Fullflow12
минут для 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
— разделяет поток IPFIXAll
— реплицирует поток 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-балансировщик установлены на разных серверах, рекомендуется устанавливать значение “Отключено” |