Открыть сервисСервис

OVS: протокол Open vSwitch

OVS (Open vSwitch) — это программная реализация многозадачного виртуального коммутатора с открытым исходным кодом, предназначенная для организации сети в средах виртуализации. OVS распространяется под лицензией Apache 2.0 и работает на Linux, а также имеет порты для FreeBSD, NetBSD и Windows. Основная функция OVS — маршрутизация трафика между виртуальными машинами (ВМ) и физическими сетями, а также предоставление расширенных возможностей мониторинга и управления потоками данных, недоступных в стандартном Linux-мосте.

История и развитие

Проект Open vSwitch был запущен в 2008 году компанией Nicira Networks, основанной бывшими инженерами Стэнфордского университета и исследователями в области сетевых технологий. Изначально разработка велась для обеспечения поддержки протокола OpenFlow — стандарта программно-конфигурируемых сетей (SDN), который отделяет плоскость управления от плоскости данных. В 2009 году OVS был интегрирован в ядро Linux в качестве модуля openvswitch, однако долгое время оставался экспериментальным. В 2012 году Nicira была приобретена корпорацией VMware, которая продолжила развитие проекта и использовала OVS в своих продуктах виртуализации (vSphere Distributed Switch, NSX). В 2016 году OVS вошёл в состав ядра Linux версии 4.3 как стандартный сетевой стек, что обеспечило его широкую поддержку в дистрибутивах и облачных платформах.

Архитектура и устройство

OVS состоит из нескольких ключевых компонентов, работающих как в пользовательском пространстве, так и в пространстве ядра:

  • ovs-vswitchd — основной демон, который обрабатывает управляющие команды, реализует логику коммутации и взаимодействует с контроллерами OpenFlow.
  • ovsdb-server — сервер базы данных OVSDB (Open vSwitch Database), хранящий конфигурацию коммутатора, портов, интерфейсов и политик QoS.
  • модуль ядра openvswitch — высокопроизводительный компонент, выполняющий быструю обработку пакетов и применение правил потоков (flow rules) без переключения в пользовательское пространство.
  • ovs-vsctl и ovs-ofctl — утилиты командной строки для управления конфигурацией и просмотра статистики потоков.
  • ovsdb-tool — инструмент для работы с файлами базы данных.

Пакеты, поступающие на порты OVS, классифицируются по таблицам потоков. Каждое правило потока содержит набор полей (MAC-адреса, IP-адреса, порты TCP/UDP, VLAN-теги) и действие (пересылка, отбрасывание, модификация заголовков). При совпадении пакета с правилом выполняется действие; при отсутствии совпадения пакет передаётся в пользовательское пространство для обработки контроллером или для обучения (learning).

Основные возможности

OVS поддерживает широкий спектр сетевых функций, что делает его универсальным инструментом для виртуальных сред:

  • OpenFlow — поддержка версий 1.0–1.5, что позволяет использовать OVS в SDN-инфраструктурах с внешними контроллерами (например, ONOS, OpenDaylight).
  • VLAN — тегирование и изоляция трафика, включая поддержку QinQ (двойное тегирование).
  • Туннелирование — создание оверлейных сетей через GRE, VXLAN, Geneve, STT и IPsec. Это критически важно для построения сетей в облачных платформах.
  • QoS — ограничение полосы пропускания, управление очередями и приоритизация трафика.
  • Мониторинг — сбор статистики по портам и потокам через NetFlow, sFlow и IPFIX.
  • Зеркалирование портов — копирование трафика для анализа системами безопасности или отладки.
  • Bonding — объединение нескольких физических интерфейсов в один логический для увеличения пропускной способности и отказоустойчивости.

Применение в виртуализации и облаках

OVS является стандартным сетевым компонентом в большинстве платформ виртуализации. В среде KVM/QEMU OVS используется как альтернатива стандартному мосту Linux (bridge). Виртуальные машины подключаются к OVS через виртуальные интерфейсы TAP; при этом администратор может применять политики безопасности, изоляции и QoS на уровне виртуального коммутатора.

В OpenStack OVS используется в качестве основного агента для нейтронных сетей (ML2 plugin). Он обеспечивает работу как плоских сетей, так и сетей VLAN и VXLAN. Интеграция с OpenStack позволяет автоматически создавать и настраивать виртуальные сети для арендаторов облака.

Платформа Kubernetes также может использовать OVS через сетевые плагины (например, Kube-OVN), предоставляя расширенные функции сетевой политики и мультитенантности.

Сравнение с Linux-мостом

Традиционный Linux Bridge — это простой мост канального уровня, который не поддерживает OpenFlow и расширенные функции управления. OVS, напротив, предоставляет централизованное управление, поддержку SDN и детализированную телеметрию. Однако Linux Bridge проще в настройке и потребляет меньше ресурсов при небольших масштабах. В современных дистрибутивах Linux оба решения сосуществуют: Linux Bridge используется для простых сценариев, OVS — для сложных многоарендных сред, где требуется программное управление сетью.

Производительность и оптимизация

Для повышения производительности OVS использует несколько механизмов:

  • DPDK (Data Plane Development Kit) — позволяет обрабатывать пакеты в пользовательском пространстве, минуя ядро, что обеспечивает миллионы пакетов в секунду на одном ядре CPU.
  • TC-flower (Traffic Control flower) — механизм для ускорения классификации пакетов в ядре.
  • Offload на сетевые карты — поддержка разгрузки обработки потоков на аппаратные ускорители (SmartNIC).

Недостатки и ограничения

Критики OVS отмечают его сложность по сравнению с Linux Bridge: для эффективной работы требуется понимание архитектуры OpenFlow и OVSDB. Также при использовании DPDK возрастает потребление ресурсов CPU, а настройка производительности требует тонкой настройки. В некоторых сценариях задержка обработки пакетов в OVS выше, чем у аппаратных коммутаторов.

Развитие проекта

Проект OVS активно развивается сообществом и компанией VMware. Регулярно выпускаются новые версии с поддержкой новых протоколов и улучшением производительности. OVS остаётся одной из ключевых технологий для построения виртуальных сетей в ЦОДах и облачных платформах, обеспечивая гибкость и программную управляемость сетевой инфраструктуры.

Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru