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.
