<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="exp" consensus="true" docName="draft-ietf-6man-mtu-option-15" indexInclude="true" ipr="trust200902" number="9268" prepTime="2022-08-29T21:33:00" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="4" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-6man-mtu-option-15" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9268" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="Path MTU Option">IPv6 Minimum Path MTU Hop-by-Hop Option</title>
    <seriesInfo name="RFC" value="9268" stream="IETF"/>
    <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
      <organization showOnFrontPage="true">Check Point Software</organization>
      <address>
        <postal>
          <street>959 Skyway Road</street>
          <city>San Carlos</city>
          <region>CA</region>
          <code>94070</code>
          <country>United States of America</country>
        </postal>
        <email>bob.hinden@gmail.com</email>
      </address>
    </author>
    <author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
      <organization showOnFrontPage="true">University of Aberdeen</organization>
      <address>
        <postal>
          <extaddr>School of Engineering</extaddr>
          <street>Fraser Noble Building</street>
          <city>Aberdeen</city>
          <region/>
          <code>AB24 3UE</code>
          <country>United Kingdom</country>
        </postal>
        <email>gorry@erg.abdn.ac.uk</email>
      </address>
    </author>
    <date month="08" year="2022"/>
    <area>int</area>
    <workgroup>6man</workgroup>
    <keyword>DPLPMTUD</keyword>
    <keyword>PMTUD</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies a new IPv6 Hop-by-Hop Option that is used to
      record the Minimum Path MTU (PMTU) along the forward path between a source host
      to a destination host. The recorded value can then be communicated back
      to the source using the return Path MTU field in the Option.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This document is not an Internet Standards Track specification; it is
            published for examination, experimental implementation, and
            evaluation.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document defines an Experimental Protocol for the Internet
            community.  This document is a product of the Internet Engineering
            Task Force (IETF).  It represents the consensus of the IETF community.
            It has received public review and has been approved for publication
            by the Internet Engineering Steering Group (IESG).  Not all documents
            approved by the IESG are candidates for any level of Internet
            Standard; see Section 2 of RFC 7841. 
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9268" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-example-operation">Example Operation</xref></t>
              </li>
              <li pn="section-toc.1-1.1.2.2">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derivedContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-use-of-the-ipv6-hop-by-hop-">Use of the IPv6 Hop-by-Hop Options Header</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-motivation-and-problem-solv">Motivation and Problem Solved</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-applicability-statements">Applicability Statements</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ipv6-minimum-path-mtu-hop-b">IPv6 Minimum Path MTU Hop-by-Hop Option</xref></t>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-router-host-and-transport-l">Router, Host, and Transport Layer Behaviors</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-router-behavior">Router Behavior</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-host-operating-system-behav">Host Operating System Behavior</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-transport-layer-behavior">Transport  Layer Behavior</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.3.2">
                  <li pn="section-toc.1-1.6.2.3.2.1">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.1.1"><xref derivedContent="6.3.1" format="counter" sectionFormat="of" target="section-6.3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-including-the-option-in-an-">Including the Option in an Outgoing Packet</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.2">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.2.1"><xref derivedContent="6.3.2" format="counter" sectionFormat="of" target="section-6.3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-validation-of-the-packet-th">Validation of the Packet that Includes the Option</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.3">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.3.1"><xref derivedContent="6.3.3" format="counter" sectionFormat="of" target="section-6.3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-receiving-the-option">Receiving the Option</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.4">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.4.1"><xref derivedContent="6.3.4" format="counter" sectionFormat="of" target="section-6.3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-the-rtn-pmtu-field">Using the Rtn-PMTU Field</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.5">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.5.1"><xref derivedContent="6.3.5" format="counter" sectionFormat="of" target="section-6.3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-detecting-path-changes">Detecting Path Changes</xref></t>
                  </li>
                  <li pn="section-toc.1-1.6.2.3.2.6">
                    <t indent="0" pn="section-toc.1-1.6.2.3.2.6.1"><xref derivedContent="6.3.6" format="counter" sectionFormat="of" target="section-6.3.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-detection-of-dropping-packe">Detection of Dropping Packets that Include the Option</xref></t>
                  </li>
                </ul>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-router-option-processing">Router Option Processing</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-layer-host-processi">Network-Layer Host Processing</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-validating-use-of-the-optio">Validating Use of the Option Data</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-direct-use-of-the-rtn-pmtu-">Direct Use of the Rtn-PMTU Value</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.5">
                <t indent="0" pn="section-toc.1-1.8.2.5.1"><xref derivedContent="8.5" format="counter" sectionFormat="of" target="section-8.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-the-rtn-pmtu-value-as">Using the Rtn-PMTU Value as a Hint for Probing</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.6">
                <t indent="0" pn="section-toc.1-1.8.2.6.1"><xref derivedContent="8.6" format="counter" sectionFormat="of" target="section-8.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-impact-of-middleboxes">Impact of Middleboxes</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-experiment-goals">Experiment Goals</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-implementation-status">Implementation Status</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2">
              <li pn="section-toc.1-1.11.2.1">
                <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.11.2.2">
                <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="Appendix A" format="default" sectionFormat="of" target="section-appendix.a"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-examples-of-usage">Examples of Usage</xref></t>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Intro" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">This document specifies a new IPv6 Hop-by-Hop (HBH) Option to record the
      minimum Maximum Transmission Unit (MTU) along the forward path between a
      source and a destination host. The source host creates a packet with
      this Option and initializes the Min-PMTU field with the value of the MTU
      for the outbound link that will be used to forward the packet towards
      the destination host.</t>
      <t indent="0" pn="section-1-2">At each subsequent hop where the Option is processed, the router
      compares the value of the Min-PMTU field in the Option and the MTU of
      its outgoing link. If the MTU of the link is less than the Min-PMTU, it
      rewrites the value in the Option Data with the smaller value. When the
      packet arrives at the destination host, the host can send the value of
      the minimum Reported MTU for the path back to the source host using the
      Rtn-PMTU field in the Option. The source host can then use this value as
      input to the method that sets the Path MTU (PMTU) used by upper-layer
      protocols.</t>
      <t indent="0" pn="section-1-3">The IPv6 Minimum Path MTU Hop-by-Hop (MinPMTU HBH) Option
      is designed to work with packet sizes that can be
      specified in the IPv6 header. The maximum packet size that can be
      specified in an IPv6 header is 65,535 octets (2<sup>16</sup>).</t>
      <t indent="0" pn="section-1-4">This method has the potential to complete Path MTU Discovery (PMTUD) in a
      single round-trip time, even over paths that have successive links, each
      with a lower MTU.</t>
      <t indent="0" pn="section-1-5">The mechanism defined in this document is focused on unicast; it does
      not describe multicast. That is left for future work.</t>
      <section anchor="Intro1" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-example-operation">Example Operation</name>
        <t indent="0" pn="section-1.1-1">The figure below illustrates the operation of the method. In this
        case, the path between the source host and the destination host
        comprises three links: the source has a link MTU of size MTU-S, the
        link between routers R1 and R2 has an MTU of size 9000 bytes, and the
        final link to the destination has an MTU of size MTU-D.</t>
        <figure anchor="fig1" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-an-example-path-between-the">An Example Path between the Source Host and the Destination Host</name>
          <artwork align="center" alt="" name="" type="" pn="section-1.1-2.1">
