Skip to main content

NETCONF over QUIC
draft-ietf-netconf-over-quic-01

Document Type Active Internet-Draft (netconf WG)
Authors Jinyou Dai , Shaohua Yu , Weiqiang Cheng , Marc Blanchet , Per Andersson
Last updated 2024-10-21
Replaces draft-dai-netconf-quic-netconf-over-quic
RFC stream Internet Engineering Task Force (IETF)
Intended RFC status (None)
Formats
Additional resources GitHub Repository
Mailing list discussion
Stream WG state WG Document
Document shepherd (None)
IESG IESG state I-D Exists
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-ietf-netconf-over-quic-01
Network Working Group                                             J. Dai
Internet-Draft                                                      CICT
Intended status: Standards Track                                   S. Yu
Expires: 24 April 2025                                               PCL
                                                                W. Cheng
                                                            China Mobile
                                                             M. Blanchet
                                                                Viagenie
                                                            P. Andersson
                                                           Cisco systems
                                                         21 October 2024

                           NETCONF over QUIC
                    draft-ietf-netconf-over-quic-01

Abstract

   This document specifies how to use QUIC as a secure transport for
   exchanging Network Configuration Protocol (NETCONF) messages.  QUIC
   provides encryption properties similar to TLS, while eliminating TCP
   head-of-line blocking issues and also providing more loss detection
   and congestion control than UDP.  NETCONF over QUIC has privacy
   properties similar to NETCONF over TLS specified in
   [I-D.ietf-netconf-over-tls13].

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 24 April 2025.

Copyright Notice

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

Dai, et al.               Expires 24 April 2025                 [Page 1]
Internet-Draft              NETCONF over QUIC               October 2024

   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 Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology and Definitions . . . . . . . . . . . . . . . . .   3
   3.  Connection Management . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Connection establishment  . . . . . . . . . . . . . . . .   4
     3.2.  Connection Termination  . . . . . . . . . . . . . . . . .   4
       3.2.1.  QUIC Connection Termination Process . . . . . . . . .   4
       3.2.2.  Considerations for Connection Termination . . . . . .   4
   4.  Stream mapping and usage  . . . . . . . . . . . . . . . . . .   4
     4.1.  Bidirectional Stream Between client and server  . . . . .   6
     4.2.  Unidirectional Stream from server to client . . . . . . .   6
   5.  Endpoint Authentication . . . . . . . . . . . . . . . . . . .   6
     5.1.  Using QUIC Handshake Authentication . . . . . . . . . . .   6
       5.1.1.  Using Third-Party Authentication  . . . . . . . . . .   6
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   7
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .   7
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   8
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .   8
     9.2.  Informative References  . . . . . . . . . . . . . . . . .   8
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1.  Introduction

   The Network Configuration Protocol (NETCONF) [RFC6241] defines a
   mechanism through which the configuration of network devices can be
   installed, manipulated, and deleted.

   NETCONF can be conceptually partitioned into four layers: content,
   operation, message and security transport layers.

   The Secure Transport layer provides a communication path between the
   client and server.  NETCONF can be layered over any transport
   protocol that provides a set of basic requirements, such as:

Dai, et al.               Expires 24 April 2025                 [Page 2]
Internet-Draft              NETCONF over QUIC               October 2024

   1.  NETCONF is connection-oriented, requiring a persistent connection
       between peers.  This connection MUST provide reliabl and
       sequenced data delivery.  NETCONF connections are long-lived,
       persisting between protocol operations.

   2.  NETCONF connections MUST provide authentication, data integrity,
       confidentiality, and replay protection.  NETCONF depends on the
       transport protocol for this capability.

   The NETCONF protocol is not bound to any particular transport
   protocol, but allows a mapping to define how it can be implemented
   over any specific protocol.

   However, because of the connection-oriented feature, almost all of
   the current secure transport protocols used by NETCONF are TCP based.
   As is well known, TCP has some shortcomings such as head-of-line
   blocking.

   QUIC ([RFC9000][RFC9001]) conforms to the above requirements,
   therefore is also an appropriate transport protocol for NETCONF.
   Moreover, QUIC provides the following additional benefits not present
   in the other NETCONF transports:

   *  Single connection can be long lived and support multiple NETCONF
      RPC calls and responses within the same connection, using streams.
      This is very useful for a network management control station who
      is regularly monitoring devices and therefore having a long lived
      connection requires way less resources on both peers.

   *  1 RTT initial handshake that includes TLS.

   *  Adaptable to more difficult environments such as those with long
      delays([I-D.many-deepspace-ip-assessment],
      [I-D.huitema-quic-in-space]).

   Therefore, QUIC is a proper transport protocol for the secure
   transport layer of NETCONF.  This document specifies how to use QUIC
   as the secure transport protocol for NETCONF.

2.  Terminology and Definitions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

Dai, et al.               Expires 24 April 2025                 [Page 3]
Internet-Draft              NETCONF over QUIC               October 2024

3.  Connection Management

3.1.  Connection establishment

   QUIC connections are established as described in [RFC9000].  During
   connection establishment, NETCONF over QUIC support is indicated by
   selecting the ALPN token as listed in the IANA sectionSection 7 in
   the crypto handshake.

3.2.  Connection Termination

3.2.1.  QUIC Connection Termination Process

   The typical QUIC connection termination process is described in
   [RFC9000]

3.2.2.  Considerations for Connection Termination

   When a NETCONF session is implemented based on a QUIC connection, the
   idle timeout should be set appropriately in order to keep the QUIC
   connection persistent even if the NETCONF session is idle.  In some
   cases, disabling it may be a possible option.

   When a NETCONF server receives a <close-session> request, it will
   gracefully close the NETCONF session.  The server SHOULD close the
   associated QUIC connection.

   When a NETCONF entity receives a <kill-session> request for an open
   session, it SHOULD close the associated QUIC connection.

   When a NETCONF entity is detecting the interruption of the QUIC
   connection, it SHOULD send a <close-session> request to the peer
   NETCONF entity.

   When a stateless reset event occurs, nothing needs to be done by
   either the client or the server.

4.  Stream mapping and usage

   [RFC6241] specifies protocol layers of NETCONF as shown below.

Dai, et al.               Expires 24 April 2025                 [Page 4]
Internet-Draft              NETCONF over QUIC               October 2024

 Layer                 Example
        +-------------+      +-----------------+      +----------------+
    (4) |   Content   |      |  Configuration  |      |  Notification  |
        |             |      |      data       |      |      data      |
        +-------------+      +-----------------+      +----------------+
               |                       |                      |
        +-------------+      +-----------------+              |
    (3) | Operations  |      |  <edit-config>  |              |
        |             |      |                 |              |
        +-------------+      +-----------------+              |
               |                       |                      |
        +-------------+      +-----------------+      +----------------+
    (2) |  Messages   |      |     <rpc>,      |      | <notification> |
        |             |      |   <rpc-reply>   |      |                |
        +-------------+      +-----------------+      +----------------+
               |                       |                      |
        +-------------+      +-----------------------------------------+
    (1) |   Secure    |      |  SSH, TLS, BEEP/TLS, SOAP/HTTP/TLS, ... |
        |  Transport  |      |                                         |
        +-------------+      +-----------------------------------------+

                   Figure 1: NETCONF Protocol Layers

   Figure 1 shows that there are two kinds of main data flow exchanged
   between client and server:

   *  Configuration data from client to server.

   *  Notification data from server to client.

   The two kinds of data flow need to be mapped into QUIC streams.

   QUIC Streams provide a lightweight, ordered byte-stream abstraction
   to an application.  Streams can be unidirectional or bidirectional
   meanwhile streams can be initiated by either the client or the
   server.  Unidirectional streams carry data in one direction: from the
   initiator of the stream to its peer.  Bidirectional streams allow for
   data to be sent in both directions.

   QUIC uses Stream ID to identify the stream.  The least significant
   bit (0x1) of the stream ID identifies the initiator of the stream.
   The second least significant bit (0x2) of the stream ID distinguishes
   between bidirectional streams (with the bit set to 0) and
   unidirectional streams.  Table 1 describes the four types of streams
   and this table can also be seen from [RFC9000].

Dai, et al.               Expires 24 April 2025                 [Page 5]
Internet-Draft              NETCONF over QUIC               October 2024

                +======+==================================+
                | Bits | Stream Type                      |
                +======+==================================+
                | 0x0  | Client-Initiated, Bidirectional  |
                +------+----------------------------------+
                | 0x1  | Server-Initiated, Bidirectional  |
                +------+----------------------------------+
                | 0x2  | Client-Initiated, Unidirectional |
                +------+----------------------------------+
                | 0x3  | Server-Initiated, Unidirectional |
                +------+----------------------------------+

                          Table 1: Stream ID Types

4.1.  Bidirectional Stream Between client and server

   NETCONF protocol uses an RPC-based communication model.  So, the
   configuration data from client to server is exchanged based on
   '<rpc>' (the server initiating) and '<rpc-reply>' (sent by the
   server) and so on.  So the messages used to exchange configuration
   data MUST be mapped into one or more bidirectional stream whose
   stream type is 0x0 according to the above table.

4.2.  Unidirectional Stream from server to client

   There are some notification data exchanged between the client and the
   server.  Notification is an server initiated message indicating that
   a certain event has been recognized by the server.

   Notification messages are initiated by the server and no reply is
   needed from the client.  So the messages used to exchange
   configuration data SHOULD be mapped into one unidirectional stream
   whose stream type is 0x3 according to the above table.

5.  Endpoint Authentication

