3 minutes
CMS Labs
CMS Labs
About
CMS Labs — это модульная система для автоматизации проведения лабораторных работ по сетевым технологиям (Cisco, ContainerLab).
Система предоставляет конструктор для распределения студентов по курсам и лабораторным стендам, интегрируется с LMS ( например, Moodle) через протокол LTI 1.3 и обеспечивает единый вход (SSO) через OpenID.
Tech Stack
- Backend: Go (Fiber), монорепа с модулями (LTI, OpenID, админ-панель)
- Frontend: Встраивание и единая панель
- Инфраструктура: Kubernetes, для развертывания лабораторных стендов используется ContainerLab | old PNETLab.
- Базы данных: MySQL (legacy)
Demo
Можешь перейти на сайт https://cms-lab.gubanov.site/login и получить доступ к временному решению задач через вход
student:student.
Затем перейди на страницу с прямым доступом к курсу
Links
Product
- Главный репозиторий: https://gitlab.com/a10869
- API и ядро (Go): https://gitlab.com/a10869/api-modules
- Инъекция фронтенда в PNET (old): https://gitlab.com/a10869/frontend
- Топологии для лабораторных работ: https://gitlab.com/a10869/containerlab-tests
Тезисы
Краткое содержание доклада о переносе сетевых лабораторий из физического оборудования в виртуальную/облачную среду, инструментах и выводах.
Проблема и мотивация
- Физические наборы оборудования:
- Персональная топология для каждого студента → низкое разнообразие, масштабирование ограничено количеством железа.
- Преподаватель вынужден быть ментором, админом и «поваром выдачи» оборудования.
- Высокая стоимость, логистика, износ.
- Цель: сделать масштабируемую, автоматизированную песочницу сетевых окружений для курсов и стажировок.
Путь эволюции
- Попытки оптимизации с физическими устройствами → автоматизация выдачи топологий, управление через SSH, Terraform.
- Переход к гибридным решениям (PNETLab):
- Плюсы: поддержка QEMU/Docker/IoShare2 и готовых лабораторий, удобный веб-интерфейс.
- Минусы: вопросы безопасности, закрытость/обфускация, VM-ориентированность, управление портами через БД.
- Разработка CMS-LABS и использование репозитория образов (labhub.eu.org) + утилита ishare2-cli.
- Containerlab + Kubernetes (Clabernetes) — пробовали, но столкнулись с нестабильностью и избыточностью управляющих слоёв.
- Переписывание на Podman, отказ от Kubernetes/containerd-подхода для упрощения.
Инструменты и сравнение
- Эмуляция/симуляция: GNS3, Packet Tracer.
- Платформы/коммерческие решения: PNETLab, Cisco CML, NDG Netlab+.
- Рекомендуемые/используемые для облачных labs: Containerlab, Container images (OCI), ishare2.
- Таблица (кратко):
- GNS3 — полная эмуляция, бесплатный.
- PNETLab — гибридная, много готовых лаб, но с ограничениями безопасности/лицензирования.
- Containerlab — платформа для запуска сетевых образов в контейнерах/OCI — удобна для масштабирования и автоматизации.
Образы и источники
- Типы образов: QEMU (полные VM), Docker (контейнеры), Bin/IOL, Dynamips, ISO, OCI.
- Примеры официальных образов:
- Arista — VMDK (cEOS/vEOS), OCI (~600 МБ).
- CheckPoint — QCOW2 (4–9 ГБ).
- MikroTik — ISO (~65 МБ).
- Nokia SR Linux — OCI (~4 ГБ).
- Утилита: github.com/ishare2-org/ishare2-cli — управление образами, загрузка на labhub.
Containerlab — оценка
Плюсы:
- Персональная топология для каждого студента.
- Оборудование в OCI-образах.
- Понятный интерфейс для работы с «маршрутизаторами».
- Легче администрировать и масштабировать кластер.
- Поддержка сообщества и примеры лабораторных работ.
Минусы/ограничения:
- Ранее попытка интеграции с Kubernetes (матрёшка) вызвала нестабильность и избыточность.
- Требуется аккуратная организация окружения и менеджмента образов.
Итоговые выводы и рекомендации
- Для образовательных сетевых лабораторий оптимально переходить на виртуальные/контейнерные образы (OCI) и Containerlab.
- Избегать сложных Kubernetes-обёрток, если цель — простота, надежность и предсказуемость (в докладе — переход на Podman).
- Использовать ishare2 + централизованный репозиторий образов (labhub) для управления образами разных вендоров.
- Автоматизировать выдачу лабораторий (Terraform/скрипты/Containerlab) и интегрировать аутентификацию (OpenID) для упрощения администрирования.
Ссылки и полезные ресурсы (упомянутые)
- Containerlab: https://containerlab.dev
- ishare2-cli: https://github.com/ishare2-org/ishare2-cli
- Примеры официальных образов: arista.com, checkpoint.com, mikrotik.com, nokia.com/srlinux