<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 2.6.10) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc docmapping="yes"?>

<rfc ipr="trust200902" docName="draft-ouellette-v6ops-eh-router-forwarding-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="IPv6 HBH and DO Forwarding In Routers">IPv6 Hop-by-hop and Destination Options Forwarding In Routers</title>

    <author fullname="Kyle Ouellette">
      <organization abbrev="UNH-IOL">University of New Hampshire InterOperability Laboratory</organization>
      <address>
        <postal>
          <country>US</country>
        </postal>
        <phone>+1 603 862 3941</phone>
        <email>kouellette@iol.unh.edu</email>
      </address>
    </author>

    <date year="2024" month="March" day="04"/>

    <area>Operations and Management</area>
    <workgroup>IPv6 Operations</workgroup>
    <keyword>EH</keyword> <keyword>HBH</keyword> <keyword>DO</keyword>

    <abstract>


<?line 35?>

<t>It has become accepted that packets containing IPv6 Extension Headers,
especially Hop-by-hop Options, are frequently dropped on the Internet.
However, the question still
remains as to why they get dropped and what type of devices may be dropping them.
This document describes research conducted to isolate routers in a simple
topology, with minimal configuration, and shows that router implementations alone
are likely not the cause of packets containing IPv6 Extension Headers being dropped
on the Internet.</t>



    </abstract>



  </front>

  <middle>


<?line 46?>

<section anchor="introduction"><name>Introduction</name>

<t>It has become well known that packets containing IPv6 <xref target="RFC8200"/>
Extension Headers (EHs), especially Hop-by-Hop Options, are often dropped
when traversing the Internet. However, the question still remains as
to what are the primary contributors to these packet drops and under
what circumstances are the packets dropped. Some of the
potential culprits include ACLs, firewalls, routers, load balancers, and
more. It also is not known whether these packets are dropped intentionally
(e.g., ACLs) or unintentionally (e.g., firmware bugs).</t>

<t>This document describes the research conducted and results
of isolating routers to better
understand what role they may play, if any, in the dropping of EHs.
Specifically, this research is aiming to understand whether or not router
implementations may be the cause of dropped packets containing EHs.</t>

</section>
<section anchor="layer-3-topology"><name>Layer 3 Topology</name>

<t>The layer 3 topology used for these experiments can be seen below
in <xref target="topology"/>. Layer 3 is specifically noted because layer 2
switches exist in the topology as well as some components being
virtualized, however, this is not expected to have an effect on the
traversal of packets containing EHs.</t>

<!-- markdownlint-disable MD040 MD031 -->
<figure title="Simple Two Network Topology" anchor="topology"><artwork><![CDATA[
+--------+     +--------+     +--------+
| Client |-----| Router |-----| Server |
+--------+     +--------+     +--------+
]]></artwork></figure>

<t>Both client and server are virtual machines running Ubuntu 22.04 and
are configured to inject EHs into all egress packets. Additionally,
the server has an out-of-the-box installation of an apache2 web server.
Details of the routers used can be found below in <xref target="routers-under-test-ruts"></xref>.</t>

</section>
<section anchor="routers-under-test-ruts"><name>Routers Under Test (RUTs)</name>

<t>Six routers in total were tested and are comprised of three major router manufacturers.
Of the six routers, five are physical and the sixth is virtual.
Due to confidentiality requirements, the specific manufacturers and models of the routers
tested cannot be disclosed, therefore, the routers will be referred to with a numerical
value from here on.</t>

<section anchor="configuration"><name>Configuration</name>

<t>For these experiments, all RUTs have very minimal configurations. No routing protocols
are enabled and no ACLs are configured. The routers are configured to simply forward
IPv6 traffic between the two interfaces.</t>

</section>
</section>
<section anchor="experiments"><name>Experiments</name>

<t>For all experiments, both the client and server are configured to inject varying EHs into all
egress packets. A single HTTP request is then made from the client to the server
and it was observed that the client received an HTTP reply containing the expected EHs.
This indicates that the RUT properly forwarded all packets associated with both the HTTP
request and reply that contained EHs without dropping the packets
or stripping the EHs from them <xref target="I-D.herbert-eh-inflight-removal"/>.
To execute the HTTP request, the <spanx style="verb">curl</spanx> utility was used.</t>

<section anchor="performance-and-diagnostics-metrics-pdm-destination-option"><name>Performance and Diagnostics Metrics (PDM) Destination Option</name>

