<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-seemann-quic-address-discovery-04" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="QUIC Address Discovery">QUIC Address Discovery</title>
    <seriesInfo name="Internet-Draft" value="draft-seemann-quic-address-discovery-04"/>
    <author fullname="Marten Seemann">
      <organization/>
      <address>
        <email>martenseemann@gmail.com</email>
      </address>
    </author>
    <author fullname="Christian Huitema">
      <organization>Private Octopus Inc.</organization>
      <address>
        <email>huitema@huitema.net</email>
      </address>
    </author>
    <date year="2024" month="October" day="12"/>
    <area>Transport</area>
    <workgroup>QUIC</workgroup>
    <keyword>QUIC</keyword>
    <keyword>STUN</keyword>
    <keyword>Address Discovery</keyword>
    <abstract>
      <?line 44?>

<t>Unless they have out-of-band knowledge, QUIC endpoints have no information about
their network situation. They neither know their external IP address and port,
nor do they know if they are directly connected to the internet or if they are
behind a NAT. This QUIC extension allows nodes to determine their public IP
address and port for any QUIC path.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://marten-seemann.github.io/draft-seemann-quic-address-discovery/draft-seemann-quic-address-discovery.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-seemann-quic-address-discovery/"/>.
      </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/marten-seemann/draft-seemann-quic-address-discovery"/>.</t>
    </note>
  </front>
  <middle>
    <?line 53?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>STUN (<xref target="RFC8489"/>) allows nodes to discover their reflexive transport address
by asking a remote server to report the observed source address. While the QUIC
(<xref target="RFC9000"/>) packet header was designed to allow demultiplexing from STUN
packets, moving address discovery into the QUIC layer has a number of
advantages:</t>
      <ol spacing="normal" type="1"><li>
          <t>STUN traffic is unencrypted, and can be observed and modified by on-path
observers. By moving address discovery into QUIC's encrypted envelope it
becomes invisible to observers.</t>
        </li>
        <li>
          <t>When located behind a load balancer, QUIC packets may be routed based on the
QUIC connection ID. Depending on the architecture, not using STUN might
simplify the routing logic.</t>
        </li>
        <li>
          <t>If QUIC traffic doesn't need to be demultiplexed from STUN traffic,
implementations can enable QUIC bit greasing (<xref target="RFC9287"/>).</t>
        </li>
      </ol>
    </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="negotiate-extension">
      <name>Negotiating Extension Use</name>
      <t>Endpoints advertise their support of the extension by sending the
address_discovery (0x9f81a176) transport parameter (<xref section="7.4" sectionFormat="of" target="RFC9000"/>)
with a variable-length integer value. The value determines the behavior with
respect to address discovery:</t>
      <ul spacing="normal">
        <li>
          <t>0: The node is willing to provide address observations to its peer, but is not
interested in receiving address observations itself.</t>
        </li>
        <li>
          <t>1: The node is interested in receiving address observations, but it is not
willing to provide address observations.</t>
        </li>
        <li>
          <t>2: The node is interested in receiving address observations, and it is willing
to provide address observations.</t>
        </li>
      </ul>
      <t>Implementations that understand this transport parameter <bcp14>MUST</bcp14> treat the receipt
of any other value than these as a connection error of type
TRANSPORT_PARAMETER_ERROR.</t>
      <t>When using 0-RTT, both endpoints <bcp14>MUST</bcp14> remember the value of this transport
parameter. This allows sending the frame defined by this extension in 0-RTT
packets. If 0-RTT data is accepted by the server, the server <bcp14>MUST NOT</bcp14> disable
this extension or change the value on the resumed connection.</t>
    </section>
    <section anchor="frames">
      <name>Frames</name>
      <t>This extension defines the OBSERVED_ADDRESS frame.</t>
      <section anchor="observedaddress">
        <name>OBSERVED_ADDRESS</name>
        <artwork><![CDATA[
OBSERVED_ADDRESS Frame {
    Type (i) = 0x9f81a6..0x9f81a7,
    Sequence Number (i),
    [ IPv4 (32) ],
    [ IPv6 (128) ],
    Port (16),
}
]]></artwork>
        <t>The OBSERVED_ADDRESS frame contains the following fields:</t>
        <dl>
          <dt>Sequence Number:</dt>
          <dd>
            <t>A variable-length integer specifying the sequence number assigned for
this OBSERVED_ADDRESS frame. The sequence
number <bcp14>MUST</bcp14> be monotonically increasing for OBSERVED_ADDRESS frame in the same connection.
Frames may be received out of order. A peer <bcp14>SHOULD</bcp14> ignore an incoming
OBSERVED_ADDRESS frame if it previously received another OBSERVED_ADDRESS frame
for the same path with a Sequence Number equal to or higher than the
sequence number of the incoming frame.</t>
          </dd>
          <dt>IPv4:</dt>
          <dd>
            <t>The IPv4 address. Only present if the least significant bit of the frame type
is 0.</t>
          </dd>
          <dt>IPv6:</dt>
          <dd>
            <t>The IPv6 address. Only present if the least significant bit of the frame type
