Internet-Draft NETCONF over QUIC December 2025
Dai, et al. Expires 3 July 2026 [Page]
Workgroup:
Network Working Group
Internet-Draft:
draft-ietf-netconf-over-quic-06
Published:
Intended Status:
Standards Track
Expires:
Authors:
J. Dai
CICT
S. Yu
PCL
W. Cheng
China Mobile
M. Blanchet
Viagenie
P. Andersson
Ionio Systems

NETCONF over QUIC

Abstract

This document specifies how to use QUIC as a secure transport for exchanging Network Configuration Protocol (NETCONF) messages. NETCONF over QUIC allows to take advantage of QUIC streams, for example, to eliminate some TCP head-of-line blocking issues. NETCONF over QUIC provides security properties similar to NETCONF over TLS.

This document also defines a YANG module which augments the ietf-netconf-client and ietf-netconf-server YANG modules.

Editorial note (to be removed by the RFC Editor

This draft contains placeholder values that need to be replaced with finalized values at the time of publication. This note summarizes all of the substitutions that are needed. No other RFC Editor instructions are specified elsewhere in this document.

Artwork in this document contains shorthand references to drafts in progress. Please apply the following replacements:

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 3 July 2026.

Table of Contents

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:

  1. NETCONF is connection-oriented, requiring a persistent connection between peers. This connection MUST provide reliable 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:

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

3. Connection Management

3.1. Connection establishment

QUIC connections are established as described in [RFC9000]. During connection establishment, support is indicated by selecting the ALPN token registered for NETCONF over QUIC (see Section 12) in the cryptographic handshake.

3.1.1. Early data

The QUIC protocol uses TLS 1.3 messages to secure the transport. This means that Early data (aka 0-RTT data) is supported. [RFC9001]

Early data (aka 0-RTT data) is a mechanism defined in TLS 1.3 [I-D.ietf-tls-rfc8446bis] that allows a client to send data ("early data") as part of the first flight of messages to a server. Note that TLS 1.3 can be used without early data as per Appendix F.5 of [I-D.ietf-tls-rfc8446bis]. In fact, early data is permitted by TLS 1.3 only when the client and server share a Pre-Shared Key (PSK), either obtained externally or via a previous handshake. The client uses the PSK to authenticate the server and to encrypt the early data.

As noted in Section 2.3 of [I-D.ietf-tls-rfc8446bis], the security properties for early data are weaker than those for subsequent TLS-protected data. In particular, early data is not forward secret, and there is no protection against the replay of early data between connections. Appendix E.5 of [I-D.ietf-tls-rfc8446bis] requires applications not use early data without a profile that defines its use. This document specifies that NETCONF over QUIC implementations MUST NOT use early data.

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

The NETCONF protocol layers specified in [RFC6241] are presented in Figure 1.

Layer                 Example
       +-------------+      +-----------------+      +----------------+
   (4) |   Content   |      |  Configuration  |      |  Notification  |
       |             |      |      data       |      |      data      |
       +-------------+      +-----------------+      +----------------+
              |                       |                      |
       +-------------+      +-----------------+              |
   (3) | Operations  |      |  <edit-config>  |              |
       |             |      |                 |              |
       +-------------+      +-----------------+              |
              |                       |                      |
       +-------------+      +-----------------+      +----------------+
   (2) |  Messages   |      |     <rpc>,      |      | <notification> |
       |             |      |   <rpc-reply>   |      |                |
       +-------------+      +-----------------+      +----------------+
              |                       |                      |
       +-------------+      +-----------------------------------------+
   (1) |   Secure    |      |               SSH, TLS, ...             |
       |  Transport  |      |                                         |
       +-------------+      +-----------------------------------------+
Figure 1: NETCONF Protocol Layers

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

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. There are four types of streams which are described in [RFC9000]. And Table 1 also describes the four types of streams

Table 1: Stream Acronym Types
Acronym Stream Type
C-BD Client-Initiated, Bidirectional
S-BD Server-Initiated, Bidirectional
C-UN Client-Initiated, Unidirectional
S-UN Server-Initiated, Unidirectional

4.1. Bidirectional Stream Between client and server

NETCONF protocol uses an RPC-based communication model. Configuration data from client to server is exchanged based on '<rpc>' (the client initiating) and '<rpc-reply>' (sent by the server) and so on.

The messages used to exchange configuration data MUST be mapped into one bidirectional stream whose acronym is 'C-BD' according to Table 1. Since RPC processing is serialized and ordered within a session ([RFC6241] section 4.5), a bidirectional stream MUST be used for each NETCONF session.

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 notification data MUST be mapped into one unidirectional stream whose acronym is 'S-UN' according to Table 1.

4.3. Mapping of QUIC connection, QUIC stream, and NETCONF session

The relationship among NETCONF sessions, QUIC streams and QUIC connections is illustrted as follows.

The notifications refer to messages corresonding to a subscription from server to client after the subscription process is over.

5. Call home considerations

5.1. protocol-layering perspective

The following diagram illustrates call home from a protocol-layering perspective based on QUIC:

               Server                              Client
                 |                                               |
                 |         1. QUIC                          |
                 |----------------------------------->|
                 |                                               |
                 |                                               |
                 |         2. NETCONF over QUIC  |
                 |<-----------------------------------|
                 |                                               |
                 |                                               |
                 |         3. NETCONF/RESTCONF |
                 |<-----------------------------------|
                 |                                               |
                          Note: Arrows point from the "client" to
                  the "server" at each protocol layer.
Figure 2: Call Home Sequence Diagram based on QUIC

This diagram makes the following points:

5.2. RFC8071 Call Home Specific Case

In the case of [RFC8071] Call home feature, where the NETCONF server initiates the transport connection to the NETCONF client, Table 1 will be used as follows: - the Client, referred in the Table, means the QUIC initiating party, therefore the NETCONF server and - the Server means the QUIC receiving party, therefore the NETCONF client.

6. Endpoint Authentication

Since QUIC uses TLS 1.3 this is used to verify server identity and client identity.

6.1. Server Identity

A server's identity MUST be verified according to Section 6 of [RFC7589].

6.2. Client Identity

A client's identity MUST be verified according to Section 7 of [RFC7589].

7. Framing

In order to mitigate delimiter injection attacks chunked framing as defined in [RFC6242] is required for NETCONF over QUIC.

The <hello> message MUST be followed by the character sequence RFC 5539 assumes that the end-of-message (EOM) sequence, ]]>]]>>. Upon reception of the <hello> message, the receiving peer's QUIC layer conceptually passes the <hello> message to the Messages layer. If the :base:1.1 capability is advertised by both peers, the chunked framing mechanism defined in Section 4.2 of [[RFC6242]] is used for the remainder of the NETCONF session. Otherwise, the old end-of-message-based mechanism (see Section 4.3 of [[RFC6242]]) is used.

8. Overview of YANG Module

This document defines one YANG module that augments the NETCONF YANG groupings [I-D.ietf-netconf-netconf-client-server] with the QUIC transport YANG groupings [I-D.ietf-netconf-quic-client-server]. This section presents an overview of the YANG Module.

8.1. The "netconf-client" augmentation

The following tree diagram [RFC8340] illustrates the augmentation of the QUIC client grouping into the NETCONF client container:

              INSERT_TEXT_FROM_FILE(refs/tree-ietf-netconf-quic-client-augment.txt)
Figure 3

Comments:

8.2. The "netconf-server" augmentation

The following tree diagram [RFC8340] illustrates the augmentation of the QUIC server grouping into the NETCONF server container:

              INSERT_TEXT_FROM_FILE(refs/tree-ietf-netconf-quic-server-augment.txt)
Figure 4

Comments:

9. YANG Module

This YANG module has normative references to [I-D.ietf-netconf-netconf-client-server] and [I-D.ietf-netconf-quic-client-server].

<CODE BEGINS> file "ietf-netconf-quic@YYYY-MM-DD.yang"

INSERT_TEXT_FROM_FILE(ietf-netconf-quic@YYYY-MM-DD.yang)
Figure 5

<CODE ENDS>

10. Error codes

10.1. Transport Error Codes

