Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия |
dpi:load_balancer:start [2024/03/29 08:31] – elena.krasnobryzh | dpi:load_balancer:start [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 |
---|
{{indexmenu_n>6}} | |
======L2-балансировщик трафика====== | |
=====Описание и сценарии===== | |
СКАТ может работать как балансировщик трафика на основе IP-адресов, принадлежащих AS и определяемой как ''local'' в ''asnum.dscp''. | |
В данном случае в сети СКАТ-LB выступает как L2-bridge, отсюда название L2-балансировщик трафика. | |
<note>В данном режиме функциональность DPI не работает.</note> | |
====Сценарий: Балансировщик на зеркале трафика==== | |
Допустим, зеркало трафика 400Gbps нужно равномерно распределить между четырьмя VAS-платформами (Value-Added Services), осуществляющими анализ трафика и различное детектирование\\ | |
В данном случае СКАТ-LB позволит равномерно распределить трафик с одинаковой утилизацией портов на съемниках и сохранить симметричность трафика (трафик одной сессии будет направлен только на один съемник). | |
| |
{{ :dpi:load_balancer:load_balancer.png?450 |}} | |
**Пример конфигурации /etc/dpi/fastdpi.conf:** | |
* Зеркало трафика подается в 4х100G интерфейсов. | |
* Трафик балансируется между четырьмя съемниками, каждый съемник подключен 4х25G линками. | |
<code bash> | |
in_dev=05-00.0:05-00.1:05-00.2:05-00.3 | |
out_dev=01-00.0:01-00.1:01-00.2:01-00.3:02-00.0:02-00.1:02-00.2:02-00.3:03-00.0:03-00.1:03-00.2:03-00.3:04-00.0:04-00.1:04-00.2:04-00.3 | |
| |
#Scale factor is about 1 for every 1 Gigabit of bandwidth | |
scale_factor=1 | |
timeout_check_dev=0 | |
| |
#FastDPI Control | |
ctrl_port=29000 | |
ctrl_dev=lo | |
| |
#Turn on Load Balancing | |
enable_l2_lb=1 | |
| |
#Balance algorithm | |
maglev=2 | |
| |
#Hash table | |
lb_hash_out_dev_type=1 | |
| |
</code> | |
=====Настройка и управление===== | |
Для корректной работы требуются следующие настройки: | |
- Определить автономную систему с IP-адресами, которые используются абонентами: | |
- [[dpi:dpi_options:opt_statistics:statistics_asn:start#примеры_для_ipv4|Примеры для IPv4]] | |
- [[dpi:dpi_options:opt_statistics:statistics_asn:start#настройка_для_ipv6|Пример для IPv6]] | |
- Отметить заданную автономную систему как local. Пример:<code bash>64512 local</code> Подробнее [[dpi:dpi_options:opt_priority:priority_config_as:start|по ссылке]] | |
- Определить входные и выходные интерфейсы в конфигурационном файле.\\ Входные интерфейсы задаются в параметре ''in_dev'', а выходные — в ''out_dev''.\\ Интерфейсы не образуют пары и допускаются конструкции вида:<code bash>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</code> Или <code bash>in_dev=05-00.0 | |
out_dev=out_dev=08-00.0:08-00.1:08-00.2:08-00.3</code> | |
- Включить режим балансировки в параметре ''enable_l2_lb'', где: | |
* ''0'' — выключить балансировку; | |
* ''1'' — включить балансировку. | |
- Определить, по какому значению выполнять инициализацию hash таблицы в параметре ''lb_hash_out_dev_type'', где: | |
* ''0'' — использовать внутренний индекс выходного интерфейса; | |
* ''1'' — использовать имя интерфейса из [in|out]_dev. | |
- Выбрать движок для работы с потоками-диспетчерами в параметре ''dpdk_engine'', где: | |
* ''0'' — read/write движок **по умолчанию**, один диспетчер на все; | |
* ''1'' — read/write движок с двумя потоками-диспетчерами: на каждое направление по диспетчеру; | |
* ''2'' — read/write движок с поддержкой RSS: для каждого направления создается ''dpdk_rss'' диспетчеров (по умолчанию ''dpdk_rss=2''), таким образом, общее количество диспетчеров = 2 * ''dpdk_rss''.\\ Подробнее о параметре ''dpdk_engine'' [[dpi:dpi_components:platform:dpi_config:start#загрузка_потока_диспетчера|по ссылке]]. | |
- Выбрать алгоритм балансировки. Для балансировки трафика используется ''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''. | |
=====Информационные команды===== | |
* ''subs prop show active'' — вывести дамп L2-свойств всех активных (не-expired) абонентов | |
| |
=====Требование к оборудованию СКАТ-LB===== | |
^ Max IN трафик\\ Гбит/с \\ (Зеркало на СКАТ-LB) ^ Max OUT трафик\\ Гбит/с \\ (Отбалансированный трафик на съемники) ^ Версия СКАТ LB ^ Количество ядер на __один__ CPU\\ c частотой от 2,5 ГГц ^ RAM \\ GB ^ Тип и __минимальное__ количество портов ^ Кол-во Public IP\\ в NAT pool ^ Packet per second в миллионах \\ при базовой частоте CPU от 2,5ГГц ^ | |
| до 100 | до 100 | **СКАТ-100-LB** | 28 [[https://ark.intel.com/content/www/us/en/ark/products/199350/intel-xeon-gold-6258r-processor-38-5m-cache-2-70-ghz.html|Intel 6258R]], [[https://ark.intel.com/content/www/us/en/ark/products/215285/intel-xeon-gold-5320-processor-39m-cache-2-20-ghz.html|Intel 5320]], \\ 32 [[https://www.amd.com/en/products/cpu/amd-epyc-7502p|AMD 7502P]] | 64 (8x8GB) | 2x100G + 14x10/25G | 5000 | 40M pps | | |
| до 200 | до 200 | **СКАТ-200-LB** | 64 [[https://www.amd.com/en/products/cpu/amd-epyc-9534|AMD 9534]] | 64 (8x8GB) | 9x25/40/50/100G | 10000 | 60M pps | | |
| до 300 | до 300 | **СКАТ-300-LB** | 96 [[https://www.amd.com/en/products/cpu/amd-epyc-9654|AMD 9654]] | 64 (8x8GB) | 9x25/40/50/100G | 12000 | 80M pps | | |
| до 400 | до 400 | **СКАТ-400-LB** | 128 [[https://www.amd.com/en/products/cpu/amd-epyc-9754|AMD 9754]] | 64 (8x8GB) | 9x25/40/50/100G | 15000 | 120M pps | | |
| |
| |
| |