Построить топологию и проверить отказоустойчивость: подборка open source решений для эмуляции сетей

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

Фотография: 2H Media / Unsplash.com

Фотография: 2H Media / Unsplash.com

Containerlab

Платформу Containerlab разработали инженеры Nokia и распространяют по лицензии BSD-3-Clause. Она позволяет строить виртуальные сетевые лаборатории на базе контейнеров Docker. Управление окружением происходит в специальном CLI.

Решение поддерживает работу со множеством сетевых операционных систем — например, Nokia SR-Linux, Arista cEOS, Cisco XRd, Juniper cRPD. В то же время утилита умеет объединять контейнеры и виртуальные машины в единую топологию. Для этого расширение vrnetlab «заворачивает» обычную ВМ внутрь контейнера. Узлы, которым необходимы TLS-сертификаты, получают их автоматически при запуске эмуляции.

Разработчики утилиты также предлагают ряд заготовок для быстрой развертки полнофункциональных сетевых лабораторий. Среди других преимуществ Containerlab — простая настройка контейнеров и широкие возможности автоматизации. Один из пользователей отметил быстрое создание файла инвентаризации Ansible и поддержку фреймворка Nornir, упрощающего управление сетевыми устройствами. Так, с помощью Containerlab он воссоздал топологию с четырьмя маршрутизаторами на базе протоколов OSPF (Open Shortest Path First) и BGP (Border Gateway Protocol).

Mininet

Позволяет строить простые сети для интерактивной разработки и тестирования сетевого окружения на OpenFlow и SDN. Что интересно, настройки контроллеров на базе OpenFlow можно мигрировать на физическое оборудование с минимальными модификациями.

Узлы сети в Mininet представляют собой bash-процессы, запущенные в сетевом пространстве имён. Такой подход позволяет изолировать хосты на одной машине друг от друга, но при этом каждый из них имеет собственный интерфейс. Еще одна фишка утилиты — многопользовательский режим. Так, сразу несколько специалистов могут редактировать одну топологию. В то же время решение поддерживает Python API и позволяет строить кастомизированные модели.

Инструмент представили исследователи из Стэнфордского университета. Изначально его применяли для обучения студентов, но со временем проект вышел за пределы вуза, и теперь его используют крупные организации — например, IBM. В прошлом году на его основе вышла утилита для симуляции сетей Kubernetes. В ней рабочие узлы представляют собой хосты Mininet, а поды и контейнеры — сетевые пространства имен.

Mininet опубликован под лицензией BSD-3-Clause.

Kathará

Инструмент продолжает идеи сетевого эмулятора Netkit. Его разработала группа инженеров из Третьего римского университета (Roma Tre), занимающихся изучением сетей и аспектов информационной безопасности. Kathará распространяют по лицензии GPL-3.0, и решение получает обновления в среднем раз в несколько месяцев.

Kathará позволяет моделировать виртуальные сети на базе контейнеров Docker или кластеров Kubernetes. Поддерживает платформы Windows, MacOS, Linux, технологии SDN, NFV (Network function virtualization), а также BGP и OSPF. Репозиторий содержит готовые Docker-образы на Debian 11 и для архитектур AMD64 и ARM64. Они содержат пакеты ПО для маршрутизации — например, Quagga, FRRouting, P4 и OpenVSwitch.

В целом Kathará упрощает моделирование топологий благодаря сетевым сценариям. Они представляют собой директории с файлом топологии (lab.conf) и файлами конфигураций для каждого сетевого устройства. Для написания собственных сценариев можно использовать Python API. Работать с инструментом можно в командной строке. Но есть и графический интерфейс в виде дополнительного клиента Netkit-Lab-Generator.

IMUNES

С помощью этого решения можно развернуть сотни виртуальных узлов на одной физической машине. Все благодаря делению ядра Linux или FreeBSD на легковесные виртуальные ноды. В то же время IMUNES позволяет запустить на виртуальной машине полноценные UNIX-приложения — например, генераторы трафика и серверы приложений.

Проект выпустили под лицензией CC BY 4.0 при поддержке специалистов из хорватской телеком-компании, Калифорнийского университета в Беркли, подразделения Boeing, организации FreeBSD Foundation, а также Министерства науки, образования и спорта Хорватии. Как отмечают разработчики, сейчас IMUNES применяют для тестирования продуктов в Ericsson Nikola Tesla, а также в лабораториях Загребского университета.

Фотография: Giorgio Grani / Unsplash.com

В целом инструмент достаточно старый, его обновления выходят раз в несколько лет. Так, разработчики долгое время планировали добавить поддержку сразу нескольких интернет-протоколов на одном узле, чтобы виртуальный сервер мог одновременно работать с IPv4 и IPv6. Такая схема актуальна в условиях дефицита IPv4-адресов и продолжающегося перехода на новый стандарт, о чём мы уже писали на хабре.

CORE

Представляет собой форк симулятора IMUNES от инженеров из Boeing. Он позволяет разворачивать сетевые лаборатории на основе контейнеров, а также подключать моделируемую топологию к физической сети. CORE работает на Linux и FreeBSD, а для конфигурирования виртуальной сети предусмотрены XML-файлы и скрипты на Python.

Сами разработчики позиционируют свое решение как инструмент для исследования сетей и протоколов, разработки демонстрационных стендов, тестирования приложений и платформ. В 2018 году команда Boeing открыла исходный код по лицензии BSD-2-Clause. Сейчас эмулятор используют в различных исследованиях, связанных с IoT-сетями.

Пользователи инструмента отмечают удобный графический интерфейс и простую настройку эмуляции. Утилита также умеет моделировать работу сетей, состоящих из мобильных и IoT-устройств, а также подключенных автомобилей. Но некоторые сталкиваются с трудностями, например, в работе пакетов FRR (Free Range Routing).

Toxiproxy

Решение позволяет изучить отказоустойчивость решений в сетевой среде — имитирует аномалии и сбои: создает задержку при получении ответа от сервера, изменяет пропускную способность и прочее. Инструмент состоит из двух элементов: TCP-прокси и клиента, взаимодействующего с ним по HTTP. Писать скрипты проверок разработчики предлагают с помощью Ruby API. Клиент подключается к демону Toxiproxy по HTTP API.

Среди преимуществ — возможность интеграции с CI-платформами, средами тестирования и разработки. Из недостатков симулятора отмечают отсутствие поддержки конфигурационных файлов в формате JSON и веб-интерфейса для удалённого доступа.

Инструмент разработала компания Shopify, которая развивает крупную e-commerce платформу. Его распространяют по лицензии MIT, а апдейты выходят несколько раз в год.

Cloonix

Инструмент позволяет моделировать сети на базе виртуальных машин и контейнеров: первые можно развернуть с помощью модуля KVM, вторые — с помощью Podman и crun. Cloonix поддерживает только Linux-системы. Согласно документации, утилита заточена под развертку демо-сетей, проведение антирегрессионного тестирования сетевого ПО и экспериментов с ним. Линки между узлами основаны на Open vSwitch — программном многоуровневом коммутаторе для работы с гипервизорами. Его инстанс запущен внутри отдельного пространства имен, поэтому для соединения узлов не нужны сетевые мосты.

Из преимуществ симулятора выделяют наглядный интерфейс, а также механику drag-and-drop, которая помогает быстро построить топологию сети. Первые упоминания проекта относятся ещё к 2012 году, но утилиту продолжают развивать — обновления выходят примерно каждые два-три месяца. Ее можно использовать по лицензии AGPLv3.

Что еще почитать в нашем блоге на Хабре:

© Habrahabr.ru