<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.19 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-fft-architecture-00" category="std" consensus="true" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Fast Fault Tolerance Architecture">Fast Fault Tolerance Architecture for Programmable Datacenter Networks</title>
    <seriesInfo name="Internet-Draft" value="draft-fft-architecture-00"/>
    <author initials="D." surname="Li" fullname="Dan Li">
      <organization>Tsinghua University</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>tolidan@tsinghua.edu.cn</email>
      </address>
    </author>
    <author initials="K." surname="Gao" fullname="Kaihui Gao">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>gaokh@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="S." surname="Wang" fullname="Shuai Wang">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>wangshuai@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="L." surname="Chen" fullname="Li Chen">
      <organization>Zhongguancun Laboratory</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>lichen@zgclab.edu.cn</email>
      </address>
    </author>
    <author initials="X." surname="Geng" fullname="Xuesong Geng">
      <organization>Huawei</organization>
      <address>
        <postal>
          <city>Beijing</city>
          <country>China</country>
        </postal>
        <email>gengxuesong@huawei.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="21"/>
    <area>General [REPLACE]</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <abstract>
      <?line 59?>

<t>This document introduces a fast rerouting architecture for enhancing network resilience through rapid failure detection and swift traffic rerouting within the programmable data plane, leveraging in-band network telemetry and source routing. Unlike traditional methods that rely on the control plane and face significant delays in traffic rerouting, the proposed architecture utilizes a white-box modeling of the data plane to distinguish and analyze packet losses accurately, enabling immediate identification for link failures (including black-hole and gray failures). By utilizing real-time telemetry and SR-based rerouting, the proposed solution significantly reduces rerouting times to a few milliseconds, offering a substantial improvement over existing practices and marking a pivotal advancement in fault tolerance of datacenter networks.</t>
    </abstract>
  </front>
  <middle>
    <?line 63?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In the rapidly evolving landscape of network technologies, ensuring the resilience and reliability of data transmission has become paramount. Traditional approaches to network failure detection and rerouting, heavily reliant on the control plane, often suffer from significant delays due to the inherent latency in failure notification, route learning, and route table updates. These delays can severely impact the performance of time-sensitive applications, making it crucial to explore more efficient methods for failure detection and traffic rerouting. Fast fault tolerance (FFT) architecture leverages the capabilities of the programmable data plane to significantly reduce the time required to detect link failures and reroute traffic, thereby enhancing the overall robustness of datacenter networks.</t>
      <t>FFT architecture stands at the forefront of innovation by integrating in-band network telemetry (INT <xref target="RFC9232"/>) with source routing (SR <xref target="RFC8402"/>) to facilitate rapid path switching directly within the data plane. Unlike traditional schemes that treat the data plane as a "black box" and struggle to distinguish between different types of packet losses, our approach adopts a "white box" modeling of the data plane's packet processing logic. This allows for a precise analysis of packet loss types and the implementation of targeted statistical methods for failure detection. By deploying packet counters at both ends of a link and comparing them periodically, FFT can identify fault-induced packet losses with unprecedented speed and accuracy.</t>
      <t>Furthermore, by pre-maintaining a path information table and utilizing SR (e.g., SRv6 <xref target="RFC8986"/> and SR-MPLS <xref target="RFC8660"/>), FFT architecture enables the sender to quickly switch traffic to alternative paths without the need for control plane intervention. This not only circumvents the delays associated with traditional control plane rerouting but also overcomes the limitations of data plane rerouting schemes that cannot pre-prepare for all failure scenarios. The integration of INT allows for real-time failure notification, making it possible to control traffic recovery times within a few milliseconds, significantly faster than conventional methods. This document details the principles, architecture, and operational mechanisms of FFT, aiming to contribute to the development of more resilient and efficient datacenter networks.</t>
      <section anchor="requirements-language">
        <name>Requirements Language</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

