You are here: Home / Users / Sasha Shkrebets / SDN / 2024 / Бакалавриат / SDN_Theory / Представление OpenFlow.

Представление OpenFlow.

by Sasha Shkrebets last modified Mar 04, 2023 02:45 PM
подстрочник на русском

Привет всем, меня зовут Сохейл и сегодня я собираюсь поговорить о спецификации коммутатора OpenFlow.
Документ, который я использую для этой презентации это версия 1.5.1, который на момент этой записи является последним.
Конечно, вы всегда можете скачать последнюю версию с сайта opennetworking.org.
Итак, небольшой обзор программно определяемых сетей, как вы, наверное, знаете, основная цель программно-определяемой сети
состоит в том, чтобы отделить плоскость управления от  плоскости передачи данных в коммутаторе или в наших роутерах.
Итак, у нас есть две основные части. Первая часть - северная, который ориентирован на общение между прикладным уровнем и уровнем управления.
А вторая часть называется Southbound, который фокусируется на связи между уровнем управления и инфраструктуры.
Таким образом, OpenFlow работает в южном направлении програмно-конфигурируемой сетевой архитектуры.
О коммутаторе,
OpenFlow должен иметь как минимум одну потоковую таблицу и одну групповую.
Таким образом, таблица потока и таблица групп, то, что они делают, в основном поиск и пересылка пакетов.
У вас также будет несколько каналов OpenFlow. 
Таким образом, эти каналы являются способом общения к внешним контроллерам.
И контроллеры, конечно, они могут добавлять, обновлять или удалять записи потока в нашей таблице потоков,
и они могут делать это как реактивно, так и проактивно.
Затем на наш входной порт приходит пакет. Сопоставление начинается с этой первой таблицы, и он в основном обрабатывается для последовательных таблиц.
И важно знать, что если мы найдем совпадение в одной из наших записей потока он имеет приоритет.
Таким образом, первое совпадение имеет приоритет над остальными совпадениями.
Так что это важно знать.

Тогда здесь мы поговорим о портах OpenFlow.
У нас есть первый вид портов это, конечно, физический порт, который в основном является интернет-интерфейсом.
У нас есть несколько логических портов, они не связаны с аппаратным интерфейсом и они вроде как высшая  абстракция.
Примером могут быть группы агрегации ссылок, туннели или петлевые интерфейсы.
И третий тип — это наши резервные порты.
В основном, что они делают - это являются  общими действиями по пересылке.
Они выполняют общие действия по пересылке для OpenFlow.
И, например,
они могут отправлять пакеты на контроллер или они могут флудить на все порты коммутатора или они могут просто пересылать пакеты
с использованием методов OpenFlow.
У нас есть входящие и исходящие порты, конечно, и все они могут быть сгруппированы вместе.
Каждый порт имеет счетчики портов для сбора статистики о входящем и исходящем пакете,
и все они в основном имеют флаг состояния и конфигурации.
ну это как картинка для конвейера обработки.
Как видите, сюда входит пакет с  нулевой таблицей, и следующий переход к следующей таблице, до тех пор пока не найдет действие
который подходит для этих пакетов.
И на основе действия мы отправим его на выходной порт.
Итак, снова здесь у нас есть эти шаги обработки пакетов начиная  с нулевой таблицы потоков,
и пакет сопоставляется с записями потока таблицы потоков, если у вас есть совпадение, инструкция, установленная в этой записи потока, будет выполнена.
Мы могли бы перейти к инструкции в таблице,которая  означает,  отправить пакет  к  другой таблицей.
И мы должны знать, что конвейерная обработка может идти только вперед, а не назад.
Итак, в этом примере
если направление нашего входящего пакета это слева направо, поэтому в этом примере мы можем двигаться только вправо,
мы можем идти только направо. Таким образом, мы не можем перейти от первого стола к нулевому, мы можем только двигаться в правильном направлении в этом примере.
И у нас будет конечно что-то, что называется таблица потерь.
Поэтому, если вы не найдете ни одной записи потока в нашей таблице, мы должны указать, что делать в  таком случае.
Поэтому мы, вероятно, уточним, что, удалите пакет например, если мы не найдем запись потока в нашей таблице потоков, или передать его диспетчеру,
или передать его на другой стол.
Но если у вас нет записи потока таблицы потерь, пакет будет сброшен.
Итак, у нас есть два типа коммутаторов OpenFlow.
Первый будет только OpenFlow, что означает, что все пакеты обрабатываются конвейером OpenFlow.
А другая будет гибридной моделью, в которой  операция OpenFlow и обычные модули коммутации Ethernet работают параллельно друг другу.
Итак, в гибридной модели если мы хотим перейти от модуля OpenFlow к традиционному модулю, мы должны использовать два резервных порта
который является нормальным портом и портом широковещательным.
Итак, нормальный порт, как следует из названия, он используется только для нормальной работы переадресации
и в широковещательных портах, мы в основном отправляем пакет на все порты коммутатора, кроме того, с которого он пришел,  за исключением в основном входного порта, извините.
Здесь мы поговорим о таблице потоков.
Таким образом, каждая таблица потоков состоит из записей потока  и это основной компонент записей потока.
У нас есть поля совпадения, и они могут быть либо входящий порт, заголовок пакета или некоторые метаданные, указанные из предыдущей таблицы.

У нас приоритет который соответствует приоритету записи потока.

И у нас есть счетчики, который будет обновлен при совпадении пакетов.

У нас есть инструкция, с основным действием или  набором действий или конвейерной обработки.
И у нас есть тайм-ауты, максимальное количество времени или идеальное время.
И есть  куки, которые являются некоторыми непрозрачными значениями данного контроллера.
И они могут использовать контроллером для фильтрации некоторых записей потока по статистике потоков.
Так что это обычно не используется во время обработки пакетов.
Это то, что используется больше связанные со сбором статистики и при изменении режима потока или запрос на удаление потока.
И, конечно же, у нас есть флажки, что они могут меняться на основе записей потока что они управляются в основном.
Итак, здесь снова у нас есть соответствующая обработка, в основном, когда пакет входит, он идет в нашу таблицу потоков.
В таблице потоков у нас есть несколько записей потока.
Так что, если вы найдете совпадение и  если это совпадение указывает на выходные порты, мы просто применяем действие,
мы модифицируем пакет, мы обновляем поле соответствия, мы обновляем поле конвейера и, наконец, отправляем его на выходной порт.
Но если действие в основном предназначено, например, если требуется дальнейшая обработка, у нас другой набор действий.
Итак, мы очищаем действия в основном, очищаем список действий, пишем новые действия и мы отправляем его на следующий идентификатор таблицы.
Извините, мы отправляем его к следующей таблицы и  следующая таблица в основном относится к тому же пакету.

И, наконец, либо мы сбрасываем пакет или мы отправляем его на входной интерфейс.
Таково было краткое изложение первых пяти глав. этих документов.
Я надеюсь, что это было информативно для вас, и я хочу поблагодарить вас за внимание. Спасибо.