Internet Engineering Task Force (IETF)                        A. Bierman
Request for Comments: 8525                                     YumaWorks
Obsoletes: 7895                                             M. Bjorklund
Category: Standards Track                                 Tail-f Systems
ISSN: 2070-1721                                         J. Schoenwaelder
                                                       Jacobs University
                                                               K. Watsen
                                                         Watsen Networks
                                                               R. Wilton
                                                           Cisco Systems
                                                              March 2019
        
Internet Engineering Task Force (IETF)                        A. Bierman
Request for Comments: 8525                                     YumaWorks
Obsoletes: 7895                                             M. Bjorklund
Category: Standards Track                                 Tail-f Systems
ISSN: 2070-1721                                         J. Schoenwaelder
                                                       Jacobs University
                                                               K. Watsen
                                                         Watsen Networks
                                                               R. Wilton
                                                           Cisco Systems
                                                              March 2019
        

YANG Library

杨图书馆

Abstract

摘要

This document describes a YANG library that provides information about the YANG modules, datastores, and datastore schemas used by a network management server. Simple caching mechanisms are provided to allow clients to minimize retrieval of this information. This version of the YANG library supports the Network Management Datastore Architecture (NMDA) by listing all datastores supported by a network management server and the schema that is used by each of these datastores.

本文档描述了一个YANG库,该库提供了有关网络管理服务器使用的YANG模块、数据存储和数据存储架构的信息。提供了简单的缓存机制,以允许客户端最小化对该信息的检索。此版本的YANG库通过列出网络管理服务器支持的所有数据存储以及每个数据存储使用的模式来支持网络管理数据存储体系结构(NMDA)。

This document obsoletes RFC 7895.

本文件淘汰了RFC 7895。

Status of This Memo

关于下段备忘

This is an Internet Standards Track document.

这是一份互联网标准跟踪文件。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.

本文件是互联网工程任务组(IETF)的产品。它代表了IETF社区的共识。它已经接受了公众审查,并已被互联网工程指导小组(IESG)批准出版。有关互联网标准的更多信息,请参见RFC 7841第2节。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc8525.

有关本文件当前状态、任何勘误表以及如何提供反馈的信息,请访问https://www.rfc-editor.org/info/rfc8525.

Copyright Notice

版权公告

Copyright (c) 2019 IETF Trust and the persons identified as the document authors. All rights reserved.

版权(c)2019 IETF信托基金和被确定为文件作者的人员。版权所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

