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

OpenFlow

OpenFlow — это протокол управления сетевыми устройствами, который позволяет программно определять маршруты передачи данных и правила обработки трафика, отделяя плоскость управления (control plane) от плоскости данных (data plane) в коммутаторах, маршрутизаторах и других сетевых элементах. OpenFlow является одним из ключевых компонентов архитектуры программно-конфигурируемых сетей (Software-Defined Networking, SDN), обеспечивая централизованное управление сетью через контроллер.

История

Протокол OpenFlow был разработан в 2008 году исследователями Стэнфордского университета (Ник МакКеон, Скотт Шенкер и другие) и Калифорнийского университета в Беркли в рамках проекта Clean Slate Program. Первоначальная цель состояла в создании открытого стандарта для экспериментов с новыми сетевыми протоколами в академических сетях, таких как Internet2. В 2009 году была выпущена версия 1.0, которая стала основой для первых коммерческих реализаций.

В 2011 году для продвижения OpenFlow и стандартизации SDN была основана Open Networking Foundation (ONF) — некоммерческая организация, объединившая производителей сетевого оборудования, операторов связи и исследовательские институты. ONF выпустила несколько версий протокола: 1.1 (2011), 1.2 (2011), 1.3 (2012), 1.4 (2013), 1.5 (2014). Наиболее широкое распространение получила версия 1.3, которая поддерживается большинством современных коммутаторов.

В 2016 году ONF передала управление разработкой OpenFlow сообществу OpenDaylight, но в 2021 году организация объявила о прекращении активной поддержки протокола в пользу более новых технологий, таких как P4 и P4Runtime. Тем не менее, OpenFlow остаётся важным этапом в развитии SDN и используется в ряде коммерческих и исследовательских проектов.

Архитектура

OpenFlow реализует концепцию разделения сети на два уровня:

  • Плоскость управления (control plane) — централизованный контроллер, который принимает решения о том, как обрабатывать трафик. Контроллер может быть программным (например, ONOS, OpenDaylight, Ryu) или аппаратным.
  • Плоскость данных (data plane) — сетевые устройства (коммутаторы, маршрутизаторы), которые выполняют команды контроллера: пересылают, отбрасывают или модифицируют пакеты.

Коммутатор, поддерживающий OpenFlow, содержит одну или несколько таблиц потоков (flow tables), в которых хранятся правила обработки. Каждое правило состоит из:

  • Поля сопоставления (match fields) — набор критериев, по которым пакет сравнивается с правилом: MAC-адреса, IP-адреса, порты TCP/UDP, VLAN, метки MPLS, приоритет и другие.
  • Счётчики (counters) — статистика по количеству пакетов, байтов, времени жизни правила.
  • Инструкции (instructions) — действия, которые необходимо выполнить при совпадении: переслать на определённый порт, отбросить, изменить заголовки, отправить контроллеру, добавить метку и т.д.

Если пакет не соответствует ни одному правилу в таблице, коммутатор отправляет его контроллеру (через защищённый канал) для принятия решения. Контроллер может добавить новое правило, чтобы в будущем пакеты обрабатывались локально.

Версии протокола

OpenFlow прошёл несколько версий, каждая из которых добавляла новые возможности:

  • 1.0 (2009) — базовая версия: одна таблица потоков, поддержка VLAN, IPv4, TCP/UDP, ARP.
  • 1.1 (2011) — добавлена поддержка нескольких таблиц, метки MPLS, групповые порты.
  • 1.2 (2011) — поддержка IPv6, расширенные поля сопоставления (например, метки OAM).
  • 1.3 (2012) — наиболее стабильная и распространённая версия: поддержка таблиц с метаданными, улучшенная обработка ошибок, расширенные счётчики.
  • 1.4 (2013) — поддержка синхронизации таблиц между несколькими контроллерами, улучшенная работа с VLAN.
  • 1.5 (2014) — последняя официальная версия: поддержка таблиц с приоритетами, улучшенная обработка групповых сообщений, расширенные возможности для телеметрии.

Применение

