<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="bcp" consensus="true" docName="draft-ietf-intarea-frag-fragile-17" indexInclude="true" ipr="trust200902" number="8900" prepTime="2020-09-11T16:00:12" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-intarea-frag-fragile-17" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc8900" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="IP Fragmentation Fragile">IP Fragmentation Considered Fragile</title>
    <seriesInfo name="RFC" value="8900" stream="IETF"/>
    <seriesInfo name="BCP" value="230" stream="IETF"/>
    <author fullname="Ron Bonica" initials="R." surname="Bonica">
      <organization showOnFrontPage="true">Juniper Networks</organization>
      <address>
        <postal>
          <street>2251 Corporate Park Drive</street>
          <city>Herndon</city>
          <code>20171</code>
          <region>Virginia</region>
          <country>United States of America</country>
        </postal>
        <email>rbonica@juniper.net</email>
      </address>
    </author>
    <author fullname="Fred Baker" initials="F." surname="Baker">
      <organization showOnFrontPage="true">Unaffiliated</organization>
      <address>
        <postal>
          <city>Santa Barbara</city>
          <region>California</region>
          <code>93117</code>
          <country>United States of America</country>
        </postal>
        <email>FredBaker.IETF@gmail.com</email>
      </address>
    </author>
    <author fullname="Geoff Huston" initials="G." surname="Huston">
      <organization showOnFrontPage="true">APNIC</organization>
      <address>
        <postal>
          <street>6 Cordelia St</street>
          <city>Brisbane</city>
          <region>4101 QLD</region>
          <code/>
          <country>Australia</country>
        </postal>
        <email>gih@apnic.net</email>
      </address>
    </author>
    <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>California</region>
          <code>94070</code>
          <country>United States of America</country>
        </postal>
        <email>bob.hinden@gmail.com</email>
      </address>
    </author>
    <author fullname="Ole Troan" initials="O." surname="Troan">
      <organization showOnFrontPage="true">Cisco</organization>
      <address>
        <postal>
          <street>Philip Pedersens vei 1</street>
          <city>N-1366 Lysaker</city>
          <country>Norway</country>
        </postal>
        <email>ot@cisco.com</email>
      </address>
    </author>
    <author fullname="Fernando Gont" initials="F." surname="Gont">
      <organization showOnFrontPage="true">SI6 Networks</organization>
      <address>
        <postal>
          <street>Evaristo Carriego 2644</street>
          <city>Haedo</city>
          <region>Provincia de Buenos Aires</region>
          <country>Argentina</country>
        </postal>
        <email>fgont@si6networks.com</email>
      </address>
    </author>
    <date month="09" year="2020"/>
    <area>Internet Area</area>
    <workgroup>Internet Area WG</workgroup>
    <keyword>IPv6</keyword>
    <keyword>Fragmentation</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document describes IP fragmentation and explains how it
      introduces fragility to Internet communication.</t>
      <t indent="0" pn="section-abstract-2">This document also proposes alternatives to IP fragmentation and
      provides recommendations for developers and network operators.</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 memo documents an Internet Best Current Practice.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            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).  Further information
            on BCPs is available in 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/rfc8900" 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) 2020 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 Simplified BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Simplified 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-requirements-language">Requirements Language</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-ip-fragmentation">IP Fragmentation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-links-paths-mtu-and-pmtu">Links, Paths, MTU, and PMTU</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-fragmentation-procedures">Fragmentation Procedures</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-upper-layer-reliance-on-ip-">Upper-Layer Reliance on IP Fragmentation</xref></t>
              </li>
            </ul>
          </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-increased-fragility">Increased Fragility</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2">
              <li pn="section-toc.1-1.3.2.1">
                <t indent="0" pn="section-toc.1-1.3.2.1.1"><xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-virtual-reassembly">Virtual Reassembly</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.2">
                <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-policy-based-routing">Policy-Based Routing</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.3">
                <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-network-address-translation">Network Address Translation (NAT)</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.4">
                <t indent="0" pn="section-toc.1-1.3.2.4.1"><xref derivedContent="3.4" format="counter" sectionFormat="of" target="section-3.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-stateless-firewalls">Stateless Firewalls</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.5">
                <t indent="0" pn="section-toc.1-1.3.2.5.1"><xref derivedContent="3.5" format="counter" sectionFormat="of" target="section-3.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-equal-cost-multipath-link-a">Equal-Cost Multipath, Link Aggregate Groups, and Stateless Load Balancers</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.6">
                <t indent="0" pn="section-toc.1-1.3.2.6.1"><xref derivedContent="3.6" format="counter" sectionFormat="of" target="section-3.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-ipv4-reassembly-errors-at-h">IPv4 Reassembly Errors at High Data Rates</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.7">
                <t indent="0" pn="section-toc.1-1.3.2.7.1"><xref derivedContent="3.7" format="counter" sectionFormat="of" target="section-3.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-security-vulnerabilities">Security Vulnerabilities</xref></t>
              </li>
              <li pn="section-toc.1-1.3.2.8">
                <t indent="0" pn="section-toc.1-1.3.2.8.1"><xref derivedContent="3.8" format="counter" sectionFormat="of" target="section-3.8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-pmtu-black-holing-due-to-ic">PMTU Black-Holing Due to ICMP Loss</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.3.2.8.2">
                  <li pn="section-toc.1-1.3.2.8.2.1">
                    <t indent="0" pn="section-toc.1-1.3.2.8.2.1.1"><xref derivedContent="3.8.1" format="counter" sectionFormat="of" target="section-3.8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-transient-loss">Transient Loss</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.8.2.2">
                    <t indent="0" pn="section-toc.1-1.3.2.8.2.2.1"><xref derivedContent="3.8.2" format="counter" sectionFormat="of" target="section-3.8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incorrect-implementation-of">Incorrect Implementation of Security Policy</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.8.2.3">
                    <t indent="0" pn="section-toc.1-1.3.2.8.2.3.1"><xref derivedContent="3.8.3" format="counter" sectionFormat="of" target="section-3.8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-persistent-loss-caused-by-a">Persistent Loss Caused by Anycast</xref></t>
                  </li>
                  <li pn="section-toc.1-1.3.2.8.2.4">
                    <t indent="0" pn="section-toc.1-1.3.2.8.2.4.1"><xref derivedContent="3.8.4" format="counter" sectionFormat="of" target="section-3.8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-persistent-loss-caused-by-u">Persistent Loss Caused by Unidirectional Routing</xref></t>
                  </li>
                </ul>
              </li>
              <li pn="section-toc.1-1.3.2.9">
                <t indent="0" pn="section-toc.1-1.3.2.9.1"><xref derivedContent="3.9" format="counter" sectionFormat="of" target="section-3.9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-black-holing-due-to-filteri">Black-Holing Due to Filtering or Loss</xref></t>
              </li>
            </ul>
          </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-alternatives-to-ip-fragment">Alternatives to IP Fragmentation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-transport-layer-solutions">Transport-Layer Solutions</xref></t>
              </li>
              <li pn="section-toc.1-1.4.2.2">
                <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-application-layer-solutions">Application-Layer Solutions</xref></t>
              </li>
            </ul>
          </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-applications-that-rely-on-i">Applications That Rely on IPv6 Fragmentation</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-domain-name-service-dns">Domain Name Service (DNS)</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-open-shortest-path-first-os">Open Shortest Path First (OSPF)</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-packet-in-packet-encapsulat">Packet-in-Packet Encapsulations</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.4">
                <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-udp-applications-enhancing-">UDP Applications Enhancing Performance</xref></t>
              </li>
            </ul>
          </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-recommendations">Recommendations</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-for-application-and-protoco">For Application and Protocol Developers</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-for-system-developers">For System Developers</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-for-middlebox-developers">For Middlebox Developers</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-for-ecmp-lag-and-load-balan">For ECMP, LAG, and Load-Balancer Developers And Operators</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.5">
                <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-for-network-operators">For Network Operators</xref></t>
              </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>
          </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-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Operational experience <xref target="Kent" format="default" sectionFormat="of" derivedContent="Kent"/>
        <xref target="Huston" format="default" sectionFormat="of" derivedContent="Huston"/> <xref target="RFC7872" format="default" sectionFormat="of" derivedContent="RFC7872"/> 
      reveals that IP fragmentation
      introduces fragility to Internet communication. This document describes
      IP fragmentation and explains the fragility it introduces. It also
      proposes alternatives to IP fragmentation and provides recommendations
      for developers and network operators.</t>
      <t indent="0" pn="section-1-2">While this document identifies issues associated with IP
      fragmentation, it does not recommend deprecation. Legacy protocols that
      depend upon IP fragmentation would do well to be updated to remove that dependency.
      However, some applications and environments (see <xref target="rely" format="default" sectionFormat="of" derivedContent="Section 5"/>)
      require IP fragmentation.  In these cases, the protocol will continue 
      to rely on IP fragmentation, but the designer should be aware that 
      fragmented packets may result in black holes.  A design should include 
      appropriate safeguards.</t>
      <t indent="0" pn="section-1-3">Rather than deprecating IP fragmentation, this document recommends
      that upper-layer protocols address the problem of fragmentation at their
      layer, reducing their reliance on IP fragmentation to the greatest
      degree possible.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-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 target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as
    shown here.
        </t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-ip-fragmentation">IP Fragmentation</name>
      <section anchor="pmtu" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-links-paths-mtu-and-pmtu">Links, Paths, MTU, and PMTU</name>
        <t indent="0" pn="section-2.1-1">An Internet path connects a source node to a destination node. A
        path may contain links and routers. If a path contains more than one
        link, the links are connected in series, and a router connects each
        link to the next.</t>
        <t indent="0" pn="section-2.1-2">Internet paths are dynamic. Assume that the path from one node
        to another contains a set of links and routers. If a link or a
        router fails, the path can also change so that it includes a
        different set of links and routers.</t>
        <t indent="0" pn="section-2.1-3">
    Each link is constrained by the number of octets that it can convey in
    a single IP packet.  This constraint is called the link Maximum
    Transmission Unit (MTU). <xref target="RFC0791" format="default" sectionFormat="of" derivedContent="RFC0791">IPv4</xref> 
    requires every link to support an MTU of 68 octets or greater (see <xref target="note-1" format="none" sectionFormat="of" derivedContent="">NOTE 1</xref>). 
    <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200">IPv6</xref> similarly requires every link to 
    support an MTU of 1280 octets or greater. These are called the IPv4 and IPv6 minimum link MTUs.
