<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-v6ops-aaaa-filtering-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="AAAA filtering considerations">A recommendation for filtering address records in stub resolvers</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-aaaa-filtering-02"/>
    <author fullname="Ondrej Caletka">
      <organization>RIPE NCC</organization>
      <address>
        <email>ondrej@caletka.cz</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>OPS</area>
    <workgroup>IPv6 operations</workgroup>
    <keyword>IPv6</keyword>
    <keyword>DNS</keyword>
    <keyword>Address records</keyword>
    <abstract>
      <?line 68?>

<t>Since IPv4 and IPv6 addresses are represented by different resource records in
the Domain Name System, operating systems capable of running both IPv4 and IPv6
need to execute two queries when resolving a host name. This document discusses
the conditions under which a stub resolver can optimize the process by not
sending one of the queries if the host is connected to a single-stack network.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://oskar456.github.io/ietf-aaaa-filtering/draft-ietf-v6ops-aaaa-filtering.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-v6ops-aaaa-filtering/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        v6ops Working Group mailing list (<eref target="mailto:v6ops@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/v6ops/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/v6ops/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/oskar456/ietf-aaaa-filtering"/>.</t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Most operating systems support both the IPv6 and the IPv4 networking stack. When
such a host is connected to a dual-stack network, whenever a process requests
resolution of a DNS name, two DNS queries need to be issued - one for an A
record representing an IPv4 address, and one for a AAAA record representing an
IPv6 address. The results of such queries are then merged and ordered based on
<xref target="RFC6724"/> or used as input for the Happy Eyeballs algorithm <xref target="RFC8305"/>.</t>
      <t>When such a host is connected to a single-stack network, only one DNS query
needs to be performed: there is no reason for querying for a AAAA record if the
host has no IPv6 connectivity. Similarly if the host does not have any IPv4
connectivity, neither native nor provided by some other mechanism like NAT64
<xref target="RFC6146"/>, querying for an A record is useless. Such an optimization however has
to consider any possible means of obtaining connectivity for a particular
address family, including but not limited to IPv6 Transition Mechanisms or VPNs.</t>
      <t>Please note that Multicast DNS <xref target="RFC6762"/> or similar link-local name resolution
protocols are not considered in scope of this document.</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="problem-statement">
      <name>Problem statement</name>
      <t>Traditional DNS resolution uses UDP messages, capable of carrying only either A
query and response containing IPv4 addresses or AAAA query and response
containing IPv6 addresses. A simple dual-stack capable host has to wait until
both queries are finished before it can sort the results and start establishing
the connection.</t>
      <t>If the network suffers from packet loss, or the DNS server drops queries for
unknown resource record types, finishing these two DNS queries can cause delays
noticeable by users. Not resolving addresses for the address family the host is
not connected to can thus mitigate impact of slow DNS resolution without
compromising functionality.</t>
      <t>Combining A and AAAA queries into a single DNS query
<xref target="RFC10029"/> mitigates the issue as well, however this depends
on particular resolver supporting this feature.</t>
      <t>Another approach mitigating this issue is the Happy Eyeballs algorithm version 2
or newer <xref target="RFC8305"/> which utilizes asynchronous DNS queries and asynchronous
connection attempts. Platforms utilizing Happy Eyeballs can therefore let the
algorithm query both A and AAAA records all the time without any significant
impact on the user experience.</t>
    </section>
    <section anchor="connectivity-detection-algorithms">
      <name>Connectivity detection algorithms</name>
      <t>Whenever an application asks the stub resolver to resolve a domain name without
specifying the address family, the stub resolver follows one of the algorithms
specified below:</t>
      <section anchor="routing-table-based-algorithm">
        <name>Routing table based algorithm</name>
        <t>This algorithm assumes that the host has connectivity of particular address
family if there is at least one route to a destination that is not in Link-Local
address space. This includes both routes with specified next hop as well as
routes for directly connected networks.</t>
        <t>If there are only routes for destinations in the Link-Local
address space, the host is not able to send any packets towards any destination
address that could be possibly obtained from the DNS. Therefore, sending an
address query for that particular address family is unnecessary.</t>
        <t>For each address family supported by the operating system:</t>
        <ol spacing="normal" type="1"><li>
            <t>Read the routing table of the address family, including routes for directly
