Поддержка различных типов интерфейсов в платформе СКАТ: dpdk_engine=7

17 августа 2026
СКАТ Технологии
Поддержка различных типов интерфейсов в платформе СКАТ: dpdk_engine=7
По мере развития операторской сети меняется и ее ядро. В нем появляется все больше коммутаторов и маршрутизаторов с разнотипными интерфейсами, которые отражают разные этапы развития инфраструктуры.

Изначально в сети могла использоваться конфигурация с портами 1/10G — такое подключение на абонентской стороне часто сохраняется до сих пор. Со временем нагрузка и объемы трафика увеличивались, и на новых участках сети стали появляться интерфейсы 25/40G. При этом трафик в сторону магистрали агрегируется и передается через несколько портов 100G. В результате в операторской инфраструктуре могут одновременно работать оборудование разных поколений с различной пропускной способностью интерфейсов.

Платформа СКАТ учитывает эту неоднородность и покрывает все основные сценарии установки (in-line, on-stick, mirror), в которых интерфейсы с разной пропускной способностью могут работать одновременно. Для этого в платформе предусмотрен набор «движков» — конфигураций dpdk-интерфейсов (data-портов), каждая из которых описывает свою комбинацию режимов работы. За одновременную поддержку разнотипных интерфейсов в рамках одной платформы отвечает конфигурация dpdk_engine=7.

Почему стандартные движки перестают справляться

Все прежние движки (dpdk_engine=0..6) используют одну схему распределения диспетчеров для всего кластера:

  • dpdk_engine=0 — один диспетчер на весь кластер;
  • dpdk_engine=1 — по диспетчеру на направление (in/out);
  • dpdk_engine=2 — RSS-диспетчеры на направление;
  • dpdk_engine=3 — диспетчер на каждый мост;
  • dpdk_engine=4 — диспетчер на каждый порт;
  • dpdk_engine=6 — RSS-диспетчеры на мост, для мощных карт 100G+.

Подробности по каждому режиму — в документации СКАТ.

Такая модель работает, пока порты одной пропускной способности. Но в операторской сети более часто встречается следующая ситуация: множество портов 10G на стороне абонентской сети и один-два порта 100G на стороне аплинка. Характерно, например, для подключения BRAS, где пропускная способность LAN и WAN сильно различается. Встречаются и более сложные конфигурации, где одновременно используются порты 100G, 40G и 10G с разными схемами распределения диспетчеров.

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

Как независимо распределять диспетчеры с dpdk_engine=7

dpdk_engine=7, или движок с явным конфигурированием диспетчеров, позволяет вручную определить, какие порты обслуживает каждый диспетчер и какие ресурсы ему выделяются. В отличие от предыдущих режимов, где выбиралась одна фиксированная схема распределения для всей системы, новый движок дает возможность настроить обработку каждой группы портов независимо.

Данный движок является универсальным — через него могут быть выражены все остальные движки.

Для каждого диспетчера можно отдельно задать:

  • список обслуживаемых портов;
  • mempool — пул памяти для пакетов с заданным размером;
  • при необходимости — RSS с нужным числом очередей.

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

При этом dpdk_engine=7 является универсальным: через него можно реализовать любую схему распределения, доступную в dpdk_engine=0..6.

Например, «диспетчер на направление» (аналог dpdk_engine=1) записывается так:

in_dev=port1:port2
out_dev=port3:port4

dpdk_dispatch=port1,port2;mempool=main
dpdk_dispatch=port3,port4;mempool=main

dpdk_mempool=name=main;size=1600000

Можно настроить и смешанную схему, где часть портов работает через обычный диспетчер, а другая — через RSS:

in_dev=port1:port2
out_dev=port3:port4

dpdk_dispatch=port1:port2;mempool=main10G
dpdk_dispatch=port3:port4;rss=16;mempool=main100G

dpdk_mempool=name=main10G;size=1600000
dpdk_mempool=name=main100G;size=8000000

Здесь группа 10G обслуживается одним диспетчером с mempool main10G, а порты 100G — диспетчером с RSS (16 очередей) и отдельным, более крупным mempool main100G. Параметры обработки можно подобрать отдельно для групп портов с разной производительностью.

Архитектура диспетчеризации dpdk_engine=7
Рисунок 1 — Архитектура диспетчеризации dpdk_engine=7

Из ограничений — конфигурация будет считаться некорректной, если порт не попал ни в один dpdk_dispatch или попал сразу в несколько. Порт должен входить только в один dpdk_dispatch, а все порты внутри одного диспетчера должны относиться к одному кластеру.

Как выглядят смешанные конфигурации крупных операторов

Такая схема потребовалась оператору после модернизации аплинков. На верхнем уровне сети появились высокоскоростные интерфейсы, тогда как на нижнем сохранились 10G-подключения. Полностью модернизировать эти интерфейсы было нецелесообразно: замена оборудования и портов потребовала бы значительных ресурсов.

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

Схема сети оператора
Рисунок 2 — Схема сети оператора

Ранее СКАТ позволял собирать бриджи с интерфейсами одной пропускной способности. Для смешанной конфигурации требовалась возможность независимо настраивать обработку разных групп портов.

dpdk_engine=7 позволяет задать для каждой группы свое количество и тип диспетчеров. Это дает возможность учитывать разницу в пропускной способности интерфейсов и не распределять одинаковые ресурсы между портами с разной нагрузкой.

В результате систему не пришлось перестраивать под одну скорость интерфейсов или выносить обработку отдельных групп на дополнительные серверы. В итоге удалось адаптировать обработку под уже существующую конфигурацию сети и эффективнее использовать доступные аппаратные ресурсы.

Что дает dpdk_engine=7

dpdk_engine=7 снимает ограничение прежних движков — невозможность применить разные стратегии диспетчеризации к разным частям одного кластера. Это особенно важно для крупных инсталляций с гетерогенным набором карт, где точная настройка числа диспетчеров и памяти под конкретную группу портов напрямую влияет на производительность и экономию ядер.

Если при переходе на dpdk_engine=7 возникают вопросы по количеству диспетчеров, размеру mempool или другим параметрам — обращайтесь в техподдержку VAS Expert. Специалисты помогут подобрать конфигурацию под конкретную схему подключения и нагрузку на интерфейсы.