Всем привет! Меня зовут Илья Зеленчук, я преподаю компьютерные сети на матмехе СПбГУ. Когда пандемия COVID-19 перевела нас в онлайн, возник вопрос: как наглядно объяснять студентам сложные сетевые концепции через Zoom? 

Для визуализации я использовал draw.io — инструмент удобный, но статичный. За несколько минут в нем можно нарисовать топологию с маршрутизаторами, прописать IP‑адреса и изобразить NAT. И каждый раз мне хотелось нажать кнопку Play, чтобы показать работу сети в динамике: как пакеты бегут по нарисованной схеме, почему они теряются или как NAT меняет заголовки. Но draw.io такую анимацию просто не поддерживает. 

Так родилась идея Miminet — сервиса, который превращает изображение сети в работающую модель, но позволяет ничего не настраивать локально для базового курса по сетям. Представьте: вы рисуете топологию, добавляете хосты, маршрутизаторы, коммутаторы (как в том же draw.io), а потом запускаете эмуляцию и наблюдаете за работой настоящей сети. Настолько настоящей, что там даже VLAN'ы теперь есть.

Как Miminet упрощает изучение основ сетей без громоздких эмуляторов, что можно делать на платформе и с какими архитектурными вызовами мы столкнулись при ее развитии — читайте в статье.

Какие проблемы решает Miminet

Во‑первых, преподавателям, в том числе мне, больше не нужно тратить время на фразы вроде «представьте, что здесь пакет теряется…» или рисовать статичные схемы. Вместо этого — живая демонстрация.

Можно сразу показать, как работают разные устройства и протоколы, например, чем концентратор отличается от коммутатора и как работает ARP. Можно наглядно посмотреть, что будет, если создать петлю в топологии, или как происходит конфликт IP‑адресов.

Во‑вторых, самостоятельная работа студентов стала проще. Все происходит прямо в браузере, поэтому им больше не нужно устанавливать GNS3/Eve‑NG, возиться с образами Cisco/Juniper или настраивать несколько образов VirtualBox. Теперь можно просто открыть новое окно, создать сеть, прописать настройки и добавить ping. Если очень хочется, можно локально развернуть собственную версию Miminet. Актуальная версия доступна по адресу miminet.ru и для работы с ней достаточно только браузера и доступа в интернет.

Задания в сервисе проверяются автоматически. Ждать ответа от преподавателя и тратить время на проверку больше не нужно. 

Контрольные работы можно проводить в формате практического квеста. Настроил NAT? Теперь проверь, выходит ли хост в интернет. Добавил VLAN? Убедись, что хосты из разных VLAN'ов не пингуются. Если вдруг ошибся в маске подсети, то система сразу укажет, где именно. Проверка знаний — не просто тест с набором ответов без права на ошибку, а детальный разбор конфигурации сети.

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

Все сети в Miminet доступны по ссылке. Преподаватель может нарисовать топологию, а студенты — скопировать ее к себе и поэкспериментировать.

В основе нашего эмулятора лежит Mininet — он позволяет создавать на Python изолированные сети на уровне ядра Linux. Miminet — это, по сути, веб‑интерфейс Mininet.

Пример работы коммутатора и концентратора
Пример работы коммутатора и концентратора

Что можно делать в Miminet

Сегодня Miminet позволяет собирать сети из пяти ключевых компонентов, среди которых коммутатор (хаб), концентратор (свитч), маршрутизатор, хост и сервер. С их помощью можно построить как простейшую сеть из двух хостов, так и сложные топологии с VLAN, NAT и дополнительными маршрутами.

Поскольку все устройства работают на ядре Linux, Miminet поддерживает весь TCP/IP‑стек. Вот перечень уже реализованных настроек:

  • Коммутатор (Open vSwitch)

    • VLAN (разделение трафика на виртуальные сети)

    • STP/RSTP (защита от петель в топологии).

  • Маршрутизатор

    • VLAN через создание сабинтерфейса;

    • IP‑адрес, маска подсети и маршрут по умолчанию;

    • VPN (IPIP/GRE и чуть‑чуть VxLAN);

    • NAT (Masquarade);

    • Добавление записи в таблицу маршрутизации;

    • Добавление записи в ARP кэш;

    • Добавить IP‑адрес и маску на интерфейс.

  • Хост и сервер

    • IP‑адрес, маска подсети и маршрут по умолчанию;

    • Добавление записи в таблицу маршрутизации;

    • Добавление записи в ARP кэш.

  • Канал

    • Установить процент потерь.

