\section{Обзор графических средств описания сетевых конфигураций} \label{sec:Chapter2} \index{Chapter2} % \todo[inline]{Здесь надо рассмотреть все существующие решения поставленной задачи, но не просто пересказать, в чем там дело, а оценить степень их соответствия тем ограничениям, которые были сформулированы в постановке задачи.} \todo[inline]{с картиночками тут пипец} Существующие графические средства, позволяющие описывать и/или отображать конфигурацию сети виртуальных машин, можно разделить на три группы: универсальные диаграммеры, сетевые эмуляторы и генераторы диаграмм по текстовому описанию. Их применимость целесообразно оценивать по следующим критериям: возможность изобразить структуру сети, возможность сопоставить элементам сети набор параметров, возможность интерпретировать результат как формализованное описание, пригодное для последующей обработки. \subsection{Универсальные диаграммеры} К универсальным диаграммерам относятся такие средства как draw.io \cite{drawio} (рис. \ref{fig:drawio}), Lucidchart \cite{Lucidchart} (рис. \ref{fig:lucidchart}) и Microsoft Visio \cite{Visio} (рис. \ref{fig:visio}). Такие средства позволяют строить различные виды схем, в том числе сетевые диаграммы. Например, draw.io позиционируется как онлайн-инструмент для построения блок-схем, UML-, ER- и сетевых диаграмм; Microsoft Visio также содержит шаблоны и фигуры для сетевых диаграмм; Lucidchart поддерживает технические диаграммы и визуальное моделирование систем. \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/drawio.png} \caption{Диаграмма сети в draw.io} \label{fig:drawio} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/lucidchart.png} \caption{Диаграмма сети в Lucidchart} \label{fig:lucidchart} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/visio.png} \caption{Диаграмма сети в Visio} \label{fig:visio} \end{figure} Основное преимущество таких решений состоит в удобстве визуального построения схемы сети. Пользователь может быстро расположить элементы, провести связи между ними и получить наглядное изображение сетевой топологии. Однако для поставленной задачи этого недостаточно. Диаграмма в таких системах в первую очередь является графическим объектом: она хорошо передаёт внешний вид структуры, но не задаёт строгую модель данных сетевой конфигурации. Параметры виртуальных машин, интерфейсов, MAC-адресов, IP-адресов и сетевых сегментов могут быть добавлены только как текстовые подписи или дополнительные свойства объектов, но их последующая автоматическая интерпретация становится нетривиальной. Следовательно, универсальные диаграммеры могут использоваться для иллюстрации результата, но не являются подходящей основой для хранения и редактирования конфигурации. Они не обеспечивают требуемой проверяемости описания и плохо подходят для ситуации, когда одному элементу сети необходимо сопоставить множество формализованных атрибутов. \subsection{Сетевые эмуляторы} Ко второй группе относятся сетевые эмуляторы, например Cisco Packet Tracer \cite{Cisco} (рис. \ref{fig:cisco}) и Huawei eNSP \cite{eNSP} (рис. \ref{fig:ensp}). Cisco Packet Tracer предназначен для обучения сетевым технологиям и позволяет моделировать работу сетей в виртуальной лабораторной среде; Huawei eNSP также позиционируется как средство моделирования сетей, применяемое для подготовки специалистов в области сетевой передачи данных. \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/cisco.png} \caption{Диаграмма сети в Cisco Packet Tracer} \label{fig:cisco} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/ensp.png} \caption{Диаграмма сети в Huawei eNSP} \label{fig:ensp} \end{figure} Эти решения ближе к реальной настройке сети, чем универсальные диаграммеры: они позволяют нарисовать топологию (а также) моделировать поведение сетевых устройств. Однако их назначение далеко от цели данной работы. Диаграммеры в их составе ориентированы на описание сети на основе оборудования конкретного производителя, а не на универсальное формализованное описание конфигурации сети виртуальных машин для лабораторных стендов. \subsection{Генераторы диаграмм} Третью группу составляют генераторы диаграмм по текстовому описанию: D2 \cite{D2} (рис. \ref{fig:d2netw}), Graphviz \cite{Graphviz} (рис. \ref{fig:graphviz}), PlantUML \cite{PlantUML} (рис. \ref{fig:plantuml}). Все три инструмента используют декларативный язык, позволяющий преобразовывать текстовое описание в диаграмму и выполняют смежные задачи. \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/d2netw.png} \caption{Диаграмма сети в D2} \label{fig:d2netw} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/graphviz.png} \caption{Диаграмма сети в Graphviz} \label{fig:graphviz} \end{figure} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/plantuml.png} \caption{Диаграмма сети в PlantUML} \label{fig:plantuml} \end{figure} Такие инструменты упрощают интеграцию с внешними средствами описания конфигурации, поскольку исходное описание диаграммы хранится в текстовом виде. По этой причине генераторы диаграмм могут быть полезны как вспомогательный механизм визуализации сетевой топологии. В частности, в рамках данной работы D2 используется для построения графа L1 топологии сети на основе внутренней модели данных. Однако эти средства не решают задачу полностью. Они позволяют генерировать диаграмму, но не редактировать ее структуру или атрибуты ее элементов. Узлы и связи во входных языках таких средств можно снабжать дополнительными атрибутами, наращивая необходимые свойства, но такое представление, по мере увеличения сложности топологии, быстро становится трудно читаемым. Генератор диаграмм может отобразить уже подготовленное описание сетевой диаграммы, но не предоставляет язык описания конфигурации сети и способ её редактирования. \subsection{Вывод} Рассмотренные решения покрывают отдельные аспекты поставленной задачи, но не позволяют ее решить полностью. Универсальные диаграммеры удобны для ручного построения схемы сети, однако результат их работы в первую очередь является графическим представлением. Такие средства плохо подходят для хранения набора формализованных параметров устройств, интерфейсов и сетевых сегментов, а также для последующей программной обработки этого описания. Сетевые эмуляторы ориентированы на оборудование конкретного производителя, что ограничивает их применимость для описания лабораторных стендов общего вида. Генераторы диаграмм позволяют получать визуальное представление на основе текстовых данных. Тем не менее их основная функция заключается в построении диаграммы, а не в задании и редактировании конфигурации сети. Таким образом, в качестве основы разрабатываемого решения целесообразно использовать не формат диаграммы, а структурированную модель данных сетевой конфигурации. Диаграмма в этом случае рассматривается как вспомогательное представление. D2 был выбран в качестве генератора диаграмм, поскольку для него существует лёгкая в использовании библиотека в языке Python \cite{py-d2}, позволяющая генерировать текстовое описание диаграммы. Другие генераторы диаграмм также могли бы использоваться.