ПКС-контроллеры с открытым кодом

от автора

Мы уже раньше писали про историю разработки software defined networks/SDN, про первый коммерческий SDN-проект – компанию Nicira Networks (почитать можно здесь ) и общий принцип работы программно-конфигурируемых сетей (читать здесь).
В самом общем смысле суть программно-конфигурируемых сетей/ПКС заключается в разделение уровня управления сетевыми устройствами (например, определение маршрута и качества передачи данных) от уровня передачи данных (т.е. пересылка пакета с одного порта на другой согласно таблице коммутации). В этом случае управление передачей данных происходит с помощью специального программного обеспечения, так называемого контроллера, работающего на отдельном компьютере.


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

NOX:
image
первый OpenFlow контроллер. NOX был разработан инженерами Nicira Networks параллельно с протоколом OpenFlow. Первоначально был написан с поддержкой двух языков: C++ и Python. В 2008 г. NOX был опубликован под лицензией GPL и с тех пор этот контроллер является базовым для многих научно-исследовательских групп, которые только приступают к изучению SDN. NOX ориентирован на дистрибутивы Linux (в частности Ubuntu 11.10 и 12.04, но также возможно использование на Debian и RHEL 6). Содержит сервисы для построения топологии сети и L2-L3 коммутации.
В процессе тестирования выяснилось, что поддержка двух языков сильно сказывается на производительности, поэтому часть, которая отвечает за Python, вытащили в отдельный проект, который позже назвали POX.
Релиз: 2008 г.

POX:
image
контроллер POX разработчики называют «младшим братом» NOX. Если при разработке NOX основной целью была высокая производительность, то POX в первую очередь направлен на обучение и исследования. По своей сути POX – это платформа для быстрой разработки и прототипирования ПО управления сетью. Этот контроллер написан на Python, его легко запустить на Window, Linux и Mac OS. К примеру, исследовательская группа в Стэнфорде использует POX для исследования ключевых проблем ПКС. POX находится в стадии активного развития: все удачные идеи постоянно перемещаются из лабораторных экспериментов в официальные релизы контроллера POX (по крайней мере так утверждают его разработчики из Стэнфорда).
POX поддерживает те же компоненты, графический интерфейс, средства визуализации как и NOX.
Релиз: июнь 2011 г.

Если вы пока ничего не знаете о технологии ПКС/SDN и протоколе OpenFlow, но хотите начать его исследовать/изучить/поэксперементировать, вы лучше начать именно с POX.
NOX и POX были разработаны и поддерживаются в основном 3 инженерами: Murphy McCauley, Amin Tootoonchian и Kyriakos Zarifis. Есть очень понятный OpenFlow Tutorial

Beacon:
image
это достаточно быстрый, кросс-платформенный, модульный OpenFlow контроллер на Java. Этот контроллер разрабатывается уже более двух лет. Beacon используется во многих научно-исследовательских проектах и тестовых внедрениях/развертываниях. Beacon применяется в экспериментальном ЦОДе Стэнфорда, в котором он управляет 100 виртуальными и 20 физическими коммутаторами
Beacon написан на Java и работает на многих платформах, начиная от высокопроизводительных многоядерных Linux-серверов до смартфонов на Android. Разработчик контроллера — Дэвид Эриксон, ученик Ника МакКеона, Стенфорд. Официальный сайт Beacon
Релиз: сентябрь 2011 г.

Trema: opensource контроллер, разработанный в NEC. Написан на Ruby и C. В настоящий момент Trema поддерживает протокол OpenFlow только версии 1.0.
Базовый дистрибутив Trema (можно скачать здесь) включает все исходные коды, необходимые для разработки вашего собственного контроллера OpenFlow.
Релиз: август 2011 г.

