Преамбула

Ранее мной уже был опубликован цикл статей по теме SD-WAN. В некоторых статьях раскрывались детали работы решения Kaspersky SD-WAN. Делюсь, если интересно: первая, вторая, третья.

Новая статья – их продолжение. В конце 2025 года был выпущен новый релиз продукта Касперский SD-WAN версия 2.5, в который были внесены существенные изменения в функционал, обеспечивающий стабильность связи. Здесь детально разберу механизмы балансировки в режиме нестабильности связи и способы борьбы с такими проблемами в версии 2.5.

Введение

Ситуацию, когда все работает идеально, оставим для рекламных буклетов и презентаций вендора. В нашем тесте мы смоделируем «деградацию» интернет-канала одного из провайдеров.

К сожалению, сбои случаются, как правило, в самый неподходящий момент, и перегрузка одного из активных каналов может негативно сказаться на производительности пользовательского трафика. Пользователи SD-WAN ждут, что сеть сама адаптируется к изменениям. В большинстве случаев это происходит именно так, как обещает производитель, но бывают ситуации, неочевидные даже для опытных специалистов. Как сеть Kaspersky SD-WAN среагирует на такие события, и будем разбираться в этой статье.

Описание тестового стенда и ограничения

Для целей тестирования в нашей лаборатории была развернута сеть, состоящая из двух SD-WAN CPE:

  • Kaspersky SD-WAN ESR (R) Model 1 (железка с LTE модемом и 5ю Ethernet портами) на стороне клиента IPERF;

  • Kaspersky SD-WAN Virtual M1 развернутый в «облаке» на гипервизоре, на стороне сервера IPERF.

На стороне клиента подключены два провайдера – проводной и LTE. На проводном провайдере установлено ограничение входящего и исходящего трафика, имитирующее «деградацию» интернет-канала. Случай, при котором вроде и связь есть, и трекинг не выключает порт, но и работать с таким каналом невозможно.

Между двумя CPE установлены 2 линка (Link в терминах SD-WAN) в каждую сторону (всего 4), которые формируют отказоустойчивый сегмент (Segment) для прохождения трафика.

 Для генерации трафика и измерения скорости передачи использовалась утилита Iperf3. В дан��ой статье рассматривается только TCP трафик, как наиболее распространённые в интернет (для UDP картина будет другой).

С тестового компьютера по очереди запускается два теста в 8 параллельных потоков. Тестирование в один поток не показательно, так как скорее всего может исказить результаты балансировки – из-за того, что весь трафик может попасть в один канал провайдера. Примечание: одновременные прием и передача не исследовались в данной статье, так как тесты запускали один за одним. Графики отражают трафик от сервера к клиенту.

Система мониторинга на основе Zabbix снимает метрики потребления сетевого трафика каждые 10 секунд c виртуальной и физической CPE. На стороне клиента метрики снимаются с портов sdwan0 и sdwan1. На стороне сервера суммированный трафик измеряется на интерфейсе ближе к серверу, чтобы визуализировать итоговый результат.

Таким образом, графики мониторинга Zabbix позволяют оценить загрузку каналов и результирующий трафик для каждого варианта балансировки трафика, рассмотренного далее.

На стороне IPERF сервера трафик TCP исследуется с помощью встроенных средств программы Wireshark.

Балансировка по пакетам (Per-packet)

Adaptive balancing: выключена

Режим, в котором пакеты равномерно распределяются между каналами без учета «деградации». Канал, который «не может», просто теряет пакеты. Даже при стабильной работе, с точки зрения TCP, такая балансировка является самым неудачным решением. Механизм TCP не может рассчитать оптимальную скорость для каждого канала в отдельности, и канал останется недозагруженным.

Стоимость итогового пути и вес канала зависят от физической скорости порта и могут быть сконфигурированы вручную на основе SLA провайдера. В этом случае трафик будет балансироваться неравномерно, а на основе стоимости вычисленной по формуле:

Cost = 10 000 000 / Speed, где Speed берется с физического порта интерфейса или может быть задана в параметре «max rate».

Хотел особо подчеркнуть, что в идеальных условиях и работающих каналах интернета необходимо сконфигурировать реальные скорости для определения правильного баланса. Если скорости каналов разных интернет-провайдеров портов SD-WAN заметно отличаются, то включение балансировки покажет неоптимальные результаты без такого конфига.

Примечание: здесь разбирается случай, когда канал первого провайдера работает, на «сильно пониженной скорости», поэтому результат будет максимально приближен. Далее увидим, что при некоторых вариантах балансировки передача трафика может даже полностью остановится.

После запуска Iperf анализируем загрузку портов SD-WAN:

Скорость низкая, пропускная способность второго провайдера «подравнивается» под первого. Итоговый трафик суммируется, но не поднимается выше х2 «деградировавшего» канала.

График TCP-сессий на сервере показывает огромное количество ошибок TCP-соединения и объясняет медленную скорость:

Замеры IPERF показывают и подтверждают грустные результаты:

Трафик от сервера к клиенту (на его основе построены графики выше):

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-840.00 sec  7.62 MBytes  76.1 Kbits/sec                  sender

[  8]   0.00-840.00 sec  23.9 MBytes   238 Kbits/sec                  sender

[ 10]   0.00-840.00 sec  19.4 MBytes   193 Kbits/sec                  sender

[ 12]   0.00-840.00 sec  16.9 MBytes   169 Kbits/sec                  sender

[ 14]   0.00-840.00 sec   896 KBytes  8.74 Kbits/sec                  sender

[ 16]   0.00-840.00 sec  21.1 MBytes   211 Kbits/sec                  sender

[ 18]   0.00-840.00 sec  14.9 MBytes   149 Kbits/sec                  sender

[ 20]   0.00-840.00 sec  22.0 MBytes   220 Kbits/sec                  sender

[SUM]   0.00-840.00 sec   127 MBytes  1.26 Mbits/sec                  sender

 

Трафик от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-240.12 sec  4.75 MBytes   166 Kbits/sec                  receiver

[  8]   0.00-240.12 sec  1.62 MBytes  56.8 Kbits/sec                  receiver

[ 10]   0.00-240.12 sec  2.12 MBytes  74.2 Kbits/sec                  receiver

[ 12]   0.00-240.12 sec  4.00 MBytes   140 Kbits/sec                  receiver

[ 14]   0.00-240.12 sec  4.38 MBytes   153 Kbits/sec                  receiver

[ 16]   0.00-240.12 sec  4.62 MBytes   162 Kbits/sec                  receiver

[ 18]   0.00-240.12 sec  4.25 MBytes   148 Kbits/sec                  receiver

[ 20]   0.00-240.12 sec  4.38 MBytes   153 Kbits/sec                  receiver

[SUM]   0.00-240.12 sec  30.1 MBytes  1.05 Mbits/sec                  receiver

 

Текущий вариант оказался худшим вариантом балансировки для трафика TCP, и не просто не способен бороться с деградацией каналов, а даже останавливает работу рабочих. Замечу, что в штатном режиме, когда все каналы работают, мы увидим адекватный результат. Решения проблемы есть, и одно из них будет рассмотрено в данной статье.

Все на дно!

Балансировка по потокам (Per-flow)

Adaptive balancing: выключена

Распределение пакетов между каналами осуществляется на основе хэш-функции, вычисляемой от 5 значений: IP и Port отправителя, IP и Port получателя, и протокола. Такой режим позволяет одному TCP потоку оставаться на одном канале от начала и до конца. В нашем случае мы ожидаем что половина TCP сессий попадет на «хороший» канал, а половина – на «деградировавший».

По мониторингу трафика на SD-WAN портах мы видим существенное увеличение скорости по сравнению с «балансировкой по пакетам»:

Если смотреть очень внимательно, мы даже можем заметить, что трафик на двух каналах суммируется, и мы довольно хорошо «утилизируем» оба канала.

График TCP сессий на сервере показывает большое количество ошибок TCP-соединения:

 

Но на самом деле, картина складывается очень печальная. «Средняя температура по больнице в норме, если сложить мертвых с больными», а вот если анализировать потоки TCP, мы увидим проблемы.

Трафик от сервера к клиенту:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-678.62 sec   113 MBytes  1.40 Mbits/sec                  sender

[  8]   0.00-678.62 sec  4.00 MBytes  49.4 Kbits/sec                  sender

[ 10]   0.00-678.62 sec  4.12 MBytes  51.0 Kbits/sec                  sender

[ 12]   0.00-678.62 sec  5.50 MBytes  68.0 Kbits/sec                  sender

[ 14]   0.00-678.62 sec   384 KBytes  4.64 Kbits/sec                  sender

[ 16]   0.00-678.62 sec  7.00 MBytes  86.5 Kbits/sec                  sender

[ 18]   0.00-678.62 sec   158 MBytes  1.95 Mbits/sec                  sender

[ 20]   0.00-678.62 sec  8.75 MBytes   108 Kbits/sec                  sender

[SUM]   0.00-678.62 sec   301 MBytes  3.72 Mbits/sec                  sender

 

Трафик от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-420.08 sec  5.62 MBytes   112 Kbits/sec                  receiver

[  8]   0.00-420.08 sec  3.25 MBytes  64.9 Kbits/sec                  receiver

[ 10]   0.00-420.08 sec  73.0 MBytes  1.46 Mbits/sec                  receiver

[ 12]   0.00-420.08 sec  77.6 MBytes  1.55 Mbits/sec                  receiver

[ 14]   0.00-420.08 sec  58.2 MBytes  1.16 Mbits/sec                  receiver

[ 16]   0.00-420.08 sec  5.50 MBytes   110 Kbits/sec                  receiver

[ 18]   0.00-420.08 sec  4.12 MBytes  82.4 Kbits/sec                  receiver

[ 20]   0.00-420.08 sec  73.5 MBytes  1.47 Mbits/sec                  receiver

[SUM]   0.00-420.08 sec   301 MBytes  6.01 Mbits/sec                  receiver

-----------------------------------------------------------

Видно, что часть сессий работает с приемлемой скоростью, а часть фактически стоит. С точки зрения пользователей – это максимально «негативный опыт». Что-то иногда работает, а что-то – нет.

Аналогично случаю с пакетной балансировкой, данный механизм не может бороться с деградацией канала оптимальным способом, хотя «графики» и показывают «результат».

 

Балансировка в широковещательном режиме (Broadcast)

Пакеты отправляются во все доступные каналы провайдеров. Обрабатывается первый полученный пакет: фактически он не является «балансировкой», и получить суммирование пропускной способности не получится. Применяется, когда требуется максимальная отказоустойчивость трафика с минимальной задержкой в ущерб скорости и стоимости.

Мониторинг трафика на SD-WAN портах (показаны оба направления передачи):

Несмотря на то, что канал первого провайдер «шейпится», мы видим «всплеск» трафика намного выше пропускной способности канала. Это связано с тем, что клиент отправляет пакет независимо от того, дойдет он до получателя или нет. Ограничение срабатывает уже после того, как трафик вышел от клиента.

Анализ ТСР потока показывает, что скорость умеренно хорошая, но в трафике присутствует большое количество дублированных пакетов (DUP).

Трафик от сервера к клиенту:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-360.21 sec  37.1 MBytes   865 Kbits/sec                  receiver

[  8]   0.00-360.21 sec  37.6 MBytes   876 Kbits/sec                  receiver

[ 10]   0.00-360.21 sec  37.8 MBytes   879 Kbits/sec                  receiver

[ 12]   0.00-360.21 sec  37.5 MBytes   873 Kbits/sec                  receiver

[ 14]   0.00-360.21 sec  37.5 MBytes   873 Kbits/sec                  receiver

[ 16]   0.00-360.21 sec  38.2 MBytes   891 Kbits/sec                  receiver

