SDN-дайджест — шесть эмуляторов с открытым исходным кодом

В прошлый раз мы сделали подборку опенсорсных SDN-контроллеров. Сегодня на очереди отрытые эмуляторы SDN-сетей. Всех, кому это интересно, приглашаем под кат.

SDN-дайджест — шесть эмуляторов с открытым исходным кодом/ Flickr / Dennis van Zuijlekom / CC

Mininet

Инструмент позволяет поднять программное управляемую сеть на одной машине (виртуальной или физической). Достаточно ввести команду: $ sudo mn. По словам разработчиков, Mininet хорошо подходит для развертки тестовых сред.

К примеру, преподаватели Стэнфорда (где и разработали Mininet) используют утилиту во время практических занятий в университете. Она помогает привить учащимся навыки работы с сетями. Некоторые из заданий и демок можно найти в репозитории на GitHub.

Mininet также подходит для тестирования кастомных SDN-топологий. Виртуальная сеть разворачивается со всеми свитчами, контроллерами и хостами, а затем её работоспособность проверяется с помощью Python-скриптов. Затем настройки переносятся из Mininet в реальную сеть.

Из недостатков решения эксперты выделяют отсутствие поддержки Windows. Кроме того, Mininet не подойдет для работы с масштабными сетями, так как эмулятор запускается на одной машине — может не хватить аппаратных ресурсов.

Mininet выпущен под лицензией BSD Open Source и активно развивается. Внести свой вклад могут все желающие — о том, как это сделать, есть информация на официальном сайте проекта и в репозитории.

ns-3

Симулятор для дискретно-событийного моделирования сетей. Изначально инструмент задумывался как образовательная утилита, однако сегодня он используется для тестирования SDN-окружений. Руководства о работе с ns-3 лежат на сайте с документацией проекта.

Среди преимуществ утилиты можно выделить поддержку сокетов и библиотеки Pcap для работы с другими инструментами (вроде Wireshark), а также отзывчивое комьюнити.

К недостаткам можно причислить относительно слабую визуализацию. За отображение топологии отвечает NetAnim. Кроме того, ns-3 поддерживает не все SDN-контроллеры.

Чтение по теме в нашем корпоративном блоге:

OpenNet

Этот SDN-эмулятор строится на базе двух предыдущих инструментов — Mininet и ns-3. Он объединяет сильные стороны каждого из них. Чтобы заставить решения работать вместе, OpenNet использует байндинг-библиотеку на Python.

Таким образом, Mininet в OpenNet отвечает за эмуляцию OpenFlow-свитчей, предоставление CLI и виртуализацию. Что касается ns-3, то он эмулирует те модели, которых нет в Mininet. Руководство по работе можно найти на GitHub.Там же есть дополнительные ссылки на материалы по теме.

SDN-дайджест — шесть эмуляторов с открытым исходным кодом
/ PxHere / PD

Containernet

Это — форк Mininet для работы с контейнерами приложений. Docker-контейнеры выступают в качестве хостов в эмулированных сетях. Решение создавалось, чтобы позволить разработчикам экспериментировать с облачными, периферийными, туманными вычислениями и NFV. Систему уже применили авторы SONATA NFV для создания системы оркестровки в виртуализированных 5G-сетях. Containernet выступил ядром платформы эмуляции NFV.

Установить Containernet можно с помощью гайда на GitHub.

Tinynet

Легковесная библиотека, которая помогает оперативно создавать прототипы SDN-сетей. API-инструмент, написанный на Go, позволяет эмулировать любую сетевую топологию. Сама библиотека «весит» мало, за счет чего устанавливается и работает быстрее аналогов. Также Tinynet можно интегрировать с Docker-контейнерами.

Инструмент не подходит для эмуляции масштабных сетей из-за ограниченной функциональности. Но пригодится при работе над небольшими личными проектами или быстрого прототипирования.

Примеры реализаций и команды для установки Tinynet доступны в GitHub-репозитории.

MaxiNet

Этот инструмент дает возможность использовать Mininet на нескольких физических машинах и работать с масштабными SDN-сетями. Каждая из машин — Workers — запускает Mininet и эмулирует свою часть общей сети. Свитчи и хосты связываются друг с другом при помощи GRE-туннелей. Для управления компонентами такой сети MaxiNet предоставляет API.

MaxiNet помогает быстро масштабировать сети и оптимизировать распределение ресурсов. Также в MaxiNet есть функции мониторинга, встроенный CLI и возможность интеграции с Docker. Однако инструмент не умеет эмулировать работу одного свитча для нескольких машин.

Исходный код проекта есть на GitHub. Гайд по установке и руководство для быстрого старта можно найти на официальной странице проекта.

Чтение по теме в нашем корпоративном блоге:

Источник: habr.com