<?xml version="1.0" encoding="us-ascii"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.6.5 (Ruby 2.7.0) -->


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

<!ENTITY RFC8200 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8200.xml">
<!ENTITY RFC8754 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml">
<!ENTITY RFC8986 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8986.xml">
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC5905 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5905.xml">
<!ENTITY RFC8402 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8402.xml">
<!ENTITY RFC8660 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8660.xml">
<!ENTITY RFC8877 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8877.xml">
<!ENTITY RFC9197 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml">
<!ENTITY RFC7799 SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7799.xml">
<!ENTITY I-D.kumar-ippm-ifa SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.kumar-ippm-ifa.xml">
<!ENTITY I-D.song-opsawg-ifit-framework SYSTEM "https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.song-opsawg-ifit-framework.xml">
]>


<rfc ipr="trust200902" docName="draft-filsfils-ippm-path-tracing-05" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="Path Tracing">Path Tracing in SRv6 networks</title>

    <author initials="C." surname="Filsfils" fullname="Clarence Filsfils">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Belgium</country>
        </postal>
        <email>cf@cisco.com</email>
      </address>
    </author>
    <author initials="A." surname="Abdelsalam" fullname="Ahmed Abdelsalam" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>ahabdels@cisco.com</email>
      </address>
    </author>
    <author initials="P." surname="Camarillo" fullname="Pablo Camarillo Garvia" role="editor">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Spain</country>
        </postal>
        <email>pcamaril@cisco.com</email>
      </address>
    </author>
    <author initials="M." surname="Yufit" fullname="Mark Yufit">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>mark.yufit@broadcom.com</email>
      </address>
    </author>
    <author initials="Y." surname="Su" fullname="Yuanchao Su">
      <organization>Alibaba, Inc</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>yitai.syc@alibaba-inc.com</email>
      </address>
    </author>
    <author initials="S." surname="Matsushima" fullname="Satoru Matsushima">
      <organization>SoftBank</organization>
      <address>
        <postal>
          <country>Japan</country>
        </postal>
        <email>satoru.matsushima@g.softbank.co.jp</email>
      </address>
    </author>
    <author initials="M." surname="Valentine" fullname="Mike Valentine">
      <organization>Goldman Sachs</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>michael.j.valentine@gs.com</email>
      </address>
    </author>
    <author initials="A." surname="Dhamija" fullname="Amit Dhamija">
      <organization>Arrcus</organization>
      <address>
        <postal>
          <country>India</country>
        </postal>
        <email>amitd@arrcus.com</email>
      </address>
    </author>

    <date />

    <area>General</area>
    <workgroup>IPPM</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>

<t>Path Tracing provides a record of the packet path as a sequence of interface ids. In addition, it provides a record of end-to-end delay, per-hop delay, and load on each egress interface along the packet delivery path.</t>

<t>Path Tracing allows to trace 14 hops with only a 40-bytes IPv6 Hop-by-Hop extension header.</t>

<t>Path Tracing supports fine grained timestamp. It has been designed for linerate hardware implementation in the base pipeline.</t>

    </abstract>



  </front>

  <middle>


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

<t>Path Tracing provides a <strong>record of the packet path</strong> as a sequence of interface ids. In addition, it provides a <strong>record of end-to-end delay, per-hop delay, and load on each egress interface</strong> along the packet delivery path.</t>

<t>Path Tracing allows to <strong>trace 14 hops with only a 40 bytes IPv6 Hop-by-Hop header</strong>. The overhead is lower than <xref target="INT"/>, <xref target="RFC9197"/>, <xref target="I-D.song-opsawg-ifit-framework"/>, and <xref target="I-D.kumar-ippm-ifa"/>.</t>

<t>Path Tracing supports fine-grained timestamps. It has been designed for <strong>linerate hardware implementation in the base pipeline</strong>. This enables collecting accurate information.</t>

<t>Path Tracing is applicable to both SR-MPLS <xref target="RFC8660"/>, as well as SRv6 <xref target="RFC8986"/>. This document defines the Path Tracing specification for the SRv6 dataplane.</t>

