draft-ietf-netmod-yang-solutions-00.txt | draft-ietf-netmod-yang-solutions-01.txt | |||
---|---|---|---|---|
Network Working Group R. Wilton, Ed. | Network Working Group R. Wilton, Ed. | |||
Internet-Draft Cisco Systems, Inc. | Internet-Draft Cisco Systems, Inc. | |||
Intended status: Informational March 17, 2020 | Intended status: Informational 1 November 2020 | |||
Expires: September 18, 2020 | Expires: 5 May 2021 | |||
YANG Versioning Solution Overview | YANG Versioning Solution Overview | |||
draft-ietf-netmod-yang-solutions-00 | draft-ietf-netmod-yang-solutions-01 | |||
Abstract | Abstract | |||
This document gives an overview of the different documents that | This document gives an overview of the different documents that | |||
comprise a full solution to the YANG versioning requirements | comprise a full solution to the YANG versioning requirements | |||
document. The purpose of this document is to help readers understand | document. The purpose of this document is to help readers understand | |||
how the discrete parts of the YANG versioning solution fit together | how the discrete parts of the YANG versioning solution fit together | |||
during working group development of the solution documents. | during working group development of the solution documents. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 1, line 34 ¶ | skipping to change at page 1, line 34 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 18, 2020. | This Internet-Draft will expire on 5 May 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Solution Documents . . . . . . . . . . . . . . . . . . . . . 3 | 2. Solution Documents . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1. Updated YANG Module Revision Handling . . . . . . . . . . 3 | 2.1. Updated YANG Module Revision Handling . . . . . . . . . . 3 | |||
2.2. YANG Semantic Versioning . . . . . . . . . . . . . . . . 4 | 2.2. YANG Semantic Versioning . . . . . . . . . . . . . . . . 4 | |||
2.3. Versioned YANG packages . . . . . . . . . . . . . . . . . 4 | 2.3. Versioned YANG packages . . . . . . . . . . . . . . . . . 4 | |||
2.4. Dynamic YANG schema selection . . . . . . . . . . . . . . 5 | 2.4. Dynamic YANG schema selection . . . . . . . . . . . . . . 5 | |||
2.5. YANG Schema Comparison . . . . . . . . . . . . . . . . . 6 | 2.5. YANG Schema Comparison . . . . . . . . . . . . . . . . . 6 | |||
3. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 7 | |||
6. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
6.1. Normative References . . . . . . . . . . . . . . . . . . 7 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 7 | |||
6.2. Informative References . . . . . . . . . . . . . . . . . 8 | 6.2. Informative References . . . . . . . . . . . . . . . . . 7 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
1. Introduction | 1. Introduction | |||
[I-D.ietf-netmod-yang-versioning-reqs] documents the requirements for | [I-D.ietf-netmod-yang-versioning-reqs] documents the requirements for | |||
any solution to the YANG [RFC7950] versioning problem. In | any solution to the YANG [RFC7950] versioning problem. In | |||
particular, chapter 5 lists the formal requirements that a solution | particular, chapter 5 lists the formal requirements that a solution | |||
requires. | requires. | |||
The complete solution to all of the YANG versioning requirements is | The complete solution to all of the YANG versioning requirements is | |||
comprised of five documents, each addressing different aspects of the | comprised of five documents, each addressing different aspects of the | |||
solution. These documents are: | solution. These documents are: | |||
1. [I-D.verdt-netmod-yang-module-versioning] | 1. [I-D.ietf-netmod-yang-module-versioning] | |||
2. [I-D.verdt-netmod-yang-semver] | 2. [I-D.ietf-netmod-yang-semver] | |||
3. [I-D.rwilton-netmod-yang-packages] | 3. [I-D.ietf-netmod-yang-packages] | |||
4. [I-D.wilton-netmod-yang-ver-selection] | 4. [I-D.ietf-netmod-yang-ver-selection] | |||
5. [I-D.verdt-netmod-yang-schema-comparison] | 5. [I-D.ietf-netmod-yang-schema-comparison] | |||
The aim of this document is to help readers understand how these | The aim of this document is to help readers understand how these | |||
different solution documents fit together, and also which documents | different solution documents fit together, and also which documents | |||
contribute solutions that address particular individual requirements. | contribute solutions that address particular individual requirements. | |||
Open issues, across all of the solution documents are tracked at | Open issues, across all of the solution documents are tracked at | |||
<https://github.com/netmod-wg/yang-ver-dt/issues>. | https://github.com/netmod-wg/yang-ver-dt/issues. | |||
2. Solution Documents | 2. Solution Documents | |||
2.1. Updated YANG Module Revision Handling | 2.1. Updated YANG Module Revision Handling | |||
In summary, [I-D.verdt-netmod-yang-module-versioning] specifies | In summary, [I-D.ietf-netmod-yang-module-versioning] specifies | |||
minimal extensions and updates to the YANG language, YANG Library, | minimal extensions and updates to the YANG language, YANG Library, | |||
and YANG author guidelines to provide more flexible YANG module | and YANG author guidelines to provide more flexible YANG module | |||
revision handling. The intent is that these changes and extensions | revision handling. The intent is that these changes and extensions | |||
could be folded into future revisions of the updated specifications. | could be folded into future revisions of the updated specifications. | |||
The document provides a base solution for all requirements except Req | The document provides a base solution for all requirements except Req | |||
2.2, Req 3.1 and Req 3.2. | 2.2, Req 3.1 and Req 3.2. | |||
The extensions and changes in the document can be summarized thus: | The extensions and changes in the document can be summarized thus: | |||
o It defines a YANG extension statement to indicate where non- | * It defines a YANG extension statement to indicate where non- | |||
backwards-compatible changes have occurred in a module's revision | backwards-compatible changes have occurred in a module's revision | |||
history. | history. | |||
o It relaxes the rules for the module revision history to allow for | * It relaxes the rules for the module revision history to allow for | |||
a non-linear module revision history. I.e., any given module | a non-linear module revision history. I.e., any given module | |||
revision may have multiple revisions directly derived from it. | revision may have multiple revisions directly derived from it. | |||
o It defines a new import extension statement that restricts the | * It defines a new import extension statement that restricts the | |||
allowed module revisions that satisfy the import to only those | allowed module revisions that satisfy the import to only those | |||
derived from a specified module revision. | derived from a specified module revision. | |||
o It defines a revision label extension statement to allow an | * It defines a revision label extension statement to allow an | |||
informative name to be associated with a particular revision date, | informative name to be associated with a particular revision date, | |||
and to be used in import statements, YANG module filenames, and is | and to be used in import statements, YANG module filenames, and is | |||
available in YANG library. One example of how the revision label | available in YANG library. One example of how the revision label | |||
could be used is to associate a semantic versioning scheme to YANG | could be used is to associate a semantic versioning scheme to YANG | |||
module revisions. | module revisions. | |||
o It updates the YANG rules for changes between module revisions | * It updates the YANG rules for changes between module revisions | |||
that are allowed to be classified as backwards-compatible. In | that are allowed to be classified as backwards-compatible. In | |||
particular, marking a node as obsolete is no longer classified as | particular, marking a node as obsolete is no longer classified as | |||
a backwards compatible change. | a backwards compatible change. | |||
o It provides updated guidance on how servers handle deprecated and | * It provides updated guidance on how servers handle deprecated and | |||
obsolete YANG nodes and augments YANG library with additional | obsolete YANG nodes and augments YANG library with additional | |||
leaves to report the server's behavior to clients. | leaves to report the server's behavior to clients. | |||
o It provides an extension statement to allow a description | * It provides an extension statement to allow a description | |||
statement to be associated with a YANG status statement, providing | statement to be associated with a YANG status statement, providing | |||
more information about why the status has changed. | more information about why the status has changed. | |||
o It defines how versioning relates to YANG instance data. | * It defines how versioning relates to YANG instance data. | |||
o It refines the guidelines for updating modules, taking into | * It refines the guidelines for updating modules, taking into | |||
consideration that non-backwards-compatible changes are sometimes | consideration that non-backwards-compatible changes are sometimes | |||
necessary for various pragmatic reasons. | necessary for various pragmatic reasons. | |||
2.2. YANG Semantic Versioning | 2.2. YANG Semantic Versioning | |||
[I-D.verdt-netmod-yang-semver] defines a semantic versioning scheme, | [I-D.ietf-netmod-yang-semver] defines a semantic versioning scheme, | |||
derived from the semver.org 2.0.0 specification, that can be used in | derived from the semver.org 2.0.0 specification, that can be used in | |||
conjunction with the revision label extension statement defined in | conjunction with the revision label extension statement defined in | |||
Section 2.1 to allow semantic version numbers to be used to manage | Section 2.1 to allow semantic version numbers to be used to manage | |||
the revision lifecycle of YANG modules and other related YANG assets, | the revision lifecycle of YANG modules and other related YANG assets, | |||
e.g., YANG packages. This document provides an enhanced solution for | e.g., YANG packages. This document provides an enhanced solution for | |||
Req 2.1, but organizations authoring modules are not obliged to use | Req 2.1, but organizations authoring modules are not obliged to use | |||
this specific versioning scheme, and could choose a different | this specific versioning scheme, and could choose a different | |||
overlaid versioning scheme, or none at all and rely solely on | overlaid versioning scheme, or none at all and rely solely on | |||
revision dates. | revision dates. | |||
The aims of the YANG semantic versioning scheme are: | The aims of the YANG semantic versioning scheme are: | |||
o to generally allow clients to determine whether NBC changes have | * to generally allow clients to determine whether NBC changes have | |||
occurred between two revisions from the version number alone, | occurred between two revisions from the version number alone, | |||
without having to check the full revision history; | without having to check the full revision history; | |||
o to give a more informative identifier for a branched revision | * to give a more informative identifier for a branched revision | |||
history over revision dates alone; | history over revision dates alone; | |||
o to allow revision branches that contain fixes for published non- | * to allow revision branches that contain fixes for published non- | |||
latest releases. | latest releases. | |||
2.3. Versioned YANG packages | 2.3. Versioned YANG packages | |||
The two previous solution documents primarily address version and | The two previous solution documents primarily address version and | |||
revision management of individual modules. | revision management of individual modules. | |||
[I-D.rwilton-netmod-yang-packages] provides a mechanism to group sets | [I-D.ietf-netmod-yang-packages] provides a mechanism to group sets of | |||
of related YANG modules revisions together, into constructs called | related YANG modules revisions together, into constructs called YANG | |||
YANG packages, and to apply a versioning scheme to the groups. | packages, and to apply a versioning scheme to the groups. | |||
The core part of this document are YANG module definitions that | The core part of this document are YANG module definitions that | |||
define a YANG package. The definitions are used as an augmentation | define a YANG package. The definitions are used as an augmentation | |||
to YANG library and also in YANG instance data documents for offline | to YANG library and also in YANG instance data documents for offline | |||
access. | access. | |||
The principle aims of YANG packages are: | The principle aims of YANG packages are: | |||
To define an efficient hierarchical structure that can precisely | To define an efficient hierarchical structure that can precisely | |||
specify a YANG schema. | specify a YANG schema. | |||
skipping to change at page 5, line 27 ¶ | skipping to change at page 5, line 27 ¶ | |||
To define constructs that can be used for YANG schema selection. | To define constructs that can be used for YANG schema selection. | |||
Although the YANG packages document does not satisfy any versioning | Although the YANG packages document does not satisfy any versioning | |||
requirements directly, it provides foundational building blocks for | requirements directly, it provides foundational building blocks for | |||
the schema selection solution, described in Section 2.4, that does | the schema selection solution, described in Section 2.4, that does | |||
address two of the requirements. | address two of the requirements. | |||
2.4. Dynamic YANG schema selection | 2.4. Dynamic YANG schema selection | |||
[I-D.wilton-netmod-yang-ver-selection] specifies a solution for | [I-D.ietf-netmod-yang-ver-selection] specifies a solution for | |||
requirements 3.1 and 3.2 via the use of | requirements 3.1 and 3.2 via the use of | |||
[I-D.rwilton-netmod-yang-packages] and a model and protocol based | [I-D.ietf-netmod-yang-packages] and a model and protocol based schema | |||
schema selection scheme that can be used by clients to choose which | selection scheme that can be used by clients to choose which schemas | |||
schemas to use when interacting with the device from the available | to use when interacting with the device from the available schema | |||
schema that are supported and advertised by the server. | that are supported and advertised by the server. | |||
The dynamic YANG schema selection solution: | The dynamic YANG schema selection solution: | |||
allows servers to define named 'schema-sets' which specify the | allows servers to define named 'schema-sets' which specify the | |||
schema for each supported datastore via references to YANG | schema for each supported datastore via references to YANG | |||
packages; | packages; | |||
can support clients choosing a single default schema-set (from | can support clients choosing a single default schema-set (from | |||
those advertised by the server) that is used for all NETCONF/ | those advertised by the server) that is used for all NETCONF/ | |||
RESTCONF protocol sessions; | RESTCONF protocol sessions; | |||
skipping to change at page 6, line 15 ¶ | skipping to change at page 6, line 15 ¶ | |||
native vendor, or OpenConfig); | native vendor, or OpenConfig); | |||
allows considerable freedom in the schema selection capabilities | allows considerable freedom in the schema selection capabilities | |||
that servers choose to support. | that servers choose to support. | |||
2.5. YANG Schema Comparison | 2.5. YANG Schema Comparison | |||
The final piece of the solution jigsaw is a document that describes | The final piece of the solution jigsaw is a document that describes | |||
how to algorithmically compare YANG schema, addressing Req 2.2. | how to algorithmically compare YANG schema, addressing Req 2.2. | |||
[I-D.verdt-netmod-yang-schema-comparison] specifies an algorithm that | [I-D.ietf-netmod-yang-schema-comparison] specifies an algorithm that | |||
can be used to compare two revisions of a YANG schema to determine | can be used to compare two revisions of a YANG schema to determine | |||
the overall scope of the changes, and a list of the specific changes, | the overall scope of the changes, and a list of the specific changes, | |||
between the two revisions. | between the two revisions. | |||
The YANG Schema Comparison solution: | The YANG Schema Comparison solution: | |||
defines a algorithm for comparing two YANG schema, identifying the | defines a algorithm for comparing two YANG schema, identifying the | |||
differences and classifying them as backwards-compatible, non- | differences and classifying them as backwards-compatible, non- | |||
backwards-compatible or editorial; | backwards-compatible or editorial; | |||
skipping to change at page 6, line 48 ¶ | skipping to change at page 6, line 48 ¶ | |||
would otherwise be ambiguous to a simple programmatic comparison | would otherwise be ambiguous to a simple programmatic comparison | |||
algorithm. | algorithm. | |||
3. Contributors | 3. Contributors | |||
This document grew out of the YANG module versioning design team that | This document grew out of the YANG module versioning design team that | |||
started after IETF 101. The following individuals are (or have been) | started after IETF 101. The following individuals are (or have been) | |||
members of that design team and have contributed to defining the | members of that design team and have contributed to defining the | |||
problem, specifying the requirements, and working on a solution: | problem, specifying the requirements, and working on a solution: | |||
o Balazs Lengyel | * Balazs Lengyel | |||
o Benoit Claise | * Benoit Claise | |||
o Ebben Aries | * Ebben Aries | |||
o Jason Sterne | * Jason Sterne | |||
o Joe Clarke | * Joe Clarke | |||
o Juergen Schoenwaelder | * Juergen Schoenwaelder | |||
o Mahesh Jethanandani | * Mahesh Jethanandani | |||
o Michael (Wangzitao) | * Michael (Wangzitao) | |||
o Qin Wu | * Qin Wu | |||
o Reshad Rahman | * Reshad Rahman | |||
o Rob Wilton | * Rob Wilton | |||
o Susan Hares | * Susan Hares | |||
o Wu Bo | * Wu Bo | |||
4. Security Considerations | 4. Security Considerations | |||
The document does not define any new protocol or data model. There | The document does not define any new protocol or data model. There | |||
is no security impact. | is no security impact. | |||
5. IANA Considerations | 5. IANA Considerations | |||
None. | None. | |||
6. References | 6. References | |||
6.1. Normative References | 6.1. Normative References | |||
[I-D.ietf-netmod-yang-versioning-reqs] | [I-D.ietf-netmod-yang-versioning-reqs] | |||
Clarke, J., "YANG Module Versioning Requirements", draft- | Clarke, J., "YANG Module Versioning Requirements", Work in | |||
ietf-netmod-yang-versioning-reqs-02 (work in progress), | Progress, Internet-Draft, draft-ietf-netmod-yang- | |||
December 2019. | versioning-reqs-03, 29 June 2020, | |||
<https://tools.ietf.org/html/draft-ietf-netmod-yang- | ||||
versioning-reqs-03>. | ||||
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
<https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
6.2. Informative References | 6.2. Informative References | |||
[I-D.rwilton-netmod-yang-packages] | [I-D.ietf-netmod-yang-module-versioning] | |||
Wilton, R., Rahman, R., Clarke, J., Sterne, J., and W. Bo, | Wilton, R., Rahman, R., Lengyel, B., Clarke, J., Sterne, | |||
"YANG Packages", draft-rwilton-netmod-yang-packages-03 | J., Claise, B., and K. D'Souza, "Updated YANG Module | |||
(work in progress), February 2020. | Revision Handling", Work in Progress, Internet-Draft, | |||
draft-ietf-netmod-yang-module-versioning-01, 10 July 2020, | ||||
<https://tools.ietf.org/html/draft-ietf-netmod-yang- | ||||
module-versioning-01>. | ||||
[I-D.verdt-netmod-yang-module-versioning] | [I-D.ietf-netmod-yang-packages] | |||
Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, | Wilton, R., Rahman, R., Clarke, J., Sterne, J., and W. Bo, | |||
B., Sterne, J., and K. D'Souza, "Updated YANG Module | "YANG Packages", Work in Progress, Internet-Draft, draft- | |||
Revision Handling", draft-verdt-netmod-yang-module- | ietf-netmod-yang-packages-00, 17 March 2020, | |||
versioning-01 (work in progress), October 2019. | <https://tools.ietf.org/html/draft-ietf-netmod-yang- | |||
packages-00>. | ||||
[I-D.verdt-netmod-yang-schema-comparison] | [I-D.ietf-netmod-yang-schema-comparison] | |||
Wilton, R., "YANG Schema Comparison", draft-verdt-netmod- | Wilton, R., "YANG Schema Comparison", Work in Progress, | |||
yang-schema-comparison-00 (work in progress), November | Internet-Draft, draft-ietf-netmod-yang-schema-comparison- | |||
2019. | 00, 17 March 2020, <https://tools.ietf.org/html/draft- | |||
ietf-netmod-yang-schema-comparison-00>. | ||||
[I-D.verdt-netmod-yang-semver] | [I-D.ietf-netmod-yang-semver] | |||
Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, | Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, | |||
B., Sterne, J., and K. D'Souza, "YANG Semantic | B., Sterne, J., and K. D'Souza, "YANG Semantic | |||
Versioning", draft-verdt-netmod-yang-semver-01 (work in | Versioning", Work in Progress, Internet-Draft, draft-ietf- | |||
progress), October 2019. | netmod-yang-semver-01, 13 July 2020, | |||
<https://tools.ietf.org/html/draft-ietf-netmod-yang- | ||||
semver-01>. | ||||
[I-D.wilton-netmod-yang-ver-selection] | [I-D.ietf-netmod-yang-ver-selection] | |||
Wilton, R., Rahman, R., Clarke, J., Sterne, J., and W. Bo, | Wilton, R., Rahman, R., Clarke, J., Sterne, J., and W. Bo, | |||
"YANG Schema Selection", draft-wilton-netmod-yang-ver- | "YANG Schema Selection", Work in Progress, Internet-Draft, | |||
selection-02 (work in progress), February 2020. | draft-ietf-netmod-yang-ver-selection-00, 17 March 2020, | |||
<https://tools.ietf.org/html/draft-ietf-netmod-yang-ver- | ||||
selection-00>. | ||||
Author's Address | Author's Address | |||
Robert Wilton (editor) | Robert Wilton (editor) | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
Email: rwilton@cisco.com | Email: rwilton@cisco.com | |||
End of changes. 49 change blocks. | ||||
77 lines changed or deleted | 87 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |