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 →