Jump to content

КОТОРЫЙ

Еще одно следующее поколение ( ЯН , /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:

  • 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 — это хранилище конфигураций и рабочих данных на основе 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.
  1. ^ Бьёрклунд, Мартин (2010). YANG — язык моделирования данных для протокола конфигурации сети (NETCONF) (технический отчет). IETF. дои : 10.17487/RFC6020 . RFC6020.
  2. ^ Перейти обратно: а б Бьёрклунд, Мартин (2016). Язык моделирования данных YANG 1.1 (технический отчет). IETF. дои : 10.17487/RFC7950 . RFC7950.
  3. ^ RFC   8328 : Структура управления на основе политик для упрощенного использования абстракций политик (SUPA)
  4. ^ Эннс, Роб; Бьорклунд, Мартин; Шенвальдер, Юрген; Бирман, Энди (2011). Протокол сетевой конфигурации (NETCONF) (Технический отчет). IETF. дои : 10.17487/RFC6241 . RFC6241.
  5. ^ Бирман, Энди; Бьёрклунд, Мартин; Ватсен, Кент (2017). Протокол RESTCONF (Технический отчет). IETF. дои : 10.17487/RFC8040 . RFC8040.
  6. ^ «Рабочая группа по сетевому моделированию» . IETF.
  7. ^ Шенвальдер, Юрген; Бьорклунд, Мартин; Шафер, Фил (2010). «Управление конфигурацией сети с использованием NETCONF и YANG». Журнал коммуникаций IEEE . 48 (9): 166–173. дои : 10.1109/MCOM.2010.5560601 . S2CID   736431 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b125cafeebc20661fa9798164e1e66d4__1722478920
URL1:https://arc.ask3.ru/arc/aa/b1/d4/b125cafeebc20661fa9798164e1e66d4.html
Заголовок, (Title) документа по адресу, URL1:
YANG - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)