+--------+         +----+        +----+         +-------+
|        |         |    |        |    |         |       |
| Sender +---------+ R1 +--------+ R2 +-------- + Dest. |
|        |         |    |        |    |         |       |
+--------+  MTU-S  +----+  9000B +----+  MTU-D  +-------+
</artwork>
        </figure>
        <t indent="0" pn="section-1.1-3">Three scenarios are described:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-1.1-4">
          <li pn="section-1.1-4.1">
            <t indent="0" pn="section-1.1-4.1.1">Scenario 1 considers all links to have a 9000 byte MTU, and
            the method is supported by both routers. The initial Min-PMTU is
            not modified along the path. Therefore, the PMTU is 9000
            bytes.</t>
          </li>
          <li pn="section-1.1-4.2">
            <t indent="0" pn="section-1.1-4.2.1">Scenario 2 considers the link between R2 and the destination host
            (MTU-D) to have an MTU of 1500 bytes. This is the smallest MTU.
            Router R2 updates the Min-PMTU to 1500 bytes, and the method
            correctly updates the PMTU to 1500 bytes. Had there been another
            smaller MTU at a link further along the path that also supports
            the method, the lower MTU would also have been detected.</t>
          </li>
          <li pn="section-1.1-4.3">
            <t indent="0" pn="section-1.1-4.3.1">Scenario 3 considers the case where the router preceding the
            smallest link (R2) does not support the method, and the link to
            the destination host (MTU-D) has an MTU of 1500 bytes. Therefore,
            router R2 does not update the Min-PMTU to 1500 bytes. The method
            then fails to detect the actual PMTU.</t>
          </li>
        </ul>
        <t indent="0" pn="section-1.1-5">In Scenarios 2 and 3, a lower PMTU would also fail to be detected
        in the case where PMTUD had been used and an ICMPv6 Packet Too Big
        (PTB) message had not been delivered to the sender <xref format="default" target="RFC8201" sectionFormat="of" derivedContent="RFC8201"/>.</t>
        <t indent="0" pn="section-1.1-6">These scenarios are summarized in the table below. "H" in R1 and/or
        R2 columns means the router understands the MinPMTU HBH Option.</t>
        <table align="center" pn="table-1">
          <name slugifiedName="name-three-scenarios-that-arise-">Three Scenarios That Arise from Using the Path Shown in Figure 1</name>
          <thead>
            <tr>
              <th align="left" colspan="1" rowspan="1"/>
              <th align="left" colspan="1" rowspan="1">MTU-S</th>
              <th align="left" colspan="1" rowspan="1">MTU-D</th>
              <th align="left" colspan="1" rowspan="1">R1</th>
              <th align="left" colspan="1" rowspan="1">R2</th>
              <th align="left" colspan="1" rowspan="1">Rec PMTU</th>
              <th align="left" colspan="1" rowspan="1">Note</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">H</td>
              <td align="left" colspan="1" rowspan="1">H</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">Endpoints attempt to use a 9000 B PMTU.</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">2</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">1500 B</td>
              <td align="left" colspan="1" rowspan="1">H</td>
              <td align="left" colspan="1" rowspan="1">H</td>
              <td align="left" colspan="1" rowspan="1">1500 B</td>
              <td align="left" colspan="1" rowspan="1">Endpoints attempt to use a 1500 B PMTU.</td>
            </tr>
            <tr>
              <td align="left" colspan="1" rowspan="1">3</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">1500 B</td>
              <td align="left" colspan="1" rowspan="1">H</td>
              <td align="left" colspan="1" rowspan="1">-</td>
              <td align="left" colspan="1" rowspan="1">9000 B</td>
              <td align="left" colspan="1" rowspan="1">Endpoints attempt to use a 9000 B PMTU but
	      need to implement a method to fall back to discover
	      and use a 1500 B PMTU.</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section anchor="Intro2" numbered="true" toc="include" removeInRFC="false" pn="section-1.2">
        <name slugifiedName="name-use-of-the-ipv6-hop-by-hop-">Use of the IPv6 Hop-by-Hop Options Header</name>
        <t indent="0" pn="section-1.2-1">As specified in <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/>, IPv6
        allows nodes to optionally process the Hop-by-Hop header.
        Specifically, from <xref target="RFC8200" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4" derivedContent="RFC8200"/>:</t>
        <blockquote pn="section-1.2-2">
          <t indent="0" pn="section-1.2-2.1">The Hop-by-Hop Options header is not inserted or deleted, but
            may be examined or processed by any node along a packet's delivery
            path, until the packet reaches the node (or each of the set of
            nodes, in the case of multicast) identified in the Destination
            Address field of the IPv6 header. The Hop-by-Hop Options header,
            when present, must immediately follow the IPv6 header. Its
            presence is indicated by the value zero in the Next Header field
            of the IPv6 header.</t>
          <t indent="0" pn="section-1.2-2.2">NOTE: While <xref format="default" target="RFC2460" sectionFormat="of" derivedContent="RFC2460"/> required
            that all nodes must examine and process the Hop-by-Hop Options
            header, it is now expected that nodes along a packet's delivery
            path only examine and process the Hop-by-Hop Options header if
            explicitly configured to do so.</t>
        </blockquote>
        <t indent="0" pn="section-1.2-3">The Hop-by-Hop Option defined in this document is designed to take
        advantage of this property of how Hop-by-Hop Options are processed.
        Nodes that do not support this Option <bcp14>SHOULD</bcp14> ignore them. This can
        mean that the Min-PMTU value does not account for all links along a
        path.</t>
      </section>
    </section>
    <section anchor="motivation" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-motivation-and-problem-solv">Motivation and Problem Solved</name>
      <t indent="0" pn="section-2-1">The current state of Path MTU Discovery on the Internet is
      problematic. The mechanisms defined in <xref format="default" target="RFC8201" sectionFormat="of" derivedContent="RFC8201"/> are known to not work well in all environments. It
      fails to work in various cases, including when nodes in the middle of
      the network do not send ICMPv6 PTB messages or rate-limited ICMPv6
      messages or do not have a return path to the source host. This results in many transport-layer connections being configured to
      use smaller packets (e.g., 1280 bytes) by default and makes it difficult
      to take advantage of paths with a larger PMTU where they do exist.
      Applications that send large packets are forced to use IPv6
      fragmentation <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/>, which can
      reduce the reliability of Internet communication <xref format="default" target="RFC8900" sectionFormat="of" derivedContent="RFC8900"/>.</t>
      <t indent="0" pn="section-2-2">Encapsulations and network-layer tunnels further reduce the payload
      size available for a transport protocol to use. Also, some use cases
      increase packet overhead, for example, Network Virtualization Using
      Generic Routing Encapsulation (NVGRE) <xref format="default" target="RFC7637" sectionFormat="of" derivedContent="RFC7637"/> encapsulates Layer 2 (L2) packets in an outer IP header and
      does not allow IP fragmentation.</t>
      <t indent="0" pn="section-2-3">Sending larger packets can improve host performance, e.g., avoiding
      limits to packet processing by the packet rate. An example of this is how the
      packet-per-second
      rate required to reach wire speed on a 10G link with 1280
      byte packets is about 977K packets per second (pps) vs. 139K pps for
      9000 byte packets.</t>
      <t indent="0" pn="section-2-4">The purpose of this document is to improve the situation by defining
      a mechanism that does not rely on reception of ICMPv6 PTB
      messages from nodes in the middle of the network. Instead, this provides
      information to the destination host about the Minimum Path MTU and
      sends this information back to the source host. This is expected to work
      better than the current mechanisms based on <xref target="RFC8201" format="default" sectionFormat="of" derivedContent="RFC8201"/>.</t>
      <t indent="0" pn="section-2-5">A similar mechanism was proposed in 1988 for IPv4 in <xref format="default" target="RFC1063" sectionFormat="of" derivedContent="RFC1063"/> by Jeff Mogul, C. Kent, Craig
      Partridge, and Keith McCloghire. It was later obsoleted in 1990 by <xref format="default" target="RFC1191" sectionFormat="of" derivedContent="RFC1191"/>, which is the current deployed approach to
      Path MTU Discovery. In contrast, the method described in this document
      uses the Hop-by-Hop Option of IPv6. It does not replace PMTUD <xref format="default" target="RFC8201" sectionFormat="of" derivedContent="RFC8201"/>, Packetization Layer Path MTU Discovery
      (PLPMTUD) <xref format="default" target="RFC4821" sectionFormat="of" derivedContent="RFC4821"/>, or Datagram Packetization Layer PMTU Discovery (DPLPMTUD) <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/> but rather is designed to compliment these
      methods.</t>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-3-1">The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
      "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>",
      "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",
      "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and
      "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in
      BCP 14 <xref format="default" target="RFC2119" sectionFormat="of" derivedContent="RFC2119"/> <xref format="default" target="RFC8174" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
      shown here.</t>
    </section>
    <section numbered="true" toc="include" anchor="app-state" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-applicability-statements">Applicability Statements</name>
      <t indent="0" pn="section-4-1">The Path MTU Option is designed for environments where there is
      control over the hosts and nodes that connect them and where there is
      more than one MTU size in use, for example, in data centers and on paths
      between data centers to allow hosts to better take advantage of a path
      that is able to support a large PMTU.</t>
      <t indent="0" pn="section-4-2">The design of the Option is so sufficiently simple that it can be
      executed on a router's fast path. A successful experiment depends on
      both implementation by host and router vendors and deployment by
      operators. The contained use case of connections within and between data
      centers could be a driver for deployment.</t>
      <t indent="0" pn="section-4-3">The method could also be useful in other environments, including the
      general Internet, and offers an advantage when this Hop-by-Hop Option is
      supported on all paths. The method is more robust when used to probe the
      path using packets that do not carry application data and when also
      paired with a method like Packetization Layer PMTUD <xref format="default" target="RFC4821" sectionFormat="of" derivedContent="RFC4821"/> or Datagram Packetization Layer PMTU Discovery (DPLPMTUD) <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/>.</t>
    </section>
    <section anchor="HBH" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-ipv6-minimum-path-mtu-hop-b">IPv6 Minimum Path MTU Hop-by-Hop Option</name>
      <t indent="0" pn="section-5-1">The Minimum Path MTU Hop-by-Hop Option has the following format:</t>
      <figure align="left" suppress-title="false" pn="figure-2">
        <name slugifiedName="name-format-of-the-minimum-path-">Format of the Minimum Path MTU Hop-by-Hop Option</name>
        <artwork align="center" alt="" name="" type="" pn="section-5-2.1">
 Option    Option    Option
  Type    Data Len   Data
