Найти в Дзене
TELECOMO

Введение в NETCONF/YANG, или как сократить время на настройку сетевых элементов конфигурации.

Команды поставщиков услуг и корпоративных сетей, которые движутся к сервис-ориентированному подходу в управлении сетью, используют IETF Network Configuration Protocol (NETCONF) и YANG, языки моделирования данных, чтобы сократить время на ручные операции, связанные с настройкой сетевых элементов конфигурации.
NETCONF/YANG предоставляет стандартизированный способ программного обновления и изменения

Команды поставщиков услуг и корпоративных сетей, которые движутся к сервис-ориентированному подходу в управлении сетью, используют IETF Network Configuration Protocol (NETCONF) и YANG, языки моделирования данных, чтобы сократить время на ручные операции, связанные с настройкой сетевых элементов конфигурации.

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

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

Введение

Начнем с проблемы. Исторически сложилось так, что основным методом настройки сетевого устройства был интерфейс командной строки или, в некоторых случаях, SNMP. Однако эти методы вызвали ряд проблем.

Недостатки CLI:

  • Вводные команды отличается от поставщика к поставщику.
  • Вывод команд отличается у каждого поставщика. Требуется отдельная логика синтаксического анализа для каждого поставщика.
  • Структура и синтаксис CLI подвержены изменениям. Это делает наши скрипты CLI ненадежными.

Недостатки SNMP:

  • Ненадежный, поскольку изначально использует UDP в качестве транспортного протокола.
  • Традиционно небезопасный. Хотя протокол SNMPv3 пытается решить эту проблему, он по-прежнему имеет свои проблемы с безопасностью. В основном это сообщения обнаружения, используемые для согласования ключей аутентификации и шифрования, которые не запаролены и не зашифрованы.
  • Нет четкого разграничения между данными конфигурации и данными мониторинга. В результате на стороне клиента должны выполняться дополнительные процессы для сортировки.
  • Отсутствуют стандартные MIB для настройки сетей. Вот почему производители разработали различные патентованные MIB, которые стали препятствием для управления платформами разных производителей.
  • Не предоставляет реальной модели транзакционных операций, позволяющей выполнять простые откаты и т. д.

С распространением сетевой автоматизации (что-то вроде SDN или Northbound Interface) возникла потребность в стандартизации и улучшении способа программирования сетевых устройств. Способ, который бы обеспечил:

  • Программный интерфейс для настройки устройства.
  • Разделение данных конфигурации и состояния.
  • Возможность настраивать сервисы, а не только устройства.
  • Встроенная проверка ошибок и восстановление.

Решение этой проблемы пришло от IETF в форме NETCONF и YANG. В своей простейшей форме YANG предоставляет язык для описания вашей желаемой конфигурации (или состояния). NETCONF, с другой стороны, предоставляет протокол для доставки и выполнения необходимых операций для достижения желаемого состояния, описанного в модели YANG.

YANG

YANG (Yet Another Next Generation) — это язык моделирования данных, обеспечивающий стандартизированный способ моделирования рабочих и конфигурационных данных сетевого устройства. YANG, будучи языком не зависит от протокола, может быть преобразован в любой формат кодирования, например XML или JSON.

ОТКРЫТЫЕ/СОБСТВЕННЫЕ МОДЕЛИ

Вы можете спросить, кто создает эти модели? Модели классифицируются на открытые и собственные, с каждой из которых работают разные группы.

  • Открытые модели — разработаны, чтобы быть независимыми от базовой платформы и нормализовать конфигурацию сетевых устройств для каждого поставщика. Модели Open YANG разрабатываются поставщиками и органами по стандартизации, такими как IETF, ITU, OpenConfig и т. д.
  • Собственные (Native) модели разрабатываются поставщиками. Они связаны и предназначены для интеграции с функциями или конфигурацией, относящимися только к этой платформе.

КОМПОНЕНТЫ

Модель YANG состоит из различных компонентов. Давайте разберем каждый из них:

  • Контейнер — набор логически сгруппированной информации. Один такой контейнер для конфигурации, и один для состояния.
  • Список — внутри контейнера вы можете иметь список или даже несколько списков. Например, список интерфейсов.
  • Ключ. Каждый элемент в списке ссылается на ключ.
  • Лист — внутри каждого списка у нас есть лист, который содержит информацию.
  • Тип данных — каждый лист связан с типом данных.

