Представьте себе возможность использовать единый API для связи с любым сетевым оборудованием независимо от производителя. Представьте, если бы этот API использовал стандартные модели YANG и даже разрешил бы использование пользовательских моделей YANG. Представьте, если бы этот API был с открытым исходным кодом.

В ближайшие несколько месяцев вам больше не придется воображать. Network to Code прилагает все усилия, чтобы это стало реальностью.

Постановка проблемы

Прежде чем мы посмотрим на решение, давайте установим уровень проблемы.

Хотя многие современные сетевые операционные системы (NOS) в настоящее время предлагают API, многие из них уникальны для каждого поставщика или, что еще хуже, уникальны для каждой платформы. Конечно, существует еще больше устаревших платформ без поддержки API. Эти устройства предлагают SSH-доступ к интерфейсу командной строки (CLI) устройства. В обоих случаях использования данные, возвращаемые командой или вызовом API, зависят от поставщика.

Примечание. Хотя мы знаем, что несколько поставщиков добавили поддержку моделей данных, не зависящих от поставщиков, они немногочисленны и разрозненны, часто содержат ошибки и часто не имеют паритета с другими платформами и поставщиками.

Если возвращаемые данные зависят от поставщика, это означает, что для использования данных и оптимизации действий по автоматизации сети необходим некоторый уровень нормализации данных. При нормализации необходимо учитывать как анализ текста для устаревших устройств, так и преобразование уже структурированных данных, таких как JSON / XML, в нормализованные и структурированные данные с желаемым состоянием. Более того, для комплексного решения, которое также включает в себя управление конфигурацией, процесс нормализации должен иметь способы преобразования нормализованных данных обратно в исходную конфигурацию поставщика (конкретные команды интерфейса командной строки или структурированные данные).

Решение

На это легко ответить, что все поставщики и устройства должны поддерживать одни и те же модели и API (и мы с этим согласны!). Однако это будет некоторое время. Индустрия движется медленно. Несмотря на то, что в индустрии маршрутизаторов и коммутаторов наблюдается прогресс, следует рассмотреть различные типы устройств, такие как межсетевые экраны и балансировщики нагрузки. Здесь еще много работы (требуется дополнительная поддержка со стороны поставщиков и спрос со стороны покупателей).

Сеть для программирования на основе модели API с открытым исходным кодом.

Чтобы смягчить существующую проблему и продвинуть отрасль вперед, Network to Code будет открывать исходный код для четырех различных проектов, создавая независимый от поставщика и расширяемый API RESTCONF. Этот API сможет общаться с любым устройством с любой ОС, включая устаревшие устройства, поддерживающие только SSH.

Четыре проекта, которые мы выпустим, в том порядке, в котором они будут выпущены:

Янгифы

Yangify — это движок, который фокусируется на синтаксическом анализе и переводе собственной конфигурации в данные YANG в кодировке JSON с использованием собственного Python, в отличие от предметно-ориентированного языка (DSL). Он берет встроенную конфигурацию из подобных команд show и создает структурированный и методичный подход для создания данных JSON, которые соответствуют моделям YANG. Он также переводит YANGify’d JSON в собственную конфигурацию (команды CLI или собственный JSON / XML). Для всех, кто уже занимался парсингом текста в своем путешествии, Yangify аналогичен TextFSM, хотя Yangify анализирует и переводит , а не только разбирает .

Розетта

Rosetta выполняет две основные функции. Во-первых, проект Rosetta будет хранить все синтаксические анализаторы и переводчики Yangify. Во-вторых, он предоставит интуитивно понятный интерфейс Python для использования всех парсеров и переводчиков. Rosetta — это аналог ntc-шаблонов с аналогией TextFSM.

Модели NTC YANG

Модели YANG, основанные на стандартах, на самом деле довольно сложны и вложены и обычно требуют сложного обучения. Эти модели должны учитывать почти все варианты использования функции. Чтобы получить преимущества API-интерфейсов на основе моделей, но упростить их использование и сделать их практичными для большинства предприятий, этот проект будет содержать комбинацию урезанных стандартных моделей YANG и чрезвычайно упрощенных моделей, ориентированных на основные наборы функций, часто встречающиеся в Корпоративные сети.

Rosetta RESTCONF API

Краеугольным камнем всего этого является легкий RESTCONF API, который объединяет все вышеупомянутые функции, но также интегрирует южное подключение к сетевым устройствам, что делает этот API полноценным мультивендорным. API будет взаимодействовать с сетевыми устройствами, анализируя и переводя собственные конфигурации в режиме реального времени. Rosetta RESTCONF API также будет поддерживать возможные конфигурации и возможность подключаться к другим системам с помощью Python API, настраиваемый и запускаемый при любом входящем вызове API. Для обеспечения возможности подключения устройства NAPALM будет использоваться в Rosett RESTCONF API.

Ниже приводится визуальное представление того, как выглядит полный стек для Rosetta RESTCONF API, объединяя все, что будет с открытым исходным кодом, и NAPALM.

API Rosetta RESTCONF

Удачной автоматизации!