В программно-конфигурируемой сети (SDN) происходит разделение плоскости передачи и управления данными, позволяющее осуществить программное управление плоскостью передачи, которое может быть физически или логически отделено от аппаратных коммутаторов и маршрутизаторов. Подобный подход дает большое количество плюсов:
- Возможность видеть топологию всей сети;
- Возможность конфигурации всей сети в целом, а не отдельных единиц оборудования;
- Возможность производить независимое обновление оборудования в сети;
- Возможность контролировать всей сети из высокоуровневого приложения.
SDN сети
То есть, основное отличие программно-конфигурируемых сетей - делегация задачи вычисления маршрутов контроллеру (плоскость управления) и оставить функцию передачи пакетов (плоскость передачи данных) на отдельных устройствах (коммутаторы OpenFlow) , что снизит нагрузку на маршрутизатор и увеличит его производительность.
Для оценки функциональности SDN-сети с элементами NFV можно использовать два основных подхода, со своими достоинствами и недостатками:
Метод | Достоинства | Недостатки |
---|---|---|
Эмуляция | Высокая точность, возможность использования настоящего ПО | Возможная несовместимость конфигурации с реальным оборудованием |
Построение сети на реальном оборудовании | Высокая точность результатов | Высокая стоимость |
С началом развития в сфере SDN-сетей появилось два эмулятора SDN-сетей, которые в добавок поддерживают симуляцию (возможность тестирования сети, часть оборудования в которой реальна и часть - эмулирована).
Рассмотрим эмуляторы подробнее.
Mininet
Эмулятор, находящийся в свободном доступе, большая часть которого написана на языке Python. Работает с “легковесной” виртуализацией, то есть вся эмулируемая сеть реальна, в том числе и конечные виртуальные машины. Есть возможность подключения любых виртуальных коммутаторов и контроллеров.
Достоинства | Недостатки |
---|---|
Открытый код, бесплатность, быстродействие, поддержка всех контроллеров SDN и протоколов OpenFlow вплоть до 1.3, большое количество обучающих видео | Высокая сложность, необходимо знание Python и Linux, отсутствие полноценного графического интерфейса |
Estinet
Эмулятор, все права на который имеет компания Estinet, но для студентов и всех желающих попробовать есть свободный доступ на месяц. Есть удобный графический интерфейс для построения топологии сети, редакции свойств оборудования и запуска эмуляции.
Достоинства | Недостатки |
---|---|
Наглядность, простота настройки и установки, возможность эмуляции LTE и Wi-Fi сетей | Закрытость, малое количество обучающих статей и видео, низкая производительность работы, более высокая сложность настройки при использовании не встроенного контроллера |
Ниже приведена часть программного кода на языке Python для построения сети в эмуляторе Mininet:
# Инициализация топологии
Topo.__init__( self, **opts )
# Добавление узлов, первые - коммутаторы
S1 = self.addSwitch( 's0' ) S2 = self.addSwitch( 's1' ) S3 = self.addSwitch( 's2' ) S4 = self.addSwitch( 's3' ) S5 = self.addSwitch( 's4' ) S6 = self.addSwitch( 's5' ) S7 = self.addSwitch( 's6' ) S8 = self.addSwitch( 's7' ) S9 = self.addSwitch( 's8' ) S10= self.addSwitch( 's9' ) S11= self.addSwitch( 's10')
# Далее - рабочие станции(виртуальные машины)
H1= self.addHost( 'h0' ) H2 = self.addHost( 'h1' ) H3 = self.addHost( 'h2' ) H4 = self.addHost( 'h3' ) H6 = self.addHost( 'h5' ) H7 = self.addHost( 'h6' ) H8 = self.addHost( 'h7' ) H9 = self.addHost( 'h8' ) H10 = self.addHost( 'h9' ) H11 = self.addHost( 'h10' )
# Добавление каналов связи между коммутатором и рабочей станцией
self.addLink( S1 , H1 ) self.addLink( S2 , H2 ) self.addLink( S3 , H3 ) self.addLink( S4 , H4 ) self.addLink( S7 , H7 ) self.addLink( S8 , H8) self.addLink( S9 , H9) self.addLink( S10 , H10) self.addLink( S11 , H11)
# Добавление каналов связи между коммутаторами
self.addLink( S1 , S2, bw=1, delay='0.806374975652ms') self.addLink( S1 , S3, bw=1, delay='0.605826192092ms') self.addLink( S2 , S11, bw=1000, delay='1.362717203ms') self.addLink( S3 , S10, bw=1000, delay='0.557936322ms') self.addLink( S4 , S5, bw=1000, delay='1.288738ms') self.addLink( S4 , S7, bw=1000, delay='1.1116865ms') self.addLink( S5 , S6, bw=1000, delay='0.590828707ms') self.addLink( S5 , S7, bw=1000, delay='0.9982281ms') self.addLink( S6 , S10, bw=1000, delay='1.203263ms') self.addLink( S7 , S8, bw=1000, delay='0.2233403ms') self.addLink( S8 , S9, bw=1000, delay='1.71322726ms') self.addLink( S8 , S11, bw=1000, delay='0.2409477ms') self.addLink( S9 , S10, bw=1000, delay='1.343440256ms') self.addLink( S10 , S11, bw=1000, delay='0.544934977ms')
Сравнение контроллеров для построения сети
В данный момент, существует большое количество платных и бесплатных(открытых) контроллеров. Все нижеперечисленные можно скачать и установить на домашнюю систему или виртуальную машину. Рассмотрим самые популярные открытые контроллеры и их плюсы и минусы:
- NOX - один из первых контроллеров, написан на языке C++;
- POX - контроллер, похожий на NOX и написанный на языке Python;
- OpenDayLight- контроллер, поддерживаемый многими корпорациями, написан на языке Java и постоянно развивающийся;
- RunOS- российская разработка от Центра Прикладного Исследования Компьютерных Сетей (ЦПИКС), имеет графический интерфейс, подробную документацию и заявлена самая высокая производительность.
В таблице ниже рассмотрим плюсы и минусы каждого из контроллеров:
Название контроллера | Достоинства | Недостатки |
---|---|---|
NOX | Скорость работы | Низкое количество документации, необходимость знания C++ |
POX | Проще обучиться, много документации | Низкая скорость работы, необходимость знания Python, сложная реализация совместимости с NFV |
OpenDayLight | Наличие графического интерфейса, поддержка VTN-сетей(NFV), наличие коммерческих продуктов на базе данного контроллера(Cisco XNC) | Сложность в использовании, сложная установка |
RunOS | Высокая производительность, Российская разработка, Открытый код, Наличие графического интерфейса | Ранняя версия, возможные проблемы в эксплуатации по причине сырости продукта. |