Overview of SDN controllers (rus)

by Sasha Shkrebets last modified Mar 06, 2023 01:02 PM
В этом уроке мы рассмотрим различные контроллеры SDN. Я постараюсь дать общее представление о каждом контроллере, включая концепции, лежащие в основе дизайна контроллера.

В этом уроке мы рассмотрим различные контроллеры SDN. Я постараюсь дать общее представление о каждом контроллере, включая концепции, лежащие в основе дизайна контроллера.
Добро пожаловать обратно.
В этом уроке мы рассмотрим различные контроллеры SDN.
Я постараюсь дать общее представление о
каждый контроллер, включая концепции, лежащие в основе конструкции контроллера.
Его архитектура и модель программирования.
Я также расскажу о плюсах и минусах каждого контроллера, чтобы помочь вам
подскажите какой контроллер лучше
в соответствии с вашими потребностями в конкретной ситуации.
И мы поговорим об идеальных ситуациях для каждого контроллера.
Существует множество различных SDN-контроллеров, о которых мы и поговорим
первые четыре в этом списке в этом уроке сегодня.
Позже в ходе курса мы также рассмотрим некоторые из
другие контроллеры, перечисленные здесь, включая Piretic и Kinetic.
Есть много соображений при выяснении того, какой контроллер использовать.
Одним из них является выбор языка программирования, который иногда может,
но не всегда влияют на работу самого контроллера.
Также важно, сколько времени потребуется, чтобы понять, как пользоваться контроллером.
Если вы пытаетесь сделать что-то просто быстрое и грязное для прототипирования, то
возможно, вы захотите использовать контроллер с гораздо более легкой кривой обучения.
Еще одна вещь, которую следует учитывать, это пользователь
база и поддержка сообщества за контроллером.
Наконец, разные контроллеры имеют разные фокусы с точки зрения
поддерживаемых южных API.
Северный API или уровень политики, независимо от того,
не их поддержка открытого стека или многопользовательских облачных сред.
И был ли контроллер
предназначены для использования в образовании, исследованиях или производстве.
Давайте теперь посмотрим на первые четыре контроллера в этом списке.
NOX был контроллером OpenFlow первого поколения.
Он с открытым исходным кодом, стабилен и довольно широко используется.
Есть два вкуса NOX.
Один, Nox-Classic, был оригинальным NOX и был реализован на C++ и Python.
Он больше не поддерживается.
Новый NOX — только C++.
Он имеет быструю и чистую кодовую базу, хорошо поддерживается и поддерживается.
Вы можете найти NOX по URL внизу слайда здесь.
В NOX пользователи реализуют управление на C++.
Сам NOX поддерживает OpenFlow версии 1.0 и форк
NOX под названием CPqD поддерживает версии 1.1, 1.2 и 1.3.
В NOX программист пишет управляющую программу, которая регистрируется на определенные события.
Например, прибытие пакетов.
Или меняется топология.
И программист, чем пишет событие
обработчики, которые реагируют на эти разные события.
Возможно, вы захотите использовать NOX, если вы уже знаете C++.
И вы готовы использовать низкоуровневые средства и семантику
OpenFlow, такие как функции, которые напрямую изменяют таблицу потоков переключения.
Еще одна веская причина использовать NOX — если вам нужна хорошая производительность.
POX — это, по сути, NOX в Python.
В настоящее время поддерживается только версия 1.0.
Преимущество POX в том, что он широко используется, поддерживается
и поддерживается, и его относительно легко читать и писать код.
Основным недостатком POX является производительность.
POX — это основной контроллер, который мы будем использовать в этом курсе.
В основном потому, что он имеет относительно легкое обучение
кривой относительно некоторых других контроллеров.
И есть несколько интересных политических слоев, таких как
как Pyretic, которые построены поверх POX.
Возможно, вы захотите использовать POX, если вы уже знаете или
может быстро выучить Python и не беспокоиться о производительности контроллера.
Он обычно используется в исследованиях, для
экспериментов и демонстраций, а также
для изучения понятий, таких как понятия, которые мы изучаем в этом курсе.
Ryu — это контроллер Python с открытым исходным кодом.
Он поддерживает все версии OpenFlow от 1.0.
до 1.4, а также различные расширения мистерии.
Он также имеет интеграцию с OpenStack, в некотором смысле
она призвана стать операционной системой для SDN.
И его главными преимуществами являются поддержка
все эти версии OpenFlow и его интеграция с OpenStack.
Недостаток Рю по отношению к некоторым
из других контроллеров коммерческого класса — производительность.
Floodlight — это контроллер Java с открытым исходным кодом, поддерживающий OpenFlow 1.0.
Это форк контроллера Beacon Java OpenFlow.
И поддерживается Big Switch.
Некоторые из преимуществ включают хорошее
документация и интеграция с REST API.
Это также производственный уровень, а также поддержка и
обеспечивает поддержку OpenStack и Multi-Tenant Clouds.
Тем не менее, он имеет довольно крутую кривую обучения.
Вы можете использовать Floodlight, если знаете Java, если вам нужен рабочий уровень
производительность и поддержка, или если вы будете использовать
REST API для взаимодействия с контроллером.
Еще один контроллер, который находится в активной разработке, — OpenDaylight.
Цель проекта OpenDaylight — предоставить общую промышленную поддержку.
платформа с надежным, расширяемым открытым исходным кодом
кодовая база и общие абстракции для северных возможностей.
OpenDaylight имеет много преимуществ, включая широкое признание в отрасли и
интеграция с OpenStack и другими типами облачных приложений.
Однако он чрезвычайно сложен.
Документация довольно скудная.
И есть очень 

