<?xml version="1.0" encoding="UTF-8"?>
<rfc version="3"
     submissionType="independent"
     docName="draft-montero-uto-01"
     category="info"
     ipr="trust200902">

  <front>
    <title abbrev="UTO">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>
        <email>nicolas.montero@usach.cl</email>
      </address>
    </author>

    <date day="28" month="December" year="2025"/>

    <workgroup>Network Working Group</workgroup>

    <keyword>IPv4</keyword>
    <keyword>IPv6</keyword>
    <keyword>Transition</keyword>
    <keyword>Gateway</keyword>
    <keyword>Translation</keyword>

    <abstract>
      <t>
        This document specifies Unified Transition Overlay (UTO), a gateway-based IPv4/IPv6 translation
        proxy that enables communication between IPv4-only and IPv6-only hosts without packet encapsulation,
        new protocol headers, or changes to end-host network stacks.
      </t>
      <t>
        UTO operates exclusively at transition gateways that translate packets between IPv4 and IPv6 and
        update transport-layer checksums to preserve TCP and UDP correctness. Incremental checksum update
        is supported to reduce processing overhead.
      </t>
      <t>
        The underlying network remains purely IPv4 or purely IPv6, allowing UTO to be incrementally deployed
        using existing routing and forwarding infrastructure.
      </t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" title="Introduction">
      <t>
        IPv4 and IPv6 continue to coexist at global scale. IPv4 is specified in <xref target="RFC0791"/>,
        and IPv6 is specified in <xref target="RFC8200"/>. Many environments remain single-stack at the edge
        (IPv4-only or IPv6-only), creating interoperability pressure between address families.
      </t>
      <t>
        Existing coexistence mechanisms often rely on translation and/or auxiliary behaviors such as DNS
        synthesis, including NAT64 (<xref target="RFC6146"/>) and 464XLAT (<xref target="RFC6877"/>).
        Operational complexity and transport correctness (checksums) remain central engineering concerns.
      </t>
      <t>
        UTO defines a simplified gateway-based translation proxy model: a transition gateway rewrites the
        IP header between IPv4 and IPv6 and updates transport-layer checksums to preserve end-to-end
        transport correctness.
      </t>
    </section>

    <section anchor="motivation" title="Motivation">
      <t>
        The continued coexistence of IPv4 and IPv6 has created operational environments in which many hosts
        are limited to a single IP version. IPv4-only enterprise networks and IPv6-only service deployments
        frequently require cross-version connectivity.
      </t>
      <t>
        UTO is motivated by reducing the amount of machinery required at the edge: no overlay header is
        introduced and no encapsulation is required. Instead, a gateway performs address-family translation
        and preserves transport integrity by explicitly updating TCP and UDP checksums.
      </t>
      <t>
        Goals of UTO include:
      </t>
      <ul spacing="normal">
        <li>Enable communication between IPv4-only and IPv6-only hosts.</li>
        <li>Avoid packet encapsulation and additional overlay headers.</li>
        <li>Preserve TCP/UDP correctness via checksum update.</li>
        <li>Allow incremental deployment using existing routing and forwarding.</li>
      </ul>
    </section>

    <section anchor="terminology" title="Terminology">
      <dl>
        <dt>UTO-Gateway (UGW)</dt>
        <dd>
          A device that performs IPv4/IPv6 translation at administrative boundaries and updates transport-layer
          checksums as required.
        </dd>

        <dt>Underlying Network</dt>
        <dd>
          A forwarding domain that uses a single IP version (IPv4-only or IPv6-only).
        </dd>

        <dt>Opposite-Version Traffic</dt>
        <dd>
          Traffic whose destination resides in the opposite IP address family relative to the source host.
        </dd>
      </dl>
    </section>

    <section anchor="arch" title="Architecture Overview">
      <t>
        UTO is deployed at domain boundaries using UTO-Gateways (UGWs). The underlying network forwards only
        native IPv4 or native IPv6 packets. The UGW translates packets between IPv4 and IPv6 and updates
        TCP/UDP checksums before forwarding.
      </t>
      <figure anchor="arch-fig" title="UTO High-Level Architecture">
        <artwork><![CDATA[
IPv4 Host ----> UGW (v4->v6 translation) ----> IPv6 Network ----> IPv6 Host
IPv6 Host ----> UGW (v6->v4 translation) ----> IPv4 Network ----> IPv4 Host
        ]]></artwork>
      </figure>
    </section>

    <section anchor="discovery" title="Gateway Discovery and Addressing">
      <t>
        UTO assumes that an endpoint discovers the appropriate gateway using standard mechanisms such as DNS
        resolution. DNS is used to locate the gateway (or gateway service) and does not require rewriting DNS
        records for destination addressing.
      </t>
      <t>
        Steering traffic to the UGW is deployment-specific and may be achieved through routing policy, anycast
        gateway addressing, or explicit administrative configuration.
      </t>
    </section>

    <section anchor="operation" title="Protocol Operation">
      <t>
        This section describes gateway behavior for IPv4-to-IPv6 and IPv6-to-IPv4 transitions. Native same-version
        traffic MUST NOT be modified by UTO.
      </t>

      <section anchor="flow-v4v6" title="IPv4-to-IPv6 Flow">
        <ol spacing="compact">
          <li>An IPv4-only host sends a native IPv4 packet.</li>
          <li>The UGW identifies opposite-version traffic by policy.</li>
          <li>The UGW translates the IPv4 header to an IPv6 header for the destination domain.</li>
          <li>The UGW updates TCP/UDP checksums as required by the address change.</li>
          <li>The IPv6 domain forwards the translated IPv6 packet to the IPv6 destination.</li>
        </ol>
      </section>

      <section anchor="flow-v6v4" title="IPv6-to-IPv4 Flow">
        <ol spacing="compact">
          <li>An IPv6-only host sends a native IPv6 packet.</li>
          <li>The UGW identifies opposite-version traffic by policy.</li>
          <li>The UGW translates the IPv6 header to an IPv4 header for the destination domain.</li>
          <li>The UGW updates TCP/UDP checksums as required by the address change.</li>
          <li>The IPv4 domain forwards the translated IPv4 packet to the IPv4 destination.</li>
        </ol>
      </section>
    </section>

    <section anchor="checksums" title="Transport-Layer Integrity and Checksum Handling">
      <t>
        TCP (<xref target="RFC0793"/>) and UDP (<xref target="RFC0768"/>) include a pseudo-header that incorporates
        source and destination IP addresses. When a UGW translates between IPv4 and IPv6, the transport checksum
        becomes invalid unless updated.
      </t>
      <t>
        A UGW MUST update transport-layer checksums for TCP and UDP prior to forwarding translated packets.
        Implementations SHOULD use incremental checksum adjustment where applicable, as described in
        <xref target="RFC1624"/>, to reduce processing overhead.
      </t>
      <t>
        For UDP, IPv6 requires a non-zero UDP checksum. When translating an IPv4 UDP packet with a zero checksum
        into IPv6, the UGW MUST compute and set a valid UDP checksum before forwarding.
      </t>
    </section>

    <section anchor="security" title="Security Considerations">
      <t>
        UTO does not alter IPv4 or IPv6 security properties, but the UGW becomes a critical policy enforcement point.
      </t>
      <ul spacing="normal">
        <li>UGWs MUST validate translated addresses against authorized prefixes or policy.</li>
        <li>Administrators SHOULD restrict which hosts can initiate cross-version traffic.</li>
        <li>Administrators SHOULD apply ingress filtering on UGW interfaces to reduce spoofing.</li>
        <li>UGWs SHOULD be monitored and protected as critical infrastructure components.</li>
      </ul>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>
        This document makes no request of IANA.
      </t>
    </section>

  </middle>

  <back>
    <references title="Normative References">

      <reference anchor="RFC0791" target="https://www.rfc-editor.org/rfc/rfc791">
        <front>
          <title>Internet Protocol</title>
          <author initials="J." surname="Postel"/>
          <date year="1981" month="September"/>
        </front>
        <seriesInfo name="STD" value="5"/>
        <seriesInfo name="RFC" value="791"/>
      </reference>

      <reference anchor="RFC0768" target="https://www.rfc-editor.org/rfc/rfc768">
        <front>
          <title>User Datagram Protocol</title>
          <author initials="J." surname="Postel"/>
          <date year="1980" month="August"/>
        </front>
        <seriesInfo name="STD" value="6"/>
        <seriesInfo name="RFC" value="768"/>
      </reference>

      <reference anchor="RFC0793" target="https://www.rfc-editor.org/rfc/rfc793">
        <front>
          <title>Transmission Control Protocol</title>
          <author initials="J." surname="Postel"/>
          <date year="1981" month="September"/>
        </front>
        <seriesInfo name="STD" value="7"/>
        <seriesInfo name="RFC" value="793"/>
      </reference>

      <reference anchor="RFC1624" target="https://www.rfc-editor.org/rfc/rfc1624">
        <front>
          <title>Computation of the Internet Checksum via Incremental Update</title>
          <author initials="R." surname="Rijsinghani"/>
          <date year="1994" month="May"/>
        </front>
        <seriesInfo name="RFC" value="1624"/>
      </reference>

      <reference anchor="RFC8200" target="https://www.rfc-editor.org/rfc/rfc8200">
        <front>
          <title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author initials="S." surname="Deering"/>
          <author initials="R." surname="Hinden"/>
          <date year="2017" month="July"/>
        </front>
        <seriesInfo name="STD" value="86"/>
        <seriesInfo name="RFC" value="8200"/>
      </reference>

    </references>

    <references title="Informative References">

      <reference anchor="RFC6146" target="https://www.rfc-editor.org/rfc/rfc6146">
        <front>
          <title>Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers</title>
          <author initials="M." surname="Bagnulo"/>
          <author initials="P." surname="Matthews"/>
          <author initials="I." surname="van Beijnum"/>
          <date year="2011" month="April"/>
        </front>
        <seriesInfo name="RFC" value="6146"/>
      </reference>

      <reference anchor="RFC6877" target="https://www.rfc-editor.org/rfc/rfc6877">
        <front>
          <title>464XLAT: Combination of Stateful and Stateless Translation</title>
          <author initials="M." surname="Mawatari"/>
          <author initials="M." surname="Kawashima"/>
          <author initials="C." surname="Byrne"/>
          <date year="2013" month="April"/>
        </front>
        <seriesInfo name="RFC" value="6877"/>
      </reference>

    </references>

    <section anchor="acks" 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>
