<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc [
<!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;">
]>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" docName="draft-ietf-ippm-hybrid-two-step-07" obsoletes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth="3" symRefs="true" sortRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.6.0 -->
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

<front>
    <title abbrev="Hybrid Two-Step">Hybrid Two-Step Performance Measurement Method</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-hybrid-two-step-07"/>
    <author initials="G." surname="Mirsky" fullname="Greg Mirsky">
      <organization>Ciena Corporation</organization>
      <address>
        <email>gregimirsky@gmail.com</email>
		<email>gmirsky@ciena.com</email>
      </address>
    </author>
    <author fullname="Wang Lingqiang" initials="W." surname="Lingqiang">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street>No 19, East Huayuan Road</street>
          <city>Beijing </city>
          <region/>
          <code>100191</code>
          <country>China</country>
        </postal>
        <phone>+86 10 82963945 </phone>
        <email>wang.lingqiang@zte.com.cn </email>
      </address>
    </author>
    <author fullname="Guo Zhui" initials="G." surname="Zhui">
      <organization>ZTE Corporation</organization>
      <address>
        <postal>
          <street>No 19 ,East Huayuan Road</street>
          <city>Beijing </city>
          <region/>
          <code>100191</code>
          <country>China</country>
        </postal>
        <phone>+86 10 82963945 </phone>
        <email>guo.zhui@zte.com.cn </email>
      </address>
    </author>
    <author fullname="Haoyu Song" initials="H." surname="Song">
      <organization>Futurewei Technologies</organization>
      <address>
        <postal>
          <street>2330 Central Expressway</street>
          <city>Santa Clara</city>
          <country>USA</country>
        </postal>
        <email>hsong@futurewei.com</email>
      </address>
    </author>
    
       <author fullname="Pascal Thubert" initials="P." surname="Thubert">
      <organization>Independent</organization>
      <address>
              <postal>
          <street>06330 Roquefort-les-Pins</street>
          <country>France</country>
        </postal>
        <email>pascal.thubert@gmail.com</email>
      </address>
    </author>
    
    <area>Transport</area>
    <workgroup>IPPM Working Group</workgroup>
    <keyword>Internet-Draft</keyword>
    <keyword>IPPM</keyword>
    <keyword>Hybrid OAM </keyword>
    <abstract>
      <t>
The adoption of network operation automation has brought new measurement methodology requirements.
Among them is the ability to collect the instant network operational state as the packet is being processed by the network elements along
its forwarding path through a network domain. That requirement can be addressed 
by using on-path telemetry, also called hybrid performance measurement according to RFC 7799.
An on-path telemetry method allows operators to collect key information that reflects the operational state
and the network performance a packet experiences through the forwarding path.
IOAM, defined in RFC 9197 and RFC 9326, is an example of such a hybrid method.
This document introduces a method complementary to
on-path telemetry that causes the generation of network telemetry information.
This document introduces Hybrid Two-Step (HTS), a method complementary to both passive and hybrid measurement approaches.
HTS separates measuring or calculating the performance metric from collecting and transporting network operational state.
      </t>
    </abstract>
  </front>
  <middle>
    <section anchor="intro" numbered="true" toc="default">
      <name>Introduction</name>
      <t>
Successful resolution of challenges of automated network operation,
as part of overall service orchestration and automated network operation,
relies on a timely collection of accurate information that reflects the state of network elements.
Because performing the analysis and act upon the collected information requires considerable computing and storage
resources, the network operational state information is unlikely to be processed by the network elements themselves
but will be exported  to big data systems for processing and storing. The process of generating,
and collecting network operational state information
also referred to in this document as network telemetry, and transporting it for post-processing
should work equally well with data flows or injected in the network test packets. <xref target="RFC7799" /> 
describes a combination of elements of passive and active measurement as a hybrid measurement.
</t>
      <t>
     Several technical methods have been proposed to enable the collection of network operational state information
     instantaneous to the packet processing, among them <xref target="P4.INT" /> and
     <xref target="RFC9197"/>. The instantaneous, i.e., in the data packet itself, collection
     of telemetry information simplifies the process of attribution of telemetry information to the particular monitored flow.
     On the other hand, this collection method impacts the data packets, potentially changing their treatment by the network elements.
     Also, the amount of information the instantaneous method collects might be incomplete because of the limited space it can be allotted.
     Other proposals defined methods to collect telemetry information in a separate packet from
     each node traversed by the monitored data flow. <xref target="RFC9326"/> is an example of
     this approach to collecting telemetry information.
     These methods allow data collection from any arbitrary path and avoid directly impacting data packets.
     On the other hand, to unambiguously correlate telemetry information with the monitored flow
	 requires explicit characteristic information about the monitored flow to be carried in the packet that carries telemetry information.
      </t>
      <t>
This document introduces Hybrid Two-Step (HTS) as a new method of telemetry collection that improves
accuracy of a measurement by separating the act of
measuring or calculating the performance metric from the collecting and transporting this information while minimizing the overhead
of the generated load in a network.
</t>
<t>
HTS method extends the two-step mode of Residence Time Measurement (RTM) defined in <xref target="RFC8169" />
to on-path network operational state collection and transport.
HTS instruments data packets of the monitored flow or specially constructed test packets
that are already equipped with
a shim of on-path telemetry protocol to use as an HTS Trigger packet,
making the process of attribution of telemetry to the data flow simple.
</t>

    </section>
    <section numbered="true" toc="default">
      <name>Conventions Used in This Document</name>
      <section numbered="true" toc="default">
        <name>Acronyms</name>
        <t>RTM              Residence Time Measurement <xref target="RFC8169"/></t>
        <t>ECMP            Equal Cost Multipath <xref target="RFC2992"/></t>
        <t>HMAC           Hashed Message Authentication Code <xref target="RFC2104"/></t>
        <t>HTS               Hybrid Two-Step (<xref target="intro"/>)</t>
        <t>MTU              Maximum Transmission Unit <xref target="RFC1191"/></t>
		<t>NSH             Network Service Header <xref target="RFC8300"/></t>
        <t>RTT                Round-Trip Time <xref target="RFC2681"/></t>
        <t>TLV                Type-Length-Value (<xref target="hts-tlv-fig"/>)</t>
        
      </section>
      <section numbered="true" toc="default">
        <name>Terminology</name>
		<t>This document makes use of the following terms:</t>
        <t>Characteristic information - the interpretation in this document 
		follows the definition of "Characteristic" in Section 3.2 in <xref target="RFC9940"/>.</t>
        <t>HTS domain is an example of a "limited domain" as defined in <xref target="RFC8799"/>.
		HTS domain may be identical to an IOAM domain
        (see Section 3 of <xref target="RFC9197"/>) or a controlled domain where the Alternate-Marking Method
		is used to measure performance metrics
        (see Section 7.1 of <xref target="RFC9341"/>).</t>
        <t>HTS ingress node, defined in <xref target="ingress-node-section"/>,
		an HTS system that generates an HTS Trigger and HTS Follow-up packets.</t>
        <t>HTS intermediate node, defined in <xref target="intermediate-node-section"/>,
		an HTS system that receives the HTS Trigger and HTS Follow-up packets, </t>
        <t>HTS egress node, defined in <xref target="egress-node-section"/>,
		consumes HTS Trigger packet and terminates an HTS Follow-up packet.</t>
		<t>Telemetry is information reflecting the operational state of network elements,
		including performance metrics, collected and transported for analysis.</t>
	  </section>
 
      <section numbered="true" toc="default">
        <name>Requirements Language</name>
        <t>
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
   NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
   "MAY", and "OPTIONAL" 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="overview-sec" numbered="true" toc="default">
      <name>Problem Overview</name>
	  <t>
	  Performance measurement and network telemetry often require collecting operational state information - such as timestamps,
	  queue occupancy, buffer utilization, interface load, or other metrics - at multiple points along a packet's forwarding path.
	  Methods that embed telemetry directly into data packets simplify correlation with the monitored flow but may be limited
	  by MTU constraints, may be incompatible with encrypted packets,
	  and may introduce processing overhead that affects measurement accuracy.
	  </t>
	  <t>
	  For encrypted packets, inserting telemetry information directly into the data packet
	  may be impossible or may degrade measurement accuracy because the packet cannot be safely modified while in transit.
	  Accurate comparison of timestamps depends on the availability of time synchronization across the HTS domain.
	  </t>
	  <t>
	  In some networks, it is beneficial to collect telemetry at network elements other than the egress,
	  depending on the performance metric and operational objective.
	  For example, a head-end may optimize path selection based on upstream telemetry reflecting queue depth,
	  buffer occupancy, or interface utilization.
	  </t>
	  <t>
	  These challenges motivate the HTS method, which separates the act of measuring or collecting telemetry
	  from the act of transporting it. HTS handles both performance measurements and telemetry information
	  using the same two‑step mechanism. An HTS Trigger initiates telemetry collection,
	  and one or more HTS Follow-up packets carry the collected information.
	  These phases are described in <xref target="theory-operation"/>.
	  </t>	
    </section>
    <section anchor="theory-operation" numbered="true" toc="default">
      <name>Theory of Operation</name>
	  <t>
	  HTS measurement operates within an HTS domain consisting of an HTS Ingress node,
	  zero or more HTS Intermediate nodes, and an HTS Egress node.
	  HTS Trigger packets originate at the HTS Ingress node and are forwarded downstream
	  through the HTS domain. HTS Follow‑up packets are generated by the HTS Egress node
	  and sent upstream toward the HTS Ingress node.
	  </t>
	  <t>A reference HTS topology is illustrated in <xref target="hts-ref-fig"/>.</t>
	  <t>
	  HTS telemetry is ultimately consumed by a Collector, which is a logical function responsible
	  for receiving, correlating, and analyzing HTS measurement results.
	  The Collector may be co‑located with the HTS Egress node or may reside on a remote system
	  such as a controller, analytics engine, or network management system.
	  The Collector is not part of the HTS domain and does not process HTS packets directly.
	  </t>
	  
      <figure anchor="hts-ref-fig">
        <name>An Example of an HTS Reference Topology</name>
        <artwork name="" type="ascii-art" align="left" alt="">
	<![CDATA[ 
                   HTS Domain
   -----------------------------------------------------

     +---------+      +-------------+      +---------+
     | Ingress | ---> |Intermediate | ---> | Egress  |
     +---------+      +-------------+      +---------+
          |                |                  |
          | HTS Trigger    | HTS Trigger      | HTS Trigger
          | HTS Follow-up  | HTS Follow-up    | HTS Follow-up
          | (originates)   | (adds telemetry) | (terminates)

   -----------------------------------------------------

                         |
                         | Telemetry Export
                         v
                   +-------------+
                   |  Collector  |
                   +-------------+
	 ]]>
    </artwork>
	</figure>

