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

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 →