<?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.39 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nygren-dnsop-ipv6only-indicator-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="ipv6only and deprecated SvcParams">Indicating IPv6-only SVCB Endpoints and IPv4 Deprecation in the DNS</title>
    <seriesInfo name="Internet-Draft" value="draft-nygren-dnsop-ipv6only-indicator-00"/>
    <author initials="E." surname="Nygren" fullname="Erik Nygren">
      <organization>Akamai Technologies</organization>
      <address>
        <email>erik+ietf@nygren.org</email>
      </address>
    </author>
    <date/>
    <area>General</area>
    <workgroup>DNSOP</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 45?>

<t>As the DNS is the primary mechanism for translating from hostnames to IP addresses, it is a logical place to signal that endpoints are IPv6-only. It is thus also a logical place to signal that legacy endpoints supporting IPv4 are being deprecated.  This specification introduces two SvcParams for SVCB-compatible RR types that signal IPv6-only endpoints (<tt>ipv6only</tt>) as well as deprecated endpoints (<tt>deprecated</tt>).</t>
      <t>TO BE REMOVED: This document is being collaborated on in Github at:
<eref target="https://github.com/enygren/draft-nygren-dnsop-ipv6only-indicator">https://github.com/enygren/draft-nygren-dnsop-ipv6only-indicator</eref>.
The most recent working version of the document, open issues, etc. should all be
available there.  The authors (gratefully) accept pull requests.</t>
    </abstract>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification introduces the <tt>ipv6only</tt> and <tt>deprecated</tt> SvcParamKeys to allow service providers to indicate that preferred Service Endpoints are IPv6-only and that legacy IPv4-supporting Service Endpoints are deprecated and will be retired.</t>
      <t>As part of the multi-decade transition from IPv4 to IPv6 (<xref target="RFC8200"/>) there is a desire to phase out support for providing services over IPv4. This involves switching from the long-standing assumption that all services are available over IPv4 or dual-stack IPv4+IPv6 to instead being <em>only</em> available over IPv6. As clients lacking IPv6 connectivity will not be able to access IPv6-only resources, there will be a transitional phase where service providers will want to indicate that legacy endpoints supporting IPv4 are deprecated and will go away at some point.</t>
      <t>For example, the government of Czechia has set an end-date after which government services may only be provided over IPv6 <xref target="KONECIPV4"/>. Leading up to this, there will be a need to signal that the IPv6-only services are preferred and that legacy IPv4-supporting services are deprecated.</t>
      <t>In <xref target="SVCB"/>, the SVCB ("Service Binding") and HTTPS DNS RR types are specified to provide clients with complete instructions for accessing a service. Individual service bindings (SVCB RRs) describe Service Endpoints and their properties and relative priorities.</t>
      <t>By adding the <tt>ipv6only</tt> and <tt>deprecated</tt> SvcParamKeys, individual Service Endpoints can be annotated to indicate their IPv6-only and deprecated nature to clients. It is expected that the <tt>deprecated</tt> SvcParamKey may also be used for other future purposes.</t>
      <t>As an example, the following provides two Service Endpoints for <tt>www.example.com</tt>. The preferred endpoint of <tt>modern.example.com</tt> (the one with the lowest SvcPriority) is listed as <tt>ipv6only</tt>. An additional Service Endpoint of <tt>legacy.example.com</tt> is also available but is listed as <tt>deprecated</tt>. The optional use of <tt>mandatory=ipv6only</tt> will cause clients not understanding the new <tt>ipv6only</tt> SvcParamKey to ignore the modern IPv6-only endpoint and skip directly to the legacy endpoint.</t>
      <sourcecode type="dns"><![CDATA[
    www.example.com. 300 IN HTTPS 1 modern.example.com. (
        ipv6hint=2001:db8::6 ipv6only mandatory=ipv6only )
                            HTTPS 2 legacy.example.com. (
        ipv6hint=2001:db8::64 ipv4hint=203.0.113.4 deprecated )
]]></sourcecode>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <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.
<?line -6?>
      </t>
      <t>Terminology used in this specification includes:</t>
      <ul spacing="normal">
        <li>
          <t><tt>Service Endpoint</tt>: a ServiceMode SVCB (or SVCB-compatible) DNS RR (<xref target="SVCB"/>) that specifies how to access a service. This corresponds to an "alternative endpoint" in <xref target="SVCB"/>.</t>
        </li>
      </ul>
      <t>Additional DNS terminology intends to be consistent with <xref target="DNSTerm"/>.</t>
    </section>
    <section anchor="ipv6only">
      <name>The "ipv6only" SvcParamKey</name>
      <t>The <tt>ipv6only</tt> SvcParamKey indicates that the associated Service Endpoint is only available over IPv6. It takes no value.</t>
      <t>With <tt>ipv6only</tt>, the presentation and wire format values MUST be empty.</t>
      <t>The <tt>ipv6only</tt> and <tt>ipv4hint</tt> SvcParamKeys SHOULD NOT be included in the same SVCB RR. When <tt>ipv6only</tt> is present, the <tt>ipv4hint</tt> SvcParam MUST be ignored by clients.</t>
      <section anchor="ipv6only-client-behavior">
        <name>Client behavior for "ipv6only"</name>
        <t>Clients implementing the <tt>ipv6only</tt> SvcParamKey do the following when encountering a SVCB RR with this SvcParam, as a modification to the algorithm specified in <xref target="SVCB"/> Section 3:</t>
        <ol spacing="normal" type="1"><li>
            <t>Clients SHOULD NOT perform an <tt>A</tt> DNS lookup for an IPv4 address for the TargetName. (It is possible that clients already performed the <tt>A</tt> lookup or have one in their DNS cache, in which case it MUST be ignored.)</t>
          </li>
          <li>
            <t>Clients MUST only attempt to connect to the Service Endpoint over IPv6 and MUST NOT attempt to connect to the Service Endpoint over IPv4.</t>
          </li>
          <li>
            <t>Clients who are certain that they have no IPv6 connectivity SHOULD treat this Service Endpoint as not "compatible" (<xref target="SVCB"/> Section 8) and not include it in their candidate list.</t>
          </li>
        </ol>
        <t>If the only Service Endpoints available have <tt>ipv6only</tt>, and if the service has no DNS <tt>A</tt> record, the Client MAY present the user with a notice that the service is only available over IPv6 and that the user lacks IPv6 connectivity.</t>
        <t><em>(TODO: determine if "updates: 9460" is needed.)</em></t>
      </section>
      <section anchor="clients-using-a-proxy">
        <name>Clients using a Proxy</name>
        <t>Clients using a domain-oriented transport proxy like HTTP CONNECT