+--------+--------+--------+--------+---------+-------+-+
|BBCTTTTT|00000100|     Min-PMTU    |     Rtn-PMTU    |R|
+--------+--------+--------+--------+---------+-------+-+
</artwork>
      </figure>
      <t indent="0" pn="section-5-3">Option Type (see <xref target="RFC8200" section="4.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.2" derivedContent="RFC8200"/>):</t>
      <artwork align="center" alt="" name="" type="" pn="section-5-4">
  BB     00   Skip over this Option and continue processing.                    
                                                                                
  C       1   Option Data can change en route to the packet's final             
              destination.                                                      
                                                                                
  TTTTT 10000 Option Type assigned from IANA [IANA-HBH].                        
                                                                                
  Length:  4  The size of the value field in Option Data                        
              field supports PMTU values from 0 to 65,534
              octets, the maximum size represented by the
	      Path MTU Option.                              
                                                                                
                                                                                
  Min-PMTU: n 16-bits.  The minimum MTU recorded along the path                 
              in octets, reflecting the smallest link MTU that                  
              the packet experienced along the path.                            
              A value less than the IPv6 minimum link                           
              MTU [RFC8200] MUST be ignored.                                    
                                                                                
  Rtn-PMTU: n 15-bits.  The returned Path MTU field, carrying the 15            
              most significant bits of the latest received Min-PMTU             
              field for the forward path.  The value zero means that            
              no Reported MTU is being returned.                                
                                                                                
  R        n  1-bit.  R-Flag.   Set by the source to signal that                
              the destination host should include the received                  
              Rtn-PMTU field updated by the reported Min-PMTU value             
              when the destination host is to send a PMTU Option back           
              to the source host.