OpenFlow используется в различных сценариях:

  • Центры обработки данных (ЦОД) — для динамического управления трафиком между серверами, виртуальными машинами и контейнерами. Примеры: Google B4, Microsoft Azure.
  • Сети операторов связи — для оптимизации маршрутизации, балансировки нагрузки, внедрения новых услуг (например, виртуальные частные сети).
  • Исследовательские сети — для экспериментов с новыми протоколами и архитектурами, например, в проектах Internet2, GENI в США, а также в российских проектах (например, сеть RUNNet).
  • Безопасность — для создания адаптивных систем обнаружения и предотвращения вторжений (IDS/IPS), которые могут динамически блокировать подозрительный трафик.
  • Облачные вычисления — для управления виртуальными сетями в платформах OpenStack, Kubernetes, VMware NSX.

Преимущества и недостатки

Преимущества

  • Централизованное управление — упрощает настройку и мониторинг сети, снижает вероятность ошибок.
  • Гибкость — возможность быстро менять правила обработки трафика без переконфигурации каждого устройства.
  • Открытость — протокол является открытым стандартом, не привязанным к конкретному производителю.
  • Программируемость — сеть может адаптироваться к изменениям нагрузки в реальном времени.

Недостатки

  • Производительность — обработка каждого пакета контроллером может создавать задержки, особенно при большом количестве несовпадающих пакетов.
  • Масштабируемость — централизованный контроллер может стать узким местом в крупных сетях.
  • Безопасность — контроллер является критической точкой отказа; его компрометация может привести к нарушению работы всей сети.
  • Совместимость — не все устройства поддерживают OpenFlow, а версии протокола могут быть несовместимы между собой.

Реализации

Существует несколько популярных реализаций OpenFlow:

  • Контроллеры:
  • OpenDaylight — открытая платформа SDN, поддерживающая OpenFlow 1.0–1.3.
  • ONOS (Open Network Operating System) — контроллер для операторских сетей, поддерживает OpenFlow 1.0–1.5.
  • Ryu — легковесный контроллер на Python, поддерживает OpenFlow 1.0–1.5.
  • Floodlight — контроллер на Java, поддерживает OpenFlow 1.0–1.3.
  • Коммутаторы:
  • Open vSwitch (OVS) — программный коммутатор с открытым исходным кодом, поддерживает OpenFlow 1.0–1.5. Широко используется в виртуализированных средах.
  • Cisco Nexus 3000/9000 — аппаратные коммутаторы с поддержкой OpenFlow 1.0–1.3.
  • HP (HPE) Aruba — некоторые модели поддерживают OpenFlow 1.3.
  • Mellanox (NVIDIA) — коммутаторы с поддержкой OpenFlow 1.3.
  • Эмуляторы:
  • Mininet — инструмент для эмуляции сетей SDN на одном компьютере, поддерживает OpenFlow 1.0–1.5.

Связь с другими технологиями

OpenFlow является частью более широкой экосистемы SDN. В отличие от более новых протоколов, таких как P4 (который позволяет программировать не только правила, но и саму обработку пакетов на уровне данных), OpenFlow ограничивается фиксированным набором полей и действий. Тем не менее, OpenFlow остаётся основой для многих коммерческих и исследовательских решений.

В России OpenFlow использовался в проектах по созданию программно-конфигурируемых сетей, например, в рамках программы «Цифровая экономика» и в исследовательских центрах (МГУ, МФТИ, Институт проблем передачи информации РАН). Однако широкого внедрения в коммерческих сетях операторов связи не произошло из-за сложности интеграции с существующим оборудованием и требований к производительности.

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

  • Первая крупная демонстрация OpenFlow состоялась в 2009 году на конференции SIGCOMM.
  • Google использовала OpenFlow в своей внутренней сети B4 для управления трафиком между ЦОД, что позволило увеличить загрузку каналов до 95% (против 30–40% в традиционных сетях).
  • В 2012 году OpenFlow был включён в стандарт IEEE 802.1Qbg (Edge Virtual Bridging) для виртуализированных сетей.

Источники

  • Open Networking Foundation. «OpenFlow Switch Specification» (версии 1.0–1.5).
  • McKeown, N. et al. «OpenFlow: Enabling Innovation in Campus Networks» (2008).
  • ONF. «Software-Defined Networking: The New Norm for Networks» (2012).
  • Kreutz, D. et al. «Software-Defined Networking: A Comprehensive Survey» (2015).
  • Документация Open vSwitch (openvswitch.org).
  • Статья «OpenFlow» в Википедии (русскоязычная версия).

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

На главную BFOmetr →