<t>The specification proposed in this document has been implemented successfully in different interoperable hardware platforms at linerate (<xref target="sec-implementation"/>).</t>

<t>As per the taxonomy in <xref target="RFC7799"/>, Path Tracing is an Active measurement method as it sends dedicated probe packets to discover and record the packet path. While the same header and packet processing could be passively applied to user traffic, such passive operation is out of scope of this document.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t>The following terms used within this document are defined in <xref target="RFC8402"/>, <xref target="RFC8754"/> and <xref target="RFC8986"/>: Segment Routing (SR), SR Domain, Segment ID (SID), SRv6, SRv6 SID, SR Policy, Segment Routing Header (SRH), SR source node, transit node, SR Endpoint, SA, DA.</t>

<t>The following terms are used in this document as defined below:</t>

<t>PT: Path Tracing</t>

<t>MCD: Midpoint Compressed Data (MCD). Information that every transit router adds to the packet for PT purposes. Defined in <xref target="sec-mcd"/> of this document.</t>

<t>HbH-PT: IPv6 Hop-by-Hop Option <xref target="RFC8200"/> for Path Tracing. It contains a stack of MCDs. It is defined in <xref target="sec-hbh-pt"/> of this document</t>

<t>DOH-PT: IPv6 Destination Option <xref target="RFC8200"/> for Path Tracing. It is defined in <xref target="sec-doh-pt"/> of this document.</t>

<t>PT Source: A Source node that starts a PT Probing Instance (defined in <xref target="sec-pt-probing-instance"/>) and generates PT probes.</t>

<t>PT Midpoint: A transit node that performs plain IPv6 forwarding (or SR Endpoint processing) and in addition records PT information in the HbH-PT.</t>

<t>PT Sink: A node that receives PT probes sent from the SRC containing the information recorded by every PT Midpoint along the path, and forwards them to a regional collector after recording its PT information.</t>

<t>RC: Regional collector that receives PT probes, parses, and stores them in TimeSeries Database. It uses the information in the HBH-PT and the DOH-PT to construct the packet delivery path as well as the timestamp at each node.</t>

<section anchor="requirements-language"><name>Requirements Language</name>
<t>The key words &quot;MUST&quot;, &quot;MUST NOT&quot;, &quot;REQUIRED&quot;, &quot;SHALL&quot;, &quot;SHALL NOT&quot;, &quot;SHOULD&quot;, &quot;SHOULD NOT&quot;, &quot;RECOMMENDED&quot;, &quot;NOT RECOMMENDED&quot;, &quot;MAY&quot;, and &quot;OPTIONAL&quot; in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

</section>
</section>
<section anchor="sec-mcd"><name>Midpoint Compressed Data</name>

<t>Every PT Midpoint along the packet delivery path -from Source to Sink- records its PT information into the HbH-PT header. This information is known as Midpoint Compressed Data (MCD). It contains the following information:</t>

<t><list style="symbols">
  <t>MCD.OIF (Outgoing Interface ID): An 8-bit or 12-bit interface ID associated with the egress physical interface of the router
  <list style="symbols">
      <t>The interface ID is assigned by an operator. The Interface IDs are not globally unique across the entire network. Indeed the same Interface ID may be repeated multiple times in the network as long as the end-to-end path can be deterministically inferred based on the chain of Interface IDs.</t>
      <t>The programming of the Interface ID in the device may be done by CLI/NETCONF or any other means, and it is out of the scope of this document.</t>
      <t>The usage of an 8-bit or 12-bit Interface ID is an operator choice, but the Interface ID size MUST be consistent across the entire network.</t>
      <t>In case of Link Aggregation Groups (LAG/bundle) <xref target="LAG"/>, each one of the members is configured with a different interface ID.</t>
    </list></t>
  <t>MCD.OIL (Outgoing Interface Load): A 4-bit representation of the egress interface load (i.e., current throughout relative to the interface bandwidth).
  <list style="symbols">
      <t>The load is represented using a 4-bit value in logarithmic scale. This allows more granular information as the load is higher.</t>
    </list></t>
  <t>MCD.TTS (Truncated Timestamp): An 8-bit timestamp encoding the time at which the packet egress the router.
  <list style="symbols">
      <t>Each egress interface in the device is configured with a TTS template.</t>
      <t>The TTS template defines the position of 8-bits to be selected from the egress timestamp. <xref target="sec-ts-req"/> of this document discusses the timestamp format used in path tracing.</t>
      <t>A Path Tracing Midpoint implementation MAY support one or more TTS templates. Each TTS template provides a different time precision.</t>
      <t>An operator configures an egress interface with a single TTS template. The choice of the TTS template for a given interface is based on the type of the link connected to that interface. For example, an interface connected to DC link will have a different TTS Template from an interface connected to intercontinental or WAN link, as they have different precision requirements.</t>
    </list></t>
