<?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-03" 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-03"/>
    <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="September" day="29"/>
    <area>Operations and Management</area>
    <workgroup>v6ops</workgroup>
    <keyword>IPv6</keyword>
    <keyword>Applications</keyword>
    <keyword>Testing</keyword>
    <abstract>
      <?line 101?>

<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 108?>

<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="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="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.</t>
        <t>We have no special scenarios for 464XLAT <xref target="RFC6877"/> and IPv6-Mostly <xref target="V6MOPS"/>, 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).
MTU issues, as described in <xref target="V6MOPS"/> Section 7.4.5, that may arise form these scenarios are covered in <xref target="partially-broken"/>.
We also do not separate IPv4-only cases with and without NAT, despite the fact that applications exist that assume NAT for IPv4 and do not work without, as these issues are also revealed by the IPv6 scenarios.</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 such 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="RFC10001"/> 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="partially-broken">
        <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"/>.
Testing the normal operations of the application is encompassed by the user interface lifecycle function.</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 an application's user interface(s), the normal operations of the application should be verified.
Additionally, when testing non-web-based user interfaces, it is recommended to test 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, as long as endpoints are not signaled inside of the protocol.
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 (at the time of writing, since at least version 1.6 and unchanged in 1.31) 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. <xref target="NGINX.trac-552"/></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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4291.xml">
          <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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5952.xml">
          <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="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="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="V6MOPS">
          <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="10" month="September" 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-10"/>
        </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="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="NGINX.trac-552" target="https://trac.nginx.org/nginx/ticket/552">
          <front>
            <title>Nginx doesn't honor net.ipv6.conf.all.disable_ipv6</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </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="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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8305.xml">
          <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="RFC10001">
          <front>
            <title>Operational Guidelines for DNS Transport in Mixed IPv4/IPv6 Environments</title>
            <author fullname="Momoka" surname="Momoka"/>
            <author fullname="T. Fiebig" initials="T." surname="Fiebig"/>
            <date month="August" 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.</t>
              <t>This document obsoletes RFC 3901.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="91"/>
          <seriesInfo name="RFC" value="10001"/>
          <seriesInfo name="DOI" value="10.17487/RFC10001"/>
        </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" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6724.xml">
          <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 572?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Thanks to
Andrew Yourtchenko,
Axel Schemberg,
Brian E Carpenter,
Holger Füßler,
Jeremy Duncan,
Jordi Palet,
Michael Perscheid,
Michael Richardson,
Nathan Sherrard,
Sulabh Soneji,
and
Tommy Jensen
for the discussions, the input, and all contribution.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAFKgu2oAA8V923LcRprmPZ4iR4oYS71VxYMpSuZOTzdFSW12SxRHpKzu
cThsFJBVhSYKqEYCpMpsRcw7zN7vXuz9vsBebb/JPMn+pzwBKNmejdiemRiL
KCCPf/6H7z/kdDpNbk/Ul4lp0yr/Pi3rSp+orTaJWadN+/1furrV5kRVdbIp
TtS3bZ1NlKmbttELA//arvEf3yVt0Zbw4YNrbdqiWqrTzaYssrQt6sp8oc4v
b4/VVbfZwIcPknQ+bzR0+qDY3B5P081m2vJXD5K8zqp0DQ3lTbpop4VuF9Pb
43pjpv13p/sw5m6+LoyBPtrtBj46f3n9KoFO9bJutidqnm2SYtOcqLbpTHu4
v//V/mGSNjqFrt9udMOjUzBv9Sat0qVe6wqGd7c8UdRncqO3d3WTnyRKTWkO
9I9wavRA5pwkt7rqNL69LNpVNz9RNP67JU9hT+bU6l1zwi+butvA+GjF/CAf
JEnatau6gdan8JpSi64seakuV0VZbDbqaqauC210Sb/XzTKtih/p8xN1dXqp
rl7SD3qdFuUJ/RMHv+Gvf9vSp7NKt/2fZvzTb026mWX1ejiA3+tKvS6qm/o2
Hen6d3W9LPVY14uuabYHX/52iY+56fCX3y7py/E+/7AttXrb6bLUbatHun1f
Fbe6MUW7VfVCXeg79XW63phV0Wh1XrW6qXFx5zBDeON1OjfUhiXN9xdfT8/f
vg5GrW5q29tvi7qcddVqpvNuOLLnsBqXadvW1f+PUc031FU0pKSqmzV0eEu0
ePrixbvp1cvXL8+u4YRMX8yCo3W8Tqtps8iOnx4eTbtNDkcnSYpqEX7/7tXZ
0/1nR/PCDD5nKobv5QV4G+l2+vbi9Z/ClzcprFtI83VVbuHlb47fvL282tHs
8RqPoFJnr0+HA+dXsjLlZT67mJ6dnk0P9w+/ZPJq02ap2xO1atvNyd7e3d3d
LEuz2bK+nWXVHr433T/aO3y6l31/cPzs6PDLr/YPDr98cvDl8dPZqmVCFJaG
L6sPdXOjTpsmrZhLKFgi9apr2pVu1GVTr2vieq+x26nJYL7M817oTVlv6Qtk
MwHroC5wwbkHGM708Ck8fH81ffvm+fTN9PBguv90OBsj07lbASNZ1Z3ROKu9
u800AzYIHe110GWaG5zl/t7BwZ40Ndvki3Be8lj9x7/9uzqr1xvYIpwCzEhd
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

-->

</rfc>