<t><xref target="RFC8250"/> defines the PDM destination option (DO), an option used for
collecting performance metrics such as round-trip delay and server delay.
For this experiment, a PDM implementation leveraging Extended Berkley
Packet Filter (eBPF) was used <xref target="I-D.elkins-v6ops-bpf-pdm-ebpf"/>.</t>

<t>The PDM DO was chosen to test with as it is a proposed standard and access to an existing implementation
was provided for the use of this research.</t>

</section>
<section anchor="variable-length-hop-by-hop-and-destination-options"><name>Variable Length Hop-by-hop and Destination Options</name>

<t>The second type of experiment run was testing how the RUTs processed
both HBH and DO of varying header sizes. For both HBH and DO,
sizes of 8, 16, 32, 64, 128, 256, and 512 bytes were tested. In addition to this,
tests with an EH chain of both HBH and DO for all enumerations of the 8,
16, 32, 64, 126, and 256 header sizes were also run. Overall, there were 48 unique
scenarios tested.</t>

<t>To achieve this, the
<eref target="https://github.com/IurmanJ/ebpf-ipv6-exthdr-injection">IPv6 Extension Headers Injection with eBPF</eref>
project was used which allows for injecting many different types of extension headers
with control over the size of each header.</t>

</section>
</section>
<section anchor="results-and-findings"><name>Results and Findings</name>

<t>The following section reports on the findings of these experiments.
Tables in this section will denote whether the router properly
forwarded packets containing the EH(s) or not. Scenarios in which
the router forwards the packets will be denoted with a check mark (✓)
and scenarios where the router does not forward the packets will be
denoted with an X (X).</t>

<section anchor="performance-and-diagnostics-metrics-pdm-destination-option-1"><name>Performance and Diagnostics Metrics (PDM) Destination Option</name>

<t>As can be seen in <xref target="pdm-results"/>, all six of the routers tested properly
forwarded packets containing the PDM DO.</t>

<texttable title="PDM Experiment Results" anchor="pdm-results">
      <ttcol align='center'>Router 1</ttcol>
      <ttcol align='center'>Router 2</ttcol>
      <ttcol align='center'>Router 3</ttcol>
      <ttcol align='center'>Router 4</ttcol>
      <ttcol align='center'>Router 5</ttcol>
      <ttcol align='center'>Router 6</ttcol>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

</section>
<section anchor="variable-length-hop-by-hop-and-destination-options-1"><name>Variable Length Hop-by-hop and Destination Options</name>

<section anchor="single-extension-header"><name>Single Extension Header</name>

<t><xref target="single-eh-results"/> shows the results of a single variable sized HBH or DO
EH. Seen below, all but one router forwards the EHs in every scenario.</t>

<texttable title="Single EH Experiment Results" anchor="single-eh-results">
      <ttcol align='left'>Scenario</ttcol>
      <ttcol align='center'>Router 1</ttcol>
      <ttcol align='center'>Router 2</ttcol>
      <ttcol align='center'>Router 3</ttcol>
      <ttcol align='center'>Router 4</ttcol>
      <ttcol align='center'>Router 5</ttcol>
      <ttcol align='center'>Router 6</ttcol>
      <c>HBH 8</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>HBH 16</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>HBH 32</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>HBH 64</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>HBH 128</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>HBH 256</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>✓</c>
      <c>HBH 512</c>
      <c>?</c>
      <c>?</c>
      <c>✓</c>
      <c>?</c>
      <c>?</c>
      <c>?</c>
      <c>DO 8</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>DO 16</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>DO 32</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>DO 64</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>DO 128</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>DO 256</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>✓</c>
      <c>DO 512</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>✓</c>
</texttable>

<t>There are two observations to note regarding these results. The first is that five
of the six routers have a question mark (?) as their result for the 512-byte
HBH scenario. This is because this scenario was unable to be tested for these five
routers. The reasoning for this can be found in <xref target="notable-findings"></xref>.
The other observation to make is that out of the six routers, Router 5 was the only
router unable to forward packets for each scenario. Based on these results, it suggests
that Router 5 has a limitation on the maximum size of an EH in a packet. If a packet
contains an EH larger than this ceiling, it is dropped. In fact, further testing
has shown that a 176-byte HBH or DO is the largest Router 5 is able to properly
forward. When increasing to 184-bytes, the initial TCP SYN packet is dropped and
therefore the TCP connection is not established and the HTTP request cannot be made.</t>

</section>
<section anchor="multiple-extension-headers"><name>Multiple Extension Headers</name>