本文件受BCP 78和IETF信托有关IETF文件的法律规定的约束(https://trustee.ietf.org/license-info)自本文件出版之日起生效。请仔细阅读这些文件,因为它们描述了您对本文件的权利和限制。从本文件中提取的代码组件必须包括信托法律条款第4.e节中所述的简化BSD许可证文本,并提供简化BSD许可证中所述的无担保。

Table of Contents

目录

   1. Introduction ....................................................3
      1.1. Terminology ................................................4
   2. Objectives ......................................................5
   3. YANG Library Data Model .........................................6
   4. YANG Library YANG Module ........................................8
   5. IANA Considerations ............................................20
   6. Security Considerations ........................................21
   7. References .....................................................22
      7.1. Normative References ......................................22
      7.2. Informative References ....................................23
   Appendix A.  Summary of Changes from RFC 7895 .....................25
   Appendix B.  Example YANG Library Instance for a Basic Server .....25
   Appendix C.  Example YANG Library Instance for an Advanced Server .27
   Authors' Addresses ................................................32
        
   1. Introduction ....................................................3
      1.1. Terminology ................................................4
   2. Objectives ......................................................5
   3. YANG Library Data Model .........................................6
   4. YANG Library YANG Module ........................................8
   5. IANA Considerations ............................................20
   6. Security Considerations ........................................21
   7. References .....................................................22
      7.1. Normative References ......................................22
      7.2. Informative References ....................................23
   Appendix A.  Summary of Changes from RFC 7895 .....................25
   Appendix B.  Example YANG Library Instance for a Basic Server .....25
   Appendix C.  Example YANG Library Instance for an Advanced Server .27
   Authors' Addresses ................................................32
        
1. Introduction
1. 介绍

There is a need for a standard mechanism to expose which YANG modules [RFC7950], datastores [RFC8342], and datastore schemas [RFC8342] are in use by a network management server.

需要一种标准机制来公开网络管理服务器正在使用哪些模块[RFC7950]、数据存储[RFC8342]和数据存储模式[RFC8342]。

This document defines the YANG module "ietf-yang-library" that provides this information. This version of the YANG library is compatible with the Network Management Datastore Architecture (NMDA) [RFC8342]. The previous version of the YANG library, defined in [RFC7895], is not compatible with the NMDA since it assumes that all datastores have exactly the same schema. This is not necessarily true in the NMDA since dynamic configuration datastores may have their own datastore schema. Furthermore, the operational state datastore may support non-configurable YANG modules in addition to the YANG modules supported by conventional configuration datastores.

本文件定义了提供此信息的YANG模块“ietf YANG library”。此版本的YANG库与网络管理数据存储体系结构(NMDA)[RFC8342]兼容。[RFC7895]中定义的YANG库的早期版本与NMDA不兼容,因为它假定所有数据存储都具有完全相同的模式。在NMDA中不一定如此,因为动态配置数据存储可能有自己的数据存储模式。此外,除了传统配置数据存储支持的YANG模块之外,操作状态数据存储还可以支持不可配置的YANG模块。

The old YANG library definitions have been retained (for backwards-compatibility reasons), but the definitions have been marked as deprecated. For backwards compatibility, an NMDA-supporting server SHOULD populate the deprecated "/modules-state" tree in a backwards-compatible manner. The new "/yang-library" tree will be ignored by legacy clients but will provide all the data needed for NMDA-aware clients (which will ignore the "/modules-state" tree). The recommended approach to populate "/modules-state" is to report the YANG modules with "config true" data nodes that are configurable via conventional configuration datastores and the YANG modules with "config false" data nodes that are returned via a Network Configuration Protocol (NETCONF) <get> operation or equivalent.

旧的库定义已被保留(出于向后兼容的原因),但这些定义已标记为不推荐使用。为了向后兼容,支持NMDA的服务器应以向后兼容的方式填充不推荐使用的“/模块状态”树。新的“/yang library”树将被旧客户端忽略,但将提供支持NMDA的客户端所需的所有数据(将忽略“/modules state”树)。填充“/modules state”的推荐方法是报告具有“config true”数据节点的YANG模块,这些数据节点可通过常规配置数据存储进行配置,并且具有“config false”数据节点的YANG模块可通过网络配置协议(NETCONF)<get>操作或等效操作返回。

The YANG library information can be different on every server, and it can change at runtime or across a server reboot. If a server implements multiple network management protocols to access the server's datastores, then each such protocol may have its own conceptual instantiation of the YANG library.

每个服务器上的库信息都可能不同,并且可能在运行时或服务器重新启动时更改。如果一台服务器实现了多个网络管理协议来访问服务器的数据存储,那么每一个这样的协议都可能有它自己的库的概念性实例。

If a large number of YANG modules are utilized by a server, then the YANG library contents can be relatively large. Since the YANG library contents change very infrequently, it is important that clients be able to cache the YANG library contents and easily identify whether their cache is out of date.

如果服务器使用大量的YANG模块,则YANG库的内容可能相对较大。由于YANG library内容很少更改,因此客户机能够缓存YANG library内容并轻松识别其缓存是否过期非常重要。

1.1. Terminology
1.1. 术语

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14[RFC2119][RFC8174]所述进行解释。

The following terms are defined in [RFC7950]:

[RFC7950]中定义了以下术语:

o module

o 单元

o submodule

o 子模块

o data node

o 数据节点

This document uses the phrase "implement a module" as defined in Section 5.6.5 of [RFC7950].

本文件使用[RFC7950]第5.6.5节中定义的短语“实现模块”。

The following terms are defined in [RFC8342]:

[RFC8342]中定义了以下术语:

o datastore

o 数据存储

o datastore schema

o 数据存储模式

o configuration

o 配置

o conventional configuration datastore

o 常规配置数据存储

o operational state

o 运行状态

o operational state datastore

o 操作状态数据存储

o dynamic configuration datastore

o 动态配置数据存储

o client

o 客户

o server

o 服务器

The following terms are used within this document:

本文件中使用了以下术语:

o YANG library: A collection of YANG modules, submodules, datastores, and datastore schemas used by a server.

o YANG库:服务器使用的YANG模块、子模块、数据存储和数据存储模式的集合。

o YANG library content identifier: A server-generated identifier of the contents of the YANG library.

o YANG library内容标识符:服务器生成的YANG library内容标识符。

Tree diagrams in this document use the notation defined in [RFC8340].

本文档中的树形图使用[RFC8340]中定义的符号。

2. Objectives
2. 目标

The following information is needed by a client application (for each YANG module in the library) to fully utilize the YANG data modeling language:

客户端应用程序(对于库中的每个YANG模块)需要以下信息,以充分利用YANG数据建模语言:

o name: The name of the YANG module.

o 名称:模块的名称。

o revision: If defined in the YANG module or submodule, the revision is derived from the most recent revision statement within the module or submodule.

o 修订:如果在模块或子模块中定义,则修订源自模块或子模块中的最新修订声明。

o submodule list: The name and (if defined) revision of each submodule used by the module must be identified.

o 子模块列表:必须标识模块使用的每个子模块的名称和(如果定义)版本。

o feature list: The name of each YANG feature supported by the server must be identified.

o 功能列表:必须标识服务器支持的每个功能的名称。

o deviation list: The name of each YANG module with deviation statements affecting a given YANG module must be identified.

o 偏差列表:必须确定每个阳模块的名称,以及影响给定阳模块的偏差声明。

In addition, the following information is needed by a client application for each datastore supported by a server:

此外,对于服务器支持的每个数据存储,客户端应用程序需要以下信息:

o identity: The YANG identity for the datastore.

o 标识:数据存储的标识。

o schema: The schema (i.e., the set of modules) implemented by the datastore.

o 模式:数据存储实现的模式(即模块集)。

In order to select one out of several possible designs for the YANG library data model, the following criteria were used:

为了从YANG library数据模型的几种可能设计中选择一种,使用了以下标准:

1. The information must be efficient for a client to consume. Since the size of the YANG library can be quite large, it should be possible for clients to cache the YANG library information.

1. 客户必须能够高效地使用这些信息。由于YANG库的大小可能相当大,因此客户端应该可以缓存YANG库的信息。

2. A dynamic configuration datastore must be able to implement a module or feature that is not implemented in the conventional configuration datastores.

2. 动态配置数据存储必须能够实现传统配置数据存储中未实现的模块或功能。

3. It must be possible to not implement a module or feature in <operational>, even if it is implemented in some other datastore. This is required for transition purposes; a server that wants to implement <operational> should not have to implement all modules at once.

3. 必须能够在<operational>中不实现模块或功能,即使它是在其他一些数据存储中实现的。这是出于过渡目的而需要的;想要实现<operational>的服务器不应该同时实现所有模块。

4. A given module can only be implemented in one revision in all datastores. If a module is implemented in more than one datastore, the same revision is implemented in all these datastores.

4. 给定的模块只能在所有数据存储中的一个版本中实现。如果一个模块在多个数据存储中实现,则在所有这些数据存储中实现相同的版本。

5. Multiple revisions can be used for import, if import-by revision is used.

5. 如果使用“按修订导入”,则可以使用多个修订进行导入。

6. It must be possible to use the YANG library by schema mount [RFC8528].

6. 必须能够通过模式挂载[RFC8528]使用YANG库。

3. YANG Library Data Model
3. 杨氏图书馆数据模型

The "ietf-yang-library" YANG module provides information about the modules, submodules, datastores, and datastore schemas supported by a server. All data nodes in the "ietf-yang-library" module are "config false" and thus only accessible in the operational state datastore.

“ietf yang library”yang模块提供有关服务器支持的模块、子模块、数据存储和数据存储模式的信息。“ietf yang library”模块中的所有数据节点都是“config false”,因此只能在运行状态数据存储中访问。

   +-----------+
   | datastore |
   +-----------+
        |
        | has a
        V
   +-----------+            +--------+                +------------+
   | datastore |  union of  | module |  consists of   | modules +  |
   |  schema   |----------->|  set   |--------------->| submodules |
   +-----------+            +--------+                +------------+
        
   +-----------+
   | datastore |
   +-----------+
        |
        | has a
        V
   +-----------+            +--------+                +------------+
   | datastore |  union of  | module |  consists of   | modules +  |
   |  schema   |----------->|  set   |--------------->| submodules |
   +-----------+            +--------+                +------------+
        

Figure 1

图1

The conceptual model of the YANG library is depicted in Figure 1. Following the NMDA, every datastore has an associated datastore schema. A datastore schema is a union of module sets, and every module set is a collection of modules and submodules, including the modules and submodules used for imports. Note that multiple datastores may refer to the same datastore schema. Furthermore, it is possible for individual datastore schemas to share module sets. A common use case is the operational state datastore schema, which is a superset of the schema used by conventional configuration datastores.

YANG图书馆的概念模型如图1所示。在NMDA之后,每个数据存储都有一个关联的数据存储模式。数据存储架构是模块集的联合,每个模块集都是模块和子模块的集合,包括用于导入的模块和子模块。请注意,多个数据存储可能引用同一数据存储架构。此外,单个数据存储模式也可以共享模块集。一个常见的用例是操作状态数据存储模式,它是常规配置数据存储使用的模式的超集。

Below is the YANG tree diagram for the "ietf-yang-library" module, excluding the deprecated "/modules-state" tree:

下面是“ietf YANG library”模块的YANG树图,不包括不推荐的“/模块状态”树:

   module: ietf-yang-library
     +--ro yang-library
        +--ro module-set* [name]
        |  +--ro name                  string
        |  +--ro module* [name]
        |  |  +--ro name         yang:yang-identifier
        |  |  +--ro revision?    revision-identifier
        |  |  +--ro namespace    inet:uri
        |  |  +--ro location*    inet:uri
        |  |  +--ro submodule* [name]
        |  |  |  +--ro name        yang:yang-identifier
        |  |  |  +--ro revision?   revision-identifier
        |  |  |  +--ro location*   inet:uri
        |  |  +--ro feature*     yang:yang-identifier
        |  |  +--ro deviation*   -> ../../module/name
        |  +--ro import-only-module* [name revision]
        |     +--ro name         yang:yang-identifier
        |     +--ro revision     union
        |     +--ro namespace    inet:uri
        |     +--ro location*    inet:uri
        |     +--ro submodule* [name]
        |        +--ro name        yang:yang-identifier
        |        +--ro revision?   revision-identifier
        |        +--ro location*   inet:uri
        +--ro schema* [name]
        |  +--ro name          string
        |  +--ro module-set*   -> ../../module-set/name
        +--ro datastore* [name]
        |  +--ro name      ds:datastore-ref
        |  +--ro schema    -> ../../schema/name
        +--ro content-id    string
        
   module: ietf-yang-library
     +--ro yang-library
        +--ro module-set* [name]
        |  +--ro name                  string
        |  +--ro module* [name]
        |  |  +--ro name         yang:yang-identifier
        |  |  +--ro revision?    revision-identifier
        |  |  +--ro namespace    inet:uri
        |  |  +--ro location*    inet:uri
        |  |  +--ro submodule* [name]
        |  |  |  +--ro name        yang:yang-identifier
        |  |  |  +--ro revision?   revision-identifier
        |  |  |  +--ro location*   inet:uri
        |  |  +--ro feature*     yang:yang-identifier
        |  |  +--ro deviation*   -> ../../module/name
        |  +--ro import-only-module* [name revision]
        |     +--ro name         yang:yang-identifier
        |     +--ro revision     union
        |     +--ro namespace    inet:uri
        |     +--ro location*    inet:uri
        |     +--ro submodule* [name]
        |        +--ro name        yang:yang-identifier
        |        +--ro revision?   revision-identifier
        |        +--ro location*   inet:uri
        +--ro schema* [name]
        |  +--ro name          string
        |  +--ro module-set*   -> ../../module-set/name
        +--ro datastore* [name]
        |  +--ro name      ds:datastore-ref
        |  +--ro schema    -> ../../schema/name
        +--ro content-id    string
        
     notifications:
       +---n yang-library-update
          +--ro content-id    -> /yang-library/content-id
        
     notifications:
       +---n yang-library-update
          +--ro content-id    -> /yang-library/content-id
        

The "/yang-library" container holds the entire YANG library. The container has the following child nodes:

“/yang library”容器包含整个yang library。容器具有以下子节点:

o The "/yang-library/module-set" contains entries representing module sets. The list "/yang-library/module-set/module" enumerates the modules that belong to the module set. A module is listed together with its submodules (if any), a set of features, and any deviation modules. The list "/yang-library/module-set/ import-only-module" lists all modules (and their submodules) used only for imports. The assignment of a module to a module set is

o “/yang库/模块集”包含表示模块集的条目。列表“/yang library/module set/module”枚举属于该模块集的模块。一个模块及其子模块(如果有)、一组特征和任何偏差模块一起列出。列表“/yang library/module set/import only module”列出了仅用于导入的所有模块(及其子模块)。将一个模块分配给一个模块集是

at the server's discretion. This revision of the YANG library attaches no semantics as to which module set a module is listed in.

由服务器自行决定。YANG库的这一修订版并没有附加模块在哪个模块集中列出的语义。

o The "/yang-library/schema" list contains an entry for each datastore schema supported by the server. All conventional configuration datastores use the same "schema" list entry. A dynamic configuration datastore may use a different datastore schema from the conventional configuration datastores and hence may require a separate "schema" entry. A "schema" entry has a leaf-list of references to entries in the "module-set" list. The schema consists of the union of all modules in all referenced module sets.

o “/yang library/schema”列表包含服务器支持的每个数据存储架构的条目。所有常规配置数据存储都使用相同的“模式”列表条目。动态配置数据存储可能使用与传统配置数据存储不同的数据存储模式,因此可能需要单独的“模式”条目。“模式”条目有一个引用“模块集”列表中条目的叶列表。模式由所有引用模块集中所有模块的并集组成。

o The "/yang-library/datastore" list contains one entry for each datastore supported by the server, and it identifies the datastore schema associated with a datastore via a reference to an entry in the "schema" list. Each supported conventional configuration datastore has a separate entry, pointing to the same "schema" list element.

o “/yang library/datastore”列表包含服务器支持的每个数据存储的一个条目,它通过引用“schema”列表中的条目来标识与数据存储关联的数据存储架构。每个受支持的常规配置数据存储都有一个单独的条目,指向同一个“schema”列表元素。

o The "/yang-library/content-id" leaf contains the YANG library content identifier, which is an implementation-specific identifier representing the current information in the YANG library on a specific server. The value of this leaf MUST change whenever the information in the YANG library changes. There is no requirement that the same information always result in the same "content-id" value. This leaf allows a client to fetch all schema information once, cache it, and only refetch it if the value of this leaf has been changed. If the value of this leaf changes, the server also generates a "yang-library-update" notification.

o “/yang library/content id”叶包含yang library内容标识符,它是特定于实现的标识符,表示特定服务器上yang library中的当前信息。每当库中的信息更改时,此叶的值必须更改。不要求相同的信息总是产生相同的“内容id”值。此叶允许客户端一次获取所有架构信息,并将其缓存,并且仅当此叶的值已更改时才重新提取。如果此叶的值发生更改,服务器还会生成“yang library update”通知。

Note that for a NETCONF server implementing the NETCONF extensions to support the NMDA [RFC8526], a change of the YANG library content identifier results in a new value for the :yang-library:1.1 capability defined in [RFC8526]. Thus, if such a server implements NETCONF notifications [RFC5277] and the "netconf-capability-change" notification [RFC6470], a "netconf-capability-change" notification is generated whenever the YANG library content identifier changes.

请注意,对于实现NETCONF扩展以支持NMDA[RFC8526]的NETCONF服务器,YANG library内容标识符的更改将导致[RFC8526]中定义的:YANG library:1.1功能的新值。因此,如果这样的服务器实现NETCONF通知[RFC5277]和“NETCONF能力更改”通知[RFC6470],则每当库内容标识符更改时,都会生成“NETCONF能力更改”通知。

4. YANG Library YANG Module
4. 杨库杨模块

The "ietf-yang-library" YANG module imports definitions from the "ietf-yang-types" and "ietf-inet-types" modules defined in [RFC6991] and from the "ietf-datastores" module defined in [RFC8342]. While the YANG module is defined using YANG version 1.1, the YANG library supports YANG modules written in any version of YANG.

“ietf yang library”yang模块从[RFC6991]中定义的“ietf yang类型”和“ietf inet类型”模块以及[RFC8342]中定义的“ietf数据存储”模块导入定义。虽然YANG模块是使用YANG版本1.1定义的,但YANG库支持使用任何版本的YANG编写的YANG模块。

   <CODE BEGINS> file "ietf-yang-library@2019-01-04.yang"
        
   <CODE BEGINS> file "ietf-yang-library@2019-01-04.yang"
        
   module ietf-yang-library {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
     prefix yanglib;
        
   module ietf-yang-library {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
     prefix yanglib;
        
     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-datastores {
       prefix ds;
       reference
         "RFC 8342: Network Management Datastore Architecture
                    (NMDA)";
     }
        
     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-datastores {
       prefix ds;
       reference
         "RFC 8342: Network Management Datastore Architecture
                    (NMDA)";
     }
        
     organization
       "IETF NETCONF (Network Configuration) Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
        WG List:  <mailto:netconf@ietf.org>
        
     organization
       "IETF NETCONF (Network Configuration) Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
        WG List:  <mailto:netconf@ietf.org>
        
        Author:   Andy Bierman
                  <mailto:andy@yumaworks.com>
        
        Author:   Andy Bierman
                  <mailto:andy@yumaworks.com>
        
        Author:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>
        
        Author:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>
        
        Author:   Juergen Schoenwaelder
                  <mailto:j.schoenwaelder@jacobs-university.de>
        
        Author:   Juergen Schoenwaelder
                  <mailto:j.schoenwaelder@jacobs-university.de>
        
        Author:   Kent Watsen
                  <mailto:kent+ietf@watsen.net>
        
        Author:   Kent Watsen
                  <mailto:kent+ietf@watsen.net>
        

Author: Robert Wilton <mailto:rwilton@cisco.com>"; description "This module provides information about the YANG modules, datastores, and datastore schemas used by a network management server.

作者:罗伯特·威尔顿<mailto:rwilton@cisco.com>“说明”此模块提供有关网络管理服务器使用的模块、数据存储和数据存储架构的信息。

The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here.

本文件中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可能”和“可选”在所有大写字母出现时(如图所示)应按照BCP 14(RFC 2119)(RFC 8174)所述进行解释。

Copyright (c) 2019 IETF Trust and the persons identified as authors of the code. All rights reserved.

版权(c)2019 IETF信托基金和被认定为代码作者的人员。版权所有。

Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Simplified BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info).

根据IETF信托有关IETF文件的法律规定第4.c节规定的简化BSD许可证中包含的许可条款,允许以源代码和二进制格式重新分发和使用,无论是否修改(https://trustee.ietf.org/license-info).

This version of this YANG module is part of RFC 8525; see the RFC itself for full legal notices.";

该模块的此版本是RFC 8525的一部分;有关完整的法律通知,请参见RFC本身。“;

     revision 2019-01-04 {
       description
         "Added support for multiple datastores according to the
          Network Management Datastore Architecture (NMDA).";
       reference
         "RFC 8525: YANG Library";
     }
     revision 2016-04-09 {
       description
         "Initial revision.";
       reference
         "RFC 7895: YANG Module Library";
     }
        
     revision 2019-01-04 {
       description
         "Added support for multiple datastores according to the
          Network Management Datastore Architecture (NMDA).";
       reference
         "RFC 8525: YANG Library";
     }
     revision 2016-04-09 {
       description
         "Initial revision.";
       reference
         "RFC 7895: YANG Module Library";
     }
        
     /*
      * Typedefs
      */
        
     /*
      * Typedefs
      */
        
     typedef revision-identifier {
       type string {
         pattern '\d{4}-\d{2}-\d{2}';
       }
       description
         "Represents a specific date in YYYY-MM-DD format.";
     }
        
     typedef revision-identifier {
       type string {
         pattern '\d{4}-\d{2}-\d{2}';
       }
       description
         "Represents a specific date in YYYY-MM-DD format.";
     }
        
     /*
      * Groupings
      */
        
     /*
      * Groupings
      */
        
     grouping module-identification-leafs {
       description
         "Parameters for identifying YANG modules and submodules.";
       leaf name {
         type yang:yang-identifier;
         mandatory true;
         description
           "The YANG module or submodule name.";
       }
       leaf revision {
         type revision-identifier;
         description
           "The YANG module or submodule revision date.  If no revision
            statement is present in the YANG module or submodule, this
            leaf is not instantiated.";
       }
     }
        
     grouping module-identification-leafs {
       description
         "Parameters for identifying YANG modules and submodules.";
       leaf name {
         type yang:yang-identifier;
         mandatory true;
         description
           "The YANG module or submodule name.";
       }
       leaf revision {
         type revision-identifier;
         description
           "The YANG module or submodule revision date.  If no revision
            statement is present in the YANG module or submodule, this
            leaf is not instantiated.";
       }
     }
        
     grouping location-leaf-list {
       description
         "Common leaf-list parameter for the locations of modules and
          submodules.";
       leaf-list location {
         type inet:uri;
         description
           "Contains a URL that represents the YANG schema
            resource for this module or submodule.
        
     grouping location-leaf-list {
       description
         "Common leaf-list parameter for the locations of modules and
          submodules.";
       leaf-list location {
         type inet:uri;
         description
           "Contains a URL that represents the YANG schema
            resource for this module or submodule.
        
            This leaf will only be present if there is a URL
            available for retrieval of the schema for this entry.";
       }
     }
        
            This leaf will only be present if there is a URL
            available for retrieval of the schema for this entry.";
       }
     }
        
     grouping module-implementation-parameters {
       description
         "Parameters for describing the implementation of a module.";
       leaf-list feature {
         type yang:yang-identifier;
         description
           "List of all YANG feature names from this module that are
            supported by the server, regardless whether they are defined
            in the module or any included submodule.";
       }
       leaf-list deviation {
         type leafref {
           path "../../module/name";
         }
        
     grouping module-implementation-parameters {
       description
         "Parameters for describing the implementation of a module.";
       leaf-list feature {
         type yang:yang-identifier;
         description
           "List of all YANG feature names from this module that are
            supported by the server, regardless whether they are defined
            in the module or any included submodule.";
       }
       leaf-list deviation {
         type leafref {
           path "../../module/name";
         }
        

description "List of all YANG deviation modules used by this server to modify the conformance of the module associated with this entry. Note that the same module can be used for deviations for multiple modules, so the same entry MAY appear within multiple 'module' entries.

description“此服务器用于修改与此条目关联的模块一致性的所有模块的列表。请注意,同一模块可用于多个模块的偏差,因此同一条目可能出现在多个“模块”条目中。

This reference MUST NOT (directly or indirectly) refer to the module being deviated.

此参考不得(直接或间接)指正在偏离的模块。

            Robust clients may want to make sure that they handle a
            situation where a module deviates itself (directly or
            indirectly) gracefully.";
       }
     }
        
            Robust clients may want to make sure that they handle a
            situation where a module deviates itself (directly or
            indirectly) gracefully.";
       }
     }
        
     grouping module-set-parameters {
       description
         "A set of parameters that describe a module set.";
       leaf name {
         type string;
         description
           "An arbitrary name of the module set.";
       }
       list module {
         key "name";
         description
           "An entry in this list represents a module implemented by the
            server, as per Section 5.6.5 of RFC 7950, with a particular
            set of supported features and deviations.";
         reference
           "RFC 7950: The YANG 1.1 Data Modeling Language";
         uses module-identification-leafs;
         leaf namespace {
           type inet:uri;
           mandatory true;
           description
             "The XML namespace identifier for this module.";
         }
         uses location-leaf-list;
         list submodule {
           key "name";
           description
             "Each entry represents one submodule within the
              parent module.";
           uses module-identification-leafs;
           uses location-leaf-list;
         }
        
     grouping module-set-parameters {
       description
         "A set of parameters that describe a module set.";
       leaf name {
         type string;
         description
           "An arbitrary name of the module set.";
       }
       list module {
         key "name";
         description
           "An entry in this list represents a module implemented by the
            server, as per Section 5.6.5 of RFC 7950, with a particular
            set of supported features and deviations.";
         reference
           "RFC 7950: The YANG 1.1 Data Modeling Language";
         uses module-identification-leafs;
         leaf namespace {
           type inet:uri;
           mandatory true;
           description
             "The XML namespace identifier for this module.";
         }
         uses location-leaf-list;
         list submodule {
           key "name";
           description
             "Each entry represents one submodule within the
              parent module.";
           uses module-identification-leafs;
           uses location-leaf-list;
         }
        
         uses module-implementation-parameters;
       }
       list import-only-module {
         key "name revision";
         description
           "An entry in this list indicates that the server imports
            reusable definitions from the specified revision of the
            module but does not implement any protocol-accessible
            objects from this revision.
        
         uses module-implementation-parameters;
       }
       list import-only-module {
         key "name revision";
         description
           "An entry in this list indicates that the server imports
            reusable definitions from the specified revision of the
            module but does not implement any protocol-accessible
            objects from this revision.
        
            Multiple entries for the same module name MAY exist.  This
            can occur if multiple modules import the same module but
            specify different revision dates in the import statements.";
         leaf name {
           type yang:yang-identifier;
           description
             "The YANG module name.";
         }
         leaf revision {
           type union {
             type revision-identifier;
             type string {
               length "0";
             }
           }
           description
             "The YANG module revision date.
              A zero-length string is used if no revision statement
              is present in the YANG module.";
         }
         leaf namespace {
           type inet:uri;
           mandatory true;
           description
             "The XML namespace identifier for this module.";
         }
         uses location-leaf-list;
         list submodule {
           key "name";
           description
             "Each entry represents one submodule within the
              parent module.";
           uses module-identification-leafs;
           uses location-leaf-list;
         }
       }
     }
        
            Multiple entries for the same module name MAY exist.  This
            can occur if multiple modules import the same module but
            specify different revision dates in the import statements.";
         leaf name {
           type yang:yang-identifier;
           description
             "The YANG module name.";
         }
         leaf revision {
           type union {
             type revision-identifier;
             type string {
               length "0";
             }
           }
           description
             "The YANG module revision date.
              A zero-length string is used if no revision statement
              is present in the YANG module.";
         }
         leaf namespace {
           type inet:uri;
           mandatory true;
           description
             "The XML namespace identifier for this module.";
         }
         uses location-leaf-list;
         list submodule {
           key "name";
           description
             "Each entry represents one submodule within the
              parent module.";
           uses module-identification-leafs;
           uses location-leaf-list;
         }
       }
     }
        
     grouping yang-library-parameters {
       description
         "The YANG library data structure is represented as a grouping
          so it can be reused in configuration or another monitoring
          data structure.";
       list module-set {
         key "name";
         description
           "A set of modules that may be used by one or more schemas.
        
     grouping yang-library-parameters {
       description
         "The YANG library data structure is represented as a grouping
          so it can be reused in configuration or another monitoring
          data structure.";
       list module-set {
         key "name";
         description
           "A set of modules that may be used by one or more schemas.
        
            A module set does not have to be referentially complete,
            i.e., it may define modules that contain import statements
            for other modules not included in the module set.";
         uses module-set-parameters;
       }
       list schema {
         key "name";
         description
           "A datastore schema that may be used by one or more
            datastores.
        
            A module set does not have to be referentially complete,
            i.e., it may define modules that contain import statements
            for other modules not included in the module set.";
         uses module-set-parameters;
       }
       list schema {
         key "name";
         description
           "A datastore schema that may be used by one or more
            datastores.
        
            The schema must be valid and referentially complete, i.e.,
            it must contain modules to satisfy all used import
            statements for all modules specified in the schema.";
         leaf name {
           type string;
           description
             "An arbitrary name of the schema.";
         }
         leaf-list module-set {
           type leafref {
             path "../../module-set/name";
           }
           description
             "A set of module-sets that are included in this schema.
              If a non-import-only module appears in multiple module
              sets, then the module revision and the associated features
              and deviations must be identical.";
         }
       }
       list datastore {
         key "name";
         description
           "A datastore supported by this server.
        
            The schema must be valid and referentially complete, i.e.,
            it must contain modules to satisfy all used import
            statements for all modules specified in the schema.";
         leaf name {
           type string;
           description
             "An arbitrary name of the schema.";
         }
         leaf-list module-set {
           type leafref {
             path "../../module-set/name";
           }
           description
             "A set of module-sets that are included in this schema.
              If a non-import-only module appears in multiple module
              sets, then the module revision and the associated features
              and deviations must be identical.";
         }
       }
       list datastore {
         key "name";
         description
           "A datastore supported by this server.
        

Each datastore indicates which schema it supports.

每个数据存储都指示它支持的模式。

            The server MUST instantiate one entry in this list per
            specific datastore it supports.
            Each datastore entry with the same datastore schema SHOULD
            reference the same schema.";
         leaf name {
           type ds:datastore-ref;
           description
             "The identity of the datastore.";
         }
         leaf schema {
           type leafref {
             path "../../schema/name";
           }
           mandatory true;
           description
             "A reference to the schema supported by this datastore.
              All non-import-only modules of the schema are implemented
              with their associated features and deviations.";
         }
       }
     }
        
            The server MUST instantiate one entry in this list per
            specific datastore it supports.
            Each datastore entry with the same datastore schema SHOULD
            reference the same schema.";
         leaf name {
           type ds:datastore-ref;
           description
             "The identity of the datastore.";
         }
         leaf schema {
           type leafref {
             path "../../schema/name";
           }
           mandatory true;
           description
             "A reference to the schema supported by this datastore.
              All non-import-only modules of the schema are implemented
              with their associated features and deviations.";
         }
       }
     }
        
     /*
      * Top-level container
      */
        
     /*
      * Top-level container
      */
        
     container yang-library {
       config false;
       description
         "Container holding the entire YANG library of this server.";
       uses yang-library-parameters;
       leaf content-id {
         type string;
         mandatory true;
         description
           "A server-generated identifier of the contents of the
            '/yang-library' tree.  The server MUST change the value of
            this leaf if the information represented by the
            '/yang-library' tree, except '/yang-library/content-id', has
            changed.";
       }
     }
        
     container yang-library {
       config false;
       description
         "Container holding the entire YANG library of this server.";
       uses yang-library-parameters;
       leaf content-id {
         type string;
         mandatory true;
         description
           "A server-generated identifier of the contents of the
            '/yang-library' tree.  The server MUST change the value of
            this leaf if the information represented by the
            '/yang-library' tree, except '/yang-library/content-id', has
            changed.";
       }
     }
        
     /*
      * Notifications
      */
        
     /*
      * Notifications
      */
        

notification yang-library-update {

图书馆更新通知{

       description
         "Generated when any YANG library information on the
          server has changed.";
       leaf content-id {
         type leafref {
           path "/yanglib:yang-library/yanglib:content-id";
         }
         mandatory true;
         description
           "Contains the YANG library content identifier for the updated
            YANG library at the time the notification is generated.";
       }
     }
        
       description
         "Generated when any YANG library information on the
          server has changed.";
       leaf content-id {
         type leafref {
           path "/yanglib:yang-library/yanglib:content-id";
         }
         mandatory true;
         description
           "Contains the YANG library content identifier for the updated
            YANG library at the time the notification is generated.";
       }
     }
        
     /*
      * Legacy groupings
      */
        
     /*
      * Legacy groupings
      */
        
     grouping module-list {
       status deprecated;
       description
         "The module data structure is represented as a grouping
          so it can be reused in configuration or another monitoring
          data structure.";
        
     grouping module-list {
       status deprecated;
       description
         "The module data structure is represented as a grouping
          so it can be reused in configuration or another monitoring
          data structure.";
        
       grouping common-leafs {
         status deprecated;
         description
           "Common parameters for YANG modules and submodules.";
         leaf name {
           type yang:yang-identifier;
           status deprecated;
           description
             "The YANG module or submodule name.";
         }
         leaf revision {
           type union {
             type revision-identifier;
             type string {
               length "0";
             }
           }
           status deprecated;
           description
             "The YANG module or submodule revision date.
              A zero-length string is used if no revision statement
              is present in the YANG module or submodule.";
         }
        
       grouping common-leafs {
         status deprecated;
         description
           "Common parameters for YANG modules and submodules.";
         leaf name {
           type yang:yang-identifier;
           status deprecated;
           description
             "The YANG module or submodule name.";
         }
         leaf revision {
           type union {
             type revision-identifier;
             type string {
               length "0";
             }
           }
           status deprecated;
           description
             "The YANG module or submodule revision date.
              A zero-length string is used if no revision statement
              is present in the YANG module or submodule.";
         }
        

}

}

       grouping schema-leaf {
         status deprecated;
         description
           "Common schema leaf parameter for modules and submodules.";
         leaf schema {
           type inet:uri;
           description
             "Contains a URL that represents the YANG schema
              resource for this module or submodule.
        
       grouping schema-leaf {
         status deprecated;
         description
           "Common schema leaf parameter for modules and submodules.";
         leaf schema {
           type inet:uri;
           description
             "Contains a URL that represents the YANG schema
              resource for this module or submodule.
        
              This leaf will only be present if there is a URL
              available for retrieval of the schema for this entry.";
         }
       }
       list module {
         key "name revision";
         status deprecated;
         description
           "Each entry represents one revision of one module
            currently supported by the server.";
         uses common-leafs {
           status deprecated;
         }
         uses schema-leaf {
           status deprecated;
         }
         leaf namespace {
           type inet:uri;
           mandatory true;
           status deprecated;
           description
             "The XML namespace identifier for this module.";
         }
         leaf-list feature {
           type yang:yang-identifier;
           status deprecated;
           description
             "List of YANG feature names from this module that are
              supported by the server, regardless of whether they are
              defined in the module or any included submodule.";
         }
         list deviation {
           key "name revision";
           status deprecated;
        
              This leaf will only be present if there is a URL
              available for retrieval of the schema for this entry.";
         }
       }
       list module {
         key "name revision";
         status deprecated;
         description
           "Each entry represents one revision of one module
            currently supported by the server.";
         uses common-leafs {
           status deprecated;
         }
         uses schema-leaf {
           status deprecated;
         }
         leaf namespace {
           type inet:uri;
           mandatory true;
           status deprecated;
           description
             "The XML namespace identifier for this module.";
         }
         leaf-list feature {
           type yang:yang-identifier;
           status deprecated;
           description
             "List of YANG feature names from this module that are
              supported by the server, regardless of whether they are
              defined in the module or any included submodule.";
         }
         list deviation {
           key "name revision";
           status deprecated;
        

description "List of YANG deviation module names and revisions used by this server to modify the conformance of the module associated with this entry. Note that the same module can be used for deviations for multiple modules, so the same entry MAY appear within multiple 'module' entries.

description“此服务器用于修改与此条目关联的模块一致性的偏差模块名称和修订列表。请注意,同一模块可用于多个模块的偏差,因此同一条目可能出现在多个“模块”条目中。

              The deviation module MUST be present in the 'module'
              list, with the same name and revision values.
              The 'conformance-type' value will be 'implement' for
              the deviation module.";
           uses common-leafs {
             status deprecated;
           }
         }
         leaf conformance-type {
           type enumeration {
             enum implement {
               description
                 "Indicates that the server implements one or more
                  protocol-accessible objects defined in the YANG module
                  identified in this entry.  This includes deviation
                  statements defined in the module.
        
              The deviation module MUST be present in the 'module'
              list, with the same name and revision values.
              The 'conformance-type' value will be 'implement' for
              the deviation module.";
           uses common-leafs {
             status deprecated;
           }
         }
         leaf conformance-type {
           type enumeration {
             enum implement {
               description
                 "Indicates that the server implements one or more
                  protocol-accessible objects defined in the YANG module
                  identified in this entry.  This includes deviation
                  statements defined in the module.
        

For YANG version 1.1 modules, there is at most one 'module' entry with conformance type 'implement' for a particular module name, since YANG 1.1 requires that at most one revision of a module is implemented.

对于YANG版本1.1模块,对于特定模块名称,最多有一个符合性类型为“implement”的“模块”条目,因为YANG 1.1要求最多实现一个模块版本。

                  For YANG version 1 modules, there SHOULD NOT be more
                  than one 'module' entry for a particular module
                  name.";
             }
             enum import {
               description
                 "Indicates that the server imports reusable definitions
                  from the specified revision of the module but does
                  not implement any protocol-accessible objects from
                  this revision.
        
                  For YANG version 1 modules, there SHOULD NOT be more
                  than one 'module' entry for a particular module
                  name.";
             }
             enum import {
               description
                 "Indicates that the server imports reusable definitions
                  from the specified revision of the module but does
                  not implement any protocol-accessible objects from
                  this revision.
        
                  Multiple 'module' entries for the same module name MAY
                  exist.  This can occur if multiple modules import the
                  same module but specify different revision dates in
                  the import statements.";
             }
           }
           mandatory true;
        
                  Multiple 'module' entries for the same module name MAY
                  exist.  This can occur if multiple modules import the
                  same module but specify different revision dates in
                  the import statements.";
             }
           }
           mandatory true;
        
           status deprecated;
           description
             "Indicates the type of conformance the server is claiming
              for the YANG module identified by this entry.";
         }
         list submodule {
           key "name revision";
           status deprecated;
           description
             "Each entry represents one submodule within the
              parent module.";
           uses common-leafs {
             status deprecated;
           }
           uses schema-leaf {
             status deprecated;
           }
         }
       }
     }
        
           status deprecated;
           description
             "Indicates the type of conformance the server is claiming
              for the YANG module identified by this entry.";
         }
         list submodule {
           key "name revision";
           status deprecated;
           description
             "Each entry represents one submodule within the
              parent module.";
           uses common-leafs {
             status deprecated;
           }
           uses schema-leaf {
             status deprecated;
           }
         }
       }
     }
        
     /*
      * Legacy operational state data nodes
      */
        
     /*
      * Legacy operational state data nodes
      */
        
     container modules-state {
       config false;
       status deprecated;
       description
         "Contains YANG module monitoring information.";
       leaf module-set-id {
         type string;
         mandatory true;
         status deprecated;
         description
           "Contains a server-specific identifier representing
            the current set of modules and submodules.  The
            server MUST change the value of this leaf if the
            information represented by the 'module' list instances
            has changed.";
       }
       uses module-list {
         status deprecated;
       }
     }
        
     container modules-state {
       config false;
       status deprecated;
       description
         "Contains YANG module monitoring information.";
       leaf module-set-id {
         type string;
         mandatory true;
         status deprecated;
         description
           "Contains a server-specific identifier representing
            the current set of modules and submodules.  The
            server MUST change the value of this leaf if the
            information represented by the 'module' list instances
            has changed.";
       }
       uses module-list {
         status deprecated;
       }
     }
        
     /*
      * Legacy notifications
        
     /*
      * Legacy notifications
        

*/

*/

     notification yang-library-change {
       status deprecated;
       description
         "Generated when the set of modules and submodules supported
          by the server has changed.";
       leaf module-set-id {
         type leafref {
           path "/yanglib:modules-state/yanglib:module-set-id";
         }
         mandatory true;
         status deprecated;
         description
           "Contains the module-set-id value representing the
            set of modules and submodules supported at the server
            at the time the notification is generated.";
       }
     }
   }
        
     notification yang-library-change {
       status deprecated;
       description
         "Generated when the set of modules and submodules supported
          by the server has changed.";
       leaf module-set-id {
         type leafref {
           path "/yanglib:modules-state/yanglib:module-set-id";
         }
         mandatory true;
         status deprecated;
         description
           "Contains the module-set-id value representing the
            set of modules and submodules supported at the server
            at the time the notification is generated.";
       }
     }
   }
        

<CODE ENDS>

<代码结束>

5. IANA Considerations
5. IANA考虑

RFC 7895 previously registered one URI in the "IETF XML Registry" [RFC3688]. This document takes over this registration entry made by RFC 7895 and changes the Registrant Contact to the IESG according to Section 4 of [RFC3688].

RFC 7895以前在“IETF XML注册表”[RFC3688]中注册了一个URI。根据[RFC3688]第4节,本文件接管了RFC 7895的注册条目,并将注册人联系人更改为IESG。

     URI: urn:ietf:params:xml:ns:yang:ietf-yang-library
        
     URI: urn:ietf:params:xml:ns:yang:ietf-yang-library
        

Registrant Contact: The IESG.

注册人联系人:IESG。

XML: N/A, the requested URI is an XML namespace.

XML:N/A,请求的URI是一个XML名称空间。

This document registers a YANG module in the "YANG Module Names" registry [RFC6020]:

本文件在“阳模块名称”注册表[RFC6020]中注册阳模块:

     name:         ietf-yang-library
     namespace:    urn:ietf:params:xml:ns:yang:ietf-yang-library
     prefix:       yanglib
     reference:    RFC 8525
        
     name:         ietf-yang-library
     namespace:    urn:ietf:params:xml:ns:yang:ietf-yang-library
     prefix:       yanglib
     reference:    RFC 8525
        
6. Security Considerations
6. 安全考虑

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

本文档中指定的模块为数据定义了一个模式,该模式旨在通过网络管理协议(如NETCONF[RFC6241]或restcconf[RFC8040])进行访问。最低的NETCONF层是安全传输层,实现安全传输的强制要求是安全Shell(SSH)[RFC6242]。最低的RESTCONF层是HTTPS,实现安全传输的强制层是TLS[RFC8446]。

The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

网络配置访问控制模型(NACM)[RFC8341]提供了将特定NETCONF或RESTCONF用户的访问限制为所有可用NETCONF或RESTCONF协议操作和内容的预配置子集的方法。

Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. These are the subtrees and data nodes and their sensitivity/vulnerability:

在某些网络环境中,此模块中的某些可读数据节点可能被视为敏感或易受攻击。因此,控制对这些数据节点的读取访问(例如,通过get、get config或通知)非常重要。这些是子树和数据节点及其敏感性/漏洞:

The "/yang-library" subtree of the YANG library may help an attacker identify the server capabilities and server implementations with known bugs since the set of YANG modules supported by a server may reveal the kind of device and the manufacturer of the device. Although some of this information may be available to all NETCONF users via the NETCONF <hello> message (or similar messages in other management protocols), this YANG module potentially exposes additional details that could be of some assistance to an attacker. Server vulnerabilities may be specific to particular modules, module revisions, module features, or even module deviations. For example, if a particular operation on a particular data node is known to cause a server to crash or significantly degrade device performance, then the "module" list information will help an attacker identify server implementations with such a defect, in order to launch a denial-of-service attack on the device.

yang library的“/yang library”子树可帮助攻击者识别具有已知错误的服务器功能和服务器实现,因为服务器支持的yang模块集可能会显示设备类型和设备制造商。尽管所有NETCONF用户都可以通过NETCONF<hello>消息(或其他管理协议中的类似消息)获得其中一些信息,但此模块可能会暴露其他细节,可能对攻击者有所帮助。服务器漏洞可能特定于特定模块、模块修订、模块功能,甚至模块偏差。例如,如果已知特定数据节点上的特定操作会导致服务器崩溃或显著降低设备性能,“模块”列表信息将帮助攻击者识别具有此类缺陷的服务器实现,以便在设备上发起拒绝服务攻击。

7. References
7. 工具书类
7.1. Normative References
7.1. 规范性引用文件

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119]Bradner,S.,“RFC中用于表示需求水平的关键词”,BCP 14,RFC 2119,DOI 10.17487/RFC2119,1997年3月<https://www.rfc-editor.org/info/rfc2119>.