</t>
        <t indent="0" pn="section-2.1-4">Some links, and some ways of using links, result in
	additional variable overhead. For the simple case of tunnels,
	this document defers to other documents.  For other cases,
	such as MPLS, this document considers the link MTU to include
	appropriate allowance for any such overhead.</t>
        <t indent="0" pn="section-2.1-5">Likewise, each Internet path is constrained by the number of octets
        that it can convey in a single IP packet. This constraint is called
        the Path MTU (PMTU). For any given path, the PMTU is equal to the
        smallest of its link MTUs. Because Internet paths are dynamic, PMTU
        is also dynamic.</t>
        <t indent="0" pn="section-2.1-6">For reasons described below, source nodes estimate the PMTU between
        themselves and destination nodes. A source node can produce extremely
        conservative PMTU estimates in which:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.1-7">
          <li pn="section-2.1-7.1">The estimate for each IPv4 path is equal to the IPv4 minimum
            link MTU.</li>
          <li pn="section-2.1-7.2">The estimate for each IPv6 path is equal to the IPv6 minimum
            link MTU.</li>
        </ul>
        <t indent="0" pn="section-2.1-8">While these conservative estimates are guaranteed to be less
        than or equal to the actual PMTU, they are likely to be much less than
        the actual PMTU. This may adversely affect upper-layer protocol
        performance.</t>
        <t indent="0" pn="section-2.1-9">By executing Path MTU Discovery (PMTUD) procedures <xref target="RFC1191" format="default" sectionFormat="of" derivedContent="RFC1191"/>
          <xref target="RFC8201" format="default" sectionFormat="of" derivedContent="RFC8201"/>, a source node can
        maintain a less conservative estimate of the PMTU between itself and a
        destination node. In PMTUD, the source node produces an initial PMTU
        estimate. This initial estimate is equal to the MTU of the first link
        along the path to the destination node. It can be greater than the
        actual PMTU.</t>
        <t indent="0" pn="section-2.1-10">Having produced an initial PMTU estimate, the source node sends
        non-fragmentable IP packets to the destination node (see <xref target="note-2" format="none" sectionFormat="of" derivedContent="">NOTE 2</xref>). If
        one of these packets is larger than the actual PMTU, a downstream
        router will not be able to forward the packet through the next link
        along the path. Therefore, the downstream router drops the packet and
        sends an Internet Control Message Protocol (ICMP)
        <xref target="RFC0792" format="default" sectionFormat="of" derivedContent="RFC0792"/> <xref target="RFC4443" format="default" sectionFormat="of" derivedContent="RFC4443"/> Packet Too Big (PTB) message to
        the source node (see <xref target="note-3" format="none" sectionFormat="of" derivedContent="">NOTE 3</xref>). The ICMP PTB message indicates the MTU
        of the link through which the packet could not be forwarded. The
        source node uses this information to refine its PMTU estimate.</t>
        <t indent="0" pn="section-2.1-11">PMTUD produces a running estimate of the PMTU between a source node
        and a destination node. Because PMTU is dynamic, the PMTU estimate can
        be larger than the actual PMTU. In order to detect PMTU increases,
        PMTUD occasionally resets the PMTU estimate to its initial value and
        repeats the procedure described above.</t>
        <t indent="0" pn="section-2.1-12">Ideally, PMTUD operates as described above. However, in some
        scenarios, PMTUD fails. For example:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.1-13">
          <li pn="section-2.1-13.1">PMTUD relies on the network's ability to deliver ICMP PTB
            messages to the source node. If the network cannot deliver ICMP
            PTB messages to the source node, PMTUD fails.</li>
          <li pn="section-2.1-13.2">PMTUD is susceptible to attack because ICMP messages are easily
            <xref target="RFC5927" format="default" sectionFormat="of" derivedContent="RFC5927">forged</xref> and not authenticated by the
            receiver. Such attacks can cause PMTUD to produce unnecessarily
            conservative PMTU estimates.</li>
        </ul>
        <dl newline="false" spacing="normal" indent="3" pn="section-2.1-14">
          <dt anchor="note-1" pn="section-2.1-14.1">NOTE 1:</dt>
          <dd pn="section-2.1-14.2">In IPv4, every host must be able to reassemble a packet 
        whose length is less than or equal to 576 octets. However, the IPv4 minimum 
        link MTU is not 576. Section <xref target="RFC0791" section="3.2" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc791#section-3.2" derivedContent="RFC0791"/>
        of <xref target="RFC0791" format="default" sectionFormat="of" derivedContent="RFC0791">RFC 791</xref> explicitly states 
        that the IPv4 minimum link MTU is 68 octets.
       </dd>
          <dt anchor="note-2" pn="section-2.1-14.3">NOTE 2:</dt>
          <dd pn="section-2.1-14.4">A non-fragmentable packet can be fragmented at its source.
        However, it cannot be fragmented by a downstream node. An IPv4 packet
        whose Don't Fragment (DF) bit is set to 0 is fragmentable. An IPv4 packet whose
        DF bit is set to 1 is non-fragmentable. All IPv6 packets are also
        non-fragmentable.</dd>
          <dt anchor="note-3" pn="section-2.1-14.5">NOTE 3:</dt>
          <dd pn="section-2.1-14.6">The ICMP PTB message has two instantiations. In <xref target="RFC0792" format="default" sectionFormat="of" derivedContent="RFC0792">ICMPv4</xref>, the ICMP PTB message is a Destination
        Unreachable message with Code equal to 4 (fragmentation needed and DF 
        set). This message was augmented by <xref target="RFC1191" format="default" sectionFormat="of" derivedContent="RFC1191"/> to
        indicate the MTU of the link through which the packet could not be
        forwarded. In <xref target="RFC4443" format="default" sectionFormat="of" derivedContent="RFC4443">ICMPv6</xref>, the ICMP PTB
        message is a Packet Too Big Message with Code equal to 0. This
        message also indicates the MTU of the link through which the packet
        could not be forwarded.</dd>
        </dl>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-fragmentation-procedures">Fragmentation Procedures</name>
        <t indent="0" pn="section-2.2-1">When an upper-layer protocol submits data to the underlying IP
        module, and the resulting IP packet's length is greater than the PMTU,
        the packet is divided into fragments. Each fragment includes an IP
        header and a portion of the original packet.</t>
        <t indent="0" pn="section-2.2-2"><xref target="RFC0791" format="default" sectionFormat="of" derivedContent="RFC0791"/> describes IPv4 fragmentation procedures.
        An IPv4 packet whose DF bit is set to 1 may be fragmented by the
        source node, but may not be fragmented by a downstream router. An IPv4
        packet whose DF bit is set to 0 may be fragmented by the source
        node or by a downstream router. When an IPv4 packet is fragmented, all
        IP options (which are within the IPv4 header) appear in the first fragment, but only options whose "copy"
        bit is set to 1 appear in subsequent fragments.</t>
        <t indent="0" pn="section-2.2-3"><xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>, notably in 
        Section <xref target="RFC8200" section="4.5" sectionFormat="bare" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.5" derivedContent="RFC8200"/>, describes
	IPv6 fragmentation procedures.  An IPv6 packet may be
	fragmented only at the source node. When an IPv6 packet is
	fragmented, all extension headers appear in the first
	fragment, but only per-fragment headers appear in subsequent
	fragments. Per-fragment headers include the following:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.2-4">
          <li pn="section-2.2-4.1">The IPv6 header.</li>
          <li pn="section-2.2-4.2">The Hop-by-Hop Options header (if present).</li>
          <li pn="section-2.2-4.3">The Destination Options header (if present and if it precedes a
            Routing header).</li>
          <li pn="section-2.2-4.4">The Routing header (if present).</li>
          <li pn="section-2.2-4.5">The Fragment header.</li>
        </ul>
        <t indent="0" pn="section-2.2-5">In IPv4, the upper-layer header usually appears in the 
        first fragment, due to the sizes of the headers involved. 
        In IPv6, the upper-layer header must appear in the first fragment.</t>
      </section>
      <section anchor="upper" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-upper-layer-reliance-on-ip-">Upper-Layer Reliance on IP Fragmentation</name>
        <t indent="0" pn="section-2.3-1">Upper-layer protocols can operate in the following modes:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.3-2">
          <li pn="section-2.3-2.1">Do not rely on IP fragmentation.</li>
          <li pn="section-2.3-2.2">Rely on IP fragmentation by the source node only.</li>
          <li pn="section-2.3-2.3">Rely on IP fragmentation by any node.</li>
        </ul>
        <t indent="0" pn="section-2.3-3">Upper-layer protocols running over IPv4 can operate in all of the
        above-mentioned modes. Upper-layer protocols running over IPv6 can
        operate in the first and second modes only.</t>
        <t indent="0" pn="section-2.3-4">Upper-layer protocols that operate in the first two modes (above)
        require access to the PMTU estimate. In order to fulfill this
        requirement, they can:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.3-5">
          <li pn="section-2.3-5.1">Estimate the PMTU to be equal to the IPv4 or IPv6 minimum link
            MTU.</li>
          <li pn="section-2.3-5.2">Access the estimate that PMTUD produced.</li>
          <li pn="section-2.3-5.3">Execute PMTUD procedures themselves.</li>
          <li pn="section-2.3-5.4">Execute Packetization Layer PMTUD (PLPMTUD) procedures
            <xref target="RFC4821" format="default" sectionFormat="of" derivedContent="RFC4821"/>
            <xref target="RFC8899" format="default" sectionFormat="of" derivedContent="RFC8899"/>.</li>
        </ul>
        <t indent="0" pn="section-2.3-6">According to PLPMTUD procedures, the upper-layer protocol
        maintains a running PMTU estimate. It does so by sending probe packets
        of various sizes to its upper-layer peer and receiving
        acknowledgements. This strategy differs from PMTUD in that it relies
        on acknowledgement of received messages, as opposed to ICMP PTB
        messages concerning dropped messages. Therefore, PLPMTUD does not rely
        on the network's ability to deliver ICMP PTB messages to the
        source.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-increased-fragility">Increased Fragility</name>
      <t indent="0" pn="section-3-1">This section explains how IP fragmentation introduces fragility to
      Internet communication.</t>
      <section anchor="virtualreassembly" numbered="true" toc="include" removeInRFC="false" pn="section-3.1">
        <name slugifiedName="name-virtual-reassembly">Virtual Reassembly</name>
        <t indent="0" pn="section-3.1-1">Virtual reassembly is a procedure in which a device
	conceptually reassembles a packet, forwards its fragments, and discards
	the reassembled copy. In <xref target="RFC6346" format="default" sectionFormat="of" derivedContent="RFC6346">Address plus Port (A+P)</xref> 
        and <xref target="RFC6888" format="default" sectionFormat="of" derivedContent="RFC6888">Carrier Grade NAT (CGN)</xref>, virtual reassembly
	is required in order to correctly translate fragment
	addresses.  It could be useful to address the problems in Sections
	<xref target="mb" format="counter" sectionFormat="of" derivedContent="3.2"/>, <xref target="nat" format="counter" sectionFormat="of" derivedContent="3.3"/>, 
        <xref target="statelessfirewall" format="counter" sectionFormat="of" derivedContent="3.4"/>, and <xref target="ecmp" format="counter" sectionFormat="of" derivedContent="3.5"/>.
        </t>
        <t indent="0" pn="section-3.1-2">Virtual reassembly is computationally expensive and holds 
        state for indeterminate periods of time. Therefore, it is prone 
        to errors and <xref target="at" format="default" sectionFormat="of" derivedContent="Section 3.7">attacks</xref>.</t>
      </section>
      <section anchor="mb" numbered="true" toc="include" removeInRFC="false" pn="section-3.2">
        <name slugifiedName="name-policy-based-routing">Policy-Based Routing</name>
        <t indent="0" pn="section-3.2-1">IP fragmentation causes problems for routers that implement
        policy-based routing.</t>
        <t indent="0" pn="section-3.2-2">When a router receives a packet, it identifies the next hop on
        route to the packet's destination and forwards the packet to that
        next hop. In order to identify the next hop, the router interrogates a
        local data structure called the Forwarding Information Base (FIB).</t>
        <t indent="0" pn="section-3.2-3">Normally, the FIB contains destination-based entries that map a
        destination prefix to a next hop. Policy-based routing allows
        destination-based and policy-based entries to coexist in the same FIB.
        A policy-based FIB entry maps multiple fields, drawn from either the
        IP or transport-layer header, to a next hop.</t>
        <t indent="0" pn="section-3.2-4"/>
        <table anchor="FIB" align="center" pn="table-1">
          <name slugifiedName="name-policy-based-routing-fib">Policy-Based Routing FIB</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Entry</th>
              <th align="left" colspan="1" rowspan="1">Type</th>
              <th align="left" colspan="1" rowspan="1">Dest. Prefix</th>
              <th align="left" colspan="1" rowspan="1">Next Hdr / Dest. Port</th>
              <th align="left" colspan="1" rowspan="1">Next Hop</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">1</td>
              <td align="left" colspan="1" rowspan="1">Destination-based</td>
              <td align="left" colspan="1" rowspan="1">2001:db8::1/128</td>
              <td align="left" colspan="1" rowspan="1">Any / Any</td>
              <td align="left" colspan="1" rowspan="1">2001:db8:2::2</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">2</td>
              <td align="left" colspan="1" rowspan="1">Policy-based</td>
              <td align="left" colspan="1" rowspan="1">2001:db8::1/128</td>
              <td align="left" colspan="1" rowspan="1">TCP / 80</td>
              <td align="left" colspan="1" rowspan="1">2001:db8:3::3</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-3.2-6">Assume that a router maintains the FIB in <xref target="FIB" format="default" sectionFormat="of" derivedContent="Table 1"/>. The
        first FIB entry is destination-based. It maps a destination prefix
        2001:db8::1/128 to a next hop 2001:db8:2::2. The second FIB entry is
        policy-based. It maps the same destination prefix 2001:db8::1/128
        and a destination port (TCP / 80) to a different next hop
        (2001:db8:3::3). The second entry is more specific than the first.</t>
        <t indent="0" pn="section-3.2-7">When the router receives the first fragment of a packet that is
        destined for TCP port 80 on 2001:db8::1, it interrogates the FIB. Both
        FIB entries satisfy the query. The router selects the second FIB entry
        because it is more specific and forwards the packet to
        2001:db8:3::3.</t>
        <t indent="0" pn="section-3.2-8">When the router receives the second fragment of the packet, it
        interrogates the FIB again. This time, only the first FIB entry
        satisfies the query, because the second fragment contains no
        indication that the packet is destined for TCP port 80. Therefore, the
        router selects the first FIB entry and forwards the packet to
        2001:db8:2::2.</t>
        <t indent="0" pn="section-3.2-9">Policy-based routing is also known as filter-based forwarding.</t>
      </section>
      <section anchor="nat" numbered="true" toc="include" removeInRFC="false" pn="section-3.3">
        <name slugifiedName="name-network-address-translation">Network Address Translation (NAT)</name>
        <t indent="0" pn="section-3.3-1">IP fragmentation causes problems for Network Address Translation
        (NAT) devices. When a NAT device detects a new, outbound flow, it maps
        that flow's source port and IP address to another source port and IP
        address. Having created that mapping, the NAT device translates:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.3-2">
          <li pn="section-3.3-2.1">The source IP address and source port on each outbound
            packet.</li>
          <li pn="section-3.3-2.2">The destination IP address and destination port on each inbound
            packet.</li>
        </ul>
        <t indent="0" pn="section-3.3-3"/>
        <t indent="0" pn="section-3.3-4"><xref target="RFC6346" format="default" sectionFormat="of" derivedContent="RFC6346">A+P</xref> and 
        <xref target="RFC6888" format="default" sectionFormat="of" derivedContent="RFC6888">Carrier Grade NAT (CGN)</xref> 
        are two common NAT strategies. In both approaches, the NAT device must virtually
        reassemble fragmented packets in order to translate and forward each
        fragment.</t>
      </section>
      <section anchor="statelessfirewall" numbered="true" toc="include" removeInRFC="false" pn="section-3.4">
        <name slugifiedName="name-stateless-firewalls">Stateless Firewalls</name>
        <t indent="0" pn="section-3.4-1">As discussed in more detail in <xref target="at" format="default" sectionFormat="of" derivedContent="Section 3.7"/>, IP
        fragmentation causes problems for stateless firewalls whose rules
        include TCP and UDP ports. Because port information is only
	available in the first fragment and not available
        in the subsequent fragments, the firewall is limited to the following
        options:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.4-2">
          <li pn="section-3.4-2.1">Accept all subsequent fragments, possibly admitting certain
            classes of attack.</li>
          <li pn="section-3.4-2.2">Block all subsequent fragments, possibly blocking legitimate
            traffic.</li>
        </ul>
        <t indent="0" pn="section-3.4-3">Neither option is attractive.</t>
      </section>
      <section anchor="ecmp" numbered="true" toc="include" removeInRFC="false" pn="section-3.5">
        <name slugifiedName="name-equal-cost-multipath-link-a">Equal-Cost Multipath, Link Aggregate Groups, and Stateless Load Balancers</name>
        <t indent="0" pn="section-3.5-1">IP fragmentation causes problems for Equal-Cost Multipath (ECMP),
        Link Aggregate Groups (LAG), and other stateless load-distribution
        technologies. In order to assign a packet or packet fragment to a
        link, an intermediate node executes a hash (i.e., load-distributing)
        algorithm. The following paragraphs describe a commonly deployed hash
        algorithm.</t>
        <t indent="0" pn="section-3.5-2">If the packet or packet fragment contains a transport-layer header,
        the algorithm accepts the following 5-tuple as input:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.5-3">
          <li pn="section-3.5-3.1">IP Source Address.</li>
          <li pn="section-3.5-3.2">IP Destination Address.</li>
          <li pn="section-3.5-3.3">IPv4 Protocol or IPv6 Next Header.</li>
          <li pn="section-3.5-3.4">transport-layer source port.</li>
          <li pn="section-3.5-3.5">transport-layer destination port.</li>
        </ul>
        <t indent="0" pn="section-3.5-4">If the packet or packet fragment does not contain a
        transport-layer header, the algorithm accepts only the following
        3-tuple as input:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.5-5">
          <li pn="section-3.5-5.1">IP Source Address.</li>
          <li pn="section-3.5-5.2">IP Destination Address.</li>
          <li pn="section-3.5-5.3">IPv4 Protocol or IPv6 Next Header.</li>
        </ul>
        <t indent="0" pn="section-3.5-6">Therefore, non-fragmented packets belonging to a flow can be
        assigned to one link while fragmented packets belonging to the same
        flow can be divided between that link and another. This can cause
        suboptimal load distribution.</t>
        <t indent="0" pn="section-3.5-7"><xref target="RFC6438" format="default" sectionFormat="of" derivedContent="RFC6438"/> offers a partial solution to this problem
        for IPv6 devices only. According to <xref target="RFC6438" format="default" sectionFormat="of" derivedContent="RFC6438"/>:</t>
        <blockquote pn="section-3.5-8">At intermediate routers that perform load distribution, the hash
        algorithm used to determine the outgoing component-link in an ECMP
        and/or LAG toward the next hop <bcp14>MUST</bcp14> minimally include the 3-tuple
        {dest addr, source addr, flow label} and <bcp14>MAY</bcp14> also include the
        remaining components of the 5-tuple.</blockquote>
        <t indent="0" pn="section-3.5-9">If the algorithm includes only the 3-tuple {dest addr, source addr,
        flow label}, it will assign all fragments belonging to a packet to the
        same link. (See <xref target="RFC6437" format="default" sectionFormat="of" derivedContent="RFC6437"/> and <xref target="RFC7098" format="default" sectionFormat="of" derivedContent="RFC7098"/>).</t>
        <t indent="0" pn="section-3.5-10">In order to avoid the problem described above, implementations
        <bcp14>SHOULD</bcp14> implement the recommendations provided in <xref target="lagrec" format="default" sectionFormat="of" derivedContent="Section 6.4"/> of this document.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.6">
        <name slugifiedName="name-ipv4-reassembly-errors-at-h">IPv4 Reassembly Errors at High Data Rates</name>
        <t indent="0" pn="section-3.6-1">IPv4 fragmentation is not sufficiently robust for use under some
        conditions in today's Internet. At high data rates, the 16-bit IP
        identification field is not large enough to prevent duplicate IDs, resulting in frequent
        incorrectly assembled IP fragments, and the TCP and UDP checksums are
        insufficient to prevent the resulting corrupted datagrams from being
        delivered to upper-layer protocols. <xref target="RFC4963" format="default" sectionFormat="of" derivedContent="RFC4963"/>
        describes some easily reproduced experiments demonstrating the
        problem and discusses some of the operational implications of these
        observations.</t>
        <t indent="0" pn="section-3.6-2">These reassembly issues do not occur as frequently in IPv6 because
        the IPv6 identification field is 32 bits long.</t>
      </section>
      <section anchor="at" numbered="true" toc="include" removeInRFC="false" pn="section-3.7">
        <name slugifiedName="name-security-vulnerabilities">Security Vulnerabilities</name>
        <t indent="0" pn="section-3.7-1">Security researchers have documented several attacks that exploit
        IP fragmentation. The following are examples:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.7-2">
          <li pn="section-3.7-2.1">Overlapping fragment attacks <xref target="RFC1858" format="default" sectionFormat="of" derivedContent="RFC1858"/>
            <xref target="RFC3128" format="default" sectionFormat="of" derivedContent="RFC3128"/> <xref target="RFC5722" format="default" sectionFormat="of" derivedContent="RFC5722"/>.</li>
          <li pn="section-3.7-2.2">Resource exhaustion attacks.</li>
          <li pn="section-3.7-2.3">Attacks based on predictable fragment identification values
            <xref target="RFC7739" format="default" sectionFormat="of" derivedContent="RFC7739"/>.</li>
          <li pn="section-3.7-2.4">Evasion of Network Intrusion Detection Systems (NIDS) <xref target="Ptacek1998" format="default" sectionFormat="of" derivedContent="Ptacek1998"/>.</li>
        </ul>
        <t indent="0" pn="section-3.7-3">In the overlapping fragment attack, an attacker constructs a series
        of packet fragments. The first fragment contains an IP header, a
        transport-layer header, and some transport-layer payload. This
        fragment complies with local security policy and is allowed to pass
        through a stateless firewall. A second fragment, having a nonzero
        offset, overlaps with the first fragment. The second fragment also
        passes through the stateless firewall. When the packet is reassembled,
        the transport-layer header from the first fragment is overwritten by
        data from the second fragment. The reassembled packet does not comply
        with local security policy. Had it traversed the firewall in one
        piece, the firewall would have rejected it.</t>
        <t indent="0" pn="section-3.7-4">A stateless firewall cannot protect against the overlapping
        fragment attack. However, destination nodes can protect against the
        overlapping fragment attack by implementing the procedures described
        in RFC 1858, RFC 3128, and RFC 8200. These reassembly procedures detect
        the overlap and discard the packet.</t>
        <t indent="0" pn="section-3.7-5">The fragment reassembly algorithm is a stateful procedure in an
        otherwise stateless protocol. Therefore, it can be exploited by
        resource exhaustion attacks. An attacker can construct a series of
        fragmented packets with one fragment missing from each packet so that
        the reassembly is impossible. Thus, this attack causes resource
        exhaustion on the destination node, possibly denying reassembly
        services to other flows. This type of attack can be mitigated by
        flushing fragment reassembly buffers when necessary, at the expense of
        possibly dropping legitimate fragments.</t>
        <t indent="0" pn="section-3.7-6">Each IP fragment contains an "Identification" field that
        destination nodes use to reassemble fragmented packets. Some
        implementations set the Identification field to a predictable value,
        thus making it easy for an attacker to forge malicious IP fragments
        that would cause the reassembly procedure for legitimate packets to
        fail.</t>
        <t indent="0" pn="section-3.7-7">NIDS aims at identifying malicious activity by analyzing network
        traffic. Ambiguity in the possible result of the fragment reassembly
        process may allow an attacker to evade these systems. Many of these
        systems try to mitigate some of these evasion techniques (e.g., by
        computing all possible outcomes of the fragment reassembly process, at
        the expense of increased processing requirements).</t>
      </section>
      <section anchor="PTB" numbered="true" toc="include" removeInRFC="false" pn="section-3.8">
        <name slugifiedName="name-pmtu-black-holing-due-to-ic">PMTU Black-Holing Due to ICMP Loss</name>
        <t indent="0" pn="section-3.8-1">As mentioned in <xref target="upper" format="default" sectionFormat="of" derivedContent="Section 2.3"/>, upper-layer protocols can
        be configured to rely on PMTUD. Because PMTUD relies upon the network
        to deliver ICMP PTB messages, those protocols also rely on the
        networks to deliver ICMP PTB messages.</t>
        <t indent="0" pn="section-3.8-2">According to <xref target="RFC4890" format="default" sectionFormat="of" derivedContent="RFC4890"/>, ICMPv6 PTB messages must not
        be filtered. However, ICMP PTB delivery is not reliable. It is subject
        to both transient and persistent loss.</t>
        <t indent="0" pn="section-3.8-3">Transient loss of ICMP PTB messages can cause transient PMTU black
        holes. When the conditions contributing to transient loss abate, the
        network regains its ability to deliver ICMP PTB messages and
        connectivity between the source and destination nodes is restored.
        <xref target="transLoss" format="default" sectionFormat="of" derivedContent="Section 3.8.1"/> of this document describes conditions that
        lead to transient loss of ICMP PTB messages.</t>
        <t indent="0" pn="section-3.8-4">Persistent loss of ICMP PTB messages can cause persistent black
        holes. Sections <xref target="CPE" format="counter" sectionFormat="of" derivedContent="3.8.2"/>, <xref target="Anycast" format="counter" sectionFormat="of" derivedContent="3.8.3"/>, 
        and <xref target="unidirectional" format="counter" sectionFormat="of" derivedContent="3.8.4"/> of this document describe conditions that
        lead to persistent loss of ICMP PTB messages.</t>
        <t indent="0" pn="section-3.8-5">The problem described in this section is specific to PMTUD. It does
        not occur when the upper-layer protocol obtains its PMTU estimate from
        PLPMTUD or from any other source.</t>
        <section anchor="transLoss" numbered="true" toc="include" removeInRFC="false" pn="section-3.8.1">
          <name slugifiedName="name-transient-loss">Transient Loss</name>
          <t indent="0" pn="section-3.8.1-1">The following factors can contribute to transient loss of ICMP
          PTB messages:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.8.1-2">
            <li pn="section-3.8.1-2.1">Network congestion.</li>
            <li pn="section-3.8.1-2.2">Packet corruption.</li>
            <li pn="section-3.8.1-2.3">Transient routing loops.</li>
            <li pn="section-3.8.1-2.4">ICMP rate limiting.</li>
          </ul>
          <t indent="0" pn="section-3.8.1-3">The effect of rate limiting may be severe, as RFC 4443 recommends
          strict rate limiting of ICMPv6 traffic.</t>
        </section>
        <section anchor="CPE" numbered="true" toc="include" removeInRFC="false" pn="section-3.8.2">
          <name slugifiedName="name-incorrect-implementation-of">Incorrect Implementation of Security Policy</name>
          <t indent="0" pn="section-3.8.2-1">Incorrect implementation of security policy can cause persistent
          loss of ICMP PTB messages.</t>
          <t indent="0" pn="section-3.8.2-2">For example, assume that a Customer Premises Equipment (CPE) router implements
          the following zone-based security policy:</t>
          <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.8.2-3">
            <li pn="section-3.8.2-3.1">Allow any traffic to flow from the inside zone to the outside
              zone.</li>
            <li pn="section-3.8.2-3.2">Do not allow any traffic to flow from the outside zone to the
              inside zone unless it is part of an existing flow (i.e., it was
              elicited by an outbound packet).</li>
          </ul>
          <t indent="0" pn="section-3.8.2-4">When a correct implementation of the above-mentioned
          security policy receives an ICMP PTB message, it examines the ICMP
          PTB payload in order to determine whether the original packet (i.e.,
          the packet that elicited the ICMP PTB message) belonged to an
          existing flow. If the original packet belonged to an existing flow,
          the implementation allows the ICMP PTB to flow from the outside zone
          to the inside zone. If not, the implementation discards the ICMP PTB
          message.</t>
          <t indent="0" pn="section-3.8.2-5">When an incorrect implementation of the above-mentioned security
          policy receives an ICMP PTB message, it discards the packet because
          its source address is not associated with an existing flow.</t>
          <t indent="0" pn="section-3.8.2-6">The security policy described above has been implemented incorrectly on
             many consumer CPE routers.</t>
        </section>
        <section anchor="Anycast" numbered="true" toc="include" removeInRFC="false" pn="section-3.8.3">
          <name slugifiedName="name-persistent-loss-caused-by-a">Persistent Loss Caused by Anycast</name>
          <t indent="0" pn="section-3.8.3-1">Anycast can cause persistent loss of ICMP PTB messages. Consider
          the example below:</t>
          <t indent="0" pn="section-3.8.3-2">A DNS client sends a request to an anycast address. The network
          routes that DNS request to the nearest instance of that anycast
          address (i.e., a DNS server). The DNS server generates a response
          and sends it back to the DNS client. While the response does not
          exceed the DNS server's PMTU estimate, it does exceed the actual
          PMTU.</t>
          <t indent="0" pn="section-3.8.3-3">A downstream router drops the packet and sends an ICMP PTB
          message the packet's source (i.e., the anycast address). The network
          routes the ICMP PTB message to the anycast instance closest to the
          downstream router. That anycast instance may not be the DNS server
          that originated the DNS response. It may be another DNS server with
          the same anycast address. The DNS server that originated the
          response may never receive the ICMP PTB message and may never update
          its PMTU estimate.</t>
        </section>
        <section anchor="unidirectional" numbered="true" toc="include" removeInRFC="false" pn="section-3.8.4">
          <name slugifiedName="name-persistent-loss-caused-by-u">Persistent Loss Caused by Unidirectional Routing</name>
          <t indent="0" pn="section-3.8.4-1">Unidirectional routing can cause persistent loss of ICMP PTB
          messages. Consider the example below:</t>
          <t indent="0" pn="section-3.8.4-2">A source node sends a packet to a destination node. All
          intermediate nodes maintain a route to the destination node but do
          not maintain a route to the source node. In this case, when an
          intermediate node encounters an MTU issue, it cannot send an ICMP
          PTB message to the source node.</t>
        </section>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-3.9">
        <name slugifiedName="name-black-holing-due-to-filteri">Black-Holing Due to Filtering or Loss</name>
        <t indent="0" pn="section-3.9-1">In RFC 7872, researchers sampled Internet paths to determine
        whether they would convey packets that contain IPv6 extension headers.
        Sampled paths terminated at popular Internet sites (e.g., popular web,
        mail, and DNS servers).</t>
        <t indent="0" pn="section-3.9-2">The study revealed that at least 28% of the sampled paths did not
        convey packets containing the IPv6 Fragment extension header. In most
        cases, fragments were dropped in the destination autonomous system. In
        other cases, the fragments were dropped in transit autonomous
        systems.</t>
        <t indent="0" pn="section-3.9-3">Another <xref target="Huston" format="default" sectionFormat="of" derivedContent="Huston">study</xref> confirmed this
        finding. It reported that 37% of sampled endpoints used IPv6-capable
        DNS resolvers that were incapable of receiving a fragmented IPv6
        response.</t>
        <t indent="0" pn="section-3.9-4">It is difficult to determine why network operators drop fragments.
        Possible causes follow:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3.9-5">
          <li pn="section-3.9-5.1">Hardware inability to process fragmented packets.</li>
          <li pn="section-3.9-5.2">Failure to change vendor defaults.</li>
          <li pn="section-3.9-5.3">Unintentional misconfiguration.</li>
          <li pn="section-3.9-5.4">Intentional configuration (e.g., network operators consciously
            chooses to drop IPv6 fragments in order to address the issues
            raised in Sections <xref target="mb" format="counter" sectionFormat="of" derivedContent="3.2"/> through <xref target="PTB" format="counter" sectionFormat="of" derivedContent="3.8"/>,
            above.)</li>
        </ul>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-alternatives-to-ip-fragment">Alternatives to IP Fragmentation</name>
      <t indent="0" pn="section-4-1"/>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-transport-layer-solutions">Transport-Layer Solutions</name>
        <t indent="0" pn="section-4.1-1">The <xref target="RFC0793" format="default" sectionFormat="of" derivedContent="RFC0793">Transport Control Protocol (TCP)</xref>)
        can be operated in a mode that does not require IP fragmentation.</t>
        <t indent="0" pn="section-4.1-2">Applications submit a stream of data to TCP. TCP divides that
        stream of data into segments, with no segment exceeding the TCP
        Maximum Segment Size (MSS). Each segment is encapsulated in a TCP
        header and submitted to the underlying IP module. The underlying IP
        module prepends an IP header and forwards the resulting packet.</t>
        <t indent="0" pn="section-4.1-3">If the TCP MSS is sufficiently small, then the underlying IP module
        never produces a packet whose length is greater than the actual PMTU.
        Therefore, IP fragmentation is not required.</t>
        <t indent="0" pn="section-4.1-4">TCP offers the following mechanisms for MSS management:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4.1-5">
          <li pn="section-4.1-5.1">Manual configuration.</li>
          <li pn="section-4.1-5.2">PMTUD.</li>
          <li pn="section-4.1-5.3">PLPMTUD.</li>
        </ul>
        <t indent="0" pn="section-4.1-6">Manual configuration is always applicable. If the MSS is configured
        to a sufficiently low value, the IP layer will never produce a packet
        whose length is greater than the protocol minimum link MTU. However,
        manual configuration prevents TCP from taking advantage of larger link
        MTUs.</t>
        <t indent="0" pn="section-4.1-7">Upper-layer protocols can implement PMTUD in order to discover and
        take advantage of larger Path MTUs. However, as mentioned in 
        <xref target="pmtu" format="default" sectionFormat="of" derivedContent="Section 2.1"/>, PMTUD relies upon the network to deliver ICMP PTB
        messages. Therefore, PMTUD can only provide an estimate of the PMTU in
        environments where the risk of ICMP PTB loss is acceptable (e.g.,
        known to not be filtered).</t>
        <t indent="0" pn="section-4.1-8">By contrast, PLPMTUD does not rely upon the network's ability to
        deliver ICMP PTB messages. It utilizes probe messages sent as TCP
        segments to determine whether the probed PMTU can be successfully used
        across the network path. In PLPMTUD, probing is separated from
        congestion control, so that loss of a TCP probe segment does not cause
        a reduction of the congestion control window. <xref target="RFC4821" format="default" sectionFormat="of" derivedContent="RFC4821"/>
        defines PLPMTUD procedures for TCP.</t>
        <t indent="0" pn="section-4.1-9">While TCP will never knowingly cause the underlying IP module to
        emit a packet that is larger than the PMTU estimate, it can cause the
        underlying IP module to emit a packet that is larger than the actual
        PMTU. For example, if routing changes and as a result the PMTU becomes
        smaller, TCP will not know until the ICMP PTB message arrives. If this
        occurs, the packet is dropped, the PMTU estimate is updated, the
        segment is divided into smaller segments, and each smaller segment is
        submitted to the underlying IP module.</t>
        <t indent="0" pn="section-4.1-10">The <xref target="RFC4340" format="default" sectionFormat="of" derivedContent="RFC4340">Datagram Congestion Control Protocol
        (DCCP)</xref> and the <xref target="RFC4960" format="default" sectionFormat="of" derivedContent="RFC4960">Stream Control Transmission
        Protocol (SCTP)</xref> also can be operated in a mode that does not
        require IP fragmentation. They both accept data from an application
        and divide that data into segments, with no segment exceeding a
        maximum size. 
        </t>
        <t indent="0" pn="section-4.1-11">DCCP offers manual configuration,
        PMTUD, and PLPMTUD as mechanisms for managing that maximum size.
        Datagram protocols can also implement PLPMTUD to estimate the PMTU
        via <xref target="RFC8899" format="default" sectionFormat="of" derivedContent="RFC8899"/>. This proposes
        procedures for performing PLPMTUD with UDP, UDP options, SCTP, QUIC,
        and other datagram protocols.</t>
        <t indent="0" pn="section-4.1-12">Currently, <xref target="RFC0768" format="default" sectionFormat="of" derivedContent="RFC0768">User Datagram Protocol (UDP)</xref>
        lacks a fragmentation mechanism of its own and relies on IP
        fragmentation. However, <xref target="I-D.ietf-tsvwg-udp-options" format="default" sectionFormat="of" derivedContent="UDP-OPTIONS"/>
        proposes a fragmentation mechanism for UDP.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2">
        <name slugifiedName="name-application-layer-solutions">Application-Layer Solutions</name>
        <t indent="0" pn="section-4.2-1"><xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/> recognizes that IP fragmentation reduces
        the reliability of Internet communication. It also recognizes that UDP
        lacks a fragmentation mechanism of its own and relies on IP
        fragmentation. Therefore, <xref target="RFC8085" format="default" sectionFormat="of" derivedContent="RFC8085"/> offers the
        following advice regarding applications the run over the UDP:</t>
        <blockquote pn="section-4.2-2">An application <bcp14>SHOULD NOT</bcp14> send UDP datagrams that result in IP
        packets that exceed the Maximum Transmission Unit (MTU) along the path
        to the destination. Consequently, an application <bcp14>SHOULD</bcp14> either use the
        path MTU information provided by the IP layer or implement Path MTU
        Discovery (PMTUD) itself <xref target="RFC1191" format="default" sectionFormat="of" derivedContent="RFC1191"/>
          <xref target="RFC1981" format="default" sectionFormat="of" derivedContent="RFC1981"/> <xref target="RFC4821" format="default" sectionFormat="of" derivedContent="RFC4821"/> to determine whether the path to a
        destination will support its desired message size without
        fragmentation.</blockquote>
        <t indent="0" pn="section-4.2-3">RFC 8085 continues:</t>
        <blockquote pn="section-4.2-4">Applications that do not follow the recommendation to do
        PMTU/PLPMTUD discovery <bcp14>SHOULD</bcp14> still avoid sending UDP datagrams that
        would result in IP packets that exceed the path MTU. Because the
        actual path MTU is unknown, such applications <bcp14>SHOULD</bcp14> fall back to
        sending messages that are shorter than the default effective MTU for
        sending (EMTU_S in <xref target="RFC1122" format="default" sectionFormat="of" derivedContent="RFC1122"/>). For IPv4, EMTU_S is the
        smaller of 576 bytes and the first-hop MTU <xref target="RFC1122" format="default" sectionFormat="of" derivedContent="RFC1122"/>.  For IPv6, EMTU_S is 1280
        bytes <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/>. The effective PMTU for a directly
        connected destination (with no routers on the path) is the configured
        interface MTU, which could be less than the maximum link payload size.
        Transmission of minimum-sized UDP datagrams is inefficient over paths
        that support a larger PMTU, which is a second reason to implement PMTU
        discovery.</blockquote>
        <t indent="0" pn="section-4.2-5">RFC 8085 assumes that for IPv4 an EMTU_S of 576 is sufficiently
        small to be supported by most current Internet
        paths, even though the IPv4 minimum link MTU is 68 octets.</t>
        <t indent="0" pn="section-4.2-6">This advice applies equally to any application that runs directly
        over IP.</t>
      </section>
    </section>
    <section anchor="rely" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-applications-that-rely-on-i">Applications That Rely on IPv6 Fragmentation</name>
      <t indent="0" pn="section-5-1">The following applications rely on IPv6 fragmentation:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5-2">
        <li pn="section-5-2.1">
          <xref target="RFC1035" format="default" sectionFormat="of" derivedContent="RFC1035">DNS</xref>.</li>
        <li pn="section-5-2.2">
          <xref target="RFC2328" format="default" sectionFormat="of" derivedContent="RFC2328">OSPFv2</xref>.</li>
        <li pn="section-5-2.3">
          <xref target="RFC5340" format="default" sectionFormat="of" derivedContent="RFC5340">OSPFv3</xref>.</li>
        <li pn="section-5-2.4">Packet-in-packet encapsulations.</li>
      </ul>
      <t indent="0" pn="section-5-3">Each of these applications relies on IPv6 fragmentation to a
      varying degree. In some cases, that reliance is essential and cannot be
      broken without fundamentally changing the protocol. In other cases, that
      reliance is incidental, and most implementations already take
      appropriate steps to avoid fragmentation.</t>
      <t indent="0" pn="section-5-4">This list is not comprehensive, and other protocols that rely on IP
      fragmentation may exist. They are not specifically considered in the
      context of this document.</t>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-domain-name-service-dns">Domain Name Service (DNS)</name>
        <t indent="0" pn="section-5.1-1">DNS relies on UDP for efficiency, and the consequence is the use of
        IP fragmentation for large responses, as permitted by the Extension Mechanisms for DNS (EDNS0)
        options in the query. It is possible to mitigate the issue of
        fragmentation-based packet loss by having queries use smaller EDNS0
        UDP buffer sizes or by having the DNS server limit the size of its
        UDP responses to some self-imposed maximum packet size that may be
        less than the preferred EDNS0 UDP buffer size. In both cases, large
        responses are truncated in the DNS, signaling to the client to
        re-query using TCP to obtain the complete response. However, the
        operational issue of the partial level of support for DNS over TCP,
        particularly in the case where IPv6 transport is being used, becomes a
        limiting factor of the efficacy of this approach <xref target="Damas" format="default" sectionFormat="of" derivedContent="Damas"/>.</t>
        <t indent="0" pn="section-5.1-2">Larger DNS responses can normally be avoided by aggressively
        pruning the Additional section of DNS responses. One scenario where
        such pruning is ineffective is in the use of DNSSEC, where large key
        sizes act to increase the response size to certain DNS queries. There
        is no effective response to this situation within the DNS other than
        using smaller cryptographic keys and adopting of DNSSEC administrative
        practices that attempt to keep DNS response as short as possible.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-open-shortest-path-first-os">Open Shortest Path First (OSPF)</name>
        <t indent="0" pn="section-5.2-1">OSPF implementations can emit messages large enough to cause
        fragmentation. However, in order to optimize performance, most OSPF
        implementations restrict their maximum message size to a value that
        will not cause fragmentation.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-packet-in-packet-encapsulat">Packet-in-Packet Encapsulations</name>
        <t indent="0" pn="section-5.3-1"> This document acknowledges that in some cases, packets must
	be fragmented within IP-in-IP tunnels.  Therefore, this document
	makes no additional recommendations regarding IP-in-IP
	tunnels.</t>
        <t indent="0" pn="section-5.3-2">In this document, packet-in-packet encapsulations include 
        <xref target="RFC2003" format="default" sectionFormat="of" derivedContent="RFC2003">IP-in-IP</xref>, 
        <xref target="RFC2784" format="default" sectionFormat="of" derivedContent="RFC2784">Generic Routing Encapsulation (GRE)</xref>, 
        <xref target="RFC8086" format="default" sectionFormat="of" derivedContent="RFC8086">GRE-in-UDP</xref>, and 
        <xref target="RFC2473" format="default" sectionFormat="of" derivedContent="RFC2473">Generic Packet Tunneling in IPv6</xref>. 
        <xref target="RFC4459" format="default" sectionFormat="of" derivedContent="RFC4459"/> describes
        fragmentation issues associated with all of the above-mentioned
        encapsulations.</t>
        <t indent="0" pn="section-5.3-3">The fragmentation strategy described for GRE in 
        <xref target="RFC7588" format="default" sectionFormat="of" derivedContent="RFC7588"/> has been deployed for all of the above-mentioned
        encapsulations. This strategy does not rely on IP fragmentation except
        in one corner case. 
        (See <xref target="RFC7588" section="3.3.2.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7588#section-3.3.2.2" derivedContent="RFC7588"/> 
        and <xref target="RFC2473" section="7.1" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc2473#section-7.1" derivedContent="RFC2473"/>.) 
        <xref target="RFC7676" section="3.3" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7676#section-3.3" derivedContent="RFC7676"/> further
        describes this corner case.</t>
        <t indent="0" pn="section-5.3-4">See <xref target="I-D.ietf-intarea-tunnels" format="default" sectionFormat="of" derivedContent="TUNNELS"/> for further
        discussion.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-5.4">
        <name slugifiedName="name-udp-applications-enhancing-">UDP Applications Enhancing Performance</name>
        <t indent="0" pn="section-5.4-1">Some UDP applications rely on IP fragmentation to achieve
        acceptable levels of performance. These applications use UDP datagram
        sizes that are larger than the Path MTU so that more data can be
        conveyed between the application and the kernel in a single system
        call.</t>
        <t indent="0" pn="section-5.4-2">To pick one example, the <xref target="RFC5326" format="default" sectionFormat="of" derivedContent="RFC5326">Licklider
        Transmission Protocol (LTP)</xref>, which is in current use on the
        International Space Station (ISS), uses UDP datagram sizes larger than
        the Path MTU to achieve acceptable levels of performance even though
        this invokes IP fragmentation. More generally, SNMP and video
        applications may transmit an application-layer quantum of data,
        depending on the network layer to fragment and reassemble as
        needed.</t>
        <t indent="0" pn="section-5.4-3"/>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-recommendations">Recommendations</name>
      <t indent="0" pn="section-6-1"/>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-for-application-and-protoco">For Application and Protocol Developers</name>
        <t indent="0" pn="section-6.1-1">Developers <bcp14>SHOULD NOT</bcp14> develop new protocols or applications that
        rely on IP fragmentation. When a new protocol or application is
        deployed in an environment that does not fully support IP
        fragmentation, it <bcp14>SHOULD</bcp14> operate correctly, either in its default
        configuration or in a specified alternative configuration.</t>
        <t indent="0" pn="section-6.1-2">While there may be controlled environments where IP
	fragmentation 
        works reliably, this is a deployment issue and can not be known
        to someone developing a new protocol or application.  It is not
        recommended that new protocols or applications be developed that
        rely on IP fragmentation.   
	Protocols and
        applications that rely on IP fragmentation will work less
        reliably on the Internet.
        </t>
        <t indent="0" pn="section-6.1-3">Legacy protocols that depend upon IP fragmentation <bcp14>SHOULD</bcp14> be
        updated to break that dependency. However, in some cases, there may be
        no viable alternative to IP fragmentation (e.g., IPSEC tunnel mode,
        IP-in-IP encapsulation).
        Applications and protocols cannot necessarily know or control
	whether they use lower layers or network paths that rely on such
	fragmentation. 
	In these cases, the protocol will continue to
        rely on IP fragmentation but should only be used in environments where
        IP fragmentation is known to be supported.</t>
        <t indent="0" pn="section-6.1-4">Protocols may be able to avoid IP fragmentation by using a
        sufficiently small MTU (e.g., The protocol minimum link MTU), disabling
        IP fragmentation, and ensuring that the transport protocol in use
        adapts its segment size to the MTU. Other protocols may deploy a
        sufficiently reliable PMTU discovery mechanism (e.g., PLPMTUD).
        </t>
        <t indent="0" pn="section-6.1-5">UDP applications <bcp14>SHOULD</bcp14> abide by the recommendations stated in
        <xref target="RFC8085" section="3.2" sectionFormat="of" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8085#section-3.2" derivedContent="RFC8085"/>.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-for-system-developers">For System Developers</name>
        <t indent="0" pn="section-6.2-1">Software libraries <bcp14>SHOULD</bcp14> include provision for PLPMTUD for each
        supported transport protocol.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-for-middlebox-developers">For Middlebox Developers</name>
        <t indent="0" pn="section-6.3-1">Middleboxes, which are systems that "transparently"
	perform policy functions on passing traffic but do not
	participate in the routing system, should process IP fragments
	in a manner that is consistent with <xref target="RFC0791" format="default" sectionFormat="of" derivedContent="RFC0791"/>
	and <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>.  In many cases, middleboxes
	must maintain state in order to achieve this goal.</t>
        <t indent="0" pn="section-6.3-2">Price and performance considerations frequently motivate network
        operators to deploy stateless middleboxes. These stateless middleboxes
        may perform suboptimally, process IP fragments in a manner that is not
        compliant with RFC 791 or RFC 8200, or even discard IP fragments
        completely. Such behaviors are <bcp14>NOT RECOMMENDED</bcp14>. If a
        middlebox implements nonstandard behavior with respect to IP
        fragmentation, then that behavior <bcp14>MUST</bcp14> be clearly
        documented.</t>
      </section>
      <section anchor="lagrec" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-for-ecmp-lag-and-load-balan">For ECMP, LAG, and Load-Balancer Developers And Operators</name>
        <t indent="0" pn="section-6.4-1">In their default configuration, when the IPv6 Flow Label is not
        equal to zero, IPv6 devices that implement Equal-Cost Multipath (ECMP)
        Routing as described in <xref target="RFC2328" format="default" sectionFormat="of" derivedContent="RFC2328">OSPF</xref>
        and other routing protocols, <xref target="RFC7424" format="default" sectionFormat="of" derivedContent="RFC7424">Link
        Aggregation Grouping (LAG)</xref>, or other load-distribution
        technologies <bcp14>SHOULD</bcp14> accept only the following fields as input to their
        hash algorithm:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6.4-2">
          <li pn="section-6.4-2.1">IP Source Address.</li>
          <li pn="section-6.4-2.2">IP Destination Address.</li>
          <li pn="section-6.4-2.3">Flow Label.</li>
        </ul>
        <t indent="0" pn="section-6.4-3">Operators <bcp14>SHOULD</bcp14> deploy these devices in their
        default configuration.</t>
        <t indent="0" pn="section-6.4-4">These recommendations are similar to those presented in <xref target="RFC6438" format="default" sectionFormat="of" derivedContent="RFC6438"/> and <xref target="RFC7098" format="default" sectionFormat="of" derivedContent="RFC7098"/>. They differ in that
        they specify a default configuration.</t>
      </section>
      <section numbered="true" toc="include" removeInRFC="false" pn="section-6.5">
        <name slugifiedName="name-for-network-operators">For Network Operators</name>
        <t indent="0" pn="section-6.5-1">Operators <bcp14>MUST</bcp14> ensure proper PMTUD operation in their network,
        including making sure the network generates PTB packets when
        dropping packets too large compared to outgoing interface
        MTU. However, implementations <bcp14>MAY</bcp14> rate limit the generation of
        ICMP messages per <xref target="RFC1812" format="default" sectionFormat="of" derivedContent="RFC1812"/> and <xref target="RFC4443" format="default" sectionFormat="of" derivedContent="RFC4443"/>.</t>
        <t indent="0" pn="section-6.5-2">As per RFC 4890, network operators <bcp14>MUST NOT</bcp14> filter ICMPv6 PTB
        messages unless they are known to be forged or otherwise illegitimate.
        As stated in <xref target="PTB" format="default" sectionFormat="of" derivedContent="Section 3.8"/>, filtering ICMPv6 PTB packets causes
        PMTUD to fail. Many upper-layer protocols rely on PMTUD.</t>
        <t indent="0" pn="section-6.5-3">As per RFC 8200, network operators <bcp14>MUST NOT</bcp14> deploy IPv6 links whose
        MTU is less than 1280 octets.</t>
        <t indent="0" pn="section-6.5-4">Network operators <bcp14>SHOULD NOT</bcp14> filter IP fragments if they are known
        to have originated at a domain name server or be destined for a domain
        name server. This is because domain name services are critical to
        operation of the Internet.</t>
      </section>
    </section>
    <section numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">This document has no IANA actions.</t>
    </section>
    <section 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 document mitigates some of the security considerations
      associated with IP fragmentation by discouraging its use. It does not
      introduce any new security vulnerabilities, because it does not
      introduce any new alternatives to IP fragmentation. Instead, it
      recommends well-understood alternatives.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-intarea-tunnels" to="TUNNELS"/>
    <displayreference target="I-D.ietf-tsvwg-udp-options" to="UDP-OPTIONS"/>
    <references pn="section-9">
      <name slugifiedName="name-references">References</name>
      <references pn="section-9.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC0768" target="https://www.rfc-editor.org/info/rfc768" quoteTitle="true" derivedAnchor="RFC0768">
          <front>
            <title>User Datagram Protocol</title>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1980" month="August"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <reference anchor="RFC0791" target="https://www.rfc-editor.org/info/rfc791" quoteTitle="true" derivedAnchor="RFC0791">
          <front>
            <title>Internet Protocol</title>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1981" month="September"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="RFC0792" target="https://www.rfc-editor.org/info/rfc792" quoteTitle="true" derivedAnchor="RFC0792">
          <front>
            <title>Internet Control Message Protocol</title>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1981" month="September"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="792"/>
          <seriesInfo name="DOI" value="10.17487/RFC0792"/>
        </reference>
        <reference anchor="RFC0793" target="https://www.rfc-editor.org/info/rfc793" quoteTitle="true" derivedAnchor="RFC0793">
          <front>
            <title>Transmission Control Protocol</title>
            <author initials="J." surname="Postel" fullname="J. Postel">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1981" month="September"/>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="793"/>
          <seriesInfo name="DOI" value="10.17487/RFC0793"/>
        </reference>
        <reference anchor="RFC1035" target="https://www.rfc-editor.org/info/rfc1035" quoteTitle="true" derivedAnchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author initials="P.V." surname="Mockapetris" fullname="P.V. Mockapetris">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1987" month="November"/>
            <abstract>
              <t indent="0">This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System.  It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </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="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="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="RFC6437" target="https://www.rfc-editor.org/info/rfc6437" quoteTitle="true" derivedAnchor="RFC6437">
          <front>
            <title>IPv6 Flow Label Specification</title>
            <author initials="S." surname="Amante" fullname="S. Amante">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Rajahalme" fullname="J. Rajahalme">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="November"/>
            <abstract>
              <t indent="0">This document specifies the IPv6 Flow Label field and the minimum requirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled packets, and flow state establishment methods.  Even when mentioned as examples of possible uses of the flow labeling, more detailed requirements for specific use cases are out of the scope for this document.</t>
              <t indent="0">The usage of the Flow Label field enables efficient IPv6 flow classification based only on IPv6 main header fields in fixed positions.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6437"/>
          <seriesInfo name="DOI" value="10.17487/RFC6437"/>
        </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="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="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>
        <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="Godred Fairhurst">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T" surname="Jones" fullname="Tom Jones">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Tüxen" fullname="Michael Tüxen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I" surname="Rüngeler" fullname="Irene Rüngeler">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T" surname="Völker" fullname="Timo Völker">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="September" year="2020"/>
          </front>
          <seriesInfo name="RFC" value="8899"/>
          <seriesInfo name="DOI" value="10.17487/RFC8899"/>
        </reference>
      </references>
      <references pn="section-9.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="Damas" target="http://www.potaroo.net/ispcol/2018-04/atr.html" quoteTitle="true" derivedAnchor="Damas">
          <front>
            <title>Measuring ATR</title>
            <author fullname="Joao Damas" initials="J." surname="Damas">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Geoff Huston" initials="G." surname="Huston">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="April" year="2018"/>
          </front>
        </reference>
        <reference anchor="Huston" target="http://www.potaroo.net/ispcol/2017-08/xtn-hdrs.html" quoteTitle="true" derivedAnchor="Huston">
          <front>
            <title>IPv6, Large UDP Packets and the DNS</title>
            <author fullname="Geoff Huston" initials="G." surname="Huston">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="August" year="2017"/>
          </front>
        </reference>
        <reference anchor="Kent" target="http://www.hpl.hp.com/techreports/Compaq-DEC/WRL-87-3.pdf" quoteTitle="true" derivedAnchor="Kent">
          <front>
            <title>Fragmentation Considered Harmful</title>
            <author fullname="Kent" initials="C." surname="Kent">
              <organization showOnFrontPage="true"/>
            </author>
            <author fullname="Mogul" initials="J." surname="Mogul">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="August" year="1987"/>
          </front>
          <seriesInfo name="DOI" value="10.1145/55482.55524"/>
          <refcontent>SIGCOMM '87: Proceedings of the ACM workshop on Frontiers in computer communications technology</refcontent>
        </reference>
        <reference anchor="Ptacek1998" target="http://www.aciri.org/vern/Ptacek-Newsham-Evasion-98.ps" quoteTitle="true" derivedAnchor="Ptacek1998">
          <front>
            <title>Insertion, Evasion and Denial of Service: Eluding Network Intrusion Detection</title>
            <author fullname="T. H. Ptacek" initials="T. H." surname="Ptacek">
              <organization showOnFrontPage="true">Secure Networks, Inc.</organization>
            </author>
            <author fullname="T. N. Newsham" initials="T. N." surname="Newsham">
              <organization showOnFrontPage="true">Secure Networks, Inc.</organization>
            </author>
            <date year="1998"/>
          </front>
        </reference>
        <reference anchor="RFC1122" target="https://www.rfc-editor.org/info/rfc1122" quoteTitle="true" derivedAnchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author initials="R." surname="Braden" fullname="R. Braden" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1989" month="October"/>
            <abstract>
              <t indent="0">This RFC is an official specification for the Internet community.  It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC1812" target="https://www.rfc-editor.org/info/rfc1812" quoteTitle="true" derivedAnchor="RFC1812">
          <front>
            <title>Requirements for IP Version 4 Routers</title>
            <author initials="F." surname="Baker" fullname="F. Baker" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1995" month="June"/>
            <abstract>
              <t indent="0">This memo defines and discusses requirements for devices that perform the network layer forwarding function of the Internet protocol suite. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1812"/>
          <seriesInfo name="DOI" value="10.17487/RFC1812"/>
        </reference>
        <reference anchor="RFC1858" target="https://www.rfc-editor.org/info/rfc1858" quoteTitle="true" derivedAnchor="RFC1858">
          <front>
            <title>Security Considerations for IP Fragment Filtering</title>
            <author initials="G." surname="Ziemba" fullname="G. Ziemba">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Reed" fullname="D. Reed">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Traina" fullname="P. Traina">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1995" month="October"/>
            <abstract>
              <t indent="0">IP fragmentation can be used to disguise TCP packets from IP filters used in routers and hosts. This document describes two methods of attack as well as remedies to prevent them.  This memo provides information for the Internet community.  This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1858"/>
          <seriesInfo name="DOI" value="10.17487/RFC1858"/>
        </reference>
        <reference anchor="RFC1981" target="https://www.rfc-editor.org/info/rfc1981" quoteTitle="true" derivedAnchor="RFC1981">
          <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>
            <date year="1996" month="August"/>
            <abstract>
              <t indent="0">This document describes Path MTU Discovery for IP version 6.  It is largely derived from RFC 1191, which describes Path MTU Discovery for IP version 4.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1981"/>
          <seriesInfo name="DOI" value="10.17487/RFC1981"/>
        </reference>
        <reference anchor="RFC2003" target="https://www.rfc-editor.org/info/rfc2003" quoteTitle="true" derivedAnchor="RFC2003">
          <front>
            <title>IP Encapsulation within IP</title>
            <author initials="C." surname="Perkins" fullname="C. Perkins">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1996" month="October"/>
            <abstract>
              <t indent="0">This document specifies a method by which an IP datagram may be encapsulated (carried as payload) within an IP datagram.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2003"/>
          <seriesInfo name="DOI" value="10.17487/RFC2003"/>
        </reference>
        <reference anchor="RFC2328" target="https://www.rfc-editor.org/info/rfc2328" quoteTitle="true" derivedAnchor="RFC2328">
          <front>
            <title>OSPF Version 2</title>
            <author initials="J." surname="Moy" fullname="J. Moy">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1998" month="April"/>
            <abstract>
              <t indent="0">This memo documents version 2 of the OSPF protocol.  OSPF is a link- state routing protocol.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="54"/>
          <seriesInfo name="RFC" value="2328"/>
          <seriesInfo name="DOI" value="10.17487/RFC2328"/>
        </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="RFC2473" target="https://www.rfc-editor.org/info/rfc2473" quoteTitle="true" derivedAnchor="RFC2473">
          <front>
            <title>Generic Packet Tunneling in 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>
            <date year="1998" month="December"/>
            <abstract>
              <t indent="0">This document defines the model and generic mechanisms for IPv6 encapsulation of Internet packets, such as IPv6 and IPv4.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2473"/>
          <seriesInfo name="DOI" value="10.17487/RFC2473"/>
        </reference>
        <reference anchor="RFC2784" target="https://www.rfc-editor.org/info/rfc2784" quoteTitle="true" derivedAnchor="RFC2784">
          <front>
            <title>Generic Routing Encapsulation (GRE)</title>
            <author initials="D." surname="Farinacci" fullname="D. Farinacci">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Li" fullname="T. Li">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Hanks" fullname="S. Hanks">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Meyer" fullname="D. Meyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Traina" fullname="P. Traina">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2000" month="March"/>
            <abstract>
              <t indent="0">This document specifies a protocol for encapsulation of an arbitrary network layer protocol over another arbitrary network layer protocol. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2784"/>
          <seriesInfo name="DOI" value="10.17487/RFC2784"/>
        </reference>
        <reference anchor="RFC3128" target="https://www.rfc-editor.org/info/rfc3128" quoteTitle="true" derivedAnchor="RFC3128">
          <front>
            <title>Protection Against a Variant of the Tiny Fragment Attack (RFC 1858)</title>
            <author initials="I." surname="Miller" fullname="I. Miller">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2001" month="June"/>
            <abstract>
              <t indent="0">This document discusses how RFC 1858 compliant filters can be vulnerable to a variant of the "Tiny Fragment Attack" described in section 3.1 of the RFC.  This document describes the attack and recommends corrective action.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3128"/>
          <seriesInfo name="DOI" value="10.17487/RFC3128"/>
        </reference>
        <reference anchor="RFC4340" target="https://www.rfc-editor.org/info/rfc4340" quoteTitle="true" derivedAnchor="RFC4340">
          <front>
            <title>Datagram Congestion Control Protocol (DCCP)</title>
            <author initials="E." surname="Kohler" fullname="E. Kohler">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Handley" fullname="M. Handley">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Floyd" fullname="S. Floyd">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="March"/>
            <abstract>
              <t indent="0">The Datagram Congestion Control Protocol (DCCP) is a transport protocol that provides bidirectional unicast connections of congestion-controlled unreliable datagrams.  DCCP is suitable for applications that transfer fairly large amounts of data and that can benefit from control over the tradeoff between timeliness and reliability.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4340"/>
          <seriesInfo name="DOI" value="10.17487/RFC4340"/>
        </reference>
        <reference anchor="RFC4459" target="https://www.rfc-editor.org/info/rfc4459" quoteTitle="true" derivedAnchor="RFC4459">
          <front>
            <title>MTU and Fragmentation Issues with In-the-Network Tunneling</title>
            <author initials="P." surname="Savola" fullname="P. Savola">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2006" month="April"/>
            <abstract>
              <t indent="0">Tunneling techniques such as IP-in-IP when deployed in the middle of the network, typically between routers, have certain issues regarding how large packets can be handled: whether such packets would be fragmented and reassembled (and how), whether Path MTU Discovery would be used, or how this scenario could be operationally avoided. This memo justifies why this is a common, non-trivial problem, and goes on to describe the different solutions and their characteristics at some length.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4459"/>
          <seriesInfo name="DOI" value="10.17487/RFC4459"/>
        </reference>
        <reference anchor="RFC4890" target="https://www.rfc-editor.org/info/rfc4890" quoteTitle="true" derivedAnchor="RFC4890">
          <front>
            <title>Recommendations for Filtering ICMPv6 Messages in Firewalls</title>
            <author initials="E." surname="Davies" fullname="E. Davies">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Mohacsi" fullname="J. Mohacsi">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="May"/>
            <abstract>
              <t indent="0">In networks supporting IPv6, the Internet Control Message Protocol version 6 (ICMPv6) plays a fundamental role with a large number of functions, and a correspondingly large number of message types and options.  ICMPv6 is essential to the functioning of IPv6, but there are a number of security risks associated with uncontrolled forwarding of ICMPv6 messages.  Filtering strategies designed for the corresponding protocol, ICMP, in IPv4 networks are not directly applicable, because these strategies are intended to accommodate a useful auxiliary protocol that may not be required for correct functioning.</t>
              <t indent="0">This document provides some recommendations for ICMPv6 firewall filter configuration that will allow propagation of ICMPv6 messages that are needed to maintain the functioning of the network but drop messages that are potential security risks.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4890"/>
          <seriesInfo name="DOI" value="10.17487/RFC4890"/>
        </reference>
        <reference anchor="RFC4960" target="https://www.rfc-editor.org/info/rfc4960" quoteTitle="true" derivedAnchor="RFC4960">
          <front>
            <title>Stream Control Transmission Protocol</title>
            <author initials="R." surname="Stewart" fullname="R. Stewart" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="September"/>
            <abstract>
              <t indent="0">This document obsoletes RFC 2960 and RFC 3309.  It describes the Stream Control Transmission Protocol (SCTP).  SCTP is designed to transport Public Switched Telephone Network (PSTN) signaling messages over IP networks, but is capable of broader applications.</t>
              <t indent="0">SCTP is a reliable transport protocol operating on top of a connectionless packet network such as IP.  It offers the following services to its users:</t>
              <t indent="0">--  acknowledged error-free non-duplicated transfer of user data,</t>
              <t indent="0">--  data fragmentation to conform to discovered path MTU size,</t>
              <t indent="0">--  sequenced delivery of user messages within multiple streams, with an option for order-of-arrival delivery of individual user messages,</t>
              <t indent="0">--  optional bundling of multiple user messages into a single SCTP packet, and</t>
              <t indent="0">--  network-level fault tolerance through supporting of multi-homing at either or both ends of an association.</t>
              <t indent="0"> The design of SCTP includes appropriate congestion avoidance behavior and resistance to flooding and masquerade attacks.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4960"/>
          <seriesInfo name="DOI" value="10.17487/RFC4960"/>
        </reference>
        <reference anchor="RFC4963" target="https://www.rfc-editor.org/info/rfc4963" quoteTitle="true" derivedAnchor="RFC4963">
          <front>
            <title>IPv4 Reassembly Errors at High Data Rates</title>
            <author initials="J." surname="Heffner" fullname="J. Heffner">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M." surname="Mathis" fullname="M. Mathis">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Chandler" fullname="B. Chandler">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="July"/>
            <abstract>
              <t indent="0">IPv4 fragmentation is not sufficiently robust for use under some conditions in today's Internet.  At high data rates, the 16-bit IP identification field is not large enough to prevent frequent incorrectly assembled IP fragments, and the TCP and UDP checksums are insufficient to prevent the resulting corrupted datagrams from being delivered to higher protocol layers.  This note describes some easily reproduced experiments demonstrating the problem, and discusses some of the operational implications of these observations.  This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4963"/>
          <seriesInfo name="DOI" value="10.17487/RFC4963"/>
        </reference>
        <reference anchor="RFC5326" target="https://www.rfc-editor.org/info/rfc5326" quoteTitle="true" derivedAnchor="RFC5326">
          <front>
            <title>Licklider Transmission Protocol - Specification</title>
            <author initials="M." surname="Ramadas" fullname="M. Ramadas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Burleigh" fullname="S. Burleigh">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Farrell" fullname="S. Farrell">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="September"/>
            <abstract>
              <t indent="0">This document describes the Licklider Transmission Protocol (LTP), designed to provide retransmission-based reliability over links characterized by extremely long message round-trip times (RTTs) and/or frequent interruptions in connectivity.  Since communication across interplanetary space is the most prominent example of this sort of environment, LTP is principally aimed at supporting "long-haul" reliable transmission in interplanetary space, but it has applications in other environments as well.</t>
              <t indent="0">This document is a product of the Delay Tolerant Networking Research Group and has been reviewed by that group.  No objections to its publication as an RFC were raised.  This memo defines an Experimental  Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5326"/>
          <seriesInfo name="DOI" value="10.17487/RFC5326"/>
        </reference>
        <reference anchor="RFC5340" target="https://www.rfc-editor.org/info/rfc5340" quoteTitle="true" derivedAnchor="RFC5340">
          <front>
            <title>OSPF for IPv6</title>
            <author initials="R." surname="Coltun" fullname="R. Coltun">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ferguson" fullname="D. Ferguson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Moy" fullname="J. Moy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Lindem" fullname="A. Lindem">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="July"/>
            <abstract>
              <t indent="0">This document describes the modifications to OSPF to support version 6 of the Internet Protocol (IPv6).  The fundamental mechanisms of OSPF (flooding, Designated Router (DR) election, area support, Short Path First (SPF) calculations, etc.) remain unchanged.  However, some changes have been necessary, either due to changes in protocol semantics between IPv4 and IPv6, or simply to handle the increased address size of IPv6.  These modifications will necessitate incrementing the protocol version from version 2 to version 3.  OSPF for IPv6 is also referred to as OSPF version 3 (OSPFv3).</t>
              <t indent="0">Changes between OSPF for IPv4, OSPF Version 2, and OSPF for IPv6 as described herein include the following.  Addressing semantics have been removed from OSPF packets and the basic Link State Advertisements (LSAs).  New LSAs have been created to carry IPv6 addresses and prefixes.  OSPF now runs on a per-link basis rather than on a per-IP-subnet basis.  Flooding scope for LSAs has been generalized.  Authentication has been removed from the OSPF protocol and instead relies on IPv6's Authentication Header and Encapsulating Security Payload (ESP).</t>
              <t indent="0">Even with larger IPv6 addresses, most packets in OSPF for IPv6 are almost as compact as those in OSPF for IPv4.  Most fields and packet- size limitations present in OSPF for IPv4 have been relaxed.  In addition, option handling has been made more flexible.</t>
              <t indent="0">All of OSPF for IPv4's optional capabilities, including demand circuit support and Not-So-Stubby Areas (NSSAs), are also supported in OSPF for IPv6.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5340"/>
          <seriesInfo name="DOI" value="10.17487/RFC5340"/>
        </reference>
        <reference anchor="RFC5722" target="https://www.rfc-editor.org/info/rfc5722" quoteTitle="true" derivedAnchor="RFC5722">
          <front>
            <title>Handling of Overlapping IPv6 Fragments</title>
            <author initials="S." surname="Krishnan" fullname="S. Krishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="December"/>
            <abstract>
              <t indent="0">The fragmentation and reassembly algorithm specified in the base IPv6 specification allows fragments to overlap.  This document demonstrates the security issues associated with allowing overlapping  fragments and updates the IPv6 specification to explicitly forbid  overlapping fragments.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5722"/>
          <seriesInfo name="DOI" value="10.17487/RFC5722"/>
        </reference>
        <reference anchor="RFC5927" target="https://www.rfc-editor.org/info/rfc5927" quoteTitle="true" derivedAnchor="RFC5927">
          <front>
            <title>ICMP Attacks against TCP</title>
            <author initials="F." surname="Gont" fullname="F. Gont">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2010" month="July"/>
            <abstract>
              <t indent="0">This document discusses the use of the Internet Control Message Protocol (ICMP) to perform a variety of attacks against the Transmission Control Protocol (TCP).  Additionally, this document describes a number of widely implemented modifications to TCP's handling of ICMP error messages that help to mitigate these issues.  This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5927"/>
          <seriesInfo name="DOI" value="10.17487/RFC5927"/>
        </reference>
        <reference anchor="RFC6346" target="https://www.rfc-editor.org/info/rfc6346" quoteTitle="true" derivedAnchor="RFC6346">
          <front>
            <title>The Address plus Port (A+P) Approach to the IPv4 Address Shortage</title>
            <author initials="R." surname="Bush" fullname="R. Bush" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2011" month="August"/>
            <abstract>
              <t indent="0">We are facing the exhaustion of the IANA IPv4 free IP address pool. Unfortunately, IPv6 is not yet deployed widely enough to fully replace IPv4, and it is unrealistic to expect that this is going to change before the depletion of IPv4 addresses.  Letting hosts seamlessly communicate in an IPv4 world without assigning a unique globally routable IPv4 address to each of them is a challenging problem.</t>
              <t indent="0">This document proposes an IPv4 address sharing scheme, treating some of the port number bits as part of an extended IPv4 address (Address plus Port, or A+P).  Instead of assigning a single IPv4 address to a single customer device, we propose to extend the address field by using bits from the port number range in the TCP/UDP header as additional endpoint identifiers, thus leaving a reduced range of ports available to applications.  This means assigning the same IPv4 address to multiple clients (e.g., Customer Premises Equipment (CPE), mobile phones), each with its assigned port range.  In the face of IPv4 address exhaustion, the need for addresses is stronger than the need to be able to address thousands of applications on a single host.  If address translation is needed, the end-user should be in control of the translation process -- not some smart boxes in the core.  This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6346"/>
          <seriesInfo name="DOI" value="10.17487/RFC6346"/>
        </reference>
        <reference anchor="RFC6888" target="https://www.rfc-editor.org/info/rfc6888" quoteTitle="true" derivedAnchor="RFC6888">
          <front>
            <title>Common Requirements for Carrier-Grade NATs (CGNs)</title>
            <author initials="S." surname="Perreault" fullname="S. Perreault" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Yamagata" fullname="I. Yamagata">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Miyakawa" fullname="S. Miyakawa">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Nakagawa" fullname="A. Nakagawa">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Ashida" fullname="H. Ashida">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="April"/>
            <abstract>
              <t indent="0">This document defines common requirements for Carrier-Grade NATs (CGNs).  It updates RFC 4787.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="127"/>
          <seriesInfo name="RFC" value="6888"/>
          <seriesInfo name="DOI" value="10.17487/RFC6888"/>
        </reference>
        <reference anchor="RFC7098" target="https://www.rfc-editor.org/info/rfc7098" quoteTitle="true" derivedAnchor="RFC7098">
          <front>
            <title>Using the IPv6 Flow Label for Load Balancing in Server Farms</title>
            <author initials="B." surname="Carpenter" fullname="B. Carpenter">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Jiang" fullname="S. Jiang">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Tarreau" fullname="W. Tarreau">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2014" month="January"/>
            <abstract>
              <t indent="0">This document describes how the currently specified IPv6 flow label can be used to enhance layer 3/4 (L3/4) load distribution and balancing for large server farms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7098"/>
          <seriesInfo name="DOI" value="10.17487/RFC7098"/>
        </reference>
        <reference anchor="RFC7424" target="https://www.rfc-editor.org/info/rfc7424" quoteTitle="true" derivedAnchor="RFC7424">
          <front>
            <title>Mechanisms for Optimizing Link Aggregation Group (LAG) and Equal-Cost Multipath (ECMP) Component Link Utilization in Networks</title>
            <author initials="R." surname="Krishnan" fullname="R. Krishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Yong" fullname="L. Yong">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Ghanwani" fullname="A. Ghanwani">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="So" fullname="N. So">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Khasnabish" fullname="B. Khasnabish">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="January"/>
            <abstract>
              <t indent="0">Demands on networking infrastructure are growing exponentially due to bandwidth-hungry applications such as rich media applications and inter-data-center communications.  In this context, it is important to optimally use the bandwidth in wired networks that extensively use link aggregation groups and equal-cost multipaths as techniques for bandwidth scaling.  This document explores some of the mechanisms useful for achieving this.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7424"/>
          <seriesInfo name="DOI" value="10.17487/RFC7424"/>
        </reference>
        <reference anchor="RFC7588" target="https://www.rfc-editor.org/info/rfc7588" quoteTitle="true" derivedAnchor="RFC7588">
          <front>
            <title>A Widely Deployed Solution to the Generic Routing Encapsulation (GRE) Fragmentation Problem</title>
            <author initials="R." surname="Bonica" fullname="R. Bonica">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Pignataro" fullname="C. Pignataro">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Touch" fullname="J. Touch">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="July"/>
            <abstract>
              <t indent="0">This memo describes how many vendors have solved the Generic Routing Encapsulation (GRE) fragmentation problem.  The solution described herein is configurable.  It is widely deployed on the Internet in its default configuration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7588"/>
          <seriesInfo name="DOI" value="10.17487/RFC7588"/>
        </reference>
        <reference anchor="RFC7676" target="https://www.rfc-editor.org/info/rfc7676" quoteTitle="true" derivedAnchor="RFC7676">
          <front>
            <title>IPv6 Support for Generic Routing Encapsulation (GRE)</title>
            <author initials="C." surname="Pignataro" fullname="C. Pignataro">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Bonica" fullname="R. Bonica">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Krishnan" fullname="S. Krishnan">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="October"/>
            <abstract>
              <t indent="0">Generic Routing Encapsulation (GRE) can be used to carry any network- layer payload protocol over any network-layer delivery protocol. Currently, GRE procedures are specified for IPv4, used as either the payload or delivery protocol.  However, GRE procedures are not specified for IPv6.</t>
              <t indent="0">This document specifies GRE procedures for IPv6, used as either the payload or delivery protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7676"/>
          <seriesInfo name="DOI" value="10.17487/RFC7676"/>
        </reference>
        <reference anchor="RFC7739" target="https://www.rfc-editor.org/info/rfc7739" quoteTitle="true" derivedAnchor="RFC7739">
          <front>
            <title>Security Implications of Predictable Fragment Identification Values</title>
            <author initials="F." surname="Gont" fullname="F. Gont">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="February"/>
            <abstract>
              <t indent="0">IPv6 specifies the Fragment Header, which is employed for the fragmentation and reassembly mechanisms.  The Fragment Header contains an "Identification" field that, together with the IPv6 Source Address and the IPv6 Destination Address of a packet, identifies fragments that correspond to the same original datagram, such that they can be reassembled together by the receiving host. The only requirement for setting the Identification field is that the corresponding value must be different than that employed for any other fragmented datagram sent recently with the same Source Address and Destination Address.  Some implementations use a simple global counter for setting the Identification field, thus leading to predictable Identification values.  This document analyzes the security implications of predictable Identification values, and provides implementation guidance for setting the Identification field of the Fragment Header, such that the aforementioned security implications are mitigated.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7739"/>
          <seriesInfo name="DOI" value="10.17487/RFC7739"/>
        </reference>
        <reference anchor="RFC7872" target="https://www.rfc-editor.org/info/rfc7872" quoteTitle="true" derivedAnchor="RFC7872">
          <front>
            <title>Observations on the Dropping of Packets with IPv6 Extension Headers in the Real World</title>
            <author initials="F." surname="Gont" fullname="F. Gont">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Linkova" fullname="J. Linkova">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Chown" fullname="T. Chown">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Liu" fullname="W. Liu">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="June"/>
            <abstract>
              <t indent="0">This document presents real-world data regarding the extent to which packets with IPv6 Extension Headers (EHs) are dropped in the Internet (as originally measured in August 2014 and later in June 2015, with similar results) and where in the network such dropping occurs.  The aforementioned results serve as a problem statement that is expected to trigger operational advice on the filtering of IPv6 packets carrying IPv6 EHs so that the situation improves over time.  This document also explains how the results were obtained, such that the corresponding measurements can be reproduced by other members of the community and repeated over time to observe changes in the handling of packets with IPv6 EHs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7872"/>
          <seriesInfo name="DOI" value="10.17487/RFC7872"/>
        </reference>
        <reference anchor="RFC8086" target="https://www.rfc-editor.org/info/rfc8086" quoteTitle="true" derivedAnchor="RFC8086">
          <front>
            <title>GRE-in-UDP Encapsulation</title>
            <author initials="L." surname="Yong" fullname="L. Yong" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="E." surname="Crabbe" fullname="E. Crabbe">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="X." surname="Xu" fullname="X. Xu">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Herbert" fullname="T. Herbert">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="March"/>
            <abstract>
              <t indent="0">This document specifies a method of encapsulating network protocol packets within GRE and UDP headers.  This GRE-in-UDP encapsulation allows the UDP source port field to be used as an entropy field. This may be used for load-balancing of GRE traffic in transit networks using existing Equal-Cost Multipath (ECMP) mechanisms. There are two applicability scenarios for GRE-in-UDP with different requirements: (1) general Internet and (2) a traffic-managed controlled environment.  The controlled environment has less restrictive requirements than the general Internet.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8086"/>
          <seriesInfo name="DOI" value="10.17487/RFC8086"/>
        </reference>
        <reference anchor="I-D.ietf-intarea-tunnels" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-intarea-tunnels-10" derivedAnchor="TUNNELS">
          <front>
            <title>IP Tunnels in the Internet Architecture</title>
            <author initials="J" surname="Touch" fullname="Joseph Touch">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Townsley" fullname="Mark Townsley">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="September" day="12" year="2019"/>
            <abstract>
              <t indent="0">This document discusses the role of IP tunnels in the Internet architecture. An IP tunnel transits IP datagrams as payloads in non- link layer protocols. This document explains the relationship of IP tunnels to existing protocol layers and the challenges in supporting IP tunneling, based on the equivalence of tunnels to links. The implications of this document are used to derive recommendations that update MTU and fragment issues in RFC 4459.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-intarea-tunnels-10"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-intarea-tunnels-10.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-tsvwg-udp-options" quoteTitle="true" target="https://tools.ietf.org/html/draft-ietf-tsvwg-udp-options-08" derivedAnchor="UDP-OPTIONS">
          <front>
            <title>Transport Options for UDP</title>
            <author initials="J" surname="Touch" fullname="Joseph Touch">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="September" day="12" year="2019"/>
            <abstract>
              <t indent="0">Transport protocols are extended through the use of transport header options. This document extends UDP by indicating the location, syntax, and semantics for UDP transport layer options.</t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-options-08"/>
          <format type="TXT" target="http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-udp-options-08.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgements">Acknowledgements</name>
      <t indent="0" pn="section-appendix.a-1">Thanks to <contact fullname="Mikael Abrahamsson"/>, 
      <contact fullname="Brian Carpenter"/>, <contact fullname="Silambu Chelvan"/>,
      <contact fullname="Lorenzo Colitti"/>, 
      <contact fullname="Gorry Fairhurst"/>, 
      <contact fullname="Joel Halpern"/>, 
      <contact fullname="Mike Heard"/>,
      <contact fullname="Tom Herbert"/>, <contact fullname="Tatuya Jinmei"/>, 
      <contact fullname="Suresh Krishnan"/>, <contact fullname="Jen Linkova"/>, 
      <contact fullname="Paolo Lucente"/>, <contact fullname="Manoj Nayak"/>, 
      <contact fullname="Eric Nygren"/>, <contact fullname="Fred Templin"/>, and 
      <contact fullname="Joe Touch"/> for their comments.
      </t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Ron Bonica" initials="R." surname="Bonica">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <postal>
            <street>2251 Corporate Park Drive</street>
            <city>Herndon</city>
            <code>20171</code>
            <region>Virginia</region>
            <country>United States of America</country>
          </postal>
          <email>rbonica@juniper.net</email>
        </address>
      </author>
      <author fullname="Fred Baker" initials="F." surname="Baker">
        <organization showOnFrontPage="true">Unaffiliated</organization>
        <address>
          <postal>
            <city>Santa Barbara</city>
            <region>California</region>
            <code>93117</code>
            <country>United States of America</country>
          </postal>
          <email>FredBaker.IETF@gmail.com</email>
        </address>
      </author>
      <author fullname="Geoff Huston" initials="G." surname="Huston">
        <organization showOnFrontPage="true">APNIC</organization>
        <address>
          <postal>
            <street>6 Cordelia St</street>
            <city>Brisbane</city>
            <region>4101 QLD</region>
            <code/>
            <country>Australia</country>
          </postal>
          <email>gih@apnic.net</email>
        </address>
      </author>
      <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>California</region>
            <code>94070</code>
            <country>United States of America</country>
          </postal>
          <email>bob.hinden@gmail.com</email>
        </address>
      </author>
      <author fullname="Ole Troan" initials="O." surname="Troan">
        <organization showOnFrontPage="true">Cisco</organization>
        <address>
          <postal>
            <street>Philip Pedersens vei 1</street>
            <city>N-1366 Lysaker</city>
            <country>Norway</country>
          </postal>
          <email>ot@cisco.com</email>
        </address>
      </author>
      <author fullname="Fernando Gont" initials="F." surname="Gont">
        <organization showOnFrontPage="true">SI6 Networks</organization>
        <address>
          <postal>
            <street>Evaristo Carriego 2644</street>
            <city>Haedo</city>
            <region>Provincia de Buenos Aires</region>
            <country>Argentina</country>
          </postal>
          <email>fgont@si6networks.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