</list></t>

</section>
<section anchor="sec-ts-req"><name>Timestamp requirements</name>

<section anchor="timestamp-format"><name>Timestamp format</name>

<t>Path Tracing uses a 64-bit timestamp format. <xref target="RFC8877"/> recommends two 64-bit timestamp formats: 64-bit Truncated PTP timestamp format and NTP 64-bit timestamp format. Path Tracing can work with both formats indifferently.</t>

</section>
<section anchor="time-synchronization"><name>Time synchronization</name>
<t>All routers across the network MUST have time-synchronization. PTP <xref target="IEEE1588"/> and NTP <xref target="RFC5905"/> are example protocols that can be used for time-synchronization.</t>

</section>
</section>
<section anchor="sec-pt-probing-instance"><name>PT Probing Instance</name>

<t>The controller configures a PT Probing Instance at the source node. A PT Probing Instance is configured with the following parameters:</t>

<t><list style="symbols">
  <t>SA: the source address of the PT probe. Typically, it is the loopback address of the PT SRC.</t>
  <t>Session ID: A 16-bit value.</t>
  <t>Probe-rate: Number of probes per second to generate as part of this PT Probing Instance. The probe-rate is the aggregate of the probes generated across all the sweeping ranges.</t>
  <t>SRv6 SID List: The SRv6 SID list associated with the packet. The last SID is the Sink node.</t>
  <t>DSCP value</t>
  <t>Hop-limit Value</t>
  <t>IPv6 Flow-Label sweeping range:
  <list style="symbols">
      <t>If set, different Flow-Label values must be used in the probe packets. It may be specified as a range of specific Flow-Label values to enumerate, or it may be specified as the number of different random Flow-Label values to use in a round-robin.</t>
    </list></t>
  <t>HbH-PT size</t>
  <t>MTU sweeping range:
  <list style="symbols">
      <t>If set, payload must be included at the end of the packet to test different packet sizes.</t>
    </list></t>
</list></t>

</section>
<section anchor="pt-source-node-dataplane-behavior"><name>PT Source Node Dataplane Behavior</name>

<t>For each configured PT Probing Instance, according to the probe-rate, the PT SRC generates a PT probe packet as follows:</t>

<figure><artwork><![CDATA[
S01. Generate a new IPv6 packet
S02. Set the IPv6 SA as per PT Probing Instance configuration
S03. Set the IPv6 DA to the first SID from the SRv6 SID List
S04. Set the IPv6 Next Header field to zero (HbH)
S05. Set the DSCP and Flow Label values as per
        PT Probing Instance configuration
S06. Append an IPv6 Hop-by-Hop header with HbH-PT
S07. Set all bits of the HbH-PT MCD Stack to zero
S08. IF SID List has more than one SID
S09.    Append an SRH
S10.    Set the Next Header field to 60 (IPv6 Destinations Options
           header)
S11.    Write the remaining SIDs of the SID list in the SRH
S12. Append an IPv6 Destinations Option header with DOH-PT
S13. Set the Next Header field of the IPv6 Destinations Options
        Header to 59 (IPv6 No Next Header)
S14. Add padding bytes after the IPv6 Destinations Option header to
        reach the desired packet size as per the MTU sweeping range
        configuration
S15. Set the session ID field of the DOH-PT as per
       PT Probing Instance configuration
S16. Perform an IPv6 FIB lookup to determine the Outgoing
       Interface (IFACE-OUT) on which packet will be forwarded
S17. Record Transmit 64-bit timestamp (SRC.T64) in the T64 field
       of the DOH-PT
S18. Record IFACE-OUT ID (SRC.OIF) in the IF_ID field
       of the DOH-PT
S19. Record IFACE-OUT Load (SRC.OIL) in the IF_LD field
       of the DOH-PT
S20. Forward the packet via IFACE-OUT
]]></artwork></figure>