[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC3688]Mealling,M.,“IETF XML注册表”,BCP 81,RFC 3688,DOI 10.17487/RFC3688,2004年1月<https://www.rfc-editor.org/info/rfc3688>.

[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6020]Bjorklund,M.,Ed.“YANG-网络配置协议的数据建模语言(NETCONF)”,RFC 6020,DOI 10.17487/RFC6020,2010年10月<https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6241]Enns,R.,Ed.,Bjorklund,M.,Ed.,Schoenwaeld,J.,Ed.,和A.Bierman,Ed.,“网络配置协议(NETCONF)”,RFC 6241,DOI 10.17487/RFC6241,2011年6月<https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6242]Wasserman,M.“在安全外壳上使用NETCONF协议(SSH)”,RFC 6242,DOI 10.17487/RFC6242,2011年6月<https://www.rfc-editor.org/info/rfc6242>.

[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.

[RFC6991]Schoenwaeld,J.,Ed.,“常见杨数据类型”,RFC 6991,DOI 10.17487/RFC69911913年7月<https://www.rfc-editor.org/info/rfc6991>.

[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC7950]Bjorklund,M.,Ed.“YANG 1.1数据建模语言”,RFC 7950,DOI 10.17487/RFC7950,2016年8月<https://www.rfc-editor.org/info/rfc7950>.

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8040]Bierman,A.,Bjorklund,M.,和K.Watsen,“RESTCONF协议”,RFC 8040,DOI 10.17487/RFC8040,2017年1月<https://www.rfc-editor.org/info/rfc8040>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174]Leiba,B.,“RFC 2119关键词中大写与小写的歧义”,BCP 14,RFC 8174,DOI 10.17487/RFC8174,2017年5月<https://www.rfc-editor.org/info/rfc8174>.

