Network Working Group R. Wilton, Ed.
Internet-Draft Cisco Systems, Inc.
Intended status: Informational July 3, 2019
Expires: January 4, 2020

YANG Versioning Solution Overview
draft-verdt-netmod-yang-solutions-01

Abstract

This temporary document gives a brief overview of the different drafts that comprise a full solution to the YANG versioning requirements draft. The purpose of this draft is to help readers understand how the discrete parts of the YANG versioning solution fit together during working group development of the solution drafts.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on January 4, 2020.

Copyright Notice

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

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.


Table of Contents

1. Introduction

[I-D.ietf-netmod-yang-versioning-reqs] documents the requirements for any solution to the YANG versioning problem. Chapter 5 lists the formal requirements that a complete solution requires.

The aim of this draft is to help readers understand how the different solution drafts fit together, and also which drafts contribute solutions to particular individual requirements. The overall solution comprises five individual drafts:

  1. [I-D.verdt-netmod-yang-module-versioning]
  2. Module semantic version number scheme (not yet published)
  3. [I-D.rwilton-netmod-yang-packages]
  4. [I-D.wilton-netmod-yang-ver-selection]
  5. YANG schema comparison tooling (not yet published)

Open issues, across all of the solution drafts are tracked at <https://github.com/netmod-wg/yang-ver-dt/issues>.

2. Summary of requirements

The requirements are formally documented in section 5 of [I-D.ietf-netmod-yang-versioning-reqs]. A shortened, non normative, summary of each of the requirements (using the same requirement numbers) is provided below to help understand how the solutions drafts address the particular requirements.

3. Solution Drafts

The complete solution to the YANG versioning requirements comprises five solution drafts, that are summarized below.

3.1. Updated YANG Module Revision Handling

In summary, [I-D.verdt-netmod-yang-module-versioning] specifies minimal extensions and updates to the YANG language, YANG Library, and YANG author guidelines to provide more flexible YANG module revision handling. The intent is that these changes and extensions could be folded into future revisions of the updated specifications. The draft provides a solution for all requirements except Req 2.2, Req 3.1 and Req 3.2.

The extensions and changes in the draft can be summarized thus:

3.2. Module semantic version number scheme

[TODO - Insert draft ref] defines a semantic versioning scheme derived from the semver.org 2.0.0 specification that can be used in conjunction with the revision label extension statement defined in Section 3.1 to allow semantic version numbers to be used to manage the revision lifecycle of YANG modules. This draft provides an enhanced solution for Req 2.1, but organizations authoring modules are not obliged to use this specific versioning scheme, and could choose a different overlaid versioning scheme, or none at all and rely solely on revision dates.

The aims of the YANG semantic versioning scheme are:

3.3. Versioned YANG packages

The two previous drafts address version and revision management of individual modules. [I-D.rwilton-netmod-yang-packages] provides a mechanism to group a set of related YANG modules revisions together, into a construct called a YANG package, and to apply a version scheme to the group.

The core part of this draft are YANG module definitions that define a YANG package, that are used as an augmentation to YANG library, and also in YANG instance data documents for offline access.

The principle aims of the packages draft are:

The YANG packages draft does not address any of the versioning requirements directly, but provides the foundation building blocks for the version selection solution, described in Section 3.4, that addresses Reqs 3.1 and 3.2.

This draft requires updates to accommodate the split between revision management in [I-D.verdt-netmod-yang-module-versioning] and the semantic versioning scheme.

3.4. Protocol operations for package version selection

[I-D.wilton-netmod-yang-ver-selection] specifies a solution for requirements 3.1 and 3.2 is via the use of [I-D.rwilton-netmod-yang-packages] and a protocol based version selection scheme that can be used by clients to choose a particular YANG datastore schema from the set of datastore schema that are supported by the server.

The version selection optionally allows:

3.5. YANG schema comparison tooling

A tooling based solution is proposed for Req 2.2, that allows two YANG schema versions to be algorithmically compared, with the algorithm reporting the list of differences between the two YANG schema and whether each change is regarded as being backwards-compatible, or non-backwards-compatible. Annotations to the YANG modules, via the use of extension statements, may help improve the accuracy of the comparison algorithm, particularly for statements that are very hard to algorithmically classify the scope of any differences (e.g., a change in the semantic behaviour of a data node defined via modifications to the associated YANG description statement). Given that Req 2.2 is a softer requirement, and practical experience with the tooling is required, it is proposed that this work is deferred at this time.

When comparing a module schema, a tool would also be able to take into account enabled features, deviations, and the subset of the schema being used by the client. This would allow a tooling based approach to give a more accurate answer as to whether a client would be affected when upgrading between two software versions, than looking at the revision history, or comparing semantic version numbers.

4. Contributors

This document grew out of the YANG module versioning design team that started after IETF 101. The following individuals are (or have been) members of that design team and have contributed to defining the problem and specifying the requirements:

5. Security Considerations

The document does not define any new protocol or data model. There is no security impact.

6. IANA Considerations

None

7. References

7.1. Normative References

[I-D.ietf-netmod-yang-versioning-reqs] Clarke, J., "YANG Module Versioning Requirements", Internet-Draft draft-ietf-netmod-yang-versioning-reqs-00, March 2019.
[I-D.rwilton-netmod-yang-packages] Wilton, R., "YANG Packages", Internet-Draft draft-rwilton-netmod-yang-packages-01, March 2019.
[I-D.verdt-netmod-yang-module-versioning] Claise, B., Clarke, J., Rahman, R., Wilton, R., Lengyel, B., Sterne, J. and K. D'Souza, "Updated YANG Module Revision Handling", Internet-Draft draft-verdt-netmod-yang-module-versioning-00, July 2019.
[I-D.wilton-netmod-yang-ver-selection] Wilton, R. and R. Rahman, "YANG Schema Version Selection", Internet-Draft draft-wilton-netmod-yang-ver-selection-00, March 2019.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[RFC7950] Bjorklund, M., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, August 2016.

7.2. Informative References

[RFC8049] Litkowski, S., Tomotaki, L. and K. Ogaki, "YANG Data Model for L3VPN Service Delivery", RFC 8049, DOI 10.17487/RFC8049, February 2017.
[RFC8199] Bogdanovic, D., Claise, B. and C. Moberg, "YANG Module Classification", RFC 8199, DOI 10.17487/RFC8199, July 2017.
[RFC8299] Wu, Q., Litkowski, S., Tomotaki, L. and K. Ogaki, "YANG Data Model for L3VPN Service Delivery", RFC 8299, DOI 10.17487/RFC8299, January 2018.

Author's Address

Robert Wilton (editor) Cisco Systems, Inc. EMail: rwilton@cisco.com