<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-kozuka-quic-server-migration-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="QUIC Server Migration">QUIC Extension for Server-Initiated Connection Migration</title>
    <seriesInfo name="Internet-Draft" value="draft-kozuka-quic-server-migration-00"/>
    <author fullname="Masahiro Kozuka">
      <organization>Okayama University</organization>
      <address>
        <email>kozuka@okayama-u.ac.jp</email>
      </address>
    </author>
    <date year="2026" month="January" day="26"/>
    <area>Web and Internet Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 56?>

<t>This document specifies an extension of QUIC that allows the server to initiate connection
migration.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://masa-koz.github.io/draft-kozuka-quic-server-migration/draft-kozuka-quic-server-migration.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-kozuka-quic-server-migration/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        QUIC Working Group mailing list (<eref target="mailto:quic@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/quic/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/masa-koz/draft-kozuka-quic-server-migration"/>.</t>
    </note>
  </front>
  <middle>
    <?line 62?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>RFC 9000 defines connection migration as a mechanism initiated by the client to change its IP
address or network path without disrupting the QUIC connection. This mechanism is based on the
assumption that a client may be behind a NAT and a server has a public address. However,
there is a reversed situation where a client has a public address and a server is behind a NAT.
This document specifies an extension that reverses this role: the server initiates migration.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
      <?line -18?>

</section>
    <section anchor="motivation">
      <name>Motivation</name>
      <t>A key scenario is:</t>
      <ul spacing="normal">
        <li>
          <t>The server is initially behind a NAT and cannot accept direct connections.</t>
        </li>
        <li>
          <t>The client has a public IP address.</t>
        </li>
        <li>
          <t>The server first establishes the QUIC connection via a relay server.</t>
        </li>
        <li>
          <t>Immediately after the handshake, the server migrates the connection to the client’s public address, reducing latency.</t>
        </li>
      </ul>
      <t>This specification does not define how the server obtains the public address of the client.
Possible methods include application-level signaling or external mechanisms, but these are out
of scope.</t>
    </section>
    <section anchor="scope">
      <name>Scope</name>
      <ul spacing="normal">
        <li>
          <t>Reverse migration roles defined in RFC 9000.</t>
        </li>
        <li>
          <t>Maintain QUIC security guarantees.</t>
        </li>
        <li>
          <t>No new NAT traversal mechanism.</t>
        </li>
      </ul>
    </section>
    <section anchor="negotiating-extension-use">
      <name>Negotiating Extension Use</name>
      <t>allow_server_migration (0x3e764478):</t>
      <t>Clients advertise their support of this extension by sending the allow_server_migration
(0x3e764478) transport parameter (<xref section="7.4" sectionFormat="of" target="QUIC-TRANSPORT"/>) with an empty value.
Sending this transport parameter signals to the server that the client will accept the
server-initiated migration.</t>
      <t>Servers also send this parameter with an empty value. The server informs the client that
it will initiate the connection migration by sending this parameter.</t>
      <t>When this extension is negotiated, the server-initiated migration is only permitted and
the client-initiated migration is prohibited.</t>
      <t>An implementation that understands this transport parameter <bcp14>MUST</bcp14> treat the receipt of a
non-empty value as a connection error of type TRANSPORT_PARAMETER_ERROR.</t>
      <t>Endpoints <bcp14>MUST NOT</bcp14> remember the value of this extension for 0-RTT.</t>
    </section>
    <section anchor="connection-migration-procedure">
      <name>Connection Migration Procedure</name>
      <t>The connection migration procedure is the same as (<xref section="9" sectionFormat="of" target="QUIC-TRANSPORT"/>) except
that the roles between the client and the server are reversed.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="quic-transport-parameter">
        <name>QUIC Transport Parameter</name>
        <t>This document registers the allow_server_migration transport parameter in the "QUIC
Transport Parameters" registry established in <xref section="22.3" sectionFormat="of" target="QUIC-TRANSPORT"/>.
The following fields are registered:</t>
        <dl>
          <dt>Value:</dt>
          <dd>
            <t>0x3e764478</t>
          </dd>
          <dt>Parameter Name:</dt>
          <dd>
            <t>allow_server_migration</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>Provisional</t>
          </dd>
          <dt>Specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Contact:</dt>
          <dd>
            <t>Masahiro Kozuka (kozuka@okayama-u.ac.jp)</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="QUIC-TRANSPORT">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author initials="J." surname="Iyengar" fullname="Jana Iyengar" role="editor">
            <organization>Fastly</organization>
          </author>
          <author initials="M." surname="Thomson" fullname="Martin Thomson" role="editor">
            <organization>Mozilla</organization>
          </author>
          <date year="2021" month="May"/>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 171?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
    <section numbered="false" anchor="questions">
      <name>Questions</name>
      <ul spacing="normal">
        <li>
          <t>Sould we extend this extension to allow both clients and servers to initiate connection migration?</t>
        </li>
        <li>
          <t>Any new security conserations from allowing servers to initiate connection migration?</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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
aPhQ1CQrLa0pohgO9Pcz/h9yy6hcaxMAAA==

-->

</rfc>