<t>Notes:</t>

<t><list style="symbols">
  <t>The pseudocode describes local processing at a node. An implementation of the pseudocode is compliant as long as the externally observable wire protocol is as described in the pseudocode.</t>
</list></t>

</section>
<section anchor="sec-pt-midpoint"><name>PT Midpoint Node Dataplane Behavior</name>
<t>When a midpoint node receives an IPv6 packet that contains an IPv6 HbH-PT option, the node processes the HbH-PT as follows:</t>

<figure><artwork><![CDATA[
S01. When processing HbH-PT option {
S02.    Compute the MCD information as per Section 3
S03.    HbH-PT.MCD_Stack[MCD_Size:HbH-PT.OPT_Data_Len-1] =
           HbH-PT.MCD_Stack[0:HbH-PT.OPT_Data_Len-(MCD_Size+1)]
           //Shift HbH-PT MCD Stack to the right by MCD_Size bytes
S04.    HbH-PT.MCD_Stack[0:MCD_Size-1] = MCD[0:MCD_Size-1]
        //Push the MCD at the beginning of the Stack
S05. }
]]></artwork></figure>

<t>Notes:</t>

<t><list style="symbols">
  <t>The PT Midpoint behavior MUST be implemented in the normal pipeline to experience the regular datapath (i.e., linerate with full PPS and full BW). Offloading the processing of this option to either the slow-path or a co-processors is not acceptable and yields invalid results.</t>
</list></t>

</section>
<section anchor="pt-sink-node-dataplane-behavior"><name>PT Sink Node Dataplane Behavior</name>
<t>We define a new SRv6 Endpoint Behavior called &quot;Endpoint Behavior bound to an SRv6 Policy with Timestamp, Encapsulation and Forward&quot; (&quot;End.B6.TEF&quot; for short).</t>

<t>It is a Binding SID instantiated, at Sink nodes, that encapsulates the packet with a new IPv6 header, an SRH that contains the SID list associated to End.B6.TEF SID, and an IPv6 Destinations Option header with DOH-PT that is used to carry Path Tracing information of Sink node.</t>

<t>When N receives a packet whose IPv6 DA is S and S is a local End.B6.TEF SID, N does the following:</t>

<figure><artwork><![CDATA[
S01. Record Rx 64-bit timestamp (SNK.T64)
S02. Record incoming interface ID (SNK.IIF)
S03. Record incoming interface Load (SNK.IIL)
S04. Push a new IPv6 header
S05. Set the IPv6 SA to the Sink node loopback
S06. Set the IPv6 DA to the first SID in the SRv6 SID List
S07. IF SID List has more than one SID
S08.    Append an SRH
S09.    Set the SRH Next Header field to 60 (IPv6 Destinations
           Options header)
S10.    Write the remaining SIDs of the SID list in the SRH
S11. Append an IPv6 Destinations Option header with DOH-PT
S12. Set the Next Header field of the IPv6 Destinations Options
        Header to 41 (IPv6 header)
S13. Set the session ID field of the DOH-PT to zero
S14. Write SNK.T64 in the T64 field of the DOH-PT
S15. Write SNK.IIF in the IF_ID field of the DOH-PT
S16. Write SNK.IIL in the IF_LD field of the DPH-PT
S17. Submit the packet to the egress IPv6 FIB lookup for
        transmission to the new destination
]]></artwork></figure>

<t>Notes:</t>

