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

Open vSwitch

Open vSwitch (OVS) — это программная реализация многоуровневого сетевого коммутатора с открытым исходным кодом, предназначенная для виртуализированных сред. Распространяется под лицензией Apache 2.0. OVS эмулирует функциональность аппаратного коммутатора, поддерживая стандартные протоколы управления и мониторинга (OpenFlow, NetFlow, sFlow, IPFIX, STP, LACP, 802.1Q VLAN, VXLAN, GRE, Geneve), что позволяет использовать его в программно-конфигурируемых сетях (SDN) и платформах виртуализации, таких как Xen, KVM, VirtualBox и VMware.

История

Разработка Open vSwitch была начата в 2009 году компанией Nicira Networks (основана Мартином Касадо, Ником МакКеоном и Скоттом Шенкером). Первоначально проект создавался для обеспечения сетевой связности в гипервизоре Xen, где требовалась поддержка распределённых виртуальных коммутаторов. В 2011 году Nicira была приобретена корпорацией VMware (входит в состав Dell Technologies), что ускорило развитие OVS и его интеграцию с платформами виртуализации.

В 2012 году проект был передан под управление Linux Foundation. С этого момента OVS стал стандартным компонентом многих дистрибутивов Linux (включён в ядро Linux начиная с версии 3.3). В 2014 году была выпущена версия 2.0, которая добавила поддержку OpenFlow 1.3 и улучшенную производительность. Последующие версии (2.5, 2.10, 2.15, 3.0) расширили функциональность: появилась поддержка DPDK (Data Plane Development Kit) для ускорения обработки пакетов, улучшена работа с большими объёмами потоков, добавлены протоколы туннелирования Geneve и VXLAN-GPE.

Архитектура и компоненты

Open vSwitch состоит из нескольких ключевых компонентов, работающих в пространстве пользователя и ядра операционной системы.

ovs-vswitchd

Основной демон, реализующий логику коммутации. Он обрабатывает управляющие сообщения (например, от контроллера SDN через OpenFlow), управляет таблицами потоков и выполняет коммутацию пакетов. Взаимодействует с ядром через netlink-сокеты.

ovsdb-server

Сервер базы данных OVSDB (Open vSwitch Database). Хранит конфигурацию коммутатора: порты, мосты, настройки QoS, параметры туннелей. Использует формат JSON для обмена данными. Поддерживает репликацию и транзакции.

ovs-vsctl

Утилита командной строки для управления конфигурацией OVSDB. Позволяет создавать и удалять мосты, добавлять порты, настраивать VLAN и туннели. Пример команды: ovs-vsctl add-br br0.

ovs-ofctl

Утилита для управления таблицами потоков OpenFlow. Позволяет добавлять, удалять и просматривать правила обработки трафика. Пример: ovs-ofctl add-flow br0 "in_port=1,actions=output:2".

ovs-appctl

Утилита для взаимодействия с работающим демоном ovs-vswitchd. Используется для диагностики, сбора статистики и изменения параметров в реальном времени.

ovs-dpctl

Утилита для управления плоскостью данных (datapath) — модулем ядра, отвечающим за быструю обработку пакетов. Позволяет просматривать кэш потоков и статистику.

Модули ядра

Open vSwitch включает модули ядра Linux (openvswitch.ko, vport-*.ko), которые реализуют быструю обработку пакетов без переключения в пространство пользователя. Для ускорения может использоваться DPDK (пользовательский datapath), который работает полностью в пространстве пользователя, минуя ядро.

Классификация и режимы работы

Open vSwitch может работать в нескольких режимах, в зависимости от потребностей инфраструктуры.

Режим ядра (Kernel datapath)

Трафик обрабатывается модулем ядра Linux. Это стандартный режим, обеспечивающий высокую производительность (до 10-20 Гбит/с на одном ядре). Подходит для большинства виртуализированных сред.

Режим DPDK (Userspace datapath)

Использует библиотеку DPDK для прямого доступа к сетевым картам. Обработка пакетов происходит полностью в пространстве пользователя, что позволяет достичь производительности до 40-100 Гбит/с и выше. Требует выделенных ядер CPU и специальной настройки.

Гибридный режим

Комбинация ядерного и пользовательского datapath. Например, часть трафика обрабатывается в ядре, а часть — через DPDK, в зависимости от конфигурации.

Режим OpenFlow

OVS выступает как OpenFlow-коммутатор, управляемый внешним контроллером SDN (например, ONOS, OpenDaylight, Ryu). В этом режиме все решения о маршрутизации принимаются контроллером, а OVS выполняет его команды.

Режим автономного коммутатора

OVS работает как обычный L2-коммутатор с поддержкой VLAN, STP, LACP, без внешнего контроллера. Управление осуществляется через ovs-vsctl.

Применение

Open vSwitch широко используется в различных областях, связанных с виртуализацией и программно-конфигурируемыми сетями.