(<xref target="RFC9110"/>) or SOCKS5 (<xref target="RFC1928"/>) with named destinations may not know if their proxy supports IPv6 or only IPv4.</t>
        <t>Clients lacking information about whether a Proxy supports IPv6 SHOULD opportunistically use Service Endpoints with <tt>ipv6only</tt>, but MUST retry with subsequent Service Endpoints if this fails. Clients MAY use the <xref target="RFC9209"/> <tt>Proxy-Status</tt> response header field to get an indication that a proxy is unable to reach a given target over IPv6 (such as looking for regular occurrences of <tt>error=destination_ip_unroutable</tt>) but MUST NOT extrapolate this to general IPv6 unreachability from the Proxy absent some other explicit signal.</t>
      </section>
    </section>
    <section anchor="deprecated">
      <name>The "deprecated" SvcParamKey</name>
      <t>The <tt>deprecated</tt> SvcParamKey indicates that the associated Service Endpoint is deprecated. It takes an optional value with a freeform textual deprecation reason.</t>
      <t>This text is NOT intended for automated processing, and clients MUST NOT alter their connection behavior on the basis of its content beyond treating the mere presence of the "deprecated" key as advisory.</t>
      <t>The <tt>deprecated</tt> SvcParam SHOULD always be on the lowest priority Service Endpoints.</t>
      <section anchor="presentation-format-for-deprecated">
        <name>Presentation Format for "deprecated"</name>
        <t>The presentation value of "deprecated" is OPTIONAL. When present, it follows the generic SvcParamValue presentation format defined in <xref section="2.1" sectionFormat="of" target="RFC9460"/>.</t>
        <t>If no value is given, the key appears with no reason text, e.g.:</t>
        <sourcecode type="dns"><![CDATA[
   www.example.com. 3600 IN HTTPS 2 legacy.example.com. deprecated
]]></sourcecode>
        <t>If a reason is given:</t>
        <sourcecode type="dns"><![CDATA[
   www.example.com. 3600 IN HTTPS 2 legacy.example.com. (
      deprecated="IPv4 support to be removed prior to 2032-07-06" )
]]></sourcecode>
      </section>
      <section anchor="wire-format-for-deprecated">
        <name>Wire Format for "deprecated"</name>
        <t>In wire format, the SvcParamValue for "deprecated" consists of the UTF-8 <xref target="RFC3629"/> encoding of the freeform reason text, with no internal length, count, or type octets. If no reason text is present, the SvcParamValue is zero-length: the SvcParamKey appears with a SvcParamValue length of 0, per the general wire format described in <xref section="2.2" sectionFormat="of" target="RFC9460"/>.</t>
        <t>Implementations MUST NOT assume any particular character encoding beyond UTF-8, MUST NOT parse the value for embedded structure, and SHOULD treat malformed UTF-8 by ignoring the value while still honoring the mere presence of the key as an indication of deprecation.</t>
      </section>
      <section anchor="deprecated-client-behavior">
        <name>Client behavior for "deprecated"</name>
        <t>The <tt>deprecated</tt> indicator is intended for operational uses and is not intended to substantively impact general end-user behavior.</t>
        <t>Clients SHOULD NOT provide special treatment to Service Endpoints due to the presence of <tt>deprecated</tt>.</t>
        <t>Clients MAY provide an indicator and SHOULD log a warning when using a Service Endpoint with <tt>deprecated</tt>.</t>
      </section>
      <section anchor="example-usage-of-deprecated-outside-of-ipv4-deprecation">
        <name>Example usage of "deprecated" outside of IPv4 deprecation</name>
        <t>The <tt>deprecated</tt> SvcParamKey is generally usable outside of just the IPv4 deprecation context. For example it could be used to indicate that the default ALPN of <tt>http/1.1</tt> is deprecated and that only <tt>alpn=h2,h3</tt> will be supported going forwards:</t>
        <sourcecode type="example"><![CDATA[
    _foo.svc.example. 300 IN SVCB 1 svc.modern.example. alpn="h2,h3" no-default-alpn
    _foo.svc.example. 300 IN SVCB 2 svc.legacy.example. ( alpn="http/1.1"
                               deprecated="http/1.1 support will be retired soon" )
]]></sourcecode>
      </section>
    </section>
    <section anchor="operational-usage-for-ipv4-deprecation">
      <name>Operational Usage for IPv4 Deprecation</name>
      <t>A typical operational workflow for using this will involve moving through a deprecation process of:</t>
      <t>1) Introducing both the ipv6only Service Endpoint and marking the legacy Service Endpoint as deprecated.
2) Removing the deprecated endpoint, leaving only the <tt>ipv6only</tt> Service Endpoint.</t>
      <section anchor="step-one-indicating-deprecation">
        <name>Step One: Indicating Deprecation</name>
        <t>In the first step, the service is configured with at least two ServiceMode Service Endpoints:</t>
        <ul spacing="normal">
          <li>
            <t>The higher priority Service Endpoint (lesser numeric SvcPriority) MUST have <tt>ipv6only</tt> and <tt>mandatory=ipv6only</tt> SvcParams. Its TargetName MUST only have DNS <tt>AAAA</tt> records and no DNS <tt>A</tt> records. By marking the highest priority Service Endpoint with <tt>ipv6only</tt> as <tt>mandatory=ipv6only</tt> we cause clients who do not understand the <tt>ipv6only</tt> SvcParamKey to ignore that ServiceMode record and move on to the next one.</t>
          </li>
          <li>
            <t>The lower priority Service Endpoint (greater numeric SvcPriority) SHOULD have a <tt>deprecated</tt> SvcParam with an optional description. Its TargetName MUST be dual-stacked with both DNS <tt>AAAA</tt> records and <tt>A</tt> records.</t>
          </li>
          <li>
            <t>The fallback hostname MUST be dual-stacked with both DNS <tt>AAAA</tt> records and <tt>A</tt> records.</t>
          </li>
        </ul>
        <t>For example:</t>
        <sourcecode type="dns"><![CDATA[
    www.example.com. 300 IN HTTPS 1 modern.example.com. (
        ipv6hint=2001:db8::6 ipv6only mandatory=ipv6only )
                            HTTPS 2 legacy.example.com. (
        ipv6hint=2001:db8::64 ipv4hint=203.0.113.4
        deprecated="IPv4 support to be removed prior to 2032-07-06" )
    www.example.com.    300 IN AAAA 2001:db8::64
    www.example.com.    300 IN A    203.0.113.4
    modern.example.com. 300 IN AAAA 2001:db8::6
    legacy.example.com. 300 IN CNAME www.example.com.
]]></sourcecode>
        <t>The <tt>www.example.com</tt> endpoint remains as dual-stacked with A and AAAA records for clients not understanding the <tt>ipv6only</tt> SvcParamKey.</t>
      </section>
      <section anchor="step-two-removing-deprecated-service-endpoint">
        <name>Step Two: Removing Deprecated Service Endpoint</name>
        <t>In the second step we remove the dual-stack Service Endpoint (and also make the fallback name IPv6-only):</t>
        <ul spacing="normal">
          <li>
            <t>The remaining Service Endpoint MUST have an <tt>ipv6only</tt> SvcParam. It MUST NOT have the <tt>mandatory=ipv6only</tt> SvcParam, as this would cause clients not implementing the <tt>ipv6only</tt> SvcParam to have a Service Endpoint to use, even if they support IPv6. Its TargetName MUST only have DNS <tt>AAAA</tt> records and no DNS <tt>A</tt> records.</t>
          </li>
          <li>
            <t>The fallback hostname MUST be IPv6-only with only DNS <tt>AAAA</tt> records and no <tt>A</tt> records.</t>
          </li>
        </ul>
        <t>For example, to complete deprecation we remove the deprecated Service Endpoint:</t>
        <sourcecode type="dns"><![CDATA[
    www.example.com. 300 IN HTTPS 1 . ( ipv6hint=2001:db8::6 ipv6only )
    www.example.com.    300 IN AAAA 2001:db8::6
]]></sourcecode>
        <t>At this point the service no longer has any IPv4 support.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Communications in the DNS are subject to inspection and modification unless DNSSEC and secure communication from the client to DNS resolver is used (<xref target="SVCB"/> Section 12).</t>
      <t>As discussed in <xref target="SVCB"/> Section 12 this could force the usage of a less secure Service Endpoint (such as one that is <tt>deprecated</tt>). Service operators SHOULD consider the security implications of continuing to run deprecated services, especially when these might increase their vulnerability footprint.</t>
      <t>How this impacts this specification depends on the threat model for the environment, but for the <tt>ipv6only</tt> SvcParam an attacker who can exploit this could also likely block individual IPv4 or IPv6 flows and force fallback without this specification.</t>
      <t>The free-form text provided with <tt>deprecated</tt> should be assumed to be coming from a hostile source. Clients MUST NOT present it to users in a way that it could lead to confusion or be used for phishing or other attacks. Any logging of this provided text MUST assume that it contains potential cross-site-scripting or prompt injection or other malicious content and must escape and annotate it accordingly.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>Service operators should take into consideration that all information included as freeform text for <tt>deprecated</tt> is publicly available and thus should take care to not include sensitive or proprietary information.</t>
      <t>The presence of <tt>ipv6only</tt> influences client behavior so its presence adds an additional bit that could help fingerprint clients.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="iana-keys">
        <name>Updates to IANA SvcParam Registry</name>
        <t>The "Service Binding (SVCB) Parameter Registry" (<xref target="IANA-SVCB"/>) shall have the following SvcParam Keys added:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Number</th>
              <th align="left">Name</th>
              <th align="left">Meaning</th>
              <th align="left">Reference</th>
              <th align="left">Change Controller</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBA</td>
              <td align="left">ipv6only</td>
              <td align="left">The endpoint is only available over IPv6</td>
              <td align="left">(This document) <xref target="ipv6only"/></td>
              <td align="left">IETF</td>
            </tr>
            <tr>
              <td align="left">TBA</td>
              <td align="left">deprecated</td>
              <td align="left">The endpoint is deprecated and may go away soon</td>
              <td align="left">(This document) <xref target="deprecated"/></td>
              <td align="left">IETF</td>
            </tr>
          </tbody>
        </table>
        <t><em>(TO BE REMOVED but potential considerations for assignment:
* A cute assignment for ipv6only might be "864", with the meaning of "getting rid of IPv4 due to running out".
* Similarly, "86" might be a memorable assignment for "deprecated"?)</em></t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9460">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </reference>
        <reference anchor="SVCB">
          <front>
            <title>Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)</title>
            <author fullname="B. Schwartz" initials="B." surname="Schwartz"/>
            <author fullname="M. Bishop" initials="M." surname="Bishop"/>
            <author fullname="E. Nygren" initials="E." surname="Nygren"/>
            <date month="November" year="2023"/>
            <abstract>
              <t>This document specifies the "SVCB" ("Service Binding") and "HTTPS" DNS resource record (RR) types to facilitate the lookup of information needed to make connections to network services, such as for HTTP origins. SVCB records allow a service to be provided from multiple alternative endpoints, each with associated parameters (such as transport protocol configuration), and are extensible to support future uses (such as keys for encrypting the TLS ClientHello). They also enable aliasing of apex domains, which is not possible with CNAME. The HTTPS RR is a variation of SVCB for use with HTTP (see RFC 9110, "HTTP Semantics"). By providing more information to the client before it attempts to establish a connection, these records offer potential benefits to both performance and privacy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9460"/>
          <seriesInfo name="DOI" value="10.17487/RFC9460"/>
        </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>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC1928">
          <front>
            <title>SOCKS Protocol Version 5</title>
            <author fullname="M. Leech" initials="M." surname="Leech"/>
            <author fullname="M. Ganis" initials="M." surname="Ganis"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="R. Kuris" initials="R." surname="Kuris"/>
            <author fullname="D. Koblas" initials="D." surname="Koblas"/>
            <author fullname="L. Jones" initials="L." surname="Jones"/>
            <date month="March" year="1996"/>
            <abstract>
              <t>This memo describes a protocol that is an evolution of the previous version of the protocol, version 4 [1]. This new protocol stems from active discussions and prototype implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1928"/>
          <seriesInfo name="DOI" value="10.17487/RFC1928"/>
        </reference>
        <reference anchor="RFC3629">
          <front>
            <title>UTF-8, a transformation format of ISO 10646</title>
            <author fullname="F. Yergeau" initials="F." surname="Yergeau"/>
            <date month="November" year="2003"/>
            <abstract>
              <t>ISO/IEC 10646-1 defines a large character set called the Universal Character Set (UCS) which encompasses most of the world's writing systems. The originally proposed encodings of the UCS, however, were not compatible with many current applications and protocols, and this has led to the development of UTF-8, the object of this memo. UTF-8 has the characteristic of preserving the full US-ASCII range, providing compatibility with file systems, parsers and other software that rely on US-ASCII values but are transparent to other values. This memo obsoletes and replaces RFC 2279.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="63"/>
          <seriesInfo name="RFC" value="3629"/>
          <seriesInfo name="DOI" value="10.17487/RFC3629"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA-SVCB" target="https://www.iana.org/assignments/dns-svcb/dns-svcb.xhtml">
          <front>
            <title>Service Binding (SVCB) Parameter Registry</title>
            <author>
              <organization>IANA</organization>
            </author>
            <date/>
          </front>
        </reference>
        <reference anchor="KONECIPV4" target="https://endofipv4.cz/en/">
          <front>
            <title>Czech Republic sets IPv4 end date</title>
            <author>
              <organization>CZ.NIC</organization>
            </author>
            <date year="2024" month="January"/>
          </front>
        </reference>
        <reference anchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="July" year="2017"/>
            <abstract>
              <t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="DNSTerm">
          <front>
            <title>DNS Terminology</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="K. Fujiwara" initials="K." surname="Fujiwara"/>
            <date month="March" year="2024"/>
            <abstract>
              <t>The Domain Name System (DNS) is defined in literally dozens of different RFCs. The terminology used by implementers and developers of DNS protocols, and by operators of DNS systems, has changed in the decades since the DNS was first defined. This document gives current definitions for many of the terms used in the DNS in a single document.</t>
              <t>This document updates RFC 2308 by clarifying the definitions of "forwarder" and "QNAME". It obsoletes RFC 8499 by adding multiple terms and clarifications. Comprehensive lists of changed and new definitions can be found in Appendices A and B.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="219"/>
          <seriesInfo name="RFC" value="9499"/>
          <seriesInfo name="DOI" value="10.17487/RFC9499"/>
        </reference>
        <reference anchor="RFC9209">
          <front>
            <title>The Proxy-Status HTTP Response Header Field</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P. Sikora" initials="P." surname="Sikora"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document defines the Proxy-Status HTTP response field to convey the details of an intermediary's response handling, including generated errors.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9209"/>
          <seriesInfo name="DOI" value="10.17487/RFC9209"/>
        </reference>
      </references>
    </references>
    <?line 256?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thank you to ... for their feedback and suggestions on this draft.</t>
      <t>Some of the initial thoughts around this go back to the IETF sunset4 working group, so additional thanks go to people who participated in that work, as well as to others working towards the eventual universal deprecation of IPv4.</t>
    </section>
    <section anchor="change-history">
      <name>Change history</name>
      <t>(This section to be removed by the RFC editor.)</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
