Не так давно мы писали о выходе новой версии популярного продукта VMware vSphere 8. Одним из наиболее интересных и значительных анонсов данного продукта является появление так называемого функционала vSphere Distributed Services Engine. Этот функционал, при использовании VMware vSphere 8, даст возможность переносить некоторые задачи в виртуальной среде на аппаратный сетевой ускоритель или DPU (так же другое название SmartNIC), тем самым освобождая другие серверные ресурсы. Далее в статье пойдет речь как работает этот сетевой ускоритель в новом решении. При этом нововведение сильно интегрируется с продуктом VMware NSX.

Немного теории 

Чтобы понять значение ускорения на основе DPU для NSX, нужно сначала понять, как работают SmartNIC. SmartNIC — это сетевая карта со встроенным процессором, известным как DPU, которым можно управлять отдельно от центрального процессора. Это означает, что службы сети, безопасности и хранения могут работать непосредственно на сетевой карте, а не полагаться на серверный х86 процессор, как это обычно делалось ранее в старых, отличных от VMware vSphere 8 версиях. 

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

Рисунок: Работа SmartNIC

Всего планируется две волны внедрений решения. Мы только на пороге использования первой. Первая волна — это использование DPU для разгрузки сетевой обработки с помощью Enhanced Data Path или сокращенно EDPEDP — это производительная модель пути данных, существующая сегодня в NSX-T. В NSX четвертой версии, EDP доступен в двух вариантах: EDP Standard, основанный на прерываниях и EDP Performance, основанный на опросе. Сегодня рекомендуется использовать вариант EDP Standard. Когда мы обсуждаем разгрузку в этом контексте, мы «разгружаем» задачи сетевой обработки, связанные с виртуальным коммутатором (vSwitch), а также сетевой стек в виртуальной машине. 

Как это работает: сквозной доступ для повышения производительности виртуальной среды VMware?

Начнем с рассмотрения SR-IOV. Аббревиатура SR-IOV – это сокращение от Single Root I/O Virtualization - технология, позволяющая одному физическому устройству PCIe, такому как сетевая карта, выглядеть как несколько отдельных физических устройств PCIe. SR-IOV работает, вводя понятие физических функций (PF) и виртуальных функций (VF). Физические функции (PF) — это полнофункциональные функции PCIe устройств; виртуальные функции (VF) являются более «легковесными» функциями. Виртуальные машины могут подключаться к VF на физическом сетевом адаптере с настроенным SR-IOV. 

При этом виртуальные коммутаторы (vSwitches) игнорируются при использовании SR-IOV. SR-IOV, по сути, привязывает сетевой драйвер виртуальной машины к конкретной виртуальной машине. Это делает практически невозможным использование преимуществ виртуализации. В то время как SR-IOV обеспечивает повышение производительности сети благодаря отсутствию накладных расходов серверных процессоров x86 для vSwitch, виртуальные машины эффективно «заблокированы» от использования функций высокой доступности и миграции vSphere. Это делает управление жизненным циклом таких виртуальных машин довольно сложным. 

Новые режимы Data Path для DPU в VMware vSphere 8 

Новые режимы Data Path на основе DPU доступны на уровне каждой виртуальной машины и каждой виртуальной сетевой карты. ИТ персонал может тонко настроить эту опцию. Первым из этих режимов является режим MUX, который является режимом по умолчанию. Этот режим продолжает выполнять некоторую обработку на уровне процессора x86, но предъявляет меньше требований по сравнению с UPTv2. Второй режим UPTv2 полностью переносит всю обработку на DPU. Режим MUX обеспечивает более высокую гибкость, в то время как UPTv2 обеспечивает более высокую производительность. Режим MUX продолжает использовать некоторое количество процессорной мощности x86 гипервизора. Он не имеет резервирования гостевой памяти и не зависит от конкретной версии драйвера VMXNET3. UPTv2 — это полный сквозной механизм. Он требует резервирования гостевой памяти и зависит от конкретной версии драйвера VMXNET3. Оба режима обеспечивают ускоренные сетевые службы для VLAN и оверлейных сетей, а также разгрузку TCP Segment Offload (TSO), контрольной суммы и масштабирования на стороне приема (Receive Side Scaling или RSS). Чтобы настроить новый режим Enhanced Data Path (EDP) с режимом MUX или вариантом UPTv2, необходимо развернуть NSX Manager для настройки EDP на транспортном узле. Это развертывание NSX Manager не требует дополнительной лицензии NSX для клиентов vSphere Enterprise Plus.

UPTv2 требует, чтобы поставщик сетевых адаптеров (поставщик DPU) публиковал функции виртуализированных устройств (VF), аналогично SR-IOV. Таким образом, количество виртуальных машин (ВМ), которые можно подключить, зависит от количества опубликованных ВМ поставщиком устройства. Механизм UPTv2 обеспечивает производительность, близкую к SR-IOV с почти нулевыми накладными расходами на гипервизор. И что более важно, он поддерживает основные функции vSphere, такие как vMotion, для любых ВМ, которые его используют. 

Настройка новых режимов Data Path в VMware vSphere 8 

Теперь как же настроить разгрузку сети и ускорение для DPU? Как уже упоминалось выше, для конфигурации требуется NSX Manager (он очень прост в разворачивании). Если вы хотите разгрузить виртуальный коммутатор только на DPU, то просто используйте NSX Manager, чтобы включить EDP на транспортном уровне (в профиле транспортного узла) в параметрах расширенной конфигурации, как показано ниже. В настоящее время рекомендуется использовать режим Standard в Enhanced DataPath. 

Также необходимо правильно выбрать совместимость сетевых разгрузок при построении виртуального коммутатора на vSphere. В настоящее время поддерживаются два сетевых адаптера Pensando (от AMD) и BlueField (от NVIDIA). Конфигурация виртуального коммутатора завершается выбором физических uplink портов на DPU.

Как упоминалось выше в статье, разгрузку и ускорение можно настроить для каждой виртуальной машины или для каждой виртуальной сетевой карты. По умолчанию виртуальные машины используют режим MUX для разгрузки и ускорения. Если вы хотите, чтобы одна или несколько виртуальных машин или vNIC использовали режим UPTv2, необходимо установить параметр «Использовать поддержку UPT» в настройках оборудования виртуальной машины для vNIC, как показано ниже. 

Напоминаем, что вышеперечисленные возможности зависят от наличия следующего: vSphere 8 и NSX 4, а также от DPU от двух пока что вендоров (AMD, NVIDIA). Для клиентов, которые используют лицензии vSphere Enterprise Plus, не требуется никаких дополнительных лицензий для реализации возможностей разгрузки сетевой обработки. Однако, если ИТ персонал хочет перенести оверлейную сеть и распределенный брандмауэр NSX на DPU, им потребуется приобрести соответствующие лицензии NSX Enterprise Plus. 

Будущие версии Distributed Services Engine (вторая волна) добавят в VMware vSphere новые интересные функции, такие как запуск DPU в качестве транспортных узлов NSX, при этом вычислительные ресурсы x86 останутся нетронутыми для рабочих нагрузок на «голом железе»-Bare Metal, таких как высокопроизводительные вычисления. Это позволит исследователям использовать различные типы вычислительных платформ в зависимости от конкретных требований, виртуальных машин, контейнеров или физических серверов (Bare Metal) с одной и той же структурой управления, уровнем безопасности и сетевыми службами.