diff --git a/Latex/Chapter3.tex b/Latex/Chapter3.tex index c19ab3d..29d252e 100644 --- a/Latex/Chapter3.tex +++ b/Latex/Chapter3.tex @@ -4,7 +4,7 @@ Исходя из результатов обзора, в качестве пользовательской формы задания конфигурации выбрано табличное представление. Такая форма представления удобна тем, что позволяет явно фиксировать элементы сети и их атрибуты, редактировать отдельные значения и проверять заполненность полей. При этом она допускает частично заданные конфигурации: часть параметров может быть указана сразу, а часть оставлена пустой для последующего уточнения. -При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: представление в первой нормальной форме (далее~-- 1НФ) и представление в третьей нормальной форме (далее~-- 3НФ). Оба варианта позволяют структурированно описать сеть, однако различаются сложностью редактирования данных в случае непосредственной работы с таблицами. +При разработке табличного представления конфигурации сети виртуальных машин рассматривались два варианта организации данных: единая таблица (представление аналогично первой нормальной форме в контексте СУБД \cite{DB} ) и раздельные таблицы (аналогично третьей нормальной форме в контексте СУБД). Оба варианта позволяют структурированно описать сеть, однако различаются сложностью редактирования данных в случае непосредственной работы с таблицами. Разберём оба представления на примере топологии, изображённой на рисунке~\ref{fig:exmpl1} @@ -16,13 +16,9 @@ \label{fig:exmpl1} \end{figure} -\subsubsection*{Первая нормальная форма} +\subsubsection*{Представление в единой таблице} -Первая нормальная форма \cite{DB}: - -Переменная отношения находится в \textbf{1НФ} тогда и только тогда, когда в любом допустимом значении этой переменной отношения каждый её кортеж содержит только одно значение для каждого из атрибутов. - -В первой нормальной форме данные представляются в виде одной таблицы, где каждая строка содержит атомарные значения: имя узла, интерфейс, адреса, принадлежность сети и т.д. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации. +При представлении данных в виде одной таблицы каждая строка содержит сведения об отдельном элементе или связи конфигурации: имя узла, интерфейс, адреса, принадлежность сети и т.д. Такое представление остаётся достаточно простым для ручного заполнения и позволяет сразу видеть основную структуру конфигурации. Пример представления конфигурации сети в 1НФ приведен в таблице \ref{tab:1nf}. @@ -45,32 +41,20 @@ com\_right & Switch & eth2 & D & \\ com\_right & Switch & eth3 & C & \\ \hline \end{tabular} -\caption{Конфигурация сетевых устройств} +\caption{Единая таблица конфигурации сетевых устройств} \label{tab:1nf} \end{table} -\subsubsection*{Третья нормальная форма} +\subsubsection*{Представление в раздельных таблицах} -Третья нормальная форма \cite{DB}: - -Переменная отношения находится в \textbf{3НФ} тогда и только тогда, когда её неключевые атрибуты, если они существуют, являются одновременно: - -\begin{enumerate} - \item взаимно независимыми; - \item неприводимо зависимыми от первичного ключа. -\end{enumerate} - -\begin{itemize} - \item \textbf{Неключевой атрибут} --- это атрибут, который не входит в состав первичного ключа рассматриваемой переменной отношения. - - \item \textbf{Взаимно независимые атрибуты} --- это два или больше атрибутов, таких что ни один из них функционально не зависит от какой-либо комбинации остальных атрибутов. Подобная независимость подразумевает, что каждый такой атрибут может обновляться независимо от остальных атрибутов. -\end{itemize} - -В третьей нормальной форме данные разделяются на отдельные сущности: узлы (устройства), интерфейсы, сетевые сегменты и связи. Каждой из этих сущностей сопоставляется отдельная таблица. Такой подход уменьшает дублирование данных по сравнению с 1НФ, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам. +При представлении данных в виде раздельных таблиц сведения о конфигурации распределяются по основным видам сущностей: узлы (устройства), интерфейсы, сетевые сегменты и связи. Каждой из этих сущностей сопоставляется отдельная таблица. Такой подход уменьшает дублирование данных по сравнению с единой таблицей, однако делает представление более громоздким. Для понимания одной связи приходится обращаться сразу к нескольким таблицам. Пример представления конфигурации сети в 3НФ приведен в таблицах \ref{tab:3nf1} - \ref{tab:3nf3}. +\begin{table}[htbp] +\centering +\small -\begin{table}[h] +\begin{minipage}[t]{0.3\textwidth} \centering \begin{tabular}{|l|l|} \hline @@ -84,50 +68,54 @@ com\_right & Switch & eth3 & C & \\ com\_right & Switch \\ \hline \end{tabular} -\caption{Сетевые устройства} +\captionof{table}{Сетевые устройства} \label{tab:3nf1} -\end{table} - -\begin{table}[h] +\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 + 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{Интерфейсы} +\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} +\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*{Выбор представления} -В качестве основного пользовательского представления была выбрана первая нормальная форма. Она удобнее в сравнении с 3НФ для ручного заполнения, проще воспринимается при описании лабораторных стендов и не требует постоянного перехода между большим количеством связанных таблиц. +В качестве основного пользовательского представления была выбрана единая таблица. Она удобнее для ручного заполнения, проще воспринимается при описании лТабличное представление в 1НФ используется как форма ввода,абораторных стендов и не требует постоянного перехода между несколькими связанными таблицами. -Табличное представление в 1НФ используется как форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта во входные форматы средства развертывания сетевых конфигураций или средства построения диаграмм топологии. +Единая таблица используется как форма ввода, а при дальнейшей обработке данные могут преобразовываться во внутреннюю модель, где отдельно выделяются узлы, интерфейсы и связи. Такой подход сохраняет простоту заполнения таблицы и одновременно позволяет использовать данные для экспорта во входные форматы средства развертывания сетевых конфигураций или средства построения диаграмм топологии. diff --git a/Latex/Chapter4.tex b/Latex/Chapter4.tex index 959d9a7..c0658ac 100644 --- a/Latex/Chapter4.tex +++ b/Latex/Chapter4.tex @@ -21,8 +21,7 @@ -Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций и средства построения диаграмм. YAML-файл в этом случае используется как структурированное описание, пригодное для дальнейшей обработки программами, вроде Netloom \cite{netloom} для поднятия сети из виртуальных машин, а D2 может применяться для генерации визуального представления сети на основе уже построенной модели. - +Также необходима разработка механизмов преобразования модели. Основными преобразованиями являются импорт данных из табличного описания во внутреннюю модель, экспорт во входные языки средства развертывания сетевых конфигураций \cite{netloom} и средства построения диаграмм (D2). Программная реализация выполнена на языке Python. Объём написанного кода: 710 строк, 48 килобайт. Код выложен на веб-сервисе Github \cite{github}. На рисунке \ref{fig:schema} представлен основной процесс работы с утилитой. Построение диаграмм происходит с помощью модуля py-d2 (пример на рис \ref{fig:diagram}).