connected networks;</t>
          </li>
          <li>
            <t>Remove all the routes towards Link-Local destinations from the routing table, ie.:
            </t>
            <ul spacing="normal">
              <li>
                <t>remove routes towards addresses from Section 2.5.6 of <xref target="RFC4291"/> from the IPv6 routing table</t>
              </li>
              <li>
                <t>remove routes towards addresses from <xref target="RFC3927"/> from the IPv4 routing table</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the routing table is not empty, send the corresponding name query to the DNS:
            </t>
            <ul spacing="normal">
              <li>
                <t>AAAA query for IPv6</t>
              </li>
              <li>
                <t>A query for IPv4</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
      <section anchor="ip-address-based-algorithm">
        <name>IP address based algorithm</name>
        <t>As an alternative to analyzing the routing tables, the stub resolver might
choose to determine the connectivity by looking at the addresses configured on
all network interfaces. This is similar to an application using the flag
<tt>AI_ADDRCONFIG</tt> when interacting with the stub resolver using <tt>getaddrinfo()</tt>
function <xref target="GAI"/>.</t>
        <t>For each address family supported by the operating system:</t>
        <ol spacing="normal" type="1"><li>
            <t>Collect all addresses configured on all interfaces</t>
          </li>
          <li>
            <t>Remove all Link-Local addresses from the list, ie.:
            </t>
            <ul spacing="normal">
              <li>
                <t>remove addresses from Section 2.5.6 of <xref target="RFC4291"/> from the list of IPv6 addresses</t>
              </li>
              <li>
                <t>remove addresses from <xref target="RFC3927"/> from the list of IPv4 addresses</t>
              </li>
            </ul>
          </li>
          <li>
            <t>If the list of addresses is not empty, send the corresponding name query to the DNS:
            </t>
            <ul spacing="normal">
              <li>
                <t>AAAA query for IPv6</t>
              </li>
              <li>
                <t>A query for IPv4</t>
              </li>
            </ul>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="connectivity-detection-considerations">
      <name>Connectivity detection considerations</name>
      <t>When detecting the connectivity presence, it is necessary to consider ANY routes
towards non Link-Local address space and/or IP addresses on ALL interfaces and
not just the default route and/or just the default network interface. The
implementations <bcp14>SHOULD NOT</bcp14> try to determine connectivity by hardcoding a
particular publicly reachable IP address <xref target="CHROME"/>.</t>
      <t>Improper detection can cause issues for:</t>
      <ul spacing="normal">
        <li>
          <t>private networks without reachability to the Internet</t>
        </li>
        <li>
          <t>VPN tunnels using different address family than the native address
family of the host, providing possibly only a limited subset of routes
(split-mode VPN)</t>
        </li>
      </ul>
      <section anchor="ipv4-connectivity-provided-by-nat64">
        <name>IPv4 connectivity provided by NAT64</name>
        <t>Even if the host has no routes towards IPv4 address space and/or no IPv4
addresses on interfaces, it can still have IPv4 connectivity provided by some
transition mechanism. In case of NAT64 <xref target="RFC6146"/>, this leads to three possible
scenarios:</t>
        <ol spacing="normal" type="1"><li>
            <t>464XLAT <xref target="RFC6877"/> is used. In this case the host has a default route
towards the CLAT translator, so the A queries are not suppressed. This
would be also the case for any other transition mechanism providing IPv4 as
a service over IPv6 bearer.</t>
          </li>
          <li>
            <t>Only DNS64 <xref target="RFC6147"/> is used. In this case, it is correct not to do A
queries because the host cannot send any native IPv4 packets.</t>
          </li>
          <li>
            <t>The host supports converting IPv4 API calls into IPv6 API calls similarly