[ 18]   0.00-360.21 sec  37.6 MBytes   876 Kbits/sec                  receiver

[ 20]   0.00-360.21 sec  37.5 MBytes   873 Kbits/sec                  receiver

[SUM]   0.00-360.21 sec   301 MBytes  7.01 Mbits/sec                  receiver

 

Трафик от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-261.10 sec  38.0 MBytes  1.22 Mbits/sec                  sender

[  8]   0.00-261.10 sec  36.5 MBytes  1.17 Mbits/sec                  sender

[ 10]   0.00-261.10 sec  37.6 MBytes  1.21 Mbits/sec                  sender

[ 12]   0.00-261.10 sec  37.9 MBytes  1.22 Mbits/sec                  sender

[ 14]   0.00-261.10 sec  38.4 MBytes  1.23 Mbits/sec                  sender

[ 16]   0.00-261.10 sec  36.6 MBytes  1.18 Mbits/sec                  sender

[ 18]   0.00-261.10 sec  37.5 MBytes  1.20 Mbits/sec                  sender

[ 20]   0.00-261.10 sec  38.4 MBytes  1.23 Mbits/sec                  sender

[SUM]   0.00-261.10 sec   301 MBytes  9.67 Mbits/sec                  sender

 Хоть широковещательный режим и не является «балансировкой» как таковой, но только он позволяет незаметно пережить «деградацию» канала интернет. Такой режим показывает максимальную стабильность, но очевидно не обеспечивает суммирование, хотя все каналы загружаются «на максимум».

Без балансировки

Прежде чем включать адаптивные механизмы, появившиеся в версии 2.5, попробуем полностью убрать балансировку, отключив первого провайдера, и посмотрим, какие варианты были эффективны.

 TCP-соединение для потока от сервера к клиенту:

Резул��таты IPERF для соединения от сервера к клиенту:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-200.10 sec  33.4 MBytes  1.40 Mbits/sec                  sender

[  8]   0.00-200.10 sec  39.0 MBytes  1.63 Mbits/sec                  sender

[ 10]   0.00-200.10 sec  37.5 MBytes  1.57 Mbits/sec                  sender

[ 12]   0.00-200.10 sec  34.1 MBytes  1.43 Mbits/sec                  sender

[ 14]   0.00-200.10 sec  35.1 MBytes  1.47 Mbits/sec                  sender

[ 16]   0.00-200.10 sec  46.6 MBytes  1.95 Mbits/sec                  sender

[ 18]   0.00-200.10 sec  36.4 MBytes  1.52 Mbits/sec                  sender

[ 20]   0.00-200.10 sec  38.8 MBytes  1.62 Mbits/sec                  sender

[SUM]   0.00-200.10 sec   301 MBytes  12.6 Mbits/sec                  sender

 

Результаты IPERF для соединения от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-540.06 sec  38.6 MBytes   600 Kbits/sec                  receiver

[  8]   0.00-540.06 sec  52.4 MBytes   814 Kbits/sec                  receiver

[ 10]   0.00-540.06 sec  43.4 MBytes   674 Kbits/sec                  receiver

[ 12]   0.00-540.06 sec  50.4 MBytes   782 Kbits/sec                  receiver

[ 14]   0.00-540.06 sec  18.4 MBytes   285 Kbits/sec                  receiver

[ 16]   0.00-540.06 sec  35.0 MBytes   544 Kbits/sec                  receiver

[ 18]   0.00-540.06 sec  27.1 MBytes   421 Kbits/sec                  receiver

[ 20]   0.00-540.06 sec  33.2 MBytes   516 Kbits/sec                  receiver

[SUM]   0.00-540.06 sec   298 MBytes  4.64 Mbits/sec                  receiver

Результат показывает, что «деградировавший» канал оказывает негативное влияние на общее состояние всех ТСР-соединений. Убрав его из дата-плана, можно улучшить «здоровье» ТСР и даже увеличить общую скорость (даже в режиме broadcast).

В версии 2.4 мы решали проблему конфигурированием и тюнингом SLA для линков и, косвенно, трекингом для портов. Балансировка достигалась конфигурацией стоимости линков между парами нагруженных СРЕ. Такой механизм до сих пор дает максимальный уровень стабильности (и для версии 2.5), но добавляет «ручной» работы по оптимизации. Требуется квалификация инженеров и четкое понимание скоростных характеристик канала, предоставляемых провайдером.

Версия Kaspersky SD-WAN 2.5 принесла новый функционал динамического изменения веса канала (линка) на основе потерь, зафиксированных в этом канале.

Адаптивная балансировка по пакетам (Per-packet)

Adaptive balancing: включена

Окно конфигурации выглядит просто:

Необходимо задать начальный порог потерь, после которого начинается балансировка. Чем раньше начнем, тем эффективнее будет распределение. Максимальный уровень потерь – значение, при котором канал полностью будет исключен из дата-плана.

Запустим IPERF и посмотрим на метрики Zabbix:

До того, как механизм «адаптации» сработал, были задействованы оба канала.

По графикам видно, что потребовалось время на определение метрик (весов) для каналов, и, после процесса адаптации, были найдены рабочие «цифры». В результате скорость оптимизировалась, а количество «ошибок» TCP пришло к обычным значениям, характерным для рабочего канала.

Пример статистики динамического расчета «веса» каналов:

4 значения показывают вес для двух линков в каждом направлении. Видно, что вес кратно отличается и «деградировавший» канал почти не используется.

Результаты IPERF для соединения от сервера к клиенту:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-264.48 sec  41.8 MBytes  1.32 Mbits/sec                  sender

[  8]   0.00-264.48 sec  33.4 MBytes  1.06 Mbits/sec                  sender

[ 10]   0.00-264.48 sec  37.2 MBytes  1.18 Mbits/sec                  sender

[ 12]   0.00-264.48 sec  39.4 MBytes  1.25 Mbits/sec                  sender

[ 14]   0.00-264.48 sec  38.9 MBytes  1.23 Mbits/sec                  sender

[ 16]   0.00-264.48 sec  38.8 MBytes  1.23 Mbits/sec                  sender

[ 18]   0.00-264.48 sec  35.8 MBytes  1.13 Mbits/sec                  sender

[ 20]   0.00-264.48 sec  35.8 MBytes  1.13 Mbits/sec                  sender

[SUM]   0.00-264.48 sec   301 MBytes  9.54 Mbits/sec                  sender

 

Результаты IPERF для соединения от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-420.15 sec  39.1 MBytes   781 Kbits/sec                  receiver

[  8]   0.00-420.15 sec  39.8 MBytes   794 Kbits/sec                  receiver

[ 10]   0.00-420.15 sec  40.8 MBytes   814 Kbits/sec                  receiver

[ 12]   0.00-420.15 sec  33.8 MBytes   674 Kbits/sec                  receiver

[ 14]   0.00-420.15 sec  30.9 MBytes   616 Kbits/sec                  receiver

[ 16]   0.00-420.15 sec  35.5 MBytes   709 Kbits/sec                  receiver

[ 18]   0.00-420.15 sec  39.8 MBytes   794 Kbits/sec                  receiver

[ 20]   0.00-420.15 sec  41.5 MBytes   829 Kbits/sec                  receiver

[SUM]   0.00-420.15 sec   301 MBytes  6.01 Mbits/sec                  receiver

 

Метод показал хорошие результаты, каналы загружаются равномерно, согласно доступной пропускной способности, а ТСР может найти подходящие параметры.

Несмотря на то, что балансировку по пакетам не рекомендуется использовать для ТСР-соединений, данный режим может быть применен без серьезных проблем для ТСР-сессии.

Но можно лучше. Победитель далее.

Адаптивная балансировка по потокам (Per-flow)

Adaptive balancing: включена

Работает аналогично балансировке по потокам рассмотренной выше (БЕЗ адаптивного режима). В данном тесте добавим динамическое вычисление стоимости сети.

Вычисление стоимости каналов начнется при потерях более 0.01%:

 Результат загрузки портов SD-WAN:

Основная нагрузка практически сразу ложится на рабочий канал. Анализ трафика ТСР:

TCP параметры подстраиваются практически сразу, и их трудно отличить от «нормальных».

Мгновенный «снимок» с распределением «весов»:

Для канала, забитого трафик��м, мы видим соотношение 3 к 24415. Цифры динамически меняются в зависимости от потерь пакетов.

Замеры IPERF показали максимальные результаты среди всех замеров разных вариантов балансировки.

Результаты измерения от сервера к клиенту:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-200.30 sec  37.2 MBytes  1.56 Mbits/sec                  sender

[  8]   0.00-200.30 sec  39.5 MBytes  1.65 Mbits/sec                  sender

[ 10]   0.00-200.30 sec  38.8 MBytes  1.62 Mbits/sec                  sender

[ 12]   0.00-200.30 sec  38.5 MBytes  1.61 Mbits/sec                  sender

[ 14]   0.00-200.30 sec  36.4 MBytes  1.52 Mbits/sec                  sender

[ 16]   0.00-200.30 sec  37.2 MBytes  1.56 Mbits/sec                  sender

[ 18]   0.00-200.30 sec  34.5 MBytes  1.44 Mbits/sec                  sender

[ 20]   0.00-200.30 sec  38.9 MBytes  1.63 Mbits/sec                  sender

[SUM]   0.00-200.30 sec   301 MBytes  12.6 Mbits/sec                  sender

 

Результаты измерений от клиента к серверу:

[ ID] Interval           Transfer     Bitrate

[  5]   0.00-480.08 sec  42.8 MBytes   747 Kbits/sec                  receiver

[  8]   0.00-480.08 sec  48.2 MBytes   843 Kbits/sec                  receiver

[ 10]   0.00-480.08 sec  6.25 MBytes   109 Kbits/sec                  receiver

[ 12]   0.00-480.08 sec  57.0 MBytes   996 Kbits/sec                  receiver

[ 14]   0.00-480.08 sec  10.9 MBytes   190 Kbits/sec                  receiver

[ 16]   0.00-480.08 sec  65.0 MBytes  1.14 Mbits/sec                  receiver

[ 18]   0.00-480.08 sec  6.12 MBytes   107 Kbits/sec                  receiver

[ 20]   0.00-480.08 sec  63.5 MBytes  1.11 Mbits/sec                  receiver

[SUM]   0.00-480.08 sec   300 MBytes  5.24 Mbits/sec                  receiver

 

Заметна асинхронность канала, но, тем не менее, мы достигаем высоких результатов с такой схемой. Трафик суммируется, очереди и загрузки каналов – самые ровные и честные.

Выводы и ограничения

В данной статье исследовался только TCP-трафик. Лучший вариант балансировки такого трафика – адаптивная балансировка по потокам.

Балансировка менее эффективна чем выбор одного хорошего канала. Самый стабильный вариант — это выбор одного лучшего канала по SLA. В этом случае потребуется больше конфигурации и более глубокое погружение в «линк-менеджмент», но и стабильность всей сети будет на самом высоком уровне.

Понимание механизмов балансировки трафика важно для правильного конфигурирования Kaspersky SD-WAN. Некоторые варианты конфигурации могут привести к деградации всей сети.

Прием и передача оценивались отдельно.

Существует ограничение «физических» возможностей для каждого типа СРЕ. При достижении скорости интернет-каналов соответствующей максимальной пропускной способности СРЕ уже пропадает смысл балансировки. Распределение трафика по каналам будет отличаться от представленных выше. Мы учитывали этот момент в тестировании.

Надеюсь, информация была полезной. Статья не претендует на научность, а показывает «живой» пример балансировки трафика на решении Kaspersky SD-WAN. Если вы заметите некорректность или нечестность тестов, прошу высказываться в комментариях, постараюсь исправиться. Если вы видите, что необходимо провести тесты на другом трафике, тоже прошу подать знак. Так я пойму, что этот материал для вас полезен.