5.1.  Using QUIC Handshake Authentication

   NETCONF over QUIC uses QUIC which uses TLS version 1.3 or greater.
   Therefore, the TLS handshake process can be used for endpoint
   authentication.

5.1.1.  Using Third-Party Authentication

   A third-party authentication mechanism can also be used for endpoint
   authentication, such as a TLS client certificate.

Dai, et al.               Expires 24 April 2025                 [Page 6]
Internet-Draft              NETCONF over QUIC               October 2024

6.  Security Considerations

   The security considerations described throughout [RFC5246] and
   [RFC6241] apply here as well.  This document does not require to
   support third-party authentication (e.g., backend Authentication,
   Authorization, and Accounting (AAA) servers) due to the fact that TLS
   does not specify this way of authentication and that NETCONF depends
   on the transport protocol for the authentication service.  If third-
   party authentication is needed, TLS client certificates, BEEP or SSH
   transport can be used.  Especially TLS client certificates are
   recommended to be used here.

   An attacker might be able to inject arbitrary NETCONF messages via
   some application that does not carefully check exchanged messages
   deliberately insert the delimiter sequence in a NETCONF message to
   create a DoS attack.  Hence, applications and NETCONF APIs MUST
   ensure that the delimiter sequence defined in Section 2.1 never
   appears in NETCONF messages; otherwise, those messages can be
   dropped, garbled, or misinterpreted.

   If invalid data or malformed messages are encountered, a robust
   implementation of this document MUST silently discard the message
   without further processing and then stop the NETCONF session.

   Finally, this document does not introduce any new security
   considerations compared to [RFC6242].

7.  IANA Considerations

   This document creates a new registration for the identification of
   NETCONF over QUIC in the "Application Layer Protocol Negotiation
   (ALPN) Protocol IDs registry established in [RFC7301].

   The "noq" string identifies NETCONF over QUIC:

   *  Protocol: NETCONF over QUIC

   *  Identification Sequence: 0x6e 0x6f 0x71 ("noq")

   *  Specification: This document

   In addition, it is requested for IANA to reserve a UDP port TBD for
   'NETCONF over QUIC'.

8.  Acknowledgements

   The authors would like to acknowledge all contributors including
   Huaimo Chen, Lifen Zhou et al. for their beneficial comments.

Dai, et al.               Expires 24 April 2025                 [Page 7]
Internet-Draft              NETCONF over QUIC               October 2024

9.  References

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

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/info/rfc9000>.

   [RFC9001]  Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure
              QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021,
              <https://www.rfc-editor.org/info/rfc9001>.

9.2.  Informative References

   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246,
              DOI 10.17487/RFC5246, August 2008,
              <https://www.rfc-editor.org/info/rfc5246>.

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

   [RFC7301]  Friedl, S., Popov, A., Langley, A., and E. Stephan,
              "Transport Layer Security (TLS) Application-Layer Protocol
              Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301,
              July 2014, <https://www.rfc-editor.org/info/rfc7301>.

   [I-D.ietf-netconf-over-tls13]
              Turner, S. and R. Housley, "Updates to Using the NETCONF
              Protocol over Transport Layer Security (TLS) with Mutual
              X.509 Authentication", Work in Progress, Internet-Draft,
              draft-ietf-netconf-over-tls13-04, 18 January 2024,
              <https://datatracker.ietf.org/doc/html/draft-ietf-netconf-
              over-tls13-04>.

Dai, et al.               Expires 24 April 2025                 [Page 8]
Internet-Draft              NETCONF over QUIC               October 2024

   [I-D.many-deepspace-ip-assessment]
              Blanchet, M., Huitema, C., and D. Bogdanović, "Revisiting
              the Use of the IP Protocol Stack in Deep Space: Assessment
              and Possible Solutions", Work in Progress, Internet-Draft,
              draft-many-deepspace-ip-assessment-02, 10 September 2024,
              <https://datatracker.ietf.org/doc/html/draft-many-
              deepspace-ip-assessment-02>.

   [I-D.huitema-quic-in-space]
              Huitema, C. and M. Blanchet, "QUIC in Space", Work in
              Progress, Internet-Draft, draft-huitema-quic-in-space-00,
              24 September 2023, <https://datatracker.ietf.org/doc/html/
              draft-huitema-quic-in-space-00>.

Authors' Addresses

   Jinyou Dai
   China Information Communication Technologies Group.
   Gaoxin 4th Road 6#
   Wuhan, Hubei 430079
   China
   Email: djy@fiberhome.com

   Shaohua Yu
   China PCL.
   China
   Email: yush@cae.cn

   Weiqiang Cheng
   China Mobile
   China
   Email: chengweiqiang@chinamobile.com

   Marc Blanchet
   Viagenie
   Canada
   Email: marc.blanchet@viagenie.ca

   Per Andersson
   Cisco systems
   Sweden
   Email: per.ietf@ionio.se

Dai, et al.               Expires 24 April 2025                 [Page 9]