</artwork>
      <t indent="0" pn="section-5-5">NOTE: The encoding of the final two octets (Rtn-PMTU and R-Flag)
      could be implemented by a mask of the latest received Min-PMTU value
      with 0xFFFE, discarding the right-most bit and then performing a logical
      'OR' with the R-Flag value of the sender. This encoding fits in the
      minimum-sized Hop-by-Hop Option header.</t>
    </section>
    <section anchor="Behavior" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-router-host-and-transport-l">Router, Host, and Transport Layer Behaviors</name>
      <section anchor="router" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-router-behavior">Router Behavior</name>
        <t indent="0" pn="section-6.1-1">Routers that are not configured to support Hop-by-Hop Options are
        not expected to examine or process the contents of this Option <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/>.</t>
        <t indent="0" pn="section-6.1-2">Routers that support Hop-by-Hop Options but are not configured to
        support this Option <bcp14>SHOULD</bcp14> skip over this Option and continue to
        process the header <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/>.</t>
        <t indent="0" pn="section-6.1-3">Routers that support this Option <bcp14>MUST</bcp14> compare the value of the
        Min-PMTU field with the MTU configured for the outgoing link. If the
        MTU of the outgoing link is less than the Min-PMTU, the router
        rewrites the Min-PMTU in the Option to use the smaller value. (The
        router processing is performed without checking the valid range of the
        Min-PMTU or the Rtn-PMTU fields.)</t>
        <t indent="0" pn="section-6.1-4">A router <bcp14>MUST</bcp14> ignore and <bcp14>MUST NOT</bcp14> change the
	Rtn-PMTU field or the R-Flag in the Option.</t>
      </section>
      <section anchor="host-os" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-host-operating-system-behav">Host Operating System Behavior</name>
        <t indent="0" pn="section-6.2-1">The PMTU entry associated with the destination in the host's
        destination cache <xref format="default" target="RFC4861" sectionFormat="of" derivedContent="RFC4861"/>
          <bcp14>SHOULD</bcp14> be
        updated after detecting a change using the IPv6 Minimum Path MTU
        Hop-by-Hop Option. This cached value can be used by other flows that
        share the host's destination cache.</t>
        <t indent="0" pn="section-6.2-2">The value in the host destination cache <bcp14>SHOULD</bcp14> be used by
	PLPMTUD to select an initial PMTU for a flow. The cached PMTU is only
        increased by PLPMTUD when the Packetization Layer determines the path
        actually supports a larger PMTU <xref format="default" target="RFC4821" sectionFormat="of" derivedContent="RFC4821"/> <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/>.</t>
        <t indent="0" pn="section-6.2-3">When requested to send an IPv6 packet with the MinPMTU HBH
        Option, the source host includes the Option in an outgoing packet. The
        source host <bcp14>MUST</bcp14> fill the Min-PMTU field with the MTU
	configured for the link over which it will send the packet on the next hop towards
        the destination host.</t>
        <t indent="0" pn="section-6.2-4">When a host includes the Option in a packet it sends, the host
        <bcp14>SHOULD</bcp14> set the Rtn-PMTU field to the previously cached value of the
        received Minimum Path MTU for the flow in the Rtn-PMTU field (see
        <xref target="transportrec" format="default" sectionFormat="of" derivedContent="Section 6.3.3"/>). If this value is not set (for
        example, because there is no cached reported Min-PMTU value), the
        Rtn-PMTU field value <bcp14>MUST</bcp14> be set to zero.</t>
        <t indent="0" pn="section-6.2-5">The source host <bcp14>MAY</bcp14> request the destination host to return the
        reported Min-PMTU value by setting the R-Flag in the Option of an
        outgoing packet. The R-Flag <bcp14>SHOULD NOT</bcp14> be set when the MinPMTU
	HBH Option was sent solely to provide requested feedback on the return
        Path MTU to avoid each response generating another response.</t>
        <t indent="0" pn="section-6.2-6">The destination host controls when to send a packet with this
        Option in response to an R-Flag, as well as which packets to include
        it in. The destination host <bcp14>MAY</bcp14> limit the rate at which it sends these
        packets.</t>
        <t indent="0" pn="section-6.2-7">A destination host only sets the R-Flag if it wishes the source
        host to also return the discovered PMTU value for the path from the
        destination to the source.</t>
        <t indent="0" pn="section-6.2-8">The normal sequence of operation of the R-Flag using the
        terminology from the diagram in <xref target="fig1" format="default" sectionFormat="of" derivedContent="Figure 1"/> is:</t>
        <ol type="1" indent="adaptive" spacing="normal" start="1" pn="section-6.2-9">
          <li pn="section-6.2-9.1" derivedCounter="1.">
            <t indent="0" pn="section-6.2-9.1.1">The source sends a probe to the destination. The sender sets
            the R-Flag.</t>
          </li>
          <li pn="section-6.2-9.2" derivedCounter="2.">
            <t indent="0" pn="section-6.2-9.2.1">The destination responds by sending a probe including the
            received Min-PMTU as the Rtn-PMTU. A destination that does not
            wish to probe the return path sets the R-Flag to 0.</t>
          </li>
        </ol>
      </section>
      <section anchor="Transport" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-transport-layer-behavior">Transport  Layer Behavior</name>
        <t indent="0" pn="section-6.3-1">This Hop-by-Hop Option is intended to be used with a Path MTU
        Discovery method.</t>
        <t indent="0" pn="section-6.3-2">PLPMTUD <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/> uses probe
        packets for two distinct functions:</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-6.3-3">
          <li pn="section-6.3-3.1">Probe packets are used to confirm connectivity. Such probes can
          be of any size up to the Packetization Layer Path MTU (PLPMTU). These
	  probe packets are sent to
          solicit a response using the path to the remote node. These probe
          packets can carry the Hop-by-Hop PMTU Option, providing the final
          size of the packet does not exceed the current PLPMTU. After
          validating that the packet originates from the path (<xref target="RFC8899" section="4.6.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-4.6.1" derivedContent="RFC8899"/>),
          the PLPMTUD method can use the reported size from the Hop-by-Hop Option as
          the next search point when it resumes the search algorithm. (This
          use resembles the use of the PTB_SIZE information in <xref format="default" target="RFC8899" section="4.6.2" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-4.6.2" derivedContent="RFC8899"/>.)</li>
          <li pn="section-6.3-3.2">A second use of probe packets is to explore if a path supports a
          packet size greater than the current PLPMTU. If this probe packet is
          successfully delivered (as determined by the source host), then the
          PLPMTU is raised to the size of the successful probe. These probe
          packets do not usually set the Path MTU Hop-by-Hop Option. See
          <xref target="RFC8899" section="1.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-1.2" derivedContent="RFC8899"/>. <xref format="default" target="RFC8899" section="4.1" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-4.1" derivedContent="RFC8899"/> also
	  describes ways that a probe packet can be constructed, depending on whether
          the probe packets carry application data.</li>
        </ul>
        <t indent="0" pn="section-6.3-4">The PMTU Hop-by-Hop Option probe can be sent on packets that
          include application data but needs to be robust to potential loss
          of the packet (i.e., with the possibility that retransmission might
          be needed if the packet is lost).</t>
        <t indent="0" pn="section-6.3-5">Using a PMTU probe on packets that do not carry application data
          will avoid the need for loss recovery if a router on the path drops
          packets that set this Option. (This avoids the transport needing to
          retransmit a lost packet that includes this Option.) This is the
          normal default format for both uses of probes.</t>
        <section anchor="transportsend" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.1">
          <name slugifiedName="name-including-the-option-in-an-">Including the Option in an Outgoing Packet</name>
          <t indent="0" pn="section-6.3.1-1">The upper-layer protocol can request the MinPMTU HBH Option
          to be included in an outgoing IPv6 packet. A transport protocol (or
          upper-layer protocol) can include this Option only on specific
          packets used to test the path. This Option does not need to be
          included in all packets belonging to a flow.</t>
          <t indent="0" pn="section-6.3.1-2">NOTE: Including this Option in a large packet (e.g., one larger
          than the present PMTU) is not likely to be useful, since the large
          packet would itself be dropped by any link along the path with a
          smaller MTU, preventing the Min-PMTU information from reaching the
          destination host.</t>
          <t indent="0" pn="section-6.3.1-3">Discussion:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3.1-4">
            <li pn="section-6.3.1-4.1">
              <t indent="0" pn="section-6.3.1-4.1.1">In the case of TCP, the Option could be included in a packet
              that carries a TCP segment sent after the connection is
              established. A segment without data could be used to avoid the
              need to retransmit this data if the probe packet is lost. The
              discovered value can be used to inform PLPMTUD <xref format="default" target="RFC4821" sectionFormat="of" derivedContent="RFC4821"/>.</t>
              <t indent="0" pn="section-6.3.1-4.1.2">NOTE: A TCP SYN can also negotiate the Maximum Segment Size
              (MSS), which acts as an upper limit to the packet size that can
              be sent by a TCP sender. If this Option were to be included in a
              TCP SYN, it could increase the probability that the SYN segment
              is lost when routers on the path drop packets with this Option
              (see <xref target="HBHblackhole" format="default" sectionFormat="of" derivedContent="Section 6.3.6"/>), which could have an
              unwanted impact on the result of racing Options <xref format="default" target="I-D.ietf-taps-arch" sectionFormat="of" derivedContent="TAPS-ARCH"/> or feature
              negotiation.</t>
            </li>
            <li pn="section-6.3.1-4.2">
              <t indent="0" pn="section-6.3.1-4.2.1">The use with datagram transport protocols (e.g., UDP) is
              harder to characterize because applications using datagram
              transports range from very short-lived (low data-volume
              applications) exchanges to longer (bulk) exchanges of packets
              between the source and destination hosts <xref format="default" target="RFC8085" sectionFormat="of" derivedContent="RFC8085"/>.</t>
            </li>
            <li pn="section-6.3.1-4.3">
              <t indent="0" pn="section-6.3.1-4.3.1">Simple-exchange protocols (i.e., low data-volume applications
              <xref format="default" target="RFC8085" sectionFormat="of" derivedContent="RFC8085"/> that only send one or
              a few packets per transaction) might assume that the PMTU is
              symmetrical. That is, the PMTU is the same in both directions
              or at least not smaller for the return path. This optimization
              does not hold when the paths are not symmetric.</t>
            </li>
            <li pn="section-6.3.1-4.4">
              <t indent="0" pn="section-6.3.1-4.4.1">The MinPMTU HBH Option can be used with ICMPv6
              <xref format="default" target="RFC4443" sectionFormat="of" derivedContent="RFC4443"/>. This requires a
              response from the remote node and therefore is restricted to use
              with ICMPv6 echo messages. The MinPMTU HBH Option
              could provide additional information about the PMTU that might
              be supported by a path. This could be used as a diagnostic tool
              to measure the PMTU of a path. As with other uses, the actual
              supported PMTU is only confirmed after receiving a response to a
              subsequent probe of the PMTU size.</t>
            </li>
            <li pn="section-6.3.1-4.5">
              <t indent="0" pn="section-6.3.1-4.5.1">A datagram transport can utilize DPLPMTUD <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/>. For
	      example, QUIC (see <xref format="default" target="RFC9000" sectionFormat="of" section="14.3" derivedLink="https://rfc-editor.org/rfc/rfc9000#section-14.3" derivedContent="RFC9000"/>) can
              use DPLPMTUD to determine whether the path to a destination will
              support a desired maximum datagram size. When using the IPv6
              MinPMTU HBH Option, the Option could be added to an
              additional QUIC PMTU probe that is of minimal size (or one no
              larger than the currently supported PMTU size). Once the return
              Path MTU value in the MinPMTU HBH Option has been
              learned, DPLPMTUD can be triggered to test for a larger PLPMTU
              using an appropriately sized PLPMTU probe packet (see <xref format="default" target="RFC8899" sectionFormat="of" section="5.3.1" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-5.3.1" derivedContent="RFC8899"/>).</t>
            </li>
            <li pn="section-6.3.1-4.6">
              <t indent="0" pn="section-6.3.1-4.6.1">The use of this Option with DNS and DNSSEC over UDP is
              expected to work for paths where the PMTU is symmetric. The DNS
              server will learn the PMTU from the DNS query messages. If the
              Rtn-PMTU value is smaller, then a large DNSSEC response might be
              dropped and the known problems with PMTUD will then occur. DNS
              and DNSSEC over transport protocols that can carry the PMTU
              ought to work.</t>
            </li>
            <li pn="section-6.3.1-4.7">
              <t indent="0" pn="section-6.3.1-4.7.1">This method also can be used with anycast to discover the
              PMTU of the path, but the use needs to be aware that the anycast
              binding might change.</t>
            </li>
          </ul>
        </section>
        <section anchor="transportvalid" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.2">
          <name slugifiedName="name-validation-of-the-packet-th">Validation of the Packet that Includes the Option</name>
          <t indent="0" pn="section-6.3.2-1">An upper-layer protocol (e.g., transport endpoint) using this
          Option needs to provide protection from data injection attacks by
          off-path devices <xref format="default" target="RFC8085" sectionFormat="of" derivedContent="RFC8085"/>. This
          requires a method to assure that the information in the Option Data
          is provided by a node on the path. This validates that the packet
          forms a part of an existing flow, using context available at the
          upper layer. For example, a TCP connection or UDP application that
          maintains the related state and uses a randomized ephemeral port
          would provide this basic validation to protect from off-path data
          injection; see <xref format="default" target="RFC8085" sectionFormat="of" section="5.1" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-5.1" derivedContent="RFC8085"/>. IPsec <xref format="default" target="RFC4301" sectionFormat="of" derivedContent="RFC4301"/> and TLS <xref format="default" target="RFC8446" sectionFormat="of" derivedContent="RFC8446"/> provide greater assurance.</t>
          <t indent="0" pn="section-6.3.2-2">The upper layer discards any received packet when the packet
          validation fails. When packet validation fails, the upper layer <bcp14>MUST</bcp14>
          also discard the associated Option Data from the MinPMTU HBH
          Option without further processing.</t>
        </section>
        <section anchor="transportrec" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.3">
          <name slugifiedName="name-receiving-the-option">Receiving the Option</name>
          <t indent="0" pn="section-6.3.3-1">For a connection-oriented upper-layer protocol, caching of the
          received Min-PMTU could be implemented by saving the value in the
          connection context at the transport layer. A connectionless upper
          layer (e.g., one using UDP) requires the upper-layer protocol to
          cache the value for each flow it uses.</t>
          <t indent="0" pn="section-6.3.3-2">A destination host that receives a MinPMTU HBH Option with
          the R-Flag <bcp14>SHOULD</bcp14> include the MinPMTU HBH Option in the next
          outgoing IPv6 packet for the corresponding flow.</t>
          <t indent="0" pn="section-6.3.3-3">A simple mechanism could only include this Option (with the
          Rtn-PMTU field set) the first time this Option is received or when
          it notifies a change in the Minimum Path MTU. This limits the number
          of packets, including the Option packets, that are sent. However, this
          does not provide robustness to packet loss or recovery after a
          sender loses state.</t>
          <t indent="0" pn="section-6.3.3-4">Discussion:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3.3-5">
            <li pn="section-6.3.3-5.1">
              <t indent="0" pn="section-6.3.3-5.1.1">Some upper-layer protocols send packets less frequently than
              the rate at which the host receives packets. This provides less
              frequent feedback of the received Rtn-PMTU value. However, a
              host always sends the most recent Rtn-PMTU value.</t>
            </li>
          </ul>
        </section>
        <section anchor="Rtn-MTU" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.4">
          <name slugifiedName="name-using-the-rtn-pmtu-field">Using the Rtn-PMTU Field</name>
          <t indent="0" pn="section-6.3.4-1">The Rtn-PMTU field provides an indication of the PMTU from
          on-path routers. It does not necessarily reflect the actual PMTU
          between the source and destination hosts. Care therefore needs to be
          exercised in using the Rtn-PMTU value. Specifically:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.3.4-2">
            <li pn="section-6.3.4-2.1">The actual PMTU can be lower than the Rtn-PMTU value because
            the Min-PMTU field was not updated by a router on the path that
            did not process the Option.</li>
            <li pn="section-6.3.4-2.2">The actual PMTU may be lower than the Rtn-PMTU value because
            there is a Layer 2 device with a lower MTU.</li>
            <li pn="section-6.3.4-2.3">The actual PMTU may be larger than the Rtn-PMTU value because
            of a corrupted, delayed, or misordered response. A source host
            <bcp14>MUST</bcp14> ignore a Rtn-PMTU value larger than the MTU configured for
            the outgoing link.</li>
            <li pn="section-6.3.4-2.4">The path might have changed between the time when the probe
            was sent and when the Rtn-PMTU value received.</li>
          </ul>
          <t indent="0" pn="section-6.3.4-3">IPv6 requires that every link in the Internet have an MTU of 1280
          octets or greater. A node <bcp14>MUST</bcp14> ignore a Rtn-PMTU value less than
          1280 octets <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/>.</t>
          <t indent="0" pn="section-6.3.4-4">To avoid unintentional dropping of packets that exceed the actual
          PMTU (e.g., Scenario 3 in <xref target="Intro1" format="default" sectionFormat="of" derivedContent="Section 1.1"/>), the source host
          can delay increasing the PMTU until a probe packet with the size of
          the Rtn-PMTU value has been successfully acknowledged by the upper
          layer, confirming that the path supports the larger PMTU. This
          probing increases robustness but adds one additional path round-trip 
          time before the PMTU is updated. This use resembles that of PTB
          messages in <xref format="default" target="RFC8899" sectionFormat="of" section="4.6" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-4.6" derivedContent="RFC8899">DPLPMTUD</xref> (with the important difference
	  being that a PTB
          message can only seek to lower the PMTU, whereas this Option could
          trigger a probe packet to seek to increase the PMTU).</t>
          <t indent="0" pn="section-6.3.4-5"><xref format="default" target="RFC8201" sectionFormat="of" section="5.2" derivedLink="https://rfc-editor.org/rfc/rfc8201#section-5.2" derivedContent="RFC8201"/>
          provides guidance on the caching of PMTU information and also the
          relation to IPv6 flow labels. Implementations should consider the
          impact of Equal-Cost Multipath (ECMP) <xref format="default" target="RFC6438" sectionFormat="of" derivedContent="RFC6438"/>, specifically, whether a PMTU ought to be
          maintained for each transport endpoint or for each network
          address.</t>
        </section>
        <section numbered="true" toc="include" removeInRFC="false" pn="section-6.3.5">
          <name slugifiedName="name-detecting-path-changes">Detecting Path Changes</name>
          <t indent="0" pn="section-6.3.5-1">Path characteristics can change, and the actual PMTU could
          increase or decrease over time, for instance, following a path
          change when packets are forwarded over a link with a different MTU
          than that previously used. To bound the delay in discovering an
          increase in the actual PMTU, a host with a link MTU larger than the
          current PMTU <bcp14>SHOULD</bcp14> periodically send the MinPMTU HBH Option
          with the R-bit set. DPLPMTUD provides recommendations concerning how
          this could be implemented (see <xref format="default" target="RFC8899" sectionFormat="of" section="5.3" derivedLink="https://rfc-editor.org/rfc/rfc8899#section-5.3" derivedContent="RFC8899"/>). Since the Option consumes less capacity
	  than a full-sized probe packet, there can be an advantage in using this to
          detect a change in the path characteristics.</t>
        </section>
        <section anchor="HBHblackhole" numbered="true" toc="include" removeInRFC="false" pn="section-6.3.6">
          <name slugifiedName="name-detection-of-dropping-packe">Detection of Dropping Packets that Include the Option</name>
          <t indent="0" pn="section-6.3.6-1">There is evidence that some middleboxes drop packets that include
          Hop-by-Hop Options. For example, a firewall might drop a packet that
          carries an unknown extension header or Option. This practice is
          expected to decrease as an Option becomes more widely used. It could
          result in the generation of an ICMPv6 message that indicates the problem.
          This could be used to (temporarily) suspend use of this Option.</t>
          <t indent="0" pn="section-6.3.6-2">A middlebox that silently discards a packet with this Option
          results in the dropping of any packet using the Option. This dropping
          can be avoided by appropriate configuration in a controlled
          environment, such as within a data center, but it needs to be
          considered for Internet usage. <xref target="host-os" format="default" sectionFormat="of" derivedContent="Section 6.2"/> recommends
          that this Option is not used on packets where loss might adversely
          impact performance.</t>
        </section>
      </section>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">IANA has registered an IPv6 Hop-by-Hop Option type 
      in the "Destination Options and Hop-by-Hop Options"
      registry within the "Internet Protocol Version 6 (IPv6) Parameters" registry group <xref format="default" target="IANA-HBH" sectionFormat="of" derivedContent="IANA-HBH"/>. This assignment is
      shown in <xref format="default" target="HBH" sectionFormat="of" derivedContent="Section 5"/>.</t>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">This section discusses the security considerations. It first reviews
      router Option processing. It then reviews host processing when receiving
      this Option at the network layer. It then considers two ways in which
      the Option Data can be processed, followed by two approaches for using
      the Option Data. Finally, it discusses middlebox implications related to
      use in the general Internet.</t>
      <section anchor="Security-router" numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-router-option-processing">Router Option Processing</name>
        <t indent="0" pn="section-8.1-1">This Option shares the characteristics of all other IPv6 Hop-by-Hop
        Options, in that, if not supported at line rate, it could be used to
        degrade the performance of a router. This Option, while simple, is no
        different than other uses of IPv6 Hop-by-Hop Options.</t>
        <t indent="0" pn="section-8.1-2">It is common for routers to ignore the Hop-by-Hop Option header or
        to drop packets containing a Hop-by-Hop Option header. Routers
        implementing IPv6 according to <xref format="default" target="RFC8200" sectionFormat="of" derivedContent="RFC8200"/> only examine and process the Hop-by-Hop Options
        header if explicitly configured to do so.</t>
      </section>
      <section anchor="Security-net" numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-network-layer-host-processi">Network-Layer Host Processing</name>
        <t indent="0" pn="section-8.2-1">A malicious attacker can forge a packet directed at a host that
        carries the MinPMTU HBH Option. By design, the fields of this IP
        Option can be modified by the network.</t>
        <t indent="0" pn="section-8.2-2">For comparison, the ICMPv6 PTB message used in Path MTU Discovery <xref format="default" target="RFC8201" sectionFormat="of" derivedContent="RFC8201"/> and the source
        host have an inherent trust relationship with the destination host
        including this Option. This trust relationship can be used to help
        verify the Option. ICMPv6 PTB messages are sent from any
        router on the path to the destination host. The source host has no
        prior knowledge of these routers (except for the first hop
        router).</t>
        <t indent="0" pn="section-8.2-3">Reception of this packet will require processing as the network
        stack parses the packet before the packet is delivered to the 
        upper-layer protocol. This network-layer Option processing is normally
        completed before any upper-layer protocol delivery checks are
        performed.</t>
        <t indent="0" pn="section-8.2-4">The network layer does not normally have sufficient information to
        validate that the packet carrying an Option originated from the
        destination (or an on-path node). It also does not typically have
        sufficient context to demultiplex the packet to identify the related
        transport flow. This can mean that any changes resulting from
        reception of the Option applies to all flows between a pair of
        endpoints.</t>
        <t indent="0" pn="section-8.2-5">These considerations are no different than other uses of Hop-by-Hop
        Options, and this is the use case for PMTUD. The following section
        describes a mitigation for this attack.</t>
      </section>
      <section anchor="Security-upp" numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-validating-use-of-the-optio">Validating Use of the Option Data</name>
        <t indent="0" pn="section-8.3-1">Transport protocols should be designed to provide protection from
        data injection attacks by off-path devices, and mechanisms should be
        described in the Security Considerations section for each transport
        specification (see <xref target="RFC8085" sectionFormat="of" section="5.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-5.1" derivedContent="RFC8085">"UDP Usage Guidelines"</xref>). For example, a TCP or UDP
        application that maintains the related state and uses a randomized
        ephemeral port would provide basic protection. TLS <xref format="default" target="RFC8446" sectionFormat="of" derivedContent="RFC8446"/> or IPsec <xref format="default" target="RFC4301" sectionFormat="of" derivedContent="RFC4301"/> provide cryptographic authentication. An upper-layer 
        protocol that validates each received packet discards any packet
        when this validation fails. In this case, the host <bcp14>MUST</bcp14> also discard
        the associated Option Data from the MinPMTU HBH Option without
        further processing (<xref target="Transport" format="default" sectionFormat="of" derivedContent="Section 6.3"/>).</t>
        <t indent="0" pn="section-8.3-2">A network node on the path has visibility of all packets it
        forwards. By observing the network packet payload, the node might be
        able to construct a packet that might be validated by the destination
        host. Such a node would also be able to drop or limit the flow in
        other ways that could be potentially more disruptive. Authenticating
        the packet, for example, using IPsec <xref format="default" target="RFC4301" sectionFormat="of" derivedContent="RFC4301"/> or TLS <xref format="default" target="RFC8446" sectionFormat="of" derivedContent="RFC8446"/>
        mitigates this attack. Note that the authentication style of the Authentication
	Header (AH)
	<xref format="default" target="RFC4302" sectionFormat="of" derivedContent="RFC4302"/>, while authenticating the payload
        and outer IPv6 header, does not check Hop-by-Hop Options that change
        on route.</t>
      </section>
      <section anchor="Security-pmtud" numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-direct-use-of-the-rtn-pmtu-">Direct Use of the Rtn-PMTU Value</name>
        <t indent="0" pn="section-8.4-1">The simplest way to utilize the Rtn-PMTU value is to directly use
        this to update the PMTU. This approach results in a set of security
        issues when the Option carries malicious data:</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-8.4-2">
          <li pn="section-8.4-2.1">
            <t indent="0" pn="section-8.4-2.1.1">A direct update of the PMTU using the Rtn-PMTU value could
            result in an attacker inflating or reducing the size of the host
            PMTU for the destination. Forcing a reduction in the PMTU can
            decrease the efficiency of network use, might increase the number
            of packets/fragments required to send the same volume of payload
            data, and can prevent sending an unfragmented datagram larger than
            the PMTU. Increasing the PMTU can result in a path silently dropping packets
            (described as a black hole in <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/>) when
            the source host sends packets larger than the actual PMTU. This
            persists until the PMTU is next updated.</t>
          </li>
          <li pn="section-8.4-2.2">
            <t indent="0" pn="section-8.4-2.2.1">The method can be used to solicit a response from the
            destination host. A malicious attacker could forge a packet that
            causes the destination to add the Option to a packet sent to the
            source host. A forged value of Rtn-PMTU in the Option Data might
            also impact the remote endpoint, as described in the previous
            bullet. This persists until a valid MinPMTU HBH Option is
            received. This attack could be mitigated by limiting the sending
            of the MinPMTU HBH Option in reply to incoming packets that
            carry the Option.</t>
          </li>
        </ul>
      </section>
      <section anchor="Security-dplpmtud" numbered="true" toc="include" removeInRFC="false" pn="section-8.5">
        <name slugifiedName="name-using-the-rtn-pmtu-value-as">Using the Rtn-PMTU Value as a Hint for Probing</name>
        <t indent="0" pn="section-8.5-1">Another way to utilize the Rtn-PMTU value is to indirectly trigger
        a probe to determine if the path supports a PMTU of size Rtn-PMTU.
        This approach needs context for the flow and hence assumes an upper-layer 
        protocol that validates the packet that carries the Option (see
        <xref target="Security-upp" format="default" sectionFormat="of" derivedContent="Section 8.3"/>). This is the case when used in
        combination with DPLPMTUD <xref format="default" target="RFC8899" sectionFormat="of" derivedContent="RFC8899"/>.
        A set of security considerations result when an Option carries
        malicious data:</t>
        <ul bare="false" empty="false" indent="3" spacing="normal" pn="section-8.5-2">
          <li pn="section-8.5-2.1">If the forged packet carries a validated Option with a non-zero
          Rtn-PMTU field, the upper-layer protocol could utilize the
          information in the Rtn-PMTU field. A Rtn-PMTU larger than the
          current PMTU can trigger a probe for a new size.</li>
          <li pn="section-8.5-2.2">If the forged packet carries a non-zero Min-PMTU field, the
          upper-layer protocol would change the cached information about the
          path from the source. The cached information at the destination host
          will be overwritten when the host receives another packet that
          includes a MinPMTU HBH Option corresponding to the flow.</li>
          <li pn="section-8.5-2.3">Processing of the Option could cause a destination host to add
          the MinPMTU HBH Option to a packet sent to the source host.
          This Option will carry a Rtn-PMTU value that could have been updated
          by the forged packet. The impact of the source host receiving this
          resembles that discussed previously.</li>
        </ul>
      </section>
      <section anchor="Security-mbox" numbered="true" toc="include" removeInRFC="false" pn="section-8.6">
        <name slugifiedName="name-impact-of-middleboxes">Impact of Middleboxes</name>
        <t indent="0" pn="section-8.6-1">There is evidence that some middleboxes drop packets that include
        Hop-by-Hop Options. For example, a firewall might drop a packet that
        carries an unknown extension header or Option. This practice is
        expected to decrease as the Option becomes more widely used. Methods
        to address this are discussed in <xref target="HBHblackhole" format="default" sectionFormat="of" derivedContent="Section 6.3.6"/>.</t>
        <t indent="0" pn="section-8.6-2">When a forged packet causes a packet that includes the MinPMTU HBH 
        Option to be sent and the return path does not forward packets with 
        this Option, the packet will be dropped (see <xref target="HBHblackhole" format="default" sectionFormat="of" derivedContent="Section 6.3.6"/>). This attack is mitigated by validating the
        Option Data before use and by limiting the rate of responses
        generated. An upper layer could further mitigate the impact by
        responding to an R-Flag by including the Option in a packet that does
        not carry application data.</t>
      </section>
    </section>
    <section anchor="EXP" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-experiment-goals">Experiment Goals</name>
      <t indent="0" pn="section-9-1">This section describes the experimental goals of this
      specification.</t>
      <t indent="0" pn="section-9-2">A successful deployment of the method depends upon several components
      being implemented and deployed:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-3">
        <li pn="section-9-3.1">Support in the sending node (see <xref format="default" target="host-os" sectionFormat="of" derivedContent="Section 6.2"/>). This also requires corresponding support in
        upper-layer protocols (see <xref format="default" target="Transport" sectionFormat="of" derivedContent="Section 6.3"/>).</li>
        <li pn="section-9-3.2">Router support in nodes (see <xref format="default" target="router" sectionFormat="of" derivedContent="Section 6.1"/>). The IETF continues to provide recommendations on
        the use of IPv6 Hop-by-Hop Options, for example, see <xref format="default" section="2.2.2" target="RFC9099" sectionFormat="of" derivedLink="https://rfc-editor.org/rfc/rfc9099#section-2.2.2" derivedContent="RFC9099"/>. This document does not update the
        way router implementations configure support for Hop-by-Hop Options.</li>
        <li pn="section-9-3.3">Support in the receiving node (see <xref format="default" target="transportrec" sectionFormat="of" derivedContent="Section 6.3.3"/>).</li>
      </ul>
      <t indent="0" pn="section-9-4">Experience from deployment is an expected input to any decision to
      progress this specification from Experimental to IETF Standards Track.
      Appropriate inputs might include:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-9-5">
        <li pn="section-9-5.1">reports of implementation experience,</li>
        <li pn="section-9-5.2">measurements of the number paths where the method can be
        used, or</li>
        <li pn="section-9-5.3">measurements showing the benefit realized or the implications of
        using specific methods over specific paths.</li>
      </ul>
    </section>
    <section anchor="IMP" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-implementation-status">Implementation Status</name>
      <t indent="0" pn="section-10-1">At the time this document was published, there are two known
      implementations of the Path MTU Hop-by-Hop Option. These are:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-10-2">
        <li pn="section-10-2.1">Wireshark dissector. This is shipping in production in Wireshark
        version 3.2 <xref format="default" target="WIRESHARK" sectionFormat="of" derivedContent="WIRESHARK"/>.</li>
        <li pn="section-10-2.2">A prototype in the open source version of the FD.io Vector Packet
        Processing (VPP) technology <xref format="default" target="VPP" sectionFormat="of" derivedContent="VPP"/>. At
        the time this document was published, the source code can be found
        <xref format="default" target="VPP_SRC" sectionFormat="of" derivedContent="VPP_SRC"/>.</li>
      </ul>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-taps-arch" to="TAPS-ARCH"/>
    <references pn="section-11">
      <name slugifiedName="name-references">References</name>
      <references pn="section-11.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="IANA-HBH" target="https://www.iana.org/assignments/ipv6-parameters/" quoteTitle="true" derivedAnchor="IANA-HBH">
          <front>
            <title>Destination Options and Hop-by-Hop Options</title>
            <author>
              <organization showOnFrontPage="true">IANA</organization>
            </author>
          </front>
        </reference>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8200" quoteTitle="true" derivedAnchor="RFC8200">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t indent="0">This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="86"/>
          <seriesInfo name="RFC" value="8200"/>
          <seriesInfo name="DOI" value="10.17487/RFC8200"/>
        </reference>
        <reference anchor="RFC8201" target="https://www.rfc-editor.org/info/rfc8201" quoteTitle="true" derivedAnchor="RFC8201">
          <front>
            <title>Path MTU Discovery for IP version 6</title>
            <author initials="J." surname="McCann" fullname="J. McCann">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Mogul" fullname="J. Mogul">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="July"/>
            <abstract>
              <t indent="0">This document describes Path MTU Discovery (PMTUD) for IP version 6. It is largely derived from RFC 1191, which describes Path MTU Discovery for IP version 4.  It obsoletes RFC 1981.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="87"/>
          <seriesInfo name="RFC" value="8201"/>
          <seriesInfo name="DOI" value="10.17487/RFC8201"/>
        </reference>
      </references>
      <references pn="section-11.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="RFC1063" target="https://www.rfc-editor.org/info/rfc1063" quoteTitle="true" derivedAnchor="RFC1063">
          <front>
            <title>IP MTU discovery options</title>
            <author initials="J.C." surname="Mogul" fullname="J.C. Mogul">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C.A." surname="Kent" fullname="C.A. Kent">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Partridge" fullname="C. Partridge">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="McCloghrie" fullname="K. McCloghrie">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1988" month="July"/>
            <abstract>
              <t indent="0">A pair of IP options that can be used to learn the minimum MTU of a path through an internet is described, along with its possible uses.  This is a proposal for an Experimental protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1063"/>
          <seriesInfo name="DOI" value="10.17487/RFC1063"/>
        </reference>
        <reference anchor="RFC1191" target="https://www.rfc-editor.org/info/rfc1191" quoteTitle="true" derivedAnchor="RFC1191">
          <front>
            <title>Path MTU discovery</title>
            <author initials="J.C." surname="Mogul" fullname="J.C. Mogul">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S.E." surname="Deering" fullname="S.E. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1990" month="November"/>
            <abstract>
              <t indent="0">This memo describes a technique for dynamically discovering the maximum transmission unit (MTU) of an arbitrary internet path.  It specifies a small change to the way routers generate one type of ICMP message.  For a path that passes through a router that has not been so changed, this technique might not discover the correct Path MTU, but it will always choose a Path MTU as accurate as, and in many cases more accurate than, the Path MTU that would be chosen by current practice.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1191"/>
          <seriesInfo name="DOI" value="10.17487/RFC1191"/>
        </reference>
        <reference anchor="RFC2460" target="https://www.rfc-editor.org/info/rfc2460" quoteTitle="true" derivedAnchor="RFC2460">
          <front>
            <title>Internet Protocol, Version 6 (IPv6) Specification</title>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1998" month="December"/>
            <abstract>
              <t indent="0">This document specifies version 6 of the Internet Protocol (IPv6), also sometimes referred to as IP Next Generation or IPng.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2460"/>
          <seriesInfo name="DOI" value="10.17487/RFC2460"/>
        </reference>
        <reference anchor="RFC4301" target="https://www.rfc-editor.org/info/rfc4301" quoteTitle="true" derivedAnchor="RFC4301">
          <front>
            <title>Security Architecture for the Internet Protocol</title>
            <author initials="S." surname="Kent" fullname="S. Kent">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Seo" fullname="K. Seo">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="December"/>
            <abstract>
              <t indent="0">This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer.  This document obsoletes RFC 2401 (November 1998).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4301"/>
          <seriesInfo name="DOI" value="10.17487/RFC4301"/>
        </reference>
        <reference anchor="RFC4302" target="https://www.rfc-editor.org/info/rfc4302" quoteTitle="true" derivedAnchor="RFC4302">
          <front>
            <title>IP Authentication Header</title>
            <author initials="S." surname="Kent" fullname="S. Kent">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2005" month="December"/>
            <abstract>
              <t indent="0">This document describes an updated version of the IP Authentication Header (AH), which is designed to provide authentication services in IPv4 and IPv6.  This document obsoletes RFC 2402 (November 1998).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4302"/>
          <seriesInfo name="DOI" value="10.17487/RFC4302"/>
        </reference>
        <reference anchor="RFC4443" target="https://www.rfc-editor.org/info/rfc4443" quoteTitle="true" derivedAnchor="RFC4443">
          <front>
            <title>Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification</title>
            <author initials="A." surname="Conta" fullname="A. Conta">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Deering" fullname="S. Deering">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Gupta" fullname="M. Gupta" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="March"/>
            <abstract>
              <t indent="0">This document describes the format of a set of control messages used in ICMPv6 (Internet Control Message Protocol).  ICMPv6 is the Internet Control Message Protocol for Internet Protocol version 6 (IPv6).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="89"/>
          <seriesInfo name="RFC" value="4443"/>
          <seriesInfo name="DOI" value="10.17487/RFC4443"/>
        </reference>
        <reference anchor="RFC4821" target="https://www.rfc-editor.org/info/rfc4821" quoteTitle="true" derivedAnchor="RFC4821">
          <front>
            <title>Packetization Layer Path MTU Discovery</title>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Heffner" fullname="J. Heffner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="March"/>
            <abstract>
              <t indent="0">This document describes a robust method for Path MTU Discovery (PMTUD) that relies on TCP or some other Packetization Layer to probe an Internet path with progressively larger packets.  This method is described as an extension to RFC 1191 and RFC 1981, which specify ICMP-based Path MTU Discovery for IP versions 4 and 6, respectively.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4821"/>
          <seriesInfo name="DOI" value="10.17487/RFC4821"/>
        </reference>
        <reference anchor="RFC4861" target="https://www.rfc-editor.org/info/rfc4861" quoteTitle="true" derivedAnchor="RFC4861">
          <front>
            <title>Neighbor Discovery for IP version 6 (IPv6)</title>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Nordmark" fullname="E. Nordmark">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Simpson" fullname="W. Simpson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Soliman" fullname="H. Soliman">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="September"/>
            <abstract>
              <t indent="0">This document specifies the Neighbor Discovery protocol for IP Version 6.  IPv6 nodes on the same link use Neighbor Discovery to discover each other's presence, to determine each other's link-layer addresses, to find routers, and to maintain reachability information about the paths to active neighbors.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4861"/>
          <seriesInfo name="DOI" value="10.17487/RFC4861"/>
        </reference>
        <reference anchor="RFC6438" target="https://www.rfc-editor.org/info/rfc6438" quoteTitle="true" derivedAnchor="RFC6438">
          <front>
            <title>Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels</title>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Amante" fullname="S. Amante">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="November"/>
            <abstract>
              <t indent="0">The IPv6 flow label has certain restrictions on its use.  This document describes how those restrictions apply when using the flow label for load balancing by equal cost multipath routing and for link aggregation, particularly for IP-in-IPv6 tunneled traffic.   [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6438"/>
          <seriesInfo name="DOI" value="10.17487/RFC6438"/>
        </reference>
        <reference anchor="RFC7637" target="https://www.rfc-editor.org/info/rfc7637" quoteTitle="true" derivedAnchor="RFC7637">
          <front>
            <title>NVGRE: Network Virtualization Using Generic Routing Encapsulation</title>
            <author initials="P." surname="Garg" fullname="P. Garg" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Wang" fullname="Y. Wang" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="September"/>
            <abstract>
              <t indent="0">This document describes the usage of the Generic Routing Encapsulation (GRE) header for Network Virtualization (NVGRE) in multi-tenant data centers.  Network Virtualization decouples virtual networks and addresses from physical network infrastructure, providing isolation and concurrency between multiple virtual networks on the same physical network infrastructure.  This document also introduces a Network Virtualization framework to illustrate the use cases, but the focus is on specifying the data-plane aspect of NVGRE.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7637"/>
          <seriesInfo name="DOI" value="10.17487/RFC7637"/>
        </reference>
        <reference anchor="RFC8085" target="https://www.rfc-editor.org/info/rfc8085" quoteTitle="true" derivedAnchor="RFC8085">
          <front>
            <title>UDP Usage Guidelines</title>
            <author initials="L." surname="Eggert" fullname="L. Eggert">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Shepherd" fullname="G. Shepherd">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t indent="0">The User Datagram Protocol (UDP) provides a minimal message-passing transport that has no inherent congestion control mechanisms.  This document provides guidelines on the use of UDP for the designers of applications, tunnels, and other protocols that use UDP.  Congestion control guidelines are a primary focus, but the document also provides guidance on other topics, including message sizes, reliability, checksums, middlebox traversal, the use of Explicit Congestion Notification (ECN), Differentiated Services Code Points (DSCPs), and ports.</t>
              <t indent="0">Because congestion control is critical to the stable operation of the Internet, applications and other protocols that choose to use UDP as an Internet transport must employ mechanisms to prevent congestion collapse and to establish some degree of fairness with concurrent traffic.  They may also need to implement additional mechanisms, depending on how they use UDP.</t>
              <t indent="0">Some guidance is also applicable to the design of other protocols (e.g., protocols layered directly on IP or via IP-based tunnels), especially when these protocols do not themselves provide congestion control.</t>
              <t indent="0">This document obsoletes RFC 5405 and adds guidelines for multicast UDP usage.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="145"/>
          <seriesInfo name="RFC" value="8085"/>
          <seriesInfo name="DOI" value="10.17487/RFC8085"/>
        </reference>
        <reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8446" quoteTitle="true" derivedAnchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author initials="E." surname="Rescorla" fullname="E. Rescorla">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="August"/>
            <abstract>
              <t indent="0">This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t indent="0">This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8899" target="https://www.rfc-editor.org/info/rfc8899" quoteTitle="true" derivedAnchor="RFC8899">
          <front>
            <title>Packetization Layer Path MTU Discovery for Datagram Transports</title>
            <author initials="G." surname="Fairhurst" fullname="G. Fairhurst">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Jones" fullname="T. Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Tüxen" fullname="M. Tüxen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Rüngeler" fullname="I. Rüngeler">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Völker" fullname="T. Völker">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="September"/>
            <abstract>
              <t indent="0">This document specifies Datagram Packetization Layer Path MTU Discovery (DPLPMTUD). This is a robust method for Path MTU Discovery (PMTUD) for datagram Packetization Layers (PLs). It allows a PL, or a datagram application that uses a PL, to discover whether a network path can support the current size of datagram.  This can be used to detect and reduce the message size when a sender encounters a packet black hole. It can also probe a network path to discover whether the maximum packet size can be increased.  This provides functionality for datagram transports that is equivalent to the PLPMTUD specification for TCP, specified in RFC 4821, which it updates. It also updates the UDP Usage Guidelines to refer to this method for use with UDP datagrams and updates SCTP.</t>
              <t indent="0">The document provides implementation notes for incorporating Datagram PMTUD into IETF datagram transports or applications that use datagram transports.</t>
              <t indent="0">This specification updates RFC 4960, RFC 4821, RFC 6951, RFC 8085, and RFC 8261.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
        <reference anchor="RFC8900" target="https://www.rfc-editor.org/info/rfc8900" quoteTitle="true" derivedAnchor="RFC8900">
          <front>
            <title>IP Fragmentation Considered Fragile</title>
            <author initials="R." surname="Bonica" fullname="R. Bonica">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="F." surname="Baker" fullname="F. Baker">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Huston" fullname="G. Huston">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Hinden" fullname="R. Hinden">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="O." surname="Troan" fullname="O. Troan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="F." surname="Gont" fullname="F. Gont">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="September"/>
            <abstract>
              <t indent="0">This document describes IP fragmentation and explains how it introduces fragility to Internet communication.</t>
              <t indent="0">This document also proposes alternatives to IP fragmentation and provides recommendations for developers and network operators.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="230"/>
          <seriesInfo name="RFC" value="8900"/>
          <seriesInfo name="DOI" value="10.17487/RFC8900"/>
        </reference>
        <reference anchor="RFC9000" target="https://www.rfc-editor.org/info/rfc9000" quoteTitle="true" derivedAnchor="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author initials="J." surname="Iyengar" fullname="J. Iyengar" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Thomson" fullname="M. Thomson" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="May"/>
            <abstract>
              <t indent="0">This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC9099" target="https://www.rfc-editor.org/info/rfc9099" quoteTitle="true" derivedAnchor="RFC9099">
          <front>
            <title>Operational Security Considerations for IPv6 Networks</title>
            <author initials="É." surname="Vyncke" fullname="É. Vyncke">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Chittimaneni" fullname="K. Chittimaneni">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Kaeo" fullname="M. Kaeo">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Rey" fullname="E. Rey">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="August"/>
            <abstract>
              <t indent="0">Knowledge and experience on how to operate IPv4 networks securely is available, whether the operator is an Internet Service Provider (ISP) or an enterprise internal network. However, IPv6 presents some new security challenges. RFC 4942 describes security issues in the protocol, but network managers also need a more practical, operations-minded document to enumerate advantages and/or disadvantages of certain choices.</t>
              <t indent="0">This document analyzes the operational security issues associated with several types of networks and proposes technical and procedural mitigation techniques. This document is only applicable to managed networks, such as enterprise networks, service provider networks, or managed residential networks.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9099"/>
          <seriesInfo name="DOI" value="10.17487/RFC9099"/>
        </reference>
        <reference anchor="I-D.ietf-taps-arch" target="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-taps-arch.xml" quoteTitle="true" derivedAnchor="TAPS-ARCH">
          <front>
            <title>An Architecture for Transport Services</title>
            <author initials="T" surname="Pauly" fullname="Tommy Pauly" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B" surname="Trammell" fullname="Brian Trammell" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A" surname="Brunstrom" fullname="Anna Brunstrom">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G" surname="Fairhurst" fullname="Godred Fairhurst">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Perkins" fullname="Colin Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="June" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-taps-arch-12"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="VPP" target="https://wiki.fd.io/view/VPP/What_is_VPP%3F" quoteTitle="true" derivedAnchor="VPP">
          <front>
            <title>VPP/What is VPP?</title>
            <author>
              <organization showOnFrontPage="true">FD.io</organization>
            </author>
          </front>
        </reference>
        <reference anchor="VPP_SRC" target="https://gerrit.fd.io/r/c/vpp/+/21948" quoteTitle="true" derivedAnchor="VPP_SRC">
          <front>
            <title>vpp</title>
            <author/>
            <date/>
          </front>
          <refcontent>commit 21948, ip: HBH MTU recording for IPv6</refcontent>
        </reference>
        <reference anchor="WIRESHARK" target="https://www.wireshark.org" quoteTitle="true" derivedAnchor="WIRESHARK">
          <front>
            <title>Wireshark Network Protocol Analyzer</title>
            <author/>
            <date/>
          </front>
        </reference>
      </references>
    </references>
    <section anchor="appendix" numbered="true" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-examples-of-usage">Examples of Usage</name>
      <t indent="0" pn="section-appendix.a-1">This section provides examples that illustrate a use of the MinPMTU
      HBH Option by a source using DPLPMTUD to discover the PLPMTU supported
      by a path. They consider a path where the on-path router has been
      configured with an outgoing MTU of d'. The source starts by transmission
      of packets of size a and then uses DPLPMTUD to seek to increase the
      size in steps resulting in sizes of b, c, d, e, etc. (chosen by the search
      algorithm used by DPLPMTUD). The search algorithm terminates with a
      PLPMTU that is at least d and is less than or equal to d'.</t>
      <t indent="0" pn="section-appendix.a-2">The first example considers DPLPMTUD without using the MinPMTU HBH
      Option. In this case, DPLPMTUD searches using a probe packet that increases in
      size. Probe packets of size e are sent, which are larger than
      the actual PMTU. In this example, PTB messages are not received from the
      routers, and repeated unsuccessful probes result in the search phase
      completing. Packets of data are never sent with a size larger than the
      size of the last confirmed probe packet. Acknowledgments (ACKs) of data packets
      are not shown.</t>
      <figure align="left" suppress-title="false" pn="figure-3">
        <artwork align="center" alt="" name="DPLPMTUD without the MinPMTU HBH Option" type="" pn="section-appendix.a-3.1">
----Packets of data size a ------------------------------&gt;
----Probe size b ----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size b ------------------------------&gt;
----Probe size c ----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size c ------------------------------&gt;
----Probe size d ----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size d ------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
...
----Probe size e --------------X
        X----ICMPv6 PTB d' ----|
----Packets of data size d ------------------------------&gt;
----Probe size e --------------X (again)
        X----ICMPv6 PTB d' ----|
----Packets of data size d ------------------------------&gt;
...
etc. until MaxProbes are unsuccessful and search phase completes.
----Packets of data size d ------------------------------&gt;
</artwork>
      </figure>
      <t indent="0" pn="section-appendix.a-4">The second example considers DPLPMTUD with the MinPMTU HBH Option set
      on a connectivity probe packet.</t>
      <t indent="0" pn="section-appendix.a-5">The IPv6 Option is sent end to end, and the Min-PMTU is updated by a
      router on the path to d', which is returned in a response that also sets
      the MinPMTU HBH Option. Upon receiving the Rtn-PMTU value,
      DPLPMTUD immediately sends a probe packet of the target size d'. If
      the probe packet is confirmed for the path, the PLPMTU is updated,
      allowing the source to use data packets up to size d'. (The search
      algorithm is allowed to continue to probe to see if the path supports a
      larger size.) 
      Packets of data are never sent with a size larger than the last
      confirmed probe size d'.       
      </t>
      <figure align="left" suppress-title="false" pn="figure-4">
        <artwork align="center" alt="" name="DPLPMTUD with the MinPMTU HBH Option" type="" pn="section-appendix.a-6.1">
----Packets of data size a ------------------------------&gt;
----Connectivity probe with MinPMTU-
                            +--updated to minPMTU=d'-----&gt;
 &lt;-----------------ACK with Rtn-PMTU=d'--------------------
----Packets of data size a ------------------------------&gt;
----Probe size d' ---------------------------------------&gt;
 &lt;---------------------------------- ACK of probe ---------
-----Packets of data size d' ----------------------------&gt;
Search phase completes.
-----Packets of data size d' ----------------------------&gt;
</artwork>
      </figure>
      <t indent="0" pn="section-appendix.a-7">The final example considers DPLPMTUD with the MinPMTU HBH Option set
      on a connectivity probe packet but shows the effect when this
      connectivity probe packet is dropped.</t>
      <t indent="0" pn="section-appendix.a-8">In this case, the packet with the MinPMTU HBH Option is not received.
      DPLPMTUD searches using probe packets of increasing size, increasing the
      PLPMTU when the probes are confirmed. An ICMPv6 PTB message is received
      when the probed size exceeds the actual PMTU, indicating a PTB_SIZE of
      d'. DPLPMTUD immediately sends a probe packet of the target size d'.
      If the probe packet is confirmed for the path, the PLPMTU is updated,
      allowing the source to use data packets up to size d'. If the ICMPv6 PTB
      message is not received, the DPLPMTU will be the last confirmed probe
      size, which is d.</t>
      <figure align="left" suppress-title="false" pn="figure-5">
        <artwork align="center" alt="" name="" type="DPLPMTUD with Dropped MinPMTU HBH Option" pn="section-appendix.a-9.1">
----Packets of data size a -------------------------------&gt;
----Connectivity probe with MinPMTU --------X
----Packets of data size a -------------------------------&gt;
----Probe size b -----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size b -------------------------------&gt;
----Probe size c -----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size c -------------------------------&gt;
----Probe size d -----------------------------------------&gt;
 &lt;---------------------------------- ACK of probe --------
----Packets of data size d -------------------------------&gt;
----Probe size e ------------X
 &lt;--ICMPv6 PTB PTB_SIZE d' --|
----Packets of data size d -------------------------------&gt;
----Probe size d' using target set by PTB_SIZE -----------&gt;
 &lt;---------------------------------- ACK of probe --------
 Search phase completes.
----Packets of data size d' ------------------------------&gt;
</artwork>
      </figure>
      <t indent="0" pn="section-appendix.a-10">The number of probe rounds depends on the number of steps needed by
      the search algorithm and is typically larger for a larger PMTU.</t>
    </section>
    <section anchor="Ack" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.b-1">Helpful comments were received from <contact fullname="Tom Herbert"/>,
      <contact fullname="Tom Jones"/>, <contact fullname="Fred       Templin"/>, <contact fullname="Ole Troan"/>, <contact fullname="Tianran Zhou"/>,
      <contact fullname="Jen Linkova"/>, <contact fullname="Brian Carpenter"/>,
      <contact fullname="Peng Shuping"/>, <contact fullname="Mark Smith"/>,
      <contact fullname="Fernando Gont"/>, <contact fullname="Michael Dougherty"/>,
      <contact fullname="Erik Kline"/>, and
      other members of the 6MAN Working Group.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
        <organization showOnFrontPage="true">Check Point Software</organization>
        <address>
          <postal>
            <street>959 Skyway Road</street>
            <city>San Carlos</city>
            <region>CA</region>
            <code>94070</code>
            <country>United States of America</country>
          </postal>
          <email>bob.hinden@gmail.com</email>
        </address>
      </author>
      <author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
        <organization showOnFrontPage="true">University of Aberdeen</organization>
        <address>
          <postal>
            <extaddr>School of Engineering</extaddr>
            <street>Fraser Noble Building</street>
            <city>Aberdeen</city>
            <region/>
            <code>AB24 3UE</code>
            <country>United Kingdom</country>
          </postal>
          <email>gorry@erg.abdn.ac.uk</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
