<?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.29 (Ruby 2.6.10) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-v6ops-ipv6-app-testing-02" category="bcp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="ipv6-app-testing">Testing Applications' IPv6 Support</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-ipv6-app-testing-02"/>
    <author fullname="Philipp S. Tiesel">
      <organization>SAP SE</organization>
      <address>
        <email>philipp@tiesel.net</email>
        <email>philipp.tiesel@sap.com</email>
      </address>
    </author>
    <author fullname="Jen Linkova">
      <organization>Google</organization>
      <address>
        <email>furry13@gmail.com</email>
        <email>furry@google.com</email>
      </address>
    </author>
    <author fullname="Kyle Ouellette">
      <organization abbrev="UNH-IOL">University of New Hampshire Interoperability Labs</organization>
      <address>
        <email>kouellette@iol.unh.edu</email>
      </address>
    </author>
    <author fullname="Ben Patton">
      <organization abbrev="UNH-IOL">University of New Hampshire Interoperability Labs</organization>
      <address>
        <email>bpatton@iol.unh.edu</email>
      </address>
    </author>
    <date year="2026" month="August" day="26"/>
    <area>Operations and Management</area>
    <workgroup>v6ops</workgroup>
    <keyword>IPv6</keyword>
    <keyword>Applications</keyword>
    <keyword>Testing</keyword>
    <abstract>
      <?line 100?>

<t>This document provides guidance for application developers and software as a service providers on how to approach IPv6 testing in Dual-stack (IPv4+IPv6), and IPv6-only scenarios, including "IPv6-only-strict" scenarios without any connectivity towards any relevant IPv4 endpoint.
It discusses common misconceptions about the degree to which operating systems and libraries can abstract IPv6 issues away
and explains common regressions to avoid when deploying IPv6 support.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-v6ops-ipv6-app-testing/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-v6ops/draft-itef-v6ops-ipv6-app-testing"/>.</t>
    </note>
  </front>
  <middle>
    <?line 107?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>For the last 20 years, enabling applications for IPv6 has focused on coexistence with IPv4 and allowing traffic to shift towards IPv6 without breaking IPv4 operation.
This target has changed in part due to a series of national regulations mandating state entities to proceed in the migration to IPv6, e.g., in
China <xref target="CN-CAC-2023"/>, the United States of America <xref target="US-OMB-M-21-07"/>, Germany <xref target="DE-BIT-2020-14"/>, and the Czech Republic <xref target="CZ-ENDv4"/>.
IPv6 support today means being fully functional in the absence of IPv4 and transition technologies providing connectivity to the IPv4 Internet.
Therefore, today's applications are expected to function regardless of whether they are used in an IPv4-only environment, a Dual-stack environment, or an IPv6-only environment, with or without connectivity to the IPv4 Internet. To achieve this, applications need to be verified against all these scenarios.</t>
      <t>While the availability of IPv6 support in applications has a considerable impact on the success of IPv6,
there exists no documented best current practices how to do so.
Testing IPv6 compliance of network gear and operating systems has been documented extensively.
While the IETF does not define compliance tests, best current practice exists for the behavior of general IPv6 nodes <xref target="RFC8504"/> and Customer Edge (CE) routers <xref target="I-D.draft-ietf-v6ops-rfc7084bis"/>.</t>
      <t>To fill that gap, this document provides guidance for application developers and cloud application providers on how to approach IPv6 testing.
It describes which scenarios they should consider validating against, and which common regressions to avoid when adding IPv6 support.
While many application developers assume that the network abstractions of the operating system (OS), communication libraries, and application frameworks will handle the transition towards IPv6 transparently, leaky abstractions within these frameworks will make it difficult for an application developer to write address family-independent code for features such as allow/deny lists and logging.
In addition to that challenge, modern cloud applications are typically composed of hundreds to thousands of micro and macroservices, forming a complex distributed system that requires intricate communication and orchestration infrastructure to operate.
Enabling these applications to communicate over IPv6 requires careful analysis of data flows within all services and proper IPv6 support in all components that may require IPv6 traffic, as well as IPv6 addresses as metadata.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <section anchor="requirements-language">
        <name>Requirements Language</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="base-connectivity-scenarios">
        <name>Base Connectivity Scenarios</name>
        <t>Within this document, we define the following four "base connectivity scenarios"
in which applications ought to be verified for availability and functional correctness.</t>
        <dl>
          <dt>IPv4-only:</dt>
          <dd>
            <t>A node or application that has native connectivity towards all endpoints relevant for the test scenario using IPv4 and no connectivity towards any relevant IPv6 endpoints.</t>
          </dd>
          <dt>Dual-stack:</dt>
          <dd>
            <t>A node or application that has native connectivity towards all endpoints relevant for the test scenario using IPv4 as well as using IPv6.</t>
          </dd>
          <dt>IPv6-only with NAT64:</dt>
          <dd>
            <t>A node or application that has native connectivity towards all endpoints relevant for the test scenario using IPv6 and connectivity towards IPv4 endpoints using a transition technology like NAT64, e.g., NAT64 in combination with CLAT, DNS64, or local address synthesis.</t>
          </dd>
          <dt>IPv6-only-strict:</dt>
          <dd>
            <t>A node or application that has native connectivity towards all endpoints relevant for the test scenario using IPv6 and no connectivity towards any relevant IPv4 endpoints, neither encapsulated nor translated.
This definition slightly diverges from the one in <xref target="I-D.draft-palet-v6ops-ipv6-only"/> as it ignores IPv4 connectivity to anywhere outside the testing scope.</t>
          </dd>
        </dl>
      </section>
      <section anchor="lifecycle-functions">
        <name>Lifecycle Functions</name>
        <t>Orthogonal to the Base Scenarios, we define lifecycle functions, i.e., the phases in which an application is approached during a simplified lifecycle of the application, in accordance to <xref target="US-NIST.SP.500-267Ar1"/> as follows:</t>
        <ul spacing="normal">
          <li>
            <t>Installation: The installation of the application including any initial configuration required for
getting the application in a state where remote services are operational.</t>
          </li>
          <li>
            <t>User Interface: All forms of interactive access to the application (e.g., Web UI, API).</t>
          </li>
          <li>
            <t>Management: All forms of remote management and monitoring functions.</t>
          </li>
          <li>
            <t>Update: All forms of update functions, including both automatic and manual update mechanisms.</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="objectives">
      <name>Testing Objectives</name>
      <t>As a basic principle, IPv6 application testing should always be derived from functional and integration testing.
Therefore, the goal is to verify that the expected behavior is consistent across all connectivity scenarios,
i.e., the application functions correctly in IPv4-only, Dual-stack, IPv6-only with NAT64 and IPv6-only-strict settings.
The following sections provide guidance on which connectivity scenarios to include in a testing campaign and how to approach testing complex cloud applications.</t>
      <section anchor="scenarios">
        <name>Connectivity Scenarios</name>
        <t><xref target="scn_combinations"/> lists the combinations of connectivity scenarios that application testing should generally consider.
Note, while the involved parties are listed here as "client" and "server" to reflect the most common case, the combinations can be used the same way when considering peer-to-peer applications – with "client" representing the initiating or first acting party.</t>
        <t>The first five scenarios marked as <em>base</em> should cover all major code paths and fallback conditions.
These include Dual-stack clients combined with IPv4-only and IPv6-only-strict servers, to test whether the additional address family confused the client.
We also include the cases with Dual-stack Server and Single-Stack clients, to test whether a single address family at client side works as anticipated and look at the transition case using NAT64.
We have no special scenarios for 464XLAT <xref target="RFC6877"/> and IPv6-Mostly <xref target="I-D.draft-ietf-v6ops-6mops"/>, as these architectures are from the client side indistinguishable from the Dual-stack (464XLAT or IPv6-Mostly with CLAT) or IPv6-only with NAT64 (IPv6-Mostly without CLAT).</t>
        <t>For the IPv6-only datacenter case, where servers may be exposed to the IPv4-only Internet using NAT64, it is also advisable to consider the case marked as IPv6-only-DC in <xref target="scn_combinations"/>.</t>
        <t>The other combinations are unlikely to exhibit additional problems for client-server-based applications and therefore are marked as extended in <xref target="scn_combinations"/>.
For peer-to-peer applications and applications with complex connection handling like using STUN <xref target="RFC8489"/> or TURN <xref target="RFC8656"/>, skipping these scenarios is strongly discouraged.</t>
        <table anchor="scn_combinations">
          <name>Connectivity scenario combinations to consider</name>
          <thead>
            <tr>
              <th align="left">Client</th>
              <th align="left">Server</th>
              <th align="center">Classification</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Dual-stack</td>
              <td align="left">IPv4-only</td>
              <td align="center">base</td>
            </tr>
            <tr>
              <td align="left">Dual-stack</td>
              <td align="left">IPv6-only-strict</td>
              <td align="center">base</td>
            </tr>
            <tr>
              <td align="left">IPv4-only</td>
              <td align="left">Dual-stack</td>
              <td align="center">base</td>
            </tr>
            <tr>
              <td align="left">IPv6-only with NAT64</td>
              <td align="left">IPv4-only</td>
              <td align="center">base</td>
            </tr>
            <tr>
              <td align="left">IPv6-only-strict</td>
              <td align="left">Dual-stack</td>
              <td align="center">base</td>
            </tr>
            <tr>
              <td align="left">IPv4-only</td>
              <td align="left">IPv6-only with NAT64</td>
              <td align="center">IPv6-only-DC</td>
            </tr>
            <tr>
              <td align="left">Dual-stack</td>
              <td align="left">Dual-stack</td>
              <td align="center">extended</td>
            </tr>
            <tr>
              <td align="left">IPv4-only</td>
              <td align="left">IPv4-only</td>
              <td align="center">extended</td>
            </tr>
            <tr>
              <td align="left">IPv6-only with NAT64</td>
              <td align="left">IPv6-only-strict</td>
              <td align="center">extended</td>
            </tr>
            <tr>
              <td align="left">IPv6-only-strict</td>
              <td align="left">IPv6-only-strict</td>
              <td align="center">extended</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="intermediaries">
        <name>Testing with Intermediaries (e.g., Proxies)</name>
        <t>Many application protocols support communicating across intermediates, most commonly HTTP, HTTP-Connect, SOCKS, or MASQUE proxies.
Peer-to-peer applications often support TURN <xref target="RFC5766"/> as an intermediary to traverse NAT and provide connectivity between IPv4-only and IPv6-only hosts.
When testing connectivity scenarios for an application, additional test cases including a proxy are recommended.
As a proxy can convert between address families, all combinations shown in <xref target="scn_proxy"/>,
consisting of base scenarios towards the proxy and (assuming the same scenarios on both sides of the proxy) the respective base scenarios from the proxy to the server,
should be considered for testing.</t>
        <table anchor="scn_proxy">
          <name>Base scenario combinations including a proxy to consider for IPv6 testing</name>
          <thead>
            <tr>
              <th align="left">Client</th>
              <th align="left">Proxy</th>
              <th align="left">Server</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Dual-stack</td>
              <td align="left">IPv4-only</td>
              <td align="left">Dual-stack</td>
            </tr>
            <tr>
              <td align="left">Dual-stack</td>
              <td align="left">IPv6-only-strict</td>
              <td align="left">Dual-stack</td>
            </tr>
            <tr>
              <td align="left">IPv4-only</td>
              <td align="left">Dual-stack</td>
              <td align="left">IPv4-only</td>
            </tr>
            <tr>
              <td align="left">IPv4-only</td>
              <td align="left">Dual-stack</td>
              <td align="left">IPv6-only-strict</td>
            </tr>
            <tr>
              <td align="left">IPv6-only with NAT64</td>
              <td align="left">IPv4-only</td>
              <td align="left">Dual-stack</td>
            </tr>
            <tr>
              <td align="left">IPv6-only-strict</td>
              <td align="left">Dual-stack</td>
              <td align="left">IPv4-only</td>
            </tr>
            <tr>
              <td align="left">IPv6-only-strict</td>
              <td align="left">Dual-stack</td>
              <td align="left">IPv6-only-strict</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="testing-name-resolution-issues">
        <name>Testing Name Resolution Issues</name>
        <t>As most applications use name resolution to bootstrap their connectivity,
it is necessary to consider name resolution aspects when testing IPv6 readiness.
While some name resolution issues only manifest in certain connectivity scenarios or can be mitigated by using Happy Eyeballs <xref target="RFC6555"/>/<xref target="RFC8305"/>,
others will just map to different connectivity scenarios.
In this section, we list name resolution issues to consider for testing.</t>
        <section anchor="missing-dns-records">
          <name>Missing DNS Records</name>
          <t>While a server endpoint is intended to support dual-stack connectivity,
the A or AAAA DNS records for the endpoint may be missing, e.g., due to misconfiguration or broken tooling,
or does not reach the client endpoint, e.g., because it got filtered out by a middle box or local resolver.
The same can happen for names discovered and resolved through mDNS <xref target="RFC6762"/>.</t>
          <t>While deployment and integration testing should try to test for this kind of broken connectivity,
this scenario is usually indistinguishable from an IPv4-only or an IPv6-only server endpoint,
and therefore already addressed by testing the base scenarios above.</t>
        </section>
        <section anchor="incorrect-dns-records">
          <name>Incorrect DNS Records</name>
          <t>Independent of the deployed server endpoint,
there may be an A and AAAA record either pointing somewhere else,
e.g., to an old or planned deployment.</t>
          <t>For either IPv4-only or IPv6-only-strict clients, this scenario should always fail.</t>
          <t>For Dual-stack clients, it should be tested whether they can use the working IPv4-only or IPv6-only connectivity scenario, either by using Happy Eyeballs <xref target="RFC6555"/>/<xref target="RFC8305"/> or trying the next resolved address candidate after timeout.
