Open vSwitch 3.4.0 update

15 августа вышла новая версия Open vSwitch – 3.4.0
Из основных изменений (бегу по строчкам в NEWS файле репозитория):

  • Основной бранч изменил своё название с master на main в рамках инициативы по отказу от эксклюзивной терминологии.
  • Новая функциональность – Local sampling. Она использует действие OpenFlow “sample” и позволяет собирать локальные сэмплы в datapath. На данный момент поддерживается только kernel datapath и конфигурируется через local-group-id колонку таблицы “Flow_Sample_Collector_Set“. Для этого в kernel datapath используется действие “psample“.
  • Новая опция, позволяющая включить явный drop пакетов, для случаев, когда последнее действие в цепочке – sample (если datapath поддерживает действие явного дропа). Конфигурируется поведение опцией “other_config:explicit-sample-drop” в таблице Open_vSwitch. Явный сбор корректной статистики дропов достигается добавлением действия drop в конец после действия “sample” (sflow, ipfix, local sampling).
  • В OpenFlow добавлена новая версия действия “sample” (NXAST_SAMPLE4), которая принимает в качестве аргументов ‘osb_point_id‘ и ‘obs_domain_id‘ – параметры конфигурирования observation point id и observation domain id в IPFIX.
  • Утилита ovs-appctl:
    • получила возможность выводить информацию помимо человекочитабельного формата, ещё и в json-формате. Также поддержка json формата была добавлена и в библиотеку python-openvswitch. Теперь вывод команд утилиты ovs-appctl станет более дружелюбным для машинной обработки (можно будет выкинуть регекспы из своих мониторинговых скриптов).
    • Новая команда ofproto/detrace для восстановления списка openflow и groups, которые создали datapath flow. Команда выводит flow и группы в форматах dump-flows и dump-groups.
  • Демон vswitchd, когда запущен с опцией --mlockall, для ядер с поддержкой MCL_ONFAULT в вызове mlockall() (Linux >= 4.4) теперь будет блокировать только те страницы памяти, которые были подгружены через page fault (faulted in). Это снижает потребление памяти на системах, где включен mlockall (утверждается, что на нагруженных системах с 64 ядрами разница составила около 650MB), а также, самое главное, с этим изменением стало возможным использовать mlockall вместе с dpdk post-copy механизмом live-миграции ВМ (ранее это было запрещено из-за несовместимости блокировки всех страниц памяти и вызова userfaultfd() для shared hugepages, использовавшегося в post-copy).
  • Добавлена поддержка filters. Сразу в 2х местах: ovs-tcpdump и traffic mirror. Благодаря этому изменению теперь можно предфильтровывать трафик, для которого выполняется действие (tcpdump или mirror), тем самым снижая нагрузку на ovs-vswitchd и последующие компоненты в цепочке.
  • DPDK:
    • Подтверждена поддержка DPDK 23.11.1.
    • Изменение статусов соединений теперь по-умолчанию обрабатывается в режиме прерываний (interrupt mode). Это поведение можно изменить выставив false в таблице Interface для поля options:dpdk-lsc-interrupt.
  • В userspace datapath появилась поддержка флага ‘random‘ для выбора портов из диапазона для функциональности NAT, а также флага ‘persistent‘ для выбора IP-адреса из диапазона.
  • Инкапсуляция IPv6 UDP tunnel (Geneve и VXLAN) теперь будет учитывать значение опции checksumming. Теперь включение этой опции будет иметь такой же эффект, как и udp6zerocsumtx опция в ядре Linux для UDP туннелей. Это изменение актуально как для kernel datapath, так и для userspace.

Leave a Reply

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

Optimized by Optimole
en_USEnglish