Files
CursASVK/Latex/Chapter3.tex
T
2026-05-23 14:24:50 +03:00

122 lines
10 KiB
TeX

\section{Исследование и построение решения задачи}
\label{sec:Chapter3} \index{Chapter3}
% \todo[inline]{Здесь надо декомпозировать большую задачу из постановки на подзадачи и продолжать этот процесс, пока подзадачи не станут достаточно простыми, чтобы их можно было бы решить напрямую (например, поставив какой-то эксперимент или доказав теорему) или найти готовое решение.}
Поставленная задача состоит в разработке средства, позволяющего описывать частично сконфигурированную сеть виртуальных машин и получать на основе этого описания формализованное представление конфигурации. Для построения решения общая задача была разложена на несколько подзадач: определение состава описываемой информации, выбор формы представления данных, построение внутренней модели, разработка способа редактирования и реализация механизмов преобразования описания.
\subsection{Представление модели}
Рассмотрение существующих решений показывает, что диаграмма удобна для визуального восприятия, но недостаточна как основная форма хранения данных: графическое изображение сложно интерпретировать как строгое описание конфигурации. Поэтому в качестве основы решения выбрано табличное представление данных, а диаграмма рассматривается только как производное отображение модели. Такой подход позволяет отделить логическое описание сети от способа его визуализации.
Табличная форма удобна тем, что позволяет явно фиксировать элементы сети и их атрибуты, редактировать отдельные значения и проверять заполненность полей. При этом она допускает частично заданные конфигурации: часть параметров может быть указана сразу, а часть оставлена пустой для последующего уточнения.
При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: представление в первой нормальной форме и представление в третьей нормальной форме. Оба варианта позволяют формализовать описание сети, однако различаются удобством редактирования данных.
В первой нормальной форме данные представляются в виде одной или нескольких таблиц, где каждая строка содержит атомарные значения: имя узла, интерфейс, адреса, принадлежность сети и т.д.. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации.
Разберём оба представления на примере топологии, изображённой на рисунке~\ref{fig:exmpl1}
\begin{figure}[h]
\centering
\includegraphics[width=0.8\textwidth]{files/exmpl1.png}
\caption{Пример топологии}
\label{fig:exmpl1}
\end{figure}
Пример представления в 1НФ:
\begin{table}[h!]
\centering
\begin{tabular}{|l|l|l|l|l|}
\hline
\textbf{Name} & \textbf{Role} & \textbf{Interface} & \textbf{Network} & \textbf{Device IP} \\
\hline
PC1 & Host & eth1 & A & 10.0.0.1/24 \\
PC2 & Host & eth1 & B & 10.0.0.2/24 \\
PC3 & Host & eth1 & C & 10.0.0.3/24 \\
PC4 & Host & eth1 & D & 10.0.0.4/24 \\
com\_left & Switch & eth1 & tr & \\
com\_left & Switch & eth2 & A & \\
com\_left & Switch & eth3 & B & \\
com\_right & Switch & eth1 & tr & \\
com\_right & Switch & eth2 & D & \\
com\_right & Switch & eth3 & C & \\
\hline
\end{tabular}
\caption{Network device configuration}
\end{table}
В третьей нормальной форме данные разделяются на отдельные сущности: узлы, интерфейсы, сетевые сегменты и связи. Такой подход уменьшает дублирование данных и лучше соответствует классической реляционной модели, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам.
Пример представления в 3НФ:
\begin{table}[h]
\centering
\begin{tabular}{|l|l|}
\hline
Name & Device \\
\hline
PC1 & Host \\
PC2 & Host \\
PC3 & Host \\
PC4 & Host \\
com\_left & Switch \\
com\_right & Switch \\
\hline
\end{tabular}
\caption{Devices}
\end{table}
\begin{table}[h]
\centering
\begin{tabular}{|l|l|l|}
\hline
Host Name & Interface & Network \\
\hline
PC1 & eth1 & A \\
PC2 & eth1 & B \\
PC3 & eth1 & C \\
PC4 & eth1 & D \\
com\_left & eth1 & tr \\
com\_left & eth2 & A \\
com\_left & eth3 & B \\
com\_right & eth1 & tr \\
com\_right & eth2 & D \\
com\_right & eth3 & C \\
\hline
\end{tabular}
\caption{Interfaces}
\end{table}
\begin{table}[h]
\centering
\begin{tabular}{|l|l|}
\hline
Interface & IP \\
\hline
PC1.eth1 & 10.0.0.1/24 \\
PC2.eth1 & 10.0.0.2/24 \\
PC3.eth1 & 10.0.0.3/24 \\
PC4.eth1 & 10.0.0.4/24 \\
\hline
\end{tabular}
\caption{IPs}
\end{table}
В качестве основного пользовательского представления была выбрана первая нормальная форма. Она удобнее для ручного заполнения, проще воспринимается при описании лабораторных стендов и не требует постоянного перехода между большим количеством связанных таблиц.
Табличное представление в 1НФ используется как удобная форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта в YAML или построения диаграммы топологии.
\subsection{Внутренняя модель данных}
Табличное представление удобно для ввода, но для дальнейшей обработки требуется программная структура, в которой связи между объектами выражены явно. Поэтому данные таблиц должны преобразовываться во внутреннее представление, например в набор классов Python, соответствующих основным сущностям конфигурации. Такая модель служит центральным представлением, из которого могут формироваться другие виды результата.
\todo[inline]{хоть и акцент обычно на табличках, это не совсем центральное. Представить пример uml для python классов}
\subsection{Преобразование модели данных}
Также одной из подзадач является разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт в формализованный файл конфигурации и построение диаграммы топологии. YAML-файл в этом случае используется как структурированное описание, пригодное для дальнейшей обработки программами, вроде Netloom для поднятия сеьи из виртуальных машин, а D2 может применяться для генерации визуального представления сети на основе уже построенной модели.
\subsection{Вывод}
Таким образом, решение строится не вокруг построения диаграммы, а вокруг формальной модели сетевой конфигурации. Табличное представление используется как способ ввода и редактирования, внутренняя модель — как основа обработки данных, а YAML и диаграмма — как формы представления результата. Такой подход позволяет обеспечить редактируемость, воспроизводимость и возможность дальнейшего применения описания при подготовке лабораторных стендов из виртуальных машин.