Повідомлення протоколу openflow

Протокол OpenFlow підтримує три типи повідомлень:

1) Контролер-комутатор. Повідомлення цього типу відправляються контролером, використовуються для управління і відстеження за станом комутатора. Також можуть використовуватися для установки параметрів конфігурації комутатора, додавання, видалення і зміни записів в таблицях потоків, збору статистики.

2) Асинхронні. Повідомлення відправляються комутатором для оповіщення контролера про події в мережі: прибуття пакетів, видаленні записи з таблиці по закінченню часу, про зміни стану комутатора, про помилки.

3) Симетричні. Повідомлення можуть відправлятися як контролером, так і комутатором без запиту. Використовуються під час активного з'єднання, для перевірки живучості з'єднання, при вимірюванні затримок, пропускної здатності з'єднання контролер-комутатор.

2.4.6

Повідомлення протоколу openflow

Сценарій роботи OpenFlow

1) Комутатор ініціює стандартний TCP (або TLS) з'єднання з контролером. Коли з'єднання OpenFlow встановлюється, кожен об'єкт повинен передати повідомлення OFPT_HELLO з версією протоколу.

2) Після успішного встановлення сеансу, контролер посилає повідомлення OFPT_FEATURES_REQUEST. Це повідомлення містить тільки заголовок OpenFlow і не містить тіло.

3) Перемикач відповідає відповідним повідомленням OFPT_FEATURES_REPLY.

4) Далі, контролер посилає повідомлення OFPT_SET_CONFIG до комутатора. Це повідомлення включає в себе набір прапорів і максимальний розмір пакету, яке необхідно відправити в контролер.

5) Повідомлення Vendor використовується для приватних повідомлень в рамках протоколу.

6) Повідомлення про помилку ( «Error») може бути відправлено або комутатором, або контролером і вказує на відмову операції. Відмова може бути, якщо відправлено неприпустиме повідомлення, використовується не узгоджена версія протоколу або ж трапилася помилка в зміні стану на комутаторі.

7) FlowMod- одне з основних повідомлень, яке дозволяє контролеру змінити стан комутатора OpenFlow.

Основні компоненти SDN

Основними компонентами програмно-комутованих мереж на базі протоколу OpenFlow є:

1) Комутатор OpenFlow

2) Контролер OpenFlow

3) Захищений канал, за допомогою якого здійснюється взаємодія контролера і комутатора. Як правило, для захисту переданих повідомлень використовується TLS (Transport Layer Security, безпеку транспортного рівня), але можлива передача по стандартному TCP без шифрування.

Повідомлення протоколу openflow

Мал. 14. Схема взаємодії комутатора з контролером по протоколу OpenFlow.

Комутатор є найважливішою складовою мережі. До складу комутатора OpenFlow входять наступні сутності: таблиця (-и) потоків (flow); таблиця (-и) груп (forward).

Основні керуючі команди контролера, які передаються на комутатор: додати потік; оновити потік; видалити потік.

Основні режими роботи: реактивний (у відповідь на що прийшли по мережі пакети); проактивний (заздалегідь, до приходу пакетів).

Кожна таблиця потоків на комутаторі містить одну або кілька записів, які відповідають певним потокам даних. Кожен запис складається з: поля ознак; лічильника; набору інструкцій, що застосовуються до пакету даних.

Набір інструкцій, що міститься в кожному записі, описує дії, які виконає комутатор в разі успішного збігу.

Набір дій комутатора OpenFlow: переслати пакет; модифікувати заголовок пакета; відправити на обробку в таблицю груп; відправити на обробку в конвеєр.

Пересилання пакета може вказати на відправку пакета:

1) В фізичний порт комутатора. Порт, відповідний апаратного мережевого інтерфейсу (hardware).

2) В віртуальний порт комутатора. Віртуальний порт комутатора може використовуватися для точного визначення групи агрегованих каналів, тунелів, а також портів зі зворотним зв'язком (loopback).

Обробка в таблиці груп використовується для виконання додаткових дій з пакетом. Самі групи містять набори дій для широкомовної розсилки, а також набори дій для пересилання з більш складною семантикою (наприклад, multipath, швидке змін маршруту (fast reroute), агрегування каналів). Кожна групова запис містить список контейнерів дій зі спеціальною семантикою, в залежності від типу групи. Дії, описані в цих контейнерах, застосовуються до всіх пакетів, що відправляються в групу.

Мережева операційна система (або контролер) в рамках концепції OpenFlow є основним, центральним ланкою програмно-комутованих мереж, в якому зосереджується вся функціональність для управління. Операційна система не сама управляє мережею, а тільки забезпечує програмний інтерфейс (API) для управління їй. Таким чином, фактично рішення задач управління мережею виконується за допомогою додатків, реалізованих на основі API мережевої операційної системи.

Потрібно відзначити, що програмний інтерфейс повинен бути досить загальним для того, щоб підтримувати досить широкий спектр додатків для вирішення завдань управління мережею. На відміну від традиційного тлумачення терміна СОС (Мережева Операційна Система) як операційної системи інтегрованої зі стеком мережевих протоколів, в даному випадку під мережевою операційною системою розуміється програмна система, що забезпечує моніторинг, доступ, управління, ресурсами всієї мережі, а не конкретного вузла.

Мережева операційна система формує дані про стан всіх ресурсів мережі і забезпечує доступ до них для додатків управління.

API мережевої операційної системи має такі основні особливості:

1) API мережевої операційної системи надає можливість створювати додатки на основі централізованої моделі програмування, тобто додатки пишуться так, як ніби вся мережа представлена ​​на одній машині (тобто, можна використовувати алгоритм Дейкстри для обчислення найкоротшого шляху, а не Беллмана-Форда). Це вимагає підтримки централізованого стану мережі.

Об'єктом управління мережевої операційної системи є один або кілька OpenFlow комутаторів. Контролер, як правило, працює на підключеному до мережі сервері, і може бути або один для всього набору OpenFlow комутаторів в мережі, по одному для кожного комутатора або по одному для кожного набору комутаторів. Контролер забезпечує інтерфейс для створення, редагування, видалення, управління конфігурацією таблиць потоків в OpenFlow комутаторах. Управління комутатором здійснюється процесом, запущеним на контролері.

Одночасна робота декількох контролерів OpenFlow в одній SDN мережі поки не підтримується.

Віртуалізація в SDN