Especially for the latter, it is advisable to verify whether the connection delay is acceptable of the desired use-case.</t>
          <t>IPv6-only clients with NAT64 are only expected to work with broken AAAA records when deployed with
CLAT (should behave like Dual-stack as discussed in Section <xref target="scenarios"/>) or
local NAT64 address, e.g., as when implementing Happy Eyeballs v2 <xref target="RFC8305"/>.
IPv6-only clients with NAT64 that rely on DNS64 only are expected to fail as the presence of AAAA records prevents synthesis of DNS64 records.</t>
          <t>Testing with IPv4-Mapped IPv6 Addresses <xref target="RFC4291"/> in AAAA records is also recommended.
While this makes zero sense, it has been seen in the wild and should not confuse the client.</t>
        </section>
        <section anchor="dns-delegation-issues">
          <name>DNS delegation issues</name>
          <t>Integration testing for Cloud applications should verify that the necessary domain names are resolvable from IPv4-only or IPv6-only-strict DNS resolvers.
<xref target="I-D.draft-ietf-dnsop-3901bis"/> describes misconfigurations that may prevent this and should be prevented.</t>
        </section>
        <section anchor="testing-with-ip-literals">
          <name>Testing with IP literals</name>
          <t>Most name resolution libraries support IP literals, i.e., textual representations of IP addresses.
Applications should be tested to determine whether they work as expected with IPv4 literals and all IPv6 address representations described in <xref target="RFC4291"/>.</t>
          <t>If there is a use-case for link-local communication using IP literals, it should be tested whether the zone identifier can be entered as described in <xref target="RFC9844"/> and work as expected.</t>
        </section>
      </section>
      <section anchor="testing-with-partially-broken-connectivity-mtu-and-fragmentation-issues">
        <name>Testing with Partially Broken Connectivity, MTU, and Fragmentation Issues</name>
        <t>When multiple address families are available, network packets may traverse different paths depending on the address family.
Even when the same path is traversed, the path can exhibit distinct behaviors, e.g., dropping all or particular packets, especially in the presence of middle-boxes.
From the communication endpoints that are expected to be reachable using both address families,
some may only be reachable by one address family, while others may only be reachable by the other.
Testing applications against these scenarios can become a key enabler for users' acceptance of IPv6,
especially during a transition phase where partially broken connectivity is expected more frequently.</t>
        <t>In some cases, connectivity issues may only become apparent late in the communication process, for example, after a successful TCP handshake but before a TLS handshake succeeds.
In such scenarios, clients restricted to a single address family — such as IPv6-only-strict clients — may experience complete loss of connectivity in these scenarios,
while dual-stack clients often mask such failures by automatically falling back to another address family.</t>
        <t>In addition to partial blackholing, MTU issues may be limited to one address family or behave differently with respect to aspects like
MTU available, dropping of fragmented packets, and ICMP messages generated.
As only IPv4 supports on-path fragmentation, IPv6 is more dependent on working ICMP <em>packet too big</em> reporting.</t>
        <t>It is advisable to test for partial blackholing and MTU issues during deployment and integration testing by testing with IPv4-only and IPv6-only-strict clients to detect such blackholes.
In case these issues can occur outside the testers' circle of control, it is advisable to simulate this type of failure and ensure that the application's behavior supports the detection and analysis of these errors.</t>
      </section>
      <section anchor="testing-without-ipv4-loopback-addresses-1270008">
        <name>Testing without IPv4 Loopback Addresses (127.0.0.0/8)</name>
        <t>Some applications and services may assume the existence and reachability of the IPv4 loopback addresses (127.0.0.0/8) when binding to a socket or for communicating with other services on the same host.
For example, a web server may explicitly listen on a 127.0.0.0/8 by default.
For IPv6-only-strict scenarios, system administrators may choose to disable IPv4,
including loopback. In such cases, applications may fail to operate correctly. Applications expecting to bind to an IPv4 loopback address may fail to start when these addresses are unavailable
due to a bind failure.
Applications expecting these addresses to be available for inter-service communication will result in these services being unable to communicate properly.</t>
        <t>Because of this, when testing applications for the IPv6-only-strict scenario, it is recommended to test the application in an environment without IPv4 on the loopback interface.</t>
      </section>
      <section anchor="lifecycle-considerations">
        <name>Testing Lifecycle Function Considerations</name>
        <t>To cover the whole lifecycle of an application including installation, user interface,
management, and update, it is recommended to test that the lifecycle functions defined in <xref target="lifecycle-functions"/> are operational within the connectivity scenarios defined in <xref target="scn_combinations"/>.</t>
        <t>In particular, keep the following considerations in mind:</t>
        <ul spacing="normal">
          <li>
            <t>Installation: Installation may require communications with remote first-party services (e.g., activation/license server)
or remote third-party services (e.g., package repositories). In these scenarios, the installer acts as
the client, and the remote service acts as the server. In cases of remote third-party services, testing
all server scenarios in <xref target="scn_combinations"/> may not be feasible, and impact the client scenarios that
can be supported. For example, if a third-party service is IPv4-only, testing an IPv6-only-strict scenario will fail.</t>
          </li>
          <li>
            <t>User Interface: User interfaces can be incredibly complex with numerous contexts, views, API endpoints,
CLI commands, etc. When testing non-web-based user interfaces, it is recommended to focus on components
of the interface that involve communications with remote services, and those that handle network configuration parameters.
For example, a network configuration interface may only accept IPv4 address literals for certain parameters.
For testing web-based user interfaces, see <xref target="web-app-considerations"/>.</t>
          </li>
          <li>
            <t>Management: Depending on the application, management functions may be provided via the user interface.
However, the application may have additional management functions (e.g., SNMP, syslog, etc.) that should be tested.
As the source triggering application behavior is crucial for logging and auditing functionality,
addresses recorded need to be verified to be represented correctly. See Section <xref target="addr-as-data"/> about representation of addresses.</t>
          </li>
          <li>
            <t>Update: Depending on the application, update functions may be exercised during installation. However, the application
may have additional update functions (e.g., automatic updates, manual update mechanisms, etc.) that should be tested.</t>
          </li>
        </ul>
      </section>
      <section anchor="testing-complex-cloud-applications-and-applying-test-cases">
        <name>Testing Complex Cloud Applications and Applying Test Cases</name>
        <t>When testing complex applications, especially cloud applications, they typically involve many data flows.
An application or component may be considered as a server for some of these, while being a client in others.
Therefore, test cases need to cover each data flow in all relevant scenarios.</t>
        <t>As functional and integration tests are often defined as end-to-end test cases,
