Internet DRAFT - draft-wu-netconf-nmda-compatibility

draft-wu-netconf-nmda-compatibility







NETCONF Working Group                                              Q. Wu
Internet-Draft                                                   C. Feng
Intended status: Standards Track                                  Huawei
Expires: September 10, 2019                                March 9, 2019


  NMDA protocol operation Backwards-Compatibility with Legacy Devices
                 draft-wu-netconf-nmda-compatibility-01

Abstract

   NMDA architectural framework eliminates the need to duplicate data
   structures to provide separate configuration and operational state
   sections and uses different datastores and new protocol operations to
   distinct configuration from operation state.  However when non-NMDA
   clients communicate with NMDA aware server, it is not clear whether
   the NMDA aware server can use existing operation to return the same
   results with <rpc-reply> as non-NMDA-aware server does.

   This document identifies some of the major challenges, and provides
   solutions that are able to mitigate those challenges and smooth the
   migration towards NMDA deployment.

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 September 10, 2019.

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



Wu & Feng              Expires September 10, 2019               [Page 1]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   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  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Problems  . . . . . . . . . . . . . . . . . . . . . . . . . .   4
     2.1.  NMDA Client vs Non-NMDA Client  . . . . . . . . . . . . .   4
     2.2.  NETCONF Server Back-Compatibility . . . . . . . . . . . .   4
     2.3.  Feed System Configuration Back into Running Datastore . .   4
   3.  Solution  . . . . . . . . . . . . . . . . . . . . . . . . . .   5
     3.1.  Client NMDA Support . . . . . . . . . . . . . . . . . . .   5
     3.2.  Default handling Behaviour  . . . . . . . . . . . . . . .   5
       3.2.1.  Default-Handling Basic Modes  . . . . . . . . . . . .   5
       3.2.2.  get/get-config Operation  . . . . . . . . . . . . . .   6
       3.2.3.  get-data Operation  . . . . . . . . . . . . . . . . .   7
     3.3.  Protocol Operation Clarification  . . . . . . . . . . . .   7
       3.3.1.  <get> . . . . . . . . . . . . . . . . . . . . . . . .   7
       3.3.2.  <get-config>  . . . . . . . . . . . . . . . . . . . .   7
       3.3.3.  <edit-config> . . . . . . . . . . . . . . . . . . . .   8
       3.3.4.  <get-data>  . . . . . . . . . . . . . . . . . . . . .   8
       3.3.5.  <edit-data> . . . . . . . . . . . . . . . . . . . . .   8
   4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   9
   5.  Security Considerations . . . . . . . . . . . . . . . . . . .   9
   6.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   9
   7.  Contributors  . . . . . . . . . . . . . . . . . . . . . . . .   9
   8.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   9
     8.1.  Normative References  . . . . . . . . . . . . . . . . . .   9
     8.2.  Informative References  . . . . . . . . . . . . . . . . .  10
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  10

1.  Introduction

   NMDA architectural framework introduces additional datastores for
   systems that support more advanced processing chains converting
   configuration to operational state.  It eliminates the need to
   duplicate data structures to provide separate configuration and
   operational state sections and uses different datastores and new
   protocol operations (e.g.,<get-data>,<edit-data> to distinct
   configuration from operation state).

   However when a NMDA client communicates with NMDA aware server, it is
   not clear whether the NMDA aware server can return the same results



Wu & Feng              Expires September 10, 2019               [Page 2]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   with <rpc-reply> to non-NMDA clients as non-NMDA-aware server does
   since the system configuration and default configuration originally
   part of conventional configuration datastores have been explicitly
   separated and moved to operational state datastore under NMDA
   architecture.  Also it is not clear whether the server should
   maintain protocol operation backwards-compatibility when the NMDA
   aware server is upgraded from non-NMDA-aware server to NMDA aware
   server.

   NMDA Transition Guidelines in section 4.23.3 of [RFC8407] only
   provides guidelines to transform non-NMDA compliant model into NMDA
   compatible model, but doesn't provide guidelines on whether existing
   NETCONF protocol operations such as get/get-config/edit-config change
   semantics when they are exchanged between the non NMDA client and the
   NMDA arware server.

   This document identifies some of the major challenges, and provides
   solutions that are able to address those challenges which provide
   smooth migration towards NMDA deployment.

   o  Use protocol operation to indicate whether the client NMDA
      support.

   o  An extension to Default handling Behaviour.

   o  Protocol Operation Clarification.

1.1.  Terminology

   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.

   The following terms are defined in [RFC8342] and are not redefined
   here:

   o  startup configuration datastore

   o  candiate configuration datastore

   o  running configuration datastore

   o  intended configuration datastore

   o  operational state datastore




Wu & Feng              Expires September 10, 2019               [Page 3]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   The following terms are defined in this document:

      Server Protocol Operation Backwards-Compatibility: The client can
      use the same protocol operation to get the same results from both
      NMDA compliant server and Non NMDA server.

2.  Problems

2.1.  NMDA Client vs Non-NMDA Client

   When a server is upgraded to NMDA aware server and needs to support
   both NMDA client and non-NMDA clients, there is no standards-based
   way for the server to know whether the client supports NMDA.

2.2.  NETCONF Server Back-Compatibility

   When a server is upgraded to NMDA server and needs to support both
   NMDA client and non-NMDA clients, without NETCONF server protocol
   operation backwards-comability, a NMDA server can return the results
   with <rpc-reply> to non-NMDA clients different from non-NMDA-aware
   server does.  Since in some cases ('report-all' Retrieval Mode or
   client set Explicit Mode) default configuration originally part of
   conventional configuration datastores have been explicitly separated
   and moved to operational state datastore, so does the system
   configuration.  For non-NMDA client, the configuration retrieved by
   <get-config> on the running datastore will be reduced without
   including system configuration and default configuration set by the
   server.  Non-NMDA client also has no way to retrieve system
   configuration without new operations support on operational state
   datstore.

2.3.  Feed System Configuration Back into Running Datastore

   As we know, the system configuration and default configuration
   originally part of conventional configuration datastores before NMDA
   is introduced have been separated and moved to operational state
   datastore.  When further configuration is needed within the system
   configuration, e.g., configure IP address of the interface after such
   interface configuration (i.e.,system configuration) is auto-created,
   such auto-created interface configuration needs to set by the client
   since it doesn't exist in the conventional configuration datastore.
   The effect is the same as feed auto-created interface configuration
   into running datastore and make it become client set configuration.
   After the interface configuration is applied, it will be merged with
   the other existing system configuration in the operational state
   datastore.





Wu & Feng              Expires September 10, 2019               [Page 4]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


3.  Solution

3.1.  Client NMDA Support

   When a NMDA aware sever needs to support both NMDA client and non-
   NMDA clients, server NMDA support can be advertised to the client via
   capability identifier :yang-library:1.1 to the client.  Client NMDA
   support should be indicated by protocol operations.  If <get>/<get-
   config>/<edit-config> operation is recieved from the client, the
   server should assume the client is Non-NMDA client.  If <get-
   data>/<edit-data> operation is recieved from the client, the server
   should assume the client is NMDA client.

   Editor-Note: There are three ways to Indicate client support on NMDA:

   1.  Define capability identifier for client NMDA support and
       advertising this capability identifier to the server;

   2.  Use new or old protocol operation to indicate client NMDA
       support;

   3.  Use whether module type is NMDA aware to indicate client NMDA
       support ;

   Either advertising capability identifier to the server or using
   module type to indicate client NMDA support adds server
   implementation complexity.  We argue to use protocol operation to
   indicate whether the client support NMDA.

3.2.  Default handling Behaviour

   With-default capability defined in [RFC6243] is designed for
   conventional configuration datatore.  As described in [I-D.ietf-
   netconf-nmda-netconf], semantics for "with-defaults" in <edit-data>
   operations is the same as for <edit-config>, as described in section
   4.5.2 of [RFC6243].  However when the NMDA is introduced, the default
   configuration is clearly separated from conventional configuration
   datastore, the semantics of "with-defaults" parameter have made a few
   changes.