<t>
The HTS Egress node terminates HTS Follow‑up packets, validates the HTS shim and Telemetry Data TLVs,
and exports the resulting measurement information to the Collector. HTS Error Codes, when present,
are generated only by the HTS Egress node and delivered to the Collector as part of the telemetry export.
Intermediate nodes do not generate HTS Error Codes.
</t>
	<t>The HTS method consists of two phases:</t>
      <ul spacing="normal">
        <li>Performing a measurement and/or obtaining network operational state information on a network element.
        HTS Trigger is a data or test packet instrumented to Trigger the collection of telemetry information on a network element.
		<xref target="hts-Trigger-sec"/> specifies operation of an HTS Trigger packet.</li>
        <li>Collecting and transporting the measurement and/or the telemetry information.
        HTS Follow-up is a packet constructed to transport telemetry information that includes operational state
        and performance measurements originated on the nodes along the path traversed by the HTS Trigger.
		<xref target="hts-followup-sec"/> specifies operation of an HTS Follow-up packet.</li>
      </ul>
	
    <section anchor="hts-packets-sec" numbered="true" toc="default">
      <name>HTS Packets</name>
     <t>
	 HTS uses two packet types: HTS Trigger packets, which initiate telemetry collection,
	 and HTS Follow-up packets, which carry the collected telemetry.
	 The HTS Trigger and HTS Follow-up packets MUST traverse the same forwarding path within the HTS domain
	 to ensure correct correlation of telemetry information.
	 </t>