NETCONF

NETCONF (NETwork CONFiguration) — это протокол, определенный IETF для «установки, управления и удаления конфигурации сетевых устройств». Операции NETCONF выполняются через уровень RPC с использованием кодирования на основе XML.

Некоторые из ключевых особенностей NETCONF: возможность отката конфигураций, возможность поддержки любой модели данных и отделение конфигурации от рабочего состояния.

СТЕК ПРОТОКОЛОВ

Протокол NETCONF можно разбить на 4 уровня. Такие как:

  • Контент — модели данных NETCONF и операции протокола используют язык моделирования YANG (RFC 6020). Модель данных описывает структуру, семантику и синтаксис данных.
  • Операции — набор операций базового протокола, инициируемых методами RPC с использованием XML-кодирования, для выполнения операций на устройстве. Такие как <get-config>, <edit-config> и <get>.
  • Сообщения — для использования определен набор сообщений и уведомлений RPC, включая <rpc>, <rpc-reply> и <rpc-error>.
  • Транспорт — транспортный уровень, используемый для обеспечения пути связи между клиентом/сервером (менеджером/агентом). Используемый протокол не зависит от NETCONF, но обычно используется SSH.
-2

ОБМЕН ИНФОРМАЦИЕЙ

NETCONF основан на модели клиент/сервер, известной как — менеджер и агент.

В коммуникационном потоке сеанса NETCONF есть 3 основные части:

  • Установление сеанса — каждая сторона отправляет <hello> вместе со своими <capabilities>. Объявляя, какие операции (возможности) он поддерживает.
  • Запрос операции — затем клиент отправляет свой запрос (операцию) серверу через сообщение <rpc> . Затем ответ отправляется обратно клиенту в <rpc-reply>.
  • Закрытие сеанса — затем сеанс закрывается клиентом через <close-session> .

ОПЕРАЦИИ

Действия выполняются над сетевым устройством (и его хранилищами данных) с помощью набора операций. Каждая из операций связана с возможностями устройств (клиента или сервера). Например, если мы посмотрим на <get-config>, он поддерживается функцией :base.

Наименование операции Описание

<get> Получить текущую конфигурацию и информацию о состоянии

<get-config> Получить все или часть указанного хранилища данных конфигурации

<edit-config> Загрузить всю или часть конфигурации в указанное хранилище данных конфигурации

<copy-config> Заменить все хранилище данных конфигурации другим хранилищем данных

<delete-config> Удалить хранилище данных конфигурации

<discard-changes> Удалить все изменения из <candidate/> и приведите его в соответствие с хранилищем данных конфигурации <running/>

<create-subscription> Создать подписку на уведомления NETCONF

<commit> Скопировать хранилище данных кандидата в текущее хранилище данных

<cancel-commit> Отменить текущую подтвержденную фиксацию

<lock> Заблокировать всю систему хранилища данных конфигурации, который может записать сеанс

<unlock> Разблокировать всю систему хранения данных конфигурации, которая может записать сеанс

<closed session> Грамотное завершение сеанса NETCONF

<kill-session> Принудительное завершение сеанса NETCONF

ХРАНИЛИЩА ДАННЫХ КОНФИГУРАЦИИ

Существует 4 хранилища данных конфигурации NETCONF — Running, Startup, Candidate и URL. Затем с этими хранилищами данных выполняются действия с помощью различных операций NETCONF (как упоминалось ранее):

  • Running — хранилище данных конфигурации, содержащее конфигурацию, которая применена и выполняется на сетевом устройстве.
  • Startup — хранилище данных конфигурации, в котором хранится конфигурация, загружаемая устройством при включении.
  • Candidate — хранилище данных конфигурации, которым можно управлять, не влияя на текущую конфигурацию устройства, и которое может быть передано в текущее хранилище данных конфигурации.
  • URL-адрес — хранилище данных конфигурации, конфигурация которого находится в отдельном месте, доступ к которому осуществляется через URL-адрес.