\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[russian]{babel}

\usepackage{graphics}
\usepackage{indentfirst}
\usepackage{cpindex-lhs}

\begin{document}

\section{Общая структура}
\begin{figure}[htb]
\begin{center}
\includegraphics{mnet.model.ps}
\end{center}
\caption{Структура сети.}
\label{mnet-model}
\end{figure}

\section{Элементы}
Структура связей элементов.
\begin{figure}[htb]
\begin{center}
\includegraphics{mnet-element.model.ps}
\end{center}
\caption{Структура связей.}
\label{mnet-model}
\end{figure}

\section{Безопасность}
\subsection{Модель доверия}
Каждый хост, генерирующий сообщения имеет ключ, которым подписывает их.
При этом, сообщение относящееся не к данному хосту, но подписанное им считается некорректным.
Проверка осуществляется на входе в систему обработки. После этого подпись хоста
несет лишь информационный характер и может быть удалена. Передача между отдельными
подсистемами осуществляется при полном доверии между ними. Данная система достаточно
проста в реализации и, в общем-то, достаточно надежна. Компрометация хоста может 
привести только к искажению информации им создаваемой. При этом компрометация промежуточного
узла может привести к нарушению работы всяй системы. При этом могут существовать обработчики,
которые лишь потребляют собощения.

\def \iplus {\item[\bf +]}
\def \iminus {\item[\bf \,--\,]}
\section{Компоненты}
Логически система разбивается на следующие компоненты
\begin{itemize}
\iminus Препроцессор конфигов. Возможно использование XSLT для упрощения
конфигурационных файлов.
\iplus Генератор сообщений. Собственно код отвечающий за выполнение тестов, сбор
информации и передачу ее шине.
\iplus Шина сообщений. Механизм распространения сообщений внутри системы.
\iminus Синхронизация. Обеспечение устойчивости системы к потерям в некоторых
каналах.
\iminus Агрегация. Уменьшение потока сообщений за счет объединения схожих
сообщений (например, при построении графика загрузки канала).
\iminus Обработчик. Собственно обработка данных, принятие решения о той или иной
реакции.
\end{itemize}
\subsection{Генератор сообщений}
Код обработки описания хоста и выполнения тестов. Есть примитивная реализация,
написано три теста --- \texttt{uname}, \texttt{uptime} и \texttt{ifflags}.
\subsection{Шина сообщений}
Возможно использование какой-нибудь левой. Стоит посмотреть на разные.
\begin{itemize}
\item \textsf{dbus} Работает только внутри одного хоста.
\item \textsf{spread} Нетривиальный демон, непонятна система авторизации.
\item \textsf{mbus} Несложный протокол обмена сообщениями. Есть RFC. Есть
питоновская морда. Использует multicast/unicast сообщения.
\end{itemize}
\section{Реализация}
\subsection{Языки}

Ниже перечислены возможные языки, их плюсы, минусы и возможная роль.
Использование C/C++ пока не предполагается.
\subsubsection{XML}
\begin{itemize}
\iplus распространенность, наличие парсеров практически во всех языках
\iplus human readable; значительно облегчает отладку и добавление новых
\iplus древовидная расширяемая структура
\iminus небольшое увеличение объема
\end{itemize}
Роль: формат сообщений и хранимое представление данных, конфигурационные файлы

\subsubsection{XSLT}
\begin{itemize}
\iplus наиболее удобный способ переводить XML в HTML
\iplus простой способ манипуляции над XML 
\iplus псевдо-функциональность, простое встраивание в скрипты
\iminus сложность написания объемных алгоритмов
\iminus нетривиальные глюки реализаций
\end{itemize}
Роль: преобразование на этапе представления пользователю, компиляция конфигурационных файлов,
несложные манипуляции над состояниями

\subsubsection{Shell Script Suite (bash, awk, sed, ...)}
\begin{itemize}
\iplus распространенность, почти любая *NIX система
\iplus скорость и простота написания конечных скриптов
\iplus использование программ написаных на любых языках
\iminus сложность написания statefull программ
\end{itemize}
Роль: скрипты вытягивающие информацию из системы, склейки

\subsubsection{Python}
\begin{itemize}
\iplus скриптовый, но с возможностью компиляции
\iplus простота использования в качестве языка-склейки различных частей
\iminus глючные движки
\iminus неявная типизация, облегчающие появление ошибок
\end{itemize}
Роль: склейка внутренних компонент, возможно --- реализация отдельных частей


\subsubsection{Haskell}
\begin{itemize}
\iplus удобство описания алгоритмов
\iplus возможность прямой компиляции в документацию
\iminus сложная самантика
\iminus слишком высокоуровневый
\end{itemize}
Роль: язык общего описания структуры, возможно --- реализация компилятора состояний

\subsection{Транспортный протокол}
Для пассивных коммуникаций имеет смысл использовать в качестве транспортного уровня http (GET).
Даже если внутри хоста используется какой-то другой протокол, довольно просто пишется web-гейт в
него.

Для активного взаимодействия возможно использование либо http (POST), либо написание простого 
сетевого сервера
работающего с XML сообщениями фиксированного формата. В последнем случае возможно использование
клиента на базе программ netcat или socket.

\newpage
\section{Приложение}
{\input {void.local.xml}}

{\input {mnet.lhs}}

\end{document}