</section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl newline="true">
        <dt>Packet Counters:</dt>
        <dd>
          <t>The counter or data structure used to count the number of passed packets in a given time interval.</t>
        </dd>
        <dt>Path Information Table:</dt>
        <dd>
          <t>The table maintained by the sender that contains information about the available paths and their associated metrics.</t>
        </dd>
        <dt>Upstream Meter (UM):</dt>
        <dd>
          <t>The meter used to measure the number of packets passing through the upstream egress port of a link.</t>
        </dd>
        <dt>Downstream Meter (DM):</dt>
        <dd>
          <t>The meter used to measure the number of packets passing through the downstream ingress port of a link.</t>
        </dd>
        <dt>FDM-U:</dt>
        <dd>
          <t>The FDM agent deployed on the upstream switch, it is used to generate probe packets to collect UM and DM.</t>
        </dd>
        <dt>FDM-D:</dt>
        <dd>
          <t>The FDM agent deployed on the downstream switch, it is used to generate response packets to feedback UM and DM.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture-overview">
      <name>Architecture Overview</name>
      <figure anchor="fft-architecture">
        <name>Fast Fault Tolerance Architecture.</name>
        <artwork><![CDATA[
              4.SR-based Rerouting     Switch#3                  
                       +----------> +------------+               
                       |     +------|            |---------+     
    Endhost#1          |     |      +------------+         |     
+---------------+      |     |                        Switch#4   
|               |------+     |                      +-----------+
| +-----------+ |        Switch#1                   |+--------- |
| |  3. Path  | |      +----------+                 ||  Packet ||
| | Management| +------|          |                 || Counters||
| | Mechanism | |      +----------+                 ||in Inport||
| +-----------+ |<------+    |                      |+---------+|
|               |       |    |         Switch#2     +-----------+
+---------------+       |    |      +------------+         ^ |   
                        |    |      |+----------+|         | |   
                        |    |      ||   Packet ||         | |   
                        |    +------||  Counters||---------+ |   
                        +-----------||in Outport|| <---------+   
 2.Failure Notification Mechanism   |+----------+|      1.FDM    
                                    +------------+               
]]></artwork>
      </figure>
      <t>Traditional network failure detection methods generate probe packets through the control plane (such as BFD <xref target="RFC5880"/>), treating the network data plane as a "black box". If there is no response to a probe, it is assumed that a link failure has occurred, without the ability to distinguish between fault-induced packet loss and non-fault packet loss (such as congestion loss, policy loss, etc.). FFT models the packet processing logic in the data plane as a white box, analyzing all types of packet loss and designing corresponding statistical methods. As shown in <xref target="fft-architecture"/>, FFT deploys packet counters at both ends of a link, which tally the total number of packets passing through as well as the number of non-fault packet losses, periodically comparing the two sets of counters to precisely measure fault-induced packet loss. This method operates entirely in the data plane, with probe packets directly generated by programmable network chips, thus allowing for a higher frequency of probes and the ability to detect link failures within a millisecond.</t>
      <t>After detecting a link failure, FFT enables fast path switching for traffic in the data plane by combining INT with source routing. As shown in <xref target="fft-architecture"/>, after a switch detects a link failure, it promptly notifies the sender of the failure information using INT technology; the sender then quickly switches the traffic to another available path using source routing, based on a path information table maintained in advance. All processes of this method are completed in the data plane, allowing traffic recovery time to be controlled within a few RTTs (on the order of milliseconds).</t>
    </section>
    <section anchor="fast-fault-tolerance-architecture">
      <name>Fast Fault Tolerance Architecture</name>
      <t>The fast fault tolerance architecture involves accurately detecting link failures within the network, distinguishing between packet losses caused by failures and normal packet losses, and then having switches convey failure information back to the end hosts via INT <xref target="RFC9232"/>. The end hosts, in turn, utilize SR (e.g., SRv6 <xref target="RFC8986"/> and SR-MPLS <xref target="RFC8660"/>) to reroute traffic. Therefore, the fast fault tolerance architecture comprises three processes.</t>
      <section anchor="failure-detection-mechanism">
        <name>Failure Detection Mechanism</name>
        <figure anchor="detection">
          <name>Failure Detection Mechanism: counter deployment locations and request generation.</name>
          <artwork><![CDATA[
         Upstream Switch                   Downstream Switch        
+--------------------------------+  +------------------------------+
|+--------------+  +------------+|  |+-----------------+ +--------+|
||         +---+|  |+--+        ||  ||        +--++---+| |        ||
|| Ingress |FDM||->||UM| Egress ||  || Ingress|DM||FDM|+>| Egress ||
||Pipeline | -U||  ||  |Pipeline||  ||Pipeline|  || -D|| |Pipeline||
||         +---+|  |+--+        ||  ||        +--++---+| |        ||
|+--------------+  +------------++->|+-----------------+ +--------+|
|          +---+    +---+--+     |  |  +---+--+--+                 |
|          |Req|->  |Req|UM|->   |  |  |Req|UM|DM|--->             |
|          +---+    +---+--+     |  |  +---+--+--+                 |
|                                |  |      +----+--+--+            |
|                                |  | <----|Resp|UM|DM|            |
|                                |  |      +----+--+--+            |
+--------------------------------+  +------------------------------+
]]></artwork>
        </figure>
        <t>This document designs a failure detection mechanism (FDM) based on packet counters, leveraging the programmable data plane. As shown in <xref target="detection"/>, this mechanism employs counters at both ends of a link to tally packet losses. So adjacent switches can collaborate to detect failures of any type (including gray failures), and the mechanism is capable of accurately distinguishing non-failure packet losses, thus avoiding false positive.</t>
        <section anchor="counter-deployment">
          <name>Counter Deployment</name>
          <t>FDM places a pair of counter arrays on two directly connected programmable switches to achieve rapid and accurate failure detection. <xref target="detection"/> illustrates the deployment locations of these counters, which include two types of meter arrays: (1) the Upstream Meter (UM) is positioned at the beginning of the egress pipeline of the upstream switch; (2) the Downstream Meter (DM) is located at the end of the ingress pipeline of the downstream switch. 