3.2.1.  Default-Handling Basic Modes

   A NMDA aware server still supports three basic modes defined in
   [RFC6243] for handling default data.  In addition to 'report-all'
   Retrieval Mode, the 'report-all' basic mode should be also treated in
   the same way as 'explicit' basic model in case of NMDA since the
   default configuration has been moved to operational state datastore
   and therefore the NMDA aware server should not consider the default



Wu & Feng              Expires September 10, 2019               [Page 5]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   configuration is part of conventional configuration datastore unless
   it is explicitly set by the client.

3.2.1.1.  'report-all' Basic Mode Retrieval

   When the data is retrieved from a server using the 'report-all' basic
   mode, and the <with-defaults> parameter is not present, data nodes
   MUST be reported if explicitly set by the client, even if they
   contain the schema default value.

3.2.1.2.  'report-all' <edit-config> and <copy-config> Behaviour

   For backwards compatibility consideration, the server consider the
   default data part of conventional configuration datastore.  A valid
   'create' operation attribute for a data node that has been set by a
   client to its schema default value MUST fail with a 'data-exists'
   error-tag.  A valid 'delete' operation attribute for a data node that
   has been set by a client to its schema default value MUST succeed.

3.2.1.3.  'report-all' <edit-data> Behaviour

   If the 'with-defaults' capability is supported by the server, the
   'report-all' basic mode, defined in section 3.2.1.1, is supported for
   <edit-data> operations that target conventional configuration
   datastores.

   A valid 'create' operation attribute for a data node that has been
   set by a client to its schema default value MUST succeed.  A valid
   'delete' operation attribute for a data node that has been set by a
   client to its schema default value MUST fail with a 'data-missing'
   error-tag.

   Since the default configuration doesn't exist in the conventional
   configuration datastore, the default configuration MUST be created
   without error being returned, irrespectively "with-defaults"
   parameter being set to basic-mode, trim or report-all.

3.2.2.  get/get-config Operation

   For backwards compatibility consideration, when the basic mode is set
   to 'report-all' or 'with-defaults' capability parameter is set to
   report all, the NMDA aware server should return all the data based on
   filtering selection criteria including all the data from conventional
   configuration datastore and default configuration from operational
   state datastore.






Wu & Feng              Expires September 10, 2019               [Page 6]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


3.2.3.  get-data Operation

   When the basic mode is set to report-all or 'with-defaults'
   capability parameter is set to report all, the NMDA aware server
   should return all the data based on filtering selection criteria
   including all the data from conventional configuration datastore, but
   not include default configuration from operational state datastore
   unless they are explicitly set by the client.

3.3.  Protocol Operation Clarification

3.3.1.  <get>

   As described in [RFC6241], the NETCONF <get> operation returns the
   contents of <running> together with the operational state.

   If the client supports NMDA and sends <get> request to the NMDA aware
   server, the server should assume the client is non-NMDA client and
   retrieve specified configuration from running configuration and
   system configuration from operational state datastore and return it
   together with the system configuration to the client in <rpc-reply>.

   If the client doesn't support NMDA and sends <get> request to the
   NMDA aware server, the server should retrieve running configuration
   and system configuration from operational state datastore and return
   the same results as it retrieves from non-NMDA aware server.

   For default handling basic modes, please refer to Section 3.2.2.

3.3.2.  <get-config>

   As described in [RFC6241], the NETCONF <get-config> operation can be
   used to retrieve all or part of a specified configuration datastore.

   If the client supports NMDA and sends <get-config> request to the
   NMDA aware Server, the server should assume the client is non-NMDA
   client and retrieve specified configuration from <running> together
   with the system configuration.

   If the client doesn't support NMDA and send <get-config> request to
   the NMDA aware server, the server should retrieve <running>
   configuration together with the system configuration and return the
   same result as it retrieves from non-NMDA aware server.

   For default handling basic modes, please refer to Section 3.2.2.






