<?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-09" ipr="trust200902" updates="">
  <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="23" 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 engage a "deep packet
      fragmentation" service that supports Identification, fragmentation
      and reassembly 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>IPv4 end systems, intermediate systems and routers by default
      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 Header with
      an EFH option in an extension header chain beginning immediately
      after the IPv4 header (plus options) and ending 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 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 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
      IPv6 Destination Options Header with EFH Option followed by the
      fragment payload. The IPv4 source then forwards the fragment
      packets toward the final destination which processes them only
      if all nodes in the path pass IPv4 packets that include the
      IPv6 Destination Options header.</t>

      <t>Intermediate systems and IPv4 routers on the path forward
      the fragment packets if the next hop link MTU is sufficient. A
      router may perform IPv4 fragmentation if a fragment packet is
      too large and the Don't Fragment (DF) flag is 0; otherwise,
      the router drops the packet and returns an ICMPv4 Fragmentation
      Needed message.</t>

      <t>When the fragment packets arrive at the IPv4 destination, it
      performs 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, routers 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 and routers 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="flow" title="IPv4 Flow Label">
      <t>Destinations that return Fragmentation Report (FR) messages
      per <xref target="I-D.templin-6man-ipid-ext2"/> set the Flow
      Label field to the value included by the source of the packet
      that elicited the FR. When the source does not include an
      explicit Flow Label value, the destination sets the field
      to 0.</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 including the 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>Sources SHOULD set DF to 0 and include a suitable IPv4 ID
      value for packets that include fragment payloads based on the
      1024 octet minimum non-final EFH fragment size. Sources MUST
      set DF to 1 and include any IPv4 ID value for all others. An
      updated specification of the IPv4 ID field is found in
      <xref target="RFC6864"/>.</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>Destinations that accept flows using EFH Options
      MUST configure an EMTU_R of 65535 octets or larger.</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"/>
      <xref target="RFC8900"/> 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 -07 to version -09:<list style="symbols">
          <t>Clarified IPv4 DF bit setting requirements.</t>

          <t>Included section on IPv4 Flow Label.</t>

          <t>IPv4 router fragmentation considerations.</t>
        </list></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>