<t><list style="symbols">
  <t>The pseudocode describes local processing at a node. An implementation of the pseudocode is compliant as long as the externally observable wire protocol is as described in the pseudocode.</t>
</list></t>

</section>
<section anchor="pt-headers"><name>PT Headers</name>

<section anchor="sec-hbh-pt"><name>IPv6 Hop-by-Hop Option for Path Tracing (HbH-PT)</name>
<t>This document defines a new IPv6 Option for Path Tracing to be carried in the IPv6 Hop-by-Hop Header. The option has the following format:</t>

<figure><artwork><![CDATA[
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |  Option Type  |  Opt Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                          MCD  Stack                           ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Figure 1: IPv6 Hop-by-Hop Option for Path Tracing (HbH-PT)
]]></artwork></figure>

<t>Where:</t>

<t><list style="symbols">
  <t>Option Type: TBA1-1
  <list style="symbols">
      <t>The 3 high-order bits of the option must be set to 001
      <list style="symbols">
          <t>00: Skip HbH for nodes that don&#39;t support the HbH-PT Option Type</t>
          <t>1: update HbH-PT for nodes that support the HbH-PT Option Type</t>
        </list></t>
    </list></t>
  <t>Opt Data Len: the length of the MCD stack in bytes.</t>
  <t>MCD Stack: metadata scratchpad where PT Midpoints record their MCDs</t>
</list></t>

<t>Note: The HbH-PT has a variable length.  It is RECOMMENDED that implementations support a 38-octet HbH-PT Option. The operator, upon configuring the Source node behavior, MUST select an option length that is supported by all the routers in the network.</t>

</section>
<section anchor="sec-doh-pt"><name>IPv6 Destination Option for Path Tracing (DOH-PT)</name>
<t>This document defines a new IPv6 Option for Path Tracing to be carried in the IPv6 Destination Options Header. The option has the following format:</t>

<figure><artwork><![CDATA[
                                +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                                |  Option Type  |  Opt Data Len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                             T64                               +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         Session ID            |        IF_ID          | IF_LD |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

  Figure 2: IPv6 Destination Option for Path Tracing (DOH-PT)
]]></artwork></figure>

<t>Where:</t>

<t><list style="symbols">
  <t>Option Type: TBA1-2
  <list style="symbols">
      <t>The 3 high-order bits of the option must be set to 000
      <list style="symbols">
          <t>00: Skip the IPv6 Destination Options header for nodes that don&#39;t support the DOH-PT Option Type</t>
          <t>0: DOH-PT cannot be changed enroute</t>
        </list></t>
    </list></t>
  <t>Opt Data Len: the length of the DOH-PT in bytes (12).</t>
  <t>T64: 64-bit Timestamp</t>
  <t>Session ID: Session identifier set by SRC node generating the probes. Used to co-relate probes of the same session. Value of zero means unset.</t>
  <t>IF_ID: 12-bit Interface ID</t>
  <t>IF_LD: 4-bit Interface Load</t>
</list></t>

<t>Note: The DOH-PT is generated by both the PT SRC and the PT SNK. When used at the PT SNK node, the Session ID field MUST be set to zero.</t>

</section>
</section>
<section anchor="benefits"><name>Benefits</name>
<t><list style="symbols">
  <t>Low overhead:
  <list style="symbols">
      <t>A 40Byte Hop-By-Hop header allows for 14 hops path measurements: 1 at the PT SRC, 12 at PT Midpoint routers and 1 at the PT SNK</t>
      <t>PT has the lowest MTU overhead compared to alternative solutions such as <xref target="INT"/>, <xref target="RFC9197"/>, <xref target="I-D.song-opsawg-ifit-framework"/>, and <xref target="I-D.kumar-ippm-ifa"/>.</t>
    </list></t>
  <t>Linerate and HW friendliness:
  <list style="symbols">
      <t>Implemented at linerate in current hardware, using the regular forwarding pipeline. No offloading to co-processors or slow-path whose databases might defer from forwarding pipeline.</t>
      <t>Leverages mature hardware capabilities (basic shift operation); no packet resizing at every node along the path</t>
      <t>High number of diverse linerate interoperable hardware Implementations (see <xref target="sec-implementation"/>)</t>
    </list></t>
  <t>Scalable Fine-grained Timestamp:
  <list style="symbols">
      <t>64bit at PT SRC and PT SNK</t>
      <t>8bit at PT Midpoint leveraging flexible per-outgoing-link template allowing diverse link types in the same measurement (e.g., DC, metro, WAN)</t>
    </list></t>
  <t>Scalable Load measurement</t>
