Network Working Group J. Dai
Internet-Draft CICT
Intended status: Standards Track S. Yu
Expires: 20 October 2024 PCL
W. Cheng
China Mobile
M. Blanchet
Viagenie
P. Andersson
Cisco systems
20 April 2024
Using NETCONF over QUIC connection
draft-dai-netconf-quic-netconf-over-quic-06
Abstract
The Network Configuration Protocol (NETCONF) provides mechanisms to
install, manipulate, and delete the configuration of network devices.
NETCONF can be carried over various transports such as TCP, SSH or
else. QUIC provides useful semantics for Network management and
NETCONF in particular as a single connection can carry multiple
requests over streams, enabling much better efficiency and
performance for both peers. QUIC provides shorter handshake and
includes TLS. QUIC is also more adaptable to more difficult
environments such as those with long delays. This document describes
how to use NETCONF over the QUIC transport protocol, named
NETCONFoQUIC.
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 20 October 2024.
Dai, et al. Expires 20 October 2024 [Page 1]
Internet-Draft NETCONF over QUIC April 2024
Copyright Notice
Copyright (c) 2024 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 . . . . . . . . . . . . . . . . . . . . . . . . 2
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. NETCONFoQUIC Considerations for Connection
Termination . . . . . . . . . . . . . . . . . . . . . 5
4. Stream mapping and usage . . . . . . . . . . . . . . . . . . 5
4.1. Bidirectional Stream Between Manager and Agent . . . . . 6
4.2. Unidirectional Stream from Agent to Manager . . . . . . . 7
5. Endpoint Authentication . . . . . . . . . . . . . . . . . . . 7
5.1. Using QUIC Handshake Authentication . . . . . . . . . . . 7
5.1.1. Using Third-Party Authentication . . . . . . . . . . 7
6. Security Considerations . . . . . . . . . . . . . . . . . . . 7
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 8
9.1. Normative References . . . . . . . . . . . . . . . . . . 8
9.2. Informative References . . . . . . . . . . . . . . . . . 9
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10
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.
Dai, et al. Expires 20 October 2024 [Page 2]
Internet-Draft NETCONF over QUIC April 2024
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. At present, some secure transport
protocols are defined to carry NETCONF: Secure SHell(SSH)[RFC6242],
Transport Layer Security(TLS)[RFC7589], Simple Object Access
Protocol(SOAP)[RFC4743] and Blocks Extensible Exchange
Protocol(BEEP)[RFC4744].
However, because of the connection-oriented feature, almost all of
the current secure transport protocols used by NETCONF is 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.
* Fully encrypted
* Adaptable to more difficult environments such as those with long
delays([I-D.many-deepspace-ip-assessment],
[I-D.huitema-quic-in-space]).
Dai, et al. Expires 20 October 2024 [Page 3]
Internet-Draft NETCONF over QUIC April 2024
Therefore, QUIC is a proper transport protocol for the secure
transport layer of NETCONF. In addition, QUIC does not have the TCP
shortcomings such as head of line blocking. 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].
In this document, the terms "client" and "server" are used to refer
to the two ends of the QUIC connection. The client actively
initiates the QUIC connection. The terms "manager" and "agent" are
used to refer to the two ends of the NETCONF protocol session. The
manager issues NETCONF remote procedure call (RPC) commands, and the
agent replies to those commands. Generally, a "manager" is a
"client" meanwhile an "agent" is a "server".
* Client: The endpoint that initiates a QUIC connection, the NETCONF
manager.
* Server: The endpoint that accepts a QUIC connection, the NETCONF
agent.
3. Connection Management
3.1. Connection establishment
QUIC connections are established as described in [RFC9000]. During
connection establishment, NETCONFoQUIC support is indicated by
selecting the ALPN token as listed in the IANA sectionSection 7 in
the crypto handshake.
The peer acting as the NETCONF manager MUST also act as the client
meanwhile the peer acting as the NETCONF agent must also act as the
server.
The manager should be the initiator of the QUIC connection to the
agent meanwhile the agent act as a connection acceptor.
3.2. Connection Termination
3.2.1. QUIC Connection Termination Process
The typical QUIC connection termination process is described in
[RFC9000]
Dai, et al. Expires 20 October 2024 [Page 4]
Internet-Draft NETCONF over QUIC April 2024
3.2.2. NETCONFoQUIC Considerations for Connection Termination
When a NETCONF session is implemented based on a QUIC connection, the
idle timeout should be disabled or the QUIC max_idle_timeout should
be set appropriately in order to keep the QUIC connection persistent
even if the NETCONF session is idle.
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 manager or the agent.
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
Dai, et al. Expires 20 October 2024 [Page 5]
Internet-Draft NETCONF over QUIC April 2024
Figure 1 shows that there are two kinds of main data flow exchanged
between manager and agent:
* Configuration data from manager to agent.
* Notification data from agent to manager.
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].
+======+==================================+
| 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 Manager and Agent
NETCONF protocol uses an RPC-based communication model. So, the
configuration data from manager to agent is exchanged based on
'<RPC>' (the manager initiating) and '<RPC-Reply>' (sent by the
agent) 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.
Dai, et al. Expires 20 October 2024 [Page 6]
Internet-Draft NETCONF over QUIC April 2024
4.2. Unidirectional Stream from Agent to Manager
There are some notification data exchanged between the agent and the
manager. Notification is an agent (server)-initiated message
indicating that a certain event has been recognized by the agent
(server).
Notification messages are initiated by the agent and no reply is
needed from the manager. 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
NETCONFoQUIC 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
NETCONFoQUIC 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.
Dai, et al. Expires 20 October 2024 [Page 7]
Internet-Draft NETCONF over QUIC April 2024
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
NETCONFoQUIC in the "Application Layer Protocol Negotiation (ALPN)
Protocol IDs registry established in [RFC7301].
The "noq" string identifies NETCONFoQUIC:
* Protocol: NETCONFoQUIC
* Identification Sequence: 0x4e 0x6f 0x51 ("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.
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>.
Dai, et al. Expires 20 October 2024 [Page 8]
Internet-Draft NETCONF over QUIC April 2024
[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
[RFC4743] Goddard, T., "Using NETCONF over the Simple Object Access
Protocol (SOAP)", RFC 4743, DOI 10.17487/RFC4743, December
2006, <https://www.rfc-editor.org/info/rfc4743>.
[RFC4744] Lear, E. and K. Crozier, "Using the NETCONF Protocol over
the Blocks Extensible Exchange Protocol (BEEP)", RFC 4744,
DOI 10.17487/RFC4744, December 2006,
<https://www.rfc-editor.org/info/rfc4744>.
[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>.
[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,
<https://www.rfc-editor.org/info/rfc7589>.
[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-01, 4 March 2024,
<https://datatracker.ietf.org/doc/html/draft-many-
deepspace-ip-assessment-01>.
[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>.
Dai, et al. Expires 20 October 2024 [Page 9]
Internet-Draft NETCONF over QUIC April 2024
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.
Email: yush@cae.cn
Weiqiang Cheng
China Mobile
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 20 October 2024 [Page 10]