Платформы виртуализации

  • XenServer / Xen Project: OVS является стандартным виртуальным коммутатором для Xen. Обеспечивает изоляцию и связность виртуальных машин (ВМ).
  • KVM (QEMU): Интегрируется через libvirt или напрямую. Позволяет подключать ВМ к мостам OVS.
  • VirtualBox: Поддерживается через плагины, хотя используется реже.
  • VMware vSphere: OVS может работать как альтернатива vSphere Distributed Switch (vDS) в некоторых конфигурациях.

Облачные платформы

  • OpenStack: OVS является одним из основных драйверов для Neutron (сетевой сервис). Используется для создания виртуальных сетей (VLAN, VXLAN, GRE) и обеспечения связности между ВМ и внешними сетями.
  • Kubernetes: OVS может использоваться как CNI-плагин (Container Network Interface) для организации сетевой связности контейнеров. Поддерживает политики сети (NetworkPolicy) и туннелирование.
  • CloudStack: Поддерживается как один из вариантов сетевой изоляции.

Программно-конфигурируемые сети (SDN)

  • OpenFlow: OVS выступает в роли коммутатора, управляемого контроллером. Позволяет реализовывать сложные политики маршрутизации, балансировки нагрузки и фильтрации трафика.
  • OVN (Open Virtual Network): Надстройка над OVS, предоставляющая абстракцию виртуальных сетей, маршрутизаторов и ACL. OVN использует OVS для реализации плоскости данных, а управление осуществляется через OVN Northbound DB.

Тестирование и исследования

OVS часто используется в лабораторных средах для моделирования сетевых топологий, тестирования протоколов и отладки сетевых приложений. Благодаря поддержке OpenFlow, исследователи могут экспериментировать с новыми алгоритмами маршрутизации.

Характеристики и возможности

Open vSwitch поддерживает широкий набор сетевых функций, характерных для аппаратных коммутаторов.

  • Поддержка VLAN (802.1Q, QinQ): изоляция трафика на уровне L2.
  • Туннелирование: VXLAN, GRE, Geneve, STT (Stateless Transport Tunneling). Позволяет создавать оверлейные сети поверх физической инфраструктуры.
  • Протоколы управления: STP (802.1D), RSTP (802.1w), LACP (802.3ad) для агрегации каналов.
  • Мониторинг: NetFlow, sFlow, IPFIX, SPAN (порты-зеркала) для анализа трафика.
  • QoS: Ограничение пропускной способности, приоритезация трафика (CoS, DSCP).
  • OpenFlow: Поддержка версий 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (частично). Позволяет программно управлять таблицами потоков.
  • OVSDB: Протокол управления конфигурацией, поддерживаемый многими SDN-контроллерами.
  • Масштабируемость: OVS может обрабатывать миллионы потоков и тысячи портов на одном узле.
  • Безопасность: Поддержка ACL (Access Control Lists) на основе полей L2-L4, интеграция с iptables/nftables.

Критика и ограничения

Несмотря на широкое распространение, Open vSwitch имеет ряд недостатков.

  • Сложность настройки: Для работы с OVS требуется знание командной строки и понимание сетевых протоколов. Графические интерфейсы (например, в OpenStack) упрощают задачу, но скрывают детали.
  • Производительность в режиме ядра: При больших объёмах трафика (более 20 Гбит/с) ядерный datapath может стать узким местом. Режим DPDK решает эту проблему, но требует дополнительных ресурсов и настройки.
  • Совместимость с оборудованием: Некоторые функции (например, аппаратное ускорение через SmartNIC) поддерживаются не всеми сетевыми картами.
  • Отладка: Диагностика проблем с трафиком в OVS может быть сложной из-за многоуровневой архитектуры (пользовательское пространство, ядро, DPDK).
  • Зависимость от ядра Linux: OVS тесно интегрирован с ядром Linux, что может вызывать проблемы при обновлении ядра или использовании нестандартных конфигураций.

Интересные факты

  • OVS используется в крупнейших облачных провайдерах, включая Amazon Web Services (AWS) и Google Cloud Platform (GCP), для реализации виртуальных сетей.
  • Протокол OVSDB был стандартизирован в RFC 7047 (2013 год).
  • OVS поддерживает работу с несколькими контроллерами SDN одновременно, что позволяет реализовать отказоустойчивость.
  • В 2016 году проект OVS был удостоен премии «Лучший проект с открытым исходным кодом» на конференции OpenStack Summit.

Источники

  • Open vSwitch Documentation (https://docs.openvswitch.org)
  • RFC 7047 — The Open vSwitch Database Management Protocol
  • Linux Kernel Documentation — Open vSwitch
  • «Software-Defined Networking: A Design Approach» — William Stallings
  • Статья «Open vSwitch: Past, Present, and Future» — Justin Pettit, Ben Pfaff (2014)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →