ECMP (Equal-Cost Multi-Path routing) – это механизм маршрутизации, который позволяет передавать пакеты к одному и тому же адресату по нескольким маршрутам, имеющим одинаковую метрику и рассматриваемым как равнозначные с точки зрения их стоимости. В отличие от методов выбора единственного оптимального маршрута или использования маршрутов с различными метриками, ECMP обеспечивает балансировку нагрузки путём равномерного распределения трафика между всеми доступными равнозначными маршрутами. Такой подход способствует более эффективному использованию сетевых ресурсов, увеличению пропускной способности и повышению отказоустойчивости за счёт автоматического переключения на резервные маршруты в случае выхода из строя одного из них.
На представленной схеме стенда (см. Рисунок – Схема сети) устройство ARMA Стена функционирует в качестве шлюза для внутренней сети. Интерфейсы «eth0» и «eth1» подключены к внешнему маршрутизатору, обеспечивающему выход в интернет. Интерфейс «eth2» соединён с локальной сетью предприятия. Клиентским устройством, расположенным во внутренней сети, ARMA Стена используется в качестве шлюза по умолчанию.
# Настройка IP-адресов интерфейсов:
set interfaces ethernet eth0 address 192.168.1.100/24
set interfaces ethernet eth1 address 192.168.2.100/24
set interfaces ethernet eth2 address 192.168.3.1/24
# Создание группы интерфейсов для NAT:
set firewall group interface-group WAN interface eth0
set firewall group interface-group WAN interface eth1
# Настройка Source NAT (masquerade):
set nat source rule 10 outbound-interface group WAN
set nat source rule 10 translation address masquerade
# Настройка статических маршрутов по умолчанию с использованием ECMP:
set protocols static route 0.0.0.0/0 next-hop 192.168.1.1
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1
Указание нескольких next-hop для префикса «0.0.0.0/0» с одинаковой метрикой активирует механизм ECMP. Трафик к внешним сетям будет распределяться между двумя каналами связи через «eth0» и «eth1».
Для верификации корректной работы механизма ECMP выполняется захват сетевого трафика на устройстве ARMA Стена с последующим анализом направления исходящих пакетов:
Запустить захват трафика на всех интерфейсах:
admin@ngfwos:~$ monitor traffic interface any save <file_name>
tcpdump: data link type LINUX_SLL2
tcpdump: listening on any, link-type LINUX_SLL2 (Linux cooked v2), snapshot length 262144 bytes
где <file_name> – название файла дампа трафика.
Файл с дампом трафика будет сохранён с именем «traffic_<file_name>.pcap» в каталог «/tmp/».
С клиентского устройства выполнить серии HTTP-запросов (например, открытие различных веб-ресурсов через браузер или использование утилиты «curl»).
После генерации достаточного объёма трафика процесс захвата необходимо остановить нажатием комбинации клавиш «Ctrl» + «C». Система выведет статистику:
^C71496 packets captured
71767 packets received by filter
0 packets dropped by kernel
admin@ngfwos:~$
Анализ сохранённого дампа возможно произвести с помощью утилиты «tcpdump»:
В выводе команды должны присутствовать пакеты с source IP «192.168.1.100» (через «eth0») и «192.168.2.100» (через «eth1»). Наличие трафика с обоих адресов подтверждает, что ECMP активен и трафик распределяется между двумя маршрутами.