<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
  <!ENTITY nbsp "&#160;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude"
     docName="draft-montero-uto-03"
     ipr="trust200902"
     category="info"
     submissionType="independent"
     version="3"
     xml:lang="en">

  <front>
    <title abbrev="Unified Transition Overlay">Unified Transition Overlay (UTO): A Stateless Cross-Version Transition Mechanism for IPv4/IPv6</title>
    <seriesInfo name="Internet-Draft" value="draft-montero-uto-03"/>

    <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 year="2026" month="June" day="14"/>

    <area>Internet</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>IPv6</keyword>
    <keyword>IPv4</keyword>
    <keyword>transition</keyword>
    <keyword>encapsulation</keyword>
    <keyword>translation</keyword>

    <abstract>
      <t>This document specifies Unified Transition Overlay (UTO), a stateless
      encapsulation-plus-translation mechanism that enables bidirectional
      communication between IPv4-only and IPv6-only hosts across a transit
      network whose forwarding plane uses the opposite IP version. UTO carries
      the native source and destination addresses of the communicating hosts in
      a compact, variable-length overlay header. The original packet is tunneled
      between UTO-Gateways (UGWs) across the transit network and is converted to
      the destination's address family by a single stateless header translation
      performed only at the egress UGW. UTO requires no DNS64, no stateful
      per-flow translation in the common IPv4-to-IPv6 direction, and no changes
      to backbone routers or end-host stacks. The transit network forwards only
      pure IPv4 or pure IPv6 packets.</t>
    </abstract>
  </front>

  <middle>

    <section anchor="intro" numbered="true">
      <name>Introduction</name>
      <t>The transition from IPv4 to IPv6 has progressed far slower than
      originally expected. Although IPv6 was standardized in
      <xref target="RFC2460"/> (now <xref target="RFC8200"/>) and provides an
      address space sufficient for global-scale expansion, IPv4 continues to
      carry a significant portion of Internet traffic and to underpin a large
      installed base of infrastructure.</t>

      <t>Existing coexistence mechanisms such as stateful NAT64
      <xref target="RFC6146"/>, 464XLAT <xref target="RFC6877"/>, DS-Lite,
      MAP-T <xref target="RFC7599"/>, MAP-E, and various tunneling technologies
      provide interoperability between the two protocol families. Each makes a
      different trade-off among per-flow state, DNS rewriting, multi-stage
      encapsulation, customer-premises-equipment complexity, and operator
      visibility.</t>

      <t>Unified Transition Overlay (UTO) targets a specific niche in that
      design space: it preserves the sender's original packet across an
      opposite-version transit network by tunneling it between gateways, and it
      performs exactly one stateless, algorithmic header translation
      (<xref target="RFC7915"/>) at the egress gateway so that the final host
      receives a packet in its own address family. The native source and
      destination addresses needed to perform that translation without per-flow
      state are carried explicitly in the UTO header rather than being derived
      from a state table or from DNS rewriting.</t>

      <t>UTO is honest about its scope. Unlike the -00 revision of this draft,
      this document does NOT claim to avoid translation entirely; cross-family
      delivery inherently requires translating the packet to the destination's
      address family at some point. What UTO avoids is (a) stateful per-flow
      translation in the IPv4-to-IPv6 direction, (b) DNS64-style record
      synthesis, and (c) translation anywhere other than the egress gateway. The
      genuine and unavoidable limits of stateless operation, in particular the
      IPv6-to-IPv4 source-representation problem, are stated explicitly in
      <xref target="limitations"/>.</t>
    </section>

    <section anchor="motivation" numbered="true">
      <name>Motivation</name>
      <t>The continued coexistence of IPv4 and IPv6 has produced environments in
      which many hosts are limited to a single IP version. IPv4 depletion has
      pushed cloud providers and IoT systems toward IPv6-only deployments, while
      numerous enterprise networks still rely heavily on IPv4 because of legacy
      applications, security policy, or hardware constraints.</t>

      <t>Translation-based models such as NAT64 are functional but rely on
      per-flow state and, when paired with DNS64, on rewriting DNS responses.
      Such designs can reduce transparency, complicate troubleshooting, and add
      latency. UTO reduces these costs for the common direction (IPv4 host
      reaching an IPv6-only service) to a single stateless transform at the
      edge, while being explicit that the reverse direction may still require
      state, exactly as every other transition technology does.</t>

      <t>The goals of UTO are:</t>
      <ul>
        <li>Preserve the sender's original packet across the transit network.</li>
        <li>Enable bidirectional communication between IPv4-only and IPv6-only hosts.</li>
        <li>Keep the transit forwarding plane purely IPv4 or purely IPv6.</li>
        <li>Avoid stateful per-flow translation and DNS rewriting in the IPv4-to-IPv6 direction.</li>
        <li>Support incremental deployment at administrative boundaries without global coordination.</li>
      </ul>
    </section>

    <section anchor="terminology" numbered="true">
      <name>Terminology</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in BCP&nbsp;14
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>

      <dl>
        <dt>UTO-Gateway (UGW):</dt>
        <dd>A device that, at the ingress, encapsulates the native packet and
        prepends the UTO header, and, at the egress, removes the UTO header and
        performs the single stateless header translation that produces the
        deliverable native packet.</dd>

        <dt>Destination Native Address (DNA):</dt>
        <dd>The destination host's address in its own address family, carried in
        the UTO header. The egress UGW writes the DNA into the destination field
        of the delivered packet.</dd>

        <dt>Source Native Address (SNA):</dt>
        <dd>A representation of the source host in the destination's address
        family, carried in the UTO header, chosen so that the destination host
        can address replies back toward the source. See
        <xref target="addr-mapping"/> for how the SNA is derived and
        <xref target="limitations"/> for the constraints in the IPv6-to-IPv4
        direction.</dd>

        <dt>Transit Network:</dt>
        <dd>The forwarding plane over which the encapsulated packet travels
        between UGWs. It is IPv4-only or IPv6-only and is unaware of UTO.</dd>

        <dt>Native Packet:</dt>
        <dd>The sender's original IPv4 or IPv6 packet before encapsulation.</dd>

        <dt>UTO Header:</dt>
        <dd>A variable-length transition header (minimum 8 bytes plus the encoded
        DNA and SNA) inserted between the outer transit header and the native
        packet.</dd>

        <dt>Endpoint:</dt>
        <dd>A host that supports only one IP version.</dd>
      </dl>
    </section>

    <section anchor="arch" numbered="true">
      <name>Architecture Overview</name>
      <t>UTO operates only at the boundaries of transition domains. At the
      ingress UGW the native packet is left intact and is encapsulated, together
      with a UTO header carrying the DNA and SNA, inside an outer header of the
      transit network's address family. The outer header addresses the egress
      UGW, not the final host; the transit network therefore forwards an
      ordinary packet of its own version and is unaware of UTO. At the egress
      UGW the outer header and the UTO header are removed and a single stateless
      header translation (<xref target="RFC7915"/>) converts the preserved
      native packet into the destination's address family, using the DNA and SNA
      as the new destination and source.</t>

      <artwork type="ascii-art" align="left"><![CDATA[
IPv4 Host --> UGW --[ IPv6 transit ]--> UGW --> IPv6 Host
              (encap + UTO)              (decap + translate)

IPv6 Host --> UGW --[ IPv4 transit ]--> UGW --> IPv4 Host
              (encap + UTO)              (decap + translate)

                  Figure 1: UTO Architecture
]]></artwork>

      <t>Same-version traffic (IPv4-to-IPv4 or IPv6-to-IPv6) is never touched by
      UTO and is forwarded natively. Backbone routers, fabric switches, hardware
      ASIC pipelines, and middleboxes that operate on the outer header see only
      pure IPv4 or pure IPv6 packets.</t>
    </section>

    <section anchor="header" numbered="true">
      <name>UTO Header Format</name>
      <t>The UTO header is variable in length. A fixed 8-byte part is followed by
      the encoded DNA and then the encoded SNA. The HLen field carries the total
      header length so that intermediate code and the egress UGW can locate the
      native packet without parsing the address encodings.</t>

      <artwork type="ascii-art" align="left"><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vers  |  DAF  |  SAF  | Flags |     HLen      |   Reserved    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Checksum            |          Reserved (0)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Destination Native Address (DNA), variable             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|        Source Native Address (SNA), variable                  ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 2: UTO Header Layout
]]></artwork>

      <section anchor="fields" numbered="true">
        <name>Field Definitions</name>
        <dl>
          <dt>Vers (4 bits):</dt>
          <dd>UTO protocol version. This document defines Vers = 1 (0b0001). A
          UGW that receives an unsupported version MUST drop the packet.</dd>

          <dt>DAF (4 bits):</dt>
          <dd>Destination Address Family / encoding of the DNA: 0b0001 = IPv4
          (4 bytes); 0b0010 = IPv6, full (16 bytes); 0b0011 = IPv6,
          label-compressed (10 bytes, see <xref target="enc-v6"/>). Other values
          are reserved; a UGW that receives a reserved value MUST drop the
          packet.</dd>

          <dt>SAF (4 bits):</dt>
          <dd>Source Address Family / encoding of the SNA, using the same code
          points as DAF.</dd>

          <dt>Flags (4 bits):</dt>
          <dd>Control flags. Bit 0 (DF): when set, the egress UGW MUST set the
          Don't Fragment behavior on the delivered packet where applicable. The
          remaining bits are reserved, MUST be set to zero on transmission, and
          MUST be ignored on receipt.</dd>

          <dt>HLen (8 bits):</dt>
          <dd>Total length of the UTO header in bytes, including the fixed 8-byte
          part and both encoded addresses. HLen MUST equal 8 + len(DNA) +
          len(SNA). A UGW MUST drop the packet if HLen is inconsistent with the
          DAF and SAF encodings.</dd>

          <dt>Reserved:</dt>
          <dd>The 8-bit and 16-bit reserved fields MUST be set to zero on
          transmission and ignored on receipt, except that they are included in
          the Checksum computation.</dd>

          <dt>Checksum (16 bits):</dt>
          <dd>The 16-bit one's-complement checksum of the entire UTO header
          (fixed part plus DNA plus SNA), computed per <xref target="RFC1071"/>
          with the Checksum field set to zero. This protects against the
          reconstruction errors that arise from corrupted or misconfigured
          headers. See <xref target="cksum"/>.</dd>

          <dt>DNA / SNA:</dt>
          <dd>The destination and source native addresses, encoded as indicated
          by DAF and SAF.</dd>
        </dl>
      </section>

      <section anchor="enc-v4" numbered="true">
        <name>Encoding of an IPv4 Address</name>
        <t>When DAF or SAF indicates IPv4 (0b0001), the corresponding address is
        carried as the 32-bit IPv4 address in network byte order, occupying
        exactly 4 bytes. No padding is used.</t>
        <t>Example: 192.0.2.44 is encoded as the 4 bytes 0xC0 0x00 0x02 0x2C.</t>
      </section>

      <section anchor="enc-v6" numbered="true">
        <name>Encoding of an IPv6 Address</name>
        <t>An IPv6 address MAY be carried in full (16 bytes, code 0b0010) or, as
        an OPTIONAL size optimization, label-compressed (10 bytes, code 0b0011).
        Implementations MUST support the full 16-byte encoding; the
        label-compressed encoding is OPTIONAL.</t>

        <t>The label-compressed encoding splits a 128-bit IPv6 address into a
        64-bit prefix context (network prefix plus subnet) and a 64-bit
        Interface Identifier (IID). The prefix context is replaced by a 16-bit
        Label, and the IID is carried verbatim. The 10-byte field is therefore
        [Label (16 bits) | IID (64 bits)], and the reconstructed address is the
        64-bit context bound to that Label concatenated with the 64-bit IID.</t>

        <artwork type="ascii-art" align="left"><![CDATA[
   Label (16 bits)  ->  Prefix Context (64 bits)

             Figure 3: Prefix Context Table (label-compressed mode)
]]></artwork>

        <t>The label-compressed encoding requires that the ingress UGW
        (assigning the Label) and the egress UGW (resolving it) share an
        identical Label-to-context binding. This document does not define a
        control protocol for distributing those bindings; deployments using the
        OPTIONAL compressed mode MUST establish consistent bindings by
        configuration or by an out-of-band mechanism, and a UGW that cannot
        resolve a Label MUST drop the packet. Deployments that cannot guarantee
        consistent bindings MUST use the full 16-byte encoding. This constraint
        is listed in <xref target="limitations"/>.</t>
      </section>

      <section anchor="cksum" numbered="true">
        <name>Header Checksum</name>
        <t>On transmission the sender sets the Checksum field to zero, computes
        the one's-complement sum of the entire UTO header as a sequence of
        16-bit words, and stores the one's complement of that sum in the
        Checksum field. On receipt a UGW MUST verify the checksum and MUST drop
        the packet if verification fails. The checksum covers only the UTO
        header, not the outer or inner IP headers, which carry their own
        integrity mechanisms where applicable.</t>
      </section>
    </section>

    <section anchor="operation" numbered="true">
      <name>Protocol Operation</name>
      <t>UTO operates strictly at administrative boundaries. Cross-version
      traffic is identified by UGW policy, typically by destination prefix,
      interface role, or explicitly configured host mapping. Same-family traffic
      MUST NOT be encapsulated or translated.</t>

      <section anchor="v4v6" numbered="true">
        <name>IPv4-to-IPv6 Flow</name>
        <ol>
          <li>The IPv4 host sends an ordinary IPv4 packet toward a destination
          that policy maps to an IPv6-only host.</li>
          <li>The ingress UGW determines the destination IPv6 address (DNA) and
          a source representation in IPv6 (SNA), per
          <xref target="addr-mapping"/>.</li>
          <li>The ingress UGW prepends a UTO header (DAF = IPv6, SAF = IPv6) and
          encapsulates the intact IPv4 packet inside an outer IPv6 header
          addressed UGW-to-UGW.</li>
          <li>The IPv6 transit network forwards the packet natively, unaware of
          UTO.</li>
          <li>The egress UGW removes the outer and UTO headers and performs a
          single stateless IPv4-to-IPv6 header translation
          (<xref target="RFC7915"/>), writing DNA as destination and SNA as
          source, and delivers a native IPv6 packet to the IPv6-only host.</li>
        </ol>
        <t>Because the IPv6 source (SNA) is an IPv4-embedded IPv6 address
        (<xref target="RFC6052"/>) routed toward the UGWs, replies from the IPv6
        host are forwarded to a UGW and reverse-translated to IPv4 with no
        per-flow state.</t>
      </section>

      <section anchor="v6v4" numbered="true">
        <name>IPv6-to-IPv4 Flow</name>
        <ol>
          <li>The IPv6 host sends an ordinary IPv6 packet toward a destination
          that policy maps to an IPv4-only host.</li>
          <li>The ingress UGW determines the destination IPv4 address (DNA) and
          an IPv4 source representation (SNA), per
          <xref target="addr-mapping"/>. Selecting a 32-bit SNA for an arbitrary
          128-bit source is the point at which state or a constrained address
          range is required (<xref target="limitations"/>).</li>
          <li>The ingress UGW prepends a UTO header (DAF = IPv4, SAF = IPv4) and
          encapsulates the intact IPv6 packet inside an outer IPv4 header
          addressed UGW-to-UGW.</li>
          <li>The IPv4 transit network forwards the packet natively.</li>
          <li>The egress UGW removes the outer and UTO headers, performs a single
          stateless IPv6-to-IPv4 header translation, and delivers a native IPv4
          packet to the IPv4-only host.</li>
        </ol>
      </section>

      <section anchor="ugw" numbered="true">
        <name>UGW Behavior</name>
        <t>A UGW MUST:</t>
        <ul>
          <li>Maintain policy identifying opposite-version destinations.</li>
          <li>Apply UTO only to cross-family traffic; same-family traffic MUST NOT be altered.</li>
          <li>Verify the UTO header checksum and the HLen/DAF/SAF consistency before acting on a packet, and drop the packet on any failure.</li>
          <li>Perform exactly one stateless header translation, at the egress, per <xref target="RFC7915"/>.</li>
          <li>Adjust the Hop Limit / TTL of the translated packet as normal forwarding requires, and otherwise not modify inner upper-layer payload.</li>
          <li>Enforce which prefixes may originate cross-version traffic.</li>
        </ul>
        <t>A UGW MAY apply rate limiting or filtering to cross-version flows.</t>
        <t>Encapsulation and the single egress translation are designed to be
        amenable to hardware offload; in the IPv4-to-IPv6 direction they require
        no per-flow state.</t>
      </section>

      <section anchor="icmp-mtu" numbered="true">
        <name>ICMP and Path MTU Handling</name>
        <t>UTO adds an outer IP header plus the UTO header, increasing packet
        size on the transit path. UGWs MUST implement Path MTU Discovery for the
        UGW-to-UGW tunnel (<xref target="RFC1191"/> for IPv4 transit,
        <xref target="RFC8201"/> for IPv6 transit) or fragment the outer packet
        where the transit version permits.</t>
        <t>ICMP errors generated within the transit network refer to the outer
        header and the UGW addresses; the ingress UGW MUST consume such errors
        and, where appropriate, signal a reduced effective MTU toward the source
        rather than forwarding the transit ICMP error to an end host of a
        different family. ICMP errors that refer to the translated packet (for
        example, generated at or beyond the egress) MUST be translated back to
        the source's address family per <xref target="RFC7915"/> using the DNA
        and SNA so that the originating host receives a coherent error.</t>
      </section>

      <section anchor="addr-mapping" numbered="true">
        <name>Address Resolution and Mapping</name>
        <t>UTO does not define name resolution and does not synthesize DNS
        records. The ingress UGW learns the opposite-family destination by
        ordinary means: an A or AAAA record returned by unmodified DNS, a
        configured host or prefix mapping, or an algorithmic translation prefix
        (<xref target="RFC6052"/>). UTO therefore does not remove a deployment's
        dependence on the host being able to learn a usable destination address;
        it removes only the need to rewrite DNS responses and to keep per-flow
        translation state in the IPv4-to-IPv6 direction.</t>
        <t>The SNA is derived as follows. For IPv4-to-IPv6, the IPv4 source is
        mapped to an IPv4-embedded IPv6 address using a configured translation
        prefix (<xref target="RFC6052"/>); this is stateless and reversible. For
        IPv6-to-IPv4, see <xref target="limitations"/>: representing an arbitrary
        128-bit source in 32 bits is not injective, so the SNA MUST be drawn
        either from a stateful source map at the UGW or from a constrained,
        1:1-mapped IPv6 source range.</t>
      </section>
    </section>

    <section anchor="deployment" numbered="true">
      <name>Deployment Scenarios</name>
      <section numbered="true"><name>Enterprise with Legacy IPv4 Core</name>
        <t>An IPv4-centric enterprise can reach IPv6-only cloud services, IoT
        systems, and external APIs without deploying NAT64 or DNS64. UGWs are
        placed at WAN routers or firewalls. The IPv4-to-IPv6 direction is fully
        stateless.</t>
      </section>
      <section numbered="true"><name>ISP with IPv6-Only Access Network</name>
        <t>An ISP running IPv6-only access (mobile or FTTH) can reach IPv4-only
        external services. UGWs at the ISP edge keep the access network native
        IPv6 and reduce CGNAT pressure. The IPv6-to-IPv4 direction is subject to
        the source-mapping constraint of <xref target="limitations"/>.</t>
      </section>
      <section numbered="true"><name>IoT IPv6 Devices Reaching IPv4 Infrastructure</name>
        <t>IPv6-only IoT devices can reach IPv4 management or monitoring systems
        over an IPv4 backhaul. UGWs sit at aggregation points or border
        concentrators.</t>
      </section>
    </section>

    <section anchor="adv-lim" numbered="true">
      <name>Advantages and Limitations</name>
      <section numbered="true"><name>Advantages</name>
        <ul>
          <li>The sender's original packet is preserved across the transit network; only one transform occurs, at the egress.</li>
          <li>The IPv4-to-IPv6 direction is stateless and needs neither NAT64 state nor DNS64.</li>
          <li>The transit network forwards only pure IPv4 or pure IPv6 packets and is unaware of UTO.</li>
          <li>Works with existing hardware forwarding pipelines and outer-header middleboxes.</li>
          <li>Deployable incrementally at administrative boundaries.</li>
          <li>The header carries an integrity checksum, making header validation well defined.</li>
        </ul>
      </section>
      <section anchor="limitations" numbered="true"><name>Limitations</name>
        <ul>
          <li>Cross-family delivery requires translating the packet at the egress; UTO does not and cannot avoid translation altogether.</li>
          <li><strong>IPv6-to-IPv4 source representation.</strong> A 128-bit
          source cannot be represented losslessly in a 32-bit SNA. Bidirectional
          IPv6-to-IPv4 communication therefore requires either stateful source
          mapping at the UGW (state in exactly one place) or a constrained,
          1:1-mapped IPv6 source range. This is the same fundamental limit that
          constrains NAT64 and is not removed by UTO.</li>
          <li>UTO does not provide name resolution; deployments still rely on DNS or configured mapping to learn destination addresses.</li>
          <li>The OPTIONAL label-compressed IPv6 encoding requires consistent Label-to-context bindings across UGWs, which this document does not distribute.</li>
          <li>Encapsulation increases packet size, requiring PMTUD or fragmentation on the transit path.</li>
          <li>UTO requires UGWs at transition points and is not a replacement for dual-stack.</li>
        </ul>
      </section>
    </section>

    <section anchor="security" numbered="true">
      <name>Security Considerations</name>
      <t>UTO is a tunneling-plus-translation mechanism and inherits the security
      posture of both. The following apply:</t>
      <ul>
        <li>A UGW MUST verify the UTO header checksum before decapsulation or translation and MUST drop packets that fail.</li>
        <li>DNA and SNA values MUST be checked against authorized prefixes; a UGW MUST drop packets whose DNA or SNA falls outside its configured cross-version policy, to prevent the overlay from being used as an open relay.</li>
        <li>Operators SHOULD apply ingress anti-spoofing (BCP&nbsp;38, <xref target="RFC2827"/>) on UGW interfaces.</li>
        <li>The UTO checksum protects against corruption but not against an active attacker; where confidentiality or authenticity is required, UTO traffic SHOULD be carried inside IPsec (<xref target="RFC4301"/>) or an equivalent secure tunnel.</li>
        <li>Because addresses are carried in the overlay rather than in a state table, a misconfigured or spoofed SNA can misdirect replies; SNA validation against authorized source ranges is therefore REQUIRED, not optional.</li>
        <li>Monitoring systems SHOULD be able to observe both the outer header and the encapsulated native packet.</li>
      </ul>
    </section>

    <section anchor="iana" numbered="true">
      <name>IANA Considerations</name>
      <t>IANA is requested to assign one value from the "Assigned Internet
      Protocol Numbers" registry to identify UTO encapsulation. Because that
      registry is shared between the IPv4 Protocol field and the IPv6 Next
      Header field, a single assignment suffices to identify UTO over both
      IPv4 and IPv6 transit networks; no separate IPv6 Next Header value is
      required.</t>
      <t>This document makes no other IANA requests. The UTO Vers, DAF, SAF, and
      Flags code points are managed within this specification and do not require
      an IANA registry at this time.</t>
    </section>

    <section anchor="compat" numbered="true">
      <name>Backward Compatibility</name>
      <t>End hosts are unchanged. Transit routers forward only native IPv4 or
      IPv6 outer headers, and outer-header middleboxes operate normally. No
      changes to TCP, UDP, ICMP, IPv4, or IPv6 are required of hosts. UTO can
      coexist with NAT64, DS-Lite, MAP-E, MAP-T, and traditional tunnels, since
      it is confined to traffic that UGW policy selects for cross-version
      handling.</t>
    </section>

    <section anchor="examples" numbered="true">
      <name>Examples</name>
      <section numbered="true"><name>IPv4-to-IPv6</name>
        <t>Source IPv4 host 10.1.1.10 sends to an IPv6-only service whose AAAA
        record is 2001:db8:20::44. The ingress UGW sets DNA = 2001:db8:20::44
        (DAF = IPv6) and SNA = the IPv4-embedded IPv6 form of 10.1.1.10 under the
        configured translation prefix (SAF = IPv6), encapsulates the intact IPv4
        packet in an outer IPv6 header addressed UGW-to-UGW, and forwards it. The
        egress UGW translates to IPv6 and delivers a native IPv6 packet:
        source = embedded(10.1.1.10), destination = 2001:db8:20::44. Replies are
        routed back to a UGW by the translation prefix and reverse-translated
        with no state.</t>
      </section>
      <section numbered="true"><name>IPv6-to-IPv4</name>
        <t>Source IPv6 host 2001:db8:10::50 sends to IPv4-only host 192.0.2.99.
        The ingress UGW sets DNA = 192.0.2.99 (DAF = IPv4) and selects an IPv4
        SNA for the source from a stateful map or a 1:1-mapped range
        (SAF = IPv4), encapsulates the intact IPv6 packet in an outer IPv4 header
        addressed UGW-to-UGW, and forwards it. The egress UGW translates to IPv4
        and delivers source = chosen-SNA, destination = 192.0.2.99. Replies to
        the SNA are returned to the mapping UGW.</t>
      </section>
    </section>

  </middle>

  <back>
    <references>
      <name>Normative References</name>

      <reference anchor="RFC2119" target="https://www.rfc-editor.org/rfc/rfc2119">
        <front><title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author initials="S." surname="Bradner"/><date year="1997" month="March"/></front>
        <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="2119"/>
      </reference>

      <reference anchor="RFC8174" target="https://www.rfc-editor.org/rfc/rfc8174">
        <front><title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author initials="B." surname="Leiba"/><date year="2017" month="May"/></front>
        <seriesInfo name="BCP" value="14"/><seriesInfo name="RFC" value="8174"/>
      </reference>

      <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="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>

      <reference anchor="RFC1071" target="https://www.rfc-editor.org/rfc/rfc1071">
        <front><title>Computing the Internet Checksum</title>
          <author initials="R." surname="Braden"/><author initials="D." surname="Borman"/>
          <author initials="C." surname="Partridge"/><date year="1988" month="September"/></front>
        <seriesInfo name="RFC" value="1071"/>
      </reference>

      <reference anchor="RFC6052" target="https://www.rfc-editor.org/rfc/rfc6052">
        <front><title>IPv6 Addressing of IPv4/IPv6 Translators</title>
          <author initials="C." surname="Bao"/><author initials="C." surname="Huitema"/>
          <author initials="M." surname="Bagnulo"/><author initials="M." surname="Boucadair"/>
          <author initials="X." surname="Li"/><date year="2010" month="October"/></front>
        <seriesInfo name="RFC" value="6052"/>
      </reference>

      <reference anchor="RFC7915" target="https://www.rfc-editor.org/rfc/rfc7915">
        <front><title>IP/ICMP Translation Algorithm</title>
          <author initials="C." surname="Bao"/><author initials="X." surname="Li"/>
          <author initials="F." surname="Baker"/><author initials="T." surname="Anderson"/>
          <author initials="F." surname="Gont"/><date year="2016" month="June"/></front>
        <seriesInfo name="RFC" value="7915"/>
      </reference>

      <reference anchor="RFC1191" target="https://www.rfc-editor.org/rfc/rfc1191">
        <front><title>Path MTU Discovery</title>
          <author initials="J." surname="Mogul"/><author initials="S." surname="Deering"/>
          <date year="1990" month="November"/></front>
        <seriesInfo name="RFC" value="1191"/>
      </reference>

      <reference anchor="RFC8201" target="https://www.rfc-editor.org/rfc/rfc8201">
        <front><title>Path MTU Discovery for IP version 6</title>
          <author initials="J." surname="McCann"/><author initials="S." surname="Deering"/>
          <author initials="J." surname="Mogul"/><author initials="R." surname="Hinden"/>
          <date year="2017" month="July"/></front>
        <seriesInfo name="STD" value="87"/><seriesInfo name="RFC" value="8201"/>
      </reference>

      <reference anchor="RFC2827" target="https://www.rfc-editor.org/rfc/rfc2827">
        <front><title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
          <author initials="P." surname="Ferguson"/><author initials="D." surname="Senie"/>
          <date year="2000" month="May"/></front>
        <seriesInfo name="BCP" value="38"/><seriesInfo name="RFC" value="2827"/>
      </reference>

      <reference anchor="RFC4301" target="https://www.rfc-editor.org/rfc/rfc4301">
        <front><title>Security Architecture for the Internet Protocol</title>
          <author initials="S." surname="Kent"/><author initials="K." surname="Seo"/>
          <date year="2005" month="December"/></front>
        <seriesInfo name="RFC" value="4301"/>
      </reference>
    </references>

    <references>
      <name>Informative References</name>

      <reference anchor="RFC2460" target="https://www.rfc-editor.org/rfc/rfc2460">
        <front><title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author initials="S." surname="Deering"/><author initials="R." surname="Hinden"/>
          <date year="1998" month="December"/></front>
        <seriesInfo name="RFC" value="2460"/>
      </reference>

      <reference anchor="RFC2473" target="https://www.rfc-editor.org/rfc/rfc2473">
        <front><title>Generic Packet Tunneling in IPv6 Specification</title>
          <author initials="A." surname="Conta"/><author initials="S." surname="Deering"/>
          <date year="1998" month="December"/></front>
        <seriesInfo name="RFC" value="2473"/>
      </reference>

      <reference anchor="RFC2784" target="https://www.rfc-editor.org/rfc/rfc2784">
        <front><title>Generic Routing Encapsulation (GRE)</title>
          <author initials="D." surname="Farinacci"/><author initials="T." surname="Li"/>
          <author initials="S." surname="Hanks"/><author initials="D." surname="Meyer"/>
          <author initials="P." surname="Traina"/><date year="2000" month="March"/></front>
        <seriesInfo name="RFC" value="2784"/>
      </reference>

      <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="RFC6147" target="https://www.rfc-editor.org/rfc/rfc6147">
        <front><title>DNS64: DNS Extensions for Network Address Translation from IPv6 Clients to IPv4 Servers</title>
          <author initials="M." surname="Bagnulo"/><author initials="A." surname="Sullivan"/>
          <author initials="P." surname="Matthews"/><author initials="I." surname="van Beijnum"/>
          <date year="2011" month="April"/></front>
        <seriesInfo name="RFC" value="6147"/>
      </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>

      <reference anchor="RFC7599" target="https://www.rfc-editor.org/rfc/rfc7599">
        <front><title>Mapping of Address and Port using Translation (MAP-T)</title>
          <author initials="X." surname="Li"/><author initials="C." surname="Bao"/>
          <author initials="W." surname="Dec" role="editor"/><author initials="O." surname="Troan"/>
          <author initials="S." surname="Matsushima"/><author initials="T." surname="Murakami"/>
          <date year="2015" month="July"/></front>
        <seriesInfo name="RFC" value="7599"/>
      </reference>

      <reference anchor="RFC8986" target="https://www.rfc-editor.org/rfc/rfc8986">
        <front><title>Segment Routing over IPv6 (SRv6) Network Programming</title>
          <author initials="C." surname="Filsfils" role="editor"/><author initials="P." surname="Camarillo" role="editor"/>
          <author initials="J." surname="Leddy"/><author initials="D." surname="Voyer"/>
          <author initials="S." surname="Matsushima"/><author initials="Z." surname="Li"/>
          <date year="2021" month="February"/></front>
        <seriesInfo name="RFC" value="8986"/>
      </reference>

      <reference anchor="RFC9300" target="https://www.rfc-editor.org/rfc/rfc9300">
        <front><title>The Locator/ID Separation Protocol (LISP)</title>
          <author initials="D." surname="Farinacci"/><author initials="V." surname="Fuller"/>
          <author initials="D." surname="Meyer"/><author initials="D." surname="Lewis"/>
          <author initials="A." surname="Cabellos" role="editor"/><date year="2022" month="October"/></front>
        <seriesInfo name="RFC" value="9300"/>
      </reference>
    </references>

    <section anchor="ack" numbered="false">
      <name>Acknowledgments</name>
      <t>The author thanks the operational and research communities whose
      discussions on transition technologies, encapsulation performance, IPv6
      prefix management, and hardware forwarding behavior shaped the design goals
      of UTO and the explicit statement of its limits.</t>
      <t>The author appreciates the academic feedback and technical discussions
      received within the Universidad de Santiago de Chile (USACH) environment
      during the development of this work.</t>
    </section>
  </back>
</rfc>