[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8341]Bierman,A.和M.Bjorklund,“网络配置访问控制模型”,STD 91,RFC 8341,DOI 10.17487/RFC8341,2018年3月<https://www.rfc-editor.org/info/rfc8341>.

[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>.

[RFC8342]Bjorklund,M.,Schoenwaeld,J.,Shafer,P.,Watsen,K.,和R.Wilton,“网络管理数据存储体系结构(NMDA)”,RFC 8342,DOI 10.17487/RFC8342,2018年3月<https://www.rfc-editor.org/info/rfc8342>.

[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

[RFC8446]Rescorla,E.“传输层安全(TLS)协议版本1.3”,RFC 8446,DOI 10.17487/RFC8446,2018年8月<https://www.rfc-editor.org/info/rfc8446>.

7.2. Informative References
7.2. 资料性引用

[RFC5277] Chisholm, S. and H. Trevino, "NETCONF Event Notifications", RFC 5277, DOI 10.17487/RFC5277, July 2008, <https://www.rfc-editor.org/info/rfc5277>.

[RFC5277]Chisholm,S.和H.Trevino,“NETCONF事件通知”,RFC 5277,DOI 10.17487/RFC5277,2008年7月<https://www.rfc-editor.org/info/rfc5277>.

[RFC6470] Bierman, A., "Network Configuration Protocol (NETCONF) Base Notifications", RFC 6470, DOI 10.17487/RFC6470, February 2012, <https://www.rfc-editor.org/info/rfc6470>.

[RFC6470]Bierman,A.,“网络配置协议(NETCONF)基本通知”,RFC 6470,DOI 10.17487/RFC6470,2012年2月<https://www.rfc-editor.org/info/rfc6470>.

[RFC7895] Bierman, A., Bjorklund, M., and K. Watsen, "YANG Module Library", RFC 7895, DOI 10.17487/RFC7895, June 2016, <https://www.rfc-editor.org/info/rfc7895>.

[RFC7895]Bierman,A.,Bjorklund,M.,和K.Watsen,“阳模块库”,RFC 7895,DOI 10.17487/RFC78952016年6月<https://www.rfc-editor.org/info/rfc7895>.

[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8340]Bjorklund,M.和L.Berger,编辑,“杨树图”,BCP 215,RFC 8340,DOI 10.17487/RFC8340,2018年3月<https://www.rfc-editor.org/info/rfc8340>.

[RFC8343] Bjorklund, M., "A YANG Data Model for Interface Management", RFC 8343, DOI 10.17487/RFC8343, March 2018, <https://www.rfc-editor.org/info/rfc8343>.

[RFC8343]Bjorklund,M.,“用于接口管理的YANG数据模型”,RFC 8343,DOI 10.17487/RFC8343,2018年3月<https://www.rfc-editor.org/info/rfc8343>.

[RFC8344] Bjorklund, M., "A YANG Data Model for IP Management", RFC 8344, DOI 10.17487/RFC8344, March 2018, <https://www.rfc-editor.org/info/rfc8344>.

[RFC8344]Bjorklund,M.,“知识产权管理的杨氏数据模型”,RFC 8344,DOI 10.17487/RFC8344,2018年3月<https://www.rfc-editor.org/info/rfc8344>.

[RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, March 2018, <https://www.rfc-editor.org/info/rfc8345>.

[RFC8345]Clemm,A.,Medved,J.,Varga,R.,Bahadur,N.,Ananthakrishnan,H.,和X.Liu,“网络拓扑的杨数据模型”,RFC 8345,DOI 10.17487/RFC83452018年3月<https://www.rfc-editor.org/info/rfc8345>.

[RFC8348] Bierman, A., Bjorklund, M., Dong, J., and D. Romascanu, "A YANG Data Model for Hardware Management", RFC 8348, DOI 10.17487/RFC8348, March 2018, <https://www.rfc-editor.org/info/rfc8348>.

[RFC8348]Bierman,A.,Bjorklund,M.,Dong,J.,和D.Romascanu,“硬件管理的杨数据模型”,RFC 8348,DOI 10.17487/RFC8348,2018年3月<https://www.rfc-editor.org/info/rfc8348>.

[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for Routing Management (NMDA Version)", RFC 8349, DOI 10.17487/RFC8349, March 2018, <https://www.rfc-editor.org/info/rfc8349>.

[RFC8349]Lhotka,L.,Lindem,A.,和Y.Qu,“路由管理的YANG数据模型(NMDA版本)”,RFC 8349,DOI 10.17487/RFC8349,2018年3月<https://www.rfc-editor.org/info/rfc8349>.

[RFC8526] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "NETCONF Extensions to Support the Network Management Datastore Architecture", RFC 8526, DOI 10.17487/RFC8526, March 2019, <https://www.rfc-editor.org/info/rfc8526>.

[RFC8526]Bjorklund,M.,Schoenwaeld,J.,Shafer,P.,Watsen,K.,和R.Wilton,“支持网络管理数据存储架构的网络配置扩展”,RFC 8526,DOI 10.17487/RFC8526,2019年3月<https://www.rfc-editor.org/info/rfc8526>.

[RFC8528] Bjorklund, M. and L. Lhotka, "YANG Schema Mount", RFC 8528, DOI 10.17487/RFC8528, March 2019, <https://www.rfc-editor.org/info/rfc8528>.

[RFC8528]Bjorklund,M.和L.Lhotka,“阳模式山”,RFC 8528,DOI 10.17487/RFC85282019年3月<https://www.rfc-editor.org/info/rfc8528>.

Appendix A. Summary of Changes from RFC 7895
附录A.RFC 7895变更汇总

This document changes [RFC7895] in the following ways:

本文件以以下方式更改[RFC7895]:

o Renamed document title from "YANG Module Library" to "YANG Library".

o 将文件标题从“杨模块库”重命名为“杨库”。

o Added a new top-level "/yang-library" container to hold the entire YANG library providing information about module sets, schemas, and datastores.

o 添加了一个新的顶级“/yang-library”容器,以容纳整个yang-library,提供有关模块集、模式和数据存储的信息。

o Refactored the "/modules-state" container into a new "/yang-library/module-set" list.

o 将“/modules state”容器重构为新的“/yang库/模块集”列表。

o Added a new "/yang-library/schema" list and a new "/yang-library/ datastore" list.

o 添加了一个新的“/yang library/schema”列表和一个新的“/yang library/datastore”列表。

o Added a set of new groupings as replacements for the deprecated groupings.

o 添加了一组新分组以替换不推荐使用的分组。

o Added a "yang-library-update" notification as a replacement for the deprecated "yang-library-change" notification.

o 添加了“yang library update”通知,以替换不推荐使用的“yang library change”通知。

o Deprecated the "/modules-state" tree.

o 不推荐使用“/模块状态”树。

o Deprecated the "/module-list" grouping.

o 不推荐使用“/模块列表”分组。

o Deprecated the "/yang-library-change" notification.

o 不推荐使用“/yang library change”通知。

Appendix B. Example YANG Library Instance for a Basic Server
附录B.基本服务器的示例库实例

The following example shows the YANG library of a basic server implementing the "ietf-interfaces" [RFC8343] and "ietf-ip" [RFC8344] modules in the <running>, <startup>, and <operational> datastores and the "ietf-hardware" [RFC8348] module in the <operational> datastore.

以下示例显示了基本服务器的YANG库,该服务器在<running>、<startup>和<operational>数据存储中实现“ietf接口”[RFC8343]和“ietf ip”[RFC8344]模块,并在<operational>数据存储中实现“ietf硬件”[RFC8348]模块。

Newline characters in leaf values are added for formatting reasons.

叶值中添加换行符是出于格式原因。

   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores">
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>
        
     <module-set>
       <name>config-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>
        
           urn:ietf:params:xml:ns:yang:ietf-interfaces
         </namespace>
       </module>
       <module>
         <name>ietf-ip</name>
         <revision>2018-02-22</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-ip
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
           urn:ietf:params:xml:ns:yang:ietf-interfaces
         </namespace>
       </module>
       <module>
         <name>ietf-ip</name>
         <revision>2018-02-22</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-ip
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
     <module-set>
       <name>state-modules</name>
       <module>
         <name>ietf-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-hardware
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
        
     <module-set>
       <name>state-modules</name>
       <module>
         <name>ietf-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-hardware
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
        
       </import-only-module>
       <import-only-module>
         <name>iana-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:iana-hardware
         </namespace>
       </import-only-module>
     </module-set>
        
       </import-only-module>
       <import-only-module>
         <name>iana-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:iana-hardware
         </namespace>
       </import-only-module>
     </module-set>
        
     <schema>
       <name>config-schema</name>
       <module-set>config-modules</module-set>
     </schema>
     <schema>
       <name>state-schema</name>
       <module-set>config-modules</module-set>
       <module-set>state-modules</module-set>
     </schema>
        
     <schema>
       <name>config-schema</name>
       <module-set>config-modules</module-set>
     </schema>
     <schema>
       <name>state-schema</name>
       <module-set>config-modules</module-set>
       <module-set>state-modules</module-set>
     </schema>
        
     <datastore>
       <name>ds:startup</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:running</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:operational</name>
       <schema>state-schema</schema>
     </datastore>
        
     <datastore>
       <name>ds:startup</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:running</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:operational</name>
       <schema>state-schema</schema>
     </datastore>
        
     <content-id>75a43df9bd56b92aacc156a2958fbe12312fb285</content-id>
   </yang-library>
        
     <content-id>75a43df9bd56b92aacc156a2958fbe12312fb285</content-id>
   </yang-library>
        
Appendix C. Example YANG Library Instance for an Advanced Server
附录C.高级服务器的示例库实例

The following example extends the example in Appendix B by using modules from [RFC8345] and [RFC8349] to illustrate a slightly more advanced server that:

下面的示例扩展了附录B中的示例,使用[RFC8345]和[RFC8349]中的模块来说明稍微高级一点的服务器:

o Has a module with features only enabled in <operational>; the "ietf-routing" module is supported in <running>, <startup>, and <operational>, but the "multiple-ribs" and "router-id" features are only enabled in <operational>. Hence, the "router-id" leaf may be read but not configured.

o 具有仅在<操作>中启用功能的模块;“ietf路由”模块在<running>、<startup>和<operational>中受支持,但“多条肋骨”和“路由器id”功能仅在<operational>中启用。因此,可以读取但不配置“路由器id”叶。

o Supports a dynamic configuration datastore "example-ds-ephemeral", with only the "ietf-network" and "ietf-network-topology" modules configurable via a notional dynamic configuration protocol.

o 支持动态配置数据存储“example ds ephemeral”,只有“ietf网络”和“ietf网络拓扑”模块可通过概念动态配置协议进行配置。

o Shows an example of datastore-specific deviations. The "example-vendor-hardware-deviations" module is included in the schema for <operational> to remove data nodes that cannot be supported by the server.

o 显示数据存储特定偏差的示例。“示例供应商硬件偏差”模块包含在<operational>的架构中,用于删除服务器不支持的数据节点。

o Shows how module-sets can be used to organize related modules together.

o 显示如何使用模块集将相关模块组织在一起。

Newline characters in leaf values are added for formatting reasons.

叶值中添加换行符是出于格式原因。

   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"
       xmlns:ex-ds-eph="urn:example:ds-ephemeral">
        
   <yang-library
       xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-library"
       xmlns:ds="urn:ietf:params:xml:ns:yang:ietf-datastores"
       xmlns:ex-ds-eph="urn:example:ds-ephemeral">
        
     <module-set>
       <name>config-state-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-interfaces
         </namespace>
       </module>
       <module>
         <name>ietf-ip</name>
         <revision>2018-02-22</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-ip
         </namespace>
       </module>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
        
     <module-set>
       <name>config-state-modules</name>
       <module>
         <name>ietf-interfaces</name>
         <revision>2018-02-20</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-interfaces
         </namespace>
       </module>
       <module>
         <name>ietf-ip</name>
         <revision>2018-02-22</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-ip
         </namespace>
       </module>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
        
       </import-only-module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
       </import-only-module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
     <module-set>
       <name>config-only-modules</name>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
       </module>
     </module-set>
        
     <module-set>
       <name>config-only-modules</name>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
       </module>
     </module-set>
        
     <module-set>
       <name>dynamic-config-state-modules</name>
       <module>
         <name>ietf-network</name>
         <revision>2018-02-26</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-network
         </namespace>
       </module>
       <module>
         <name>ietf-network-topology</name>
         <revision>2018-02-26</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-network-topology
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
     <module-set>
       <name>dynamic-config-state-modules</name>
       <module>
         <name>ietf-network</name>
         <revision>2018-02-26</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-network
         </namespace>
       </module>
       <module>
         <name>ietf-network-topology</name>
         <revision>2018-02-26</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-network-topology
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
     </module-set>
        
     <module-set>
       <name>state-only-modules</name>
        
     <module-set>
       <name>state-only-modules</name>
        
       <module>
         <name>ietf-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-hardware
         </namespace>
         <deviation>example-vendor-hardware-deviations</deviation>
       </module>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
         <feature>multiple-ribs</feature>
         <feature>router-id</feature>
       </module>
       <module>
         <name>example-vendor-hardware-deviations</name>
         <revision>2018-01-31</revision>
         <namespace>
           urn:example:example-vendor-hardware-deviations
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>iana-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:iana-hardware
         </namespace>
       </import-only-module>
     </module-set>
        
       <module>
         <name>ietf-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-hardware
         </namespace>
         <deviation>example-vendor-hardware-deviations</deviation>
       </module>
       <module>
         <name>ietf-routing</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-routing
         </namespace>
         <feature>multiple-ribs</feature>
         <feature>router-id</feature>
       </module>
       <module>
         <name>example-vendor-hardware-deviations</name>
         <revision>2018-01-31</revision>
         <namespace>
           urn:example:example-vendor-hardware-deviations
         </namespace>
       </module>
       <import-only-module>
         <name>ietf-inet-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-inet-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>ietf-yang-types</name>
         <revision>2013-07-15</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:ietf-yang-types
         </namespace>
       </import-only-module>
       <import-only-module>
         <name>iana-hardware</name>
         <revision>2018-03-13</revision>
         <namespace>
           urn:ietf:params:xml:ns:yang:iana-hardware
         </namespace>
       </import-only-module>
     </module-set>
        

<schema>

<schema>

       <name>config-schema</name>
       <module-set>config-state-modules</module-set>
       <module-set>config-only-modules</module-set>
     </schema>
     <schema>
       <name>dynamic-config-schema</name>
       <module-set>dynamic-config-state-modules</module-set>
     </schema>
     <schema>
       <name>state-schema</name>
       <module-set>config-state-modules</module-set>
       <module-set>dynamic-config-state-modules</module-set>
       <module-set>state-only-modules</module-set>
     </schema>
        
       <name>config-schema</name>
       <module-set>config-state-modules</module-set>
       <module-set>config-only-modules</module-set>
     </schema>
     <schema>
       <name>dynamic-config-schema</name>
       <module-set>dynamic-config-state-modules</module-set>
     </schema>
     <schema>
       <name>state-schema</name>
       <module-set>config-state-modules</module-set>
       <module-set>dynamic-config-state-modules</module-set>
       <module-set>state-only-modules</module-set>
     </schema>
        
     <datastore>
       <name>ds:startup</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:running</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ex-ds-eph:ds-ephemeral</name>
       <schema>dynamic-config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:operational</name>
       <schema>state-schema</schema>
     </datastore>
        
     <datastore>
       <name>ds:startup</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:running</name>
       <schema>config-schema</schema>
     </datastore>
     <datastore>
       <name>ex-ds-eph:ds-ephemeral</name>
       <schema>dynamic-config-schema</schema>
     </datastore>
     <datastore>
       <name>ds:operational</name>
       <schema>state-schema</schema>
     </datastore>
        
     <content-id>14782ab9bd56b92aacc156a2958fbe12312fb285</content-id>
   </yang-library>
        
     <content-id>14782ab9bd56b92aacc156a2958fbe12312fb285</content-id>
   </yang-library>
        

Authors' Addresses

作者地址

Andy Bierman YumaWorks

安迪·比尔曼·尤马沃斯

   Email: andy@yumaworks.com
        
   Email: andy@yumaworks.com
        

Martin Bjorklund Tail-f Systems

Martin Bjorklund Tail-f系统

   Email: mbj@tail-f.com
        
   Email: mbj@tail-f.com
        

Juergen Schoenwaelder Jacobs University

尤尔根·舍恩瓦埃尔德·雅各布斯大学

   Email: j.schoenwaelder@jacobs-university.de
        
   Email: j.schoenwaelder@jacobs-university.de
        

Kent Watsen Watsen Networks

肯特沃特森网络公司

   Email: kent+ietf@watsen.net
        
   Email: kent+ietf@watsen.net
        

Robert Wilton Cisco Systems

罗伯特·威尔顿思科系统公司

   Email: rwilton@cisco.com
        
   Email: rwilton@cisco.com