Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ_ИПОВС / ВКР ИПОВС / ПИН-42_2019_Золотарев_ИА_ПЗ.docx
Скачиваний:
98
Добавлен:
29.10.2021
Размер:
2.62 Mб
Скачать

2.2. Производственные средства для настройки сетевых устройств, работающих по протоколу rstp

Автоматизированная настройка сетевого устройства будет реализована с помощью очереди сообщений, которые будут при появлении новых или изменении старых данных в БД, при готовности сокета mstpd для чтения и внутри программы для записи данных в сокет mstpd. Очередь сообщений должна работать в одном потоке выполнения, а значит, быть асинхронной, чтобы приложение не ожидало нового сообщения, что может привести к нарушению работоспособности связанных модулей.

Для реализации очереди сообщений была выбрана библиотека libevent. Она написана Нильсом Провосом для поддержки механизма асинхронного неблокирующего ввода/вывода и механизма оповещения о наступивших событиях с помощью функций обратного вызова при наступлении заданного события для дескриптора файла (получения доступа для чтения, записи или другое событие) или по прошествии заданного времени. Библиотека распространяется свободно на условиях лицензии Berkeley Software Distribution [27]. Схема очереди сообщений изображена на рисунке 2.1.

Рис. 2.1. Очередь сообщений

Помимо очереди сообщений, необходимо хранить внутреннюю структуру с настройками мостов и портов, периодически обновляя ее при получении новых данных из БД, так как API mstpd требует отправки полного множества настроек вместо частной настройки. Для хранения вышеуказанных данных была выбрана структура avl_tree из библиотеки libubox, являющаяся реализацией АВЛ-деревьев [28].

Для обмена данными с БД ConfigDB используется JSON-формат, в связи с этим, требуется библиотека для работы с JSON. Была выбрана библиотека Jansson, она имеет обширный и удобный API, качественную документацию, используется в других проектах компании и распространяется свободно по лицензии MIT [29].

Журналирование будет реализовано с помощью библиотеки liblogging, распространяющейся по свободной лицензии. Помимо логирования в процессе работы ПМ АУС, библиотека liblogging поможет во время отладки и тестирования ПО, так как предлагает удобный API для вывода необходимой информации в stdout [30].

Для взаимодействия с сетевыми функциями ядра Linux будет использована библиотека libnl, которая реализует взаимодействие с ядром с помощью сокетов Netlink [31]. Эта библиотека имеет обширный и удобный API, качественную документацию, используется в других проектах компании и распространяется свободно по лицензии GNU Lesser General Public License v2.1. Возможности этой библиотеки будут использованы при реализации ПМ АУС для получения информации о сетевых интерфейсах [32].

2.3. Организация связи пм аус с другими компонентами

ПМ АУС будет получать данные из БД, а значит ему нужно средство взаимодействия с ней. Так как в качестве БД на предприятии используется нереляционная БД ConfigDB, в качестве библиотеки для общения с ней будет использована libconfigdb, которая предоставляет API для подписки на уведомления об изменении данных в БД, для запроса данных по некоторому адресу в БД, для регистрации обработчиков данных.

2.4. Архитектура пм аус

Архитектура программного обеспечения – это структура программы или вычислительной системы, которая включает в себя программные компоненты, видимые снаружи свойства этих компонентов, а также отношение и взаимодействие между ними. Шаблон (паттерн) проектирования – повторяемая при разработке ПО архитектурная конструкция, представляющая собой решение проблемы проектирования в рамках некоторого часто возникающего контекста [33].

В ПМ АУС используется паттерн цепочка обязанностей. Это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке обработчиков. Каждый последующий обработчик решает, может ли он обработать запрос сам и стоит ли передавать запрос дальше по цепи. В ПМ АУС присутствует множество связанных между собой обработчиков различных событий, таких как получение данных из БД, готовность сокета mstpd к записи и чтению и другие. Вызов одного обработчика зависит от вызова другого, например, после вызова обработчика данных из БД, тот вызывает обработчик, которые должен пройтись по внутреннему представлению настроек и отправить их в mstpd, во время обхода этой структуры вызываются обработчики, которые пишут данные в сокет, а потом ожидают ответа от сокета для проверки нормальной работоспособности сервиса mstpd, затем обработчики сигнализируют программе о том, что запись данных окончена и через 3 секунды нужно вызвать обработчик для чтения статуса портов и мостов в mstpd, который после завершения своей работы вызывает обработчик для записи данных в БД. Схема работы паттерна цепочка обязанностей указана на рисунке 2.2.

Рис 2.х. Схема работы паттерна цепочка обязанностей

Структура ПМ АУС указана на рисунке 2.3.

Рис 2.3. Структура ПМ АУС

На рисунке 2.3. непосредственно к ПМ АУС относятся слой взаимодействия, внутреннее представление данных, блоки обработки данных команд mstpd и данных из БД, а БД, mstpd и пользовательский интерфейс (графический или консольный, указан на рисунке как UI) являются внешними по отношению к ПМ АУС.