Error codes of secure transport layer are specified in [[RFC9000]]. There are not new transport Error Codes defined for NETCONF over QUIC.

10.2. Application Error Codes

According to [[RFC9000]], management of application error codes is left to application protocols. and application error codes can be used by RESET_STREAM Frame and STOP_SENDING Frame. Application error codes for NETCONF over QUIC are listed as follows:

11. Security Considerations

The security considerations described throughout [RFC8446] and [RFC6241] apply here as well. This document requires verification of server identity and client identity according to [RFC7589].

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.

12. 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:

This document also requests IANA to reserve a UDP port for 'NETCONF over QUIC':

13. Acknowledgements

The authors would like to acknowledge the contributors Yang Kou, Xueshun Wang, Kent Watsen, Jeffrey Haas, Balázs Lengyel, Robert Wilton, Huaimo Chen, Lifen Zhou, Andy Bierman, Sean Turner, and Joe Clarke for their beneficial comments.

The authors would like to acknowledge the very useful feedback from an early implementor: Adolfo Ochagavia.

14. References

14.1. Normative References

[I-D.ietf-netconf-netconf-client-server]
Watsen, K., "A YANG Data Model for NETCONF Clients and Servers", Work in Progress, Internet-Draft, draft-ietf-netconf-netconf-client-server-41, , <https://datatracker.ietf.org/doc/html/draft-ietf-netconf-netconf-client-server-41>.
[I-D.ietf-netconf-quic-client-server]
Andersson, P., "YANG Groupings for QUIC clients and QUIC servers", Work in Progress, Internet-Draft, draft-ietf-netconf-quic-client-server-03, , <https://datatracker.ietf.org/doc/html/draft-ietf-netconf-quic-client-server-03>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <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, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/info/rfc6242>.
[RFC9000]
Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, , <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, , <https://www.rfc-editor.org/info/rfc9001>.

14.2. Informative References

[I-D.ietf-netconf-port-numbers]
Boucadair, M., "Updates to NETCONF Transport Port Numbers", Work in Progress, Internet-Draft, draft-ietf-netconf-port-numbers-07, , <https://datatracker.ietf.org/doc/html/draft-ietf-netconf-port-numbers-07>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
[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, , <https://www.rfc-editor.org/info/rfc7301>.
[RFC7589]
Badra, M., Luchuk, A., and J. Schoenwaelder, "Using the NETCONF Protocol over Transport Layer Security (TLS) with Mutual X.509 Authentication", RFC 7589, DOI 10.17487/RFC7589, , <https://www.rfc-editor.org/info/rfc7589>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC8071]
Watsen, K., "NETCONF Call Home and RESTCONF Call Home", RFC 8071, DOI 10.17487/RFC8071, , <https://www.rfc-editor.org/info/rfc8071>.
[I-D.many-tiptop-usecase]
Blanchet, M., Eddy, W., and M. Eubanks, "IP in Deep Space: Key Characteristics, Use Cases and Requirements", Work in Progress, Internet-Draft, draft-many-tiptop-usecase-03, , <https://datatracker.ietf.org/doc/html/draft-many-tiptop-usecase-03>.
[I-D.many-tiptop-quic-profile]
Blanchet, M., "QUIC Profile for Deep Space", Work in Progress, Internet-Draft, draft-many-tiptop-quic-profile-01, , <https://datatracker.ietf.org/doc/html/draft-many-tiptop-quic-profile-01>.
[I-D.ietf-tls-rfc8446bis]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", Work in Progress, Internet-Draft, draft-ietf-tls-rfc8446bis-14, , <https://datatracker.ietf.org/doc/html/draft-ietf-tls-rfc8446bis-14>.

Authors' Addresses

Jinyou Dai
China Information Communication Technologies Group.
Gaoxin 4th Road 6#
Wuhan, Hubei 430079
China
Shaohua Yu
China PCL.
China
Weiqiang Cheng
China Mobile
China
Marc Blanchet
Viagenie
Canada
Per Andersson
Ionio Systems
Sweden