Всем привет! Меня зовут Илья Зеленчук, я преподаю компьютерные сети на матмехе СПбГУ. Когда пандемия 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% лабораторных работ курса «Основы компьютерных сетей» на матмехе СПбГУ.

Самые любопытные могут посмотреть документ, куда я изначально выписал все примеры, которые хотелось видеть на платформе. По истории изменений можно проследить, как мы эти примеры реализовывали.
Как проверить знания в 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. Для преподавателей — это удобный инструмент, который поможет сделать обучение более интерактивным и наглядным.
bambucho
Тема интересная - но гостевого режима нет - только регистрация и нет самостоятельной регистрации через почту - только привязка через Гугл/Яндекс/ВК/Телеграм - это соответствует свободной лицензии?
zelenchuk Автор
Полностью соответствует, лицензия Apache 2.0 никак не ограничивает использование механизмов регистрации и авторизации.