<t>The following section includes a matrix for each RUT indicating whether or not it forwarded
the HTTP traffic when the packets include both a HBH and DO of varying lengths.</t>

<texttable title="Router 1 HBH and DO Results" anchor="r1-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>256</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

<texttable title="Router 2 HBH and DO Results" anchor="r2-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>256</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

<texttable title="Router 3 HBH and DO Results" anchor="r3-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>256</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

<texttable title="Router 4 HBH and DO Results" anchor="r4-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>256</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

<texttable title="Router 5 HBH and DO Results" anchor="r5-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>X</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>X</c>
      <c>X</c>
      <c>X</c>
      <c>256</c>
      <c>&#160;</c>
      <c>X</c>
      <c>X</c>
      <c>X</c>
      <c>X</c>
      <c>X</c>
      <c>X</c>
</texttable>

<texttable title="Router 6 HBH and DO Results" anchor="r6-matrix">
      <ttcol align='left'>DO</ttcol>
      <ttcol align='right'>HBH</ttcol>
      <ttcol align='center'>8</ttcol>
      <ttcol align='center'>16</ttcol>
      <ttcol align='center'>32</ttcol>
      <ttcol align='center'>64</ttcol>
      <ttcol align='center'>128</ttcol>
      <ttcol align='center'>256</ttcol>
      <c>8</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>16</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>32</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>64</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>128</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>256</c>
      <c>&#160;</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
      <c>✓</c>
</texttable>

<t>Of the six routers, Router 5 (<xref target="r5-matrix"/>) was the only router that did not properly forward packets
for all scenarios. As was seen in <xref target="single-extension-header"></xref>, Router 5 did not forward
packets for the 256-byte and 512-byte scenarios which suggests that Router 5 only processes
packets containing EHs up to a certain length. However, in conjunction with these results, it seems as
if Router 5 may have limitations based on the total EH chain length rather than
individual EHs. It does however properly process smaller EH configurations.</t>

</section>
</section>
<section anchor="notable-findings"><name>Notable Findings</name>

<t>In these results, there are two findings to note. The first is that as seen
in <xref target="single-extension-header"></xref> and <xref target="multiple-extension-headers"></xref>,
a router was discovered (i.e., Router 5) that dropped packets in certain scenarios. However, the
exact cause of this is still unknown as additional testing not described in this
document has shown that whether or not packets are dropped is more nuanced than simply
just being based on the length of the EH chain.</t>

<t>The second notable finding is that as seen in <xref target="single-eh-results"/>, the 512-byte
HBH scenario was unable to be performed for five out of the six routers. The exact
cause is still being investigated, however, packets specifically with a 512-byte HBH option
were dropped by the layer 2 switching infrastructure. Notably, both 504-byte and
520-byte HBH options traversed the infrastructure without a problem, and only 512-byte
HBH options were affected. Although not recorded in the tables above, both 504-byte
and 520-byte HBH scenarios were tested on Routers 1, 2, 3, 4, and 6 and they all
forwarded the traffic as expected. Because of this, it is believed this is due to a firmware bug
in one of the switches and was an unexpected finding. Router 3 was the only router
not affected by this due to it having a different layer 2 path and not traversing
the problematic switch.</t>

</section>
</section>
<section anchor="conclusion"><name>Conclusion</name>

<t>Even though this research was conducted on a relatively small sample size of manufacturers and
routers, the results indicate that router implementations in general are likely not the
culprits for dropping packets containing HBH or DO EHs. One router did face limitations
when processing larger EHs, however, EH chains of that size may not be practical when
used in a real-world network and therefore may not be a concern. The most surprising finding
was that a layer 2 switch was the cause of dropped packets containing 512-byte HBH options.</t>

</section>
<section anchor="future-work"><name>Future Work</name>

<section anchor="determine-causes-of-failed-scenarios"><name>Determine Causes of Failed Scenarios</name>

<t>Currently it is not known what the limitation in Router 5 is caused by and it is also not known
why a switch in the layer 2 infrastructure is dropping packets specifically with 512-byte HBH options.
Next steps will include trying to determine why these behaviors are occurring and making the
manufacturers aware of these limitations with the hopes that they address them if possible.</t>

</section>
<section anchor="additional-routers"><name>Additional Routers</name>

<t>A logical next step would be to test more routers, especially across a wider breadth
of manufacturers. Additionally, more testing could be performed with varying connectors and
link speeds.</t>

</section>
<section anchor="additional-extension-headers-and-chains"><name>Additional Extension Headers and Chains</name>

