<?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-08" 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="8" 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 a "hyper-extended" 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 Identification uniqueness assurance is critical. Together,
      these extensions ensure robust reassembly integrity as well as
      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 (hyper-)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
      proves that the original design of the Internet which included
      fragmentation and reassembly as core functions was the correct one.</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 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. The source copies the ID Extension option to 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 IPv4
      forwarding 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="hyper-ext" title="IPv4 ID Hyper-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 "hyper-extend" the IP ID 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 hyper-extension, the source includes an IDEXT option with
      option-type set to TBD the same as above, but with option-length set
      to '8', '12' or '16' instead of '4' as shown in <xref target="hyperext-id"/>:</t>
 
      <t><figure anchor="hyperext-id" title="IDEXT Option with Hyper-Extension">
        <artwork><![CDATA[                     +--------+--------+
                     |100[TBD]| Length |
   +--------+--------+--------+--------+
   ~           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 4-octet Identification value in IPv6, nodes 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 node then includes a 4-octet Identification
      value for the packet.</t>

      <t>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 64-bit Identification is needed, the most
      significant 32 Identification bits are set 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
   +---+---+---+
   |   | F | M |
   | 0 | P | 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 "Fragmentation Permitted (FP)" flag and
      bit 29 remains as a Reserved flag set to 0. When bit 30 is set to 0,
      network intermediate systems are not permitted to fragment the packet.
      When bit 30 is set to 1, network fragmentation is permitted.</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 (hyper-)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 header
      Identification 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 SHOULD configure and advertise the largest
      possible EMTU_R (65535 octets maximum) and MAY dynamically
      advertise a reduced EMTU_R during periods of reassembly buffer
      congestion (see: <xref target="icmp"/>).</t> 

      <t>When a destination reassembles an IP packet with an extended
      IP ID that arrived as fragments, it returns an EMTU_R indication
      to the source (subject to rate limiting) according to its current
      reassembly buffer congestion conditions (see: <xref target="icmp"/>).
      While a source continues to receive these 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
      higher data rates regardless of the MSL.)</t>

      <t>Extended IP ID formats supported by this specification include
      only the mandatory-to-implement (hyper-)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 option length values.</t>

      <t>Note: IP fragmentation can only be applied for packet lengths
      up to a maximum of 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="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="hyper-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 router forwards a packet that includes an
      (Extended) Fragment Header, it applies (further) fragmentation
      if the next hop link MTU is insufficient and if the "Fragmentation
      Permitted (FP)" flag is set to '1' (see: <xref target="IPv6-ext"/>).</t>

      <t>The "Fragmentation Permitted (FP)" flag for IPv6 therefore
      provides a "network fragmentation permitted" indication in the same
      spirit as the "Don't Fragment (DF)" flag for IPv4. This allows IPv6
      intermediate systems 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 pain.</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 IP
      packets that include an IP ID Extension option (and also a
      Fragment Header for IPv6) 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.</t>

          <t>3 - Sent by the final destination when it
          performs reassembly on a packet with an extended IP ID subject to
          rate limiting. 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.</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 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 256 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="frag" title="A Note on Fragmentation Considered Harmful">
      <t>During the earliest days of the Internet, researchers made the profound
      statement 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 earlier 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 fundamental elements of the Internet architecture. This has resulted
      in a modern Internet where path MTU discovery (including its more 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>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>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 values for the "unused"
        field of ICMPv4 "Destination Unreachable - Fragmentation Needed" messages.)</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 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>
    </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>