they often involve several components, e.g., micro-services, load-balancers, application gateways, logging, authentication, and authorization services, which use IP-based protocols between the components.
Therefore, an end-to-end test case breaks down to a series of flows between components, and for each of these flows,
we need to determine whether we need to apply the connectivity scenarios from <xref target="scn_combinations"/> to it,
or whether the connectivity scenarios are only controlled by the deployment of the application.</t>
        <t>For external flows, i.e., flows outside the developers' control, usually all base scenarios from <xref target="scenarios"/> need to be accounted for.
If one side of the flow is under administrative control, the number of scenario combinations can still be limited:
For example, a cloud software provider choosing to deploy Dual-stack endpoints can skip all non-Dual-stack cases on the respective side of the communication.
For internal flows, the relevant scenarios only depend on the applications' architecture, and only scenarios planned in the deployment need to be considered.
From a networking perspective, flows between components are typically independent. There is no need to run the Cartesian product of scenarios x communications as long as all relevant scenarios for a given flow are tested.</t>
        <t>In addition to the data flows, an implementation may include metadata about the data flow when communicating with backend systems, e.g., for logging or authorization purposes.
While the flows towards these backend systems themselves may be safe to ignore as outlined above,
the functional correctness of the backend systems for all kinds of IP address need to be verified as part of the test series.
Ignoring IP addresses as data in the testing may result in malfunctions, like always denying access over IPv6, or security issues, like not logging access from IPv6 clients.</t>
      </section>
      <section anchor="web-app-considerations">
        <name>Special considerations for Web-based Applications</name>
        <t>Web-based applications usually load resources from multiple parties, including CDNs and analytic tools, involving data flows to all these parties.
When facing the requirement to support IPv6-only-strict users, being unable to load some resources due to missing/defective IPv6 support at the respective parties can have effects from missing analytics insights or ad revenue to severe functional defects rendering the application unusable.
When testing such applications, it is not sufficient to only focus on the initial/main interactions,
but it is necessary to consider all resources and parties providing them.
As Web browsers load these resources dynamically and third-party resources may themselves may request resources from more parties, this kind of testing usually requires an instrumented Web browser,
e.g., using <xref target="Selenium"/>.</t>
      </section>
      <section anchor="addr-as-data">
        <name>Considerations for Addresses as Data</name>
        <t>When applications process IP addresses as data, e.g., as part of logging or management functionality,
this functionality needs to work for all possible address families and representations.</t>
        <t>One challenge to consider is that the textual representation of IPv4 and IPv6 addresses are not canonical.
It allows several valid textual representations for the same address, which makes direct string comparison and arithmetic operations on addresses error-prone and slow.
For example, the IPv6 address <tt>2001:db8::1</tt> can be written as <tt>2001:db8:0:0:0:0:0:1</tt>, <tt>2001:0db8::0.0.0.1</tt>, or in several other forms.</t>
        <t>While custom logic to check, parse and process addresses is often error-prone and should be validated thoroughly,
modern environments and frameworks usually provide data structures that encapsulate the canonical binary representation and include methods for parsing the various textual representations, comparing addresses, performing subnet operations, and rendering addresses in a consistent format.</t>
        <t>For situations where textual representation of IPv6 addresses is needed — such as in user interfaces, logging output, and text-based data formats like JSON, YAML, TOML, and XML — <xref target="RFC5952"/> provides recommendations on which of the valid textual representations should be used.
Applications should be tested whether they follow <xref target="RFC5952"/> when rendering IPv6 addresses in textual form,
as required by national regulations like <xref target="US-NIST.SP.500-267Ar1"/>,
while accepting all valid representations defined in <xref target="RFC4291"/>.</t>
      </section>
    </section>
    <section anchor="testing-strategies">
      <name>Testing Strategies</name>
      <t>Naïve IPv6 testing, based on end-to-end functional tests as outlined in <xref target="objectives"/>, would require running a set of functional tests in various connectivity scenarios.
In certain environments, setting up test cases for all scenarios can become forbiddingly expensive,
especially for complex cloud applications, application platforms, or when dealing with corporate IT environments.</t>
      <t>In this section, we give recommendations how to set up scenarios defined in <xref target="scenarios"/> and
present strategies to meet the relevant testing objective by modifying Dual-stack clients and servers to conclude the results for other scenario combinations,
e.g., by tracing whether the right address family is used.</t>
      <section anchor="ipv6-only-strict-clients">
        <name>IPv6-only-strict Clients</name>
        <t>This is the most natural way to test whether IPv6-only-strict clients behave correctly.
The client device is either placed in a network without IPv4 connectivity or the IPv4 stack is disabled on the device while it is in a Dual-stack network.
While most desktop operating systems allow disabling IPv4, mobile operating systems, such as Android and iOS, do not.
For mobiles operating systems, an IPv6-only-strict environment is needed.</t>
        <t>In both cases, it has to be ensured that there is no way to access IPv4-only resources.
In particular, fallback to NAT64 must be prevented by disabling CLAT <xref target="CLAT"/>,
making sure DNS resolution does not perform DNS64 address synthesis <xref target="RFC6147"/>
and blocking the well-known NAT64 prefix <xref target="RFC6052"/> for these clients.
In addition, VPN services including privacy services like <xref target="iCloud-Private-Relay"/> need to be disabled as they can provide connectivity towards the IPv4 Internet.</t>
        <t>A note on the applicability of disabling IPv4:
Before disabling IPv4 make sure the environment supports IPv6-only operation.
Many desktop virtualization environments become unusable because IPv4 is needed to access and manage the virtual machines.
Some corporate environments may render the machines unusable as they require IPv4 connectivity for sign-on.</t>
      </section>
      <section anchor="ipv6-only-servers">
        <name>IPv6-only Servers</name>
        <t>IPv6-only servers are a good option when setting up an IPv6-only-strict client environment is infeasible and
clients are know to only contact a single server or a small number of servers under the testers' control.
Even if setting up an IPv6-only-strict server environment is infeasible,
most testing is also achievable by setting up a dedicated DNS name only containing an AAAA record pointing to the IPv6 addresses of an otherwise Dual-stack server.</t>
      </section>
      <section anchor="client-based-tracing">
        <name>Client-based tracing</name>
        <t>If we can't limit the available address families, we can still trace and verify whether the address family desired for the scenario is used.</t>
        <t>Client-based tracing is especially useful when Dual-stack servers and clients are available and a conclusion for the IPv6-only-strict case is desired.
By using the clients' logging/tracing/debugging functionality, the tester can verify that the actual data flows happen over IPv6, which is preferred by most network abstractions. If the client allows changing the preference between IPv6 and IPv4, IPv4-only testing is also possible.</t>
        <t>The most relevant case for this strategy is testing Web applications.
By examining the Web browsers' performance log or using a plugin like <xref target="IPvFoo"/> that visualizes connectivity information, the tester can determine whether all resources are available using IPv6.</t>
      </section>
      <section anchor="server-based-tracing">
        <name>Server-based tracing</name>
        <t>Analogue to tracing on the client side, it is also possible to look at the protocols used on the server side.