</list></t>

</section>
<section anchor="sec-implementation"><name>Implementation Status</name>
<t>Editorial note: Please remove this section prior publication.</t>

<t>The following routing platforms have participated in an interop testing:</t>

<t><list style="symbols">
  <t>Cisco 8802 (based on Cisco Silicon One Q200)</t>
  <t>Cisco ASR9904 with Lightspeed linecard</t>
  <t>Cisco NCS5508 (based on Broadcom Jericho2 platform)</t>
  <t>Cisco Nexus N3K-C3464C (based on Barefoot Tofino)</t>
  <t>SONiC Whitebox (based on Cisco Silicon One Q200)</t>
  <t>Marvell Prestera Falcon</t>
  <t>Keysight IxNetwork</t>
</list></t>

<t>The following open-source software networking stacks have also participated in the interop:</t>

<t><list style="symbols">
  <t>FD.io VPP</t>
  <t>Linux Kernel</t>
</list></t>

<t>The following opensource applications also have extensions to support Path Tracing:</t>

<t><list style="symbols">
  <t>Wireshark</t>
  <t>Tcpdump</t>
  <t>P4 implementation for software switch</t>
</list></t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>
<t>The security considerations for Segment Routing are discussed in <xref target="RFC8402"/>. Section 5 of <xref target="RFC8754"/> describes the SR Deployment Model and the requirements for securing the SR Domain. The security considerations of <xref target="RFC8754"/> also cover topics such as attack vectors and their mitigation mechanisms that also apply to the behaviors introduced in this document. Together, they describe the required security mechanisms that allow establishment of an SR domain of trust. Having such a well-defined trust boundary is necessary in order to operate SRv6-based services for internal traffic while preventing any external traffic from accessing or exploiting the SRv6-based services.</t>

<t>This document defines the Path Tracing architecture, which is deployed on a secured SRv6-domain. As such, all the security considerations defined in <xref target="RFC8754"/>, <xref target="RFC8402"/>, and <xref target="RFC8986"/> are applicable.</t>

<t>In addition, any border router in an SR Domain network where Path Tracing is enabled, MUST support the configuration of the following ACLs:</t>

<t><list style="symbols">
  <t>If there is a packet coming from an external interface destined towards an internal interface that contains an IPv6 Hop-by-Hop header with a Path Tracing option, then such packet is silently dropped.</t>
  <t>If there is a packet coming from an internal interface destined towards an external interface that contains an IPv6 Hop-by-Hop header with a Path Tracing option, then such packet is silently dropped.</t>
</list></t>

<t>These ACLs SHOULD be enabled by default. An operator MAY disable them individually based on local configuration.</t>

<t>The processing of IPv6 Hop-by-Hop headers could sometimes be used as an attack vector to overload the CPU of the router. As defined in <xref target="sec-pt-midpoint"/> of this document, the HBH-PT option MUST be processed in the router&#39;s fast path.  Therefore, there is no impact on the router&#39;s CPU.</t>

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

<t>This document requests the following IPv6 Option Type assignments from the Destination Options and Hop-by-Hop Options sub-registry of Internet Protocol Version 6 (IPv6) Parameters.</t>

<figure><artwork><![CDATA[
Hex Value    Binary Value   Description     Reference
             act chg rest
---------------------------------------------------------
 TBA1-1       00  1  TBA1     HbH-PT        [This.ID]
 TBA1-2       00  0  TBA1     DOH-PT        [This.ID]
]]></artwork></figure>

