OpenFlow – это открытый коммуникационный протокол, который позволяет программное обеспечение контроллера сети управлять трафиком между коммутаторами в сети. С помощью OpenFlow возможно централизованное управление сетевым оборудованием, что упрощает управление и настройку сети, а также позволяет улучшить ее производительность и безопасность.
OpenFlow обеспечивает разделение управления и передачи данных, что позволяет контроллерам программно управлять трафиком в сети, принимая решения на основе информации о сети и трафике, а не на основе предустановленных правил на коммутаторах. Контроллеры могут отправлять инструкции коммутаторам OpenFlow для управления потоками данных, перенаправления трафика и обработки ошибок.
OpenFlow широко используется в современных программно-определяемых сетях (SDN), где программируемость сети играет ключевую роль в обеспечении гибкости и простоты управления сетью.
Протокол используется для управления сетевыми коммутаторами и маршрутизаторами с центрального устройства — контроллера сети (например, с сервера или даже рабочей станции). Это управление заменяет или дополняет работающую на коммутаторе (маршрутизаторе) встроенную программу, осуществляющую построение маршрута, создание карты коммутации и т. д.. Контроллер используется также для управления таблицами потоков коммутаторов, на основании которых принимается решение о передаче принятого пакета на конкретный порт коммутатора. Таким образом в сети формируются прямые сетевые соединения с минимальными задержками передачи данных и необходимыми параметрами.
Путь прохождения данных состоит из таблицы потоков (flow table) и действий, назначенных для каждой записи в таблице. Сами таблицы могут касаться как Ethernet (или других протоколов канального уровня), так и протоколов более высокостоящих уровней (IP, TCP). Точный список действий может меняться, но основные это: форвардинг (пересылка фрагмента данных – пакета, фрейма – в заданный порт), пересылка фрагмента данных на контроллер через безопасный канал для дальнейшего исследования, отбрасывание фрагмента данных (drop). Для устройств, совмещающих openflow и обычную обработку пакетов средствами микропрограммы устройства, добавляется четвёртый тип действия: обработка фрагмента данных обычными средствами. Оборудование, поддерживающее эти четыре действия являются Type0-устройствами.
Устройство OpenFlow состоит, как минимум, из трёх компонент:
- таблицы потоков (англ. flow table);
- безопасного канала (англ. secure channel), использующегося для управления коммутатором внешним «интеллектуальным» устройством (контроллером);
- поддержки протокола OpenFlow protocol, использующегося для управления. Использование этого протокола позволяет избежать необходимости писать программу для управляемого устройства;
Каждая запись в таблице потоков имеет три поля: заголовок PDU (фрагмента данных), который позволяет определить соответствие PDU потоку, действие и поле со статистикой (число байтов и PDU, соответствующее потоку, время прохождения последнего соответствующего потоку PDU).
Заголовок может состоять из множества полей разного уровня (например, MAC-адресов отправителя и получателя, полей из заголовка IP-пакета, полей из заголовка TCP-сегмента). Следует отметить, что в текущей версии протокола[2] не поддерживается проверка, к примеру, флага SYN в заголовке TCP-сегмента. Каждое поле может иметь особое значение (звёздочка), означающее соответствие любому значению соответствующего поля в PDU.
Устройства type1, которые будут обеспечивать трансляцию сетевых адресов, поддержку классов и приоритетов, запланированы, но их спецификация пока не определена.
Контроллеры обеспечивают наполнение таблицы потоков, получение пакетов через безопасный канал от устройства. Могут быть реализованы как простейший алгоритм, напоминающий поведение коммутатора, разделяющего пакеты по логическим сетям (VLAN), а могут реализовывать сложную динамическую логику, влияющую на прохождение пакетов исходя из внешних причин (права доступа, загрузка серверов, приоритеты по обслуживанию и т. д.).
Преимущества протокола OpenFlow:
1. Гибкость и управляемость: OpenFlow позволяет централизованно управлять сетью, устанавливать и изменять правила маршрутизации на устройствах сетевого оборудования.
2. Унификация: OpenFlow обеспечивает единообразие взаимодействия между контроллером и коммутаторами, что упрощает управление и настройку сети.
3. Расширяемость: OpenFlow позволяет добавлять новые функции и возможности без необходимости замены существующего оборудования.
4. Прозрачность: OpenFlow позволяет создавать виртуальные сети и проводить тестирование новых сетевых приложений без влияния на основную сеть.
Недостатки протокола OpenFlow:
1. Безопасность: OpenFlow предоставляет возможность централизованного управления сетью, что может стать уязвимостью для безопасности сети.
2. Зависимость от контроллера: OpenFlow требует постоянной связи с централизованным контроллером для работы, что может вызвать проблемы при отказе контроллера.
3. Сложность конфигурации: Конфигурация и управление сетью через OpenFlow может потребовать специальных навыков и знаний, что может быть сложно для неквалифицированных пользователей.
4. Производительность: Перехват и обработка трафика через контроллер может привести к задержкам и ухудшению производительности сети.