Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RUNOS OpenFlow controller (ru)

6,972 views

Published on

This talk (in Russian) is about RUNOS OpenFlow controller publicly available at https://github.com/ARCCN/runos. Feel free to contact me if you have questions.

Published in: Software
  • Login to see the comments

RUNOS OpenFlow controller (ru)

  1. 1. RUNOS OpenFlow контроллер Александр Шалимов ЦПИКС, МГУ http://arccn.ru/ ashalimov@arccn.ru @alex_shali @arccnnews
  2. 2. Что такое SDN/OpenFlow? SDN = Software Defined Networking Основные принципы • Физическое разделение уровня передачи данных от уровня управления сетевых устройств. • Логически централизованное управление. • Программируемость. • Открытый единый интерфейс управления. Преимущества • Упрощение управления сетью (OPEX) • Удешевление оборудования (CAPEX) • Разработка ранее недоступных сервисов Внедрения . . . “SDN means thinking differently about networking”
  3. 3. Основы ПКС (SDN/OpenFlow) A B • Неизвестный пакет отправляется на контроллер (OF_PACKET_IN). • Контроллер вычисляет лучший маршрут через всю сеть (с наименьшей стоимостью и удовлетворяющий политикам маршрутизации). • Соответствующие правила OpenFlow устанавливаются на коммутаторы + сразу и обратный маршрут (OF_PACKET_OUT/FLOW_MOD). A B A -> B OpenFlow контроллер хост/клиент хост/клиент коммутатор 1 коммутатор 2 коммутатор 3 коммутатор 4
  4. 4. Основы ПКС (SDN/OpenFlow) A B A • Неизвестный пакет отправляется на контроллер (OF_PACKET_IN). • Контроллер вычисляет лучший маршрут через всю сеть (с наименьшей стоимостью и удовлетворяющий политикам маршрутизации). • Соответствующие правила OpenFlow устанавливаются на коммутаторы + сразу и обратный маршрут (OF_PACKET_OUT/FLOW_MOD). • Динамическая переконфигурация в случае ошибки сети. B OpenFlow контроллер хост/клиент хост/клиент коммутатор 1 коммутатор 2 коммутатор 3 коммутатор 4
  5. 5. Методология сравнения контроллеров [1] • Производительность – максимальное количество запросов на обработку – время обработки запроса при заданной нагрузке • Масштабируемость – изменение показателей производительности при увеличении числа соединений с коммутаторами и при увеличении числа ядер процессора • Надежность, Безопасность [1] A. Shalimov, D. Zuikov, D. Zimarina, V. Pashkov, R. Smeliansky, "Advanced Study of SDN/OpenFlow controllers", Proceedings of the CEE-SECR '13: Central & Eastern European Software Engineering Conference in Russia, ACM SIGSOFT, October 23-25, 2013,
  6. 6. Результаты сравнения (2013) • Максимальная производительность 7 000 000 потоков в секунду. • Минимальное время задержки от 50 до 75 мкс. • Недостатки: – Надежность контроллеров вызывала вопросы – Производительность была не достаточна (DC >10M fps)
  7. 7. Архитектура ПКС-контроллера
  8. 8. Повышение производительности Самые ресурсоемкие задачи: • Взаимодействие с OpenFlow коммутаторами: – использование многопоточности; – учет загрузки нитей и перебалансировка. • Получение OpenFlow пакетов из канала: – чтение пакетов из памяти сетевой карты, минуя сетевой стек OS Linux; – переключение контекста; – виртуальные адреса.
  9. 9. In-kernel контроллер Контроллер был реализован в ядре ОС Linux [2] • Супер производительный – нет переключений контекста при сетевом взаимодействии – меньше времени на работу с виртуальной памятью • Но очень сложно разрабатывать свои приложения – Низкоуровневый язык программирования – Ограниченное число библиотек и средств отладки – Высокий риск “положить” всю систему [2] P. Ivashchenko, A. Shalimov, R. Smeliansky "High performance in-kernel SDN/OpenFlow controller", Proceedings of the 2014 Open Networking Summit Research Track, USENIX, March 3-5, 2014 Santa Clara, USA
  10. 10. Производительность (kernel) • Производительность равна 30M fps • Задержка 45us
  11. 11. Программный интерфейс к In-kernel controller User space Kernel space Applications Services OpenFlow Applications Services OpenFlow NOX, Pox, Floodlight, OpenDaylight, MUL, etc Applications Services OpenFlow ARCCN +: wide range of applications -: low performance +: fast performance -: no applications What is in the middle? Offload architecture: • Apps are in userspace • Frequently used services is in kernel (e.g., topo) • Communication interface +: wide range of applications +: fast performance [3] Shalimov A., Ivashchenko P. In‐kernel offloading of an SDN/OpenFlow Controller Proceedings of the Modern Networking Technologies (MoNeTec), IEEE, место издания Moscow, Russia, с. 27-29
  12. 12. Производительность (offload) I/O throughput (cbench + l2learning), fps Response time, us • Производительность равна 15M fps. • Задержка равна 50us.
  13. 13. Интерфейс программирования Memory API to the kernel: • /dev/ctrl – open kernel • ioctl() – subscribe to events • mmap() – get access to shared memory • poll() – read info from the kernel – POLLIN, POOLRDNORM, POLLRDBAND, POLLOUT • write() – flush output buffers l2 learning example code Интерфейс все равно сложный: • Низкоуровневый С • Приложения требуют явной синхронизации между собой • Даже не смотря на то, что теперь можно использовать стандартные библиотеки
  14. 14. RUNOS RUNOS = RUssian Network Operating System • Название – RuNOS [рунос] – акцент на российский – RunOS [ранос] – акцент на быстроту • Цель проекта – “Could an OpenFlow controller be both easy to develop applications for and also high performance?” – Разработать систему, которая будет удобна для разработки новых сетевых приложений – Помнить о быстроте, интеграция с решениями ЦПИКС – Объединить все внутренние разработки по приложениям, контроллерам и т.п.
  15. 15. Параметры запуска • Задается количество нитей контроллера – для взаимодействия со свитчами – для работы приложений • Список приложений – их параметры (poll-interval) – зафиксировать нить выполнения или выделить в монопольное пользование (pin-to-thread, own-thread) Config (json): “controller”: { “threads”: 4 }, “loader”: { “threads”: 3 }, “link discovery”: { “poll-interval” : 10, “pin-to-thread” : 2 }, “learning switch”: { } …
  16. 16. Архитектура Controller Trace Tree Workers Thread pool Инициализация контроллера: 1. Запуск нужного количества нитей 2. Запуск служебных компонент 3. Запуск приложений и распределение их по нитям 4. Определение порядка обработки событий приложениями Apps Logical pipelines
  17. 17. Особенности • Подписка на события – явно - packet_in – неявно – switch up/down, port_description, stats. • Два конвейра исполнения – run-to-completion • сортировка приложений при запуске на основе зависимостией – т.н. отложенное выполнение • Система разрешения конфликтов (генерация правил) – Расстановка приоритетов правил, объединение правил – LOAD, MATCH, READ абстракции
  18. 18. Реализация Ключевые слова: C++11, QT Основные сторонние компоненты: • libfluid project (_base, _msg) – для взаимодействия со свитчами и разбор OpenFlow 1.3 сообщений • libtins – разбор пакетов внутри OpenFlow сообщений • glog (google log) – логирование, многопоточное • tcmalloc (google performance tools) – альтернативная более быстрая реализация malloc/free • json11 – разбор конфигурационного файла • boost graph – Хранение топологии, поиск маршрута
  19. 19. Производительность • Не фокус данной реализации • Производительность libfluid равно 5M fps на 4-х нитях. • В будущем будет переход на in-kernel версию контроллера, как backend для взаимодействия с сетью
  20. 20. Описания релизов • Сейчас версия 0.2 – ядро контроллера – построение топологии – построение маршрута через всю сеть – первая версия системы генерации правил • Следующая версия 0.3 – Rest API – WebUI • 0.4 – Приложения ARP, DHCP – Оптимизация производительности … • 1.0 – Система управления корпоративной сетью EasyWay [4] • 2.0 – Интеграция с inkernel версией (прозрачно для приложений) [4] A. Shalimov, D. Morkovnik, S. Nizovtsev, R. Smeliansky EasyWay: Simplifying and automating enterprise network management with SDN/OpenFlow// 10th Central and Eastern European Software Engineering Conference in Russia, CEE-SECR 2014б, ACM SIGSOFT, Moscow, Russia.
  21. 21. Что осталось за кадром • Какие приложения востребованы – интеграция с традиционной сетью (MPLS) – интеграция с WiFi сетями – Динамическая маршрутизация с учетом QoS • Распределенный уровень управления • Варианты развертывания OpenFlow сетей • Большой список приложений для разработки – L2/L3 forwarding, QoS, multipath forwarding, network virtualization, anti-DDOS, monitoring, load balancer, ACL, firewall, authentication, SPAN,NAT, ARP, DNS, DHCP, BGP, verification and troubleshooting, WiFi, OpenStack • How to start? Документации по разработке первого приложения для RUNOS есть в репозитории.
  22. 22. Заключение • Линейка OpenFlow контроллеров: – От быстрых до программируемых • Проект RUNOS находится в открытом доступе – OpenFlow контроллер arccn.github.io/runos. • Приглашаем всех желающих присоединиться к разработке!
  23. 23. Видео об SDN • Немного юмора – SDN c разных точек зрения – http://www.youtube.com/watch?v=GRVygzcXrM0

×