OVN
OVN (Open Virtual Network) — это открытая программная система для виртуализации сетей, предназначенная для создания и управления программно-определяемыми сетями (SDN) в средах виртуализации, таких как OpenStack, Kubernetes и других платформах, использующих гипервизоры на основе ядра Linux (KVM). OVN предоставляет средства для абстрагирования физической сетевой инфраструктуры, позволяя автоматически настраивать виртуальные коммутаторы, маршрутизаторы, межсетевые экраны и другие сетевые элементы на уровне виртуальных машин и контейнеров.
История
Проект OVN был основан в 2015 году как часть экосистемы Open vSwitch (OVS) — популярного программного коммутатора с открытым исходным кодом. Разработчики из компании Nicira (позже приобретённой VMware) и сообщества Open vSwitch стремились создать решение, которое бы упростило управление виртуальными сетями, особенно в масштабных облачных средах. Первая стабильная версия OVN была выпущена в 2016 году, и с тех пор проект активно развивается при поддержке сообщества и таких организаций, как Red Hat, IBM и Intel. В 2020 году OVN был включён в состав дистрибутива Red Hat OpenStack Platform в качестве стандартного сетевого драйвера, а в 2022 году — в состав Kubernetes через проект OVN-Kubernetes.
Архитектура и принцип работы
OVN построен на основе архитектуры «контроллер-агент», где центральный компонент — логический контроллер (ovn-northd) — отвечает за преобразование высокоуровневых сетевых политик в низкоуровневые правила для Open vSwitch. Взаимодействие между компонентами осуществляется через базу данных OVSDB (Open vSwitch Database), которая хранит конфигурацию сети.
Основные компоненты
- ovn-northd — центральный контроллер, который читает данные из базы OVN_Northbound и преобразует их в логические потоки для базы OVN_Southbound.
- ovn-controller — агент, работающий на каждом узле (гипервизоре или хосте), который синхронизирует состояние логической сети с локальным экземпляром Open vSwitch.
- Базы данных OVN:
- OVN_Northbound — хранит высокоуровневую конфигурацию сети (логические коммутаторы, маршрутизаторы, порты и политики).
- OVN_Southbound — содержит логические потоки и привязки портов, используемые агентами.
- Open vSwitch (OVS) — программный коммутатор, который выполняет пересылку пакетов на основе правил, сгенерированных OVN.
Логическая модель сети
OVN вводит понятие «логической сети», которая может включать:
- Логические коммутаторы (L2) — виртуальные сети канального уровня, аналогичные VLAN или VXLAN.
- Логические маршрутизаторы (L3) — виртуальные маршрутизаторы, обеспечивающие межсетевую маршрутизацию.
- Логические порты — точки подключения виртуальных машин, контейнеров или физических хостов.
- Логические межсетевые экраны — правила ACL (Access Control Lists) для фильтрации трафика.
- Логические балансировщики нагрузки — распределение трафика между несколькими конечными точками.
Классификация и виды
OVN можно классифицировать по способу развёртывания и интеграции:
- OVN в OpenStack — используется как драйвер для сервиса Neutron, обеспечивая автоматическую настройку сетей для виртуальных машин. Поддерживает все стандартные функции OpenStack, включая сети с наложением (overlay) и VLAN.
- OVN в Kubernetes — реализуется через проект OVN-Kubernetes, который предоставляет сетевую подсистему для контейнеров, поддерживая политики сети (NetworkPolicy), маршрутизацию между подами и балансировку нагрузки.
- OVN для автономных гипервизоров — может быть развёрнут на отдельных хостах с KVM для управления виртуальными сетями без использования облачных платформ.
Применение
OVN широко используется в облачных и корпоративных средах для автоматизации сетевой инфраструктуры. Основные области применения:
- Облачные платформы — в OpenStack (начиная с версии Queens) и Red Hat OpenStack Platform OVN является рекомендуемым сетевым драйвером. Он позволяет создавать изолированные сети для арендаторов, управлять маршрутизацией и обеспечивать безопасность.
- Контейнерные оркестраторы — в Kubernetes OVN-Kubernetes используется как альтернатива Calico, Flannel или Cilium. Он обеспечивает нативную поддержку политик сети и интеграцию с многосетевыми сценариями.
- Телекоммуникации — OVN применяется в сетях NFV (Network Functions Virtualization) для развёртывания виртуализированных сетевых функций (VNF), таких как маршрутизаторы, межсетевые экраны и системы обнаружения вторжений.
- Разработка и тестирование — OVN используется в лабораторных средах для симуляции сложных сетевых топологий без необходимости в физическом оборудовании.
Преимущества и ограничения
Преимущества
- Открытость и бесплатность — OVN распространяется под лицензией Apache 2.0, что позволяет использовать его в коммерческих проектах без лицензионных отчислений.
- Масштабируемость — архитектура OVN рассчитана на поддержку тысяч узлов и десятков тысяч виртуальных сетей.
- Гибкость — поддержка множества протоколов туннелирования (VXLAN, Geneve, STT) и интеграция с различными платформами.
- Производительность — благодаря использованию Open vSwitch и ядра Linux, OVN обеспечивает высокую скорость пересылки пакетов, сравнимую с аппаратными коммутаторами.
Ограничения
- Сложность настройки — для развёртывания OVN требуется понимание архитектуры Open vSwitch и баз данных OVSDB, что может быть сложным для начинающих администраторов.
- Зависимость от Open vSwitch — OVN не может работать без OVS, что ограничивает его использование в средах с другими коммутаторами.
- Мониторинг и отладка — инструменты для диагностики и мониторинга OVN менее развиты по сравнению с коммерческими решениями, такими как VMware NSX.
Примеры использования
Пример 1: Развёртывание OVN в OpenStack
В типичной конфигурации OpenStack с OVN администратор создаёт логический коммутатор для арендатора, подключает к нему виртуальные машины и настраивает маршрутизацию через логический маршрутизатор. OVN автоматически генерирует правила для Open vSwitch на каждом узле, что позволяет трафику между виртуальными машинами проходить напрямую, минуя центральный контроллер.
Пример 2: OVN-Kubernetes в кластере Kubernetes
В кластере Kubernetes с OVN-Kubernetes каждый под получает уникальный IP-адрес из логической сети. OVN обеспечивает изоляцию между подами через политики сети, а также маршрутизацию трафика между подами на разных узлах. Для балансировки нагрузки используются встроенные механизмы OVN, которые распределяют трафик между репликами сервисов.
Интересные факты
- OVN поддерживает протокол Geneve (Generic Network Virtualization Encapsulation), который позволяет инкапсулировать пакеты с метаданными, что упрощает реализацию сложных сетевых политик.
- В 2021 году проект OVN был признан одним из ключевых компонентов экосистемы OpenStack, а его кодовая база насчитывает более 100 тысяч строк на языке C.
- OVN может работать в гибридных сценариях, где часть сети управляется через OVN, а часть — через традиционные VLAN.
Источники
- Официальная документация проекта Open vSwitch и OVN (openvswitch.org)
- Red Hat OpenStack Platform Documentation: OVN Networking
- OVN-Kubernetes: проект на GitHub (github.com/ovn-org/ovn-kubernetes)
- Статья «OVN: Open Virtual Network for Open vSwitch» (Linux Foundation, 2016)
- Документация OpenStack: Neutron and OVN (docs.openstack.org)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →