<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that
    most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-lin-dhc-dhcpv6-active-leasequery-quic-00"
ipr="trust200902" consensus="true">
  <!-- category values: std, bcp, info, exp, and historic
    ipr values: full3667, noModification3667, noDerivatives3667
    you can add the attributes updates="NNNN" and obsoletes="NNNN"
    they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>

    <title abbrev="DHCPv6 Active Leasequery over QUIC">DHCPv6 Active Leasequery over QUIC</title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Changwang Lin" initials="C."
            surname="Lin">
      <organization>New H3C Technologies</organization>

      <address>
        <postal>
          <street>8 Yongjia North Road</street>
          <!-- Reorder these if your country does things differently -->

          <city>Beijing</city>

          <region>Haidian District</region>

          <code>100094</code>

          <country>China</country>
        </postal>

        <email>linchangwang.04414@h3c.com</email>

        <!-- uri and facsimile elements may also be added -->
      </address>
    </author>

    <date year="2025" />

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>DHC Working Group</workgroup>

    <keyword>DHC</keyword>
    <keyword>DHCPv6</keyword>
    <keyword>QUIC</keyword>

<abstract>
<t>
	RFC7653 allows for actively transferring the real-time binding information data of Dynamic Host Configuration Protocol for IPv6 (DHCPv6) via TCP, 
  which satisfies the need of continuous update of an external requestor with Leasequery data. QUIC could provide useful, 
  reliable and secure semantics for transferring active leasequery of DHCPv6, which enabling much better efficiency and performance by reducing connect time. 
  This document describes how to use the QUIC transport protocol to deliver DHCPv6 Active Leasequery messages, named DHCP6oQUIC.
</t>

</abstract>

  </front>

  <middle>

<section anchor="Introduction" title="Introduction">
<t>
	In order to allow an entity indirectly involved in DHCPv6 client-server transactions to keep current with the state of the DHCPv6 lease state information in real time, 
  the Active Leasequery capability is proposed in <xref target="RFC7653"/>.
</t>
<t>
  An Active Leasequery requestor creates a TCP connection to a DHCPv6 server by using the DHCPv6 port 547. After the TCP connection is established, 
  the messages of Active Leasequery mechanism will delivered between requestor and server.
</t>
<t>
  Active Leasequery allows the external entity to lose its connection with the DHCPv6 server, 
  and then reconnect and receive the latest information regarding any IPv6 bindings changed when it was disconnected. 
  When using TCP for transmission of Active Leasequery protocol, it allows the server to send one or more DHCPv6 messages in response to a single Active Leasequery request.
</t>
<t>
  QUIC <xref target="RFC9000"/> is UDP-based multiplexed and secure transport protocol that provides connection-oriented and stateful interaction between a client and server. 
  It can provide low latency and encrypted transport with resilient connections. QUIC uses multiple simultaneous streams to carry data in one direction. 
  Each stream is a separate unidirectional or bidirectional channel consisting of an ordered stream of bytes. In Addition, each stream has its own flow control, 
  which limit bytes sent on a stream, together with flow control of the connection. Moreover, QUIC does not have the TCP shortcomings such as head of line blocking.
</t>
<t>
  Compared to the TCP transport protocols <xref target="RFC9293"/> supported by DHCPv6 <xref target="RFC7653"/>, QUIC offers the following advantages:
</t>
<t>
  <list style="symbols">
  <t>
		QUIC provides reliability and congestion control similar to TCP <xref target="RFC9293"/>. 
    It is more universally used and supported across the global Internet environment because QUIC is a UDP-based protocol.
	</t>
  <t>
		QUIC has built-in TLS encryption (typically TLS 1.3), offering end-to-end security to ensure data confidentiality and integrity. 
    In contrast, with TCP <xref target="RFC9293"/>, such encryption requires additional protocols like TLS.
	</t>
  <t>
		QUIC supports multi-streaming, allowing multiple data streams to be multiplexed within a single connection. 
    Each stream transmits data independently, avoiding the head-of-line blocking issue found in TCP <xref target="RFC9293"/>.
	</t>
  <t>
		QUIC has lower latency. Since QUIC combines connection establishment and encryption handshake, it only requires 1 Round-Trip Time (RTT), while TCP typically needs 1-2 RTTs.
	</t>
  </list>
</t>
<t>
  Therefore, QUIC is a proper secure and reliable transport protocol for the Active Leasequery mechanism of DHCPv6. 
  This document specifies how to use QUIC as the transport protocol for Active Leasequery Protocol.
</t>
</section>

<section anchor="Terminology-definitions" title="Terminology and Definitions">
<t>
  The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
  NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
  "MAY", and "OPTIONAL" in this document are to be interpreted as
  described in BCP 14 <xref target="RFC2119"/> <xref
  target="RFC8174"/> when, and only when, they appear in all
  capitals, as shown here.
</t>
<t>
  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 "Requestor" is used to refer to the initiating end of the DHCPv6 Active Leasequery Protocol session. Generally, a "Requestor" is a "Client".
</t>
<t>
  <list style="symbols">
  <t>
		Client: The endpoint that initiates a QUIC connection, the DHCPv6 Requestor.
	</t>
  </list>
</t>
</section>

<section anchor="Connection-management" title="Connection Management">

  <section anchor="Connection-establishment" title="Connection Establishment">
  <t>
    QUIC connection establishment is described in <xref target="RFC9000"/>. During establishing connection, 
    DHCP6oQUIC support is indicated by selecting the Application-Layer Protocol Negotiation (ALPN) <xref target="RFC7301"/> token as listed in the IANA Section 7 in the TLS handshake.
  </t>
  <t>
    The DHCPv6 Requestor MUST act as the client, and The DHCPv6 Requestor should be the initiator of the QUIC connection to the DHCPv6 server meanwhile the DHCPv6 server acts as the connection acceptor.
  </t>
  <t>
    The DHCPv6 Requestor MAY record an alarm if the underlying QUIC connection establishment time out; this timeout should be configurable on the DHCPv6 Requestor.
  </t>
  <t>
    If the DHCPv6 Server does not acknowledge an attempt by the DHCPv6 Requestor to establish a connection, QUIC will automatically retry connection establishment using exponential backoff.
  </t>
  </section>

  <section anchor="Connection-termination" title="Connection Termination">

    <section anchor="QUIC-termination-process" title="QUIC Connection Termination Process">
      <t>
        The typical QUIC connection termination process is described in <xref target="RFC9000"/>.
      </t>
    </section>

    <section anchor="DHCP6oQUIC-termination-considerations" title="DHCP6oQUIC Considerations for Connection Termination">
      <t>
        When the Active Leasequery protocol 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 Active Leasequery session is idle.
      </t>
      <t>
        When a DHCPv6 Requestor is shut down, it SHOULD shut down the QUIC connection.
      </t>
      <t>
        The requestor or DHCPv6 Leasequery server MAY close its end of the QUIC connection at any time. The DHCPv6 server might decide to close the connection based on its own configuration.
      </t>
      <t>
       When a DHCPv6 Requestor is detecting the abnormal interruption of the QUIC connection to the DHCPv6 Leasequery server, 
       it SHOULD try to re-establish the connection. Connection timeouts and retry schedules SHOULD be configurable. 
       The default configuration is that a DHCPv6 Requestor MUST NOT attempt to establish a connection more frequently than one every ACTIVE_LQ_IDLE_TIMEOUT, according to the section 6.4 of <xref target="RFC7653"/>.
      </t>
    </section>

  </section>

</section>

<section anchor="Stream-mapping-usage" title="Stream Mapping and Usage">
  <t>
    QUIC <xref target="RFC9000"/> uses multiple simultaneous streams to carry data in one direction. 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.
  </t>
  <t>
    QUIC uses Stream ID to identify the stream. The least significant bit (0x1) of the stream ID identifies the initiator of the stream (client with the bit set to 0). 
    The second least significant bit (0x2) of the stream ID distinguishes between bidirectional streams (with the bit set to 0) and unidirectional streams <xref target="RFC9000"/>.
  </t>
  <section anchor="Bidirectional-stream " title="Bidirectional Stream from Requestor to Server">
    <t>
      According to the Active Leasequery mechanism defined in <xref target="RFC7653"/>, after the requestor sends an ACTIVELEASEQUERY message over the connection, 
      the server sends updates to the requestor using LEASEQUERY-REPLY and LEASEQUERY-DATA messages in response to the request. 
      Therefore, the Active Leasequery connection is bidirectional from requestor to server.
    </t>
    <t>
      Based on the above description, The Active Leasequery messages are initiated by the requestor and reply is needed from the server. 
      So the Active Leasequery messages MAY be mapped into one bidirectional stream whose stream type is 0x00 according to section 2.1 of <xref target="RFC9000"/>.
    </t>
  </section>
</section>

<section anchor="Authentication" title="Endpoint Authentication">
<t>
	DHCP6oQUIC uses QUIC which uses TLS version 1.3 or greater. Therefore, the TLS handshake process can be used for DHCP6oQUIC endpoint authentication. 
  A third-party authentication mechanism can also be applied for DHCP6oQUIC endpoint authentication, such as a TLS client certificate.
</t>
</section>

<section anchor="Operational" title="Operational Considerations">
<t>
	The decision to use DHCP6oQUIC instead of the TCP-based mechanism in <xref target="RFC7653"/> is an operational decision, 
  and an implementation MUST provide a configuration mechanism to enable DHCP6oQUIC on the Active Leasequery session.
</t>
<t>
	Some connectivity problems (such as blocking UDP <xref target="RFC768"/>) could result in a failure to establish a QUIC connection. 
  When this happens, the requestor SHOULD attempt to establish an Active Leasequery session via TCP.
</t>
</section>

<section anchor="IANA" title="IANA Considerations">
<t>
  This document creates a new registration for the identification of DHCP6oQUIC in the "Application Layer Protocol Negotiation (ALPN) Protocol IDs" registry established in <xref target="RFC7301"/>.
</t>
<t>
	The "DHCP6oQ" string identifies DHCP6oQUIC:
</t>
<list style="symbols">
  <t>
		Protocol: DHCP6oQUIC
	</t>
  <t>
		Identification Sequence: 0x44 0x48 0x43 0x50 0x36 0x6f 0x51 ("DHCP6oQ")
	</t>
  <t>
		Specification: This document
	</t>
</list>
<t>
	In addition, it is requested for IANA to reserve a UDP port TBD for 'DHCPv6 over QUIC'.
</t>
</section>

<section anchor="Security" title="Security Considerations">
<t>
  This document replaces the transport protocol layer of DHCPv6 Active Leasequery from TCP to QUIC. 
  The basic protocol specification of DHCPv6 Active Leasequery is not modified, and therefore the new security risks are not introduced to the basic DHCPv6 Active Leasequery protocol.
   DHCP6oQUIC enhances transport-layer security for DHCPv6 Active Leasequery session according to <xref target="RFC9000"/>.
</t>
<t>
  This document does not require to support third-party authentication (e.g., backend Authentication) due to the fact that TLS does not specify this way of authentication. 
  If third-party authentication is needed, TLS client certificates are recommended to be used here.
</t>
</section>

<!-- <section anchor="Acknowledgements" title="Acknowledgements">
<t>
	The author would like to thank Jeff Haas for his valuable input.
</t>
</section> -->

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
  <references title="References" xmlns:xi="http://www.w3.org/2001/XInclude">
    <references title="Normative References">
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.768.xml"/>
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.9293.xml"/>
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7653.xml"/>
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.9000.xml"/>
    </references>
    <references title="Informative References">
        <xi:include href="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7301.xml"/>
    </references>
  </references>
  </back>
</rfc>