Each meter records the number of packets passing through. With this arrangement, the difference between UM and DM represents the number of packets lost on the link. It is important to note that packets dropped due to congestion in the switch buffers are not counted, as the counters do not cover the buffer areas.</t>
          <t>Furthermore, to exclude packet losses caused by non-failure reasons, each meter array includes some counters to tally the number of non-failure packet losses (e.g., TTL expiry). Therefore, FDM is capable of accurately measuring the total number of failure-induced packet losses occurring between UM and DM, including losses due to physical device failures (e.g., cable dust or link jitter) and control plane oscillations (e.g., route lookup misses).</t>
          <figure anchor="full-deployment">
            <name>FDM (UM and DM) deployment on all network links.</name>
            <artwork><![CDATA[
                                               +----------+
                                               | switch#3 |
                                               +-----+    |
         +----------+    +---------------+  +->|DM#2 |    |
         |          |    |         +-----+  |  +-----+    |
         |    +-----+    +-----+   |UM#2 |--+  +----------+
         |    |UM#1 |--->|DM#1 |   +-----+                 
         |    +-----+    +-----+   +-----+                 
         |          |    |         |UM#3 |--+  +----------+       
         | switch#1 |    |switch#2 +-----+  |  +-----+    |
         +----------+    +---------------+  +->|DM#3 |    |
                                               +-----+    |
                                               | switch#4 |
                                               +----------+
]]></artwork>
          </figure>
          <t><xref target="full-deployment"/> illustrates the deployment method of FDM across the entire datacenter network. Similar to the BFD mechanism, FDM needs to cover every link in the network. Therefore, each link in the network requires the deployment of a pair of UM and DM. It is important to note that although only the unidirectional deployment from Switch#1 to Switch#2 is depicted in <xref target="full-deployment"/>, Switch#2 also sends traffic to Switch#1. To monitor the link from Switch#2 to Switch#1, FDM deploys a UM on the egress port of Switch#2 and a DM on the ingress port of Switch#1. Consequently, FDM utilizes two pairs of UM and DM to monitor a bidirectional link.</t>
        </section>
        <section anchor="counter-comparison">
          <name>Counter Comparison</name>
          <t>As shown in <xref target="detection"/>, the FDM agent in the upstream switch (FDM-U) periodically sends request packets to the link's opposite end. These request packets record specific data of UM and DM along the path through the INT mechanism. Upon detecting the request packets, the FDM agent in the downstream switch (FDM-D) immediately modifies them as response packets and bounces them back, allowing the packets containing UM and DM data to return to the FDM-U. Subsequently, the FDM-U processes the response packets and calculates the packet loss rate of the link over the past period. If FDM-U continuously fails to receive a response packet, indicating that either the response or request packets are lost, then FDM-U considers the packet loss rate of that link to be 100%. This can be used to detect black-hole failure in the link. In other scenarios, if the packet loss rate exceeds a threshold (e.g., 5%) for an extended period, FDM-U will mark that outgoing link as failure.</t>
          <figure anchor="batch-sync">
            <name>An example for illustrating the batch synchronization provided by request packets.</name>
            <artwork><![CDATA[
             Upstream Switch           Downstream Switch   
         +----------------------+    +--------------------+
         |    +---+      +---+  |    |    +---+    +---+  |
         | 000|Req|000000|Req|00+--->|0000|Req|0000|Req|0 |
         |    +---+      +---+  |    |    +---+    +---+  |
         +----------------------+    +--------------------+
         Req: INT request packet
         0: data packet
]]></artwork>
          </figure>
          <t>To ensure the correctness of packet loss rate statistics, FDM must ensure that the packets recorded by UM and DM belong to the same batch. Upon closer analysis, it's found that request packets provide native batch synchronization, and FDM only needs to reset the counters upon receiving a request packet and then start counting the new batch. Specifically, since packets between two directly connected ports do not get out of order, the sequence of packets passing through UM and DM is consistent. As shown in <xref target="batch-sync"/>, the request packets serve to isolate different intervals and record the number of packets in the right interval. When such a request packet reaches the downstream switch, the DM records the number of packets for the same interval. Thus, UM and DM count the same batch of packets. However, the loss of request packets would disrupt FDM's batch synchronization. To avoid this, FDM configures active queue management to prevent the dropping of request packets during buffer congestion. If a request packet is still lost, it must be due to a fault.</t>
        </section>
        <section anchor="failure-recovery-detection">
          <name>Failure Recovery Detection</name>
          <t>To ensure stable network operation after failure recovery, FDM also periodically monitors the recovery status of links. This requires the FDM-U to send a batch of test packets, triggering UM and DM to count. Then, the FDM-U sends request packets to collect data from UM and DM. If the link's packet loss rate remains below the threshold for an extended period, FDM-U will mark the link as healthy. To reduce the bandwidth overhead of FDM, considering that the detection of failure recovery is not as urgent as failure detection, FDM can use a lower recovery detection frequency, such as once every second.</t>
        </section>
        <section anchor="an-example">
          <name>An Example</name>
          <t>This section presents an example of how FDM calculates the packet loss rate of a link. Assume that 100 packets pass through the upstream switch UM, which records [100,0], with 0 representing no non-fault-related packet loss. Suppose 8 packets are dropped on the physical link and 2 packets are dropped at the ingress pipeline of the downstream switch due to ACL rules. Then, the DM records [90,2], where 90 represents the number of packets that passed through DM, and 2 represents the number of packets dropped due to non-fault reasons. Finally, by comparing the UM with DM, FDM calculates the packet loss rate of the link as 8% ((100-90-2)/100), rather than 10%.</t>
        </section>
      </section>
      <section anchor="failure-notification-mechanism">
        <name>Failure Notification Mechanism</name>
        <t>Traditional control plane rerouting schemes require several steps after detecting a failure, including failure notification, route learning, and routing table updates, which can take several seconds to modify traffic paths. Data plane rerouting schemes, on the other hand, cannot prepare alternative routes for all possible failure scenarios in advance. To achieve fast rerouting in the data plane, FFT combines INT with source routing to quickly reroute traffic.</t>
        <t>Assume that the sender periodically sends INT probe packets along the path of the traffic to collect fine-grained network information, such as port rates, queue lengths, etc.. After a switch detects a link failure, it promptly notifies the sender of the failure information within the INT probe. 