to Bump-in-the-Host <xref target="RFC6535"/> API translator alternative. In this case,
such a translator can utilize A queries even if the host cannot send any
native IPv4 packets. Therefore such an API translator or a high level
library like <xref target="I-D.ietf-happy-happyeyeballs-v3"/> <bcp14>SHOULD NOT</bcp14> suppress A
queries if it is aware of the presence of NAT64 in the network.</t>
          </li>
        </ol>
      </section>
    </section>
    <section anchor="filtering-dns-results">
      <name>Filtering DNS results</name>
      <t>If the host does not have full connectivity for both address families (there
are no default gateways for both IPv4 and IPv6), it is possible that the IP(v6)
address obtained from the DNS falls into the address space not covered by any
route. This should not be problem for a properly written application, since
<xref target="RFC6724"/> requires applications to try connecting to all addresses received from
the stub resolver.</t>
      <t>However, in order to minimize the impact on poorly designed applications, the stub
resolver <bcp14>MAY</bcp14> remove addresses not covered by an entry in the routing table from
the list of DNS query results sent to the application.</t>
      <section anchor="filtering-ipv4-mapped-addresses">
        <name>Filtering IPv4-mapped addresses</name>
        <t>As an extension to the filtering of DNS results, the stub resolver <bcp14>MAY</bcp14> also
remove IPv4-mapped IPv6 addresses (Section 2.5.5.2 of <xref target="RFC4291"/>) from the list of DNS
query results sent to the application.</t>
        <t>IPv4-mapped IPv6 addresses are not valid destination addresses <xref target="IANA"/>,
therefore they should never appear in AAAA records. Sending IPv4-mapped IPv6
address to the application might cause address family confusion for applications
using IPv4 compatibility of IPv6 sockets <xref target="RFC3493"/>.</t>
      </section>
    </section>
    <section anchor="effects-of-not-doing-address-record-filtering">
      <name>Effects of not doing address record filtering</name>
      <t>The optimization described above is <bcp14>OPTIONAL</bcp14>. A stub resolver of a dual-stack
capable host can always issue both A and AAAA queries to the DNS, merge and
order the results and send them to the application even if it has only
single-stack connectivity. Sending packets to a destination not covered by an
entry in the routing table will be immediately refused, so a properly written
application will quickly iterate through the list of addresses and finally
select the one using the same address family as the connectivity of the host.</t>
      <t>However, it should be noted that such behavior is not only less robust against
DNS resolution delays but also increases load on the DNS system. If such an
optimization is removed (for instance by a software update) on a large
single-stack network, this might overload parts of the DNS infrastructure, since
the number of queries will double.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Reducing the number of queries allows an attacker observing the DNS traffic to
figure out which address families the host uses.</t>
      <t>Suddenly disabling the optimization can overload parts of the DNS
