КОТОРЫЙ
Эта статья может быть слишком технической для понимания большинства читателей . ( Октябрь 2021 г. ) |
Еще одно следующее поколение ( ЯН , /jæŋ/, рифмуется со словом «ханг») [1] [2] [3] это язык моделирования данных для определения данных, передаваемых по протоколам управления сетью, таким как NETCONF. [4] и РЕСТКОНФ. [5] данных YANG Язык моделирования поддерживается NETMOD. [6] рабочей группы в составе Инженерной рабочей группы Интернета (IETF) и первоначально был опубликован как RFC 6020 в октябре 2010 г. с обновлением в августе 2016 г. ( RFC 7950 ). Язык моделирования данных можно использовать для моделирования как данных конфигурации, так и данных о состоянии сетевых элементов. Кроме того, YANG можно использовать для определения формата уведомлений о событиях, отправляемых сетевыми элементами, и он позволяет разработчикам моделей данных определять сигнатуру удаленных вызовов процедур , которые могут быть вызваны в сетевых элементах через протокол NETCONF. Язык, будучи независимым от протокола, затем может быть преобразован в любой формат кодировки, например XML или JSON , который поддерживает протокол конфигурации сети.
YANG — модульный язык, представляющий структуры данных в формате дерева XML . Язык моделирования данных имеет ряд встроенных типов данных. Дополнительные типы данных, специфичные для приложения, могут быть получены из встроенных типов данных. Более сложные повторно используемые структуры данных можно представить в виде группировок. Модели данных YANG могут использовать выражения XPATH для определения ограничений на элементы модели данных YANG.
История
[ редактировать ]Многие протоколы сетевого управления имеют связанные языки моделирования данных. Первым широко распространенным Интернет-стандартом управления сетью стал Simple Network Management Protocol (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, никаких попыток сделать протокол YANG нейтральным предпринято не было. Вместо этого YANG связан с концепциями протокола NETCONF, такими как предположение о том, что экземпляры модели данных могут быть сериализованы в XML . Стандартизация YANG началась с формирования рабочей группы NETMOD в апреле 2008 года. Спецификация YANG 1.0 была опубликована как RFC 6020 в октябре 2010 года. В последнее время рабочая группа NETMOD работала над YANG 1.1, который был опубликован в августе 2016 года в РФК 7950 . [2]
Пример
[ редактировать ]Следующий модуль YANG example-sports
показывает модель данных для командных видов спорта. Модуль объявляет пространство имен и префикс и импортирует модуль библиотеки типов. ietf-yang-types
прежде чем определить тип season
. Затем он определяет контейнер sports
который включает в себя список person
и список team
с. У команды есть список игроков, который ссылается на людей через leafref
тип и его path
ограничение.
module example-sports {
namespace "http://example.com/example-sports";
prefix sports;
import ietf-yang-types { prefix yang; }
typedef season {
type string;
description
"The name of a sports season, including the type and the year, e.g,
'Champions League 2014/2015'.";
}
container sports {
config true;
list person {
key "name";
leaf name { type string; }
leaf birthday { type yang:date-and-time; mandatory true; }
}
list team {
key "name";
leaf name { type string; }
list player {
key "name season";
unique number;
leaf name { type leafref { path "/sports/person/name"; } }
leaf season { type season; }
leaf number { type uint16; mandatory true; }
leaf scores { type uint16; default 0; }
}
}
}
}
JSON-кодирование
[ редактировать ]Блок кода ниже показывает JSON- представление экземпляра example-sports
модель данных.
{
"example-sports:sports": {
"person": [
{
"name": "Lionel Andrés Messi",
"birthday": "1987-06-24T00:00:00-00:00"
},
{
"name": "Cristiano Ronaldo",
"birthday": "1985-02-05T00:00:00-00:00"
}
],
"team": [
{
"name": "FC Barcelona",
"player": [
{
"name": "Lionel Andrés Messi",
"season": "Champions League 2014/2015",
"number": 10,
"scores": 43
}
]
},
{
"name": "Real Madrid",
"player": [
{
"name": "Cristiano Ronaldo",
"season": "Champions League 2014/2015",
"number": 7,
"scores": 48
}
]
}
]
}
}
XML-кодирование
[ редактировать ]Блок кода ниже показывает XML- представление экземпляра example-sports
модель данных.
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<sports xmlns="http://example.com/example-sports">
<person>
<name>Lionel Andrés Messi</name>
<birthday>1987-06-24T00:00:00-00:00</birthday>
</person>
<person>
<name>Cristiano Ronaldo</name>
<birthday>1985-02-05T00:00:00-00:00</birthday>
</person>
<team>
<name>FC Barcelona</name>
<player>
<name>Lionel Andrés Messi</name>
<season>Champions League 2014/2015</season>
<number>10</number>
<scores>43</scores>
</player>
</team>
<team>
<name>Real Madrid</name>
<player>
<name>Cristiano Ronaldo</name>
<season>Champions League 2014/2015</season>
<number>7</number>
<scores>48</scores>
</player>
</team>
</sports>
</data>
Документация
[ редактировать ]Языковые спецификации и архитектурная документация
[ редактировать ]Следующий запрос комментариев (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 : Монтирование схемы AN
- RFC 8791 : Расширения структуры данных YANG
- RFC 9254 : Кодирование данных, смоделированных с помощью YANG, в кратком представлении двоичных объектов (CBOR).
- RFC 9595 : Идентификатор элемента схемы YANG (YANG SID)
Руководства и сопроводительная документация
[ редактировать ]Следующие запросы на комментарии содержат рекомендации и подтверждающую документацию:
- RFC 8407 : Рекомендации для авторов и рецензентов документов, содержащих модели данных YANG [устарело] RFC 6087 ]
- RFC 8199 : Классификация модулей YANG
- RFC 8340 : Древовидные диаграммы YANG
- RFC 8969 : Структура для автоматизации управления услугами и сетью с помощью YANG.
- RFC 9195 : формат файла для данных экземпляра YANG.
Использование IETF
[ редактировать ]Спецификации протоколов отслеживания стандартов
[ редактировать ]Следующие запросы на комментарии определяют протоколы отслеживания стандартов, которые (частично) определены с использованием модулей 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.
Модели данных, соответствующие стандартам
[ редактировать ]Следующие RFC определяют модели данных YANG, соответствующие стандартам:
- RFC 6022 : Модуль YANG для мониторинга NETCONF.
- RFC 6991 : Общие типы данных YANG [устарело] RFC 6021 ]
- RFC 6643 : Перевод структуры информации управления версии 2 (SMIv2) модулей MIB в модули 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 : Модель данных для сетевых топологий.
- 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 для топологии коммутационной сети в сетях центров обработки данных.
- RFC 8561 : Модель данных YANG для микроволновой радиосвязи.
- RFC 8575 : Модель данных YANG для протокола точного времени (PTP).
- RFC 8632 : Модель данных YANG для управления сигналами тревоги.
- RFC 8652 : Модель данных YANG для протокола управления группами Интернета (IGMP) и обнаружения прослушивателей многоадресной рассылки (MLD).
- RFC 8675 : Модель данных YANG для типов туннельных интерфейсов.
- RFC 8676 : Модули YANG для программных проводов IPv4-in-IPv6 плюс порт (A+P)
- 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
- RFC 9020 : Модель данных YANG для сегментной маршрутизации
- RFC 9061 : Модель данных YANG для защиты потока IPsec на основе программно-определяемых сетей (SDN)
- RFC 9067 : Модель данных YANG для политики маршрутизации.
- RFC 9070 : Модель данных YANG для MPLS LDP.
- RFC 9093 : Модель данных YANG для типов уровня 0.
- RFC 9094 : Модель данных YANG для оптических сетей с коммутацией длины волны (WSON).
- RFC 9105 : Модель данных YANG для системы контроля доступа контроллера терминального доступа Plus (TACACS+).
- RFC 9108 : Типы YANG для классов DNS и типов записей ресурсов
- RFC 9166 : Модель данных YANG для отслеживания протокола управления группами Интернета (IGMP) и обнаружения прослушивателей многоадресной рассылки (MLD).
- RFC 9179 : Группировка YANG для географических местоположений.
- RFC 9181 : Общая модель данных YANG для VPN уровней 2 и 3.
- RFC 9196 : Модули YANG, описывающие возможности систем и уведомлений об обновлениях хранилища данных.
- RFC 9243 : Модель данных для конфигурации DHCPv6.
- RFC 9249 : Модель данных для NTP.
- RFC 9291 : Модель сетевых данных YANG для VPN уровня 2.
- RFC 9314 : Модель данных YANG для обнаружения двунаправленной пересылки (BFD).
- RFC 9128 : Модель данных YANG для многоадресной рассылки, независимой от протокола (PIM).
- RFC 9129 : Модель данных YANG для протокола OSPF.
- RFC 9130 : Модель данных YANG для протокола IS-IS.
- RFC 9194 : Модуль YANG для обратной метрики IS-IS.
- RFC 9348 : Модель данных YANG для обеспечения безопасности потоков IP-трафика.
- RFC 9363 : Модель данных YANG для статического сжатия заголовка контекста (SCHC).
- RFC 9375 : Модель данных YANG для мониторинга производительности сети и VPN-сервисов.
- RFC 9398 : Модель данных YANG для прокси-устройств протокола управления группами Интернета (IGMP) и обнаружения прослушивателей многоадресной рассылки (MLD).
- RFC 9403 : Модель данных YANG для расширений RIB.
- RFC 9408 : Модель сетевых данных YANG для точек подключения услуг (SAP).
- RFC 9418 : Модель данных YANG для обеспечения обслуживания.
- RFC 9472 : Модель данных YANG для составления отчетов о спецификациях программного обеспечения (SBOM) и информации об уязвимостях.
- RFC 9587 : Модель данных YANG для расширенных объявлений о состоянии канала OSPFv3 (LSA).
Экспериментальные характеристики
[ редактировать ]Следующие запросы на комментарии представляют собой экспериментальные спецификации, использующие или расширяющие YANG:
Реализации
[ редактировать ]Реализации с открытым исходным кодом (отсортировано по имени):
- 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 — это хранилище конфигураций и рабочих данных на основе YANG для приложений Unix/Linux.
- 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 Project, написанный на Java.
- Yang-Explorer — это браузер Yang и приложение RPC Builder на основе pyang.
- ydk-gen — это компилятор YANG-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.
Ссылки
[ редактировать ]- ^ Бьёрклунд, Мартин (2010). YANG — язык моделирования данных для протокола конфигурации сети (NETCONF) (технический отчет). IETF. дои : 10.17487/RFC6020 . RFC6020.
- ^ Перейти обратно: а б Бьёрклунд, Мартин (2016). Язык моделирования данных YANG 1.1 (технический отчет). IETF. дои : 10.17487/RFC7950 . RFC7950.
- ^ RFC 8328 : Структура управления на основе политик для упрощенного использования абстракций политик (SUPA)
- ^ Эннс, Роб; Бьорклунд, Мартин; Шенвальдер, Юрген; Бирман, Энди (2011). Протокол сетевой конфигурации (NETCONF) (Технический отчет). IETF. дои : 10.17487/RFC6241 . RFC6241.
- ^ Бирман, Энди; Бьёрклунд, Мартин; Ватсен, Кент (2017). Протокол RESTCONF (Технический отчет). IETF. дои : 10.17487/RFC8040 . RFC8040.
- ^ «Рабочая группа по сетевому моделированию» . IETF.
- ^ Шенвальдер, Юрген; Бьорклунд, Мартин; Шафер, Фил (2010). «Управление конфигурацией сети с использованием NETCONF и YANG». Журнал коммуникаций IEEE . 48 (9): 166–173. дои : 10.1109/MCOM.2010.5560601 . S2CID 736431 .
Внешние ссылки
[ редактировать ]- Карл Моберг (05.11.2015). ЯН на примере (YouTube). Иокогама: команда IETF EDU. Архивировано из оригинала 21 декабря 2021 г.
- Стефан Валлин (18 октября 2014 г.). Учебное пособие по ЯН (YouTube). Стокгольм: хвост-f. Архивировано из оригинала 21 декабря 2021 г.
- Каталог моделей YANG — онлайн-каталог с REST API
- YANG Central – информация и учебные пособия по YANG
- Дискуссионный форум YANG — форум сообщества пользователей ConfD для обсуждения вопросов, связанных с YANG.
- Список клиентов и серверов на базе YANG см. на странице NETCONF .
- ISBN 978-0135180396 - «Сетевое программирование с помощью YANG: структура сетевой автоматизации с помощью YANG, NETCONF, RESTCONF и gNMI»