<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" docName="draft-ietf-6man-hbh-processing-20" number="9673" ipr="trust200902" updates="8200" obsoletes="" consensus="true" submissionType="IETF" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" xml:lang="en" prepTime="2024-10-31T12:21:27" indexInclude="true" scripts="Common,Latin">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-6man-hbh-processing-20" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9673" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="HBH Options Processing">IPv6 Hop-by-Hop Options Processing Procedures</title>
    <seriesInfo name="RFC" value="9673" stream="IETF"/>
    <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
      <organization showOnFrontPage="true">Check Point Software</organization>
      <address>
        <postal>
          <street>100 Oracle Parkway, Suite 800</street>
          <city>Redwood City</city>
          <region>CA</region>
          <code>94065</code>
          <country>United States of America</country>
        </postal>
        <email>bob.hinden@gmail.com</email>
      </address>
    </author>
    <author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
      <organization showOnFrontPage="true">University of Aberdeen</organization>
      <address>
        <postal>
          <street>School of Engineering</street>
          <street>Fraser Noble Building</street>
          <city>Aberdeen</city>
          <code>AB24 3UE</code>
          <country>United Kingdom</country>
        </postal>
        <email>gorry@erg.abdn.ac.uk</email>
      </address>
    </author>
    <date month="10" year="2024"/>
    <area>INT</area>
    <workgroup>6man</workgroup>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">This document specifies procedures for processing IPv6 Hop-by-Hop
  options in IPv6 routers and hosts. It modifies the procedures specified
  in the IPv6 Protocol Specification (RFC 8200) to make processing of the IPv6
  Hop-by-Hop Options header practical with the goal of making IPv6
  Hop-by-Hop options useful to deploy and use at IPv6 routers and hosts.
  This document updates RFC 8200.</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 is an Internet Standards Track document.
        </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 Internet Standards 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/rfc9673" 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) 2024 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" keepWithNext="true" 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-requirements-language">Requirements Language</xref></t>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" keepWithNext="true" 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-terminology">Terminology</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-background">Background</xref></t>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-hop-by-hop-header-processin">Hop-by-Hop Header Processing Procedures</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-processing-the-extension-he">Processing the Extension Header Carrying Hop-by-Hop Options</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.1.2">
                  <li pn="section-toc.1-1.5.2.1.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.1.2.1.1"><xref derivedContent="5.1.1" format="counter" sectionFormat="of" target="section-5.1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-configuration-enabling-hop-">Configuration Enabling Hop-by-Hop Header Processing</xref></t>
                  </li>
                </ul>
              </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-hop-by-hop-options-processi">Hop-by-Hop Options Processing</xref></t>
                <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2.2.2">
                  <li pn="section-toc.1-1.5.2.2.2.1">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.1.1"><xref derivedContent="5.2.1" format="counter" sectionFormat="of" target="section-5.2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-router-alert-option">Router Alert Option</xref></t>
                  </li>
                  <li pn="section-toc.1-1.5.2.2.2.2">
                    <t indent="0" pn="section-toc.1-1.5.2.2.2.2.1"><xref derivedContent="5.2.2" format="counter" sectionFormat="of" target="section-5.2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-configuration-of-hop-by-hop">Configuration of Hop-by-Hop Options Processing</xref></t>
                  </li>
                </ul>
              </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-defining-new-hop-by-hop-opt">Defining New Hop-by-Hop Options</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-example-of-robust-usage">Example of Robust Usage</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-normative-references">Normative References</xref></t>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</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.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgments">Acknowledgments</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.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 anchor="INTRO" numbered="true" removeInRFC="false" toc="include" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">This document specifies procedures for processing IPv6 Hop-by-Hop
  options in IPv6 routers and hosts.
  It modifies the procedures specified in the IPv6
  Protocol Specification <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> to make processing of the IPv6 Hop-by-Hop Options header
  practical with the goal of making IPv6 Hop-by-Hop options useful to
  deploy and use at IPv6 routers and hosts.</t>
      <t indent="0" pn="section-1-2">An IPv6 packet includes Hop-by-Hop
  options by including a Hop-by-Hop
  Options header. The current list of defined Hop-by-Hop options can be found at <xref target="IANA-HBH" format="default" sectionFormat="of" derivedContent="IANA-HBH"/>.
  The focus for this document is to set the minimum requirements
  for router processing of Hop-by-Hop options. It also discusses
  how Hop-by-Hop options are used by hosts.
  This document 
  does not propose a specific bound to the number or size of Hop-by-Hop options
  that ought to be processed.</t>
      <t indent="0" pn="section-1-3">This document updates <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>.</t>
    </section>
    <section numbered="true" removeInRFC="false" toc="include" pn="section-2">
      <name slugifiedName="name-requirements-language">Requirements Language</name>
      <t indent="0" pn="section-2-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 anchor="TERM" numbered="true" removeInRFC="false" toc="include" pn="section-3">
      <name slugifiedName="name-terminology">Terminology</name>
      <t indent="0" pn="section-3-1">This document uses the following loosely defined
   terms:</t>
      <dl spacing="normal" indent="3" newline="false" pn="section-3-2">
        <dt pn="section-3-2.1">Forwarding Plane:</dt>
        <dd pn="section-3-2.2">IPv6 routers exchange user or applications data through the
       Forwarding Plane.  Routers process fields contained in IPv6 packet
       headers.  However, they do not process information contained in packet
       payloads.</dd>
        <dt pn="section-3-2.3">Control Plane:</dt>
        <dd pn="section-3-2.4">IPv6 routers exchange control
       information through the
       Control Plane.  The Control Plane processes the management and routing
       information exchanged with other routers.</dd>
        <dt pn="section-3-2.5">Fast Path:</dt>
        <dd pn="section-3-2.6">A path through a router that is optimized for
       forwarding packets. The Fast Path
       might be supported by Application-Specific Integrated Circuits (ASICs),
       a Network Processor (NP),
       or other special purpose hardware. This is the typical processing path
       within a router taken by the Forwarding Plane.</dd>
        <dt pn="section-3-2.7">Slow Path:</dt>
        <dd pn="section-3-2.8">A path through a router that is capable of
       general purpose processing and is not optimized for any particular
       function.  This processing path is used for packets that require
       special processing or that differ from assumptions made in Fast Path
       heuristics or to process router control protocols used by the Control
       Plane.</dd>
        <dt pn="section-3-2.9">Full Forwarding Rate:</dt>
        <dd pn="section-3-2.10">The rate at which a router can
       forward packets without adversely impacting the aggregate
       forwarding rate. For example, a router could process packets
       with Hop-by-Hop options at a rate that allows it to maintain the full
       speed on its outgoing interfaces, which is sometimes called
       "wire speed".</dd>
        <dt pn="section-3-2.11">Source:</dt>
        <dd pn="section-3-2.12">The node originating the packet.</dd>
      </dl>
      <t indent="0" pn="section-3-3">NOTE: <xref target="RFC6192" format="default" sectionFormat="of" derivedContent="RFC6192"/> is an example of how designs can
   separate Control Plane and Forwarding Plane
   functions. The separation between hardware and software processing
   described in <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/> does not apply to all router
   architectures.  However, a router that performs all or most processing
   in software might still incur more processing cost when providing
   special processing for Hop-by-Hop options.</t>
    </section>
    <section anchor="BACKGROUND" numbered="true" removeInRFC="false" toc="include" pn="section-4">
      <name slugifiedName="name-background">Background</name>
      <t indent="0" pn="section-4-1">
    In early versions of the IPv6 protocol specification
    <xref target="RFC1883" format="default" sectionFormat="of" derivedContent="RFC1883"/>
        <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/>,
    Hop-by-Hop options were
    required to be processed by all nodes: routers and hosts. This proved to
    not be practical in current high speed routers, as observed in <xref target="RFC7045" sectionFormat="of" section="2.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7045#section-2.2" derivedContent="RFC7045"/>: "it is to be expected that high-performance routers will
    either ignore it or assign packets containing it to a slow processing
    path". The reasons behind this include the following:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-2">
        <li pn="section-4-2.1">The inability to process Hop-by-Hop options at the Full Forwarding
        Rate can result in issues.
        In some cases, Hop-by-Hop options would be sent to the
	control/management components that run on the Slow Path.
        This could degrade a router's performance and also its ability to process
        critical control traffic, both of which could be exploited as a
        Denial-of-Service (DoS) attack against the router.</li>
        <li pn="section-4-2.2">If a subset of packets within a flow includes Hop-by-Hop
	options, it could lead to an increased number of reordered
	packets and greater reordering distances for packets delivered to
	the destination.
        Such reordering could occur if the Hop-by-Hop
	Options header is included
	only in some packets or if a specific Hop-by-Hop option results
	in different processing for some of the packets within the
	flow. Significant reordering of packets within a flow can
	negatively impact the performance of upper-layer protocols and
	should therefore be avoided. 
        </li>
        <li pn="section-4-2.3">Packets could include multiple Hop-by-Hop options. Too many
        options could make the
        previous issues worse by increasing the resources required to process
        them. The total size of the options determines the number of header bytes
        that might need to be processed. Measurements <xref target="Cus23a" format="default" sectionFormat="of" derivedContent="Cus23a"/> show
        that the probability of successful transmission across the
	public Internet is currently
        higher for packets that include Options that result in a short
        total Extension Header (EH) Chain size (i.e., less than 40 bytes).</li>
      </ul>
      <t indent="0" pn="section-4-3"><xref target="RFC6564" format="default" sectionFormat="of" derivedContent="RFC6564"/> specifies a uniform format for new IPv6 Extension
    Headers, and this update was incorporated into
    <xref target="RFC8200" sectionFormat="of" section="4.8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.8" derivedContent="RFC8200"/> (note that
    <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> obsoleted <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/>).</t>
      <t indent="0" pn="section-4-4">When the IPv6 protocol specification was updated and published in
    July 2017 as
    <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>, the procedures relating to Hop-by-Hop options
    were specified (paragraphs 5 and 6 of <xref target="RFC8200" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4" derivedContent="RFC8200"/>) as follows:</t>
      <blockquote pn="section-4-5">
        <t indent="0" pn="section-4-5.1">
       The Hop-by-Hop Options header is not inserted or deleted, but may be
       examined or processed by any node along a packet's delivery path,
       until the packet reaches the node (or each of the set of nodes, in
       the case of multicast) identified in the Destination Address field of
       the IPv6 header.  The Hop-by-Hop Options header, when present, must
       immediately follow the IPv6 header.  Its presence is indicated by the
       value zero in the Next Header field of the IPv6 header.</t>
        <t indent="0" pn="section-4-5.2">
       NOTE: While <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/> required that all nodes
       must examine and process the Hop-by-Hop Options header, it is now
       expected that nodes along a packet's delivery path only examine
       and process the Hop-by-Hop Options header if explicitly configured
       to do so.</t>
      </blockquote>
      <t indent="0" pn="section-4-6">
    The changes meant that an implementation complied with the IPv6 protocol
    specification even if it did not process Hop-by-Hop options and that
    routers were expected to add configuration information to
    control whether they process the Hop-by-Hop Options header.
    In practice, routers may include configuration options to control
    which Hop-by-Hop options they will process.</t>
      <t indent="0" pn="section-4-7">The text regarding the processing of Hop-by-Hop options in <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> was not intended to change the processing of these
    options. It documented how they were being used in
    the Internet at the time RFC 8200 was published (see <xref target="RFC8200" sectionFormat="of" section="B" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#appendix-B" derivedContent="RFC8200"/>).  This was a constraint on
    publishing the IPv6 protocol specification as an IETF Standard.</t>
      <t indent="0" pn="section-4-8">The main issues remain:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-4-9">
        <li pn="section-4-9.1">Routers can be configured
        to drop transit packets containing Hop-by-Hop Options that
        require processing by a processor that implements the Control Plane.
        This could be done to protect against a DoS attack on the
	router <xref target="RFC9098" format="default" sectionFormat="of" derivedContent="RFC9098"/> <xref target="RFC9288" format="default" sectionFormat="of" derivedContent="RFC9288"/>.</li>
        <li pn="section-4-9.2">IPv6 packets that include a Hop-by-Hop Options header are dropped
        by some Internet paths.
        A survey in 2015 reported a high loss rate in transit Autonomous Systems (ASes) for packets that include
        Hop-by-Hop options <xref target="RFC7872" format="default" sectionFormat="of" derivedContent="RFC7872"/>.
        The operational implications of IPv6 packets that include
        Extension Headers are discussed in <xref target="RFC9098" format="default" sectionFormat="of" derivedContent="RFC9098"/>.
	
        Measurements taken in 2023 confirm this to still be the case for many types of
	network paths <xref target="Cus23b" format="default" sectionFormat="of" derivedContent="Cus23b"/>. </li>
        <li pn="section-4-9.3">Allowing multiple Hop-by-Hop options in a single packet in some cases
        consumes more router resources to process these packets.  It also adds
        complexity to the number of permutations that might need to be
        processed/configured.</li>
        <li pn="section-4-9.4">Including larger or multiple Hop-by-Hop options in a
        Hop-by-Hop Options header increases
        the number of bytes that need to be processed in forwarding,
        which in some designs can impact
        the cost of processing a packet, and in turn could increase the probability of
        drop <xref target="RFC7872" format="default" sectionFormat="of" derivedContent="RFC7872"/>. A larger Extension Header
        could also reduce the probability of a router locating all
        the header bytes required to successfully process
        an access control list operating on fields after the Hop-by-Hop
        Options header.</li>
        <li pn="section-4-9.5">Any option that can be used to force packets into the
	processor that implements the router's Control Plane can be 
	exploited as a DoS
        attack on a transit router by saturating the resources needed for
        router management protocols (routing protocols, network management
        protocols, etc.), which could cause adverse router operation.
        This is an issue for the
        Router Alert Option <xref target="RFC2711" format="default" sectionFormat="of" derivedContent="RFC2711"/>, which
	intentionally forwards packets to the Control Plane
        as discussed in <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/>.
        This impact could be mitigated by limiting
        the use of Control Plane resources by a specific packet and/or
        by using per-function rate-limiters for packets processed
        by the Control Plane.
	</li>
      </ul>
      <t indent="0" pn="section-4-10"><xref target="RFC6398" sectionFormat="of" section="3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6398#section-3" derivedContent="RFC6398"/> includes a summary of processing the IP Router Alert Option:</t>
      <blockquote pn="section-4-11">
        In a nutshell, the IP Router Alert Option does not provide a
        convenient universal mechanism to accurately and reliably distinguish
        between IP Router Alert packets of interest and unwanted IP Router
        Alert packets.  This, in turn, creates a security concern when the IP
        Router Alert Option is used, because, short of appropriate
        router-implementation-specific mechanisms, the router slow path is at risk
        of being flooded by unwanted traffic.
    </blockquote>
      <t indent="0" pn="section-4-12">This is an example of the need to limit the resources that can
        be consumed when a particular function is executed and to avoid consuming
        Control Plane resources
        where support for a function has not been configured.</t>
      <t indent="0" pn="section-4-13">There has been research that has discussed
    the general problem with dropping packets containing IPv6 Extension
    Headers, including the Hop-by-Hop Options header.
    For example, <xref target="Hendriks" format="default" sectionFormat="of" derivedContent="Hendriks"/> states that "Dropping all
    packets that contain Extension Headers is a bad practice" and that "The share
    of traffic containing more than one EH however, is very small. For the
    design of hardware able to handle the dynamic nature of EHs, we therefore
    recommend to support at least one EH".  Operational aspects of the topics
    discussed in this section are further discussed in <xref target="I-D.ietf-v6ops-hbh" format="default" sectionFormat="of" derivedContent="HBH"/>.</t>
      <t indent="0" pn="section-4-14">"Transmission and Processing of IPv6 Extension Headers" <xref target="RFC7045" format="default" sectionFormat="of" derivedContent="RFC7045"/> clarifies how intermediate nodes should process
    Extension Headers.  This document is generally consistent with
    <xref target="RFC7045" format="default" sectionFormat="of" derivedContent="RFC7045"/> and addresses an issue that was raised for
    discussion when <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/> was updated and replaced by
    <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>. This document updates <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> as described in the next section and consequently
    clarifies the description in <xref target="RFC7045" sectionFormat="of" section="2.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7045#section-2.2" derivedContent="RFC7045"/>,
    using the language of BCP 14 <xref target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/>.</t>
      <t indent="0" pn="section-4-15">This document defines a set of procedures for the Hop-by-Hop
    Options header that are intended to make the processing of Hop-by-Hop
    options practical in modern routers. The common cases are
    that some Hop-by-Hop options will be processed across the Internet,
    while others will only be processed within a limited domain <xref target="RFC8799" format="default" sectionFormat="of" derivedContent="RFC8799"/> (e.g., where a specific service is made available
    in that network segment that relies on one or more Hop-by-Hop
    options).</t>
    </section>
    <section anchor="HBH" numbered="true" removeInRFC="false" toc="include" pn="section-5">
      <name slugifiedName="name-hop-by-hop-header-processin">Hop-by-Hop Header Processing Procedures</name>
      <t indent="0" pn="section-5-1">This section describes several changes to <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/>. <xref target="FAST" format="default" sectionFormat="of" derivedContent="Section 5.1"/> describes the processing of
    the Hop-by-Hop options Extension Header, and <xref target="ONE" format="default" sectionFormat="of" derivedContent="Section 5.2"/> describes
    the processing of individual Hop-by-Hop options.
    These sections update the text in paragraph 6 of
   <xref target="RFC8200" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4" derivedContent="RFC8200"/> and, as noted in <xref target="ONE" format="default" sectionFormat="of" derivedContent="Section 5.2"/>, modify	 		
   <xref target="RFC8200" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.2" derivedContent="RFC8200"/>.</t>
      <section anchor="FAST" numbered="true" removeInRFC="false" toc="include" pn="section-5.1">
        <name slugifiedName="name-processing-the-extension-he">Processing the Extension Header Carrying Hop-by-Hop Options</name>
        <t indent="0" pn="section-5.1-1">When a packet includes one or more Extension Headers, the Next Header
        field of the IPv6 Header identifies the type of Extension Header.
        It does not identify the transport protocol.</t>
        <t indent="0" pn="section-5.1-2">The Extension Header used to carry Hop-by-Hop options
       is defined in <xref target="RFC8200" sectionFormat="of" section="4.3" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.3" derivedContent="RFC8200"/> and is identified
       by a Next Header value of 0 in the IPv6
        header.  <xref target="RFC8200" sectionFormat="of" section="4.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.1" derivedContent="RFC8200"/> requires this Hop-by-Hop
        Options header to appear immediately after the IPv6 header.  <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> also requires that a Hop-by-Hop Options header
        only appear at most once in a packet.</t>
        <t indent="0" pn="section-5.1-3">The Hop-by-Hop Options header as defined in
        <xref target="RFC8200" format="default" sectionFormat="of" derivedContent="RFC8200"/> can contain
        one or more Hop-by-Hop options.</t>
        <t indent="0" pn="section-5.1-4">Routers that process the Hop-by-Hop Options header <bcp14>SHOULD</bcp14> do
        so using the method defined in this document.
	Exceptions to this <bcp14>SHOULD</bcp14> include routers that are configured to
	drop packets with a Hop-by-Hop Options header to protect
	downstream devices that do not comply with this
	specification  (see <xref target="RFC9288" format="default" sectionFormat="of" derivedContent="RFC9288"/>).</t>
        <t indent="0" pn="section-5.1-5">Even if a router does not process the Hop-by-Hop Options
        header (for example, when based on configuration), it <bcp14>MUST</bcp14> forward the
        packet normally based on the remaining Extension Header(s) after
        the Hop-by-Hop Options header.  A router <bcp14>MUST NOT</bcp14> drop a packet
        solely because it contains an Extension Header carrying
        Hop-by-Hop options.  A configuration could control whether normal
        processing skips any or all of the Hop-by-Hop options carried in
        the Hop-by-Hop Options header.</t>
        <t indent="0" pn="section-5.1-6">It is expected that the Hop-by-Hop Options header will be
        processed by the destination(s).
        Hosts <bcp14>SHOULD</bcp14> process the Hop-by-Hop Options header in
        received packets.  A constrained host is an example of a node
	that does not process the Hop-by-Hop Options header.
        If a destination does not process the Hop-by-Hop Options header,
        it <bcp14>MUST</bcp14> process the remainder of the packet normally.
        </t>
        <section anchor="CONFIG" numbered="true" removeInRFC="false" toc="include" pn="section-5.1.1">
          <name slugifiedName="name-configuration-enabling-hop-">Configuration Enabling Hop-by-Hop Header Processing</name>
          <t indent="0" pn="section-5.1.1-1"><xref target="RFC8200" sectionFormat="of" section="4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4" derivedContent="RFC8200"/> allows a router to control its processing
        of IPv6 Hop-by-Hop options by local configuration.  The text is:</t>
          <blockquote pn="section-5.1.1-2">
           NOTE: While <xref target="RFC2460" format="default" sectionFormat="of" derivedContent="RFC2460"/> required that all nodes must examine and
           process the Hop-by-Hop Options header, it is now expected that nodes
           along the path only examine and process the
           Hop-by-Hop Options header if explicitly configured to do so.
        </blockquote>
          <t indent="0" pn="section-5.1.1-3">
	 This document clarifies that a configuration could control whether
  processing skips any specific Hop-by-Hop options carried in the Hop-
  by-Hop Options header.  A router that does not process the contents
  of the Hop-by-Hop Options header does not process any of the
  Option Types contained in the Hop-by-Hop Options header.
          </t>
        </section>
      </section>
      <section anchor="ONE" numbered="true" removeInRFC="false" toc="include" pn="section-5.2">
        <name slugifiedName="name-hop-by-hop-options-processi">Hop-by-Hop Options Processing</name>
        <t indent="0" pn="section-5.2-1">A Source creating packets with a Hop-by-Hop Options header <bcp14>SHOULD</bcp14> use
           a method that is robust to network nodes selectively processing only
           some of the Hop-by-Hop options that are included in the packet or that forward
           packets without the option(s) being processed (see <xref target="HOW" format="default" sectionFormat="of" derivedContent="Section 6.1"/>).
           
        A Source <bcp14>MAY</bcp14>, based on local configuration,
        allow only one Hop-by-Hop option to be included in a packet,
        or it could allow more than one Hop-by-Hop option
        but limit their size to increase the likelihood of successful
        transfer across a network path.
        Because some routers might only process one or a limited number of
        options in the Hop-by-Hop Options header, Sources are motivated to
        order the placement of Hop-by-Hop options within the Hop-by-Hop
        Options header in decreasing order of importance for their
        processing by nodes on the path.
        </t>
        <t indent="0" pn="section-5.2-2">A router configuration needs to avoid vulnerabilities that
        arise when it cannot process the first Hop-by-Hop option at the Full
        Forwarding Rate.  Therefore, a router <bcp14>SHOULD NOT</bcp14> be configured to
        process the first Hop-by-Hop option if this adversely impacts the
        aggregate forwarding rate.  A router <bcp14>SHOULD</bcp14> process additional
        Hop-by-Hop options, if configured to do so, providing that these
        also do not adversely impact the aggregate forwarding rate.</t>
        <t indent="0" pn="section-5.2-3">If a router is unable to process a specific Hop-by-Hop option
        (or is not configured to do so), it
        <bcp14>SHOULD</bcp14> behave in the same way specified for an unrecognized Option Type when the
        action bits are set to "00", and it
        <bcp14>SHOULD</bcp14> skip the remaining options
        using the "Hdr Ext Len" field in the
        Hop-by-Hop Options header.  This field specifies the length of the Options
        Header in 8-octet units.  After skipping an option, the router continues
        processing the remaining options in the header.
        Skipped options do not need to be verified.</t>
        <t indent="0" pn="section-5.2-4">The Router
        Alert Option <xref target="RFC2711" format="default" sectionFormat="of" derivedContent="RFC2711"/> is an exception
        to this because it is designed to tell a router
	that the packet needs additional processing, which is usually done
        in the Control Plane; see <xref target="RTRALERT" format="default" sectionFormat="of" derivedContent="Section 5.2.1"/>.
        </t>
        <t indent="0" pn="section-5.2-5"><xref target="RFC8200" sectionFormat="of" section="4.2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.2" derivedContent="RFC8200"/>
        defines the Option Type identifiers as internally encoded such that their
        highest-order 2 bits specify the action that must be taken if the
        processing IPv6 node does not recognize the Option Type. The text is:</t>
        <artwork align="left" name="" type="" alt="" pn="section-5.2-6">
   00 - skip over this option and continue processing the header.

   01 - discard the packet.

   10 - discard the packet and, regardless of whether or not the
        packet's Destination Address was a multicast address, 
        send an ICMP Parameter Problem, Code 2, message to the
        packet's Source Address, pointing to the unrecognized 
        Option Type.

   11 - discard the packet and, only if the packet's Destination
        Address was not a multicast address, send an ICMP Parameter
        Problem, Code 2, message to the packet's Source Address,
        pointing to the unrecognized Option Type.
</artwork>
        <t indent="0" pn="section-5.2-7">This document modifies this behavior for the "01", "10", and
	"11" action bits so that if a router is unable to process a specific Hop-by-Hop option
        (or is not configured to do so), it <bcp14>SHOULD</bcp14> behave in the same way
	specified for an unrecognized Option Type when the 
        action bits are set to "00".
            
        It also modifies the behavior for values "10" and "11" in the case where 
        the packet is discarded and the
        node <bcp14>MAY</bcp14> send an ICMP Parameter Problem, Code 2 <xref target="RFC4443" format="default" sectionFormat="of" derivedContent="RFC4443"/>,
	message to the packet's Source Address, pointing to the unrecognized Option Type.</t>
        <t indent="0" pn="section-5.2-8">The modified text for values "01", "10", and "11" is:</t>
        <artwork align="left" name="" type="" alt="" pn="section-5.2-9">
   01 - MAY discard the packet, if so configured. Nodes should not
        rely on routers dropping these unrecognized Option Types.

   10 - MAY discard the packet, if so configured, regardless of
        whether or not the packet's Destination Address was a
        multicast address. If the packet was discarded, an ICMP
        Parameter Problem, Code 2, message MAY be sent to the 
        packet's Source Address, pointing to the unrecognized 
        Option Type.

   11 - MAY discard the packet, if so configured. If the packet
        was discarded and the packet's Destination Address was 
        not a multicast address, an ICMP Parameter Problem, 
        Code 2, message MAY be sent to the packet's Source 
        Address, pointing to the unrecognized Option Type.
</artwork>
        <t indent="0" pn="section-5.2-10">When an ICMP Parameter Problem, Code 2, message is delivered to the
        Source, it
	indicates that at least one node on the
        path has failed to recognize the option <xref target="RFC4443" format="default" sectionFormat="of" derivedContent="RFC4443"/>.
        Generating any ICMP message
        incurs additional router processing.
        Reception of this message is
        not guaranteed;
        routers might be unable to be configured so that they do not generate
        these messages, 
	and they are not always forwarded to the Source.
        The motivation here is to loosen
        the requirement to send an ICMPv6 Parameter Problem message when a router
        forwards a packet without processing the list of all options.</t>
        <section anchor="RTRALERT" numbered="true" removeInRFC="false" toc="include" pn="section-5.2.1">
          <name slugifiedName="name-router-alert-option">Router Alert Option</name>
          <t indent="0" pn="section-5.2.1-1">The purpose of the Router Alert Option <xref target="RFC2711" format="default" sectionFormat="of" derivedContent="RFC2711"/> is to tell
        a router that the packet needs additional processing in the Control Plane.
          </t>
          <t indent="0" pn="section-5.2.1-2">The Router Alert Option includes a two-octet Value field that
        describes the protocol that is carried in the packet.
	The
	current specified values can 
        be found in the "IPv6 Router Alert Option Values" IANA registry <xref target="IANA-RA" format="default" sectionFormat="of" derivedContent="IANA-RA"/>.</t>
          <t indent="0" pn="section-5.2.1-3">DISCUSSION</t>
          <t indent="3" pn="section-5.2.1-4">The function of a Router Alert Option can result in the processing
 that this specification is proposing to eliminate, that is,
 instructing a router to process the packet in the Control Plane.
 This processing causes concerns, which are discussed in <xref target="BACKGROUND" format="default" sectionFormat="of" derivedContent="Section 4"/>.
 One approach would be to deprecate this, because current usage 
 beyond the local network appears to be limited, and packets containing 
 Hop-by-Hop options are frequently dropped. Deprecation would allow 
 current implementations to continue, and its use could be phased out 
 over time.</t>
          <t indent="3" pn="section-5.2.1-5">The Router Alert Option could potentially be used with new
 functions that have to be processed in the Control Plane.  Keeping
 this as the single exception for processing in the Control Plane
 with the restrictions that follow is a reasonable compromise to
 allow future flexibility.  These restrictions are compatible 
 with <xref target="RFC6398" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc6398#section-5" derivedContent="RFC6398"/>.</t>
          <t indent="0" pn="section-5.2.1-6">
        As noted in <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/>, 
        "Implementations of the IP Router Alert Option
        <bcp14>SHOULD</bcp14> offer the configuration option to simply ignore the presence
        of 'IP Router Alert' in IPv4 and IPv6 packets."</t>
          <t indent="0" pn="section-5.2.1-7">A node that is configured to process a Router Alert Option
        <bcp14>MUST</bcp14> protect itself from an infrastructure attack
        that could result from processing in the Control Plane. This might include
        some combination of an access control list to only permit access from trusted nodes,
        rate limiting of processing, or other methods <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/>.</t>
          <t indent="0" pn="section-5.2.1-8">As specified in <xref target="RFC2711" format="default" sectionFormat="of" derivedContent="RFC2711"/>, the top two bits of the Option Type
        for the Router Alert Option are always set to "00", indicating that the node
        should skip over this option as if it does not recognize the Option
	Type and continue processing the header.
        An implementation that does recognize the Router Alert Option
	<bcp14>SHOULD</bcp14> verify that the Router Alert Option contains a
        protocol, as indicated by the Value field in the Router Alert Option,
        that is configured as a protocol of interest to that
        router.  A verified packet <bcp14>SHOULD</bcp14> be sent to the Control Plane for further processing
        <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/>.  Otherwise, the router implementation <bcp14>SHOULD</bcp14> forward
        this packet subject to all normal policies and forwarding rules.
          </t>
        </section>
        <section anchor="CONFIG2" numbered="true" removeInRFC="false" toc="include" pn="section-5.2.2">
          <name slugifiedName="name-configuration-of-hop-by-hop">Configuration of Hop-by-Hop Options Processing</name>
          <t indent="0" pn="section-5.2.2-1">A router can be configured to process a specific Option.  The set
      of enabled options <bcp14>SHOULD</bcp14> be configurable by the operator of the
      router.</t>
          <t indent="0" pn="section-5.2.2-2">A possible approach to implementing this is to maintain a lookup
      table based on an Option Type of the IPv6 options that can be
      processed at the Full Forwarding Rate.  This would allow a router to
      quickly determine if an option is supported and can be processed.
      If the option is not supported, then the router processes the
      option as described in <xref target="FAST" format="default" sectionFormat="of" derivedContent="Section 5.1"/> of this document.</t>
          <t indent="0" pn="section-5.2.2-3">The actions of the lookup table should be configurable by the operator of
    the router.</t>
        </section>
      </section>
    </section>
    <section anchor="NEW" numbered="true" removeInRFC="false" toc="include" pn="section-6">
      <name slugifiedName="name-defining-new-hop-by-hop-opt">Defining New Hop-by-Hop Options</name>
      <t indent="0" pn="section-6-1">This section updates <xref target="RFC8200" sectionFormat="of" section="4.8" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4.8" derivedContent="RFC8200"/>.</t>
      <t indent="0" pn="section-6-2">Any future new IPv6 Hop-by-Hop options should be designed to
    be processed at the Full Forwarding Rate and should have the following characteristics:</t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-6-3">
        <li pn="section-6-3.1">New Hop-by-Hop options should
        be designed to ensure the router can process the options at the Full
        Forwarding Rate. That is, they should be simple to process. 
        </li>
        <li pn="section-6-3.2">New Hop-by-Hop options should be defined with the Action type (highest-order 2
        bits of the Option Type) set to "00", which enables skipping over this option
	and continuing with the processing of the header if a router does not recognize
	the option.</li>
        <li pn="section-6-3.3">The size of Hop-by-Hop options should not extend beyond what can be
        expected to be executed at the Full Forwarding Rate.  A larger Hop-by-Hop
        Options header can increase the likelihood that a packet will be
        dropped <xref target="Cus23b" format="default" sectionFormat="of" derivedContent="Cus23b"/>.  
        </li>
        <li pn="section-6-3.4">New Hop-by-Hop options should be designed with the expectation that a router
        might be configured to only process a subset of Hop-by-Hop options (e.g., the first option) in the
        Hop-by-Hop Options header.</li>
        <li pn="section-6-3.5">The design of protocols that use new Hop-by-Hop options should consider
        that a router may drop packets containing the new Hop-by-Hop option.
        </li>
      </ul>
      <t indent="0" pn="section-6-4">If a new Hop-by-Hop option does not meet
    these criteria, its specification must include a detailed
    explanation why that is the case and show that there
    is a reasonable expectation that the option can still proceed at the Full
    Forwarding Rate.  This is consistent with [RFC6564].
    This is consistent with <xref target="RFC6564" format="default" sectionFormat="of" derivedContent="RFC6564"/>.</t>
      <t indent="0" pn="section-6-5">The general issue of robust operation of packets with new
    Hop-by-Hop options is described in <xref target="HOW" format="default" sectionFormat="of" derivedContent="Section 6.1"/>.</t>
      <section anchor="HOW" numbered="true" removeInRFC="false" toc="include" pn="section-6.1">
        <name slugifiedName="name-example-of-robust-usage">Example of Robust Usage</name>
        <t indent="0" pn="section-6.1-1">Recent measurement
        surveys (e.g., <xref target="Cus23a" format="default" sectionFormat="of" derivedContent="Cus23a"/>)
        show that packets that include Extension Headers can cause the packets to
        be dropped by some
        Internet paths. In a limited domain, routers can be configured or updated
        to provide support for any required Hop-by-Hop options.</t>
        <t indent="0" pn="section-6.1-2">The primary motivation of this document is to make it
        more practical to use Hop-by-Hop options beyond such a limited domain, with the
        expectation that applications can improve the
        quality of or add new features to their offered service when
        the path successfully forwards packets with the required Hop-by-Hop options
        and otherwise refrains from using these options.
        The focus is on incremental deployability.

        A protocol feature (such as using Hop-by-Hop options) is incrementally
        deployable if early adopters gain some
        benefit on the paths being used, even though other paths do not support the
        protocol feature.
	A Source ought to order the Hop-by-Hop options that are carried
	in the Hop-by-Hop Options header in decreasing order of
        importance for processing by nodes on the path.
        </t>
        <t indent="0" pn="section-6.1-3">Methods can be developed that do not rely upon all routers
        to implement a specific Hop-by-Hop option (e.g., <xref target="RFC9268" format="default" sectionFormat="of" derivedContent="RFC9268"/>)
        and that are robust when the
        current path drops packets that contain a Hop-by-Hop option (e.g.,
        <xref target="RFC9098" format="default" sectionFormat="of" derivedContent="RFC9098"/>).</t>
        <t indent="0" pn="section-6.1-4">For example, an application can be designed to first send
        a test packet that includes the required option or combination
        of options and then send other packets without including
        the option. The application does not send additional
        packets that include this option (or set of options) until the
        test packet(s) is acknowledged.
        The need for potential loss recovery when a path drops
        these test packets can be avoided by choosing packets that do not
        carry application data that needs to be reliably delivered.</t>
        <t indent="0" pn="section-6.1-5">Since the set of nodes forming a path can change with time,
        this discovery process ought to be repeated from time to time.
        The process of sending packets both with and without a specific
        header to discover whether a path can support a specific header
        is sometimes called "racing". Transport protocol racing
        is explained in <xref target="I-D.ietf-taps-arch" format="default" sectionFormat="of" derivedContent="TAPS-ARCH"/>,
        and A/B protocol feature testing is described in <xref target="Tram17" format="default" sectionFormat="of" derivedContent="Tram17"/>.</t>
      </section>
    </section>
    <section anchor="IANA" numbered="true" removeInRFC="false" toc="include" pn="section-7">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-7-1">This document updates the processing of
        Hop-by-Hop options.
        IANA has added this document as an
        additional reference for the "Destination Options and Hop-by-Hop Options" registry
        in the "Internet Protocol Version 6 (IPv6) Parameters" registry group <xref target="IANA-HBH" format="default" sectionFormat="of" derivedContent="IANA-HBH"/>.</t>
    </section>
    <section anchor="Security" numbered="true" removeInRFC="false" toc="include" pn="section-8">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-8-1">Security issues caused by including IPv6 Hop-by-Hop options are well known and have
    been documented in several places, including
    <xref target="RFC6398" format="default" sectionFormat="of" derivedContent="RFC6398"/>,
    <xref target="RFC6192" format="default" sectionFormat="of" derivedContent="RFC6192"/>, <xref target="RFC7045" format="default" sectionFormat="of" derivedContent="RFC7045"/>, and
    <xref target="RFC9098" format="default" sectionFormat="of" derivedContent="RFC9098"/>.
    The main issue, as noted in <xref target="BACKGROUND" format="default" sectionFormat="of" derivedContent="Section 4"/>, is that
    any mechanism that can be used to force packets into the
    router's Control Plane or Slow Path can be exploited as a DoS attack on a
    router by saturating the resources needed for router management
    (routing protocols, network management protocols, etc.), and this can
    cause the router to fail or perform suboptimally. </t>
      <t indent="0" pn="section-8-2">While Hop-by-Hop options are not required to be processed in the
    Control Plane, the Router Alert Option is the one exception that is designed
    to be processed in the Control Plane.</t>
      <t indent="0" pn="section-8-3">Some IPv6 nodes implement features that access more of the protocol
    information than a typical IPv6 router (e.g., <xref target="RFC9098" format="default" sectionFormat="of" derivedContent="RFC9098"/>).
    Examples are nodes that provide
    DoS mitigation, firewall/access control, traffic engineering,
    or traffic normalization. These nodes
    could be configured to drop packets when they are unable to access
    and process all Extension Headers or are unable to locate and process
    the higher-layer packet information. This document provides guidance
    on the requirements concerning Hop-by-Hop options.</t>
      <t indent="0" pn="section-8-4"> Finally, this document notes that Internet protocol processing needs to be robust for
    malformed/malicious protocol fields.

    For example, a packet with an
    excessive number of options could consume significant resources;
    inclusion of a large Extension Header could potentially cause an
    on-path router to be unable to utilize hardware optimizations
    to process later headers (e.g., to perform equal cost multipath
    forwarding or port filtering).
    
    This requirement is not specific to
    Hop-by-Hop options. It is important that implementations
    fail gracefully when a malformed or malicious Hop-by-Hop option is encountered.</t>
      <t indent="0" pn="section-8-5">This document changes how the Hop-by-Hop Options header is processed,
    which significantly reduces the attack surface.  These changes include the following:
      </t>
      <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8-6">
        <li pn="section-8-6.1">A router configuration needs to avoid vulnerabilities that
            arise when it cannot process a Hop-by-Hop option at the Full
            Forwarding Rate; therefore, it <bcp14>SHOULD NOT</bcp14> be configured to
            process the Hop-by-Hop option if it adversely impacts the
            aggregate forwarding rate. Instead, it
            <bcp14>SHOULD</bcp14> behave in the same way specified for an unrecognized Option Type when the
            action bits are set to "00", as specified in <xref target="ONE" format="default" sectionFormat="of" derivedContent="Section 5.2"/>.</li>
        <li pn="section-8-6.2">This document adds criteria for the Router Alert Option (<xref target="RTRALERT" format="default" sectionFormat="of" derivedContent="Section 5.2.1"/>)
        to allow control over how it is
        processed and describes how a node configured to support these options must
        protect itself from attacks by using the Router Alert Option.</li>
        <li pn="section-8-6.3">This document sets the expectation that if a packet
        includes a Hop-by-Hop Options header, the packet will be forwarded across the network path.
        </li>
        <li pn="section-8-6.4">A Source <bcp14>MAY</bcp14> include a single Hop-by-Hop option (based on
        local configuration) or <bcp14>MAY</bcp14> be configured to include more
        Hop-by-Hop options. The configuration of intermediate nodes determines
    whether a node processes any of these options, and if so, which ones and how many.</li>
        <li pn="section-8-6.5">This document adds guidance for the design of
        any future new Hop-by-Hop option that reduces the
        computational requirements and encourages a
        limit to their size.</li>
      </ul>
      <t indent="0" pn="section-8-7">The intent of this document is to highlight that these changes significantly reduce the
    security issues relating to processing the IPv6 Hop-by-Hop Options header
    and enable Hop-by-Hop options to be safely used in the Internet.</t>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-v6ops-hbh" to="HBH"/>
    <displayreference target="I-D.ietf-taps-arch" to="TAPS-ARCH"/>
    <references pn="section-9">
      <name slugifiedName="name-normative-references">Normative References</name>
      <reference anchor="IANA-HBH" target="https://www.iana.org/assignments/ipv6-parameters/" quoteTitle="true" derivedAnchor="IANA-HBH">
        <front>
          <title>Destination Options and Hop-by-Hop Options</title>
          <author>
            <organization showOnFrontPage="true">IANA</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t indent="0">In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <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 fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="July" year="2017"/>
          <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>
    </references>
    <references pn="section-10">
      <name slugifiedName="name-informative-references">Informative References</name>
      <reference anchor="Cus23a" target="http://www.iepg.org/2023-03-26-ietf116/eh.pdf" quoteTitle="true" derivedAnchor="Cus23a">
        <front>
          <title>Internet Measurements: IPv6 Extension Header Edition</title>
          <author initials="A" surname="Custura" fullname="Ana Custura">
          </author>
          <author initials="G" surname="Fairhurst" fullname="Gorry Fairhurst">
          </author>
          <date month="March" year="2023"/>
        </front>
        <refcontent>IEPG Meeting: IETF 116</refcontent>
      </reference>
      <reference anchor="Cus23b" target="https://www.sciencedirect.com/science/article/pii/S0140366423003705" quoteTitle="true" derivedAnchor="Cus23b">
        <front>
          <title>Is it possible to extend IPv6?</title>
          <author initials="A." surname="Custura" fullname="A. Custura"/>
          <author initials="R." surname="Secchi" fullname="R. Secchi"/>
          <author initials="E." surname="Boswell" fullname="E. Boswell"/>
          <author initials="G." surname="Fairhurst" fullname="G. Fairhurst"/>
          <date year="2024" month="Jan"/>
        </front>
        <refcontent>Computer Communications, vol. 214, pp. 90-99</refcontent>
        <seriesInfo name="DOI" value="10.1016/j.comcom.2023.10.006"/>
      </reference>
      <reference anchor="I-D.ietf-v6ops-hbh" target="https://datatracker.ietf.org/doc/html/draft-ietf-v6ops-hbh-10" quoteTitle="true" derivedAnchor="HBH">
        <front>
          <title>Operational Issues with Processing of the Hop-by-Hop Options Header</title>
          <author initials="S." surname="Peng" fullname="Shuping Peng">
            <organization showOnFrontPage="true">Huawei Technologies</organization>
          </author>
          <author initials="Z." surname="Li" fullname="Zhenbin Li">
            <organization showOnFrontPage="true">Huawei Technologies</organization>
          </author>
          <author initials="C." surname="Xie" fullname="Chongfeng Xie">
            <organization showOnFrontPage="true">China Telecom</organization>
          </author>
          <author initials="Z." surname="Qin" fullname="Zhuangzhuang Qin">
            <organization showOnFrontPage="true">China Unicom</organization>
          </author>
          <author initials="G. S." surname="Mishra" fullname="Gyan Mishra">
            <organization showOnFrontPage="true">Verizon Inc.</organization>
          </author>
          <date month="February" day="16" year="2024"/>
          <abstract>
            <t indent="0">   This document describes the processing of the Hop-by-Hop Options
   Header (HBH) in current routers in the aspects of standards
   specification, common implementations, and default operations.  This
   document outlines reasons why the Hop-by-Hop Options Header is rarely
   utilized in current networks.  In addition, this document describes
   how HBH Options Header could be used as a powerful mechanism allowing
   deployment and operations of new services requiring a more optimized
   way to leverage network resources of an infrastructure.  The purpose
   of this draft is to document reasons why HBH Options Header is rarely
   used within networks.  It motivates the benefits and requirements
   needed to enable wider use of HBH Options.


            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-v6ops-hbh-10"/>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="Hendriks" target="http://dl.ifip.org/db/conf/tma/tma2017/tma2017_paper22.pdf" quoteTitle="true" derivedAnchor="Hendriks">
        <front>
          <title>Threats and Surprises behind IPv6 Extension Headers</title>
          <author initials="L" surname="Hendriks" fullname="Luuk Hendriks">
            <organization showOnFrontPage="true">University of Twente</organization>
          </author>
          <author initials="P" surname="Velan" fullname="Petr Velan">
            <organization showOnFrontPage="true">University of Twente</organization>
          </author>
          <author initials="RO" surname="Schmidt" fullname="Ricardo de O. Schmidt">
            <organization showOnFrontPage="true">University of Twente</organization>
          </author>
          <author initials="P" surname="Boer" fullname="Pieter-Tjerk de Boer">
            <organization showOnFrontPage="true">University of Twente</organization>
          </author>
          <author initials="A" surname="Aiko" fullname="Aiko Pras">
            <organization showOnFrontPage="true">University of Twente</organization>
          </author>
          <date month="August" year="2017"/>
        </front>
        <seriesInfo name="DOI" value="10.23919/TMA.2017.8002912"/>
        <refcontent>2017 Network Traffic Measurement and Analysis Conference (TMA)</refcontent>
      </reference>
      <reference anchor="IANA-RA" target="https://www.iana.org/assignments/ipv6-routeralert-values/" quoteTitle="true" derivedAnchor="IANA-RA">
        <front>
          <title>IPv6 Router Alert Option Values</title>
          <author>
            <organization showOnFrontPage="true">IANA</organization>
          </author>
          <date/>
        </front>
      </reference>
      <reference anchor="RFC1883" target="https://www.rfc-editor.org/info/rfc1883" quoteTitle="true" derivedAnchor="RFC1883">
        <front>
          <title>Internet Protocol, Version 6 (IPv6) Specification</title>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="December" year="1995"/>
          <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="1883"/>
        <seriesInfo name="DOI" value="10.17487/RFC1883"/>
      </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 fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <date month="December" year="1998"/>
          <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="RFC2711" target="https://www.rfc-editor.org/info/rfc2711" quoteTitle="true" derivedAnchor="RFC2711">
        <front>
          <title>IPv6 Router Alert Option</title>
          <author fullname="C. Partridge" initials="C." surname="Partridge"/>
          <author fullname="A. Jackson" initials="A." surname="Jackson"/>
          <date month="October" year="1999"/>
          <abstract>
            <t indent="0">This memo describes a new IPv6 Hop-by-Hop Option type that alerts transit routers to more closely examine the contents of an IP datagram. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="2711"/>
        <seriesInfo name="DOI" value="10.17487/RFC2711"/>
      </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 fullname="A. Conta" initials="A." surname="Conta"/>
          <author fullname="S. Deering" initials="S." surname="Deering"/>
          <author fullname="M. Gupta" initials="M." role="editor" surname="Gupta"/>
          <date month="March" year="2006"/>
          <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="RFC6192" target="https://www.rfc-editor.org/info/rfc6192" quoteTitle="true" derivedAnchor="RFC6192">
        <front>
          <title>Protecting the Router Control Plane</title>
          <author fullname="D. Dugal" initials="D." surname="Dugal"/>
          <author fullname="C. Pignataro" initials="C." surname="Pignataro"/>
          <author fullname="R. Dunn" initials="R." surname="Dunn"/>
          <date month="March" year="2011"/>
          <abstract>
            <t indent="0">This memo provides a method for protecting a router's control plane from undesired or malicious traffic. In this approach, all legitimate router control plane traffic is identified. Once legitimate traffic has been identified, a filter is deployed in the router's forwarding plane. That filter prevents traffic not specifically identified as legitimate from reaching the router's control plane, or rate-limits such traffic to an acceptable level.</t>
            <t indent="0">Note that the filters described in this memo are applied only to traffic that is destined for the router, and not to all traffic that is passing through the router. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6192"/>
        <seriesInfo name="DOI" value="10.17487/RFC6192"/>
      </reference>
      <reference anchor="RFC6398" target="https://www.rfc-editor.org/info/rfc6398" quoteTitle="true" derivedAnchor="RFC6398">
        <front>
          <title>IP Router Alert Considerations and Usage</title>
          <author fullname="F. Le Faucheur" initials="F." role="editor" surname="Le Faucheur"/>
          <date month="October" year="2011"/>
          <abstract>
            <t indent="0">The IP Router Alert Option is an IP option that alerts transit routers to more closely examine the contents of an IP packet. The Resource reSerVation Protocol (RSVP), Pragmatic General Multicast (PGM), the Internet Group Management Protocol (IGMP), Multicast Listener Discovery (MLD), Multicast Router Discovery (MRD), and General Internet Signaling Transport (GIST) are some of the protocols that make use of the IP Router Alert Option. This document discusses security aspects and usage guidelines around the use of the current IP Router Alert Option, thereby updating RFC 2113 and RFC 2711. Specifically, it provides recommendations against using the Router Alert in the end-to-end open Internet and identifies controlled environments where protocols depending on Router Alert can be used safely. It also provides recommendations about protection approaches for service providers. Finally, it provides brief guidelines for Router Alert implementation on routers. This memo documents an Internet Best Current Practice.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="168"/>
        <seriesInfo name="RFC" value="6398"/>
        <seriesInfo name="DOI" value="10.17487/RFC6398"/>
      </reference>
      <reference anchor="RFC6564" target="https://www.rfc-editor.org/info/rfc6564" quoteTitle="true" derivedAnchor="RFC6564">
        <front>
          <title>A Uniform Format for IPv6 Extension Headers</title>
          <author fullname="S. Krishnan" initials="S." surname="Krishnan"/>
          <author fullname="J. Woodyatt" initials="J." surname="Woodyatt"/>
          <author fullname="E. Kline" initials="E." surname="Kline"/>
          <author fullname="J. Hoagland" initials="J." surname="Hoagland"/>
          <author fullname="M. Bhatia" initials="M." surname="Bhatia"/>
          <date month="April" year="2012"/>
          <abstract>
            <t indent="0">In IPv6, optional internet-layer information is encoded in separate headers that may be placed between the IPv6 header and the transport-layer header. There are a small number of such extension headers currently defined. This document describes the issues that can arise when defining new extension headers and discusses the alternate extension mechanisms in IPv6. It also provides a common format for defining any new IPv6 extension headers, if they are needed. [STANDARDS-TRACK]</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="6564"/>
        <seriesInfo name="DOI" value="10.17487/RFC6564"/>
      </reference>
      <reference anchor="RFC7045" target="https://www.rfc-editor.org/info/rfc7045" quoteTitle="true" derivedAnchor="RFC7045">
        <front>
          <title>Transmission and Processing of IPv6 Extension Headers</title>
          <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
          <author fullname="S. Jiang" initials="S." surname="Jiang"/>
          <date month="December" year="2013"/>
          <abstract>
            <t indent="0">Various IPv6 extension headers have been standardised since the IPv6 standard was first published. This document updates RFC 2460 to clarify how intermediate nodes should deal with such extension headers and with any that are defined in the future. It also specifies how extension headers should be registered by IANA, with a corresponding minor update to RFC 2780.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7045"/>
        <seriesInfo name="DOI" value="10.17487/RFC7045"/>
      </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 fullname="F. Gont" initials="F." surname="Gont"/>
          <author fullname="J. Linkova" initials="J." surname="Linkova"/>
          <author fullname="T. Chown" initials="T." surname="Chown"/>
          <author fullname="W. Liu" initials="W." surname="Liu"/>
          <date month="June" year="2016"/>
          <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="RFC8799" target="https://www.rfc-editor.org/info/rfc8799" quoteTitle="true" derivedAnchor="RFC8799">
        <front>
          <title>Limited Domains and Internet Protocols</title>
          <author fullname="B. Carpenter" initials="B." surname="Carpenter"/>
          <author fullname="B. Liu" initials="B." surname="Liu"/>
          <date month="July" year="2020"/>
          <abstract>
            <t indent="0">There is a noticeable trend towards network behaviors and semantics that are specific to a particular set of requirements applied within a limited region of the Internet. Policies, default parameters, the options supported, the style of network management, and security requirements may vary between such limited regions. This document reviews examples of such limited domains (also known as controlled environments), notes emerging solutions, and includes a related taxonomy. It then briefly discusses the standardization of protocols for limited domains. Finally, it shows the need for a precise definition of "limited domain membership" and for mechanisms to allow nodes to join a domain securely and to find other members, including boundary nodes.</t>
            <t indent="0">This document is the product of the research of the authors. It has been produced through discussions and consultation within the IETF but is not the product of IETF consensus.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8799"/>
        <seriesInfo name="DOI" value="10.17487/RFC8799"/>
      </reference>
      <reference anchor="RFC9098" target="https://www.rfc-editor.org/info/rfc9098" quoteTitle="true" derivedAnchor="RFC9098">
        <front>
          <title>Operational Implications of IPv6 Packets with Extension Headers</title>
          <author fullname="F. Gont" initials="F." surname="Gont"/>
          <author fullname="N. Hilliard" initials="N." surname="Hilliard"/>
          <author fullname="G. Doering" initials="G." surname="Doering"/>
          <author fullname="W. Kumari" initials="W." surname="Kumari"/>
          <author fullname="G. Huston" initials="G." surname="Huston"/>
          <author fullname="W. Liu" initials="W." surname="Liu"/>
          <date month="September" year="2021"/>
          <abstract>
            <t indent="0">This document summarizes the operational implications of IPv6 extension headers specified in the IPv6 protocol specification (RFC 8200) and attempts to analyze reasons why packets with IPv6 extension headers are often dropped in the public Internet.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9098"/>
        <seriesInfo name="DOI" value="10.17487/RFC9098"/>
      </reference>
      <reference anchor="RFC9268" target="https://www.rfc-editor.org/info/rfc9268" quoteTitle="true" derivedAnchor="RFC9268">
        <front>
          <title>IPv6 Minimum Path MTU Hop-by-Hop Option</title>
          <author fullname="R. Hinden" initials="R." surname="Hinden"/>
          <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
          <date month="August" year="2022"/>
          <abstract>
            <t indent="0">This document specifies a new IPv6 Hop-by-Hop Option that is used to record the Minimum Path MTU (PMTU) along the forward path between a source host to a destination host. The recorded value can then be communicated back to the source using the return Path MTU field in the Option.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9268"/>
        <seriesInfo name="DOI" value="10.17487/RFC9268"/>
      </reference>
      <reference anchor="RFC9288" target="https://www.rfc-editor.org/info/rfc9288" quoteTitle="true" derivedAnchor="RFC9288">
        <front>
          <title>Recommendations on the Filtering of IPv6 Packets Containing IPv6 Extension Headers at Transit Routers</title>
          <author fullname="F. Gont" initials="F." surname="Gont"/>
          <author fullname="W. Liu" initials="W." surname="Liu"/>
          <date month="August" year="2022"/>
          <abstract>
            <t indent="0">This document analyzes the security implications of IPv6 Extension Headers and associated IPv6 options. Additionally, it discusses the operational and interoperability implications of discarding packets based on the IPv6 Extension Headers and IPv6 options they contain. Finally, it provides advice on the filtering of such IPv6 packets at transit routers for traffic not directed to them, for those cases where such filtering is deemed as necessary.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9288"/>
        <seriesInfo name="DOI" value="10.17487/RFC9288"/>
      </reference>
      <reference anchor="I-D.ietf-taps-arch" target="https://datatracker.ietf.org/doc/html/draft-ietf-taps-arch-19" quoteTitle="true" derivedAnchor="TAPS-ARCH">
        <front>
          <title>Architecture and Requirements for Transport Services</title>
          <author initials="T." surname="Pauly" fullname="Tommy Pauly" role="editor">
            <organization showOnFrontPage="true">Apple Inc.</organization>
          </author>
          <author initials="B." surname="Trammell" fullname="Brian Trammell" role="editor">
            <organization showOnFrontPage="true">Google Switzerland GmbH</organization>
          </author>
          <author initials="A." surname="Brunstrom" fullname="Anna Brunstrom">
            <organization showOnFrontPage="true">Karlstad University</organization>
          </author>
          <author initials="G." surname="Fairhurst" fullname="Gorry Fairhurst">
            <organization showOnFrontPage="true">University of Aberdeen</organization>
          </author>
          <author initials="C." surname="Perkins" fullname="Colin Perkins">
            <organization showOnFrontPage="true">University of Glasgow</organization>
          </author>
          <date month="November" day="9" year="2023"/>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-taps-arch-19"/>
        <refcontent>Work in Progress</refcontent>
      </reference>
      <reference anchor="Tram17" target="https://irtf.org/anrw/2017/anrw17-final16.pdf" quoteTitle="true" derivedAnchor="Tram17">
        <front>
          <title>Tracking Transport-Layer Evolution with PATHspider</title>
          <author initials="B" surname="Trammell" fullname="Brian Trammell">
          </author>
          <author initials="M" surname="Kühlewind" fullname="Mirja Kühlewind">
          </author>
          <author initials="P" surname="De Vaere" fullname="Piet De Vaere">
          </author>
          <author initials="I" surname="Learmonth" fullname="Iain Learmonth">
          </author>
          <author initials="G" surname="Fairhurst" fullname="Gorry Fairhurst">
          </author>
          <date month="July" year="2017"/>
        </front>
        <seriesInfo name="DOI" value="10.1145/3106328.3106336"/>
        <refcontent>ANRW '17: Proceedings of the 2017 Applied Networking Research Workshop</refcontent>
      </reference>
    </references>
    <section anchor="Ack" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
      <t indent="0" pn="section-appendix.a-1">Helpful comments were received from <contact fullname="Brian     Carpenter"/>, <contact fullname="Ron Bonica"/>, <contact fullname="Ole     Troan"/>, <contact fullname="Mike Heard"/>, <contact fullname="Tom     Herbert"/>, <contact fullname="Cheng Li"/>, <contact fullname="Éric     Vyncke"/>, <contact fullname="Greg Mirsky"/>, <contact fullname="Xiao     Min"/>, <contact fullname="Fernando Gont"/>, <contact fullname="Darren     Dukes"/>, <contact fullname="Peng Shuping"/>, <contact fullname="Dave     Thaler"/>, <contact fullname="Ana Custura"/>, <contact fullname="Tim     Winters"/>, <contact fullname="Jingrong Xie"/>, <contact fullname="Lorenzo     Colitti"/>, <contact fullname="Toerless Eckert"/>, <contact fullname="Suresh Krishnan"/>, <contact fullname="Mikael Abrahamsson"/>,
    <contact fullname="Adrian Farrel"/>, <contact fullname="Jie Dong"/>,
    <contact fullname="Jen Linkova"/>, <contact fullname="Erik Kline"/>, and
    other members of the 6MAN Working Group.</t>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.b">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Robert M. Hinden" initials="R" surname="Hinden">
        <organization showOnFrontPage="true">Check Point Software</organization>
        <address>
          <postal>
            <street>100 Oracle Parkway, Suite 800</street>
            <city>Redwood City</city>
            <region>CA</region>
            <code>94065</code>
            <country>United States of America</country>
          </postal>
          <email>bob.hinden@gmail.com</email>
        </address>
      </author>
      <author fullname="Godred Fairhurst" initials="G" surname="Fairhurst">
        <organization showOnFrontPage="true">University of Aberdeen</organization>
        <address>
          <postal>
            <street>School of Engineering</street>
            <street>Fraser Noble Building</street>
            <city>Aberdeen</city>
            <code>AB24 3UE</code>
            <country>United Kingdom</country>
          </postal>
          <email>gorry@erg.abdn.ac.uk</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
