OpenFlow

Материал из sysadm
Перейти к навигации Перейти к поиску

Ссылки по теме

OpenFlow - протокол управления процессом обработки данных, передающихся по сети передачи данных маршрутизаторами и коммутаторами, реализующий технологию программно-конфигурируемой сети.

Протокол используется для управления сетевыми коммутаторами и маршрутизаторами с центрального устройства — контроллера сети. Это управление заменяет или дополняет работающую на коммутаторе (маршрутизаторе) встроенную программу, осуществляющую построение маршрута, создание карты коммутации и т. д.. Контроллер используется для управления таблицами потоков (flow table) коммутаторов, на основании которых принимается решение о передаче принятого пакета на конкретный порт коммутатора. Таким образом в сети формируются прямые сетевые соединения с минимальными задержками передачи данных и необходимыми параметрами.

Архитектура

Путь прохождения данных (datapath) состоит из таблицы потоков (flow table) и действий, назначенных для каждой записи в таблице. Сами таблицы могут касаться как Ethernet (или других протоколов канального уровня), так и протоколов вышестоящих уровней (IP, TCP). Точный список действий может меняться, но основные это: форвардинг (пересылка фрагмента данных - пакета, фрейма - в заданный порт), пересылка фрагмента данных на контроллер через безопасный канал для дальнейшего исследования, отбрасывание фрагмента данных (drop). Для устройств, совмещающих openflow и обычную обработку пакетов средствами микропрограммы устройства, добавляется четвёртый тип действия: обработка фрагмента данных обычными средствами. Оборудование, поддерживающее эти четыре действия являются Type0-устройствами.

Устройство OpenFlow состоит, как минимум, из трёх компонент:

  • таблицы потоков (flow table);
  • безопасного канала (secure channel), использующегося для управления коммутатором внешним «интеллектуальным» устройством (контроллером);
  • Поддержки протокола OpenFlow protocol, использующегося для управления.

Использование этого протокола позволяет избежать необходимости писать программу для управляемого устройства; Каждая запись в таблице потоков имеет три поля: заголовок PDU (фрагмента данных), который позволяет определить соответствие PDU потоку, действие и поле со статистикой (число байтов и PDU, соответствующее потоку, время прохождения последнего соответствующего потоку PDU).

Заголовок может состоять из множества полей разного уровня (например, MAC-адресов отправителя и получателя, полей из заголовка IP-пакета, полей из заголовка TCP-сегмента). Следует отметить, что в текущей версии протокола не поддерживается проверка, к примеру, флага SYN в заголовке TCP-сегмента. Каждое поле может иметь особое значение (*), означающее соответствие любому значению соответствующего поля в PDU.

Устройства type1, которые будут обеспечивать трансляцию сетевых адресов, поддержку классов и приоритетов, запланированы, но их спецификация пока не определена.

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