While this is functionally equivalent for protocols where clients only communicate to a single server,
this approach is not feasible for Web-based applications where a client usually needs flows towards many servers, where client or network based tracing are the only feasible alternatives to testing with an IPv6-only-strict client.</t>
      </section>
      <section anchor="network-based-tracing">
        <name>Network-based tracing</name>
        <t>If the communication pattern of an application is known well enough, a packet tracer as <xref target="Wireshark"/> allows to verify that an application in a Dual-stack environment uses IPv6 for all of its flows.
If this can be verified, failures in IPv6-only-strict environments are unlikely.</t>
        <t>While this is the least invasive method of testing IPv6-only-strict scenarios in a Dual-stack setup, it is the most error-prone as it requires the tester to fully understand the network flows of the application and requires the skills to interpret the output of a packet tracer.</t>
      </section>
    </section>
    <section anchor="failures">
      <name>Common Sources of IPv6 Related Failures and Misbehavior</name>
      <t>In this section, we discuss special failure modes that can cause unexpected application behavior that is hard to debug.
While some of these cases can be automatically mitigated, especially through generalizing the concept of Happy Eyeballs <xref target="RFC8305"/>, others may not.
In cases that developers choose not to mitigate erroneous application behavior, users and operators should be supported in the resolution by exposing specific and detailed error or debug messages.</t>
      <section anchor="enable-ipv6-feature-gates">
        <name>Enable IPv6 Feature Gates</name>
        <t>Some applications completely ignore IPv6 unless explicitly configured to enable IPv6.
This adds another class of user or configuration errors, like deploying an application without enabled IPv6 support in an IPv6-only environment.
As these feature gates are often buried deeply in the documentation and are often vendor, product, or component specific, every component needs to be checked to determine whether IPv6 support needs extra configuration.</t>
      </section>
      <section anchor="ignore-management-and-control-interfaces">
        <name>Ignore Management and Control Interfaces</name>
        <t>Ignoring management and control interfaces when enabling and testing applications for IPv6-only operation turns out to be a common pattern.
As already discussed in <xref target="lifecycle-considerations"/>, special care should be taken to cover all of these flows and avoid setups that require dual-stack deployment.</t>
      </section>
      <section anchor="destination-address-selection-preference-and-address-filtering">
        <name>Destination Address Selection Preference and Address Filtering</name>
        <t>The destination address selection algorithm in <xref target="ADDR-SELECT"/> filters unavailable address families (Rule 1) and de-prioritizes non-matching address families (Rule 2)
and clearly prioritizes IPv6 GUA addresses over IPv4 addresses.
While most operating systems and some alternative resolver libraries, such as <xref target="C-ARES"/>, implement <xref target="ADDR-SELECT"/> or its predecessors <xref target="RFC6724"/>/<xref target="RFC3484"/> correctly,
there are a number of notable and widely used implementations that implement something else, causing anything from unexpected behavior to hard-to-debug errors.</t>
        <ul spacing="normal">
          <li>
            <t>Most JAVA runtimes do the opposite and prefer IPv4 destinations over IPv6.
To prefer IPv6 addresses over IPv4, one needs to set the system property <tt>java.net.preferIPv6Addresses=true</tt>.</t>
          </li>
          <li>
            <t>Some applications only use the first address candidate from the <tt>getaddrinfo()</tt> and fail if the connection attempt to that one fails.</t>
          </li>
          <li>
            <t>Applications composed of services built on different programming languages or runtimes may behave inconsistently with regard to choosing destination addresses.</t>
          </li>
          <li>
            <t>NGINX has its own user DNS resolver without address filtering; thus, adding a <em>AAAA</em> record to a backend can render that backend unusable.
After having resolved a <em>AAAA</em> record, it is trying to open an IPv6 socket, even when the IPv6 stack is disabled.
As socket creation failure is not expected, an internal server error is sent back to the client.</t>
          </li>
          <li>
            <t>Some resolvers ignore address families for which no default route exists or where the default-route is pointing to an unsupported/ignored device.
This becomes cumbersome especially in split-VPN use cases, e.g. when trying to contact IPv6-only endpoints via the VPN while having IPv4-only Internet connectivity.</t>
          </li>
        </ul>
      </section>
      <section anchor="listening-on-only-one-address-family">
        <name>Listening on only one Address Family</name>
        <t>Many tutorials and programmer facing documentation have still not been updated to cover listening on multiple address families to accept connections from both IPv6 and IPv4.
Listening code should be checked to determine whether it either opens distinct listening sockets for IPv6 as well as for IPv4 or configures IPv6 sockets also to bind to IPv4, e.g. by setting <tt>IPV6_V6ONLY</tt> socket option on Linux to zero.</t>
        <t>In deployments, always use tools like <tt>netstat</tt> or <tt>lsof</tt> to verify both address families are listened on if needed.</t>
      </section>
      <section anchor="input-validation-and-output-rendering">
        <name>Input Validation and Output Rendering</name>
        <t>While most libraries and application frameworks have decent IPv6 support,
there often is still application logic that prevents taking advantage of the IPv6 support by the underlying components.
Checking whether user input is a valid IPv4 address or rendering output under the assumption that an address is always an IPv4 address are typical examples for this class of limitations.</t>
      </section>
      <section anchor="connectivity-checks">
        <name>Connectivity Checks</name>
        <t>Some applications perform connectivity checks to determine whether Internet access is available by trying to connect to one or more well-known endpoints.
If the connectivity check endpoints differ from the actual endpoints used by the application, this approach can lead to incorrect conclusions -
especially in IPv6-only environments when connectivity checks are IPv4-only or in environments with strict network polices or split-tunnel VPNs.
Applications should prefer implementing appropriate error handling for connectivity issues than relying on connectivity pre-checks.</t>
      </section>
      <section anchor="misbehaving-middle-boxes">
        <name>Misbehaving Middle-Boxes</name>
        <t>In practice, many IPv6-related regressions uncovered during testing turn out to be caused by hidden components outside of the application developers' control.
Middle-Boxes, e.g., firewalls, virus scanners, and intrusion detection systems, can break end-to-end tests in surprising ways, like terminating TLS sessions over IPv6 with certain extensions in the <em>TLS client hello</em> while correctly passing the same flow over IPv4.</t>
      </section>
    </section>
    <section anchor="deployment-considerations">
      <name>Deployment Considerations</name>
      <t>Lab testing of applications for IPv6 compliance should always have the next step in mind: Deploying the application and providing the users with decent IPv6 support.
Therefore, end-to-end tests, especially of cloud applications, should also keep deployment steps, prerequisites, and risks in mind.
This section discusses some issues to keep in mind when planning and executing IPv6 testing.</t>
      <section anchor="operational-scope-software-lifecycle">
        <name>Operational Scope &amp; Software Lifecycle</name>
        <t>Depending on the application and deployment model, the timing of deploying IPv6 support may be in control of the users' organization, the developers' organization, or neither of them.
