SDN-дайджест – шість емуляторів з відкритим вихідним кодом
Минулого разу ми зробили добірку опенсорсних SDN-контролерів. Сьогодні на черзі відкриті емулятори SDN-мереж. Усіх, кому це цікаво, запрошуємо під кат.
Інструмент дозволяє підняти програмне керовану мережу однією машині (віртуальної чи фізичної). Достатньо ввести команду: $ sudo mn. За словами розробників, Mininet добре підходить для розгортання тестових середовищ.
Наприклад, викладачі Стенфорда (де й розробили Mininet) використовують утиліту під час практичних занять в університеті. Вона допомагає прищепити учням навички роботи з мережами. Деякі із завдань та демок можна знайти у репозиторії на GitHub.
Mininet також підходить для тестування кастомних топологій SDN. Віртуальна мережа розгортається з усіма світильниками, контролерами та хостами, а потім її працездатність перевіряється за допомогою Python-скриптів. Потім параметри переносяться з Mininet в реальну мережу.
З недоліків розв'язання експерти виділяють відсутність підтримки Windows. Крім того, Mininet не підійде для роботи з масштабними мережами, оскільки емулятор запускається на одній машині - може вистачити апаратні ресурси.
Mininet випущений під ліцензією BSD Open Source та активно розвивається. Зробити свій внесок можуть усі охочі — про те, як це зробити, є інформація на офіційному сайті проекту и у репозиторії.
Серед переваг утиліти можна виділити підтримку сокетів та бібліотеки Pcap для роботи з іншими інструментами (на зразок Wireshark), а також чуйне комьюніті.
До недоліків можна віднести відносно слабку візуалізацію. За відображення топології викинутоNetAnim. Крім того, ns-3 підтримує не всі контролери SDN.
Цей SDN-емулятор будується з урахуванням двох попередніх інструментів — Mininet і ns-3. Він поєднує сильні сторони кожного з них. Щоб змусити рішення працювати разом, OpenNet використовує байндинг бібліотеку на Python.
Таким чином, Mininet в OpenNet відповідає за емуляцію OpenFlow-свитків, надання CLI та віртуалізацію. Що стосується ns-3, то він емулює ті моделі, яких немає в Mininet. Посібник з роботи можна знайти на GitHub.Там же є додаткові посилання на матеріали на тему.
Це форк Mininet для роботи з контейнерами додатків. Docker-контейнери виступають як хостів в емульованих мережах. Рішення створювалося, щоб дозволити розробникам експериментувати з хмарними, периферійними, туманними обчисленнями та NFV. Систему вже застосували автори SONATA NFV для створення системи оркестрування у віртуалізованих 5G-мережах. Containernet виступив ядром платформи емуляції NFV.
Легковажна бібліотека, яка допомагає оперативно створювати прототипи SDN-мереж. API-інструмент, написаний на Go, дозволяє емулювати будь-яку мережну топологію Сама бібліотека «важить» мало, за рахунок чого встановлюється і працює швидше за аналоги. Також Tinynet можна інтегрувати із Docker-контейнерами.
Інструмент не підходить для емуляції масштабних мереж через обмежену функціональність. Але нагоді при роботі над невеликими особистими проектами або швидкого прототипування.
Приклади реалізації та команди для установки Tinynet доступні в GitHub-репозиторії.
Цей інструмент дозволяє використовувати Mininet на декількох фізичних машинах і працювати з масштабними SDN-мережами. Кожна з машин Робітники — запускає Mininet та емулює свою частину спільної мережі. Світчі та хости зв'язуються один з одним за допомогою GRE-тунелів. Для керування компонентами такої мережі MaxiNet надає API.
MaxiNet допомагає швидко масштабувати мережі та оптимізувати розподіл ресурсів. Також у MaxiNet є функції моніторингу, вбудований CLI та можливість інтеграції з Docker. Однак інструмент не вміє емулювати роботу одного світильника для кількох машин.
Вихідний код проекту є на GitHub. Гайд по установці та керівництво для швидкого старту можна знайти на офіційній сторінці проекту.