Specifically, when a probe emitted by an end host is about to be forwarded to an egress link that has failed, FFT will immediately bounce the probe back within the data plane and mark the failure status in the probe. Finally, the probe with the failure status will return to the sender.</t>
      </section>
      <section anchor="path-management-mechanism">
        <name>Path Management Mechanism</name>
        <t>To enable sender-driven fast rerouting, the sender needs to maintain a path information table in advance so that it can quickly switch to another available path upon detecting network failure. Specifically, within the transport layer protocol stack of the sender, this document designs a Path Management Mechanism (PMM), which periodically probes all available paths to other destinations. Of course, this information can also be obtained through other means, such as from an SDN controller. Then, for a new flow, the sender will randomly select an optimal available path from the path information table and use source routing (e.g., SRv6 <xref target="RFC8986"/> and SR-MPLS <xref target="RFC8660"/>) to control the path of this flow. Similarly, the sender also controls the path of the INT probes using source routing, allowing them to probe the path taken by the traffic flow. The fine-grained network information brought back by these probes can be used for congestion control, such as HPCC <xref target="hpcc"/>.</t>
        <t>When the above FFM mechanism is effective, and the INT information makes the sender aware of a failure on the path, the sender will immediately mark this path as faulty in the path information table and choose another available path, accordingly modifying the source routing headers of both the data packets and the INT probes. To promptly understand the availability of other paths, PMM will periodically probe other paths and update the path information table, including failure entering and recovering.</t>
      </section>
    </section>
    <section anchor="Security">
      <name>Security Considerations</name>
      <artwork><![CDATA[
TBD.
]]></artwork>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <artwork><![CDATA[
This document makes no request of IANA.

Note to RFC Editor: this section may be removed on publication as an
RFC.
]]></artwork>
    </section>
    <section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <artwork><![CDATA[
TBD.
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9232">
          <front>
            <title>Network Telemetry Framework</title>
            <author fullname="H. Song" initials="H." surname="Song"/>
            <author fullname="F. Qin" initials="F." surname="Qin"/>
            <author fullname="P. Martinez-Julia" initials="P." surname="Martinez-Julia"/>
            <author fullname="L. Ciavaglia" initials="L." surname="Ciavaglia"/>
            <author fullname="A. Wang" initials="A." surname="Wang"/>
            <date month="May" year="2022"/>
            <abstract>
              <t>Network telemetry is a technology for gaining network insight and facilitating efficient and automated network management. It encompasses various techniques for remote data generation, collection, correlation, and consumption. This document describes an architectural framework for network telemetry, motivated by challenges that are encountered as part of the operation of networks and by the requirements that ensue. This document clarifies the terminology and classifies the modules and components of a network telemetry system from different perspectives. The framework and taxonomy help to set a common ground for the collection of related work and provide guidance for related technique and standard developments.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9232"/>
          <seriesInfo name="DOI" value="10.17487/RFC9232"/>
        </reference>
        <reference anchor="RFC8986">
          <front>
            <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="P. Camarillo" initials="P." role="editor" surname="Camarillo"/>
            <author fullname="J. Leddy" initials="J." surname="Leddy"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="S. Matsushima" initials="S." surname="Matsushima"/>
            <author fullname="Z. Li" initials="Z." surname="Li"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>The Segment Routing over IPv6 (SRv6) Network Programming framework enables a network operator or an application to specify a packet processing program by encoding a sequence of instructions in the IPv6 packet header.</t>
              <t>Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
              <t>This document defines the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors that enables the creation of interoperable overlays with underlay optimization.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8986"/>
          <seriesInfo name="DOI" value="10.17487/RFC8986"/>
        </reference>
        <reference anchor="RFC8660">
          <front>
            <title>Segment Routing with the MPLS Data Plane</title>
            <author fullname="A. Bashandy" initials="A." role="editor" surname="Bashandy"/>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." surname="Previdi"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="December" year="2019"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source-routing paradigm. A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with an SR header. In the MPLS data plane, the SR header is instantiated through a label stack. This document specifies the forwarding behavior to allow instantiating SR over the MPLS data plane (SR-MPLS).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8660"/>
          <seriesInfo name="DOI" value="10.17487/RFC8660"/>
        </reference>
        <reference anchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author fullname="C. Filsfils" initials="C." role="editor" surname="Filsfils"/>
            <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
            <author fullname="L. Ginsberg" initials="L." surname="Ginsberg"/>
            <author fullname="B. Decraene" initials="B." surname="Decraene"/>
            <author fullname="S. Litkowski" initials="S." surname="Litkowski"/>
            <author fullname="R. Shakir" initials="R." surname="Shakir"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>Segment Routing (SR) leverages the source routing paradigm. A node steers a packet through an ordered list of instructions, called "segments". A segment can represent any instruction, topological or service based. A segment can have a semantic local to an SR node or global within an SR domain. SR provides a mechanism that allows a flow to be restricted to a specific topological path, while maintaining per-flow state only at the ingress node(s) to the SR domain.</t>
              <t>SR can be directly applied to the MPLS architecture with no change to the forwarding plane. A segment is encoded as an MPLS label. An ordered list of segments is encoded as a stack of labels. The segment to process is on the top of the stack. Upon completion of a segment, the related label is popped from the stack.</t>
              <t>SR can be applied to the IPv6 architecture, with a new type of routing header. A segment is encoded as an IPv6 address. An ordered list of segments is encoded as an ordered list of IPv6 addresses in the routing header. The active segment is indicated by the Destination Address (DA) of the packet. The next active segment is indicated by a pointer in the new routing header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8402"/>
          <seriesInfo name="DOI" value="10.17487/RFC8402"/>
        </reference>
        <reference anchor="RFC5880">
          <front>
            <title>Bidirectional Forwarding Detection (BFD)</title>
            <author fullname="D. Katz" initials="D." surname="Katz"/>
            <author fullname="D. Ward" initials="D." surname="Ward"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>This document describes a protocol intended to detect faults in the bidirectional path between two forwarding engines, including interfaces, data link(s), and to the extent possible the forwarding engines themselves, with potentially very low latency. It operates independently of media, data protocols, and routing protocols. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5880"/>
          <seriesInfo name="DOI" value="10.17487/RFC5880"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="hpcc" target="https://datatracker.ietf.org/doc/draft-miao-ccwg-hpcc-info/">
          <front>
            <title>Inband Telemetry for HPCC++</title>
            <author>
              <organization/>
            </author>
            <date year="2024"/>
          </front>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
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
Q0DzUQAA

-->

</rfc>
