Статья посвящена решению проблемы верификации конфигурационных файлов сетевого оборудования при помощи разработки программного средства, выполняющего оперативный анализ этих файлов на основе заранее определенных пользовательских правил. В статье рассматриваются особенности данного программного решения и принципы его работы.
Ключевые слова: сетевое администрирование, сетевое телекоммуникационное оборудование, верификация конфигурационных файлов, программное средство.
Конфигурирование телекоммуникационного оборудования крупных сетевых инфраструктур является трудоемким процессом, требующим в частности многократных проверок корректности всех настроек оборудования после каждого их изменения. Информация о задаваемых параметрах работы оборудования хранится в специализированных конфигурационных файлах [1]. Большой объем этих файлов создает серьезные трудности для ручной их верификации, представляющей собой рутинные процедуры, что приводит к большому влиянию человеческого фактора на результат [2]. Очевидно, что низкое качество выполнения данного вида работы способно значительно увеличить риск возникновения сбоев в работе сети и недоступности ее сегментов. С другой стороны, выполнение данной работы компьютером гарантирует отсутствие ошибок по невнимательности, быстроту и своевременную отчетность.
Таким образом, является актуальной задача автоматизации процесса верификации конфигурационных файлов сетевого оборудования, которая заключается в проверке корректности составления этих файлов и их соответствие пользовательским правилам, определяемым сетевым специалистом.
Существующие на сегодняшнем рынке программные средства, предлагаемые разработчиками оборудования, ориентированы на выполнение более общего круга задач сетевого администрирования, обладают крайне избыточным функционалом, привязкой к конкретной аппаратной платформе и не позволяют решить проблему во всей полноте на требуемом уровне.
Для решения описанной задачи предлагается использование специализированного программного средства, ориентированного на выполнение парсинга конфигурационных файлов, их анализ согласно заданным правилам, отслеживание изменения этих файлов и проведение их оперативной верификации. Это позволяет существенно уменьшить влияние человеческого фактора на результаты проверки соответствия конфигурационных файлов задаваемым требованиям, саму же проверку изменений файлов выполнять с минимальной временной задержкой в автоматическом режиме.
Функциональная схема программного средства верификации конфигурационных файлов представлена на рисунке 1.
Рис. 1. Функциональная схема предлагаемого решения по верификации конфигурационных файлов
Основной задачей программного средства является мониторинг изменений в конфигурационных файлах сетевого оборудования и файлов пользовательских правил. При этом доступ к файлам осуществляется напрямую в файловой системе или посредством систем управления версиями (Git, CVS, GNU Bazaar и др.), команды управления которыми выполняются с помощью вызовов из самой программы, что позволяет производить верификацию по мере внесения изменений в автоматическом режиме.
В основе работы предлагаемого программного средства лежит процесс формирования иерархического дерева из конфигурационного файла и дальнейшего анализа интересующих фрагментов построенного дерева в соответствии с пользовательскими правилами. Сведения о выявленных несовпадениях формируются в отчет о работе, направляемый сетевому специалисту по электронной почте.
Анализ изменений происходит следующим образом: если изменения были внесены в пользовательские правила, то все конфигурационные файлы нуждаются в повторной верификации вне зависимости от наличия в них изменений; если изменений в пользовательских файлах не происходило, то повторно проверяются только те конфигурационные файлы, которые были изменены.
Для хранения почты сетевого специалиста, путей к пользовательским правилам и конфигурационным файлам сетевого оборудования, а также других настроек, в частности, параметров работы через систему управления версиями, например git [4], в корне домашнего каталога пользователя создается файл .pca_config. В этом же файле ведется учет времени изменения конфигурационных файлов для их оперативного анализа. Структура файла настроек имеет следующий вид:
{
"net_config_filepath": "filepath",
"user_rules_filepath": "filepath",
"email":
{
"in_use":"yes",
"mail_from":"mail@from.xyz",
"host":"host",
"port":"port",
"password_filepath":"filepath",
"mail_to":
[
"mail1@to.xyz",
"mail2@to.xyz",
"mail3@to.xyz",
"mail4@to.xyz"
]
},
"git":
{
"in_use":"yes"
},
"modifications":
[
{
"filename":"filename1",
"timestamp":"1234567890"
},
{
"filename":"filename2",
"timestamp":"1234567890"
}
]
},
где «net_config_filepath» — путь к папке с конфигурационными файлами; «user_rules_filepath» — путь к папке с пользовательскими правилами; «email» — параметры отправки отчета по электронной почте; «git» — параметры использования системы контроля версий git; «modifications» — хранение имен файлов и времени их модификации для отслеживания изменений.
Алгоритм работы программного средства верификации конфигурационных файлов представлен на рисунке 2.
Рис. 2. Алгоритм работы программного средства верификации конфигурационных файлов
Очевидно, что для упрощения работы с программным средством верификации конфигурационных файлов и обеспечения возможности его использования на разнородном сетевом оборудовании, формат записи пользовательских правил должен обладать гибкостью и быть легко читаемым. Исходя из этого, в качестве структуры хранения пользовательских правил было решено использовать JSON [5] из-за его простоты и читаемости, гибкость была достигнута за счет использования регулярных выражений внутри правил. Итоговая структура имеет следующий вид:
{
"sections":
[
{
"device_type": "device_type",
"type": "type",
"trigger": "trigger",
"conditions":
[
{
"rule": "rule",
"message": "message",
"command": "command"
}
]
}
]
},
},
где «sections» — логическое деление файла по секциям; «device_type» — тип устройства; «type» — тип проверяемого интерфейса; «trigger» — выражение, необходимое для начала проверки секции; «conditions» — массив правил проверки; «rule» — ожидаемое выражение; «message» — сообщение, отображаемое в случае, если «rule» не найдено; «command» — команда, выполняемая в случае, если «rule» не найдено.
По мере проверки конфигурационных файлов формируется отчет, содержащий все ошибки, выявленные в ходе работы программного средства, с указанием имени ошибочного конфигурационного файла и невыполненного пользовательского правила.
Результатом проведенной работы является разработка программного средства верификации конфигурационных файлов сетевого оборудования на основе пользовательских правил. Разработанное программное средство позволит существенно увеличить производительность работы ИТ-отдела за счет снижения влияния человеческого фактора и автоматизации процесса проверки конфигурации.
Следует отметить, что расширение функционала, обеспечивающего автоматическое выполнение действий над файлами, основываясь на пользовательских правилах, позволит также автоматизировать процесс исправления распространенных типовых ошибок конфигурирования.
Алгоритм, лежащий в основе разработанного программного средства верификации конфигурационных файлов, может быть полезен при автоматизации процессов анализа и верификации различных иерархических структур данных без привязки к конкретной предметной области.
Литература:
- Cisco 1800 Series Integrated Services Routers (Fixed) Software Configuration Guide // CISCO. URL: http://www.cisco.com/c/en/us/td/docs/routers/access/1800/1801/software/configuration/guide/scg/routconf.html (дата обращения: 17.04.2016).
- Девятков В.В. Мьо Тан Тун. Автоматизация проверки некорректности конфигурирования сетевых экранов // Вестник московского государственного технического университета им. н. э. баумана. серия: приборостроение. — М.: Изд-во МГТУ им. Н. Э. Баумана, 2015. № 1. С 100-110.
- Гагарина Л.Г., Кокорева Е.В., Виснадул Б.Д. Технология разработки программного обеспечения. — М.: Форум, 2008. — 399 с.
- Documentation // Git. URL: https://git-scm.com/doc (дата обращения: 17.04.2016).
- Introducing JSON // JSON. URL: http://www.json.org/ (дата обращения: 17.04.2016).
- Our Documentation // Python. URL: https://www.python.org/doc/ (дата обращения: 17.04.2016).
- ciscoconfparse // PyPi. URL: https://pypi.python.org/pypi/ciscoconfparse (дата обращения: 17.04.2016).