<t>This research investigated how routers handle varying sizes of single HBH and DO EHs
as well as chains of the two. However, more tests could be run with other standalone EHs
as well as in various chain configurations.</t>

</section>
<section anchor="testing-under-load"><name>Testing Under Load</name>

<t>As was mentioned in <xref target="experiments"></xref>, these experiments were run with a single HTTP request and therefore
were not run under load which may be the case for routers on the open internet.
It is possible that a router's EH processing varies based on
whether it is under load or not, especially in the context of processing packets on
the fast vs slow path. Because of this, running these same experiments at higher
throughputs may be interesting to explore.</t>

</section>
</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document has no security considerations.</t>

</section>
<section anchor="privacy-considerations"><name>Privacy Considerations</name>

<t>This document has no privacy considerations.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="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>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="RFC8250">
  <front>
    <title>IPv6 Performance and Diagnostic Metrics (PDM) Destination Option</title>
    <author fullname="N. Elkins" initials="N." surname="Elkins"/>
    <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
    <author fullname="M. Ackermann" initials="M." surname="Ackermann"/>
    <date month="September" year="2017"/>
    <abstract>
      <t>To assess performance problems, this document describes optional headers embedded in each packet that provide sequence numbers and timing information as a basis for measurements. Such measurements may be interpreted in real time or after the fact. This document specifies the Performance and Diagnostic Metrics (PDM) Destination Options header. The field limits, calculations, and usage in measurement of PDM are included in this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8250"/>
  <seriesInfo name="DOI" value="10.17487/RFC8250"/>
</reference>




    </references>

    <references title='Informative References' anchor="sec-informative-references">




<reference anchor="I-D.elkins-v6ops-bpf-pdm-ebpf">
   <front>
      <title>Implementation and Performance Evaluation of PDM using eBPF</title>
      <author fullname="Nalini Elkins" initials="N." surname="Elkins">
         <organization>Inside Products</organization>
      </author>
      <author fullname="Chinmaya Sharma" initials="C." surname="Sharma">
         <organization>NITK Surathkal</organization>
      </author>
      <author fullname="Amogh Umesh" initials="A." surname="Umesh">
         <organization>NITK Surathkal</organization>
      </author>
      <author fullname="Balajinaidu V" initials="B." surname="V">
         <organization>NITK Surathkal</organization>
      </author>
      <author fullname="Mohit P. Tahiliani" initials="M. P." surname="Tahiliani">
         <organization>NITK Surathkal</organization>
      </author>
      <date day="20" month="February" year="2024"/>
      <abstract>
	 <t>   RFC8250 describes an optional Destination Option (DO) header embedded
   in each packet to provide sequence numbers and timing information as
   a basis for measurements.  As kernel implementation can be complex
   and time-consuming, this document describes the implementation of the
   Performance and Diagnostic Metrics (PDM) extension header using eBPF
   in the Linux kernel&#x27;s Traffic Control (TC) subsystem.  The document
   also provides a performance analysis of the eBPF implementation in
   comparison to the traditional kernel implementation.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-elkins-v6ops-bpf-pdm-ebpf-00"/>
   
</reference>


<reference anchor="I-D.herbert-eh-inflight-removal">
   <front>
      <title>Infight Removal of IPv6 Hop-by-Hop and Routing Headers</title>
      <author fullname="Tom Herbert" initials="T." surname="Herbert">
         <organization>SiPanda</organization>
      </author>
      <date day="22" month="February" year="2024"/>
      <abstract>
	 <t>   This document specifies an experimental method to allow routers to
   remove IPv6 Hop-by-Hop Options or Routing headers from packets in-
   flight.  The goal is to reduce the probability of packets being
   dropped because they contain extension headers, without adversely
   impacting functionality.  An additional goal is to limit visibility
   of information in extension headers to those nodes that need to
   process the headers.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-herbert-eh-inflight-removal-04"/>
   
</reference>




    </references>


<?line 340?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>The author would like to acknowledge and thank the following individuals.
Nalini Elkins and Michael Ackermann for their guidance and support throughout this research.
Balajinaidu V, Amogh Umesh, and Chinmaya Sharma for developing and providing access to their PDM DO
implementation.
Justin Iurman for developing and providing access to their IPv6 Extension Headers Injection with eBPF
project.
Michayla Newcombe and Ben Patton for their review and feedback of this document.</t>

</section>


  </back>

<!-- ##markdown-source:
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
b05ab7a6ESeg+A/bx/xCNUMAAA==

-->

</rfc>