Based on this setup, certain combinations of IPv6-enabled clients, servers, and infrastructure in between may or may not be excluded from consideration.
Therefore, it may be necessary to add test cases for old software versions with known and already fixed bugs against newly IPv6-enabled servers.
If regressions and service disruptions cannot be ruled out by the tests, a per-user or per-customer tenant opt-in/opt-out/roll-back scheme for the IPv6 enablement should be considered.</t>
      </section>
      <section anchor="allow-deny-lists">
        <name>Allow &amp; Deny Lists</name>
        <t>Application-level IP allow and deny lists pose a special challenge for deploying IPv6 in a cloud application.
As users may already have IPv6 connectivity, adding IPv6 support to the server may cause clients to use IPv6 immediately.
Having no allow list entry for the users' IPv6 addresses results in service disruptions.
Happy Eyeballs as defined in <xref target="RFC8305"/> does not solve the problem as allow list checks usually take place after the transport connection has already been established.</t>
        <t>To mitigate allow or deny lists causing service disruptions when enabling IPv6, support to include IPv6 addresses in allow and deny lists needs to be enabled way before rolling out IPv6 on the transport and communicated towards the users.
To further limit the probability of service disruptions, generalizing Happy Eyeballs to re-try using IPv4 after certain error conditions should be evaluated.</t>
      </section>
      <section anchor="component-and-service-reuse">
        <name>Component and Service Reuse</name>
        <t>If components or cloud services can be reused in other products, special care needs to be taken when planning IPv6 deployment.
The interaction contracts between the reusing parties and the service need to be checked
whether IPv6 enablement of the services also affects the flows of these.
Additional end-to-end tests, including the reusing parties, are recommended.
This is often a recursive process.</t>
      </section>
      <section anchor="ownership-of-software-components">
        <name>Ownership of Software Components</name>
        <t>Sometimes IPv6 enablement requires touching components that are not actively maintained anymore.
