<?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.17 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-karboubi-spring-sidlist-optimized-cs-sr-01" category="info" submissionType="IETF" xml:lang="en" version="3">
  <!-- xml2rfc v2v3 conversion 3.21.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-01"/>
    <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" role="editor">
      <organization>Ciena</organization>
      <address>
        <email>cengiz@ciena.com</email>
      </address>
    </author>
    <author initials="H." surname="Shah" fullname="Himanshu Shah">
      <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>
    <date year="2024" month="June" day="28"/>
    <area>General</area>
    <workgroup>SPRING Working Group</workgroup>
    <keyword>keyword1</keyword>
    <keyword>keyword2</keyword>
    <abstract>
      <?line 97?>

<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 102?>

<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 uses 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 proposes a simple extension to the active candidate path selection logic defined in <xref target="RFC9256"/> which renders the candidate path 1 ineligible for selection at the head-end node. Making a path eligible again is 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>In <xref target="I-D.ietf-spring-cs-sr-policy"/>, the head-end node is responsible for detecting failures and switching to the next candidate path within 50 milliseconds. 
We introduce a new flag at the candidate path level called eligibility. When the head-end detects the path failure, it sets eligibility flag to false.</t>
      <t>Candidate path selection logic is modified so that eligibility flag must be considered as part of the candidate path validity check defined in <xref target="RFC9256"/>; that is only candidate paths with eligibility flag true must be considered valid.</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 property that controls this new behavior. An operator who plans to implement circuit style policies would enable this property, 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 flag is set immediately to false. 
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 flag 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 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 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 flag to true or false. The node is only allowed to set it to false.</t>
      </section>
      <section anchor="control">
        <name>Eligibility control flag</name>
        <t>The second configuration flag at the SR policy level is used by head end node to determine whether the behavior described in <xref target="headEnd"/> is desirable or not.
This flag is called eligibilityControl and when set to false (default) the SR policy has the same original behavior as defined in <xref target="RFC9256"/>.</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>As described in <xref target="failure"/>, this proposal introduces a new criteria to the active CP selection criteria described in section 2.9 of <xref target="RFC9256"/>.</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 2 new properties that are the eligibility flag and eligibility control flag of the SR policy candidate paths.</t>
      </section>
      <section anchor="sr-policy-yang-changes">
        <name>SR policy Yang changes</name>
        <t>The eligibility control and eligibility flags shall be added for the SR policy and candidate path YANG models respectively.</t>
        <t>NetConf RPC calls can be used to set eligibility flag 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>
      <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="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 365?>



  </back>
  <!-- ##markdown-source:
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
/wAC6lSCCE8AAA==

-->

</rfc>
