Сети. Натурное моделирование
Сети. Натурное моделирование.
Содержание
1 Средства натурного моделирования
1.1 Принципы классификации
- Введём следующую классификацию на основе функциональности.
- Мультисистемные средства моделирования.
- Моностековые средства моделирования.
- Специализированные средства моделирования.
1.2 Мультисистемные средства моделирования
- Для реалистичного моделирования требуется использовать натурные модели разных вендоров.
- Образы оборудования можно получить в виде образов операционной системы.
- Для запуска таких образов требуется использование средств эмуляции процессора (QEMU, VirtualBox, vmWare).
1.2.1 GNS3
- Сайт: https://www.gns3.com/
- Документация: https://docs.gns3.com/
- Репозиторий:
- Лицензия: GPL-3.0
- Графический интерфейс [1].
- Интерфейс командной строки отсутствует.
- Поддерживает работу с образами виртуальных машин для разных сетевых систем.
- Интерфейс может быть как в виде отдельного приложения с графическим интерфейсом операционной системы (Qt), так и в виде встроенного web-интерфейса.
- Использует интерфейс вложенных виртуальных машин.
- Используется несколько типов виртуальных машин:
- Dynamips: для эмуляции Cisco IOS;
- QEMU: для запуска виртуальных машин (Cisco ASAv, Juniper vSRX);
- Docker: интеграция контейнеров.
- Изначально основным эмулятором был эмулятор Dynamips.
- GNS3 имеет крайне низкий уровень входа (в основном из-за графического интерфейса).
- GNS3 вполне применим для научного моделирования сетей [2].
- Однако проблема воспроизводимости исследований практически неразрешима.
1.2.2 Eve-ng
- Сайт: https://www.eve-ng.net/
- EVE-NG (Emulated Virtual Environment).
- Лицензия: EULA (https://www.eve-ng.net/index.php/documentation/eula/).
- Графический интерфейс.
- Основан на проекте UNetLab (разработка прекращена в 2016 году).
- Идеологически похож на GNS3.
- Фактически сходный функционал.
- Варианты:
- Community Edition, ограничения по размерам проекта;
- Professonal, предлагает расширенную функциональность;
- Corporate, возможность совместной работы.
1.2.3 PNetLab
- Сайт: https://pnetlab.com/pages/main
- Репозиторий: https://github.com/pnetlab/pnetlab_main
- Документация: https://www.pnetlab.com/pages/documentation
- Графический интерфейс.
- Является форком Eve-ng.
- Функциональность как у Eve-ng, но без необходимости оплаты.
- Разработчики Eve-ng высказывали неудовольствие этим проектом (https://www.eve-ng.net/forum/viewtopic.php?f=4&t=16925).
- Лицензия: не известно.
- Проект выглядит заброшенным.
1.2.4 Containerlab
- Сайт: https://containerlab.dev/
- Репозиторий: https://github.com/srl-labs/containerlab
- Разработана Nokia.
- Лицензия: BSD-3-Clause.
- Виртуальные сетевые лаборатории строятся на базе контейнеров Docker.
- Управление окружением происходит в специальном командном окружении.
- Топология описывается в yaml-файле.
- Решение поддерживает работу со множеством сетевых операционных систем, представленных в виде образов виртуальных машин.
- Возможно объединять контейнеры и виртуальные машины в единую топологию.
- Пакет vrnetlab (https://github.com/vrnetlab/vrnetlab) позволяет подключать виртуальную машину внутрь контейнера.
- Можно создавать лаборатории, которые включают не только сетевые узлы, но и все, что между ними: стеки телеметрии, базы данных, узлы тестового оборудования, веб-серверы.
1.2.5 netlab
- Сайт: https://netlab.tools/
- Лицензия: MIT.
- Фреймворк для автоматизации проектирования, развертывания и тестирования сетевых лабораторий с использованием концепции Infrastructure as Code (IaC).
- Описание конфигураций через абстрактные функциональные модули, без привязки к вендору.
- В качестве модельных провайдеров можно использовать Docker, Vagrant, KVM, Virtualbox, containerlab.
1.3 Моностековые средства моделирования
- Данные системы реализуют какой-либо один сетевой стек.
- Чаще всего на основе Linux.
- Это позволяет оптимизировать средство моделирования намного сильнее, чем мультисистемные средства.
1.3.1 Mininet
- Сайт: https://mininet.org/
- Репозиторий: https://github.com/mininet/mininet
- Лицензия: BSD-3-Clause.
- Разработан в Стэнфордском университете.
- Позволяет строить простые сети.
- Можно реализовать технологии OpenFlow и SDN.
- Настройки контроллеров на базе OpenFlow можно мигрировать на физическое оборудование.
- Узлы сети в Mininet представляют собой процессы, запущенные в сетевом пространстве имён.
- Такой подход позволяет изолировать хосты на одной машине друг от друга, но при этом каждый из них имеет собственный интерфейс.
- Поддерживается Python API.
- Данное средство первоначально было создано как специализированное средство моделирования. Основное предназначение — моделирование Software-Defined Networks (SDN) [3–5].
- Но постепенно произошёл дрейф в сторону универсальных пакетов моделирования.
- Представляется, что это произошло из-за внедрения Mininet в обучение [6].
- Кроме того, в рамках моделирования на Mininet исследователи стали уделять повышенное внимание воспроизводимости исследований [7–9].
1.3.2 Netkit
- Сайт: https://www.netkit.org/
- Разрабатывался для научных исследований и обучения [10; 11].
- Реализация строилась на подсистеме User-Mode Linux (UML).
- с имеет исключительно историческое значение.
- Заменён на Kathará.
1.3.3 Kathará
- Сайт: https://www.kathara.org/
- Репозиторий: https://github.com/KatharaFramework/Kathara
- Лицензия: GPL-3.0.
- Является развитием сетевого эмулятора Netkit [12].
- Фактически можно воспринимать как Netkit, в котором User-Mode Linux заменён на Docker.
- Kathará позволяет моделировать виртуальные сети на базе контейнеров Docker или кластеров Kubernetes [13; 14].
- Поддерживает технологии SDN, NFV (Network function virtualization), BGP, OSPF.
- Есть графический интерфейс: Netkit-Lab-Generator (https://github.com/KatharaFramework/Netkit-Lab-Generator).
- Особенностью данного проекта является его быстрое революционное развитие.
- Постоянно появляются варианты данного эмулятора, направленные на решение новых задач.
- В дальнейшем, чаще всего, эти новые ответвления вливаются в исходный проект.
- Приведём примеры некоторых из них.
Megalos и Sybil
- Проект Megalos направлен на моделирование больших гетерогенных сетей [15; 16].
- Основное направление моделирования — сетевая архитектура центров обработки данных.
- Используются сети VXLAN с маршрутизацией BGP.
- В подсистему Docker введён оркестратор Kubernetes, что позволяет моделировать большие сети.
- Распределение эмуляции по нескольким узлам позволяет Megalos эмулировать крупномасштабные сетевые инфраструктуры, где требуется значительное количество виртуальных локальных сетей.
- На основе Kathará и Megalos была создана программная платформа Sibyl [17].
- Sibyl реализует моделирование протоколов маршрутизации в сетях с толстыми деревьями.
Вложенные контейнеры
- Задача состояла в построении цифрового двойника центра обработки данных.
- Для точной эмуляции иерархии, состоящей из физических серверов, виртуальных машин и контейнеров, поддержка вложенной виртуализации является фундаментальным требованием.
- Для решения этой задачи и была разработана возможность использования вложенных контейнеров [18].
1.3.4 IMUNES
- IMUNES (Integrated Multi-protocol Network Emulator/Simulator).
- Сайт: https://imunes.net/
- Репозиторий: https://github.com/imunes/imunes
- Лицензия: CC-BY 4.0.
- Возможно использование как графического интерфейса, так и скриптового языка.
- Реализует сетевой стек FreeBSD [19].
- Host: Linux, FreeBSD.
- Виртуализация [20]:
- FreeBSD: jails;
- Linux: Docker.
- Развитие неравномерное.
- Одно время создавалось впечатление, что проект заброшен.
- Это типичный локальный проект для конкретных целей разработчиков.
- Если что не нужно им, то это и не будет реализовано.
1.3.5 CORE
- CORE (Common Open Research Emulator).
- Сайт: https://coreemu.github.io/core/
- Репозиторий: https://github.com/coreemu/core
- Документация: https://coreemu.github.io/core/index.html
- Лицензия: BSD-2-Clause.
- Виртуализация: Linux namespaces.
- Реализует сетевой стек FreeBSD [21].
- Поддерживает Docker-контейнеры для развертывания сервисов (DNS, HTTP).
- Связи реализуются через Linux-мосты, VLAN, VPN.
- Динамическая маршрутизация: Quagga/FRR.
- Графический интерфейс для построения топологии.
1.3.6 Cloonix
- Сайт: https://clownix.net/
- Репозиторий: https://github.com/clownix/cloonix
- Лицензия: AGPLv3.
- Моделирование на базе виртуальных машин и контейнеров [22].
- Для виртуальных машин: kvm.
- Для контейнеров: podman.
- Host: только Linux.
- Есть графический интерфейс.
- Линки между узлами основаны на Open vSwitch.
- Теоретически средство может поддерживать разное сетевой оборудование (например, Cisco).
- Однако реально используется только Linux.
- Сценарии использования:
- тестирование маршрутизации (BGP, OSPF);
- эмуляция IoT-сетей и мобильных устройств;
- антирегрессионное тестирование сетевых приложений.
1.4 Специализированные средства моделирования
- Данные средства моделирования направлены на решение узких задач.
- Это вовсе не означает, что нельзя будет проводить комплексное моделирование.
- Но это будет явно сложнее, чем на универсальных системах.
1.4.1 Toxiproxy
- Репозиторий: https://github.com/Shopify/toxiproxy
- Лицензия: MIT.
- Позволяет изучить отказоустойчивость решений в сетевой среде.
- Можно имитировать аномалии и сбои: задержки при получении ответа от сервера, изменение пропускной способность.
- Можно запускать приложения в среде, где все соединения проходят проверку в различных сетевых условиях.
- Состоит из двух элементов: TCP-прокси и клиента, взаимодействующего с ним по HTTP.
- Скрипты создаются с помощью Ruby, Node.js, Python.
- Клиент подключается к демону Toxiproxy по HTTP.
2 Сравнение
- Соберём средства натурного моделирования сетей в таблицу, выделив те параметры, которые важны нам для проведения воспроизводимых исследований.
- Тип лицензии будет соответствовать сложности использования программного обеспечения.
- Поскольку все рассматриваемые системы используют контейнеры и виртуальные машины (либо что-то одно из этого), то будем считать, что все они поддерживают управление технологическими изменениями.
- Наличие командного интерфейса и скриптового языка будет способствовать устранению человеческой ошибки.
Программа | Интерфейс | Скриптовый язык | Лицензия |
---|---|---|---|
GNS3 | GUI, Web | Нет | GPL-3.0 |
Eve-ng | Web | Нет | EULA |
PNetLab | Web | Нет | Не известно |
Containerlab | CLI | YAML, Ansible | BSD-3-Clause |
Mininet | CLI | Python | BSD-3-Clause |
Kathará | CLI, GUI | Python, YAML, shell | GPL-3.0 |
IMUNES | CLI, GUI | Python, YAML, shell | CC-BY 4.0 |
CORE | CLI, GUI | Python | BSD-2-Clause |
Toxiproxy | CLI | Ruby, Node.js, Python | MIT |
Cloonix | CLI, GUI | Python, shell | AGPLv3 |
netlab | CLI | YAML, Ansible, Python, shell | MIT |
3 Обсуждение
В первую очередь следует удалить из рассмотрения инструментарий с несвободными лицензиями: Eve-ng и PNetLab.
GNS3 не поддерживает возможность автоматизации с помощью кода.
Отсутствие интерфейса командной строки не позволяет проводить воспроизводимые исследования.
Впрочем, GNS3 хорошо подходит для обучения работы с сетями и принципам проведения натурного моделирования.
Остальные рассмотренные нами средства моделирования вполне подходят для реализации воспроизводимых исследований.
Для моделирования гетерогенных сетей, состоящий из оборудования разных производителей, остаётся рекомендовать containerlab и netlab.
Если необходимо моделировать не столько протоколы сами по себе, а особенности их реализации в оборудовании разных производителей, альтернативы просто нет.
Впрочем, ничего не мешает использовать эти средства и просто для моделирования произвольных сетей.
Kathará поддерживает распределённое выполнение, поэтому незаменима для ресурсоёмкого моделирования.
Кроме того, в рамках данного средства явно рассматривалась методика создания цифровых двойников сетевых систем.
Mininet развивается крайне неторопливо.
Но эта среда кране проста в применении.
Кроме того, это средство моделирования входит в образовательную программу многих вузов.
А исследователь, при прочих равных условиях, предпочтёт использовать то средство моделирования, с которым он знаком.
Toxiproxy предназначен для исследования вопросов сетевой безопасности.
В отличии от других средств моделирования мы не исследовали его глубоко.
Впрочем, моделирование сетевой безопасности тоже входит в круг наших интересов.
Средства моделирования IMUNES, CORE, Cloonix выглядят вполне достойными.
Но, победитель получает всё.
Эти средства моделирования не предлагают, на данный момент, никаких особенных преимуществ относительно выделенных нами систем.
Резюмируем наши рекомендации.
- Для первичного обучения студентов — GNS3.
- Для моделирования простых систем и обучения натурному моделированию — Mininet.
- Для моделирования сложных систем, ресурсоёмкого моделирования — Kathará, containerlab, netlab.
- Для моделирования гетерогенных сетей, максимального соответствия реальным системам — containerlab, netlab.