Be prepared for this and plan extra time or budget for updating or replacing these components.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The testing procedures described in this document do not create any new security implications.
Some security-related issues that should be considered and ruled out by appropriate testing are discussed in <xref target="failures"/>.</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="ADDR-SELECT">
          <front>
            <title>Prioritizing known-local IPv6 ULAs through address selection policy</title>
            <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
              <organization>Energy Sciences Network</organization>
            </author>
            <author fullname="Tim Chown" initials="T." surname="Chown">
              <organization>Jisc</organization>
            </author>
            <author fullname="Jeremy Duncan" initials="J." surname="Duncan">
              <organization>Tachyon Dynamics</organization>
            </author>
            <date day="11" month="August" year="2025"/>
            <abstract>
              <t>   This document updates the default address selection algorithm for
   Internet Protocol Version 6 (IPv6), originally specified in RFC 6724,
   based on accumulated operational experience.  It introduces the
   concept of "known-local" Unique Local Address (ULA) prefixes within
   the fd00::/8 block and specifies that ULA-to-ULA communications using
   such prefixes should be preferred over both IPv4-to-IPv4 and GUA-to-
   GUA (Global Unicast Address) communications in local use scenarios.
   The document defines mechanisms for nodes to identify and incorporate
   known-local prefixes into their address selection policy tables.  It
   introduces a requirement to implement Rule 5.5 of RFC 6724 and
   reduces the default precedence for 6to4 addresses.  These updates
   enhance the supportability of typical deployment environments,
   including automatic and unmanaged configurations, and promote
   consistent IPv6-over-IPv4 precedence behavior for both ULA and GUA
   within local networks.  The document acknowledges that certain
   atypical deployment models may require explicit configuration to
   achieve intended operational outcomes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-6man-rfc6724-update-25"/>
        </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="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="RFC5952">
          <front>
            <title>A Recommendation for IPv6 Address Text Representation</title>
            <author fullname="S. Kawamura" initials="S." surname="Kawamura"/>
            <author fullname="M. Kawashima" initials="M." surname="Kawashima"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>As IPv6 deployment increases, there will be a dramatic increase in the need to use IPv6 addresses in text. While the IPv6 address architecture in Section 2.2 of RFC 4291 describes a flexible model for text representation of an IPv6 address, this flexibility has been causing problems for operators, system engineers, and users. This document defines a canonical textual representation format. It does not define a format for internal storage, such as within an application or database. It is expected that the canonical format will be followed by humans and systems when representing IPv6 addresses as text, but all implementations must accept and be able to handle any legitimate RFC 4291 format. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5952"/>
          <seriesInfo name="DOI" value="10.17487/RFC5952"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.draft-ietf-v6ops-rfc7084bis">
          <front>
            <title>Basic Requirements for IPv6 Customer Edge Routers</title>
            <author fullname="Gábor Lencse" initials="G." surname="Lencse">
              <organization>Széchenyi István University</organization>
            </author>
            <author fullname="Jordi Palet Martinez" initials="J. P." surname="Martinez">
              <organization>The IPv6 Company</organization>
            </author>
            <author fullname="Ben Patton" initials="B." surname="Patton">
              <organization>University of New Hampshire, Interoperability Lab (UNH-IOL)</organization>
            </author>
            <author fullname="Timothy Winters" initials="T." surname="Winters">
              <organization>QA Cafe</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document specifies requirements for an IPv6 Customer Edge (CE)
   router.  Specifically, the current version of this document focuses
   on the basic provisioning of an IPv6 CE router and the provisioning
   of IPv6 hosts attached to it.  The document obsoletes RFC 7084.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-rfc7084bis-06"/>
        </reference>
        <reference anchor="I-D.draft-ietf-v6ops-6mops">
          <front>
            <title>IPv6-mostly Networks: Deployment and Operations Considerations</title>
            <author fullname="Nick Buraglio" initials="N." surname="Buraglio">
              <organization>Energy Sciences Network</organization>
            </author>
            <author fullname="Ondřej Caletka" initials="O." surname="Caletka">
              <organization>RIPE NCC</organization>
            </author>
            <author fullname="Jen Linkova" initials="J." surname="Linkova">
              <organization>Google</organization>
            </author>
            <date day="12" month="August" year="2026"/>
            <abstract>
              <t>   This document discusses a deployment scenario called "an IPv6-mostly
   network", when IPv6-only and IPv4-enabled endpoints coexist on the
   same network (network segment, VLAN, SSID etc).  The proposed
   approach enables smooth and incremental transition from dual-stack to
   IPv6-only network by allowing IPv6-capable devices to remain
   IPv6-only while the network is seamlessly supplying IPv4 to those
   that require it.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-6mops-09"/>
        </reference>
        <reference anchor="I-D.draft-palet-v6ops-ipv6-only">
          <front>
            <title>IPv6-only and IPv6-Mostly Terminology Definitions</title>
            <author fullname="Jordi Palet Martinez" initials="J. P." surname="Martinez">
              <organization>The IPv6 Company</organization>
            </author>
            <date day="7" month="May" year="2026"/>
            <abstract>
              <t>   This document defines the terminology regarding the usage of
   expressions such as "IPv6-only" and "IPv6-Mostly", in order to avoid
   confusions when using them in IETF and other documents.  The goal is
   that the reference to "IPv6-only" describes the actual native
   functionality being used, not the actual protocol support.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-palet-v6ops-ipv6-only-14"/>
        </reference>
        <reference anchor="I-D.draft-ietf-dnsop-3901bis">
          <front>
            <title>Operational Guidelines for DNS Transport in Mixed IPv4/IPv6 Environments</title>
            <author fullname="Momoka Yamamoto" initials="M." surname="Yamamoto">
              <organization>WIDE Project</organization>
            </author>
            <author fullname="Tobias Fiebig" initials="T." surname="Fiebig">
              <organization>Max-Planck-Institut fuer Informatik</organization>
            </author>
            <date day="12" month="February" year="2026"/>
            <abstract>
              <t>   This document provides guidelines and documents Best Current Practice
   for operating authoritative DNS servers, recursive resolvers and stub
   resolvers in a mixed IPv4/IPv6 environment.  This document recommends
   that both authoritative DNS servers and recursive resolvers support
   IPv4 and IPv6.  It also provides guidance on how recursive DNS
   resolvers should select upstream DNS servers, including when
   IPv4-embedded IPv6 addresses are available.

   This document obsoletes RFC 3901.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dnsop-3901bis-17"/>
        </reference>
        <reference anchor="CLAT">
          <front>
            <title>464XLAT Customer-side Translator (CLAT): Node Behavior and Recommendations</title>
            <author fullname="Lorenzo Colitti" initials="L." surname="Colitti">
              <organization>Google</organization>
            </author>
            <author fullname="Jen Linkova" initials="J." surname="Linkova">
              <organization>Google</organization>
            </author>
            <author fullname="Tommy Jensen" initials="T." surname="Jensen">
              <organization>Cloudflare</organization>
            </author>
            <date day="5" month="March" year="2026"/>
            <abstract>
              <t>   464XLAT defines an architecture for providing IPv4 connectivity
   across an IPv6-only network.  The solution involves two functional
   elements: a provider-side translator (PLAT) and a customer-side
   translator (CLAT).  This document updates the 464XLAT specification
   (RFC6877) and Requirements for IPv6 Customer Edge Routers (RFC8585)
   by further defining CLAT node behavior and IPv6 Customer Edge Routers
   to support IPv4-as-a-Service by providing recommendations for node
   developers on enabling and disabling CLAT.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-claton-16"/>
        </reference>
        <reference anchor="RFC8504">
          <front>
            <title>IPv6 Node Requirements</title>
            <author fullname="T. Chown" initials="T." surname="Chown"/>
            <author fullname="J. Loughney" initials="J." surname="Loughney"/>
            <author fullname="T. Winters" initials="T." surname="Winters"/>
            <date month="January" year="2019"/>
            <abstract>
              <t>This document defines requirements for IPv6 nodes. It is expected that IPv6 will be deployed in a wide range of devices and situations. Specifying the requirements for IPv6 nodes allows IPv6 to function well and interoperate in a large number of situations and deployments.</t>
              <t>This document obsoletes RFC 6434, and in turn RFC 4294.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="220"/>
          <seriesInfo name="RFC" value="8504"/>
          <seriesInfo name="DOI" value="10.17487/RFC8504"/>
        </reference>
        <reference anchor="CN-CAC-2023" target="http://www.cac.gov.cn/2023-04/27/c_1684239012351367.htm">
          <front>
            <title>2023 Work Arrangement for Further Promoting Large-scale IPv6 Deployment and Application</title>
            <author>
              <organization/>
            </author>
            <date year="2023" month="April" day="27"/>
          </front>
        </reference>
        <reference anchor="US-OMB-M-21-07" target="https://www.whitehouse.gov/wp-content/uploads/2020/11/M-21-07.pdf">
          <front>
            <title>M-21-07 – Completing the Transition to Internet Protocol Version 6 (IPv6)</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="November" day="19"/>
          </front>
          <seriesInfo name="United States of America Office of Management and Budget" value="Memorandum for Heads of Executive Departments and Agencies"/>
        </reference>
        <reference anchor="DE-BIT-2020-14">
          <front>
            <title>Beschluss Nr. 2020/14 - Zukunftsfähige Netzinfrastrukturen auf Basis von funktionsfähigem IPv6</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="November" day="11"/>
          </front>
          <seriesInfo name="Konferenz der IT-Beauftragten der Ressorts" value=""/>
        </reference>
        <reference anchor="CZ-ENDv4" target="https://konecipv4.cz/">
          <front>
            <title>Czech Republic sets IPv4 end date</title>
            <author>
              <organization/>
            </author>
            <date year="2024" month="January" day="17"/>
          </front>
        </reference>
        <reference anchor="US-NIST.SP.500-267Ar1" target="https://nvlpubs.nist.gov/nistpubs/specialpublications/NIST.SP.500-267Ar1.pdf">
          <front>
            <title>NIST Special Publication 500-267 Revision 1 - NIST IPv6 Profile</title>
            <author>
              <organization/>
            </author>
            <date year="2020" month="November" day="23"/>
          </front>
        </reference>
        <reference anchor="iCloud-Private-Relay" target="https://developer.apple.com/videos/play/wwdc2021/10096/">
          <front>
            <title>Apple iCLoud Private Relay (WWDC2021)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IPvFoo" target="https://github.com/pmarks-net/ipvfoo">
          <front>
            <title>IPvFoo - a Chrome/Firefox extension that adds an icon to indicate whether the current page was fetched using IPv4 or IPv6.</title>
            <author initials="P." surname="Marks" fullname="Paul Marks">
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Wireshark" target="https://www.wireshark.org/">
          <front>
            <title>Wireshark packet tracer</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="C-ARES" target="https://c-ares.org/">
          <front>
            <title>C-ARES - a modern DNS (stub) resolver library, written in C</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="Selenium" target="https://www.selenium.dev/">
          <front>
            <title>Selenium WebDriver</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="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="RFC8656">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="T. Reddy" initials="T." role="editor" surname="Reddy"/>
            <author fullname="A. Johnston" initials="A." role="editor" surname="Johnston"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>If a host is located behind a NAT, it can be impossible for that host to communicate directly with other hosts (peers) in certain situations. In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called "Traversal Using Relays around NAT" (TURN), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address.</t>
              <t>The TURN protocol was designed to be used as part of the Interactive Connectivity Establishment (ICE) approach to NAT traversal, though it can also be used without ICE.</t>
              <t>This document obsoletes RFCs 5766 and 6156.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8656"/>
          <seriesInfo name="DOI" value="10.17487/RFC8656"/>
        </reference>
        <reference anchor="RFC5766">
          <front>
            <title>Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)</title>
            <author fullname="R. Mahy" initials="R." surname="Mahy"/>
            <author fullname="P. Matthews" initials="P." surname="Matthews"/>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <date month="April" year="2010"/>
            <abstract>
              <t>If a host is located behind a NAT, then in certain situations it can be impossible for that host to communicate directly with other hosts (peers). In these situations, it is necessary for the host to use the services of an intermediate node that acts as a communication relay. This specification defines a protocol, called TURN (Traversal Using Relays around NAT), that allows the host to control the operation of the relay and to exchange packets with its peers using the relay. TURN differs from some other relay control protocols in that it allows a client to communicate with multiple peers using a single relay address. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5766"/>
          <seriesInfo name="DOI" value="10.17487/RFC5766"/>
        </reference>
        <reference anchor="RFC6555">
          <front>
            <title>Happy Eyeballs: Success with Dual-Stack Hosts</title>
            <author fullname="D. Wing" initials="D." surname="Wing"/>
            <author fullname="A. Yourtchenko" initials="A." surname="Yourtchenko"/>
            <date month="April" year="2012"/>
            <abstract>
              <t>When a server's IPv4 path and protocol are working, but the server's IPv6 path and protocol are not working, a dual-stack client application experiences significant connection delay compared to an IPv4-only client. This is undesirable because it causes the dual- stack client to have a worse user experience. This document specifies requirements for algorithms that reduce this user-visible delay and provides an algorithm. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6555"/>
          <seriesInfo name="DOI" value="10.17487/RFC6555"/>
        </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="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="RFC9844">
          <front>
            <title>Entering IPv6 Zone Identifiers in User Interfaces</title>
            <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
            <author fullname="R. Hinden" initials="R." surname="Hinden"/>
            <date month="August" year="2025"/>
            <abstract>
              <t>This document describes how the zone identifier of an IPv6 scoped address, defined in the IPv6 Scoped Address Architecture specification (RFC 4007), should be entered into a user interface. This document obsoletes RFC 6874 and updates RFCs 4007, 7622, and 8089.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9844"/>
          <seriesInfo name="DOI" value="10.17487/RFC9844"/>
        </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="RFC6052">
          <front>
            <title>IPv6 Addressing of IPv4/IPv6 Translators</title>
            <author fullname="C. Bao" initials="C." surname="Bao"/>
            <author fullname="C. Huitema" initials="C." surname="Huitema"/>
            <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
            <author fullname="M. Boucadair" initials="M." surname="Boucadair"/>
            <author fullname="X. Li" initials="X." surname="Li"/>
            <date month="October" year="2010"/>
            <abstract>
              <t>This document discusses the algorithmic translation of an IPv6 address to a corresponding IPv4 address, and vice versa, using only statically configured information. It defines a well-known prefix for use in algorithmic translations, while allowing organizations to also use network-specific prefixes when appropriate. Algorithmic translation is used in IPv4/IPv6 translators, as well as other types of proxies and gateways (e.g., for DNS) used in IPv4/IPv6 scenarios. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6052"/>
          <seriesInfo name="DOI" value="10.17487/RFC6052"/>
        </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="RFC3484">
          <front>
            <title>Default Address Selection for Internet Protocol version 6 (IPv6)</title>
            <author fullname="R. Draves" initials="R." surname="Draves"/>
            <date month="February" year="2003"/>
            <abstract>
              <t>This document describes two algorithms, for source address selection and 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. All IPv6 nodes, including both hosts and routers, must implement default address selection as defined in this specification. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3484"/>
          <seriesInfo name="DOI" value="10.17487/RFC3484"/>
        </reference>
      </references>
    </references>
    <?line 565?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to
