Вышла новая версия Open vSwitch 3.3.0

16 февраля вышел OVS 3.3.0, который в августе этого года в соответствии с релизной стратегией должен стать следующей LTS-серией. Самое время присмотреться к нему “на попробовать” в качестве следующей версии, потыкать палочкой в лабе.
Помимо обновлённой поддерживаемой версии DPDK 23.11 разработчики отмечают следующие нововведения (по сравнению с версией OVS 3.2.0):

OVSDB:

  • В реализацию RAFT добавлен механизм предварительного голосования в соотвествии со оригинальной спецификацией RAFT. Этот механизм позволяет усилить стабильность кластера, когда какой-то из членов кластера на время выпадает из него, а затем снова возвращается, провоцируя новые выборы мастера. Таким образом, на неустойчивых сетях такие кластеры должны реже проводить выборы лидера в случае, когда отваливается кто-то из членов кластера. Как утверждается в пейпере, цена усложнения алгоритма практически незаметна на процедуре выбора лидера. Во время обновления кластера с предыдущих версий OVS < 3.3.x на >= 3.3.0 в логе могут участиться выборы мастера, появляться ошибки, связанные с получением незнакомых опций на необновленных инстансах во время голосования.
  • В ovsdb-server наконец-то завезли очередной способ конфигурирования remote (сокетов ovsdb и их параметров) – config-file. Новый метод конфигурирования должен решить проблему сложности и в некоторых кейсах невозможности конфигурирования параметров ovsdb соединения (например, при использовании схемы ovsdb cluster <-> ovsdb relay невозможно было задать inactivity probe и другие параметры соединения в направлении ovsdb relay server -> ovsdb server). Config file поддерживается для разных моделей использования ovsdb-server’а: RAFT-кластеров, active-backup, relay-серверов. Опция --config-file вместе с путём к файлу конфигурации указывается при запуске ovsdb-server. Внутри файла в json формате описывается нужная конфигурация. Подробно синтаксис описан в man-странице ovsdb-server(1), а также ovsdb(7).
  • Написан и заиспользован новый cooperative multitasking модуль. На данный момент он используется для решения проблемы с конвертацией схемы базы во время обновлений OVN. Ранее этот процесс полностью блокировал серверы, чем подрывал стабильность кластера. Новый подход позволяет в асинхронной манере выполнять долговыполняющиеся задачи, переключаясь на критичные куски ovsdb-server’а: выполнение и ответы на inactivity probing, RAFT heartbeat и другие. Frode Nordahl из Canonical сообщает, что проводил тестирование конвертации 75 мегабайтной базы на кластере с выкрученным до 750ms election таймером и приблизительно 100 активных OVSDB клиентах. Про inactivity probe на клиентах они ничего не пишет 🙂 дефолтные настройки – 5 секунд. Во время теста смены лидера в кластере не происходило.

OpenFlow:

  • В команду NXT_CT_FLUSH были добавлены новые аргументы, которые помимо старых полей (ID conntrack зоны, прямой/обратный 5-tuple) теперь позволяют вычищать conntrack записи по совпадающим conntrack mark и/или conntrack label.

Тулинг:

  • ovs-appctl:
    • ofproto/trace: добавлена поддержка трассировки openflow с conjunctive действиями (OF actions);
    • dpctl/show: из-за наведения порядков в netdev-dpdk модуле, для интерфейсов теперь не выводится информация по статусу конфигурации интерфейсов, вместо этого для интерфейсов выводятся их конфигурационные опции. Прежнюю информацию о статусе опций можно посмотреть через ovsdb: ovs-vsctl get Interface status. Также немного изменился нейминг опций;
    • dpctl/ct-del-limits: добавлена поддержка нового аргумента default, который позволяет сбросить настроенный default лимит количества соединений в зонах conntrack;
    • dpctl/flush-conntrack: как отражение изменений OpenFlow, описанных выше, также предоставлена возможность “сброса” соединений по полям “mark” и “label”;
    • mdb/show: в вывод команды добавлена информация о протоколе, который добавил запись в рамках multicast/IGMP snooping.
  • Добавлена возможность хранить и выставлять лимиты conntrack zone через OVSDB. Для этого добавлены новые подкоманды для ovs-vsctl: {set,del}-zone-limit, list-zone-limits. В таблицу CT_Zone добавлена колонка limit, а ct_zone_default_limit в таблицу Datapath. Далее эту информацию подхватывает ovs-vswitchd и конфигурирует лимиты соответствующих conntrack зон. Это полезное изменение, т.к. ранее приходилось делать такие изменения напрямую в datapath через вызов control socket’а с ovs-appctl dpctl/ct-{set,get,del}-limits. Теперь можно будет конфигурировать программно через OVSDB.

Userspace datapath:

  • Для кейсов, когда сетевым устройством не поддерживается TCP Segmentation Offload, добавлен механизм Generic Segmentation Offload, чтобы корректно провести сегментацию партии (batch) больших пакетов софтварно, не вызвав нарушения последовательности пакетов относительно изначальной партии.
  • Расширено поведение опции ‘pmd-sleep-max’: в новой версии можно выставлять значения максимального сна для индивидуальных потоков poll-mode драйвер. ‘pmd-sleep-show’ также обновлена, чтобы выводить выставленные новые значения. Подробнее смотри man ovs-vswitchd.conf.db.
  • Модуль conntrack больше не требует указания connection helper’а для каждого flow rule. По умолчанию используется хелпер, установленный в рамках connection commit.
  • Добавлена поддержка последней версии DPDK 23.11.

Leave a Reply

Your email address will not be published. Required fields are marked *

Optimized by Optimole
en_USEnglish