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 →