</section>
<section anchor="acknowledgements"><name>Acknowledgements</name>

<t>The authors of this document would like to thank the team that has collaborated on the design and implementation of the Path Tracing framework at Cisco, Broadcom, Marvel, Keysight, Swisscom, Alibaba, Softbank, University of Rome &quot;Tor Vergata&quot;, and ETH Zurich. In particular: Eyal Dagan, Guy Caspary, Elad Naor, Aviran Kadosh, Eli Stein, Oren Yabo, Aviad Behar, Anand Sridharan, Anju Dey, John Bettink, Kamran Raza, Asif Islam, Yue Gao, Jakub Horn, Sam Kheirallah, Shelly Cadora, Kris Michielsen, Francois Clad, Stefano Salsano, Andrea Mayer, Paolo Lungaroni, Giulio Sidoretti, Leonardo Rodoni, Marco Tollini, Yuanwen Sun, Anirban Bhattacharya, Ajay Ramamurthy, Manomugdha Biswas, Kingshuk Mandal.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC8200;
&RFC8754;
&RFC8986;
&RFC2119;
&RFC8174;


    </references>

    <references title='Informative References'>

&RFC5905;
&RFC8402;
&RFC8660;
&RFC8877;
&RFC9197;
&RFC7799;
&I-D.kumar-ippm-ifa;
&I-D.song-opsawg-ifit-framework;
<reference anchor="INT" target="https://github.com/p4lang/p4-applications/blob/master/docs/INT_v2_1.pdf">
  <front>
    <title>In-band Network Telemetry (INT) Dataplane Specification</title>
    <author >
      <organization></organization>
    </author>
    <date year="2020"/>
  </front>
</reference>
<reference anchor="LAG" target="https://doi.org/10.1109/IEEESTD.2014.7055197">
  <front>
    <title>802.1AX-2014 - IEEE Standard for Local and metropolitan area networks -- Link Aggregation</title>
    <author >
      <organization></organization>
    </author>
    <date year="2014"/>
  </front>
  <seriesInfo name="IEEE" value=""/>
</reference>
<reference anchor="IEEE1588" target="https://doi.org/10.1109/IEEESTD.2008.4579760">
  <front>
    <title>IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems</title>
    <author >
      <organization></organization>
    </author>
    <date year="2008"/>
  </front>
  <seriesInfo name="IEEE" value=""/>
</reference>


    </references>


    <section anchor="contributors" numbered="false" toc="include" removeInRFC="false">
        <name>Contributors</name>
    <contact initials="J." surname="Bhattacharya" fullname="Jisu Bhattacharya">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>jisu@cisco.com</email>
      </address>
    </contact>
    <contact initials="R." surname="Gandhi" fullname="Rakesh Gandhi">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>rgandhi@cisco.com</email>
      </address>
    </contact>
    <contact initials="S." surname="Bezverkhi" fullname="Serguei Bezverkhi">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>Italy</country>
        </postal>
        <email>sbezverk@cisco.com</email>
      </address>
    </contact>
    <contact initials="S. B." surname="Ayed" fullname="Sonia Ben Ayed">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>sbenayed@cisco.com</email>
      </address>
    </contact>
    <contact initials="I." surname="Meilik" fullname="Israel Meilik">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>israel.meilik@broadcom.com</email>
      </address>
    </contact>
    <contact initials="S." surname="Zadok" fullname="Shay Zadok">
      <organization>Broadcom</organization>
      <address>
        <postal>
          <country>Israel</country>
        </postal>
        <email>shay.zadok@broadcom.com</email>
      </address>
    </contact>
    <contact initials="D." surname="Voyer" fullname="Daniel Voyer">
      <organization>Bell Canada</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>daniel.voyer@bell.ca</email>
      </address>
    </contact>
    <contact initials="W." surname="Cheng" fullname="Weiqiang Cheng">
      <organization>China Mobile</organization>
      <address>
        <postal>
          <country>China</country>
        </postal>
        <email>chengweiqiang@chinamobile.com</email>
      </address>
    </contact>
    </section>

  </back>

</rfc>

