Эта статья предоставляет недостаточный контекст для тех, кто не знаком с предметом . Август 2009 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) ( |
Еще одно новое поколение [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
который включает список person
s и список team
s. У команды есть список игроков, которые ссылаются на людей через 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
Ссылки [ править ]
- Перейти ↑ Björklund, Martin (2010). YANG - язык моделирования данных для протокола конфигурации сети (NETCONF) (Технический отчет). IETF. DOI : 10,17487 / RFC6020 . RFC6020.
- ^ а б Бьёрклунд, Мартин (2016). Язык моделирования данных YANG 1.1 (Технический отчет). IETF. DOI : 10,17487 / RFC7950 . RFC7950.
- ^ RFC 8328 : Структура управления на основе политик для упрощенного использования абстракций политик (SUPA)
- ^ Эннс, Роб; Бьёрклунд, Мартин; Шенвельдер, Юрген; Бирман, Энди (2011). Протокол конфигурации сети (NETCONF) (Технический отчет). IETF. DOI : 10,17487 / RFC6241 . RFC6241.
- ^ Бирман, Энди; Бьёрклунд, Мартин; Ватсен, Кент (2017). Протокол RESTCONF (Технический отчет). IETF. DOI : 10,17487 / RFC8040 . RFC8040.
- ^ "Рабочая группа сетевого моделирования" . IETF.
- ^ Шенвельдер, Юрген; Бьёрклунд, Мартин; Шафер, Фил (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»