Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Еще одно новое поколение [1] [2] ( YANG , / jæŋ /, что рифмуется с «зависанием») [3] - это язык моделирования данных для определения данных, отправляемых по протоколам сетевого управления, таким как NETCONF [4] и РЕСТКОНФ. [5] Язык моделирования данных YANG поддерживается рабочей группой NETMOD [6] в Internet Engineering Task Force (IETF) и первоначально был опубликован как RFC  6020 в октябре 2010 года с обновлением в августе 2016 года ( RFC 7950 ). Язык моделирования данных может использоваться для моделирования как данных конфигурации, так и данных состояния сетевых элементов. Кроме того, YANG можно использовать для определения формата уведомлений о событиях, отправляемых сетевыми элементами, и он позволяет разработчикам моделей данных определять подпись удаленных вызовов процедур, которые могут быть вызваны на сетевых элементах через протокол NETCONF. Язык, не зависящий от протокола, затем может быть преобразован в любой формат кодирования, например XML или JSON , который поддерживает протокол конфигурации сети.

YANG - это модульный язык, представляющий структуры данных в формате дерева XML . Язык моделирования данных имеет ряд встроенных типов данных. Дополнительные типы данных, специфичные для приложения, могут быть получены из встроенных типов данных. Более сложные многократно используемые структуры данных можно представить в виде групп. Модели данных YANG могут использовать выражения XPATH для определения ограничений на элементы модели данных YANG.

История [ править ]

Многие протоколы управления сетью имеют связанные языки моделирования данных. Первым широко распространенным Интернет-стандартом для управления сетью был простой протокол управления сетью (SNMP). Язык моделирования данных, связанный с SNMP, был назван структурой управляющей информации (SMI). Сам язык SMI был основан на версии Abstract Syntax Notation One (ASN.1) 1988 года . Текущая версия языка SMI, SMIv2, определенная в RFC 2578 , 2579 и 2580 , превратилась в расширенное подмножество ASN.1. 

В конце 1990-х был начат проект по созданию замены SMIv2, который получил название SMIng. Одна из причин заключалась в том, чтобы отделить SMIng от протокола управления SNMP и дать SMIng синтаксическую структуру, которую легко анализировать для компьютерных программ и легко изучить для людей, знакомых с языками программирования, использующими нотацию типа C. Хотя проект SMIng не получил успеха в IETF, спецификации SMIng были опубликованы в качестве экспериментальных документов в мае 2004 г. ( RFC 3780 , 3781 ). 

Вскоре после разработки протокола NETCONF в IETF стало ясно, что язык моделирования данных необходим для определения моделей данных, которыми управляет протокол NETCONF. Команда дизайнеров создала предложение, которое стало основой языка YANG. [7] Синтаксическая структура и система базовых типов были по существу заимствованы из SMIng. Однако, исходя из уроков, извлеченных из проекта SMIng, не было предпринято никаких попыток сделать протокол YANG нейтральным. Вместо этого YANG связывается с концепциями протокола NETCONF, такими как предположение, что экземпляры модели данных могут быть сериализованы в XML . Стандартизация YANG началась с создания рабочей группы NETMOD в апреле 2008 года. Спецификация YANG 1.0 была опубликована как RFC 6020. в октябре 2010 года. В последнее время рабочая группа NETMOD работает над YANG 1.1, который был опубликован в августе 2016 года в RFC 7950 . [2] 

Пример [ править ]

Следующий модуль YANG example-sportsпоказывает модель данных для командных видов спорта. Модуль объявляет пространство имен и префикс и импортирует модуль библиотеки типов ietf-yang-typesперед определением типа season. Затем он определяет контейнер, sportsкоторый включает список persons и список teams. У команды есть список игроков, которые ссылаются на людей через leafrefтип и его pathограничение.

module example-sports {   пространство имен "http://example.com/example-sports" ;  приставка спортивная ;  импортировать ietf-yang-types { префикс ян ; }      typedef season {   строка типа ;  описание «Название спортивного сезона, включая тип и год, например,  « Лига чемпионов 2014/2015 »». ; } контейнерный спорт {   config true ;  list person {   ключевое имя ;  имя листа { тип строка ; }      лист день рождения { тип янь : дата и время ; обязательно true ; }        } list team {   ключевое имя ;  имя листа { тип строка ; }      list player {   ключ «название сезона» ;  уникальный номер ;  название листа { type leafref { путь "/ спорт / человек / имя" ; } }          листовой сезон { тип сезона ; }      номер листа { type uint16 ; обязательно true ; }        оценка листа { type uint16 ; по умолчанию 0 ; }        } } }}

Кодировка XML [ править ]

Блок кода ниже показывает XML- представление экземпляра example-sportsмодели данных.

<data  xmlns = "urn: ietf: params: xml: ns: netconf: base: 1.0" > <sports  xmlns = "http://example.com/example-sports" >  <person>  <name> Лионель Андрес Месси </name>  <birthday> 1987-06-24T00: 00: 00-00: 00 </ birthday >  </person>  <person>  <name> Криштиану Роналду </name>  <birthday> 1985-02-05T00: 00: 00-00: 00 </birthday>  </person>  <team>  <name> FC Barcelona < / name>  <player>  <name> Лионель Андрес Месси </name>  <season> Лига чемпионов 2014/2015 </season> <number> 10 </number>  <scores> 43</scores>  </player>  </team>  <team>  <name> Реал Мадрид </name>  <player>  <name> Криштиану Роналду </name>  <season> Лига чемпионов 2014/2015 </season>  <number > 7 </number>  <scores> 48 </scores>  </player>  </team>  </sports></data>

Кодировка JSON [ править ]

Блок кода ниже показывает JSON- представление экземпляра example-sportsмодели данных.

{  "example-sports: sports" :  {  "person" :  [  {  "name" :  "Лионель Андрес Месси" ,  "birthday" :  "1987-06-24T00: 00: 00-00: 00"  },  {  "name " :  " Криштиану Роналду " ,  " день рождения " :  " 1985-02-05T00: 00: 00-00: 00 "  }  ],  " команда " :  [  {  " имя " :  " ФК Барселона " ,  " игрок " :  [  {  "имя" :  "Лионель Андрес Месси » ,  « сезон » : «Лига чемпионов 2014/2015» ,  «число» :  10 ,  «количество очков» :  43  }  ]  },  {  «имя» :  «Реал Мадрид» ,  «игрок» :  [  {  «имя» :  «Криштиану Роналду» ,  «сезон» " :  " Лига чемпионов 2014/2015 " ,  " номер " :  7 ,  " баллы " :  48  }  ]  }  ]  } }

Документация [ править ]

Спецификации языков и архитектурные документы [ править ]

Следующие запросы комментариев (RFC) определяют язык YANG и некоторые базовые расширения:

  • RFC  6020 : YANG - язык моделирования данных для протокола конфигурации сети (NETCONF)
  • RFC  6110 : сопоставление YANG с языками определения схемы документов и проверка содержимого NETCONF
  • RFC  7950 : язык моделирования данных YANG 1.1 [не заменяет RFC 6020 ] 
  • RFC  7951 : JSON-кодирование данных, смоделированных с помощью YANG
  • RFC  7952 : Определение и использование метаданных с YANG
  • RFC  8342 : Архитектура хранилища данных сетевого управления (NMDA)
  • RFC  8525 : библиотека YANG [устаревший RFC 7895 ] 
  • RFC  8528 : монтаж схемы YANG
  • RFC  8791 : Расширения структуры данных YANG

Рекомендации и сопроводительная документация [ править ]

Следующие запросы о комментариях содержат руководящие принципы и подтверждающую документацию:

  • RFC  8407 : Рекомендации для авторов и рецензентов документов, содержащих модели данных YANG [ RFC 6087 устарел ] 
  • RFC  8199 : Классификация модулей YANG
  • RFC  8340 : Древовидные диаграммы YANG
  • RFC  8969 : платформа для автоматизации управления услугами и сетью с помощью YANG

Использование IETF [ править ]

Спецификации протокола Standards-track [ править ]

Следующие запросы на комментарии определяют протоколы отслеживания стандартов, которые (частично) определены с использованием модулей YANG:

  • RFC  6241 : протокол конфигурации сети (NETCONF)
  • RFC  6243 : возможность использования параметров по умолчанию для NETCONF
  • RFC  6470 : Базовые уведомления протокола конфигурации сети (NETCONF)
  • RFC  8040 : протокол RESTCONF
  • RFC  8071 : NETCONF Call Home и RESTCONF Call Home
  • RFC  8072 : Тип носителя для исправления YANG
  • RFC  8341 : Модель управления доступом к конфигурации сети [ RFC 6536 устарел ] 
  • RFC  8526 : Расширения NETCONF для поддержки архитектуры хранилища данных сетевого управления
  • RFC  8527 : Расширения RESTCONF для поддержки архитектуры хранилища данных сетевого управления
  • RFC  8572 : безопасная инициализация без касания (SZTP)
  • RFC  8639 : подписка на уведомления YANG
  • RFC  8640 : динамическая подписка на события и хранилища данных YANG через NETCONF
  • RFC  8641 : подписка на уведомления YANG для обновлений хранилища данных
  • RFC  8650 : динамическая подписка на события и хранилища данных YANG через RESTCONF

Стандартные модели данных [ править ]

Следующий запрос на комментарии определяет модели данных YANG, отслеживающие стандарты:

  • RFC  6022 : модуль YANG для мониторинга NETCONF
  • RFC  6991 : общие типы данных YANG [устаревший RFC 6021 ] 
  • RFC  6643 : преобразование MIB-модулей версии 2 (SMIv2) структуры управляющей информации в модули YANG
  • RFC  6728 : Модель данных конфигурации для протоколов экспорта информации IP-потока (IPFIX) и выборки пакетов (PSAMP)
  • RFC  7224 : модуль интерфейса IANA типа YANG
  • RFC  7317 : Модель данных YANG для управления системой
  • RFC  7407 : модель данных YANG для конфигурации SNMP
  • RFC  8177 : Модель данных YANG для ключевых цепочек
  • RFC  8194 : модель данных YANG для агентов измерения LMAP
  • RFC  8294 : общие типы данных YANG для области маршрутизации
  • RFC  8299 : Модель данных YANG для предоставления услуг L3VPN
  • RFC  8343 : модель данных YANG для управления интерфейсом [ RFC 7223 устарел ] 
  • RFC  8344 : модель данных YANG для управления IP [ RFC 7277 устарел ] 
  • RFC  8345 : модель данных YANG для сетевых топологий
  • RFC  8346 : Модель данных YANG для топологий уровня 3
  • RFC  8347 : модель данных YANG для протокола резервирования виртуального маршрутизатора (VRRP)
  • RFC  8348 : модель данных YANG для управления оборудованием
  • RFC  8349 : модель данных YANG для управления маршрутизацией (версия NMDA) [устаревший RFC 8022 ] 
  • RFC  8366 : артефакт ваучера для протоколов начальной загрузки
  • RFC  8431 : модель данных YANG для базы маршрутной информации (RIB)
  • RFC  8466 : Модель данных YANG для предоставления услуг виртуальной частной сети уровня 2 (L2VPN)
  • RFC  8512 : модуль YANG для трансляции сетевых адресов (NAT) и трансляции сетевых префиксов (NPT)
  • RFC  8513 : Модель данных YANG для Dual-Stack Lite (DS-Lite)
  • RFC  8519 : Модель данных YANG для списков управления доступом к сети (ACL)
  • RFC  8520 : Производитель Описание использования Спецификация
  • RFC  8529 : Модель данных YANG для сетевых экземпляров
  • RFC  8530 : Модель YANG для логических сетевых элементов
  • RFC  8531 : Общая модель данных YANG для ориентированных на соединение протоколов операций, администрирования и обслуживания (OAM)
  • RFC  8532 : Общая модель данных YANG для управления протоколами операций, администрирования и обслуживания (OAM), которые используют связь без установления соединения
  • RFC  8533 : Модель данных YANG для методов извлечения для управления протоколами операций, администрирования и обслуживания (OAM), которые используют связь без установления соединения
  • RFC  8542 : Модель данных YANG для топологии Fabric в сетях центров обработки данных
  • RFC  8561 : модель данных YANG для микроволновой радиосвязи
  • RFC  8575 : Модель данных YANG для протокола точного времени (PTP)
  • RFC  8632 : Модель данных YANG для управления аварийными сигналами
  • RFC  8652 : модель данных YANG для протокола управления группами Интернета (IGMP) и обнаружения многоадресного прослушивателя (MLD)
  • RFC  8675 : модель данных YANG для типов туннельного интерфейса
  • RFC  8676 : Модули YANG для IPv4-in-IPv6 Address plus Port (A + P) Softwires
  • RFC  8695 : модель данных YANG для протокола маршрутной информации (RIP)
  • RFC  8776 : Общие типы данных YANG для управления трафиком
  • RFC  8795 : Модель данных YANG для топологий управления трафиком (TE)
  • RFC  8808 : модель данных YANG для заводских настроек по умолчанию
  • RFC  8916 : Модель данных YANG для протокола обнаружения источника многоадресной рассылки (MSDP)
  • RFC  8944 : Модель данных YANG для топологий сети уровня 2
  • RFC  8960 : модель данных YANG для базы MPLS
  • RFC  8819 : Теги модуля YANG

Экспериментальные спецификации [ править ]

Следующие запросы на комментарии являются экспериментальными спецификациями, которые используют или расширяют YANG:

  • RFC  6095 : Расширение YANG с помощью языковых абстракций
  • RFC  7758 : возможность времени в NETCONF

Реализации [ править ]

Реализации с открытым исходным кодом (отсортированные по названию):

  • clixon - это набор инструментов на основе YANG, включающий интерактивные интерфейсы CLI, NETCONF и RESTCONF, написанные на C.
  • goyang - это синтаксический анализатор и компилятор YANG, написанный на Go для создания объектов языка Go.
  • jnc - это компилятор YANG-to-Java-API на основе pyang.
  • libyang - это парсер и инструментарий YANG, написанный на C и предоставляющий API на C
  • pyang - это расширяемый валидатор и конвертер YANG, написанный на Python
  • pyangbind - это генератор привязки Python на основе pyang
  • Sysrepo - это хранилище данных конфигурации и операционных данных для приложений Unix / Linux на основе YANG.
  • yangbuilder - это конструктор для YANG, реализованный в Apache Groovy (создание моделей данных yang с помощью Apache Groovy , поддержка аналогичных моделей с одной базой исходного кода)
  • yang-ide - плагин Eclipse для редактирования и визуализации моделей YANG
  • yang-js - это анализатор и анализатор YANG, написанный на CoffeeScript / JavaScript для Node.js и веб-браузера.
    • yang-express - это генератор веб-инфраструктуры Express.js на основе yang-js.
    • yang-swagger - это генератор спецификаций Swagger / OpenAPI на основе yang-js
  • yangson - это библиотека Python 3 для работы с конфигурацией в кодировке JSON и данными состояния, смоделированными с использованием языка моделирования данных YANG.
  • YANG Tools - это набор инструментов OpenDaylight, написанный на Java.
  • Yang-Explorer - это браузер Yang и приложение RPC Builder на основе pyang.
  • ydk-gen - это компилятор YANG-to-API, генерирующий API-интерфейсы на нескольких языках (например, Python, C ++)
  • yuma123 - это инструментальная цепочка netconf / YANG, написанная на C, предоставляющая: libyuma - API для разработки приложений, поддерживающих компиляцию модулей YANG во время выполнения, netconfd - модульный сервер, yangcli - интерактивный инструмент командной строки.

Реализации с закрытым исходным кодом (отсортированы по названию):

  • confd - это набор инструментов коммерческого агента управления, включающий компилятор YANG
  • MasterYANG - дизайнер, визуализатор и редактор моделей YANG для Windows.
  • Visual YANG Designer - это создатель / редактор / моделлер / конструктор / конструктор файлов определения YANG и компилятор YANG, реализованный на Java.
  • yumapro - это набор инструментов коммерческого агента управления, включающий компилятор YANG

Ссылки [ править ]

  1. Перейти ↑ Björklund, Martin (2010). YANG - язык моделирования данных для протокола конфигурации сети (NETCONF) (Технический отчет). IETF. DOI : 10,17487 / RFC6020 . RFC6020.
  2. ^ а б Бьёрклунд, Мартин (2016). Язык моделирования данных YANG 1.1 (Технический отчет). IETF. DOI : 10,17487 / RFC7950 . RFC7950.
  3. ^ RFC 8328  : Структура управления на основе политик для упрощенного использования абстракций политик (SUPA) 
  4. ^ Эннс, Роб; Бьёрклунд, Мартин; Шенвельдер, Юрген; Бирман, Энди (2011). Протокол конфигурации сети (NETCONF) (Технический отчет). IETF. DOI : 10,17487 / RFC6241 . RFC6241.
  5. ^ Бирман, Энди; Бьёрклунд, Мартин; Ватсен, Кент (2017). Протокол RESTCONF (Технический отчет). IETF. DOI : 10,17487 / RFC8040 . RFC8040.
  6. ^ "Рабочая группа сетевого моделирования" . IETF.
  7. ^ Шенвельдер, Юрген; Бьёрклунд, Мартин; Шафер, Фил (2010). «Управление конфигурацией сети с помощью NETCONF и YANG». DOI : 10,1109 / MCOM.2010.5560601 . Журнал Cite требует |magazine=( помощь )

Внешние ссылки [ править ]

  • Карл Моберг (05.11.2015). ЯН на примере (YouTube). Иокогама: команда IETF EDU.
  • Стефан Валлин (18.10.2014). YANG Tutorial (YouTube). Стокгольм: хвост-ф.
  • Каталог моделей YANG - онлайн-каталог с REST API
  • YANG central - информация и учебные пособия по YANG
  • Дискуссионный форум YANG - Форум сообщества пользователей ConfD для обсуждения вопросов, связанных с YANG.
  • Список клиентов и серверов на основе YANG см. На странице NETCONF .
  • ISBN  978-0135180396 - «Программируемость сети с помощью YANG: структура автоматизации сети с помощью YANG, NETCONF, RESTCONF и gNMI»