<?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-ext-10" ipr="trust200902" updates="6864, 8200, 8900">
  <front>
    <title abbrev="IP Identification Extension">Identification Extension for the Internet Protocol</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="11" month="September" year="2023"/>

    <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 intended uses. This specification
      addresses these limitations by defining both an IPv4 header option
      and an IPv6 Extended Fragment Header for Identification Extension.</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 document defines
      a new option for IPv4 that extends the Identification field to 32-bits
      (i.e., the same as for IPv6 packets that include a standard Fragment
      Header <xref target="RFC8200"/>) to support reassembly integrity at
      higher data rates.</t>

      <t>When an IPv4 packet includes this "Identification Extension" option,
      the value encoded in the IPv4 header Identification field represents
      the 2 least-significant octets while the option encodes the 2
      most-significant octets of an extended 4-octet Identification. Hosts
      and routers that recognize the option employ it for packet identification
      purposes in general and to fortify the IPv4 reassembly procedure in
      particular.</t>

      <t>This specification also supports an "advanced" mode that extends
      the Identification field further for both IPv4 and IPv6. This format may
      be useful for networks that operate at extreme data rates, or for other
      cases when packet Identification uniqueness assurance is critical.
      Together, these extensions ensure robust reassembly integrity as
      well as packet Identification uniqueness for the Internet.</t>
    </section>

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

      <t>This document uses the term "IP" to refer generically to either
      protocol version (i.e., IPv4 or IPv6), and uses the term "IP ID" to
      refer generically to the IP Identification field whether in simple
      or extended form.</t>

      <t>The terms "Maximum Transmission Unit (MTU)", "Effective MTU to
      Receive (EMTU_R)" and "Maximum Segment Lifetime (MSL)" are used
      exactly the same as for standard Internetworking terminology.</t>

      <t>The term "Packet Too Big (PTB)" refers to either an IPv6 "Packet Too
      Big" <xref target="RFC8201"/><xref target="RFC4443"/> or an IPv4
      "Destination Unreachable - Fragmentation Needed" <xref target="RFC1191"/>
      message.</t>
    </section>

    <section anchor="motivate" title="Motivation">
      <t>Studies over many decades have shown that upper layer protocols
      can achieve greater performance by configuring segment sizes that exceed
      the path Maximum Transmission Unit (MTU). When the segment size exceeds
      the path MTU, IP fragmentation at some layer is a natural consequence.
      However, the 2-octet (16-bit) IPv4 and 4-octet (32-bit) IPv6 Identification
      fields may be too short to support reassembly integrity at sufficiently
      high data rates. This specification therefore proposes to fortify the
      IP ID by extending its length.</t>

      <t>A recent study <xref target="I-D.templin-dtn-ltpfrag"/> proved that
      configuring segment sizes that cause IPv4 packets to exceed the path
      MTU (thereby invoking IPv4 fragmentation and reassembly) provides a
      multiplicative performance increase at high data rates in comparison
      with using smaller segment sizes as long as fragment loss is negligible.
      This contradicts decades of unfounded assertions to the contrary and
      validates the original design of the Internet which includes
      fragmentation and reassembly as core functions.</t>

      <t>An alternative to extending the IP ID was also examined in which
      IPv4 packets were first encapsulated in IPv6 headers then subjected
      to IPv6 fragmentation where a 4-octet Identification field already
      exists. While this IPv4-in-IPv6 encapsulation followed by IPv6
      fragmentation also showed a performance increase for larger segment
      sizes in comparison with using MTU-sized or smaller segments, the
      magnitude of increase was significantly less than for invoking IP
      fragmentation directly without first applying encapsulation.</t>

      <t>Widely deployed implementations also often employ a common code
      base for both IPv4 and IPv6 fragmentation/reassembly since their
      algorithms are so similar. It therefore seems reasonable to conclude
      that IPv4 fragmentation and reassembly can support higher data rates
      than IPv6 when full (uncompressed) headers are used, while the rates
      may be similar when IPv6 header compression is applied.</t>

      <t>In addition to enabling higher data rates in the presence of
      fragmentation and reassembly, extending the IP ID can enable
      other important services. For example, an extended IP ID can
      support a duplicate packet detection service in which the network
      remembers recent IP ID values for a flow to aid detection of
      potential duplicates (note however that the network layer must
      not incorrectly flag intentional lower layer retransmissions
      as duplicates). An extended IP ID can also provide a packet
      sequence number that allows communicating peers to exclude any
      packets with IP ID values outside of a current sequence number
      window as potential spurious transmissions. These and other
      cases also hold true even if the source frequently resets its
      starting IP ID sequence numbers to maintain an unpredictable
      profile.</t>

      <t>For these reasons, it is clear that a robust IP fragmentation
      and reassembly service can provide a useful tool for performance
      maximization in the Internet and that an extended IP ID can provide
      greater uniqueness assurance. This document therefore presents a
      means to extend the IP ID to better support these services.</t>
    </section>

    <section anchor="idext" title="IPv4 ID Extension">
      <t>IP ID extension for IPv4 is achieved by introducing a new IPv4
      option. This new IPv4 ID Extension (IDEXT) Option begins with an
      option-type octet with "copied flag" set to '1', "option class"
      set to '00' and "option number" set to TBD. The option-type octet
      is followed immediately by an option-length octet set to the
      constant value '4'.</t>

      <t>The option-type is then followed by a 2-octet "ID Extension" field
      that (when combined with the 2 least-significant octets found in the
      IPv4 packet header Identification field) includes the 2 most-significant
      octets of an extended 4-octet (32-bit) IP ID for the packet. The option
      format is shown in <xref target="ext-id"/>:</t>
 
      <t><figure anchor="ext-id" title="IPv4 ID Extension (IDEXT) Option">
        <artwork><![CDATA[   +--------+--------+--------+--------+
   |100[TBD]|00000100|  ID Extension   |
   +--------+--------+--------+--------+
    Type=TBD Length=4]]></artwork>
      </figure></t>

      <t>When an IPv4 source node (i.e., an original source or an IPv4
      encapsulation ingress) wishes to supply a 4-octet extended IP ID for the
      packet, it includes an IDEXT option in the IPv4 packet header options area,
      i.e., based on the same rules as for including any IPv4 option. The source
      next writes the 2 least-significant octets in the IPv4 header Identification
      field and writes the 2 most-significant octets in the "ID Extension" field.</t>

      <t>The source then applies source fragmentation if necessary while including
      the extended IP ID value. During fragmentation, the source copies the ID Extension
      option into each resulting fragment and sets or clears the "Don't Fragment (DF)"
      flag as desired.</t>

      <t>The source then forwards each packet/fragment to the next hop, where each
      successive IPv4 forwarding hop will direct them toward the final destination.
      If an IPv4 router on the path needs to apply network fragmentation, it copies
      the IDEXT option into each resulting fragment to provide the final destination
      with the correct reassembly context.</t> 
    </section>

    <section anchor="adv-ext" title="Advanced IPv4 ID Extension">
      <t>When an IPv4 source produces a sustained burst of IPv4 packets that
      use the same source address, destination address and protocol at extreme
      data rates (e.g., in excess of 1Tbps), or when the source plans to reset
      the IP ID starting sequence to a new pseudo-random value frequently, it
      can optionally extend the IP ID even further by supplying an 8-octet (64-bit),
      12-octet (96-bit) or 16-octet (128-bit) value instead of a 2/4-octet value.</t>

      <t>To apply these longer extensions, the source includes an IDEXT option
      with option-type set to TBD the same as above, but with option-length
      ("optlen") set to '8', '12' or '16' instead of '4' as shown in <xref
      target="adv-id"/>:</t>
 
      <t><figure anchor="adv-id" title="IDEXT Option with Advanced Extension">
        <artwork><![CDATA[                     +--------+--------+
                     |100[TBD]| optlen |
   +--------+--------+--------+--------+
   ~           ID Extension            ~
   +--------+--------+--------+--------+
    Type=TBD Length=8, 12 or 16]]></artwork></figure></t>

      <t>The option will then include a 6, 10 or 14-octet ID Extension, with the
      most significant IP ID octets appearing in network byte order in the option-data
      and with the 2 least significant octets appearing in the IPv4 Identification
      field. For a 6-octet extension, the 8-octet IP ID can then fit properly within
      the longest word length for modern 64-bit architectures.</t>
    </section>

    <section anchor="IPv6-ext" title="IPv6 ID Extension">
      <t>Techniques that improve IPv4 often also apply in a corresponding
      fashion for IPv6 (and vice-versa). The same is also true for IPv6 ID
      Extensions.</t>

      <t>For a simple 4-octet Identification value in IPv6, the original source
      can simply include a standard IPv6 Fragment Header as specified in <xref
      target="RFC8200"/> with the "Fragment Offset" field and "M" flag set
      either to values appropriate for a fragmented packet or the value '0'
      for an unfragmented packet. The source then includes a 4-octet
      Identification value for the packet.</t>

      <t>For an advanced 4-octet Identification as well as for 8-octet or
      12-octet Identification values, this document defines a new IPv6
      Extended Fragment Header. The IPv6 Extended Fragment Header is
      identified by the Next Header type value 'TBD2' (see: IANA
      Considerations) and the format is shown in <xref target=
      "ipv6-ext-id"/>:</t>

      <t><figure anchor="ipv6-ext-id" title="IPv6 Extended Fragment Header">
        <artwork><![CDATA[   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Next Header  |   Reserved    |      Fragment Offset    |Res|M|
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                   Identification (12 octets)                  ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]>
   </artwork></figure></t>

      <t>In the above format, the control values in the first four
      octets are interpreted exactly the same as for the standard
      IPv6 Fragment Header, while the Identification field is 12
      octets in length and encodes a 96-bit value in network byte
      order. (When only a 32/64-bit Identification is needed, the
      original source sets the most significant 64/32 Identification
      bits to '0'.)</t>

      <t>For both the Standard and Extended IPv6 Fragment Header, this
      document further specifies a new coding for the 3 least significant
      ("flag") bits of the control field as shown in <xref target="frag-permit"/>:</t>

      <t><figure anchor="frag-permit" title="Fragmentation Flag Bits">
        <artwork><![CDATA[     2   3   3
     9   0   1
   +---+---+---+
   | R | P | M |
   | F | F | F |
   +---+---+---+]]>
   </artwork></figure></t>

      <t>In this new coding, Bit 31 remains as the "More Fragments (MF)" flag,
      while bit 30 is re-defined as the "Permit Fragmentation (PF)" flag and
      bit 29 remains as a "Reserved Fragmentation (RF)" flag. When bit 30 is set
      to 0, network intermediate systems are not permitted to fragment the packet;
      otherwise, network fragmentation is permitted. Bit 29 is set to 0 on
      transmission and ignored on reception.</t>
    </section>

    <section anchor="ipv4-use" title="IPv4 ID Applications">
      <t><xref target="RFC6864"/> limits the use of the IPv4 ID field to
      only supporting the fragmentation and reassembly processes. When
      an IPv4 packet includes a TBD option, however, the source asserts
      that the IPv4 ID includes a well-managed extended-length value
      that can satisfy uniqueness properties useful for other purposes.</t>

      <t>This specification therefore updates <xref target="RFC6864"/>
      by permitting use of the extended IPv4 ID for purposes other than
      support for fragmentation and reassembly.</t>
    </section>

    <section anchor="ipv4-index" title="IPv4 Parcel Index Extension">
      <t><xref target="I-D.templin-intarea-parcels"/> specifies
      procedures for fragmenting and reassembling the constituent
      packets derived from IP parcels that have been opened somewhere
      along the path. Since each packet derived from the same parcel
      shares the same Identification value, an ancillary (Parcel)
      Index field is also necessary to differentiate the packets.</t>

      <t>The IPv6 Fragment Header includes an 8-bit Reserved field
      that can be re-purposed to encode an Index, but the IPv4 header
      does not provide sufficient space. With reference to <xref target="idext"/>
      and <xref target="adv-ext"/>, this document therefore specifies the
      following IPv4 ID Parcel Index extension octet:</t> 

      <t><figure anchor="indexed-id" title="IPv4 ID Parcel Index Extension Octet">
        <artwork><![CDATA[   +-+-+-+-+-+-+-+-+
   |   Index   |P|S|
   +-+-+-+-+-+-+-+-+]]></artwork>
      </figure></t>

      <t>When the IPv4 TBD option-length is '5', the option-data includes
      2 Identification extension octets followed by the Parcel Index
      extension octet. When option-length is '9', '13', or '17', the
      option-data instead includes 6, 10 or 14 Identification extension
      octets followed by the Parcel Index extension octet.</t>

      <t>The Parcel Index octet field names and descriptions appear in
      <xref target="I-D.templin-intarea-parcels"/>.</t>
    </section>

    <section anchor="ipv6-frag" title="IPv6 Network Fragmentation">
      <t>When an IPv6 network intermediate system forwards a packet
      that includes an (Extended) Fragment Header, it applies (further)
      fragmentation if the next hop link MTU is insufficient and if the "Permit
      Fragmentation (PF)" flag is set to '1' (see: <xref target="IPv6-ext"/>).</t>

      <t>The "Permit Fragmentation (PF)" flag for IPv6 therefore provides
      a "network fragmentation permitted" indication in the opposite sense
      of the IPv4 "Don't Fragment (DF)" flag. When PF is set to 1, IPv6
      intermediate systems are permitted to apply fragmentation on packets
      that already include an (Extended) Fragment Header, but never to
      insert an (Extended) Fragment Header themselves.</t>

      <t>This specification therefore updates <xref target="RFC8200"/>
      by permitting network fragmentation for IPv6 under the above
      conditions.</t>
    </section>

    <section anchor="icmp" title="Packet Too Big (PTB) Extensions">
      <t>When a node forwards an IP packet that exceeds the next hop link
      MTU but for which fragmentation is forbidden, it drops the packet
      and returns a "Packet Too Big (PTB)" message to the original source
      <xref target="RFC1191"/><xref target="RFC4443"/><xref target="RFC8201"/>.
      This always results in wasted retransmissions by the source as well
      as all intermediate systems on the path toward the node with the
      restricting link. Conversely, when a packet includes an extended
      IP ID the network will perform fragmentation if necessary allowing
      the packet to reach the final destination without loss due to a
      size restriction.</t>

      <t>While the fragmentation and reassembly processes eliminate
      wasted retransmissions and can also support significant performance
      gains through transmissions of upper layer protocol segment sizes
      that exceed the path MTU, the processes sometimes represent pain
      points that should be communicated to the original source. The
      original source should then take measures to reduce the size of
      the packets or fragments that it sends.</t>

      <t>The IPv4 PTB format includes an "unused" field while the IPv6
      PTB format includes a "Code" field, with both fields set to the
      value "0" for ordinary PTB messages. The value "0" signifies a
      "classic" PTB and always denotes that the subject packet was
      unconditionally dropped due to a size restriction. For IPv4
      packets that include an IDEXT option and IPv6 packets that
      include an extended Fragment Header, other PTB unused/Code
      values are defined as follows:</t>

      <t><list style="empty">
          <t>1 - Sent by an intermediate system when it performs fragmentation
          on an IP packet that could instead have been fragmented to a smaller
          fragment size by the original source. The system sends the PTB message
          subject to rate limiting while still fragmenting and forwarding the
          packet. The MTU field of the PTB message includes the maximum fragment
          size that can pass through the restricting link. This value will often
          be considerably smaller than the maximum packet size that can be
          reassembled by the final destination.</t>

          <t>2 - The same as for value 1, except that the intermediate
          system drops the packet instead of fragmenting and forwarding.
          This message type represents a hard error that indicates loss.</t>

          <t>3 - Sent by the final destination (subject to rate limiting)
          when it performs reassembly on a packet with an extended IP ID.
          The destination sends the PTB message while still reassembling and
          accepting the packet. The MTU field of the PTB message includes
          the largest possible EMTU_R value under current reassembly buffer
          congestion constraints. This value must be no smaller than the
          minimum EMTU_R for the IP protocol version and will often be
          considerably larger than the path MTU.</t>

          <t>4 - The same as for value 3, except that the final destination
          drops the packet instead of reassembling and accepting. This
          message type represents a hard error that indicates loss.</t>

          <t>5 - Parcel Report - Sent by an intermediate system or final
          destination in response to an IP parcel that triggered the event
          (see: <xref target="I-D.templin-intarea-parcels"/>).</t>

          <t>6 - Jumbo Report - Sent by an intermediate system or final
          destination in response to an IP advanced jumbo that triggered
          the event (see: <xref target="I-D.templin-intarea-parcels"/>).</t>
      </list></t>

      <t>When the original source receives an authentic Code 1 or 2 PTB,
      it begins to perform source fragmentation using the fragment size
      indicated in the MTU field which may be smaller than the first
      hop link MTU. This reduces the burden on intermediate systems in the
      path which will see a reduced dependence on network fragmentation.</t>

      <t>When the original source receives a Code 3 or 4 PTB, it limits
      the size of the packets it sends based on the EMTU_R size found
      in the MTU field which may be larger than the path MTU.</t>

      <t>When the original source that has no prior agreement with the final
      destination ceases to receive Code 3 or 4 PTB messages, it must assume
      that the destination no longer recognizes IP ID extensions and must then
      impose rate limiting based on the wraparound threshold for a non-extended
      Identification within the MSL <xref target="RFC6864"/>. These rate
      limitations can be relaxed when the source can include an integrity
      check which the destination can verify.</t>

      <t>When an intermediate system or destination returns a Code 1-6 PTB,
      it prepares an ICMPv6 PTB message <xref target="RFC4443"/> and with
      MTU set as discussed above. The node then writes its own IP address
      as the PTB source and writes the source address of the packet that
      invoked the report as the PTB destination (for IPv4, the node writes
      the PTB address as an IPv4-Compatible IPv6 address <xref target="RFC4291"/>).</t>

      <t>The node next copies as much of the leading portion of the invoking
      packet as possible (beginning with the IP header) into the "packet
      in error" field without causing the entire PTB (beginning with the
      IPv6 header) to exceed 512 octets in length. The node then sets the
      ICMPv6 Checksum field to 0 instead of calculating and setting a
      true checksum since the UDP checksum (see below) already provides
      an integrity check.</t>

      <t>Since IPv6 packets cannot transit IPv4 paths, and since middleboxes
      often filter ICMPv6 messages as they transit IPv6 paths, the node next
      wraps the ICMPv6 PTB message in UDP/IP headers of the correct IP version
      with the IP source and destination addresses copied from the PTB and
      with UDP port numbers set to the OMNI UDP port number <xref target=
      "I-D.templin-intarea-omni"/>. The node then calculates and sets the
      UDP Checksum (and for IPv4 clears the DF bit). The node finally sends
      the prepared PTB to the original source.</t>

      <t>Note: This implies that original sources that send packets with
      extended IP IDs must be capable of accepting and processing these
      OMNI protocol UDP messages. A source that sends packets with
      extended IP IDs must therefore implement enough of the OMNI interface
      to be able to recognize and process these messages.</t>
    </section>

    <section anchor="require" title="Requirements">
      <t>IPv4 routers MUST forward without dropping any packets with
      IPv4 option-type TBD while copying the option during network
      fragmentation, and IPv6 routers MUST forward without dropping
      any packets with IPv6 Next Header type TBD2.</t>

      <t>IPv6 sources MUST include at most one Standard or Extended Fragment
      Header in a single packet. IPv6 intermediate systems and destination
      MUST silently drop any packets that include multiple Fragment Headers
      whether Standard or Extended.</t>

      <t>Destinations that recognize IPv4 option-type TBD MUST accommodate
      packets that include all (advanced) extended IP ID formats based on
      any 4/8/12/16-octet value included by the source.</t>

      <t>Sources MUST transmit and destinations MUST process the octets
      of the extended IP ID in network byte order with the base IP ID
      field containing the least significant octets and the
      ID Extension field containing the most significant octets. Implementations
      maintain the IP ID as a 16-octet (128-bit) integer with any most
      significant octets not included in an extension set to 0.</t>

      <t>Destinations MUST be capable of reassembling packets as large
      as the minimum Effective MTU to Receive (EMTU_R) specified for
      IPv4 (<xref target="RFC1122"/>, Section 3.3.2) or IPv6 (<xref
      target="RFC8200"/>, section 5). Destinations that recognize
      extended IP IDs MUST configure a minimum EMTU_R of 65535 octets
      and SHOULD advertise the largest possible EMTU_R in PTB messages,
      but they MAY dynamically advertise a reduced EMTU_R during periods
      of congestion (see: <xref target="icmp"/>).</t> 

      <t>When a (source, destination) pair use a UDP port number, IP
      protocol number and/or Ethernet type value for which extended IP ID
      implementation is mandatory, the source can send fragmented packets
      and the destination can silently reassemble unless/until it needs
      to assert an EMTU_R indication due to reassembly congestion. For
      other (source, destination) pairs, the destination must return a
      continuous stream of EMTU_R indications subject to rate limiting
      while it continues to reassemble packets from the source (see:
      <xref target="icmp"/>).</t>

      <t>While a source continues to receive these EMTU_R indications,
      it can continue to send fragmented or fragmentable packets no larger
      than the EMTU_R at rates within the Maximum Segment Lifetime (MSL)
      wraparound threshold for the extended IP ID length; otherwise, the
      source must assume the MSL threshold for the non-extended Identification
      field length <xref target="RFC6864"/>. (When the source includes
      sufficiently strong integrity checks that the destination can use
      to detect reassembly errors, however, it can continue to send at
      rates that exceed the MSL wraparound threshold.)</t>

      <t>Extended IP ID formats supported by this specification include
      only the mandatory-to-implement (advanced) extended formats which
      are differentiated by the option-length value for IPv4 or the
      extension header type for IPv6. Future documents may specify
      additional formats with different extended IP ID formats.</t>

      <t>Note: IP fragmentation can only be applied for packets no
      larger than 65535 octets. IP parcels and advanced jumbos provide
      a means for efficiently packaging and shipping multiple large
      segments or truly large singleton segments in IP packets that
      may exceed this size <xref target="I-D.templin-intarea-parcels"/>.</t>
    </section>

    <section anchor="frag" title="A Note on Fragmentation Considered Harmful">
      <t>During the earliest days of internetworking, researchers asserted that
      fragmentation should be deemed "harmful" based on empirical observations
      in the ARPANET, DARPA Internet and other internetworks of the day <xref
      target="KENT87"/>. These observations somehow inspired a discipline known
      as "Path MTU Discovery" within a new community known as the Internet
      Engineering Task Force (IETF). In more recent times, the IETF amplified
      these assertions in "IP Fragmentation Considered Fragile" <xref
      target="RFC8900"/>.</t>

      <t>Rather than encourage implementation improvements from the very beginning,
      however, the IETF somehow forgot that IP fragmentation and reassembly were
      still core Internet architecture functions. This has resulted in a modern
      Internet where path MTU discovery (including its recent derivatives) provides
      a poor service especially for dynamic networks with path MTU diversity. This
      document introduces a more robust solution based on a properly functioning
      IP fragmentation and reassembly service as intended in the original
      architecture. This document therefore updates <xref target="RFC8900"/>.</t>
    </section>

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

    <section anchor="iana" title="IANA Considerations">
      <t>The IANA is requested to assign a new IPv4 Option named "IDEXT" in
      the 'ip-parameters' registry (registration procedures not defined).
      The option sets "Copy" to '1', "Class" to '00' and "Number" to TBD.</t>

      <t>The IANA is further requested to assign a new Protocol Number TBD2 in the
      in the 'protocol-numbers' registry (registration procedures IESG Approval
      or Standards Action). The registry sets Decimal to "TBD2", Keyword to
      "IPv6-XFrag", Protocol to "Extended Fragment Header for IPv6" and IPv6
      Extension Header to "Y".</t>

      <t>The IANA is instructed to assign new Code values in the
      "ICMPv6 Code Fields: Type 2 - Packet Too Big" registry (registration
      procedure is Standards Action or IESG Approval). The registry should
      appear as follows:<figure anchor="omni-pmtu-code"
            title="ICMPv6 Code Fields: Type 2 - Packet Too Big Values">
            <artwork><![CDATA[   Code      Name                         Reference
   ---       ----                         ---------
   0         PTB Hard Error               [RFC4443]
   1         Fragmentation Needed (soft)  [RFCXXXX]
   2         Fragmentation Needed (hard)  [RFCXXXX]
   3         Reassembly Needed (soft)     [RFCXXXX]
   4         Reassembly Needed (hard)     [RFCXXXX]
   5         Parcel Report                [RFCXXXX]
   6         Jumbo Report                 [RFCXXXX]
]]></artwork>
        </figure>(Note: this registry also defines the same above values for
        the "unused" field of ICMPv4 "Destination Unreachable - Fragmentation
        Needed" messages <xref target="RFC1191"/>.)</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 a known
      IPv4 reassembly integrity concern <xref target="RFC4963"/> and
      also provide an advanced degree of packet Identification
      uniqueness assurance.</t>
    </section>

    <section anchor="ack" title="Acknowledgements">
      <t>This work was inspired by continued DTN performance studies. Bob
      Hinden and Tom Herbert 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.8200"?>

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

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

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

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

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

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

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

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

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

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

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

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

      <?rfc include="reference.I-D.templin-dtn-ltpfrag"?>

      <?rfc include="reference.I-D.templin-intarea-parcels"?>

      <?rfc include="reference.I-D.templin-intarea-omni"?>

      <reference anchor="KENT87">
        <front>
          <title>"Fragmentation Considered Harmful", SIGCOMM '87: Proceedings
              of the ACM workshop on Frontiers in computer communications
              technology, DOI 10.1145/55482.55524, http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-87-3.pdf.</title>

          <author fullname="Christopher Kent" initials="C." surname="Kent">
            <organization/>
          </author>

          <author fullname="Jeffrey Mogul" initials="J." surname="Mogul">
            <organization/>
          </author>

          <date month="August" year="1987"/>
        </front>
      </reference>
    </references>

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

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