С контроллером Trema лично у нас теперь связаны самые «теплые» воспоминания. В пятницу 15 февраля в Центре прикладных исследований компьютерных сетей пройдет специальный семинар по сетевым операционным системам. Перед ним мы решили сделать голосовалку на определение лучшего контроллера. Голосовалка здесь. В ночь с 10 на 11 февраля пришли японцы и накрутили голоса за Trema. Разработчики из BigSwitch, которые активно голосовали за свой FloodLight сильно огорчились/обиделись, немного пошумели, поругались на японцев. Не смотря на то, что после накрутки в почти 1000 голосов японцами голосование не имело смысла продолжать, голосовалку мы решили не закрывать. Но зато выяснили, что (1) японцы самые активные и (2) лучше им не доверять.

Maestro: это операционная система, разработанная в Rice University. Maestro предоставляет интерфейсы для реализации модульных приложений управления сетью для доступа и изменения состояния сети, а также координации их взаимодействия. Несмотря на то, что этот проект направлен на создание OpenFlow контроллера, Maestro не ограничивается только OpenFlow-сетями. Среда программирования Maestro предоставляет интерфейсы для добавления новых пользовательских компонентов по управлению сетью.
Кроме того, Maestro пытается использовать параллелизм в пределах одной машины для улучшения пропускной способности системы. Разработчики заявляют основными свойствами Maestro портативность и масштабируемость. Maestro разработана на Java (и сама платформа, и ее компоненты), является универсальной для различные ОС и архитектур.
Официальный сайт Maestro
Релиз: декабрь 2011 г.

Вот любопытный тест на производительность NOX, Beacon и Maestro (правда довольно старый — май 2011 г.). Мы тоже сейчас проводим тестирование, результаты тестирования выложим на Хабре.

FloodLight:
image
это контроллер корпоративного уровня, разработан на основе котроллера Beacon. FloodLight написан на Java и имеет лицензию Apache. Этот контроллер разрабатывается Big Switch Networks. FloodLight также как и другие контроллеры на Java является модульным, что очень удобно для разработчиков. Здесь и здесь есть примеры его развертывания. FloodLight поддерживает широкий спектр виртуальных и физических коммутаторов, способен поддерживать смешанные OpenFlow сети и сети традиционной архитектуры. Этот контроллер имеет татический Flow Pusher API, который способствует эффективному управлению сетью.
Релиз: январь 2012 г.

FlowER: один из немногих контроллеров, написанных на языке Erlang, созданный компанией Ericsson и наиболее предпочитаемый в мире сервис-провайдеров благодаря своей надежности, отказоустойчивости и простоты создания распределенных параллельных систем. Erlang также имеет своих поклонников в мире облачных вычислений, в первую очередь Amazon и Google. Если посмотреть на список контроллеров с открытым кодом (а их около 30), мы видим разнообразие в языках программирования с C++ и Python до Java и даже на Javascript (node.js).
Официальный сайт FlowER с дистрибутивами
Релиз: март 2012 г.

Mul: разработан на C, имеет многопоточную инфраструктуру на уровне ядра. Он поддерживает многоуровневый интерфейс для сетевых приложений. Главной задачей при разработке этого контроллера было обеспечение производительности и надежности, что необходимо при развертывании критически важных сетей.
Контроллер с открытым кодом MuL является базой для коммерческого контроллера Kulcloud Networks (Южная Корея). Он был предоставлен компанией в открытый доступ и до сих пор активно ею поддерживается. Несколько дней назад вышла версия 2.0
Релиз: май 2012 г.

Один из самых свежих трендов в SDN/OopenFlow – создание распределенных контроллеров. Развернутые в настоящее время небольшие сегменты ПКС поддерживаются с помощью единственного контроллера, который в свою очередь имеет ряд существенных недостатков, а именно:
— Проблема масштабируемости контроллера, а именно проблема увеличения задержек для большой сети из-за того, что контроллер не справляется с нагрузкой.
— Проблема надежности. Контроллер является единой точкой отказа, т.е. отказ контроллера означает отказ всей сети.
Таким образом, для решения этих проблем исследователи и разработчики в области ПКС пришли к выводу о необходимости физически распределенного уровня управления, сохраняя его логическую централизацию.
В этом посте уже итак слишком много информации, поэтому обзор распределенных контроллеров и результаты тестирования перечисленных контроллеров сделаем отдельными постами.

ссылка на оригинал статьи http://habrahabr.ru/post/169403/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *