\section{Выбор формата табличного представления конфигурации сети} \label{sec:Chapter3} \index{Chapter3} % \todo[inline]{Здесь надо декомпозировать большую задачу из постановки на подзадачи и продолжать этот процесс, пока подзадачи не станут достаточно простыми, чтобы их можно было бы решить напрямую (например, поставив какой-то эксперимент или доказав теорему) или найти готовое решение.} Исходя из результатов обзора, в качестве пользовательской формы задания конфигурации выбрано табличное представление. Такая форма представления удобна тем, что позволяет явно фиксировать элементы сети и их атрибуты, редактировать отдельные значения и проверять заполненность полей. При этом она допускает частично заданные конфигурации: часть параметров может быть указана сразу, а часть оставлена пустой для последующего уточнения. При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: единая таблица (представление аналогично первой нормальной форме в контексте СУБД \cite{DB} ) и раздельные таблицы (аналогично третьей нормальной форме в контексте СУБД). Оба варианта позволяют структурированно описать сеть, однако различаются сложностью редактирования данных в случае непосредственной работы с таблицами. Разберём оба представления на примере топологии, изображённой на рисунке~\ref{fig:exmpl1} \begin{figure}[htbp] \centering \includegraphics[width=0.8\textwidth]{files/exmpl1.png} \caption{Пример топологии} \label{fig:exmpl1} \end{figure} \subsubsection*{Представление в единой таблице} При представлении данных в виде одной таблицы каждая строка содержит сведения об отдельном элементе или связи конфигурации: имя узла, интерфейс, адреса, принадлежность сети и т.д. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации. Пример представления конфигурации сети в 1НФ приведен в таблице \ref{tab:1nf}. \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{Единая таблица конфигурации сетевых устройств} \label{tab:1nf} \end{table} \subsubsection*{Представление в раздельных таблицах} При представлении данных в виде раздельных таблиц сведения о конфигурации распределяются по основным видам сущностей: узлы (устройства), интерфейсы, сетевые сегменты и связи. Каждой из этих сущностей сопоставляется отдельная таблица. Такой подход уменьшает дублирование данных по сравнению с единой таблицей, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам. Пример представления конфигурации сети в 3НФ приведен в таблицах \ref{tab:3nf1} - \ref{tab:3nf3}. \begin{table}[H] \centering \small \begin{minipage}[t]{0.3\textwidth} \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} \captionof{table}{Сетевые устройства} \label{tab:3nf1} \end{minipage} \hfill \begin{minipage}[t]{0.38\textwidth} \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} \captionof{table}{Интерфейсы} \label{tab:3nf2} \end{minipage} % \hfill % \begin{minipage}[t]{0.28\textwidth} % \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} % \captionof{table}{IP-адреса интерфейсов} % \label{tab:3nf3} % \end{minipage} \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{IP-адреса интерфейсов} \label{tab:3nf3} \end{table} \subsubsection*{Выбор представления} В качестве основного пользовательского представления была выбрана единая таблица. Она удобнее для ручного заполнения, проще воспринимается при описании лабораторных стендов и не требует постоянного перехода между несколькими связанными таблицами. Единая таблица используется как форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта во входные форматы средства развертывания сетевых конфигураций или средства построения диаграмм топологии.