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/