Internet-Draft NETCONF over QUIC October 2024
Dai, et al. Expires 24 April 2025 [Page]
Workgroup:
Network Working Group
Internet-Draft:
draft-ietf-netconf-over-quic-01
Published:
Intended Status:
Standards Track
Expires:
Authors:
J. Dai
CICT
S. Yu
PCL
W. Cheng
China Mobile
M. Blanchet
Viagenie
P. Andersson
Cisco systems

NETCONF over QUIC

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.

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

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

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:

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

Table 1: Stream ID Types
Bits Stream Type
0x0 Client-Initiated, Bidirectional
0x1 Server-Initiated, Bidirectional
0x2 Client-Initiated, Unidirectional
0x3 Server-Initiated, Unidirectional

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.

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:

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.

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

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, , <https://www.rfc-editor.org/info/rfc5246>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <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, , <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, , <https://datatracker.ietf.org/doc/html/draft-ietf-netconf-over-tls13-04>.
[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, , <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, , <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
Shaohua Yu
China PCL.
China
Weiqiang Cheng
China Mobile
China
Marc Blanchet
Viagenie
Canada
Per Andersson
Cisco systems
Sweden