Network Working Group J. Dai Internet-Draft CICT Intended status: Standards Track S. Yu Expires: 29 August 2025 PCL W. Cheng China Mobile M. Blanchet Viagenie P. Andersson Cisco systems 25 February 2025 NETCONF over QUIC draft-ietf-netconf-over-quic-02 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. 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: * AAAA --> the assigned RFC value for this draft * BBBB --> the assigned RFC value for draft-ietf-netconf-netconf- client-server * CCCC --> the assigned RFC value for draft-ietf-netconf-quic- client-server Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Dai, et al. Expires 29 August 2025 [Page 1] Internet-Draft NETCONF over QUIC February 2025 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 29 August 2025. Copyright Notice Copyright (c) 2025 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 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 . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology and Definitions . . . . . . . . . . . . . . . . . 4 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 . . . . . . . . . . . . . . . . . . 5 4.1. Bidirectional Stream Between client and server . . . . . 6 4.2. Unidirectional Stream from server to client . . . . . . . 6 5. Endpoint Authentication . . . . . . . . . . . . . . . . . . . 6 5.1. Server Identity . . . . . . . . . . . . . . . . . . . . . 7 5.2. Client Identity . . . . . . . . . . . . . . . . . . . . . 7 6. Overview of YANG Module . . . . . . . . . . . . . . . . . . . 7 6.1. The "netconf-client" augmentation . . . . . . . . . . . . 7 6.2. The "netconf-server" augmentation . . . . . . . . . . . . 7 7. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 8 8. Security Considerations . . . . . . . . . . . . . . . . . . . 11 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 Dai, et al. Expires 29 August 2025 [Page 2] Internet-Draft NETCONF over QUIC February 2025 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 11.1. Normative References . . . . . . . . . . . . . . . . . . 12 11.2. Informative References . . . . . . . . . . . . . . . . . 13 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 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: * 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. Dai, et al. Expires 29 August 2025 [Page 3] Internet-Draft NETCONF over QUIC February 2025 * Adaptable to more difficult environments such as those with long delays ([I-D.many-tiptop-usecase], [I-D.many-tiptop-quic-profile] . 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, NETCONF over QUIC support is indicated by selecting the ALPN token as listed in Section 9 in the cryptographic 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 request, it will gracefully close the NETCONF session. The server SHOULD close the associated QUIC connection. When a NETCONF entity receives a 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 request to the peer NETCONF entity. Dai, et al. Expires 29 August 2025 [Page 4] Internet-Draft NETCONF over QUIC February 2025 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. Layer Example +-------------+ +-----------------+ +----------------+ (4) | Content | | Configuration | | Notification | | | | data | | data | +-------------+ +-----------------+ +----------------+ | | | +-------------+ +-----------------+ | (3) | Operations | | | | | | | | | +-------------+ +-----------------+ | | | | +-------------+ +-----------------+ +----------------+ (2) | Messages | | , | | | | | | | | | +-------------+ +-----------------+ +----------------+ | | | +-------------+ +-----------------------------------------+ (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: * 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. Dai, et al. Expires 29 August 2025 [Page 5] Internet-Draft NETCONF over QUIC February 2025 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]. +======+==================================+ | 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. Configuration data from client to server is exchanged based on '' (the client initiating) and '' (sent by the server) and so on. 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. 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 configuration data SHOULD be mapped into one unidirectional stream whose stream type is 0x3 according to the above table. 5. Endpoint Authentication Since QUIC uses TLS 1.3 this is used to verify server identity and client identity. Dai, et al. Expires 29 August 2025 [Page 6] Internet-Draft NETCONF over QUIC February 2025 5.1. Server Identity A server's identity MUST be verified according to Section 6 of [RFC7589]. 5.2. Client Identity A client's identity MUST be verified according to Section 7 of [RFC7589]. 6. 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. 6.1. The "netconf-client" augmentation The following tree diagram [RFC8340] illustrates the augmentation of the QUIC client grouping into the NETCONF client container: augment /ncc:netconf-client/ncc:initiate/ncc:netconf-server /ncc:endpoints/ncc:endpoint/ncc:transport: +--:(quic) {quic-initiate}? +--rw quic +---u quicc:quic-client Figure 2 Comments: * This augmentation to the "ncc:transport" container in "ietf- netconf-client.yang" adds a "quic" case with a "quic" container which uses the "quicc:quic-client" grouping. * Note that the if-feature "quic-initiate" conditions if the "quic" container is available in the schema. 6.2. The "netconf-server" augmentation The following tree diagram [RFC8340] illustrates the augmentation of the QUIC server grouping into the NETCONF server container: Dai, et al. Expires 29 August 2025 [Page 7] Internet-Draft NETCONF over QUIC February 2025 augment /ncs:netconf-server/ncs:listen/ncs:endpoints/ncs:endpoint /ncs:transport: +--:(quic) {quic-listen}? +--rw quic +---u quics:quic-server Figure 3 Comments: * This augmentation to the "ncs:transport" container in "ietf- netconf-server.yang" adds a "quic" case with a "quic" container which uses the "quics:quic-server" grouping. * Note that the if-feature "quic-listen" conditions if the "quic" container is available in the schema. 7. YANG Module This YANG module has normative references to [I-D.ietf-netconf-netconf-client-server] and [I-D.ietf-netconf-quic-client-server]. file "ietf-netconf-quic@2025-02-25.yang" module ietf-netconf-quic { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-quic"; prefix ncquic; import ietf-netconf-client { prefix ncc; reference "RFC BBBB: NETCONF Client and Server Models"; } import ietf-netconf-server { prefix ncs; reference "RFC BBBB: NETCONF Client and Server Models"; } import ietf-quic-client { prefix quicc; reference "RFC CCCC: YANG Groupings for QUIC Clients and QUIC Servers"; } Dai, et al. Expires 29 August 2025 [Page 8] Internet-Draft NETCONF over QUIC February 2025 import ietf-quic-server { prefix quics; reference "RFC CCCC: YANG Groupings for QUIC Clients and QUIC Servers"; } organization "IETF NETCONF (Network Configuration) Working Group"; contact "WG Web: https://datatracker.ietf.org/wg/netconf WG List: NETCONF WG list Author: Jinyou Dai Author: Shaohua Yu Author: Weiqiang Cheng Author: March Blanchet Author: Per Andersson "; description "This module defines augmentations for a NETCONF server to also support the QUIC transport. Copyright (c) 2025 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC AAAA (https://www.rfc-editor.org/info/rfcAAAA); see the RFC itself for full legal notices. The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', Dai, et al. Expires 29 August 2025 [Page 9] Internet-Draft NETCONF over QUIC February 2025 'NOT RECOMMENDED', 'MAY', and 'OPTIONAL' in this document are to be interpreted as described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, they appear in all capitals, as shown here."; revision 2025-02-25 { description "Initial version"; reference "RFC AAAA: NETCONF over QUIC"; } // Features feature quic-initiate { description "The 'quic-initiate' feature indicates that the NETCONF client supports initiating QUIC connections to NETCONF servers."; reference "RFC CCCC: YANG Groupings for QUIC Clients and QUIC Servers"; } feature quic-listen { description "The 'quic-listen' feature indicates that the NETCONF server supports the QUIC transport."; reference "RFC AAAA: NETCONF over QUIC"; } // Augments /* FIXME seems pyang don't support this augment */ augment "/ncc:netconf-client/ncc:initiate" { if-feature "quic-initiate"; description "Add 'quic-initate' feature to the NETCONF client connection configuration."; } augment "/ncc:netconf-client/ncc:initiate/ncc:netconf-server" + "/ncc:endpoints/ncc:endpoint/ncc:transport" { description "Add QUIC transport to the NETCONF client connection configuration"; case quic { if-feature "quic-initiate"; container quic { Dai, et al. Expires 29 August 2025 [Page 10] Internet-Draft NETCONF over QUIC February 2025 description "QUIC-level client parameters to initiate a NETCONF over QUIC connection."; uses quicc:quic-client; } } } /* FIXME seems pyang don't support this augment */ augment "/ncs:netconf-server/ncs:listen" { if-feature "quic-listen"; description "Add 'quic-listen' feature to the NETCONF server listen configuration."; } augment "/ncs:netconf-server/ncs:listen/ncs:endpoints" + "/ncs:endpoint/ncs:transport" { description "Add QUIC transport to the NETCONF server listen configuration."; case quic { if-feature "quic-listen"; container quic { description "QUIC-level server parameters to listen for NETCONF over QUIC connections."; uses quics:quic-server; } } } } Figure 4 8. 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]. Dai, et al. Expires 29 August 2025 [Page 11] Internet-Draft NETCONF over QUIC February 2025 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]. 9. 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'. 10. Acknowledgements The authors would like to acknowledge all contributors including Yang Kou, Xueshun Wang, Kent Watsen, Jeffrey Haas, Balázs Lengyel, Robert Wilton, Huaimo Chen, Lifen Zhou, Andy Bierman et al. for their beneficial comments. The authors would like to acknowledge the very useful feedback from an early implementor: Adolfo Ochagavia. 11. References 11.1. Normative References Dai, et al. Expires 29 August 2025 [Page 12] Internet-Draft NETCONF over QUIC February 2025 [I-D.ietf-netconf-netconf-client-server] Watsen, K., "NETCONF Client and Server Models", Work in Progress, Internet-Draft, draft-ietf-netconf-netconf- client-server-38, 12 February 2025, . [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-01, 24 February 2025, . [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, . [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, . [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021, . [RFC9001] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", RFC 9001, DOI 10.17487/RFC9001, May 2021, . 11.2. Informative References [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, . [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, . [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, . Dai, et al. Expires 29 August 2025 [Page 13] Internet-Draft NETCONF over QUIC February 2025 [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, June 2015, . [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, . [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-00, 21 February 2025, . [I-D.many-tiptop-quic-profile] Blanchet, M., "QUIC Profile for Deep Space", Work in Progress, Internet-Draft, draft-many-tiptop-quic-profile- 00, 19 February 2025, . 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 Dai, et al. Expires 29 August 2025 [Page 14] Internet-Draft NETCONF over QUIC February 2025 Marc Blanchet Viagenie Canada Email: marc.blanchet@viagenie.ca Per Andersson Cisco systems Sweden Email: per.ietf@ionio.se Dai, et al. Expires 29 August 2025 [Page 15]