is 1.</t>
          </dd>
          <dt>Port:</dt>
          <dd>
            <t>The port number, in network byte order.</t>
          </dd>
        </dl>
        <t>This frame <bcp14>MUST</bcp14> only appear in the application data packet
number space. It is a "probing frame" as defined in <xref section="9.1" sectionFormat="of" target="RFC9000"/>.
OBSERVED_ADDRESS frames are ack-eliciting, and <bcp14>SHOULD</bcp14> be retransmitted if lost.
Retransmissions <bcp14>MUST</bcp14> happen on the same path as the original frame was sent on.</t>
        <t>An endpoint <bcp14>MUST NOT</bcp14> send an OBSERVED_ADDRESS frame to a node that did not
request the receipt of address observations as described in
<xref target="negotiate-extension"/>. A node that did not request the receipt of address
observations <bcp14>MUST</bcp14> close the connection with a PROTOCOL_VIOLATION error if it
receives an OBSERVED_ADDRESS frame.</t>
      </section>
    </section>
    <section anchor="address-discovery">
      <name>Address Discovery</name>
      <t>An endpoint that negotiated (see <xref target="negotiate-extension"/>) this extension and
offered to provide address observations to the peer <bcp14>MUST</bcp14> send an
OBSERVED_ADDRESS frame on every new path. This also applies to the path used for
the QUIC handshake. The OBSERVED_ADDRESS frame <bcp14>SHOULD</bcp14> be sent as early as
possible.</t>
      <t>For paths used after completion of the handshake, endpoints <bcp14>SHOULD</bcp14> bundle the
OBSERVED_ADDRESS frame with probing packets. This is possible, since the frame
is defined to be a probing frame (<xref section="8.2" sectionFormat="of" target="RFC9000"/>).</t>
      <t>Additionally, the sender <bcp14>SHOULD</bcp14> send an OBSERVED_ADDRESS frame when it detects a
change in the remote address on an existing path. This could be indicative of a
NAT rebinding. However, the sender <bcp14>MAY</bcp14> limit the rate at which OBSERVED_ADDRESS
frames are produced, to mitigate the spoofed packets attack described in
<xref target="responder-side-security"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="on-the-requester-side">
        <name>On the Requester Side</name>
        <t>In general, nodes cannot be trusted to report the correct address in
OBSERVED_ADDRESS frames. If possible, endpoints might decide to only request
address observations when connecting to trusted peers, or if that is not
possible, define some validation logic (e.g. by asking multiple untrusted peers
and observing if the responses are consistent). This logic is out of scope for
this document.</t>
      </section>
      <section anchor="responder-side-security">
        <name>On the Responder Side</name>
        <t>Depending on the routing setup, a node might not be able to observe the peer's
reflexive transport address, and attempts to do so might reveal details about
the internal network. In these cases, the node <bcp14>SHOULD NOT</bcp14> offer to provide
address observations.</t>
        <t>On-path attackers could capture packets sent from the requester to the
responder, and resend them from a spoofed source address. If done repeatedly,
these spoofed packets could trigger the sending of a large number of OBSERVED_ADDRESS frames.
The recommendation to only include OBSERVED_ADDRESS frames in packets
sent on the same path over which the address was observed ensures
that the peer will not receive the OBSERVED_ADDRESS frames if the
addresses are not valid, but this does not reduce the number of
packets sent over the network.
The attack also has the effect of causing spurious
detection NAT rebinding, and is a variant of the replacement of addresses
of packets mentioned in <xref section="21.1.1.3" sectionFormat="of" target="RFC9000"/>.
QUIC implementations are expected to have sufficient
protection against spurious NAT rebinding to limit the incidental traffic
caused by such attacks. The same protection logic <bcp14>SHOULD</bcp14> be used to prevent sending of a large number of
spurious OBSERVED_ADDRESS frames.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO: fill out registration request for the transport parameter and frame types</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC8489">
          <front>
            <title>Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="M. Petit-Huguenin" initials="M." surname="Petit-Huguenin"/>
            <author fullname="G. Salgueiro" initials="G." surname="Salgueiro"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="R. Mahy" initials="R." surname="Mahy"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>Session Traversal Utilities for NAT (STUN) is a protocol that serves as a tool for other protocols in dealing with NAT traversal. It can be used by an endpoint to determine the IP address and port allocated to it by a NAT. It can also be used to check connectivity between two endpoints and as a keep-alive protocol to maintain NAT bindings. STUN works with many existing NATs and does not require any special behavior from them.</t>
              <t>STUN is not a NAT traversal solution by itself. Rather, it is a tool to be used in the context of a NAT traversal solution.</t>
              <t>This document obsoletes RFC 5389.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8489"/>
          <seriesInfo name="DOI" value="10.17487/RFC8489"/>
        </reference>
        <reference anchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9287">
          <front>
            <title>Greasing the QUIC Bit</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document describes a method for negotiating the ability to send an arbitrary value for the second-most significant bit in QUIC packets.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9287"/>
          <seriesInfo name="DOI" value="10.17487/RFC9287"/>
        </reference>
      </references>
    </references>
    <?line 225?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