Wu & Feng              Expires September 10, 2019               [Page 7]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


3.3.3.  <edit-config>

   As described in [RFC6241], the NETCONF <edit-config> operation can be
   used to load all or part of a specified configuration to the
   specified target configuration datastore.

   If the client sends <edit-config> request to the NMDA aware server
   and wants to have further configuration based on the system
   configuration,(e.g.,configure IP address within auto-created physical
   interface configuration), the server should create IP address
   configuration corresponding to specific physical interface without
   error to be returned to the client as long as IP address
   configuration is validated.  The effect is the same as the physical
   interface has already been part of conventional configuration
   datastore.  If the system configuration is set by the client sending
   <edit-config>operation request, the error should be returned as if
   the system configuration has already been part of conventional
   configuration datastore.

   For default handling basic modes, please refer to Section 3.2.1.2.

3.3.4.  <get-data>

   As described in [I-D.ietf-netconf-nmda-netconf], the <get-data>
   operation retrieves data from a specific NMDA datastore,similar to
   NETCONF's <get-config> operation defined in [RFC6241].

   If the client sends <get-data> request with specified target
   configuration datastore set to the running datastore, the server
   should assume the client is NMDA client and retrieve specified
   configuration from <running> without system configuration set by the
   server since the system configuration is separated from conventional
   configuration datastore.

   For default handling basic modes, please refer to Section 3.2.3.

3.3.5.  <edit-data>

   As described in [I-D.ietf-netconf-nmda-netconf], the NETCONF <edit-
   data> operation can be used to load all or part of a specified
   configuration to the specified target configuration datastore.

   For the NMDA client sending <edit-data> operation request with
   specified target configuration datastore set to the configuration
   datastore such as running datastore, since the system configuration
   is separated from conventional configuration datastore, if the NMDA
   client wants to use system configuration or configure other parameter
   (e.g., IP address) within system configuration(e.g., auto-created



Wu & Feng              Expires September 10, 2019               [Page 8]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   interface configuration), Explicitly creating the system
   configuration by the client MUST be allowed without error being
   returned.

4.  IANA Considerations

   There is no IANA action in this document.

5.  Security Considerations

   This document does not introduce any security vulnerability besides
   one defined in [RFC6241] [I-D.ietf-netconf-nmda-netconf].

6.  Acknowledgements

   Thanks Robert Wilton,Guangying Zheng,Shouchuan Yang,Dan Qu, Ye Niu to
   discuss NMDA comability issues on existing protocol operation and
   provide important input to this document.

7.  Contributors

      Michael Wang
      Huawei Technologies, Co., Ltd
      101 Software Avenue, Yuhua District
      Nanjing  210012
      China

      Email: wangzitao@huawei.com

8.  References

8.1.  Normative References

   [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>.

   [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>.

   [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>.





Wu & Feng              Expires September 10, 2019               [Page 9]

Internet-Draft        NMDA Backwards-Compatibility            March 2019


   [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>.

   [RFC8407]  Bierman, A., "Guidelines for Authors and Reviewers of
              Documents Containing YANG Data Models", BCP 216, RFC 8407,
              DOI 10.17487/RFC8407, October 2018,
              <https://www.rfc-editor.org/info/rfc8407>.

8.2.  Informative References

   [I-D.ietf-netconf-nmda-netconf]
              Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "NETCONF Extensions to Support the Network
              Management Datastore Architecture", draft-ietf-netconf-
              nmda-netconf-08 (work in progress), October 2018.

Authors' Addresses

   Qin Wu
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu  210012
   China

   Email: bill.wu@huawei.com


   Chong Feng
   Huawei
   101 Software Avenue, Yuhua District
   Nanjing, Jiangsu  210012
   China

   Email: frank.fengchong@huawei.com















Wu & Feng              Expires September 10, 2019              [Page 10]