Сети. Натурное моделирование

2025-07-20 · 12 мин. для прочтения

Сети. Натурное моделирование.

Содержание

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

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) [35].
  • Но постепенно произошёл дрейф в сторону универсальных пакетов моделирования.
  • Представляется, что это произошло из-за внедрения Mininet в обучение [6].
  • Кроме того, в рамках моделирования на Mininet исследователи стали уделять повышенное внимание воспроизводимости исследований [79].

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).
  • Особенностью данного проекта является его быстрое революционное развитие.
  • Постоянно появляются варианты данного эмулятора, направленные на решение новых задач.
  • В дальнейшем, чаще всего, эти новые ответвления вливаются в исходный проект.
  • Приведём примеры некоторых из них.
  1. Megalos и Sybil

    • Проект Megalos направлен на моделирование больших гетерогенных сетей [15; 16].
    • Основное направление моделирования — сетевая архитектура центров обработки данных.
    • Используются сети VXLAN с маршрутизацией BGP.
    • В подсистему Docker введён оркестратор Kubernetes, что позволяет моделировать большие сети.
    • Распределение эмуляции по нескольким узлам позволяет Megalos эмулировать крупномасштабные сетевые инфраструктуры, где требуется значительное количество виртуальных локальных сетей.
    • На основе Kathará и Megalos была создана программная платформа Sibyl [17].
    • Sibyl реализует моделирование протоколов маршрутизации в сетях с толстыми деревьями.
  1. Вложенные контейнеры

    • Задача состояла в построении цифрового двойника центра обработки данных.
    • Для точной эмуляции иерархии, состоящей из физических серверов, виртуальных машин и контейнеров, поддержка вложенной виртуализации является фундаментальным требованием.
    • Для решения этой задачи и была разработана возможность использования вложенных контейнеров [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 Сравнение

  • Соберём средства натурного моделирования сетей в таблицу, выделив те параметры, которые важны нам для проведения воспроизводимых исследований.
  • Тип лицензии будет соответствовать сложности использования программного обеспечения.
  • Поскольку все рассматриваемые системы используют контейнеры и виртуальные машины (либо что-то одно из этого), то будем считать, что все они поддерживают управление технологическими изменениями.
  • Наличие командного интерфейса и скриптового языка будет способствовать устранению человеческой ошибки.

Таблица 1: Средства натурного моделирования сетей
ПрограммаИнтерфейсСкриптовый языкЛицензия
GNS3GUI, WebНетGPL-3.0
Eve-ngWebНетEULA
PNetLabWebНетНе известно
ContainerlabCLIYAML, AnsibleBSD-3-Clause
MininetCLIPythonBSD-3-Clause
KatharáCLI, GUIPython, YAML, shellGPL-3.0
IMUNESCLI, GUIPython, YAML, shellCC-BY 4.0
CORECLI, GUIPythonBSD-2-Clause
ToxiproxyCLIRuby, Node.js, PythonMIT
CloonixCLI, GUIPython, shellAGPLv3
netlabCLIYAML, Ansible, Python, shellMIT

3 Обсуждение

  • В первую очередь следует удалить из рассмотрения инструментарий с несвободными лицензиями: Eve-ng и PNetLab.

  • GNS3 не поддерживает возможность автоматизации с помощью кода.

  • Отсутствие интерфейса командной строки не позволяет проводить воспроизводимые исследования.

  • Впрочем, GNS3 хорошо подходит для обучения работы с сетями и принципам проведения натурного моделирования.

  • Остальные рассмотренные нами средства моделирования вполне подходят для реализации воспроизводимых исследований.

  • Для моделирования гетерогенных сетей, состоящий из оборудования разных производителей, остаётся рекомендовать containerlab и netlab.

  • Если необходимо моделировать не столько протоколы сами по себе, а особенности их реализации в оборудовании разных производителей, альтернативы просто нет.

  • Впрочем, ничего не мешает использовать эти средства и просто для моделирования произвольных сетей.

  • Kathará поддерживает распределённое выполнение, поэтому незаменима для ресурсоёмкого моделирования.

  • Кроме того, в рамках данного средства явно рассматривалась методика создания цифровых двойников сетевых систем.

  • Mininet развивается крайне неторопливо.

  • Но эта среда кране проста в применении.

  • Кроме того, это средство моделирования входит в образовательную программу многих вузов.

  • А исследователь, при прочих равных условиях, предпочтёт использовать то средство моделирования, с которым он знаком.

  • Toxiproxy предназначен для исследования вопросов сетевой безопасности.

  • В отличии от других средств моделирования мы не исследовали его глубоко.

  • Впрочем, моделирование сетевой безопасности тоже входит в круг наших интересов.

  • Средства моделирования IMUNES, CORE, Cloonix выглядят вполне достойными.

  • Но, победитель получает всё.

  • Эти средства моделирования не предлагают, на данный момент, никаких особенных преимуществ относительно выделенных нами систем.

  • Резюмируем наши рекомендации.

    • Для первичного обучения студентов — GNS3.
    • Для моделирования простых систем и обучения натурному моделированию — Mininet.
    • Для моделирования сложных систем, ресурсоёмкого моделирования — Kathará, containerlab, netlab.
    • Для моделирования гетерогенных сетей, максимального соответствия реальным системам — containerlab, netlab.

4 Библиография

Литература

1. Welsh, C. GNS3 Network Simulation Guide / C. Welsh. – Packt Publishing, 2013. – 154 сс.
2. Velieva, T.R. Designing Installations for Verification of the Model of Active Queue Management Discipline RED in the GNS3 / T.R. Velieva, A.V. Korolkova, D.S. Kulyabov. – [Электронный ресурс] // 6th International Congress on Ultra Modern Telecommunications and Control Systems and Workshops (ICUMT). – IEEE Computer Society, 2015. – Сс. 570–577. – Режим доступа: http://ieeexplore.ieee.org/lpdocs/epic03/wrapper.htm?arnumber=7002164 (дата обращения: 27.07.2025).
3. Lantz, B. A Network in a Laptop: Rapid Prototyping for Software-Defined Networks / B. Lantz, B. Heller, N. McKeown // Proceedings of the 9th ACM SIGCOMM Workshop on Hot Topics in Networks : Hotnets-IX. – New York, NY, USA : Association for Computing Machinery, 2010. – A Network in a Laptop. – Сс. 1–6.
4. Lantz, B. A Mininet-based Virtual Testbed for Distributed SDN Development / B. Lantz, B. O’Connor // Proceedings of the 2015 ACM Conference on Special Interest Group on Data Communication : SIGCOMM ’15. – ACM, 2015. – Сс. 365–366.
5. Oliveira, R.L.S. de. Using Mininet for emulation and prototyping Software-Defined Networks / R.L.S. de Oliveira, C.M. Schweitzer, A.A. Shinoda, L.R. Prete // 2014 IEEE Colombian Conference on Communications and Computing (COLCOM). – IEEE, 2014. – Сс. 1–6.
6. Ryll, A. Measuring TCP Tail Loss Probe Performance / A. Ryll. – [Электронный ресурс] // Proceedings of the Seminars Future Internet (FI), Innovative Internet Technologies and Mobile Communications (IITM) and Autonomous Communication Networks (ACN), Summer Semester 2013 : Network Architectures и Services (NET) / G. Carle и др. ред. . – Munich, Germany : Chair for Network Architectures; Services, Department of Computer Science, Technische Universität München, 2013. – Тт. NET-2013-08-1. – Сс. 1–7. – Режим доступа: https://www.net.in.tum.de/fileadmin/TUM/NET/NET-2014-03-1/NET-2014-03-1_01.pdf (дата обращения: 27.07.2025).
7. Handigol, N. Reproducible network experiments using container-based emulation / N. Handigol, B. Heller, V. Jeyakumar и др. // Proceedings of the 8th international conference on Emerging networking experiments and technologies : CoNEXT ’12. – ACM, 2012. – Сс. 253–264.
8. Heller, B. Reproducible network research with high-fidelity emulation : PhD thesis / B. Heller. – Department of Computer Science; Stanford University, 2013. – 124 сс. – Режим доступа: https://purl.stanford.edu/zk853sv3422 (дата обращения: 27.07.2025). – [Электронный ресурс].
9. Yan, L. Learning Networking by Reproducing Research Results / L. Yan, N. McKeown // ACM SIGCOMM Computer Communication Review. – 2017. – Т. 47. – № 2. – Сс. 19–26. DOI: 10.1145/3089262.3089266.
10. Pizzonia, M. Netkit: network emulation for education / M. Pizzonia, M. Rimondini // Software: Practice and Experience. – 2014. – Т. 46. – Netkit. – № 2. – Сс. 133–165. DOI: 10.1002/spe.2273.
11. Ariyanto, Y. Teaching network security in Linux using Netkit with implementation virtual laboratory / Y. Ariyanto, B. Harijanto, Y.W. Syaifudin // IOP Conference Series: Materials Science and Engineering. – 2018. – Т. 434. – С. 012273. DOI: 10.1088/1757-899x/434/1/012273.
12. Scazzariello, M. Kathará: A Lightweight Network Emulation System / M. Scazzariello, L. Ariemma, T. Caiazzi // NOMS 2020 - 2020 IEEE/IFIP Network Operations and Management Symposium. – IEEE, 2020. – Kathará. – Сс. 1–2.
13. Alberro, L. Experimentation Environments for Data Center Routing Protocols: A Comprehensive Review / L. Alberro, A. Castro, E. Grampin // Future Internet. – 2022. – Т. 14. – Experimentation Environments for Data Center Routing Protocols. – № 1. – Сс. 29.1–22. DOI: 10.3390/fi14010029.
14. Bonofiglio, G. Kathará: A container-based framework for implementing network function virtualization and software defined networks / G. Bonofiglio, V. Iovinella, G. Lospoto, G. Di Battista // NOMS 2018 - 2018 IEEE/IFIP Network Operations and Management Symposium. – IEEE, 2018. – Kathará. – Сс. 1–9.
15. Scazzariello, M. Megalos: A Scalable Architecture for the Virtualization of Network Scenarios / M. Scazzariello, L. Ariemma, G.D. Battista, M. Patrignani // NOMS 2020 - 2020 IEEE/IFIP Network Operations and Management Symposium. – IEEE, 2020. – Megalos. – Сс. 1–7.
16. Scazzariello, M. Megalos: A Scalable Architecture for the Virtualization of Large Network Scenarios / M. Scazzariello, L. Ariemma, G. Di Battista, M. Patrignani // Future Internet. – 2021. – Т. 13. – Megalos. – № 9. – Сс. 227.1–17. DOI: 10.3390/fi13090227.
17. Caiazzi, T. Sibyl: a Framework for Evaluating the Implementation of Routing Protocols in Fat-Trees / T. Caiazzi, M. Scazzariello, L. Alberro и др. // NOMS 2022-2022 IEEE/IFIP Network Operations and Management Symposium. – IEEE, 2022. – Sibyl. – Сс. 1–7.
18. Caiazzi, T. Nesting Containers for Faithful Datacenters Emulations / T. Caiazzi, M. Scazzariello, S. Quinzi и др. // NOMS 2023-2023 IEEE/IFIP Network Operations and Management Symposium. – IEEE, 2023. – Сс. 1–5.
19. Zec, M. Implementing a Clonable Network Stack in the FreeBSD Kernel / M. Zec // Proceedings of the FREENIX Track: 2003 USENIX Annual Technical Conference. – San Antonio, Texas, USA, 2003.
20. Salopek, D. A network testbed for commercial telecommunications product testing / D. Salopek, V. Vasic, M. Zec и др. // 2014 22nd International Conference on Software, Telecommunications and Computer Networks (SoftCOM). – IEEE, 2014. – Сс. 372–377.
21. Ahrenholz, J. CORE: A real-time network emulator / J. Ahrenholz, C. Danilov, T.R. Henderson, J.H. Kim // MILCOM 2008 - 2008 IEEE Military Communications Conference. – IEEE, 2008. – CORE. – Сс. 1–7.
22. Linkletter, B. Investigating Linux Network Behaviour Using Open-Source Network Emulators / B. Linkletter // Proceedings of Netdev 2.1. – 2016. – Сс. 1–8.
Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.