Holger Füßler,
Michael Richardson,
Tommy Jensen,
Nathan Sherrard,
Jeremy Duncan,
Brian E Carpenter,
Axel Schemberg,
Sulabh Soneji,
for the discussions, the input, and all contribution.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAPakjmoAA8V923LcyJnmPZ4iV4qYlrxVxUNTlJo7HpuiJDdtieSIVMue
jo5uFJBVBRMFlJEAqWpZEfMOu/c7F3O/L7BX6zeZJ9n/lCcApe6ejVjPbrhF
FJDHP//D9x9yOp0mdyfqy8S0aZV/n5Z1pU/UVpvErNOm/f4vXd1qc6KqOtkU
J+rbts4mytRN2+iFgX9t1/iP75K2aEv48MGNNm1RLdXpZlMWWdoWdWW+UOdX
d8fqutts4MMHSTqfNxo6fVBs7o6n6WYzbfmrB0leZ1W6hobyJl2000K3i+nd
cb0x0/670/3DxHTzdWEM9NFuN/DR+cubVwl0qpd1sz1R82yTFJvmRLVNZ9rD
/f2v4Ju00Sl0fbnRDY9OwbzVm7RKl3qtKxje/fJEUZ/Jrd7e101+kig1pTnQ
P8Kp0QOZc5Lc6arT+PayaFfd/ETR+O+XPIU9mVOrd80Jv2zqbgPjoxXzg3yQ
JGnXruoGWp/Ca0oturLkpbpaFWWx2ajrmboptNEl/V43y7QqfqTPT9T16ZW6
fkk/6HValCf0Txz8hr/+bUufzird9n+a8U+/NelmltXr4QB+ryv1uqhu67t0
pOvf1fWy1GNdL7qm2R58+dslPuamw19+u6Qvx/v8w7bU6rLTZanbVo90+64q
7nRjinar6oW60Pfq63S9Maui0eq8anVT4+LOYYbwxut0bqgNS5rvLr6enl++
Dkatbmvb22+Lupx11Wqm8244suewGldp29bV/49RzTfUVTSkpKqbNXR4R7R4
+uLF2+n1y9cvz27ghExfzIKjdbxOq2mzyI6fHh5Nu00ORydJimoRft/7hCkX
vnm6/+xoXpidrxyv4X/jXzcprF9I+3VVbkcayCtTb6ZffrV/IB2cvT4dDp7b
ycqUl/rtq7NnT/aP6PWL6dnp2fRw//BLprY2bZa6PVGrtt2c7O3d39/PsjSb
Leu7WVbt4XvT/aO9w6d72fcHx8+ODrHrwy+fHHx5/HS2apkuhcPhy+p93dyq
06ZJK2YaClZMveqadqUbddXU65qY4GvsdmoymDazwBd6U9Zb+gK5TsBJqAtc
f+4BhjM9fAoP311PL988n76ZHh5M958OZ2NkOvcr4CurujMaZ7V3v5lmwBWh
o70Oukxzg7Pc3zs42JOmZpt8Ec5LHqv/+Nf/rs7q9QZ2CqcAM1I3ME8gWRil
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

-->

</rfc>