На маршрутизаторе, хосте и сервере доступны следующие команды:

  • Выполнить ping на определенный IP‑адрес с опциями;

  • Выполнить tracert на определенный IP‑адрес;

  • Запустить TCP/UDP сервера на произвольном порту;

  • Запустить TCP/UDP клиента;

  • Выполнить блокировку произвольного TCP/UDP порта.

Этой функциональности достаточно, чтобы покрыть 90% лабораторных работ курса «Основы компьютерных сетей» на матмехе СПбГУ.

Демонстрация работы NAT

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

Как проверить знания в Miminet

Когда благодаря платформе мы закрыли все базовые сценарии курса по сетям, мы задумались об автоматизации проверки знаний. Так, в Miminet появился модуль тестирования — удобный инструмент как для преподавателей, так и для студентов.  Благодаря тестам нам стала доступна объективная метрика с темами, которые вызывают наибольшие трудности у учащихся.

Система поддерживает теоретические и практические задания. 

Теория. Это могут быть вопросы с одним правильным ответом, задачи на сопоставление (например, протокола и его описания) или восстановление правильного порядка действий. 

Практика. Задачи, связанные с анализом конфигурациями сети. Например, нужно проверить, проходит ли ping от одного хоста к другому или в обе стороны по разным маршрутам. Или понять, используются ли туннели на заданном участке сети, относятся ли IP-адреса к «серому» диапазону и корректно ли выставлены маски между маршрутизаторами (/30 или /31). Отдельный сценарий — отключение одного из звеньев сети и анализ, сохранится ли при этом связность. Таких заданий много, и каждое из них помогает закрепить конкретный навык.

Главное преимущество практических задач — полная объективность, так как проверка полностью автоматизирована. Если какое-то условие не выполнено, Miminet сразу показывает, на каком этапе возникла ошибка.

Набор вопросов при этом формируется случайным образом из базы, поэтому каждый тест уникальный. Студенты не просто «угадывают» правильные ответы, а действительно проверяют свое понимание материала и закрепляют новые знания.

Практическое задание с автоматической проверкой
Практическое задание с автоматической проверкой

С 2024 года мы используем Miminet для проверки знаний у кандидатов на стажировку. Пользу получают и студенты, и преподаватели. Первые могут неоднократно тренироваться в сервисе и получать мгновенную обратную связь по своим работам. Вторые — экономят время на проверку и получают объективные метрики по усвоению сложных тем. 

Думаю, Miminet может быть полезен и при найме — благодаря автоматической оценке уровня кандидата.

Какие есть ограничения у Miminet

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

Первое связано с работой эмуляции. Она выполняется в реальном времени, и некоторые протоколы изначально предполагают задержки: например, STP требует до 30 секунд для согласования топологии, а TCP добавляет таймауты на установку соединения или ретрансляции (retransmission).

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

Второе ограничение касается масштабируемости сети. Кто-то попытался собрать топологию из более сотни устройств — сервер не выдержал нагрузку и рухнул. Мы ввели ограничение сети до 80 устройств.

Большая веселая сеть
Большая веселая сеть

Заключение

Miminet — это open source-проект (лицензия Apache 2.0)  в активной стадии разработки, который развивается под моим руководством с поддержкой заинтересованного сообщества. В его создании участвуют студенты в рамках курсовых, дипломов и практик. Проект является частью важной инициативы по повышению качества преподавания сетевых технологий, этим заслужил внимание и поддержку Лаборатории YADRO СПбГУ. Платформа успешно применяется в обучении не только на матмехе петербургского вуза, но и в ИТМО и ТГУ. Так, есть бесплатный онлайн-курс по сетям, где Miminet используется для практических заданий. К курсу уже присоединилось более 16 000 человек. Ждем и вас!

Для студентов это возможность поработать над реальным open source-решением и получить опыт в сетях, веб-разработке или DevOps. Для преподавателей — это удобный инструмент, который поможет сделать обучение более интерактивным и наглядным.

Комментарии (2)


  1. bambucho
    09.10.2025 12:57

    Тема интересная - но гостевого режима нет - только регистрация и нет самостоятельной регистрации через почту - только привязка через Гугл/Яндекс/ВК/Телеграм - это соответствует свободной лицензии?


    1. zelenchuk Автор
      09.10.2025 12:57

      Полностью соответствует, лицензия Apache 2.0 никак не ограничивает использование механизмов регистрации и авторизации.