<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc strict='yes'?>
<?rfc iprnotified='no'?>
<rfc category="std" docName="draft-templin-intarea-ipid-ext2-08" ipr="trust200902" updates="6864, 8900">
  <front>
    <title abbrev="IP Identification Extension">IPv6 Extended Fragment Header for IPv4</title>

    <author fullname="Fred L. Templin" initials="F. L." role="editor"
            surname="Templin">
      <organization>Boeing Research &amp; Technology</organization>

      <address>
        <postal>
          <street>P.O. Box 3707</street>

          <city>Seattle</city>

          <region>WA</region>

          <code>98124</code>

          <country>USA</country>
        </postal>

        <email>fltemplin@acm.org</email>
      </address>
    </author>

    <date day="21" month="May" year="2025"/>

    <keyword>I-D</keyword>

    <keyword>Internet-Draft</keyword>

    <abstract>
      <t>The Internet Protocol, version 4 (IPv4) header includes a 16-bit
      Identification field in all packets, but this length is too small to
      ensure reassembly integrity even at moderate data rates in modern
      networks. Even for Internet Protocol, version 6 (IPv6), the 32-bit
      Identification field included when a Fragment Header is present may
      be smaller than desired for some applications. This specification
      addresses these limitations by adapting the IPv6 Extended Fragment
      Header for IPv4.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>The Internet Protocol, version 4 (IPv4) header includes a 16-bit
      Identification in all packets <xref target="RFC0791"/>, but this
      length is too small to ensure reassembly integrity even at moderate
      data rates in modern networks <xref target="RFC4963"/><xref target=
      "RFC6864"/><xref target="RFC8900"/>. This specification adapts the
      IPv6 Extended Fragment Header (EFH) <xref target="I-D.templin-6man-ipid-ext2"/>
      for Identification extension and to support an alternate fragmentation
      and reassembly service for IPv4.</t>

      <t>IPv4 packets that include the IPv6 EFH can engage a "deep packet
      fragmentation" service that supports Identification, fragmentation
      and reassembly from deep within the packet independently of any
      IPv4 header level services. This may be useful for networks that
      engage fragmentation and reassembly at extreme data rates, or for
      cases when advanced packet Identification uniqueness assurance
      is critical.</t>
    </section>

    <section anchor="relate" title="Relation to IPv6">
      <t>Protocol extensions intended for IPv6 can often be applied in
      similar fashion as for IPv4 (and vice-versa). The terminology used
      and the motivation for extending the Identification field for IPv4 is
      the same as for the IPv6 Extended Fragment Header (EFH) as specified
      in <xref target="I-D.templin-6man-ipid-ext2"/>. All normative aspects
      of the IPv6 specification that can be applied for IPv4 apply also to
      this document.</t>
    </section>

    <section anchor="idext" title="IPv6 Extended Fragment Header (EFH) for IPv4">
      <t>By default, IPv4 end systems and intermediate systems do not
      recognize the IP protocol numbers for IPv6 extension headers as
      these are typically used to support only IPv6 operations. However,
      implementations of this specification are required to recognize
      IP protocol number 60 (IPv6 Destination Options header per <xref
      target="RFC8200"/>) as an applicable extension for IPv4.</t>

      <t>Implementations of this specification also recognize the IPv6
      EFH Option <xref target="I-D.templin-6man-ipid-ext2"/> when it
      appears in an IPv6 Destination Options Header following the IPv4
      header. Requirements for encapsulation of extension headers in
      IPv4 packets are introduced and discussed in <xref target=
      "I-D.herbert-ipv4-eh"/>. Recommendations for IPv6 extension
      header limits are found in <xref target="I-D.ietf-6man-eh-limits"/>.</t>

      <t>IPv4 sources insert an IPv6 Destination Option with an EFH
      in an IPv6 extension header chain that begins immediately after
      the end of the IPv4 header and ends immediately before the upper
      layer protocol header, e.g., TCP, UDP, etc. The source then increments
      the IPv4 Total Length by the length of the extension headers, and sets
      the IPv4 Protocol field to the protocol number of the first extension
      header. The source then sets the IPv6 Destination Options Header Next
      Header field to the protocol number of the next extension header or
      the upper layer protocol number if there are no further extensions.</t>

      <t>The IPv4 source then applies EFH fragmentation if necessary the
      same as for the IPv6 fragmentation procedures specified in <xref
      target="I-D.templin-6man-ipid-ext2"/>. This will produce a sequence
      of fragment packets each containing a copy of the IPv4 header
      followed by any Per-Fragment headers up to and including the
      Destination Options Header with IPv6 EFH Option (with the
      fragmentation control fields and  Identification set
      appropriately) followed by the fragment payload.</t>

      <t>The IPv4 source then sends the fragment packets to the IPv4
      destination which accepts and processes them only if it recognizes
      the IP Protocol value of the first extension header. The destination
      then reassembles per the procedures specified in <xref target=
      "I-D.templin-6man-ipid-ext2"/>.</t>

      <t>IPv4 routers that recognize the IPv6 Destination Options Header
      in IPv4 packets forward (fragment) packets that include the option
      if they are no larger than the next hop link MTU. If the packet is
      too large, the router instead performs IPv4 fragmentation if the
      Don't Fragment (DF) flag is 0; otherwise, the router drops the
      packet and return an ICMPv4 Fragmentation Needed (also known as
      Packet Too Big (PTB)) message. Destinations that recognize the
      option perform IPv4 reassembly if necessary followed by EFH
      reassembly under the same conditions specified for the IPv6
      EFH in <xref target="I-D.templin-6man-ipid-ext2"/>.</t>
    </section>

    <section anchor="comply" title="Destination Qualification and Path MTU">
      <t>IPv4 intermediate systems and destinations that do not
      recognize the IPv6 Destination Options Header with EFH
      Option appearing after the IPv4 header unconditionally drop
      the packet and SHOULD return an "ICMPv4 Destination
      Unreachable - Protocol Unreachable" message per
      <xref target="RFC0792"/>.</t>

      <t>The source can therefore test whether the path up to and
      including the destination accepts the IPv6 Destination Options
      Header and EFH Option by occasionally sending "probe" packets
      of a given size that include them. If the source receives an
      acknowledgement, it has assurance that the destination recognizes
      the protocol and that intermediate systems at least forward the
      protocol messages without dropping; the source can instead consider
      receipt of an ICMPv4 Destination Unreachable - Protocol Unreachable
      as a hint that some node in the path rejects the protocol. The
      source should occasionally re-probe each destination in case
      routing redirects a flow to a different anycast destination.</t>
    </section>

    <section anchor="icmp" title="Packet Too Big (PTB) Extensions">
      <t><xref target="I-D.templin-6man-ipid-ext2"/> specifies a new
      "Packet Too Big (PTB)" ICMP message Type plus Code values for
      PTB Soft Errors. Intermediate systems and destination end systems
      return ICMPv4 PTB Soft Errors to the source under the same
      conditions specified for IPv6.</t>
    </section>

    <section anchor="require" title="Requirements">
      <t>All nodes that process IPv4 packets with an IPv6 Destination
      Options Header with EFH Option observe the requirements found in
      <xref target="I-D.templin-6man-ipid-ext2"/> in addition to the
      requirements found in this section.</t>

      <t>Destinations that accept flows using EFH Options
      MUST configure an EMTU_R of 65535 octets or larger.</t>

      <t>Sources MUST set the DF bit to 0 for IPv4 packets with EFH
      options that include fragment payloads no larger than 1024
      octets and MUST set DF to 1 for all others.</t>

      <t>Sources MUST include at most one EFH in each IPv4 packet.
      Intermediate systems and destinations SHOULD silently drop
      packets with multiples.</t>

      <t>Intermediate systems that recognize IPv6 extension headers MUST
      forward without dropping IPv4 packets that include a Destination
      Options Header with an EFH Option unless they detect a security
      policy threat through deeper inspection of the protocol data
      that follows.</t>
    </section>

    <section anchor="implement" title="Implementation Status">
      <t>In progress.</t>
    </section>

    <section anchor="iana" title="IANA Considerations">
      <t>This document has no requirements for IANA.</t>
    </section>

    <section anchor="secure" title="Security Considerations">
      <t>All aspects of IP security apply equally to this document, which
      does not introduce any new vulnerabilities. Moreover, when employed
      correctly the mechanisms in this document robustly address known
      IPv4 reassembly integrity concerns <xref target="RFC4963"/> and
      also provide an advanced degree of packet Identification
      uniqueness assurance.</t>

      <t>All other security aspects of the IPv6 Extended Fragment Header
      per <xref target="I-D.templin-6man-ipid-ext2"/> apply also to its
      use in IPv4.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>This work was inspired by continued DTN performance studies.
      Amanda Baber, Tom Herbert, Bob Hinden and Eric Vyncke offered
      useful insights that helped improve the document.</t>

      <t>Honoring life, liberty and the pursuit of happiness.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.0791"?>

      <?rfc include="reference.RFC.0792"?>

      <?rfc include="reference.RFC.8200"?>

      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.8174"?>

      <?rfc include="reference.RFC.1191"?>

      <?rfc include="reference.RFC.4443"?>

      <?rfc include="reference.RFC.8201"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.RFC.4963"?>

      <?rfc include="reference.RFC.6864"?>

      <?rfc include="reference.RFC.8900"?>

      <?rfc include="reference.I-D.templin-6man-ipid-ext2"?>

      <?rfc include="reference.I-D.herbert-ipv4-eh"?>

      <?rfc include="reference.I-D.ietf-6man-eh-limits"?>
    </references>

    <section title="Change Log">
      <t>&lt;&lt; RFC Editor - remove prior to publication &gt;&gt;</t>

      <t>Differences from version -06 to version -07:<list style="symbols">
          <t>Now using normal (extended) ICMPv4 messages for IPv4 PTB
          instead of OMNI-encapsulated ICMPv6.</t>
        </list></t>

      <t>Differences from version -05 to version -06:<list style="symbols">
          <t>Removed reference to RFC9268.</t>

          <t>Clarified setting of DF bit.</t>
        </list></t>

      <t>Differences from earlier versions:<list style="symbols">
          <t>First draft publication.</t>
        </list></t>
    </section>
  </back>
</rfc>
