<?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.29 (Ruby 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-karboubi-spring-sidlist-optimized-cs-sr-03" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.29.0 -->
  <front>
    <title abbrev="CS-SR Policies with Optimized SID List">Circuit Style Segment Routing Policies with Optimized SID List Depth</title>
    <seriesInfo name="Internet-Draft" value="draft-karboubi-spring-sidlist-optimized-cs-sr-03"/>
    <author initials="A." surname="Karboubi" fullname="Amal Karboubi" role="editor">
      <organization>Ciena</organization>
      <address>
        <email>akarboub@ciena.com</email>
      </address>
    </author>
    <author initials="C." surname="Alaettinoglu" fullname="Cengiz Alaettinoglu">
      <organization>Ciena</organization>
      <address>
        <email>cengiz@ciena.com</email>
      </address>
    </author>
    <author initials="H." surname="Shah" fullname="Himanshu Shah" role="editor">
      <organization>Ciena</organization>
      <address>
        <email>hshah@ciena.com</email>
      </address>
    </author>
    <author initials="S." surname="Sivalaban" fullname="Siva Sivabalan">
      <organization>Ciena</organization>
      <address>
        <email>ssivabal@ciena.com</email>
      </address>
    </author>
    <author initials="T." surname="Defillipi" fullname="Todd Defillipi">
      <organization>Ciena</organization>
      <address>
        <email>todd@ciena.com</email>
      </address>
    </author>
    <author initials="P." surname="Maheshwari" fullname="Praveen Maheshwari">
      <organization>Airtel India</organization>
      <address>
        <email>Praveen.Maheshwari@airtel.com</email>
      </address>
    </author>
    <date year="2025" month="June" day="27"/>
    <area>General</area>
    <workgroup>SPRING Working Group</workgroup>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
    <abstract>
      <?line 116?>

<t>Service providers require delivery of circuit-style transport services in a segment routing based IP network.
This document introduces a solution that supports circuit style segment routing policies that allows usage of optimized SID lists (i.e. SID List that may contain non-contiguous node SIDs as instructions) and describes mechanisms that would allow such encoding to still honor all the requirements of the circuit style policies notably traffic engineering and bandwidth requirements.</t>
    </abstract>
  </front>
  <middle>
    <?line 121?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Service providers require delivery of circuit-style transport services in a segment routing based IP network. <xref target="I-D.ietf-spring-cs-sr-policy"/> introduces a solution that supports circuit style SR policies. However, the solution mandates using a fully specified SID list where the path is encoded using persistent or manually configured adjacency SIDs. Using a fully specified SID list causes a very large segment stack that may not be feasible for low-end edge devices often found in access networks.</t>
      <t>This document presents a solution that removes the fully specified SID list requirement while still maintaining the key features presented in <xref target="I-D.ietf-spring-cs-sr-policy"/>. It enables use of compressed SID list (i.e. allows the use of node SIDs) in circuit-style SR policies.</t>
      <t><xref target="I-D.ietf-spring-cs-sr-policy"/> defines circuit-style SR as an SR policy with the following characteristics:</t>
      <ul spacing="normal">
        <li>
          <t>Persistent end-to-end traffic engineered paths that provide predictable and identical latency in both directions</t>
        </li>
        <li>
          <t>Strict bandwidth commitment per path to ensure no impact on the Service Level Agreement (SLA) due to changing network load from other services</t>
        </li>
        <li>
          <t>End-to-end protection (&lt;50msec protection switching) and restoration mechanisms</t>
        </li>
        <li>
          <t>Monitoring and maintenance of path integrity</t>
        </li>
        <li>
          <t>Data plane remaining up while control plane is down</t>
        </li>
      </ul>
      <t>Note that for some service providers the bidirectional co-routed paths may not be necessary.</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>
      <t>SID : Segment Identifier</t>
      <t>SLA : Service Level Agreement</t>
      <t>SR : Segment Routing</t>
      <t>CS-SR : Circuit-Style Segment Routing</t>
      <t>PCE : Path Computation Element</t>
      <t>PCEP : Path Computation Element Communication Protocol</t>
    </section>
    <section anchor="problem-statement-issues-with-sid-list-compression">
      <name>Problem statement: Issues with SID list compression</name>
      <t>A PCE computes a path for the service according to the network state and available capacity at that time. These paths are referred to as intended paths. It then compresses the intended path into SIDs using a combination of node and adjacency SIDs as defined in SR architecture <xref target="RFC8402"/> .
Nodes in the network forward packet to node SID N by using their IGP (or flex-algo) shortest paths to N. This is referred to as path expansion. At the time of installing the compressed SID list, this expansion and the intended path are identical.</t>
      <t>However, network changes, particularly link and/or node failures and repairs may cause the intended path and this path expansion to deviate resulting in a service's traffic to use resources on a path that the PCE did not reserve any bandwidth on, causing service degradation for both this service and the other services on that path.</t>
      <t>Both the failure and repair cases are illustrated using the example network topology of figure 1. An SR policy from node A to node Z with two diverse traffic engineered candidate paths was computed by PCE and signaled to head end node A resulting in the following intended paths and their respective compressed SID List:</t>
      <ul spacing="normal">
        <li>
          <t>Candidate path 1:  intended path A-B, B-D, D-E, E-Z links and compressed as SID list B, E, Z</t>
        </li>
        <li>
          <t>Candidate path 2: intended path  A-C, C-D, D-F, F-Z links and compressed as SID list C, F, Z</t>
        </li>
      </ul>
      <figure anchor="figure1">
        <name>SR policy with 2 diverse candidate paths</name>
        <artwork alt="SR Policy"><![CDATA[
            +-----+                 +-----+
   +--------+     +--------+ +------+     +-------+
   |        | B   |        | |      | E   |       |
   |        +--+--+        | |      +-----+       |
   |           |           | |                    |
+--+--+     +--+--+      +-+-+-+               +--+--+
| A   |     |     |      |     |               |     |
|     +-----+  G  +------+  D  |               |  Z  |
+--+--+     +-----+      +-+-+-+               +---+-+
   |                       | |                     |
   |         +-----+       | |       +-----+       |
   |         |     |       | |       |     |       |
   +---------+  C  +-------+ +-------+ F   +-------+
             +-----+                 +-----+

    SR Policy A-Z:
      Candidate path1
        SIDList1 [B,E,Z]
      Candidate path2
        SIDList2 [C,F,Z]
]]></artwork>
      </figure>
      <section anchor="deviation-due-to-failures">
        <name>Deviation due to failures</name>
        <t>In Figure 2, link B-D fails. The expected circuit-style behavior is to start using the second candidate path.
Though this path may be used initially, once the IGP converges, the candidate path 1 becomes valid as node B regains a shortest path to the next node SID E.
Once the headend switches to the candidate path 1, the intended path and the expansion of the SID list which now becomes (A-B, B-G, G-D, D-E, E-Z) deviate. The service starts to use resources on B-G and G-D links where the PCE has not made a bandwidth reservation.</t>
        <figure anchor="figure2">
          <name>SR policy CP1 deviation after link failure and IGP convergence</name>
          <artwork alt="SR Policy deviation"><![CDATA[
            +-----+                 +-----+
   +--------+     +---xxx--+ +------+     +-------+
   |        | B   |        | |      | E   |       |
   |        +--+--+        | |      +-----+       |
   |           |           | |                    |
+--+--+     +--+--+      +-+-+-+               +--+--+
| A   |     |     |      |     |               |     |
|     +-----+  G  +------+  D  |               |  Z  |
+--+--+     +-----+      +-+-+-+               +---+-+
   |                       | |                     |
   |         +-----+       | |       +-----+       |
   |         |     |       | |       |     |       |
   +---------+  C  +-------+ +-------+ F   +-------+
             +-----+                 +-----+

    SR Policy A-Z:
      Candidate path1
        SIDList1 [B,E,Z] --> deviation from intended path due to failure
      Candidate path2
        SIDList2 [C,F,Z]
]]></artwork>
        </figure>
        <t>A possible solution to this is for PCE to monitor these deviations and correct the compressed SID lists. However, the PCE is not as real-time as the IGP (e.g. many BGP-LS implementations use periodic injection of IGP events into BGP) and PCE is burdened by many more services going over this link not just by the services originating at node A. As a result, relying on PCE to correct this behavior is not desired.</t>
        <t>This document uses the proposed extension to active path selection algorithm introduced in draft <xref target="I-D.karboubi-spring-sr-policy-eligibility"/> which allows a system to render the candidate path 1 ineligible for selection at the head-end node. Making a path eligible again would be  the responsibility of the PCE. This is elaborated in <xref target="failure"/>.</t>
      </section>
      <section anchor="deviation-due-to-repairs">
        <name>Deviation due to repairs</name>
        <t>Figure 3 shows an example where a link B-E  that was down at the time PCE computed the above two candidate paths is now repaired. When the link B-E repairs, the compressed SID list expands now to (A-B, B-E, E-Z) which is a deviation from the intended path. Though this path looks attractive, it may not have the bandwidth the service needs.</t>
        <figure anchor="figure3">
          <name>SR policy CP1 deviation after link repair and IGP convergence</name>
          <artwork alt="SR Policy deviation"><![CDATA[
               +--+-----------------+--+
            +--+--+                 +--+--+
   +--------+     +--------+ +------+     +-------+
   |        | B   |        | |      | E   |       |
   |        +--+--+        | |      +-----+       |
   |           |           | |                    |
+--+--+     +--+--+      +-+-+-+               +--+--+
| A   |     |     |      |     |               |     |
|     +-----+  G  +------+  D  |               |  Z  |
+--+--+     +-----+      +-+-+-+               +---+-+
   |                       | |                     |
   |         +-----+       | |       +-----+       |
   |         |     |       | |       |     |       |
   +---------+  C  +-------+ +-------+ F   +-------+
             +-----+                 +-----+

    SR Policy A-Z:
      Candidate path1
        SIDList1 [B,E,Z] --> deviation from intended path due to repair
      Candidate path2
        SIDList2 [C,F,Z]
]]></artwork>
        </figure>
        <t>This document presents a SID compression algorithm that is resilient to such repairs.  This is elaborated in <xref target="repairs"/>.</t>
      </section>
    </section>
    <section anchor="failure">
      <name>Dealing with deviation due to failures</name>
      <t>We use the  eligibility concept introduced in <xref target="I-D.karboubi-spring-sr-policy-eligibility"/>. the head-end node is responsible for detecting failures , setting the eligibility to false and switching to the next candidate path within 50 milliseconds.</t>
      <t>The eligibility of a path is also controlled by the PCE. The PCE may set it to true or false depending on whether the  expanded SID list matches the intended path. When the link B-D in Figure 2 repairs, it is the responsibility of the PCE to set the eligibility of the candidate path 1 to true. This allows eligibility mechanism to work across IGP areas and BGP autonomous systems.</t>
      <t>We introduce a second attribute that controls this new automated behavior of setting eligibility. An operator who plans to implement circuit style policies would enable this behavior, see <xref target="control"/></t>
      <section anchor="headEnd">
        <name>Head end node procedure</name>
        <t>The head-end node shall run a connectivity verification protocol as specified in section 7.1 of <xref target="I-D.ietf-spring-cs-sr-policy"/>  to determine path failure. 
When the head end detects a failure of a candidate path, the eligibility attribute is set immediately to false. 
As per <xref target="I-D.karboubi-spring-sr-policy-eligibility"/>, Head end node will no longer consider this candidate path in its active path selection logic no matter what other link/node failures and repairs and IP convergence may happen in the network. 
If another candidate path exists, the head end will switch to the next eligible candidate path per the active candidate path selection algorithm.
The recovery scheme for such policies is same as described in CS-SR draft , where such policies can be unprotected, use 1:N protection or protection combined with restoration.</t>
        <t>Note that this implies that head end node needs to detect end-to-end failures before any local repair (TI-LFA) or IP convergence occurs. There are various implementation ways to achieve this:</t>
        <ul spacing="normal">
          <li>
            <t>Configure the CCV protocol (e.g. S-BFD or STAMP) for these SR Policies at a lower interval than the IP link BFD. This will not impact non-CS SR policies which will continue to benefit from TI-LFA local repairs with same detection/repair time as before. Note that CCV is mandatory for CS SR policies, so the only new addition imposed here is regarding its detection timer (i.e. inverted hierarchical fault detection where e2e fault is detected before 1-hop fault).</t>
          </li>
          <li>
            <t>Another implementation solution to circumvent the TI-LFA, is to disable TI-LFA for CS-SR based traffic. This can be achieved by using only flexAlgo Node SIDs that have TILFA disabled, so when computing SID List for a CS-SR Policies, only Nodes SIDs from flexAlgo with disabled TI LFA would be used. This will not require separate loopback for nodes, but simply defining a flexAlgo with TI-LFA disabled on all Nodes pertaining to CS-SR domain. So, in the case a link fails, (before the e2e failure could be detected) the PLR will perform the usual TI LFA post convergence path for standard SID and will not initiate TI-LFA for traffic destined to CS-SR SIDs. With this approach we only need to ensure that e2e detection is lower than IGP convergence time only.</t>
          </li>
        </ul>
      </section>
      <section anchor="controllerpce-component-procedure">
        <name>Controller/PCE component procedure</name>
        <t>The PCE also maintains an accurate view of the network topology in all IGP areas and BGP autonomous systems in the network. After the failures have been repaired, the candidate paths that have been set as not eligible by head-end nodes may now be eligible again. In this case, PCE will set the eligibility attribute of these candidate paths to true.</t>
        <t>It is up to the SR policy head-end node to reselect the active candidate path after PCE changes eligibility of the candidate paths. The head end may either implement a standard revertive behavior whereby it can revert immediately once a better preferred path becomes available for selection, or wait for a period of time or implement a non-revertive behavior whereby traffic is not switched back automatically until there is a failure on the currently active candidate path. This reversion behavior may be controlled by a SP provider policy and is outside the scope of this document.</t>
        <t>A PCE may also set a candidate path as ineligible if it detects that the SID list when expanded is different from the intended path. This step is not mandatory when head-end is able to monitor all candidate paths for failures. But, this step is necessary for implementations that do not monitor the inactive candidate paths.  This is an implementation detail. We allow PCE to set eligibility attribute to true or false. The node is only allowed to set it to false for our use case.</t>
      </section>
      <section anchor="control">
        <name>Eligibility control attribute</name>
        <t>The second configuration is at the SR policy level and is used by head end node to determine whether the behavior described in <xref target="headEnd"/> is desirable or not (notably the head end disabling the eligibility of a path).
This attribute is called eligibilityControl and when set to false (default) the head end node will not alter the eligibility setting of a CP.</t>
      </section>
    </section>
    <section anchor="repairs">
      <name>Dealing with deviation due to repairs/changes</name>
      <t>Network improvements and node and/or link repairs can also result in segment list expansions and intended paths to deviate.
Network improvement may include addition of brand new links or changes of link attributes such as metric, SRLG values, affinity values, etc.</t>
      <t>Most of these changes, with the exception of restoration of down links, are typically done in maintenance-windows and under the supervision of an SDN controller. By performing these operations under the supervision of a controller, operator can work around their impacts on paths before making them. Such coordination would be necessary for existing MPLS-TP based solutions or CS-SR solution, as changes to these properties e.g. affinity or delay may cause an intent violation with original path, which needs to be reassessed. Such controller role providing automation and coordination between different layers and workflows is not uncommon and is beneficial for self-optimizing networks. Hence these kinds of changes are not the focus of this solution. Our focus is on node and/or link repairs (not necessarily limited to the links used by the candidate paths)</t>
      <t>For repairs, we propose a segment compaction algorithm whose compaction is resilient to nodes and/or links repairs; that is the segment list expands to the same path before or after any of these down links in any combination repairs. Any algorithm that is resilient to repairs would work. We highlight one such algorithm in the next paragraph.</t>
      <t>While the PCE computes the intended path on current state of the network, the proposed segment compaction algorithm uses a network view where all down links are restored to produce the SID list for the intended path.
This compaction may not be as short as the compaction with the restored links as down but has the property that it is resilient to repairs. That is, the SID list will always expand to the intended path. This property is independent of the order at which the links are repaired.</t>
      <t>Note that in absence of such algorithm (SID List being resilient to repairs), the paths could still be corrected by controller where upon link repair it would assess CS-SR policies and check if the newly repair link have caused any deviation from their intended paths and when such deviation is detected, a new SID List, that is expressing the intended path, is updated on head end. The drawback though is that deviation will be momentarily observed and traffic may be going on the repaired link until controller corrects the SID List.</t>
    </section>
    <section anchor="protocol-and-model-changes">
      <name>Protocol and model changes</name>
      <section anchor="active-candidate-path-selection">
        <name>Active candidate path selection</name>
        <t>This is already covered in <xref target="I-D.karboubi-spring-sr-policy-eligibility"/>.</t>
      </section>
      <section anchor="pcep-extensions">
        <name>PCEP extensions</name>
        <t>The extensions defined in <xref target="I-D.sidor-pce-circuit-style-pcep-extensions"/> regarding the strict path enforcement (using strict adjacency SIDs) becomes optional.</t>
        <t>PCEP shall be extended to signal the new eligibility control and eligibility attributes defined above.</t>
      </section>
      <section anchor="sr-policy-yang-changes">
        <name>SR policy Yang changes</name>
        <t>The eligibility control and eligibility attributes shall be added for the SR policy and candidate path YANG models respectively.</t>
        <t>NetConf RPC calls can be used to set eligibility of candidate paths to true or false.</t>
      </section>
    </section>
    <section anchor="IANA">
      <name>IANA considerations</name>
      <t>This document includes no request to IANA.</t>
    </section>
    <section anchor="Security">
      <name>Security considerations</name>
      <t>TO BE ADDED</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="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="I-D.ietf-spring-cs-sr-policy" target="https://datatracker.ietf.org/doc/draft-ietf-spring-cs-sr-policy">
          <front>
            <title>Circuit Style Segment Routing Policies, Work in Progress, Internet-Draft,draft-ietf-spring-cs-sr-policy-01</title>
            <author initials="C." surname="Schmutzer" fullname="C, Schmutzer">
              <organization>Cisco</organization>
            </author>
            <author initials="Z." surname="Ali" fullname="Z, Ali">
              <organization>Cisco</organization>
            </author>
            <author initials="P." surname="Maheshwari" fullname="P, Maheshwari">
              <organization>Airtel India</organization>
            </author>
            <author initials="R." surname="Rokui" fullname="R, Rokui">
              <organization>Ciena</organization>
            </author>
            <author initials="A." surname="Stone" fullname="A, Stone">
              <organization>Nokia</organization>
            </author>
            <date year="2023" month="October" day="23"/>
          </front>
        </reference>
        <reference anchor="I-D.sidor-pce-circuit-style-pcep-extensions" target="https://datatracker.ietf.org/doc/html/draft-sidor-pce-circuit-style-pcep-extensions-06">
          <front>
            <title>PCEP extensions for Circuit Style Policies", Work in Progress, Internet-Draft, draft-sidor-pce-circuit-style-pcep-extensions-06</title>
            <author initials="S." surname="Sidor" fullname="S, Sidor">
              <organization>Cisco</organization>
            </author>
            <author initials="Z." surname="Ali" fullname="Z, Ali">
              <organization>Cisco</organization>
            </author>
            <author initials="P." surname="Maheshwari" fullname="P, Maheshwari">
              <organization>Airtel India</organization>
            </author>
            <author initials="R." surname="Rokui" fullname="R, Rokui">
              <organization>Ciena</organization>
            </author>
            <author initials="A." surname="Stone" fullname="A, Stone">
              <organization>Nokia</organization>
            </author>
            <author initials="L." surname="Jalil" fullname="L, Jalil">
              <organization>Verizon</organization>
            </author>
            <author initials="S." surname="Peng" fullname="S, Peng">
              <organization>Huwaei Technologies</organization>
            </author>
            <author initials="T." surname="Saad" fullname="T, Saad">
              <organization>Juniper</organization>
            </author>
            <author initials="D." surname="Voyer" fullname="D, Voyer">
              <organization>Bell Canada</organization>
            </author>
            <date year="2023" month="December" day="15"/>
          </front>
        </reference>
        <reference anchor="I-D.karboubi-spring-sr-policy-eligibility" target="https://datatracker.ietf.org/doc/draft-karboubi-spring-sr-policy-eligibility">
          <front>
            <title>Eligibility Concept in Segment Routing Policies, Work in Progress, Internet-Draft,draft-karboubi-spring-sr-policy-eligibility</title>
            <author initials="A." surname="Karboubi" fullname="A, Karboubi">
              <organization>Ciena</organization>
            </author>
            <author initials="H." surname="Shah" fullname="H, Shah">
              <organization>Ciena</organization>
            </author>
            <author initials="S." surname="Sivalaban" fullname="S, Sivalaban">
              <organization>Ciena</organization>
            </author>
            <author initials="A." surname="Stone" fullname="A, Stone">
              <organization>Nokia</organization>
            </author>
            <author initials="C." surname="Schmutz" fullname="C, Schmutz">
              <organization>Cisco</organization>
            </author>
            <date year="2025" month="February" day="21"/>
          </front>
        </reference>
        <reference anchor="RFC9256">
          <front>
            <title>Segment Routing Policy Architecture</title>
            <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
            <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
            <author fullname="D. Voyer" initials="D." surname="Voyer"/>
            <author fullname="A. Bogdanov" initials="A." surname="Bogdanov"/>
            <author fullname="P. Mattes" initials="P." surname="Mattes"/>
            <date month="July" year="2022"/>
            <abstract>
              <t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
              <t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9256"/>
          <seriesInfo name="DOI" value="10.17487/RFC9256"/>
        </reference>
      </references>
    </references>
    <?line 383?>

<section numbered="false" anchor="Acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank <contact fullname="Abhijeet Bidawe"/> for his input and support.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1c63LbRpb+ryq9Q6/9Y60YoCUlmUm0mQt1sa1ZWdaaSlxx
amqrCTTJjkA0Bg2IZmzvs+yz7JPtuXQ3GiAl29nUVu1WNJOEBPp6+ly+c2mm
abq7YxtZ5v8uC1OqI9HUrdrd0VVNH21zuL//7f7h7k4mmyOhy5kR0KGdLrW1
2pTNuoI+52fXT3d3ZK3kkXimSlXLYndnNT8Sk6tX55fPxGtT3+hyLp7Vpq12
d3Z3cpOVcgk981rOmvRG1lPTTnVqqxrapVbnhbZNaqpGL/UvKk8zm9o63f8S
Oze6KaDria6zVjdi0qwLJSZqvlRlI16ZtsGprkyhM62sWOlmIV76gcTk/FRc
wNjiVFXNAhY9ndbqFkabpJNXH+8Fmy9kCTtT5e7Ozepod0eIVNyo9crU+YHo
fT2Erw9FLhtY7OH+4WG6j/8XaUrPhLZiposCRtelkG1jlrLRmSyKtZiuxdtl
cVjPMqFnojSNmOtbnBGaLUwNs6aiNkgElevG1DSvLu2RGI/Evzpi4jMm8ngp
i95jU8+RfqqU+E0tpS6OhHSn8NcMX4wys8RpaNSTkRgXUjVAWTMv2m7kE1XO
9S8bL7eOn1Hb/ujxJsIeno/EZCEXopvmuV7K0i7a7vnWGRYWXm9Z/gQG1Ley
kFNZRqPiM/rXFF6Vd44KfE5Ntgx8PQI2wkPUlY4GvjZ5PnixdeQG2m0Z9Wok
XsiFsouVrKNTvKrlrVJl9K4beazrRhXivMx1PIHrMuq6/FVSS54PW4JggxTX
egoMCCL/UExgMmFB9LOmrZWQVjDTCZTIREA7MTcgIbpsjIj6Whxvd6c0NfLx
rSLRePX05Juv9g+P+B1qj+gtTy/EeXo60qqZeelnWa9QFNc0ihCfJfIJ6RuU
qqvazGtl4cl52ai6VE16igonYbVz16Tp/gFPG8QNv6Se5xMxyRbLtvlF1fwm
HK/NTL/tmwRkQ3+s1VUyOPDQeHiuXZ9XCez7ph2O7RisazeG1Tag2HvtLs2N
Hy+opy/Tg/308EtHb1nPFej7RdNU9ujJE2glm1pmN6qmoxrBME9AiT+5n5Dd
+YJGN/A0U2nGZ5haPEN8UqXqbaNKtCa2f9xXJ2dXonspgHsGLOCP/MEnnLmz
NZ+4knT/D/fwwASoiuP83z9/3+4iEX+ThS567X5Qtf7FlBt7vwJV3mv4vF1J
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

-->

</rfc>
