1. Введение 4
2. Постановка задачи 6
3. Требования 7
4. Обзор 8
4.1. Аналогичные продукты 8
4.2. Выбор эмулятора 10
4.3. Программные средства 11
5. Описание решения 13
5.1. Разработка эмулятора 13
5.2. Серверная часть web-сервиса 15
5.3. Разработка web-интерфейса для взаимодействия с эмулятором 15
5.4. Другие компоненты web-сервиса 17
5.5. Размещение web-сервиса 18
6. Апробация 19
7. Заключение 20
Список литературы 22
8. Приложение 27
По устройству и работе компьютерных сетей проводится множество курсов, большинство из которых обладают недостатком в виде отсутствия должного количества примеров и демонстраций работы компьютерных сетей. Для качественного обучения устройству компьютерных сетей обучающимся требуется возможность проводить практическую работу с сетями, составлять собственные сети и наблюдать механизмы их работы. Реализация примеров работы компьютерных сетей при различных топологиях, протоколах и устройствах в сети без установки соответствующих описываемой сети физических устройств требует использования программного обеспечения, эмулирующего работу компьютерных сетей. Среди решений в данной области стоит выделить такие продукты как GNS3 [17] и Cisco Packet Tracer [7], обладающие возможностью визуализации сетевого трафика и топологии сети, что делает их пригодными для использования в образовательных целях. Однако программные решения в данной сфере являются платными, или же написаны не для образовательных целей, а для людей с высоким уровнем подготовки и хорошим пониманием устройства работы компьютерных сетей. Некоторые из них, такие как NS-3 [22] и nemu [13], требуют написания программ-сценариев для взаимодействия с ними, что требует дополнительного изучения документации по данным продуктам. Другим недостатком использования существующих программных решений является тот факт, что многие продукты в данной сфере являются классическими настольными приложениями, что вовлекает необходимость установки и снижает уровень их доступности.
В связи с перечисленными недостатками существующих на данный момент решений, была разработана концепция web-сервиса, позволяющего конструировать компьютерные сети через web-интерфейс и производить их эмуляцию на серверной стороне web-сервиса, демонстрируя пользователю результаты эмуляции описанной им компьютерной сети. Были сформированы требования, основными из которых являются возможность задания топологии и конфигурации узлов сети, возможность визуализации маршрутов пакетов, отправленных внутри эмулируемой сети, возможность отображения ARP [27] таблиц маршрутизации для различных узлов, а также возможность отображения содержимого каждого пакета, отправленного внутри сети. На основе разработанной концепции был реализован соответствующий web-сервис, нацеленный на ознакомление обучающихся с устройством работы компьютерных сетей и протоколами взаимодействия в них.
В ходе проведения данной работы было сделано следующее:
1. Был проведен обзор существующих решений.
2. Был сформирован весь программный стек, необходимый для запуска сервиса.
3. Был реализован сервис, в который входят следующие возможности:
• создание модели компьютерной сети через web-интерфейс;
• запуск эмуляции с помощью JSON объекта, описывающего сеть;
• просмотр результатов эмуляции в web-интерфейсе.
4. Описываемая сеть поддерживает следующие типы узлов:
• пользовательский хост;
• сетевой концентратор;
• openflow-свитч [25].
5. Описываемая сеть поддерживает следующие протоколы:
• ICMP [28];
• TCP [33];
• UDP [29];
• ARP [27].
6. Был реализован интерфейс, в котором есть следующие компоненты:
• редактор графа для построения компьютерной сети;
• анимация маршрутов пакетов между узлами сети;
• просмотр пакетов в формате PCAP [37], прошедших через определенный интерфейс;
• просмотр таблиц ARP [27] для хостов в разные моменты времени внутри эмуляции.
7. Сервис был развернут и опубликован.
• Интерфейс был размещен на Next.js [34] хостинге Vercel [35].
• Был создан Docker-контейнер для сервиса запуска эмуляций, серверная часть была запущена в нем на облачной виртуальной машине.
8. Реализованы статические компоненты сервиса, среди которых есть:
• главная страница проекта;
• страница с руководством по использованию сервиса.
9. Проведена апробация web-сервиса.