<?xml version="1.0" encoding="UTF-8"?>
<rfc version="3"
     docName="draft-montero-uto-02"
     category="info"
     ipr="trust200902"
     consensus="true"
     xmlns:xi="http://www.w3.org/2001/XInclude">

  <front>
    <title>Unified Transition Overlay (UTO): A Gateway-Based IPv4/IPv6 Translation Proxy</title>

    <author fullname="Nicolas Montero Torrealba" initials="N." surname="Montero">
      <organization>Independent Researcher</organization>
      <address>
        <postal>
          <city>Santiago</city>
          <country>Chile</country>
        </postal>
        <email>nicolas.montero@usach.cl</email>
      </address>
    </author>

    <date day="30" month="December" year="2025"/>

    <keyword>IPv4</keyword>
    <keyword>IPv6</keyword>
    <keyword>Transition</keyword>
    <keyword>Gateway</keyword>
    <keyword>Translation</keyword>

    <abstract>
      <t>
        Unified Transition Overlay (UTO) is a gateway-based IPv4/IPv6 translation proxy that enables cross-version
        connectivity without requiring encapsulation, new protocol headers, or modifications to end-host stacks. UTO
        operates exclusively at transition gateways, which translate packet headers between IPv4 and IPv6 and update
        transport-layer checksums to preserve end-to-end correctness. By confining translation logic to gateways, UTO
        allows the underlying network to remain purely IPv4 or purely IPv6, facilitating incremental deployment within
        existing routing and forwarding infrastructures. UTO also supports incremental checksum update to reduce
        processing overhead for TCP and UDP traffic.
      </t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" numbered="true" title="Introduction">
      <t>
        The coexistence of IPv4 <xref target="RFC0791"/> and IPv6 <xref target="RFC8200"/> continues to introduce
        operational challenges, particularly in environments where edge networks remain single-stack due to legacy
        constraints, device limitations, or administrative policy. While IPv6 deployment has grown, many enterprise and
        service-provider environments still rely on IPv4-only cores or provide IPv6-only access networks with limited
        IPv4 reachability. As a result, hosts and services frequently need to communicate across IP versions.
      </t>
      <t>
        Existing transition mechanisms such as NAT64 <xref target="RFC6146"/> and 464XLAT <xref target="RFC6877"/> rely on
        specific address synthesis or client-side translation components. UTO proposes a simplified model in which a
        dedicated gateway device performs IP header translation (IPv4↔IPv6) and updates transport-layer checksums (TCP/UDP)
        to preserve correctness end-to-end. UTO does not introduce new overlay headers or encapsulation formats, and it
        requires no changes to host protocol stacks.
      </t>
    </section>

    <section anchor="motivation" numbered="true" title="Motivation">
      <t>
        The IPv4/IPv6 transition remains complicated by heterogeneous deployments and uneven adoption. A common scenario is
        an access or edge domain that is IPv6-only while upstream services or cores remain IPv4-only, or the reverse. In
        such cases, cross-version reachability is necessary for legacy applications and services.
      </t>
      <t>
        UTO aims to reduce the operational machinery at the network edge by avoiding encapsulation and additional headers.
        The gateway translates between address families and preserves transport-layer integrity by updating TCP/UDP checksums
        when IP addresses change.
      </t>

      <t>
        The goals of UTO are:
      </t>
      <ul>
        <li>Enable communication between IPv4-only and IPv6-only endpoints.</li>
        <li>Avoid encapsulation and additional overlay headers.</li>
        <li>Preserve TCP/UDP correctness via checksum update.</li>
        <li>Permit incremental deployment using existing routing and forwarding infrastructure.</li>
      </ul>
    </section>

    <section anchor="terminology" numbered="true" title="Terminology">
      <t>
        This document uses the following terms:
      </t>
      <dl>
        <dt>UTO-Gateway (UGW)</dt>
        <dd>
          <t>
            A device that performs IPv4/IPv6 translation at an administrative boundary and updates transport-layer checksums.
          </t>
        </dd>

        <dt>Underlying Network</dt>
        <dd>
          <t>
            A domain that forwards only native IPv4 or only native IPv6 packets.
          </t>
        </dd>

        <dt>Opposite-Version Traffic</dt>
        <dd>
          <t>
            Traffic destined to an IP version not supported by the originating host stack (IPv4-to-IPv6 or IPv6-to-IPv4).
          </t>
        </dd>
      </dl>
    </section>

    <section anchor="arch" numbered="true" title="Architecture Overview">
      <t>
        UTO is deployed at the boundary of an administrative domain in which hosts may be single-stack. UTO-Gateways (UGWs)
        provide translation services to allow endpoints to communicate across IP versions. The underlying network remains
        single-stack and performs ordinary forwarding.
      </t>
      <t>
        The UGW performs IP header translation (IPv4↔IPv6) and updates transport-layer checksums for TCP and UDP packets to
        ensure end-to-end correctness.
      </t>
      <t>
        The following figure illustrates a conceptual flow:
      </t>
      <figure>
        <artwork><![CDATA[
   IPv4 Host          UGW (v4->v6)          IPv6 Network          IPv6 Host
      |------------------>|--------------------->|--------------------->|
      |     IPv4 pkt      |     IPv6 pkt         |     IPv6 pkt         |
]]></artwork>
      </figure>
    </section>

    <section anchor="discovery" numbered="true" title="Gateway Discovery and Addressing">
      <t>
        Endpoint discovery of a UTO-Gateway is deployment-specific and may use standard mechanisms such as DNS to locate
        the gateway or service. In a typical deployment, the endpoint obtains a <em>synthetic address</em> in its native
        address family (for example, a synthetic IPv4 address for an IPv4-only host). This synthetic address is used to
        steer traffic toward the UTO-Gateway.
      </t>
      <t>
        The UTO-Gateway maintains the mapping between the synthetic address and the real opposite-family destination address
        and performs translation accordingly. Traffic steering toward the UGW can be achieved via routing policy, anycast
        gateway addressing, or administrative configuration.
      </t>
    </section>

    <section anchor="operation" numbered="true" title="Protocol Operation">
      <section anchor="v4v6" numbered="true" title="IPv4-to-IPv6 Flow">
        <t>
          When an IPv4-only host needs to reach an IPv6-only destination, the UGW performs translation as follows:
        </t>
        <ol>
          <li>Receive an IPv4 packet destined for opposite-version traffic.</li>
          <li>Translate the IPv4 header to an IPv6 header, mapping addresses as configured.</li>
          <li>Update transport-layer checksums for TCP/UDP based on address changes.</li>
          <li>Forward the resulting native IPv6 packet into the IPv6 underlying network.</li>
          <li>Do not modify same-version traffic.</li>
        </ol>
      </section>

      <section anchor="v6v4" numbered="true" title="IPv6-to-IPv4 Flow">
        <t>
          When an IPv6-only host needs to reach an IPv4-only destination, the UGW performs translation as follows:
        </t>
        <ol>
          <li>Receive an IPv6 packet destined for opposite-version traffic.</li>
          <li>Translate the IPv6 header to an IPv4 header, mapping addresses as configured.</li>
          <li>Update transport-layer checksums for TCP/UDP based on address changes.</li>
          <li>Forward the resulting native IPv4 packet into the IPv4 underlying network.</li>
          <li>Do not modify same-version traffic.</li>
        </ol>
      </section>
    </section>

    <section anchor="checksum" numbered="true" title="Transport-Layer Integrity and Checksum Handling">
      <t>
        TCP <xref target="RFC0793"/> and UDP <xref target="RFC0768"/> checksums include a pseudo-header that covers source and
        destination IP addresses. When translating between IPv4 and IPv6, the checksum becomes invalid unless updated.
      </t>
      <t>
        The UGW MUST update TCP and UDP checksums before forwarding translated packets. The UGW SHOULD use incremental
        checksum adjustment <xref target="RFC1624"/> to reduce processing overhead.
      </t>
      <t>
        For UDP, IPv6 does not permit a checksum value of zero. If an IPv4 UDP packet has a zero checksum and is translated
        to IPv6, the UGW MUST compute and set a valid checksum.
      </t>
    </section>

    <section anchor="security" numbered="true" title="Security Considerations">
      <t>
        UTO does not change the fundamental security properties of IPv4 or IPv6. However, the UTO-Gateway is a critical
        enforcement point and MUST be protected and monitored as infrastructure-critical equipment.
      </t>
      <t>
        UTO-Gateways MUST validate translated addresses against authorized prefixes and policy. Administrators SHOULD restrict
        which hosts are permitted to initiate opposite-version traffic, and SHOULD apply ingress filtering to reduce spoofing.
      </t>
    </section>

    <section anchor="iana" numbered="true" title="IANA Considerations">
      <t>
        This document makes no requests of IANA.
      </t>
    </section>

  </middle>

  <back>

    <references anchor="normative" title="Normative References">
      <reference anchor="RFC0791" target="https://www.rfc-editor.org/info/rfc791">
        <front>
          <title>Internet Protocol</title>
          <author fullname="J. Postel" initials="J." surname="Postel"/>
          <date month="September" year="1981"/>
        </front>
        <seriesInfo name="RFC" value="791"/>
      </reference>

      <reference anchor="RFC0768" target="https://www.rfc-editor.org/info/rfc768">
        <front>
          <title>User Datagram Protocol</title>
          <author fullname="J. Postel" initials="J." surname="Postel"/>
          <date month="August" year="1980"/>
        </front>
        <seriesInfo name="RFC" value="768"/>
      </reference>

      <reference anchor="RFC0793" target="https://www.rfc-editor.org/info/rfc793">
        <front>
          <title>Transmission Control Protocol</title>
          <author fullname="J. Postel" initials="J." surname="Postel"/>
          <date month="September" year="1981"/>
        </front>
        <seriesInfo name="RFC" value="793"/>
      </reference>

      <reference anchor="RFC1624" target="https://www.rfc-editor.org/info/rfc1624">
        <front>
          <title>Computation of the Internet Checksum via Incremental Update</title>
          <author fullname="R. Braden" initials="R." surname="Braden"/>
          <date month="May" year="1994"/>
        </front>
        <seriesInfo name="RFC" value="1624"/>
      </reference>

      <reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200">
        <front>
          <title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="July" year="2017"/>
        </front>
        <seriesInfo name="RFC" value="8200"/>
      </reference>
    </references>

    <references anchor="informative" title="Informative References">
      <reference anchor="RFC6146" target="https://www.rfc-editor.org/info/rfc6146">
        <front>
          <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
          <author fullname="M. Bagnulo" initials="M." surname="Bagnulo"/>
          <author fullname="P. Matthews" initials="P." surname="Matthews"/>
          <author fullname="I. van Beijnum" initials="I." surname="van Beijnum"/>
          <date month="April" year="2011"/>
        </front>
        <seriesInfo name="RFC" value="6146"/>
      </reference>

      <reference anchor="RFC6877" target="https://www.rfc-editor.org/info/rfc6877">
        <front>
          <title>464XLAT: Combination of Stateless and Stateful 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"/>
        </front>
        <seriesInfo name="RFC" value="6877"/>
      </reference>
    </references>

    <section anchor="ack" title="Acknowledgments">
      <t>
        The author would like to thank members of the operational community for feedback on gateway-based transition
        behavior and transport-layer correctness considerations.
      </t>
    </section>
  </back>

</rfc>