<t>
Characteristic Information, in context of HTS, refers to the set of fields carried
in an HTS Trigger and HTS Follow-up packet that uniquely identifies the monitored flow
and ensures that both packets traverse the same forwarding path within the HTS domain.
</t>
<t>
For a given monitored flow, Characteristic Information MUST be invariant
and MUST be identical in the HTS Trigger and all HTS Follow-up packets associated with that Trigger.
HTS nodes MUST use this invariant information to correlate HTS Follow-up packets with the corresponding HTS Trigger packets.
</t>
<t>
Characteristic Information MUST preserve the forwarding behavior of the HTS Trigger packet and MUST NOT be modified by HTS nodes.
</t>
<t>
Below are some examples of Characteristic Information:
</t>
<ul>
<li>IOAM: Namespace-ID, IOAM-Trace-Type, Flow ID, Sequence Number</li>
<li>Segment Routing: SID list.</li>
<li>NSH: Base Header and Service Path Header</li>
<li>ECMP environments: reusing the same entropy label or IPv6 Flow Label.</li>
<li>Any other fields used by the forwarding plane to select the path.</li>
</ul>	 
<t>The exact composition of Characteristic Information is transport‑specific and outside the scope of this document,
but all HTS nodes MUST treat it as immutable and use it to correlate HTS Trigger and Follow-up packets.
</t>
	 
    <section anchor="hts-Trigger-sec" numbered="true" toc="default">
      <name>HTS Trigger Packets</name>
	  <t>
	 An HTS Trigger is a user data packet or specially constructed test packet instrumented to cause network elements
	 to collect telemetry information. The Trigger packet includes characteristic information that allows HTS nodes
	 to associate the Trigger with the monitored flow. The specific format of the Trigger depends
	 on the telemetry framework used in the HTS domain.
	 </t>
    <section anchor="ioam-Trigger-sec" numbered="true" toc="default">
      <name>HTS Trigger in In-Situ OAM</name>
 
      <t>
	  When HTS is used in an IOAM domain, the Trigger packet carries an IOAM Option-Type set
	  to the "IOAM Hybrid Two-Step Option-Type" value (TBA1) allocated by IANA (<xref target="ioam-option-type-sec" />).
	  The HTS Trace IOAM Header is shown in <xref target="ioam-hts-fig"/>.
      </t> 
          <figure anchor="ioam-hts-fig">
          <name>Hybrid Two-Step Trace IOAM Header</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[    
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Namespace-ID           |     Flags     |Extension-Flags|
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               IOAM-Trace-Type                 |   Reserved    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Flow ID (Optional)                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Sequence Number  (Optional)               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
<t>
           The HTS Trigger includes HTS IOAM Header (shown in <xref target="ioam-hts-fig"/>)
           consists of:
		   </t>
      <ul spacing="normal">
      <li>IOAM Namespace-ID - as defined in Section 5.3 <xref target="RFC9197"/>;</li>
      <li>Flags - as defined in Section 3.2 <xref target="RFC9326"/>;</li>
     <li>Extension-Flags - as defined in Section 3.2 <xref target="RFC9326"/>; </li>
     <li>IOAM-Trace-Type - as defined in Section 5.4 <xref target="RFC9197"/>;</li>
     <li>Flow ID (Optional) - as defined in Section 3.2 <xref target="RFC9326"/>; </li>
     <li>Sequence Number (Optional) - as defined in Section 3.2 <xref target="RFC9326"/>.</li>
      </ul> 
	  <t>
	  These fields provide the characteristic information needed for
	  HTS nodes to associate the HTS Trigger packet with the monitored flow.
	  </t>
      </section>
      
     <section anchor="amm-Trigger-sec" numbered="true" toc="default">
      <name>HTS Trigger in the Alternate-Marking Method</name>
      <t>
      In an Alternate‑Marking domain (<xref target="RFC9341"/>, <xref target="RFC9342"/>),
	  any packet in a flow that carries the marking information MAY serve as an HTS Trigger.
	  The exact transport encapsulation of the HTS Trigger packet is specific to the Alternate‑Marking deployment
	  and is outside the scope of this document. Regardless of the encapsulation,
	  the HTS Trigger packet MUST carry characteristic information sufficient for HTS nodes to associate it with the monitored flow.
      </t>
</section>
</section>

    <section anchor="hts-followup-sec" numbered="true" toc="default">
      <name>HTS Follow-up Packets</name>
	  <t>
      An HTS Follow-up packet carries telemetry information collected by HTS nodes along the path traversed by the HTS Trigger packet.
	  The ingress network element (<xref target="hts-ref-fig"/>) that originates the HTS Trigger packet
	  also originates the corresponding HTS Follow-up packet. In upstream collection mode,
	  an HTS Follow-up packet MAY be generated without a preceding Trigger, provided that the Follow-up packet
	  includes Characteristic Information sufficient to identify the monitored flow.
	  </t>
	  <t>
      An HTS Follow-up packet MUST carry the same Characteristic Information as the associated HTS Trigger packet.
	  HTS nodes MUST treat this information as immutable and MUST use it to ensure that the HTS Follow-up packet
	  traverses the same forwarding path as the HTS Trigger packet.
	  </t>
	  <t>
	  The Follow-up packet consists of the transport encapsulation determined by the Characteristic Information,
	  followed by the HTS shim and one or more Telemetry Data TLVs. The HTS shim indicates
	  the maximum allowed size of the Follow-up packet and the telemetry profile requested by the ingress node.
	  </t>
	  <t>
	  Only one outstanding Follow-up packet MAY exist per path at a node.
	  If a node receives a new HTS Trigger packet while an HTS Follow-up packet for the same flow is still pending,
	  the node MUST first originate the Follow-up packet for the earlier HTS Trigger before processing the new HTS Trigger packet.
	  </t>

      <t>
      The following sections describe the operation of HTS nodes in the downstream mode of collecting the telemetry information.
      In the upstream mode, the behavior of HTS nodes, in general, identical with the exception
      that the HTS Trigger packet does not precede the HTS Follow-up packet.
      </t>
</section>
</section>
      
      <section anchor="ingress-node-section" numbered="true" toc="default">
        <name>Operation of the HTS Ingress Node</name>
        <t>
The HTS ingress node is the network element that originates
HTS Trigger packets and the corresponding HTS Follow-up packets.
The ingress node is responsible for constructing the HTS Trigger packet, 
initiating telemetry collection, and generating HTS Follow-up packets that carry telemetry collected along the forwarding path.
        </t>
      <section anchor="ingress-node-responsibilities-section" numbered="true" toc="default">
        <name>Responsibilities of the HTS Ingress Node</name>
<t>Upon originating an HTS Trigger, the ingress node MUST:</t>
<ol type="1">
<li>Construct the HTS Trigger packet with the appropriate transport encapsulation
and Characteristic Information (<xref target="hts-packets-sec"/>).</li>
<li>Ensure that the HTS Trigger packet traverses the intended forwarding path,
consistent with the monitored flow.</li>
<li>Record the Characteristic Information so that
the HTS Follow-up packet can be constructed with identical values.</li>
<li>Transmit the Trigger packet into the HTS domain.</li>
</ol>		
		</section>
      <section anchor="orig-follow-pkt-sec" numbered="true" toc="default">
        <name>Originating the HTS Follow-up Packet</name>	
	<t>
	For each HTS Trigger packet, the HTS ingress node MUST originate a corresponding HTS Follow-up packet
	unless operating in upstream collection mode. The ingress node constructs the HTS Follow-up packet
	using the format shown in <xref target="Follow-up-fig"/>.
	The Follow-up packet consists of the transport encapsulation determined by the Characteristic Information,
	followed by the HTS shim and one or more Telemetry Data TLVs.
	The ingress node MUST populate the HTS shim fields as described below and MUST ensure
	that the Follow-up packet carries the same Characteristic Information as the associated HTS Trigger.
	</t>
	<t>The HTS ingress node MUST:</t>
<ol type="1">
<li>Reuse the same Characteristic Information as the Trigger packet.</li>
<li>
<ul spacing="compact">
<li>This ensures that the Follow-up packet traverses the same forwarding path.</li>
<li>The ingress node MUST NOT modify Characteristic Information once selected.</li>
</ul>
</li>
<li>Construct the HTS shim (<xref target="Follow-up-fig"/>) including:</li>
<li>
<ul spacing="compact">
<li>Version</li>
<li>HTS Shim Length</li>
<li>Flags</li>
<li>Sequence Number</li>
<li>HTS Max Length</li>
<li>Telemetry Data Profile</li>
</ul>
</li>
<li>Initialize the Sequence Number to zero for the first Follow-up packet associated with a Trigger.</li>
<li>Include one or more Telemetry Data TLVs, if local telemetry is collected at the ingress node.</li>
<li>Transmit the HTS Follow-up packet after sending the corresponding HTS Trigger packet.</li>
</ol>		
        <figure anchor="Follow-up-fig">
          <name>Follow-up Packet Format</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[    
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
~                      Transport Network                        ~
|                        Encapsulation                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
|Ver|HTS Shim L |     Flags     |Sequence Number|  Error Code   |HTS
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ S
|                        HTS Max Length                         | h
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ i
~                    Telemetry Data Profile                     ~ m
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---
|                                                               |
~                     Telemetry Data TLVs                       ~
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>
          Fields of the HTS shim are as follows:
        </t>
        <ul empty="true" spacing="normal">
          <li>
          Version (Ver) is the two-bits long field. It specifies the version of the HTS shim format.
          This document defines the format for the 0b00 value of the field.
          </li>
          <li>
          HTS Shim Length is the six bits-long field. It defines the length of
          the HTS shim in octets. The minimal value of the field is eight octets.
          </li>
          <li>
            <figure anchor="flags-field-fig">
              <name>Flags Field Format</name>
              <artwork name="" type="" align="left" alt=""><![CDATA[    
     0               
     0 1 2 3 4 5 6 7 
    +-+-+-+-+-+-+-+-+
    |F|  Reserved   |
    +-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
          </li>
          <li>
            <t>
          Flags is eight-bits long. The format of the Flags field displayed in <xref target="flags-field-fig" />.
            </t>
            <ul spacing="normal">
              <li>
          Full (F) flag MUST be set to zero by the node originating the HTS Follow-up packet and MUST be set
          to one by the node that does not add its telemetry data to avoid exceeding MTU size.
          </li>
              <li>
          The node originating the Follow-up packet MUST zero the Reserved field and ignore it on the receipt.
          </li>
            </ul>
          </li>
          <li>
          Sequence Number is one octet-long field. The zero-based value of the field reflects the place of
          the HTS Follow-up packet in the sequence of the HTS Follow-up packets that originated in
          response to the same HTS Trigger. The ingress node MUST set the value of the field to
          zero.
          </li>
          <li>
          Error Code is one octet-long field. It MUST be zeroed on transmission and ignored on receipt.
		  An HTS Egress node sets the value of the Error Code based on processing
		  an HTS Follow-up packet before delivering telemetry information to a Collector.
		  IANA is requested to assign values according to <xref target="iana-error-code-reg"/>.
          </li>
          <li>
          HTS Max Length is four octet-long field. The value of the HTS Max Length
          field indicates the maximum length of the HTS Follow-up packet in octets.
          An operator MUST be able to configure the HTS Max Length field's value.
          The value SHOULD be set equal to the path MTU.
          </li>
          <li>
          Telemetry Data Profile is the optional variable-length field of bit-size flags. 
          Each flag indicates the requested type of telemetry data to be collected at each HTS node.
          The increment of the field is four bytes with a minimum length of zero. For example,
          IOAM-Trace-Type information defined in <xref target="RFC9197"/>,
          Sequence Number and/or Flow ID (<xref target="ioam-hts-fig"/>) can be used
          in the Telemetry Data Profile field.
          </li>
          <li>
            <figure anchor="hts-tlv-fig">
              <name>Telemetry Data TLV Format</name>
              <artwork name="" type="" align="left" alt=""><![CDATA[    
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Type     |    Reserved   |           Length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~                            Value                              ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure>
          </li>
          <li>
            <t>
          Telemetry Data TLV is a variable-length field. Multiple TLVs MAY be placed
   in an HTS packet. Additional TLVs may be enclosed within a given TLV, subject to the semantics of the (outer) TLV in question.
   <xref target="hts-tlv-fig" /> presents the format of a Telemetry Data TLV, where fields are defined as the following:
</t>
            <ul spacing="normal">
              <li>
Type - a one-octet-long field that characterizes the interpretation of the Value field.
</li>
              <li>Reserved - one-octet-long field.</li>
              <li>
Length - two-octet-long field equal to the length of the Value field in octets.
</li>
              <li>
Value - a variable-length field. The value of the Type field determines its interpretation and encoding.
IOAM data fields, defined in <xref target="RFC9197"/>, MAY be carried in the Value field.
      </li>
            </ul>
          </li>
        </ul>
        <t>
             All multibyte fields defined in this specification are in network byte order.
</t>
</section>
	  </section>
      
      <section anchor="intermediate-node-section" numbered="true" toc="default">
        <name>Operation of HTS Intermediate Nodes</name>
		<t>
		An HTS intermediate node is a network element that receives and forwards
		HTS Trigger packets and HTS Follow-up packets. Intermediate nodes collect
		telemetry data and contribute it to the Follow-up packet while ensuring
		that the packet remains within the MTU constraints of the path.
		</t>
		<t>
		Intermediate nodes MUST NOT modify Characteristic Information and
		MUST use it to correlate Trigger and Follow-up packets.
		</t>

      <section anchor="intermed-Trigger-proc-sec" numbered="true" toc="default">
        <name>Processing an HTS Trigger Packet</name>
	  <t>Upon receiving an HTS Trigger packet, an intermediate node MUST:</t>
		<ol type="1">
		<li>Verify Characteristic Information</li>
		<li>
		<ul spacing="compact" empty="true">
			<li>The node MUST verify that the Trigger contains valid Characteristic Information.
			If validation fails, the node MUST forward the packet unchanged.</li>
		</ul>
		</li>
		<li>Copy transport encapsulation</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>The node MUST record the transport encapsulation and Characteristic Information
		for use when constructing a Follow-up packet.</li>
		</ul>
		</li>
		<li>Start the HTS Follow-up Timer</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>The node MUST start a timer associated with the monitored flow. The timer ensures
		that a Follow-up packet will be originated even if no Follow-up packet is received from downstream nodes.</li>
		</ul>
		</li>
		<li>Forward the Trigger packet</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>The node MUST forward the Trigger packet according to the forwarding behavior
		determined by the Characteristic Information.</li>
		</ul>
		</li>
		</ol>
	  </section>
	  
      <section anchor="intermed-follow-proc-sec" numbered="true" toc="default">
        <name>Processing an HTS Follow-up Packet</name>
		<t>Upon receiving an HTS Follow-up packet, an intermediate node MUST:</t>
		<ol type="1">
		<li>Validate the Follow-up packet</li>
		<li>
		<ul spacing="compact">
		<li>Verify that Characteristic Information matches a known Trigger.</li>
		<li>Verify that the Full flag is not set. If validation fails,
		the node MUST forward the packet unchanged and MUST NOT add telemetry.</li>
		</ul>
		</li>
		<li>Stop the HTS Follow-up Timer</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>The node MUST stop the timer associated with the flow.</li>
		</ul>
		</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>The node MUST collect telemetry data as requested by
		the Telemetry Data Profile or by local HTS policy.</li>
		</ul>
		</li>
		<li>Determine whether telemetry fits within HTS Max Length</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>If adding telemetry does not exceed HTS Max Length:</li>
		<li>
			<ul spacing="compact">
				<li>Append telemetry as a new Telemetry Data TLV</li>
				<li>Forward the Follow-up packet</li>
		</ul>
		</li>
		<li>If adding telemetry would exceed HTS Max Length:</li>
		<li>
			<ul spacing="compact">
			<li>Set the Full flag in the received Follow-up packet</li>
			<li>Forward the received Follow-up packet unchanged</li>
			<li>Originate a new Follow-up packet using the stored
			transport encapsulation and Characteristic Information</li>
			<li>Increment the Sequence Number</li>
			<li>Insert collected telemetry into the first Telemetry Data TLV</li>
			<li>Transmit the new Follow-up packet</li>
			</ul>
		</li>
		</ul>
		</li>
		</ol>
	  </section>

      <section anchor="follow-time-exp-sec" numbered="true" toc="default">
        <name>HTS Follow-up Timer Expiration</name>
		<t>If the HTS Follow-up Timer expires before a Follow-up packet is received, the intermediate node MUST:</t>
		<ol type="1">
		<li>Originate a new Follow-up packet</li>
		<li>
		<ul spacing="compact" empty="true">
		<li>Using the stored transport encapsulation and Characteristic Information.</li>
		</ul>
		</li>
		<li>Initialize the HTS shim</li>
		<li>
		<ul spacing="compact">
		<li>Version = 0b00</li>
		<li>Sequence Number = 0</li>
		<li>HTS Shim Length and Telemetry Data Profile MAY be set according to local policy.</li>
		</ul>
		</li>
		<li>Insert telemetry data</li>
		<li>
		<ul spacing="compact">
		<li>The node MUST insert locally collected telemetry into the first Telemetry Data TLV.</li>
		</ul>
		</li>
		<li>Transmit the Follow-up packet</li>
		</ol>
	  </section>
	  
	</section>
		
      <section anchor="egress-node-section" numbered="true" toc="default">
        <name>Operation of the HTS Egress Node</name>
		<t>
		The HTS Egress node terminates synthetic HTS Trigger packets and forwards data packets used
		as HTS Trigger packets according to normal forwarding behavior. The Egress node is responsible
		for correlating synthetic HTS Trigger packets with the corresponding HTS Follow‑up packets,
		validating the HTS shim and Telemetry Data TLVs contained in HTS Follow‑up packets,
		generating HTS Error Codes when processing errors are detected,
		and exporting the resulting telemetry to the Collector. The Collector is a logical function that receives,
		correlates, and analyzes HTS measurement results. The Collector may be co‑located with the Egress node
		or may reside on a remote system such as a controller, analytics engine, or network management system.
		The Collector is not part of the HTS domain and does not process HTS packets directly.
		</t>
		<t>
		HTS Error Codes are generated only by the HTS Egress node and are delivered to
		the Collector as part of the telemetry export. HTS Trigger packets do not carry
		HTS shim or Telemetry Data TLVs and cannot be malformed in an HTS‑specific sense.
		</t>
		
		<section anchor="egress-Trigger-proc-sec" numbered="true" toc="default">
        <name>Processing an HTS Trigger Packet</name>
		<t>
		When an HTS Trigger packet (synthetic or data‑packet) arrives
		at the Egress node, the node performs the following steps:
		</t>
		<ol type="1">
		<li>Record Trigger context.</li>
		<li><ul spacing="compact" empty="true">
		<li>
		The Egress node extracts the Sequence Number and Characteristic Information
		and records this measurement context. No correlation between Trigger and
		Follow‑up packets is required; the Sequence Number in the HTS Follow‑up packet identifies
		the relative location of the HTS Follow-up packet in the sequence of the Follow-up packets
		generated due to the same HTS Trigger packet.
		</li>
		</ul></li>
		<li>Start the HTS Collection Timer.</li>
		<li><ul spacing="compact" empty="true">
		<li>
		The Egress node starts the HTS Collection Timer associated with the Trigger.
		The timer is used to detect loss or excessive delay of the corresponding HTS Follow‑up packet.
		</li>
		</ul></li>
		<li>Apply Trigger termination behavior.</li>
		<li><ul spacing="compact" empty="true">
		<li>
		If the Trigger packet is synthetic, the Egress node MUST terminate the packet.
		</li>
		<li>
		If the Trigger packet is a data packet used as an HTS Trigger,
		the Egress node MUST forward the packet according to normal forwarding behavior.
		</li>
		</ul></li>
		</ol>
		<t>
		Synthetic Trigger packets and data‑packet Triggers do not carry HTS shim
		or Telemetry Data TLVs and cannot be malformed in an HTS‑specific sense.
		</t>
        </section>

      <section anchor="egress-follow-proc-sec" numbered="true" toc="default">
        <name>Processing an HTS Follow‑up Packet</name>
		<t>
		HTS Follow‑up packets may arrive at the Egress node as a sequence of packets generated
		in response to a single HTS Trigger packet. Each Follow‑up packet contains the HTS shim,
		Telemetry Data TLVs, and optionally the HTS HMAC TLV. 
		HTS Error Codes generated during HTS Follow‑up packet validation are defined in <xref target="iana-error-code-reg"/>.
		The conditions under which each Error Code is generated are specified in this section.
		The Egress node processes each Follow‑up packet in the sequence as follows:
		</t>
		<ol type="1">
		<li>Clear the HTS Collection Timer.</li>
		<li><ul spacing="compact">
			<li>Upon receiving any valid Follow‑up packet, the Egress node MUST clear the HTS Collection Timer
			associated with the monitored flow. Set Error Code to "No Error" value.</li>
		</ul></li>
		<li>Validate the HTS HMAC TLV (if present).</li>
		<li><ul spacing="compact" empty="true">
			<li>The Egress node performs HMAC verification before processing any telemetry data.
			If validation fails, set Error Code to "HMAC Failure" value. Go to step 13.</li>
		</ul></li>
		<li>Validate the HTS shim.</li>
		<li><ul spacing="compact">
			<li>The Egress node verifies the Sequence Number and Full flag in each Follow‑up packet.
			Set Error Code to "Invalid HTS Shim" value. Go to step 13.</li>
		</ul></li>
		<li>Validate Telemetry Data TLVs.</li>
		<li><ul spacing="compact" empty="true">
			<li>The Egress node verifies the structure, length, and consistency of all Telemetry Data TLVs in each packet.
			If validation fails, set Error Code to "Invalid TLV" value. Go to step 13.</li>
		</ul></li>
		<li>Restart the HTS Collection Timer.</li>
		<li><ul spacing="compact" empty="true">
			<li>If the Full flag is set, indicating that additional Follow‑up packets are expected,
			the Egress node MUST restart the HTS Collection Timer.</li>
		</ul></li>
		<li>Accumulate telemetry fragments.</li>
		<li><ul spacing="compact" empty="true">
			<li>The Egress node stores the telemetry information from each Follow‑up packet in the sequence.
			If the Full flag is not set, the packet is the final Follow‑up packet for the Trigger.</li>
		</ul></li>
		<li>Export telemetry to the Collector.</li>
		<li><ul spacing="compact" empty="true">
			<li>When the final Follow‑up packet in the sequence is received (Full flag = 0),
			the Egress node aggregates all telemetry fragments collected and exports the complete telemetry record,
			including any HTS Error Codes, to the Collector using an out‑of‑band mechanism.
			The specific telemetry export protocol is outside the scope of this document.</li>
		</ul></li>
		</ol>
		</section>

        <section anchor="egress-timer-exp-sec" numbered="true" toc="default">
        <name>HTS Collection Timer Expiration</name>
		<t>
		The HTS Collection Timer is started when the Egress node receives an HTS Trigger packet
		(synthetic or data‑packet). The timer is used to detect loss or excessive delay of
		HTS Follow‑up packets generated in response to that Trigger. Because multiple
		HTS Follow‑up packets may be generated for a single Trigger, the Egress node
		maintains the timer across the entire sequence of Follow‑up packets.
		</t>
		<t>
		When an HTS Follow‑up packet is received, the Egress node MUST clear the HTS Collection Timer
		associated with the monitored flow identified by a locally unique Characteristic Information.
		If the Full flag in the Follow‑up packet is set, indicating that additional Follow‑up packets are expected, 
		he Egress node MUST restart the HTS Collection Timer. If the Full flag is not set, the Follow‑up packet
		is the final packet in the sequence, and the Egress node MUST NOT restart the timer.
		</t>
		<t>
		If the HTS Collection Timer expires before the final HTS Follow‑up packet in the sequence is received,
		the Egress node performs the following steps:
		</t>
		<ol type="1">
		<li>Generate a synthetic HTS Follow‑up packet.</li>
		<li><ul spacing="compact">
			<li>
			The Egress node originates a synthetic HTS Follow‑up packet for Sequence Number associated with the expired timer.
			This packet represents the Egress node’s best available telemetry for the Trigger's Characteristic Information.
			</li>
		</ul></li>
		<li>Populate the HTS shim.</li>
		<li><ul spacing="compact" empty="false">
			<li>
			The synthetic Follow‑up packet includes the Sequence Number and sets the Full flag to zero,
			indicating that no additional Follow‑up packets will be sent.
			</li>
		</ul></li>
		<li>Insert an HTS Error Code.</li>
		<li><ul spacing="compact">
			<li>
			The Egress node MUST set Error Code value to "Follow‑up Not Received" (<xref target="iana-error-code-reg"/>),
			indicating that one or more expected HTS Follow‑up packets were not received before the timer expired.
			</li>
		</ul></li>
		<li>Export telemetry to the Collector.</li>
		<li><ul spacing="compact">
			<li>
			The Egress node aggregates all telemetry fragments collected for the Trigger’s Sequence Number,
			including any fragments received before timer expiration, and exports the resulting telemetry record
			to the Collector using an out‑of‑band mechanism.
			The specific telemetry export protocol is outside the scope of this document.
			</li>
		</ul></li>
		</ol>
		</section>
	
      </section>
      </section>
      
        <section anchor="ops-cons-section" numbered="true" toc="default">
        <name>Operational Considerations</name>
		<t>
		This section describes operational aspects of deploying HTS in a network.
		These considerations are informational and do not impose additional protocol
		requirements beyond those specified in <xref target="theory-operation"/>.
		</t>
		
		<section anchor="path-section" numbered="true" toc="default">
        <name>Path Congruence</name>
		<t>
		HTS relies on the Trigger and Follow‑up packets traversing the same forwarding path.
		Operators MUST ensure that the Characteristic Information used in the Trigger and Follow‑up packets
		is sufficient to preserve forwarding behavior across the HTS domain.
		</t>
		<t>Examples of fields that influence forwarding include:</t>
		<ul empty="false">
		<li>Segment Routing SID lists</li>
		<li>NSH Service Path Headers</li>
		<li>IPv6 Flow Labels</li>
		<li>Entropy Labels</li>
		<li>IOAM Namespace-ID and IOAM-Trace-Type</li>
		</ul>
		<t>
		Operators SHOULD verify that these fields are stable and predictable across the HTS domain.
		If forwarding behavior changes due to ECMP rebalancing, policy routing, or service‑function steering,
		HTS telemetry may be incomplete or inconsistent.
		</t>
		</section>
		
		<section anchor="max-mtu-section" numbered="true" toc="default">
        <name>MTU and Packet Size Considerations</name>
		<t>HTS Follow‑up packets grow as telemetry is added by intermediate nodes. Operators SHOULD ensure that:</t>
		<ul empty="false">
		<li>the HTS Max Length value is configured to avoid fragmentation,</li>
		<li>the underlying transport encapsulation supports the expected packet size, and</li>
		<li>intermediate nodes have sufficient headroom to append telemetry.</li>
		</ul>
		<t>
		If an intermediate node cannot append telemetry without exceeding HTS Max Length,
		it will set the Full flag and originate a new Follow‑up packet. Operators SHOULD monitor this condition,
		as frequent Full‑flag events may indicate insufficient MTU headroom or excessive telemetry volume.
		</t>
		</section>
		
		<section anchor="timer-section" numbered="true" toc="default">
        <name>Timer Configuration</name>
		<t>HTS uses two types of timers:</t>
		<ul empty="false">
		<li>HTS Follow‑up Timer (intermediate nodes)</li>
		<li>HTS Collection Timer (egress nodes)</li>
		</ul>
		<t>Operators SHOULD configure timer values based on:</t>
		<ul empty="false">
		<li>expected path latency,</li>
		<li>jitter characteristics,</li>
		<li>telemetry volume, and</li>
		<li>the number of intermediate nodes.</li>
		</ul>
		<t>
		Timers that are too short may cause premature origination of Follow‑up packets.
		Timers that are too long may delay telemetry delivery.
		</t>
		</section>

		<section anchor="telemetry-volume-section" numbered="true" toc="default">
        <name>Telemetry Volume and Profile Selection</name>
		<t>
		The Telemetry Data Profile determines which telemetry elements are collected by HTS nodes.
		Operators SHOULD select a profile that balances:
		</t>
		<ul empty="false">
		<li>operational visibility,</li>
		<li>packet size constraints,</li>
		<li>processing overhead, and</li>
		<li>the number of nodes in the HTS domain.</li>
		</ul>
		<t>
		Profiles that request high‑volume telemetry (e.g., queue depth, buffer occupancy, interface load)
		may require larger HTS Max Length values or more frequent Full‑flag events.
		</t>
		</section>
		
		<section anchor="malform-pkts-section" numbered="true" toc="default">
        <name>Handling Mis‑injected or Malformed Packets</name>
		<t>
		HTS nodes MUST validate Trigger and Follow‑up packets as described in <xref target="theory-operation"/>.
		Mis‑injected or malformed packets may occur due to:
		</t>
		<ul empty="false">
		<li>incorrect configuration,</li>
		<li>software defects,</li>
		<li>malicious injection, or</li>
		<li>inconsistent forwarding behavior.</li>
		</ul>
		<t>
		Operators SHOULD monitor for validation failures and investigate persistent anomalies.
		Egress nodes MUST discard invalid Follow‑up packets and SHOULD log such events for operational visibility.
		</t>
		</section>
		
		<section anchor="up-down-section" numbered="true" toc="default">
        <name>Upstream and Downstream Collection Modes</name>
		<t>HTS supports both upstream and downstream collection modes:</t>
		<ul empty="false">
		<li>Downstream mode: The ingress node originates the Follow‑up packet.</li>
		<li>Upstream mode: The egress node originates the Follow‑up packet if no Follow‑up
		is received before the HTS Collection Timer expires.</li>
		</ul>
		<t>Operators SHOULD select the mode based on:</t>
		<ul empty="false">
		<li>operational goals,</li>
		<li>telemetry volume,</li>
		<li>path length, and</li>
		<li>processing capabilities of ingress and egress nodes.</li>
		</ul>
		<t>
		Upstream mode may reduce packet size on long paths, while downstream mode
		provides earlier visibility into telemetry collected by intermediate nodes.
		</t>
		</section>
		
        <section anchor="hts-mcast-section" numbered="true" toc="default">
        <name>Deploying HTS in a Multicast Network</name>
        <t>
        HTS can be deployed in multicast networks, but operators should be aware that
		Trigger and Follow‑up packets behave differently in multicast forwarding trees.
        </t>
		
		<section anchor="mcast-Trigger-section" numbered="true" toc="default">
        <name>Trigger Packet Behavior</name>
		<t>
		An HTS Trigger packet follows the multicast distribution tree determined
		by the transport encapsulation and Characteristic Information. As a result:
		</t>
		<ul empty="false">
		<li>The Trigger fans out to all downstream branches.</li>
		<li>Each downstream branch may traverse a different number of intermediate nodes.</li>
		<li>Each leaf node (multicast receiver or egress HTS node) receives a copy of the Trigger.</li>
		</ul>
		<t>
		HTS does not modify multicast forwarding behavior;
		the Trigger is replicated exactly as a normal multicast packet would be.
		</t>
		</section>
		
		<section anchor="mcast-follow-section" numbered="true" toc="default">
        <name>Follow‑up Packet Behavior</name>
		<t>
		HTS Follow‑up packets do not follow multicast replication semantics.
		A Follow‑up packet is always unicast toward the HTS collector or toward
		the node that originated the Trigger, depending on the deployment mode.
		</t>
		<t>As a result:</t>
		<ul empty="false">
		<li>Each branch of the multicast tree produces its own Follow‑up packet.</li>
		<li>Follow‑up packets from different branches may arrive at the collector at different times.</li>
		<li>The collector MUST correlate Follow‑up packets using Characteristic Information and Sequence Number.</li>
		</ul>
		<t>Network analytics should expect one train of Follow‑up packets per multicast branch, not one per Trigger.</t>
		</section>
	  
		<section anchor="vol-oper-section" numbered="true" toc="default">
        <name>Telemetry Volume Considerations</name>
		<t>Because each multicast branch produces a separate train of Follow‑up packets:</t>
		<ul empty="false">
		<li>Telemetry volume increases with the number of multicast receivers.</li>
		<li>HTS Max Length should be configured with awareness of the smallest MTU of all branches.</li>
		<li>Frequent Full‑flag events on long branches may indicate insufficient MTU headroom.</li>
		</ul>
		</section>
		
		<section anchor="timer-oper-section" numbered="true" toc="default">
        <name>Timer Considerations</name>
		<t>Each egress node in the multicast tree maintains its own HTS Collection Timer.
		Timer expirations may occur independently on different branches, especially when:</t>
		<ul empty="false">
		<li>branch lengths differ,</li>
		<li>congestion affects only part of the tree, or</li>
		<li>Follow‑up packets are lost on specific branches.</li>
		</ul>
		<t>Operators should expect asynchronous Follow‑up arrivals from different multicast receivers.</t>
		</section>

		<section anchor="collector-oper-section" numbered="true" toc="default">
        <name>Collector Considerations</name>
		<t>The HTS collector MUST be prepared to receive:</t>
		<ul empty="false">
		<li>multiple Follow‑up packets per Trigger,</li>
		<li>each corresponding to a different multicast branch,</li>
		<li>each containing telemetry from a distinct path.</li>
		</ul>
		<t>Collectors SHOULD:</t>
		<ul empty="false">
		<li>correlate Follow‑up packets using both the Characteristic Information and the HTS shim. </li>
		<li>treat each Follow‑up as representing a unique multicast path,</li>
		<li>aggregate results per Trigger if required by operational policy.</li>
		</ul>
		</section>
		</section>
		  
		<section anchor="monitor-diag-section" numbered="true" toc="default">
        <name>Operational Monitoring and Diagnostics</name>
		<t>Operators SHOULD monitor:</t>
		<ul empty="false">
		<li>ratio of HTS Trigger to Follow‑up</li>
		<li>timer expirations</li>
		<li>validation failures.</li>
		</ul>
		<t>Persistent issues may indicate:</t>
		<ul empty="false">
		<li>misattributed Characteristic Information,</li>
		<li>misconfiguration or overloading of telemetry profiles,</li>
		<li>software defects.</li>
		</ul>
		</section>
		
    </section>
	
    <section anchor="authen-sec" numbered="true" toc="default">
      <name>Authentication in HTS</name>
      <t>
	 Telemetry information may be used to drive network operation, closing
	 the control loop for self-driving, self-healing networks.
	 Thus, it is critical to provide a mechanism to protect
	 the telemetry information collected using the HTS method. 
      </t>
	  
	  <section anchor="hmac-tlv-sec" numbered="true" toc="default">
      <name>HMAC Sub-TLV</name>
      <t>
	 This document defines an optional HTS HMAC TLV that provides integrity protection
	 for HTS shim fields and Telemetry Data TLVs. The format of the HMAC sub-TLV
	 is displayed in <xref target="hmac-tlv-fig"/>.
      </t>
      <figure anchor="hmac-tlv-fig">
        <name>HMAC Sub-TLV</name>
        <artwork name="" type="" align="left" alt=""><![CDATA[    
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Authentic. Type|   HMAC Type   |             Length            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                                                               |
   |                            Digest                             |
   |                                                               |
   |                                                               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
      </figure>
      <t> 
        where fields are defined as follows:
      </t>
      <ul spacing="normal">
        <li>Authentication Type - is a one-octet-long field, value 1 is allocated by IANA <xref target="iana-hts-tlv-registry" />.</li>
        <li>Length - two-octet-long field, set equal to the length of the Digest field in octets.</li>
        <li>
        HMAC Type - is a one-octet-long field that identifies the type of the HMAC and the length of the digest 
        and the length of the digest according to the HTS HMAC Type sub-registry (see <xref target="iana-sha-type-reg" />).
        </li>
        <li>Digest - is a variable-length field that carries HMAC digest of the text that includes the encompassing TLV.</li>
      </ul>
      <t>
	 This specification defines the use of HMAC-SHA-256 truncated to 128 bits (<xref target="RFC4868"/>) in HTS.
	 Future specifications may define the use in HTS of more advanced cryptographic
	 algorithms or the use of digest of a different length.
	 HMAC is calculated as defined in <xref target="RFC2104"/> over text as the concatenation of
	 the Sequence Number field of the Follow-up packet (see <xref target="Follow-up-fig"/>) and the
	 preceding data collected in the Telemetry Data TLV. The digest
	 then MUST be truncated to 128 bits and written into the Digest field.
	 Distribution and management of shared keys are outside the scope of this document.
	 In the HTS authenticated mode, the Authentication sub-TLV MUST be present
	 in each Telemetry Data TLV.
	 HMAC MUST be verified before using any data in the included Telemetry Data TLV.
	 If HMAC verification fails, the system MUST stop processing
	 corresponding Telemetry Data TLV and notify an operator.
	 Specification of the notification mechanism is outside the scope of this document.
      </t>
    </section>
	
	<section anchor="add-authen-sec" numbered="true" toc="default">
    <name>Authentication Mechanisms in HTS</name>
	<t>
	To authenticate the Follow-up packets, operators MAY use
	authentication mechanisms available in the transport
	encapsulation used to carry HTS. Examples include:
	</t>
	<ul spacing="normal">
        <li>IPsec AH (<xref target="RFC4303"/>)/ESP (<xref target="RFC4302"/>) for IPv4 and IPv6</li>
        <li>MACsec for Ethernet (<xref target="IEEE-802.1AE"/>)</li>
        <li>DTLS for UDP‑based encapsulations (<xref target="RFC9147"/>)</li>
        <li>SRv6 HMAC TLV (<xref target="RFC8754"/>)</li>
		<li>NSH MD Type‑1 authentication metadata (<xref target="RFC8300"/>)</li>
      </ul>
	  <t>Operators SHOULD enable authentication when HTS packets traverse untrusted or multi‑tenant environments.</t>
	</section>
	
	<section anchor="integrity-sec" numbered="true" toc="default">
    <name>Integrity of Characteristic Information</name>
	<t>Characteristic Information determines the forwarding behavior of HTS Trigger and Follow‑up packets.</t>
	<t>
	To prevent mis‑routing or mis‑injection, operators should use integrity mechanisms provided
	by the underlying transport encapsulation (e.g., IPsec AH/ESP, MACsec, NSH MD‑Type 1 authentication metadata).
	These mechanisms help ensure that Characteristic Information is not modified in transit.
	</t>
	<t>
	HTS nodes perform validation of Characteristic Information as part of normal
	HTS packet processing (<xref target="theory-operation"/>). Integrity protection
	at the transport layer complements this validation by preventing unauthorized
	modification of fields that influence forwarding behavior.
	</t>
	</section>
	
	<section anchor="integrity-data-sec" numbered="true" toc="default">
    <name>Integrity of Telemetry Data</name>
	<t>
	HTS does not define new integrity mechanisms for telemetry data.
	Telemetry Data TLVs MAY be protected by existing OAM integrity mechanisms, such as:
	</t>
	<ul spacing="normal">
        <li>IPsec AH (<xref target="RFC4303"/>)/ESP (<xref target="RFC4302"/>) for IPv4 and IPv6</li>
        <li>MACsec for Ethernet (<xref target="IEEE-802.1AE"/>)</li>
        <li>DTLS for UDP‑based encapsulations (<xref target="RFC9147"/>)</li>
        <li>SRv6 HMAC TLV (<xref target="RFC8754"/>)</li>
		<li>NSH metadata integrity (<xref target="RFC9145"/>)</li>
      </ul>
	</section>
	
	<section anchor="node-authentication-sec" numbered="true" toc="default">
    <name>Authentication of HTS Nodes</name>
	<t>HTS nodes SHOULD be authenticated using mechanisms appropriate to the deployment environment, such as:</t>
	<ul spacing="normal">
        <li>control‑plane authentication (e.g., TLS, SSH, NETCONF/RESTCONF security)</li>
        <li>routing‑protocol authentication (e.g., OSPFv3 authentication, BGP TTL security)</li>
        <li>domain‑level trust models (e.g., SR domain trust, NSH SFC domain trust)</li>
      </ul>
	  <t>Authentication of HTS nodes ensures that Trigger and Follow‑up packets originate only from authorized devices.</t>
	</section>
	
	</section>
	
    <section anchor="iana-considerations" numbered="true" toc="default">
      <name>IANA Considerations</name>
	  <t>
	    This document requests IANA to make several allocations and create registries associated 
		with HTS. HTS also defines a new IOAM Option-Type, which must be allocated from
		the existing IOAM Option Types registry established by <xref target="RFC9197"/>.
		HTS does not modify any other IOAM registries.
	  </t>
	  
      <section anchor="ioam-option-type-sec" numbered="true" toc="default">
        <name>IOAM Option-Type for HTS</name>
		<t>
		This document defines a new IOAM HTS Option-Type, which instructs
		IOAM-capable nodes to perform HTS processing when operating within an IOAM domain.
		The IOAM HTS Option-Type is an alternative IOAM behavior, similar in nature to IOAM‑Trace,
		IOAM‑DEX, and IOAM Proof‑of‑Transit.
		</t>
		<t>
		IANA is requested to allocate a new value from the “IOAM Option Types”
		registry established by  <xref target="RFC9197"/>. IANA is requested
		to allocate a new code point as listed in <xref target="ioam-option-hts-tbl" />.
        </t>
        <table anchor="ioam-option-hts-tbl" align="center">
          <name>IOAM Option-Type for HTS</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Name</th>
              <th align="center">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">TBA1</td>
              <td align="center">IOAM Hybrid Two-Step (HTS) Option-Type</td>
              <td align="left">Instructs IOAM nodes to apply HTS processing to the packet within the IOAM domain</td>
              <td align="left">This&nbsp;document</td>
            </tr>
          </tbody>
        </table>
      </section>
	  
	  <section anchor="iana-hts-registry" numbered="true" toc="default">
        <name>HTS Registry Group and HTS Registries</name>
		<t>IANA is requested to create "Hybrid Two-Step" registry group.</t>
	  
      <section anchor="iana-hts-tlv-registry" numbered="true" toc="default">
        <name>HTS TLV Registry</name>
        <t>    
   IANA is requested to create the HTS TLV Type registry in the "Hybrid Two-Step" registry group.
    All code points in the range 1 through 175 in this registry shall be allocated
    according to the "IETF Review" procedure specified in <xref target="RFC8126" />.
    Code points in the range
     176 through 239 in this registry shall be allocated according to the "First Come First Served" procedure
     specified in <xref target="RFC8126" />.
         The remaining code points are allocated according to <xref target="iana-hts-type-tbl" />:
        </t>
        <table anchor="iana-hts-type-tbl" align="center">
          <name>HTS TLV Type Registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="center">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="center">Reserved</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1 - 175</td>
              <td align="center">Unassigned</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">176 - 239</td>
              <td align="center">Unassigned</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">240 - 251</td>
              <td align="center">Experimental</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">252 - 254</td>
              <td align="center">Private Use</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="center">Reserved</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
	  
      <section anchor="iana-hts-sub-tlv-registry" numbered="true" toc="default">
        <name>HTS Sub-TLV Type Sub-registry</name>
        <t>
   IANA is requested to create the HTS sub-TLV Type sub-registry as part of the HTS TLV Type registry.
    All code points in the range 1 through 175 in this registry shall be allocated
    according to the "IETF Review" procedure specified in <xref target="RFC8126" />.
    Code points in the range
     176 through 239 in this registry shall be allocated according to the "First Come First Served" procedure
     specified in <xref target="RFC8126" />.
         The remaining code points are allocated according to <xref target="iana-hts-sub-type-tbl" />:
        </t>
        <table anchor="iana-hts-sub-type-tbl" align="center">
          <name>HTS Sub-TLV Type Sub-registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="center">Description</th>
              <th align="left">TLV Used</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="center">Reserved</td>
              <td align="center">None</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="center">HMAC</td>
              <td align="center">Any</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">2 - 175</td>
              <td align="center">Unassigned</td>
              <td align="center"/>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">176 - 239</td>
              <td align="center">Unassigned</td>
              <td align="center"/>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">240 - 251</td>
              <td align="center">Experimental</td>
              <td align="center"/>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">252 - 254</td>
              <td align="center">Private Use</td>
              <td align="center"/>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="center">Reserved</td>
              <td align="center">None</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
      </section>
	  
      <section anchor="iana-sha-type-reg" numbered="true" toc="default">
        <name>HMAC Type Sub-registry</name>
        <t>
   IANA is requested to create the HMAC Type sub-registry as part of the HTS TLV Type registry.
    All code points in the range 1 through 127 in this registry shall be allocated
    according to the "IETF Review" procedure specified in <xref target="RFC8126" />.
    Code points in the range
     128 through 239 in this registry shall be allocated according to the "First Come First Served" procedure
     specified in <xref target="RFC8126" />.
         The remaining code points are allocated according to <xref target="iana-sha-type-tbl" />:
        </t>
        <table anchor="iana-sha-type-tbl" align="center">
          <name>HMAC Type Sub-registry</name>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="center">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="center">Reserved</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="center">HMAC-SHA-256 16 octets long</td>
              <td align="left">This&nbsp;document</td>
            </tr>
            <tr>
              <td align="left">2 - 127</td>
              <td align="center">Unassigned</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">128 - 239</td>
              <td align="center">Unassigned</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">240 - 249</td>
              <td align="center">Experimental</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">250 - 254</td>
              <td align="center">Private Use</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">255</td>
              <td align="center">Reserved</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
		</section>
		
		<section anchor="iana-error-code-reg" numbered="true" toc="default">
        <name>HTS Error Codes Registry</name>
		<t>IANA is requested to create in the HTS registry group the new Error Codes registry as follows:</t>
		<ul empty="true" spacing="normal">
        <li>Registry Name: Error Codes</li>
        <li>Assignment Policy:</li>
        <li>0 - 247 - IETF Review</li>
        <li>248 - 251 - Experimental Use (Reserved, not to be assigned)</li>
        <li>252 - 255 - Private Use (Reserved, not to be assigned)</li>
        </ul>
		<table anchor="iana-hts-error-codes-tbl" align="center">
          <name>Error Codes</name>
          <thead>
            <tr>
              <th align="center">Value</th>
			  <th align="center">Name</th>
              <th align="center">Description</th>
              <th align="center">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center">0</td>
              <td align="left">No Error</td>
			  <td align="left">No error detected</td>
              <td align="left">This document</td>
            </tr>
                     <tr>
              <td align="center">1</td>
              <td align="left">Invalid HTS Shim</td>
			  <td align="left">HTS shim validation failed</td>
              <td align="left">This document</td>
            </tr>
			<tr>
              <td align="center">2</td>
              <td align="left">Invalid Telemetry Data TLV</td>
			  <td align="left">TLV malformed, inconsistent, or unsupported</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">3</td>
              <td align="left">HMAC Verification Failure</td>
			  <td align="left">HMAC TLV present but authentication failed</td>
              <td align="left">This document</td>
            </tr>
			<tr>
              <td align="center">4</td>
              <td align="left">Follow‑up Not Received</td>
			  <td align="left">HTS Collection Timer expired before final Follow‑up packet</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="center">5</td>
              <td align="left">Local Processing Error</td>
			  <td align="left">Internal Egress processing error</td>
              <td align="left">This document</td>
            </tr>

			<tr>
              <td align="left">6 - 247</td>
			  <td></td>
              <td align="center">Unassigned</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">248-251</td>
			  <td></td>
              <td align="center">Reserved for Experimental Use</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">252-255</td>
			  <td></td>
              <td align="center">Reserved for Private Use</td>
              <td align="left">This document</td>
            </tr>
          </tbody>
        </table>
		</section>
		
      </section>
    </section>
	
    <section anchor="security" numbered="true" toc="default">
      <name>Security Considerations</name>
      <t>
	HTS introduces new packet types (Trigger and Follow‑up) and new metadata
	(HTS shim, Telemetry Data TLVs, and optional HTS HMAC TLV). This section
	describes the security considerations associated with processing these packets and metadata.
	HTS does not modify the security properties of the underlying transport encapsulation.
      </t>

	<section anchor="sec-charecteristic-info-sec" numbered="true" toc="default">
      <name>Secuiring the Integrity of Characteristic Information</name>
	  <t>Characteristic Information determines the forwarding behavior of HTS Trigger and Follow‑up packets.</t>
	  <t>If Characteristic Information is modified, mis‑routed, or mis‑injected, HTS packets may:</t>
	  <ul spacing="normal">
        <li>traverse unintended paths,</li>
        <li>fail to correlate at the collector,</li>
        <li>produce incomplete or misleading telemetry.</li>
      </ul>
	  <t>
	  HTS nodes MUST validate Characteristic Information as described in <xref target="theory-operation"/>.
	  Packets whose Characteristic Information fails validation MUST be discarded.
	  Operators SHOULD protect Characteristic Information using authentication or
	  integrity mechanisms provided by the underlying transport encapsulation
	  (e.g., IPsec AH/ESP, MACsec, NSH MD‑Type 1 authentication metadata).
	  </t>
	  </section>
	  
	  <section anchor="sec-shim-telemetry-sec" numbered="true" toc="default">
      <name>Integrity of HTS Shim and Telemetry Data</name>
	  <t>HTS Follow‑up packets carry telemetry data contributed by intermediate nodes.</t>
	  <t>An attacker who modifies telemetry data or HTS shim fields could:</t>
	  <ul spacing="normal">
        <li>falsify performance measurements,</li>
        <li>hide congestion or failures,</li>
        <li>inject misleading operational information,</li>
		<li>disrupt correlation at the collector.</li>
      </ul>
	  <t>Operators SHOULD enable integrity protection when telemetry is used for security‑sensitive applications.</t>
	  <t>HTS defines an optional HTS HMAC TLV (<xref target="hmac-tlv-sec"/>) that provides integrity protection
	  for HTS shim fields and Telemetry Data TLVs.</t>
	  <t>When present, HTS nodes MUST validate the HMAC TLV before processing the packet.</t>
	  <t>Packets whose HMAC validation fails MUST be discarded.</t>
	  </section>
	  
	  <section anchor="confidentiality-sec" numbered="true" toc="default">
      <name>Confidentiality of Telemetry Data</name>
	  <t>HTS telemetry may include information about:</t>
	  <ul spacing="normal">
        <li>node performance,</li>
        <li>queue depth,</li>
        <li>buffer occupancy,</li>
		<li>interface load,</li>
		<li>processing delays.</li>
      </ul>
	  <t>This information may be sensitive in multi‑tenant or shared environments.</t>
	  <t>Operators SHOULD protect telemetry export channels (e.g., IPFIX, gRPC, NETCONF/RESTCONF)
	  using authentication and encryption mechanisms appropriate to the deployment environment.</t>
	  <t>HTS does not define confidentiality mechanisms for telemetry data carried in Follow‑up packets.</t>
	  <t>Operators SHOULD rely on transport‑layer confidentiality mechanisms (e.g., IPsec ESP, MACsec, DTLS)
	  when confidentiality is required.</t>
	  </section>
	  
	  <section anchor="replay-protection-sec" numbered="true" toc="default">
      <name>Replay Protection</name>
	  <t>Replay of HTS Follow‑up packets could cause:</t>
	  <ul spacing="normal">
        <li>duplicate telemetry records,</li>
        <li>misleading performance measurements,</li>
        <li>incorrect correlation at collectors.</li>
      </ul>
	  <t>HTS shim Sequence Numbers provide basic replay detection.</t>
	  <t>Egress HTS nodes and Collectors SHOULD discard Follow‑up packets whose Sequence Numbers are stale
	  or inconsistent with previously received packets.</t>
	  <t>When the HTS HMAC TLV is used, replayed packets will fail HMAC validation if the HMAC includes a nonce or timestamp.</t>
	  </section>
	  
	  <section anchor="mcast-secuirity-sec" numbered="true" toc="default">
      <name>Multicast Security Considerations</name>
	  <t>In multicast deployments:</t>
	  <ul spacing="normal">
        <li>Trigger packets fan out across multiple branches,</li>
        <li>Follow‑up packets are unicast back to the collector,</li>
        <li>each branch produces its own Follow‑up packet.</li>
      </ul>
	  <t>Attackers could attempt to inject false Follow‑up packets from unauthorized multicast receivers.</t>
	  <t>Egress HTS nodes MUST validate Characteristic Information and HTS shim fields
	  and MUST validate the HTS HMAC TLV when present before processing the Follow-up packets.</t>
	  <t>Operators SHOULD ensure that multicast receivers are authenticated and authorized to participate in HTS measurement.</t>
	  </section>
	  
	  <section anchor="ddos-sec" numbered="true" toc="default">
      <name>Denial‑of‑Service Considerations</name>
	  <t>HTS introduces additional packet processing at ingress, intermediate, and egress nodes.</t>
	  <t>An attacker could attempt to overload HTS nodes by:</t>
	  <ul spacing="normal">
        <li>sending excessive Trigger packets,</li>
        <li>injecting malformed Follow‑up packets,</li>
        <li>forcing repeated timer expirations,</li>
		<li>causing excessive Full‑flag events.</li>
      </ul>
	  <t>HTS ingress nodes MUST provide a mechanism to rate‑limit HTS Trigger packets and
	  SHOULD apply local policies to prevent excessive resource consumption.</t>
	  <t>Collectors SHOULD detect abnormal HTS packet rates and alert operators.</t>
	  </section>
	  
    </section>
    <section numbered="true" toc="default">
      <name>Acknowledgments</name>
      <t>
         Authors express their gratitude and appreciation to Joel Halpern
         for the most helpful and insightful discussion on the applicability of
         HTS in a Service Function Chaining domain. Also, the authors thank Bjørn Ivar Teigen
         for the discussion about ensuring proper correlation between generated telemetry information
         and an HTS Follow-up packet.
         And a special thank you to Xiao Min for thorough review and thoughtful suggestions that helped in improving the document.
      </t>
    </section>
  </middle>
  
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2104.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9197.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9326.xml"/>
      </references>
      
      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4302.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7799.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8169.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9341.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9342.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4868.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8300.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2992.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.1191.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2681.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9940.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8799.xml"/>
        <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9147.xml"/>
		<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8754.xml"/>
		<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.9145.xml"/>

        <reference anchor="P4.INT">
          <front>
            <title>In-band Network Telemetry (INT)</title>
            <author>
              <organization/>
            </author>
            <date month="November" year="2020"/>
          </front>
          <seriesInfo name="P4.org" value="Specification"/>
        </reference>
		
		<reference anchor="IEEE-802.1AE" target="https://ieee.org">
		  <front>
			<title>IEEE Standard for Local and metropolitan area networks-Media Access Control (MAC) Security</title>
			<author>
			  <organization>IEEE</organization>
			</author>
			<date year="2018" month="August"/>
		  </front>
		  <seriesInfo name="IEEE Std" value="802.1AE-2018"/>
		  <seriesInfo name="DOI" value="10.1109/IEEESTD.2018.8447385"/>
		</reference>
      </references>
    </references>
  </back>
</rfc>