крутая кривая обучения.
Сложность и крутая кривая обучения OpenDaylight — две причины
что мы не используем его в качестве основного контроллера для этого курса.
Однако в этом году я добавил лекцию, чтобы охватить основы
OpenDaylight на основе руководства, предоставленного SDN Hub.
Об этом мы поговорим на следующем уроке.
Еще один отличный коммерческий контроллер, о котором стоит упомянуть, — это HP VAN.
И OpenDaylight, и HP VAN изначально основывались на исходном коде
контроллер под названием Beacon, и, следовательно, имеют много
сходство как с Биконом, так и друг с другом.
Возможно, вы захотите использовать OpenDaylight, если знаете Java.
Если вам нужна производительность и поддержка производственного уровня.
Если вам нужна поддержка облачных приложений, OpenStack и так далее.
Если вам нужны модульные функции.
Например, возможность подключения различных типов функций
включая функции северного и южного направления в один и тот же контроллер.
Или если вам нужны приложения, которые
уже поддерживаются или реализуются поставщиками.
Мы еще поговорим об этих модулях и
приложения, которые поддерживаются вендорами, на следующем уроке.
Стоит упомянуть разрабатываемую библиотеку под названием LoxiGen.
Который фактически генерирует язык OpenFlow
конкретные привязки, для разных контроллеров.
Идея состоит в том, что можно было бы предоставить описание проводного протокола.
Протокола управления.
И на выходе будут привязки для конкретных протоколов на разных языках.
LoxiGen в настоящее время генерирует привязки OpenFlow версии 1.0 к 1.31 в
C для Indigo, на Java для Floodlight, Python для OFTest.
А также генерирует привязку для Wireshark и Lua.
Теоретически одним из преимуществ LoxiGen является
что он должен поддерживать возможность развития множества различных контроллеров.
Поскольку проводной протокол OpenFlow продолжает развиваться, теоретически можно просто
используйте LoxiGen для обновления версии
протокол OpenFlow, поддерживаемый контроллером.
В общем, есть много разных контроллеров.
И ваш выбор контроллера может зависеть
о ваших потребностях, вашем языке и так далее.
До сих пор мы сосредоточились главным образом на поддержке контроллером
различные реализации Southbound API, такие как разные версии OpenFlow.
Однако стоит отметить, что API-интерфейсы Southbound
становятся намного шире, чем просто OpenFlow.
И мы поговорим об этом подробнее на следующем уроке, когда мы
поговорим об OpenDailight, который поддерживает гораздо более широкий спектр API-интерфейсов Southbound.
Позже в курсе мы поговорим
о различных контроллерах, появляющихся с поддержкой различных
виды северных API-интерфейсов или слоев политик, которые находятся поверх этих контроллеров.

Navigation