L2-балансировщик трафика

Описание и сценарии

Данная доработка позволяет использовать СКАТ как балансировщик трафика на основе IP-адресов, принадлежащих AS и определяемой как local в asnum.dscp. В данном режиме функциональность DPI не работает.

Для балансировки трафика используется maglev алгоритм с фиксированным размером hash таблицы. Определение выходного интерфейса по следующему алгоритму:

1 — если src и dst ip оба local, то рассчитывается hash на основании этих двух адресов;
2 — если только src ip local, то рассчитывается hash на основании src ip;
3 — если только dst ip local, то рассчитывается hash на основании dst ip;
4 — рассчитывается hash на основе src и dst ip.

На основании рассчитанного hash значения производится определение выходного интерфейса путем определения индекса ячейки hash таблицы, содержащей индекс интерфейса из массива выходных интерфейсов. Значение из массива выходных интерфейсов подставляется в текущий контекст и возвращается pcs_accept.

Сценарий. Балансировщик на зеркале трафика

Допустим, зеркало трафика 400GB нужно равномерно разбить между четырьмя VAS-платформами (Value-Added Services), осуществляющими анализ трафика, детекции и др.
В данном случае СКАТ позволит балансировать трафик и равномерно распределить его — т.е. реализовать функцию балансировщика.

Настройка и управление

Для корректной работы требуются следующие настройки:

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

Отметка заданной автономной системы как local. Описание

Определение входных и выходных интерфейсов в конфигурационном файле. Входные интерфейсы задаются в параметре in_dev, а выходные интерфейсы в out_dev. Интерфейсы не образуют пары и допускаются конструции вида:

in_dev=05-00.0:05-00.1:05-00.2:05-00.3:0b-00.0:0b-00.1:0b-00.2:0b-00.3 out_dev=08-00.0:08-00.1:08-00.2:08-00.3

Или

in_dev=05-00.0 out_dev=out_dev=08-00.0:08-00.1:08-00.2:08-00.3

Включить режим баласировки: enable_l2_lb=true
Вводимые параметры:
enable_l2_lb=false|true - включить балансировщик трафика
lb_hash_out_dev_type = 0|1 - по какому значению выполнять инициализацию hash таблицы:
0 — использовать внутренний индекс выходного интерфейса
1 — использовать имя интерфейса из [in|out]_dev
В качестве dpdk_engine могут использоваться следующие типы: 0 (по умолчанию), 1 и 2.

Информационные команды

subs prop show active — вывести дамп L2-свойств всех активных (не-expired) абонентов