infrastructure due to doubling the number of queries.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC3493">
          <front>
            <title>Basic Socket Interface Extensions for IPv6</title>
            <author fullname="R. Gilligan" initials="R." surname="Gilligan"/>
            <author fullname="S. Thomson" initials="S." surname="Thomson"/>
            <author fullname="J. Bound" initials="J." surname="Bound"/>
            <author fullname="J. McCann" initials="J." surname="McCann"/>
            <author fullname="W. Stevens" initials="W." surname="Stevens"/>
            <date month="March" year="2003"/>
            <abstract>
              <t>The de facto standard Application Program Interface (API) for TCP/IP applications is the "sockets" interface. Although this API was developed for Unix in the early 1980s it has also been implemented on a wide variety of non-Unix systems. TCP/IP applications written using the sockets API have in the past enjoyed a high degree of portability and we would like the same portability with IPv6 applications. But changes are required to the sockets API to support IPv6 and this memo describes these changes. These include a new socket address structure to carry IPv6 addresses, new address conversion functions, and some new socket options. These extensions are designed to provide access to the basic IPv6 features required by TCP and UDP applications, including multicasting, while introducing a minimum of change into the system and providing complete compatibility for existing IPv4 applications. Additional extensions for advanced IPv6 features (raw sockets and access to the IPv6 extension headers) are defined in another document. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3493"/>
          <seriesInfo name="DOI" value="10.17487/RFC3493"/>
        </reference>
        <reference anchor="RFC3927">
          <front>
            <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="E. Guttman" initials="E." surname="Guttman"/>
            <date month="May" year="2005"/>
            <abstract>
              <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server. Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available. This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.</t>
              <t>IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks). This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3927"/>
          <seriesInfo name="DOI" value="10.17487/RFC3927"/>
        </reference>
        <reference anchor="RFC4291">
          <front>
            <title>IP Version 6 Addressing Architecture</title>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <author fullname="S. Deering" initials="S." surname="Deering"/>
            <date month="February" year="2006"/>
            <abstract>
              <t>This specification defines the addressing architecture of the IP Version 6 (IPv6) protocol. The document includes the IPv6 addressing model, text representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast addresses, and multicast addresses, and an IPv6 node's required addresses.</t>
              <t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4291"/>
          <seriesInfo name="DOI" value="10.17487/RFC4291"/>
        </reference>
        <reference anchor="RFC6724">
          <front>
            <title>Default Address Selection for Internet Protocol Version 6 (IPv6)</title>
            <author fullname="D. Thaler" initials="D." role="editor" surname="Thaler"/>
            <author fullname="R. Draves" initials="R." surname="Draves"/>
            <author fullname="A. Matsumoto" initials="A." surname="Matsumoto"/>
            <author fullname="T. Chown" initials="T." surname="Chown"/>
            <date month="September" year="2012"/>
            <abstract>
              <t>This document describes two algorithms, one for source address selection and one for destination address selection. The algorithms specify default behavior for all Internet Protocol version 6 (IPv6) implementations. They do not override choices made by applications or upper-layer protocols, nor do they preclude the development of more advanced mechanisms for address selection. The two algorithms share a common context, including an optional mechanism for allowing administrators to provide policy that can override the default behavior. In dual-stack implementations, the destination address selection algorithm can consider both IPv4 and IPv6 addresses -- depending on the available source addresses, the algorithm might prefer IPv6 addresses over IPv4 addresses, or vice versa.</t>
              <t>Default address selection as defined in this specification applies to all IPv6 nodes, including both hosts and routers. This document obsoletes RFC 3484. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6724"/>
          <seriesInfo name="DOI" value="10.17487/RFC6724"/>
        </reference>
        <reference anchor="RFC6762">
          <front>
            <title>Multicast DNS</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="M. Krochmal" initials="M." surname="Krochmal"/>
            <date month="February" year="2013"/>
            <abstract>
              <t>As networked devices become smaller, more portable, and more ubiquitous, the ability to operate with less configured infrastructure is increasingly important. In particular, the ability to look up DNS resource record data types (including, but not limited to, host names) in the absence of a conventional managed DNS server is useful.</t>
              <t>Multicast DNS (mDNS) provides the ability to perform DNS-like operations on the local link in the absence of any conventional Unicast DNS server. In addition, Multicast DNS designates a portion of the DNS namespace to be free for local use, without the need to pay any annual fee, and without the need to set up delegations or otherwise configure a conventional DNS server to answer for those names.</t>
              <t>The primary benefits of Multicast DNS names are that (i) they require little or no administration or configuration to set them up, (ii) they work when no infrastructure is present, and (iii) they work during infrastructure failures.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6762"/>
          <seriesInfo name="DOI" value="10.17487/RFC6762"/>
        </reference>
        <reference anchor="RFC8305">
          <front>
            <title>Happy Eyeballs Version 2: Better Connectivity Using Concurrency</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>Many communication protocols operating over the modern Internet use hostnames. These often resolve to multiple IP addresses, each of which may have different performance and connectivity characteristics. Since specific addresses or address families (IPv4 or IPv6) may be blocked, broken, or sub-optimal on a network, clients that attempt multiple connections in parallel have a chance of establishing a connection more quickly. This document specifies requirements for algorithms that reduce this user-visible delay and provides an example algorithm, referred to as "Happy Eyeballs". This document obsoletes the original algorithm description in RFC 6555.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8305"/>
          <seriesInfo name="DOI" value="10.17487/RFC8305"/>
        </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="IANA" target="https://www.iana.org/assignments/iana-ipv6-special-registry">
          <front>
            <title>IANA IPv6 Special-Purpose Address Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="GAI" target="https://pubs.opengroup.org/onlinepubs/9799919799/functions/freeaddrinfo.html">
          <front>
            <title>freeaddrinfo, getaddrinfo - The Open Group Base Specifications Issue 8, IEEE Std 1003.1-2024</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="CHROME" target="https://chromium.googlesource.com/chromium/src/+/0de3ceea881115dd18e79e1d9ea4e090c655996b/net/dns/README.md#IPv6-and-connectivity">
          <front>
            <title>Chrome Host Resolution - IPv6 and connectivity</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="RFC6146">
          <front>
            <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>This document describes stateful NAT64 translation, which allows IPv6-only clients to contact IPv4 servers using unicast UDP, TCP, or ICMP. One or more public IPv4 addresses assigned to a NAT64 translator are shared among several IPv6-only clients. When stateful NAT64 is used in conjunction with DNS64, no changes are usually required in the IPv6 client or the IPv4 server.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6146"/>
          <seriesInfo name="DOI" value="10.17487/RFC6146"/>
        </reference>
        <reference anchor="RFC6147">
          <front>
            <title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="A. Sullivan" initials="A." surname="Sullivan"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
            <date month="April" year="2011"/>
            <abstract>
              <t>DNS64 is a mechanism for synthesizing AAAA records from A records. DNS64 is used with an IPv6/IPv4 translator to enable client-server communication between an IPv6-only client and an IPv4-only server, without requiring any changes to either the IPv6 or the IPv4 node, for the class of applications that work through NATs. This document specifies DNS64, and provides suggestions on how it should be deployed in conjunction with IPv6/IPv4 translators. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6147"/>
          <seriesInfo name="DOI" value="10.17487/RFC6147"/>
        </reference>
        <reference anchor="RFC6535">
          <front>
            <title>Dual-Stack Hosts Using "Bump-in-the-Host" (BIH)</title>
            <author fullname="B. Huang" initials="B." surname="Huang"/>
            <author fullname="H. Deng" initials="H." surname="Deng"/>
            <author fullname="T. Savolainen" initials="T." surname="Savolainen"/>
            <date month="February" year="2012"/>
            <abstract>
              <t>Bump-in-the-Host (BIH) is a host-based IPv4 to IPv6 protocol translation mechanism that allows a class of IPv4-only applications that work through NATs to communicate with IPv6-only peers. The host on which applications are running may be connected to IPv6-only or dual-stack access networks. BIH hides IPv6 and makes the IPv4-only applications think they are talking with IPv4 peers by local synthesis of IPv4 addresses. This document obsoletes RFC 2767 and RFC 3338. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6535"/>
          <seriesInfo name="DOI" value="10.17487/RFC6535"/>
        </reference>
        <reference anchor="RFC6877">
          <front>
            <title>464XLAT: Combination of Stateful and Stateless Translation</title>
            <author fullname="M. Mawatari" initials="M." surname="Mawatari"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <author fullname="C. Byrne" initials="C." surname="Byrne"/>
            <date month="April" year="2013"/>
            <abstract>
              <t>This document describes an architecture (464XLAT) for providing limited IPv4 connectivity across an IPv6-only network by combining existing and well-known stateful protocol translation (as described in RFC 6146) in the core and stateless protocol translation (as described in RFC 6145) at the edge. 464XLAT is a simple and scalable technique to quickly deploy limited IPv4 access service to IPv6-only edge networks without encapsulation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6877"/>
          <seriesInfo name="DOI" value="10.17487/RFC6877"/>
        </reference>
        <reference anchor="I-D.ietf-happy-happyeyeballs-v3">
          <front>
            <title>Happy Eyeballs Version 3: Better Connectivity Using Concurrency</title>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc</organization>
            </author>
            <author fullname="David Schinazi" initials="D." surname="Schinazi">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Nidhi Jaju" initials="N." surname="Jaju">
              <organization>Google LLC</organization>
            </author>
            <author fullname="Kenichi Ishibashi" initials="K." surname="Ishibashi">
              <organization>Google LLC</organization>
            </author>
            <date day="2" month="November" year="2026"/>
            <abstract>
              <t>   Many communication protocols operating over the modern Internet use
   hostnames.  These often resolve to multiple IP addresses, each of
   which may have different performance and connectivity
   characteristics.  Since specific addresses or address families (IPv4
   or IPv6) may be blocked, broken, or sub-optimal on a network, clients
   that attempt multiple connections in parallel have a chance of
   establishing a connection more quickly.  This document defines the
   algorithm for "Happy Eyeballs", a technique for reducing user-visible
   delays on dual-stack hosts.  This document updates the algorithm in
   RFC 8305.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-happy-happyeyeballs-v3-05"/>
        </reference>
        <reference anchor="RFC10029">
          <front>
            <title>DNS Multiple QTYPEs</title>
            <author fullname="R. Bellis" initials="R." surname="Bellis"/>
            <date month="July" year="2026"/>
            <abstract>
              <t>This document specifies a method for a DNS client to request additional DNS record types to be delivered alongside the primary record type specified in the Question section of a DNS QUERY (OpCode=0).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="10029"/>
          <seriesInfo name="DOI" value="10.17487/RFC10029"/>
        </reference>
      </references>
    </references>
    <?line 282?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author would like to thank these people for feedback and comments:
Massimiliano Stucchi, Nick Buraglio, Jen Linkova, Gert Doering, Philip Homburg,
Lorenzo Colitti</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA71a23IbSXJ9r68oUy/SGBeRoigR3huGpCQ6xItJzu4qGAxP
obsA9LLRhe2qBgaamH/xt/jLfDKrqi8ApLUdDutBBBp1ycrLyZNZ3e/3xQu5
yhYjaZc6z3NVzH6vC/HixQs8vyycLgvt+uelmjp5pcrn1KwL+aAXy1w5LWjQ
wzyz0oUnsrLayudSLWhgv5wmIzl3bmlHw+Esc/NqMkjMYpioiRm2R2GdL6aS
iSpkqbFSoqWba6kLl5VaTrNcy2wqNxiyLPVUl1LJNJviA0bIqSkXyg2wxtkc
8vupPEf/4nRhM1NIZyTGJHP/G0+QLwe/LHL6Iv969bkntUsGg8ErOhRO7zKX
65E8GEMgiLzQRaocrUTjsTg0kxUzqdK01NbyoDK1MiukddUE363JV7q0B0JN
JqVe0VL415qaGIiW6pKXxbgE+puZcjPCIlMjRGqSQi0gQ0ra72faTfurE7O0
fYV//Xqh/usjYavJIrN0UrdZYsrlxcMHKV9IlVuDnbMi1UucANo66MkDnWbO
lJnK6cvl+Ef8waEOLu8ePhyIolpMdDkSOK4eCRISKqzsSLqy0gLneCNUqdVI
3tzei7Upn2elqZbY8nZ1Is0ynkc86w1+TUdC9vk3+nt+fU9/xl2liZUuKuwl
ZViKT4mv/ix/wR6kr4/0I54uVJaHMX8ipQxMOcNjVSbzxtloED3JVnoQBw3p
wXBSmrXVQ54/pD3ZLUfS2GdVHr89GbKiuyrGMPJu65oN4vBBcOvM7Js4/Ae2
G8zdIhdCVW5uSlIVdpJyWuW5N/1NAU39TZ6pXLtnxT/iIKrIvrKWR/Lu8vZC
Xp+d8U/aq8bwpD8lftIg+SpEwR4PZZCW7z6cvTk+fRM/nh69Cx+Pj04Pw8eT
d0fH9ceTo/Dx/ZvXb0dCkH+21rscX49HLIBT5Uy3lLRerweZKpTXPvxzViCQ
nB3Sw362XJ30ATsJPLFf6llmXbnx6/jgo4W9X92HUbdVuTRW1x5018z6OL7c
L8SymtgBHLNg72JRTJFnhaYfhqfvTk9PD+n/4bQqEvbd4bTUmiKbDupN1JKq
/WNPYqv4BZ79AHS5wVbeWeWPCrKy7NMs8XEhL62ttHzfQ4xeXMh7l8rD16/f
DA77R6+PjrHP2ae7m6uL/UdJ5qVZZNViMDNmlgNiqjLRHlHDL0NbJsN/Hr5O
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
9QVsyIT4L3L9g6fdLQAA

-->

</rfc>
