<?xml version='1.0' encoding='utf-8'?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" consensus="true" docName="draft-ietf-spring-segment-routing-policy-22" indexInclude="true" ipr="trust200902" number="9256" prepTime="2022-07-24T13:58:00" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="2" tocInclude="true" updates="8402" xml:lang="en">
  <link href="https://datatracker.ietf.org/doc/draft-ietf-spring-segment-routing-policy-22" rel="prev"/>
  <link href="https://dx.doi.org/10.17487/rfc9256" rel="alternate"/>
  <link href="urn:issn:2070-1721" rel="alternate"/>
  <front>
    <title abbrev="SR Policy Architecture">Segment Routing Policy Architecture</title>
    <seriesInfo name="RFC" value="9256" stream="IETF"/>
    <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <extaddr>Pegasus Parc</extaddr>
          <street>De kleetlaan 6a</street>
          <city>Diegem</city>
          <code>1831</code>
          <country>Belgium</country>
        </postal>
        <email>cfilsfil@cisco.com</email>
      </address>
    </author>
    <author fullname="Ketan Talaulikar" initials="K." role="editor" surname="Talaulikar">
      <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>India</country>
        </postal>
        <email>ketant.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Daniel Voyer" initials="D." surname="Voyer">
      <organization showOnFrontPage="true">Bell Canada</organization>
      <address>
        <postal>
          <street>671 de la gauchetiere W</street>
          <city>Montreal</city>
          <region>Quebec</region>
          <code>H3B 2M8</code>
          <country>Canada</country>
        </postal>
        <email>daniel.voyer@bell.ca</email>
      </address>
    </author>
    <author fullname="Alex Bogdanov" initials="A." surname="Bogdanov">
      <organization showOnFrontPage="true">British Telecom</organization>
      <address>
        <email>alex.bogdanov@bt.com</email>
      </address>
    </author>
    <author fullname="Paul Mattes" initials="P." surname="Mattes">
      <organization showOnFrontPage="true">Microsoft</organization>
      <address>
        <postal>
          <street>One Microsoft Way</street>
          <city>Redmond</city>
          <region>WA</region>
          <code>98052-6399</code>
          <country>United States of America</country>
        </postal>
        <email>pamattes@microsoft.com</email>
      </address>
    </author>
    <date month="07" year="2022"/>
    <area>rtg</area>
    <workgroup>spring</workgroup>
    <keyword>Segment Routing</keyword>
    <keyword>SR Policy</keyword>
    <keyword>SR-MPLS</keyword>
    <keyword>SRv6</keyword>
    <keyword>Traffic Engineering</keyword>
    <abstract pn="section-abstract">
      <t indent="0" pn="section-abstract-1">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 indent="0" pn="section-abstract-2">This document updates RFC 8402 as it details the concepts of SR Policy
      and steering into an SR Policy.</t>
    </abstract>
    <boilerplate>
      <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1">
        <name slugifiedName="name-status-of-this-memo">Status of This Memo</name>
        <t indent="0" pn="section-boilerplate.1-1">
            This is an Internet Standards Track document.
        </t>
        <t indent="0" pn="section-boilerplate.1-2">
            This document is a product of the Internet Engineering Task Force
            (IETF).  It represents the consensus of the IETF community.  It has
            received public review and has been approved for publication by
            the Internet Engineering Steering Group (IESG).  Further
            information on Internet Standards is available in Section 2 of 
            RFC 7841.
        </t>
        <t indent="0" pn="section-boilerplate.1-3">
            Information about the current status of this document, any
            errata, and how to provide feedback on it may be obtained at
            <eref target="https://www.rfc-editor.org/info/rfc9256" brackets="none"/>.
        </t>
      </section>
      <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2">
        <name slugifiedName="name-copyright-notice">Copyright Notice</name>
        <t indent="0" pn="section-boilerplate.2-1">
            Copyright (c) 2022 IETF Trust and the persons identified as the
            document authors. All rights reserved.
        </t>
        <t indent="0" pn="section-boilerplate.2-2">
            This document is subject to BCP 78 and the IETF Trust's Legal
            Provisions Relating to IETF Documents
            (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) in effect on the date of
            publication of this document. Please review these documents
            carefully, as they describe your rights and restrictions with
            respect to this document. Code Components extracted from this
            document must include Revised BSD License text as described in
            Section 4.e of the Trust Legal Provisions and are provided without
            warranty as described in the Revised BSD License.
        </t>
      </section>
    </boilerplate>
    <toc>
      <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1">
        <name slugifiedName="name-table-of-contents">Table of Contents</name>
        <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1">
          <li pn="section-toc.1-1.1">
            <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.1.2">
              <li pn="section-toc.1-1.1.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-requirements-language">Requirements Language</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.2">
            <t indent="0" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-policy">SR Policy</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.2.2">
              <li pn="section-toc.1-1.2.2.1">
                <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-identification-of-an-sr-pol">Identification of an SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.2">
                <t indent="0" pn="section-toc.1-1.2.2.2.1"><xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-candidate-path-and-segment-">Candidate Path and Segment List</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.3">
                <t indent="0" pn="section-toc.1-1.2.2.3.1"><xref derivedContent="2.3" format="counter" sectionFormat="of" target="section-2.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-protocol-origin-of-a-candid">Protocol-Origin of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.4">
                <t indent="0" pn="section-toc.1-1.2.2.4.1"><xref derivedContent="2.4" format="counter" sectionFormat="of" target="section-2.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-originator-of-a-candidate-p">Originator of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.5">
                <t indent="0" pn="section-toc.1-1.2.2.5.1"><xref derivedContent="2.5" format="counter" sectionFormat="of" target="section-2.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-discriminator-of-a-candidat">Discriminator of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.6">
                <t indent="0" pn="section-toc.1-1.2.2.6.1"><xref derivedContent="2.6" format="counter" sectionFormat="of" target="section-2.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-identification-of-a-candida">Identification of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.7">
                <t indent="0" pn="section-toc.1-1.2.2.7.1"><xref derivedContent="2.7" format="counter" sectionFormat="of" target="section-2.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-preference-of-a-candidate-p">Preference of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.8">
                <t indent="0" pn="section-toc.1-1.2.2.8.1"><xref derivedContent="2.8" format="counter" sectionFormat="of" target="section-2.8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-validity-of-a-candidate-pat">Validity of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.9">
                <t indent="0" pn="section-toc.1-1.2.2.9.1"><xref derivedContent="2.9" format="counter" sectionFormat="of" target="section-2.9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-active-candidate-path">Active Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.10">
                <t indent="0" pn="section-toc.1-1.2.2.10.1"><xref derivedContent="2.10" format="counter" sectionFormat="of" target="section-2.10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-validity-of-an-sr-policy">Validity of an SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.11">
                <t indent="0" pn="section-toc.1-1.2.2.11.1"><xref derivedContent="2.11" format="counter" sectionFormat="of" target="section-2.11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-instantiation-of-an-sr-poli">Instantiation of an SR Policy in the Forwarding Plane</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.12">
                <t indent="0" pn="section-toc.1-1.2.2.12.1"><xref derivedContent="2.12" format="counter" sectionFormat="of" target="section-2.12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-priority-of-an-sr-policy">Priority of an SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.2.2.13">
                <t indent="0" pn="section-toc.1-1.2.2.13.1"><xref derivedContent="2.13" format="counter" sectionFormat="of" target="section-2.13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-summary">Summary</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.3">
            <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-segment-routing-database">Segment Routing Database</xref></t>
          </li>
          <li pn="section-toc.1-1.4">
            <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-segment-types">Segment Types</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.4.2">
              <li pn="section-toc.1-1.4.2.1">
                <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-explicit-null">Explicit Null</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.5">
            <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-validity-of-a-candidate-path">Validity of a Candidate Path</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.5.2">
              <li pn="section-toc.1-1.5.2.1">
                <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-explicit-candidate-path">Explicit Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.2">
                <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-dynamic-candidate-path">Dynamic Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.5.2.3">
                <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-composite-candidate-path">Composite Candidate Path</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.6">
            <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-binding-sid">Binding SID</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2">
              <li pn="section-toc.1-1.6.2.1">
                <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bsid-of-a-candidate-path">BSID of a Candidate Path</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.2">
                <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-bsid-of-an-sr-policy">BSID of an SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.3">
                <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-forwarding-plane">Forwarding Plane</xref></t>
              </li>
              <li pn="section-toc.1-1.6.2.4">
                <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-non-sr-usage-of-binding-sid">Non-SR Usage of Binding SID</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.7">
            <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-sr-policy-state">SR Policy State</xref></t>
          </li>
          <li pn="section-toc.1-1.8">
            <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-steering-into-an-sr-policy">Steering into an SR Policy</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2">
              <li pn="section-toc.1-1.8.2.1">
                <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-validity-of-an-sr-policy-2">Validity of an SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.2">
                <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-drop-upon-invalid-sr-policy">Drop-upon-Invalid SR Policy</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.3">
                <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-incoming-active-sid-is-a-bs">Incoming Active SID is a BSID</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.4">
                <t indent="0" pn="section-toc.1-1.8.2.4.1"><xref derivedContent="8.4" format="counter" sectionFormat="of" target="section-8.4"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-per-destination-steering">Per-Destination Steering</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.5">
                <t indent="0" pn="section-toc.1-1.8.2.5.1"><xref derivedContent="8.5" format="counter" sectionFormat="of" target="section-8.5"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recursion-on-an-on-demand-d">Recursion on an On-Demand Dynamic BSID</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.6">
                <t indent="0" pn="section-toc.1-1.8.2.6.1"><xref derivedContent="8.6" format="counter" sectionFormat="of" target="section-8.6"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-per-flow-steering">Per-Flow Steering</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.7">
                <t indent="0" pn="section-toc.1-1.8.2.7.1"><xref derivedContent="8.7" format="counter" sectionFormat="of" target="section-8.7"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-policy-based-routing">Policy-Based Routing</xref></t>
              </li>
              <li pn="section-toc.1-1.8.2.8">
                <t indent="0" pn="section-toc.1-1.8.2.8.1"><xref derivedContent="8.8" format="counter" sectionFormat="of" target="section-8.8"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-optional-steering-modes-for">Optional Steering Modes for BGP Destinations</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.9">
            <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-recovering-from-network-fai">Recovering from Network Failures</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.9.2">
              <li pn="section-toc.1-1.9.2.1">
                <t indent="0" pn="section-toc.1-1.9.2.1.1"><xref derivedContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-leveraging-ti-lfa-local-pro">Leveraging TI-LFA Local Protection of the Constituent IGP Segments</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.2">
                <t indent="0" pn="section-toc.1-1.9.2.2.1"><xref derivedContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-an-sr-policy-to-local">Using an SR Policy to Locally Protect a Link</xref></t>
              </li>
              <li pn="section-toc.1-1.9.2.3">
                <t indent="0" pn="section-toc.1-1.9.2.3.1"><xref derivedContent="9.3" format="counter" sectionFormat="of" target="section-9.3"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-using-a-candidate-path-for-">Using a Candidate Path for Path Protection</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.10">
            <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.11">
            <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-manageability-consideration">Manageability Considerations</xref></t>
          </li>
          <li pn="section-toc.1-1.12">
            <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2">
              <li pn="section-toc.1-1.12.2.1">
                <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-guidance-for-designated-exp">Guidance for Designated Experts</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.13">
            <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t>
            <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.13.2">
              <li pn="section-toc.1-1.13.2.1">
                <t indent="0" pn="section-toc.1-1.13.2.1.1"><xref derivedContent="13.1" format="counter" sectionFormat="of" target="section-13.1"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t>
              </li>
              <li pn="section-toc.1-1.13.2.2">
                <t indent="0" pn="section-toc.1-1.13.2.2.1"><xref derivedContent="13.2" format="counter" sectionFormat="of" target="section-13.2"/>.  <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t>
              </li>
            </ul>
          </li>
          <li pn="section-toc.1-1.14">
            <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgement">Acknowledgement</xref></t>
          </li>
          <li pn="section-toc.1-1.15">
            <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t>
          </li>
          <li pn="section-toc.1-1.16">
            <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addresses</xref></t>
          </li>
        </ul>
      </section>
    </toc>
  </front>
  <middle>
    <section anchor="Introduction" numbered="true" toc="include" removeInRFC="false" pn="section-1">
      <name slugifiedName="name-introduction">Introduction</name>
      <t indent="0" pn="section-1-1">Segment Routing (SR) <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> allows a node to steer
      a packet flow along any path. The headend is a node where the
      instructions for source routing (i.e., segments) are written into the
      packet.  It hence becomes the starting node for a specific segment
      routing path. Intermediate per-path states are eliminated thanks to
      source routing.</t>
      <t indent="0" pn="section-1-2">A Segment Routing Policy (SR Policy) <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> is an
      ordered list of segments (i.e., instructions) that represent a
      source-routed policy. The headend node is said to steer a flow into an SR
      Policy. The packets steered into an SR Policy have an ordered list of
      segments associated with that SR Policy written into them. <xref target="RFC8660" format="default" sectionFormat="of" derivedContent="RFC8660"/> describes the representation and processing of this
      ordered list of segments as an MPLS label stack for SR-MPLS, while <xref target="RFC8754" format="default" sectionFormat="of" derivedContent="RFC8754"/> and <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> describe the same for
      Segment Routing over IPv6 (SRv6) with the use of the Segment Routing
      Header (SRH).</t>
      <t indent="0" pn="section-1-3"><xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> introduces the SR Policy construct and
      provides an overview of how it is leveraged for Segment Routing
      use cases. This document updates <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> to specify
      detailed concepts of SR Policy and steering packets into an SR Policy.
      It applies equally to the SR-MPLS and SRv6 instantiations of segment
      routing.</t>
      <section anchor="reqlang" numbered="true" toc="include" removeInRFC="false" pn="section-1.1">
        <name slugifiedName="name-requirements-language">Requirements Language</name>
        <t indent="0" pn="section-1.1-1">
    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" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> 
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section anchor="SR-policy" numbered="true" toc="include" removeInRFC="false" pn="section-2">
      <name slugifiedName="name-sr-policy">SR Policy</name>
      <t indent="0" pn="section-2-1">The general concept of SR Policy provides a framework that enables
      the instantiation of an ordered list of segments on a node for
      implementing a source routing policy for the steering of traffic for a
      specific purpose (e.g., for a specific Service Level Agreement (SLA)) from that node.</t>
      <t indent="0" pn="section-2-2">The Segment Routing architecture <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> specifies
      that any instruction can be bound to a segment. Thus, an SR Policy can
      be built using any type of Segment Identifier (SID) including those
      associated with topological or service instructions.</t>
      <t indent="0" pn="section-2-3">This section defines the key aspects and constituents of an SR
      Policy.</t>
      <section anchor="SR-policy-identification" numbered="true" toc="include" removeInRFC="false" pn="section-2.1">
        <name slugifiedName="name-identification-of-an-sr-pol">Identification of an SR Policy</name>
        <t indent="0" pn="section-2.1-1">An SR Policy <bcp14>MUST</bcp14> be identified through the tuple &lt;Headend,
        Color, Endpoint&gt;. In the context of a specific headend, an SR
        Policy <bcp14>MUST</bcp14> be identified by the &lt;Color, Endpoint&gt; tuple.</t>
        <t indent="0" pn="section-2.1-2">The headend is the node where the policy is
        instantiated/implemented. The headend is specified as an IPv4 or IPv6
        address and <bcp14>MUST</bcp14> resolve to a unique node in the SR domain <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</t>
        <t indent="0" pn="section-2.1-3">The endpoint indicates the destination of the policy. The endpoint
        is specified as an IPv4 or IPv6 address and <bcp14>SHOULD</bcp14> resolve to a unique
        node in the domain. In a specific case (refer to <xref target="Steering-optional-bgp-color-only-steering" format="default" sectionFormat="of" derivedContent="Section 8.8.1"/>), the endpoint
        can be the unspecified address (0.0.0.0 for IPv4, :: for IPv6) and in
        this case, the destination of the policy is indicated by the last
        segment in the segment list(s).</t>
        <t indent="0" pn="section-2.1-4">The color is an unsigned non-zero 32-bit integer value that
        associates the SR Policy with an intent or objective (e.g.,
        low latency).</t>
        <t indent="0" pn="section-2.1-5">The endpoint and the color are used to automate the steering of
        service or transport routes on SR Policies (refer to <xref target="Steering" format="default" sectionFormat="of" derivedContent="Section 8"/>).</t>
        <t indent="0" pn="section-2.1-6">An implementation <bcp14>MAY</bcp14> allow the assignment of a symbolic name
        comprising printable ASCII <xref target="RFC0020" format="default" sectionFormat="of" derivedContent="RFC0020"/> characters (i.e.,
        0x20 to 0x7E) to an SR Policy to serve as a user-friendly attribute
        for debugging and troubleshooting purposes. Such symbolic names may
        identify an SR Policy when the naming scheme ensures uniqueness. The
        SR Policy name <bcp14>MAY</bcp14> also be signaled along with a candidate path of the
        SR Policy (refer to <xref target="SR-policy-candidate-path" format="default" sectionFormat="of" derivedContent="Section 2.2"/>). An SR
        Policy <bcp14>MAY</bcp14> have multiple names associated with it in the scenario
        where the headend receives different SR Policy names along with
        different candidate paths for the same SR Policy via the same or
        different sources.</t>
      </section>
      <section anchor="SR-policy-candidate-path" numbered="true" toc="include" removeInRFC="false" pn="section-2.2">
        <name slugifiedName="name-candidate-path-and-segment-">Candidate Path and Segment List</name>
        <t indent="0" pn="section-2.2-1">An SR Policy is associated with one or more candidate paths. A
        candidate path is the unit for signaling of an SR Policy to a headend
        via protocol extensions like the Path Computation Element
        Communication Protocol (PCEP) <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/> or BGP SR Policy
        <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/>.</t>
        <t indent="0" pn="section-2.2-2">A segment list represents a specific source-routed path to send
        traffic from the headend to the endpoint of the corresponding SR
        Policy.</t>
        <t indent="0" pn="section-2.2-3">A candidate path is either dynamic, explicit, or composite.</t>
        <t indent="0" pn="section-2.2-4">An explicit candidate path is expressed as a segment list or a set
        of segment lists.</t>
        <t indent="0" pn="section-2.2-5">A dynamic candidate path expresses an optimization objective and a
        set of constraints for a specific data plane (i.e., SR-MPLS or SRv6).
        The headend (potentially with the help of a PCE) computes a solution
        segment list (or set of segment lists) that solves the optimization
        problem.</t>
        <t indent="0" pn="section-2.2-6">If a candidate path is associated with a set of segment lists, each
        segment list is associated with weight for weighted load balancing
        (refer to <xref target="SR-policy-instantiation" format="default" sectionFormat="of" derivedContent="Section 2.11"/> for details). The
        default weight is 1.</t>
        <t indent="0" pn="section-2.2-7">A composite candidate path acts as a container for grouping SR
        Policies. The composite candidate path construct enables the
        combination of SR Policies, each with explicit candidate paths and/or
        dynamic candidate paths with potentially different optimization
        objectives and constraints, for load-balanced steering of packet flows
        over its constituent SR Policies. The following criteria apply for
        inclusion of constituent SR Policies using a composite candidate path
        under a parent SR Policy:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.2-8">
          <li pn="section-2.2-8.1">The endpoints of the constituent SR Policies and the parent SR
            Policy <bcp14>MUST</bcp14> be identical.</li>
          <li pn="section-2.2-8.2">The colors of each of the constituent SR Policies and the
            parent SR Policy <bcp14>MUST</bcp14> be different.</li>
          <li pn="section-2.2-8.3">The constituent SR Policies <bcp14>MUST NOT</bcp14> use composite candidate
            paths.</li>
        </ul>
        <t indent="0" pn="section-2.2-9">Each constituent SR Policy of a composite candidate path is
        associated with weight for load-balancing purposes (refer to <xref target="SR-policy-instantiation" format="default" sectionFormat="of" derivedContent="Section 2.11"/> for details). The default weight is
        1.</t>
        <t indent="0" pn="section-2.2-10"><xref target="SR-policy-summary" format="default" sectionFormat="of" derivedContent="Section 2.13"/> illustrates an information
        model for hierarchical relationships between the SR Policy constructs
        described in this section.</t>
      </section>
      <section anchor="SR-policy-protocol-origin" numbered="true" toc="include" removeInRFC="false" pn="section-2.3">
        <name slugifiedName="name-protocol-origin-of-a-candid">Protocol-Origin of a Candidate Path</name>
        <t indent="0" pn="section-2.3-1">A headend may be informed about a candidate path for an SR Policy
        &lt;Color, Endpoint&gt; by various means including: via configuration,
        PCEP <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/> <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/>, or BGP <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/>.</t>
        <t indent="0" pn="section-2.3-2">Protocol-Origin of a candidate path is an 8-bit value associated
        with the mechanism or protocol used for signaling/provisioning the SR
        Policy. It helps identify the protocol/mechanism that provides or
        signals the candidate path and indicates its preference relative to
        other protocols/mechanisms.</t>
        <t indent="0" pn="section-2.3-3">The headend assigns different Protocol-Origin values to each
        source of SR Policy information. The Protocol-Origin value is used as
        a tiebreaker between candidate paths of equal Preference, as
        described in <xref target="SR-policy-candidate-path-active" format="default" sectionFormat="of" derivedContent="Section 2.9"/>. The
        table below specifies the <bcp14>RECOMMENDED</bcp14> default values of
        Protocol-Origin:</t>
        <table anchor="table_ex" align="center" pn="table-1">
          <name slugifiedName="name-protocol-origin-default-val">Protocol-Origin Default Values</name>
          <thead>
            <tr>
              <th align="center" colspan="1" rowspan="1">Protocol-Origin</th>
              <th align="left" colspan="1" rowspan="1">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="center" colspan="1" rowspan="1">10</td>
              <td align="left" colspan="1" rowspan="1">PCEP</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">20</td>
              <td align="left" colspan="1" rowspan="1">BGP SR Policy</td>
            </tr>
            <tr>
              <td align="center" colspan="1" rowspan="1">30</td>
              <td align="left" colspan="1" rowspan="1">Via Configuration</td>
            </tr>
          </tbody>
        </table>
        <t indent="0" pn="section-2.3-5">Note that the above order is to satisfy the need for having a clear
        ordering, and implementations <bcp14>MAY</bcp14> allow modifications of these default
        values assigned to protocols on the headend along similar lines as a
        routing administrative distance. Its application in the candidate path
        selection is described in <xref target="SR-policy-candidate-path-active" format="default" sectionFormat="of" derivedContent="Section 2.9"/>.</t>
      </section>
      <section anchor="SR-policy-candidate-path-originator" numbered="true" toc="include" removeInRFC="false" pn="section-2.4">
        <name slugifiedName="name-originator-of-a-candidate-p">Originator of a Candidate Path</name>
        <t indent="0" pn="section-2.4-1">The Originator identifies the node that provisioned or signaled the
        candidate path on the headend. The Originator is expressed in the form
        of a 160-bit numerical value formed by the concatenation of the fields
        of the tuple &lt;Autonomous System Number (ASN), node-address&gt; as
        below:</t>
        <dl indent="3" newline="false" spacing="normal" pn="section-2.4-2">
          <dt pn="section-2.4-2.1">Autonomous System Number (ASN):
          </dt>
          <dd pn="section-2.4-2.2">represented as a 4-byte number. If 2-byte ASNs are in use, the
	  low-order 16 bits <bcp14>MUST</bcp14> be used, and the high-order
	  bits <bcp14>MUST</bcp14> be set to 0.
	  </dd>
          <dt pn="section-2.4-2.3">Node Address:
          </dt>
          <dd pn="section-2.4-2.4">represented as a 128-bit value. IPv4 addresses
	  <bcp14>MUST</bcp14> be encoded in the lowest 32 bits, and the
	  high-order bits <bcp14>MUST</bcp14> be set to 0.
	  </dd>
        </dl>
        <t indent="0" pn="section-2.4-3">Its application in the candidate path selection is described in
        <xref target="SR-policy-candidate-path-active" format="default" sectionFormat="of" derivedContent="Section 2.9"/>.</t>
        <t indent="0" pn="section-2.4-4">When provisioning is via configuration, the ASN and node address
        <bcp14>MAY</bcp14> be set to either the headend or the provisioning controller/node
        ASN and address. The default value is 0 for both AS and node
        address.</t>
        <t indent="0" pn="section-2.4-5">When signaling is via PCEP, it is the IPv4 or IPv6 address of the
        PCE, and the AS number is expected to be set to 0 by default when not
        available or known.</t>
        <t indent="0" pn="section-2.4-6">When signaling is via BGP SR Policy, the ASN and node address are
        provided by BGP (refer to <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/>) on the headend.</t>
      </section>
      <section anchor="SR-policy-candidate-path-discriminator" numbered="true" toc="include" removeInRFC="false" pn="section-2.5">
        <name slugifiedName="name-discriminator-of-a-candidat">Discriminator of a Candidate Path</name>
        <t indent="0" pn="section-2.5-1">The Discriminator is a 32-bit value associated with a candidate
        path that uniquely identifies it within the context of an SR Policy
        from a specific Protocol-Origin as specified below:</t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.5-2">
          <li pn="section-2.5-2.1">When provisioning is via configuration, this is a unique
          identifier for a candidate path; it is specific to the
          implementation's configuration model. The default value is 0.</li>
          <li pn="section-2.5-2.2">When signaling is via PCEP, the method to uniquely signal an
            individual candidate path along with its Discriminator is
            described in <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/>. The default
            value is 0.</li>
          <li pn="section-2.5-2.3">When signaling is via BGP SR Policy, the BGP process receiving
          the route provides the distinguisher (refer to <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/>) as the Discriminator. Note that
          the BGP best path selection is applied before the route is supplied
          as a candidate path, so only a single candidate path for a given SR
          Policy will be seen for a given Discriminator.</li>
        </ul>
        <t indent="0" pn="section-2.5-3">Its application in the candidate path selection is described in
        <xref target="SR-policy-candidate-path-active" format="default" sectionFormat="of" derivedContent="Section 2.9"/>.</t>
      </section>
      <section anchor="SR-policy-candidate-path-identification" numbered="true" toc="include" removeInRFC="false" pn="section-2.6">
        <name slugifiedName="name-identification-of-a-candida">Identification of a Candidate Path</name>
        <t indent="0" pn="section-2.6-1">A candidate path is identified in the context of a single SR
        Policy.</t>
        <t indent="0" pn="section-2.6-2">A candidate path is not shared across SR Policies.</t>
        <t indent="0" pn="section-2.6-3">A candidate path is not identified by its segment list(s).</t>
        <aside pn="section-2.6-4">
          <t indent="0" pn="section-2.6-4.1">If CP1 is a candidate path of SR Policy Pol1 and CP2 is a
            candidate path of SR Policy Pol2, then these two candidate paths
            are independent, even if they happen to have the same
            segment list. The segment list does not identify a candidate path.
            The segment list is an attribute of a candidate path.
          </t>
        </aside>
        <t indent="0" pn="section-2.6-5">The identity of a candidate path <bcp14>MUST</bcp14> be uniquely established in
        the context of an SR Policy &lt;Headend, Color, Endpoint&gt; to handle
        add, delete, or modify operations on them in an unambiguous manner
        regardless of their source(s).</t>
        <t indent="0" pn="section-2.6-6">The tuple &lt;Protocol-Origin, Originator, Discriminator&gt;
        uniquely identifies a candidate path.</t>
        <t indent="0" pn="section-2.6-7">Candidate paths <bcp14>MAY</bcp14> also be assigned or signaled with a symbolic
        name comprising printable ASCII <xref target="RFC0020" format="default" sectionFormat="of" derivedContent="RFC0020"/> characters
        (i.e., 0x20 to 0x7E) to serve as a user-friendly attribute for
        debugging and troubleshooting purposes. Such symbolic names <bcp14>MUST NOT</bcp14>
        be considered as identifiers for a candidate path. The signaling of
        the candidate path name via BGP and PCEP is described in <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/> and <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/>, respectively.</t>
      </section>
      <section anchor="SR-policy-candidate-path-preference" numbered="true" toc="include" removeInRFC="false" pn="section-2.7">
        <name slugifiedName="name-preference-of-a-candidate-p">Preference of a Candidate Path</name>
        <t indent="0" pn="section-2.7-1">The Preference of the candidate path is used to select the best
        candidate path for an SR Policy. It is a 32-bit value where a higher
        value indicates higher preference and the default Preference value is
        100.</t>
        <t indent="0" pn="section-2.7-2">It is <bcp14>RECOMMENDED</bcp14> that each candidate path of a given SR Policy has
        a different Preference.</t>
        <t indent="0" pn="section-2.7-3">The signaling of the candidate path Preference via BGP and PCEP is
        described in <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/> and <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/>,
        respectively.</t>
      </section>
      <section anchor="SR-policy-candidate-path-validity" numbered="true" toc="include" removeInRFC="false" pn="section-2.8">
        <name slugifiedName="name-validity-of-a-candidate-pat">Validity of a Candidate Path</name>
        <t indent="0" pn="section-2.8-1">A candidate path is usable when it is valid. The <bcp14>RECOMMENDED</bcp14>
        candidate path validity criterion is the validity of at least one of
        its constituent segment lists. The validation rules are specified in
        <xref target="Path-validity" format="default" sectionFormat="of" derivedContent="Section 5"/>.</t>
      </section>
      <section anchor="SR-policy-candidate-path-active" numbered="true" toc="include" removeInRFC="false" pn="section-2.9">
        <name slugifiedName="name-active-candidate-path">Active Candidate Path</name>
        <t indent="0" pn="section-2.9-1">A candidate path is selected when it is valid and it is determined
        to be the best path of the SR Policy. The selected path is referred to
        as the "active path" of the SR Policy in this document.</t>
        <t indent="0" pn="section-2.9-2">Whenever a new path is learned or an active path is deleted, the
        validity of an existing path changes, or an existing path is changed,
        the selection process <bcp14>MUST</bcp14> be re-executed.</t>
        <t indent="0" pn="section-2.9-3">The candidate path selection process operates primarily on the
        candidate path Preference. A candidate path is selected when it is
        valid and it has the highest Preference value among all the valid
        candidate paths of the SR Policy.</t>
        <t indent="0" pn="section-2.9-4">In the case of multiple valid candidate paths of the same
        Preference, the tie-breaking rules are evaluated on the identification
        tuple in the following order until only one valid best path is
        selected: </t>
        <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-2.9-5"><li pn="section-2.9-5.1" derivedCounter="1.">The higher value of Protocol-Origin is selected.</li>
          <li pn="section-2.9-5.2" derivedCounter="2.">If specified by configuration, prefer the existing installed
            path.</li>
          <li pn="section-2.9-5.3" derivedCounter="3.">The lower value of the Originator is selected.</li>
          <li pn="section-2.9-5.4" derivedCounter="4.">Finally, the higher value of the Discriminator is selected.</li>
        </ol>
        <t indent="0" pn="section-2.9-6">The rules are framed with multiple protocols and sources in mind
        and hence may not follow the logic of a single protocol (e.g., BGP best
        path selection). The motivation behind these rules are as follows:
        </t>
        <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2.9-7">
          <li pn="section-2.9-7.1"> 
The Preference, being the primary criterion, allows an operator to influence
selection across paths thus allowing provisioning of multiple path options,
e.g., CP1 is preferred as its Preference value is the highest, and if it
becomes invalid, then CP2 with the next highest Preference value is selected,
and so on.  Since Preference works across protocol sources, it also enables
(where necessary) selective override of the default Protocol-Origin
preference, e.g., to prefer a path signaled via BGP SR Policy over what is
configured.</li>
          <li pn="section-2.9-7.2">The Protocol-Origin allows an operator to set up a default
            selection mechanism across protocol sources, e.g., to prefer
            configured paths over paths signaled via BGP SR Policy or PCEP.</li>
          <li pn="section-2.9-7.3">The Originator allows an operator to have multiple redundant
            controllers and still maintain a deterministic behavior over which
            of them are preferred even if they are providing the same
            candidate paths for the same SR policies to the headend.</li>
          <li pn="section-2.9-7.4">The Discriminator performs the final tie-breaking step to ensure
            a deterministic outcome of selection regardless of the order in
            which candidate paths are signaled across multiple transport
            channels or sessions.</li>
        </ul>
        <t indent="0" pn="section-2.9-8"><xref target="I-D.filsfils-spring-sr-policy-considerations" format="default" sectionFormat="of" derivedContent="SR-POLICY-CONSID"/> provides a set
        of examples to illustrate the active candidate path selection
        rules.</t>
      </section>
      <section anchor="SR-policy-validity" numbered="true" toc="include" removeInRFC="false" pn="section-2.10">
        <name slugifiedName="name-validity-of-an-sr-policy">Validity of an SR Policy</name>
        <t indent="0" pn="section-2.10-1">An SR Policy is valid when it has at least one valid candidate
        path.</t>
      </section>
      <section anchor="SR-policy-instantiation" numbered="true" toc="include" removeInRFC="false" pn="section-2.11">
        <name slugifiedName="name-instantiation-of-an-sr-poli">Instantiation of an SR Policy in the Forwarding Plane</name>
        <t indent="0" pn="section-2.11-1">Generally, only valid SR policies are instantiated in the
        forwarding plane.</t>
        <t indent="0" pn="section-2.11-2">Only the active candidate path <bcp14>MUST</bcp14> be used for forwarding traffic
        that is being steered onto that policy except for certain scenarios
        such as fast reroute where a backup candidate path may be used as
        described in <xref target="cp-path-protection" format="default" sectionFormat="of" derivedContent="Section 9.3"/>.</t>
        <t indent="0" pn="section-2.11-3">If a set of segment lists is associated with the active path of the
        policy, then the steering is per flow and weighted-ECMP (W-ECMP) based
        according to the relative weight of each segment list.</t>
        <t indent="0" pn="section-2.11-4">The fraction of the flows associated with a given segment list is
        w/⁠Sw, where w is the weight of the segment list and Sw is the sum of
        the weights of the segment lists of the selected path of the SR
        Policy.</t>
        <t indent="0" pn="section-2.11-5">When a composite candidate path is active, the fraction of flows
        steered into each constituent SR Policy is equal to the relative
        weight of each constituent SR Policy. Further load-balancing of flows
        steered into a constituent SR Policy is performed based on the weights
        of the segment list of the active candidate path of that constituent
        SR Policy.</t>
        <t indent="0" pn="section-2.11-6">The accuracy of the weighted load-balancing depends on the platform
        implementation.</t>
      </section>
      <section anchor="SR-policy-priority" numbered="true" toc="include" removeInRFC="false" pn="section-2.12">
        <name slugifiedName="name-priority-of-an-sr-policy">Priority of an SR Policy</name>
        <t indent="0" pn="section-2.12-1">Upon topological change, many policies could be re-computed or
        revalidated. An implementation <bcp14>MAY</bcp14> provide a per-policy priority
        configuration. The operator may set this field to indicate the order
        in which the policies should be re-computed. Such a priority is
        represented by an integer in the range (0, 255) where the lowest value
        is the highest priority. The default value of priority is 128.</t>
        <t indent="0" pn="section-2.12-2">An SR Policy may comprise multiple candidate paths received from
        the same or different sources. A candidate path <bcp14>MAY</bcp14> be signaled with a
        priority value. When an SR Policy has multiple candidate paths with
        distinct signaled non-default priority values and the SR Policy itself
        does not have a priority value configured, the SR Policy as a whole
        takes the lowest value (i.e., the highest priority) amongst these
        signaled priority values.</t>
      </section>
      <section anchor="SR-policy-summary" numbered="true" toc="include" removeInRFC="false" pn="section-2.13">
        <name slugifiedName="name-summary">Summary</name>
        <t indent="0" pn="section-2.13-1">In summary, the information model is the following:</t>
        <dl newline="false" spacing="compact" indent="0" pn="section-2.13-2">
          <dt pn="section-2.13-2.1">SR Policy POL1</dt>
          <dd pn="section-2.13-2.2"> &lt;Headend = H1, Color = 1, Endpoint = E1&gt;
	  </dd>
          <dt pn="section-2.13-2.3">Candidate Path CP1</dt>
          <dd pn="section-2.13-2.4">&lt;Protocol-Origin = 20, Originator = 64511:192.0.2.1, Discriminator = 1&gt;
	  </dd>
          <dt pn="section-2.13-2.5">          Preference</dt>
          <dd pn="section-2.13-2.6">200
	  </dd>
          <dt pn="section-2.13-2.7">          Priority</dt>
          <dd pn="section-2.13-2.8">10
	  </dd>
          <dt pn="section-2.13-2.9">          Segment List 1 </dt>
          <dd pn="section-2.13-2.10">&lt;SID11...SID1i&gt;, Weight W1
	  </dd>
          <dt pn="section-2.13-2.11">          Segment List 2 </dt>
          <dd pn="section-2.13-2.12">&lt;SID21...SID2j&gt;, Weight W2
	  </dd>
          <dt pn="section-2.13-2.13">     Candidate Path CP2 </dt>
          <dd pn="section-2.13-2.14">&lt;Protocol-Origin = 20, Originator = 64511:192.0.2.2, Discriminator = 2&gt;
	  </dd>
          <dt pn="section-2.13-2.15">          Preference</dt>
          <dd pn="section-2.13-2.16">100
	  </dd>
          <dt pn="section-2.13-2.17">          Priority</dt>
          <dd pn="section-2.13-2.18">10
	  </dd>
          <dt pn="section-2.13-2.19">          Segment List 3</dt>
          <dd pn="section-2.13-2.20"> &lt;SID31...SID3i&gt;, Weight W3
	  </dd>
          <dt pn="section-2.13-2.21">          Segment List 4 </dt>
          <dd pn="section-2.13-2.22">&lt;SID41...SID4j&gt;, Weight W4
	  </dd>
        </dl>
        <t indent="0" pn="section-2.13-3">The SR Policy POL1 is identified by the tuple &lt;Headend, Color,
        Endpoint&gt;. It has two candidate paths: CP1 and CP2. Each is
        identified by a tuple &lt;Protocol-Origin, Originator,
        Discriminator&gt; within the scope of POL1. CP1 is the active
        candidate path (it is valid and has the highest Preference). The two
        segment lists of CP1 are installed as the forwarding instantiation of
        SR Policy POL1. Traffic steered on POL1 is flow-based hashed on
        segment list &lt;SID11...SID1i&gt; with a ratio W1/(W1+W2).</t>
        <t indent="0" pn="section-2.13-4">The information model of SR Policy POL100 having a composite
        candidate path is the following:</t>
        <dl newline="false" spacing="compact" indent="50" pn="section-2.13-5">
          <dt pn="section-2.13-5.1">SR Policy POL100 &lt;Headend = H1, Color = 100, Endpoint = E1&gt;</dt>
          <dd pn="section-2.13-5.2"/>
          <dt pn="section-2.13-5.3">     Candidate Path CP1 &lt;Protocol-Origin = 20, Originator = 64511:192.0.2.1, Discriminator = 1&gt;</dt>
          <dd pn="section-2.13-5.4"/>
          <dt pn="section-2.13-5.5">         Preference 200</dt>
          <dd pn="section-2.13-5.6"/>
          <dt pn="section-2.13-5.7">         SR Policy &lt;Color = 1&gt;, Weight W1</dt>
          <dd pn="section-2.13-5.8"/>
          <dt pn="section-2.13-5.9">         SR Policy &lt;Color = 2&gt;, Weight W2</dt>
          <dd pn="section-2.13-5.10"/>
        </dl>
        <t indent="0" pn="section-2.13-6">The constituent SR Policies POL1 and POL2 have an information model
        as described at the start of this section. They are referenced only by
        color in the composite candidate path since their headend and endpoint
        are identical to the POL100. The valid segment lists of the active
        candidate path of POL1 and POL2 are installed in the forwarding.
        Traffic steered on POL100 is hashed on a per-flow basis on POL1 with a
        proportion W1/(W1+W2). Within the POL1, the flow-based hashing over
        its segment lists are performed as described earlier in this
        section.</t>
      </section>
    </section>
    <section anchor="SR-database" numbered="true" toc="include" removeInRFC="false" pn="section-3">
      <name slugifiedName="name-segment-routing-database">Segment Routing Database</name>
      <t indent="0" pn="section-3-1">An SR Policy computation node (e.g., headend or controller) maintains
      the Segment Routing Database (SR-DB). The SR-DB is a conceptual database
      to illustrate the various pieces of information and their sources that
      may help in SR Policy computation and validation. There is no specific
      requirement for an implementation to create a new database as such.</t>
      <t indent="0" pn="section-3-2">An SR headend leverages the SR-DB to validate explicit candidate
      paths and compute dynamic candidate paths.</t>
      <t indent="0" pn="section-3-3">The information in the SR-DB may include: </t>
      <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-3-4">
        <li pn="section-3-4.1">IGP information (topology, IGP metrics based on IS-IS <xref target="RFC1195" format="default" sectionFormat="of" derivedContent="RFC1195"/> and OSPF <xref target="RFC2328" format="default" sectionFormat="of" derivedContent="RFC2328"/> <xref target="RFC5340" format="default" sectionFormat="of" derivedContent="RFC5340"/>)</li>
        <li pn="section-3-4.2">Segment Routing information (such as Segment Routing Global
          Block, Segment Routing Local Block, Prefix-SIDs, Adj-SIDs, BGP
          Peering SID, SRv6 SIDs) <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/></li>
        <li pn="section-3-4.3">TE Link Attributes (such as TE metric, Shared Risk Link Groups,
          attribute-flag, extended admin group) <xref target="RFC5305" format="default" sectionFormat="of" derivedContent="RFC5305"/> <xref target="RFC3630" format="default" sectionFormat="of" derivedContent="RFC3630"/> <xref target="RFC5329" format="default" sectionFormat="of" derivedContent="RFC5329"/></li>
        <li pn="section-3-4.4">Extended TE Link attributes (such as latency, loss) <xref target="RFC8570" format="default" sectionFormat="of" derivedContent="RFC8570"/> <xref target="RFC7471" format="default" sectionFormat="of" derivedContent="RFC7471"/></li>
        <li pn="section-3-4.5">Inter-AS Topology information <xref target="RFC9086" format="default" sectionFormat="of" derivedContent="RFC9086"/></li>
      </ul>
      <t indent="0" pn="section-3-5">The attached domain topology may be learned via protocol/mechanisms
      such as IGP, Border Gateway Protocol - Link State (BGP-LS), or NETCONF.</t>
      <t indent="0" pn="section-3-6">A non-attached (remote) domain topology may be learned via
      protocol/mechanisms such as BGP-LS or NETCONF.</t>
      <t indent="0" pn="section-3-7">In some use cases, the SR-DB may only contain the attached domain
      topology while in others, the SR-DB may contain the topology of multiple
      domains and in this case, it is multi-domain capable.</t>
      <t indent="0" pn="section-3-8">The SR-DB may also contain the SR Policies instantiated in the
      network. This can be collected via BGP-LS <xref target="I-D.ietf-idr-te-lsp-distribution" format="default" sectionFormat="of" derivedContent="BGP-LS-TE-POLICY"/> or PCEP
      <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/> (along with <xref target="I-D.ietf-pce-segment-routing-policy-cp" format="default" sectionFormat="of" derivedContent="PCEP-SR-POLICY-CP"/> and
      <xref target="I-D.ietf-pce-binding-label-sid" format="default" sectionFormat="of" derivedContent="PCEP-BSID-LABEL"/>). This
      information allows to build an end-to-end policy on the basis of
      intermediate SR policies (see <xref target="Binding-SID" format="default" sectionFormat="of" derivedContent="Section 6"/> for further details).</t>
      <t indent="0" pn="section-3-9">The SR-DB may also contain the Maximum SID Depth (MSD) capability of
      nodes in the topology. This can be collected via IS-IS <xref target="RFC8491" format="default" sectionFormat="of" derivedContent="RFC8491"/>, OSPF <xref target="RFC8476" format="default" sectionFormat="of" derivedContent="RFC8476"/>, BGP-LS <xref target="RFC8814" format="default" sectionFormat="of" derivedContent="RFC8814"/>, or PCEP <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>.</t>
      <t indent="0" pn="section-3-10">The use of the SR-DB for path computation and for the validation of
      optimization objective and constraints of paths is outside the scope of
      this document. Some implementation aspects related to path computation
      are covered in <xref target="I-D.filsfils-spring-sr-policy-considerations" format="default" sectionFormat="of" derivedContent="SR-POLICY-CONSID"/>.</t>
    </section>
    <section anchor="SID-List" numbered="true" toc="include" removeInRFC="false" pn="section-4">
      <name slugifiedName="name-segment-types">Segment Types</name>
      <t indent="0" pn="section-4-1">A segment list is an ordered set of segments represented as &lt;S1,
      S2, ... Sn&gt; where S1 is the first segment.</t>
      <t indent="0" pn="section-4-2">Based on the desired data plane, either the MPLS label stack or the
      SRv6 Segment Routing Header <xref target="RFC8754" format="default" sectionFormat="of" derivedContent="RFC8754"/> is built from the
      segment list. However, the segment list itself can be specified using
      different segment-descriptor types and the following are currently
      defined:</t>
      <dl newline="true" spacing="compact" indent="6" pn="section-4-3">
        <dt pn="section-4-3.1">Type A: SR-MPLS Label:</dt>
        <dd pn="section-4-3.2">
          <t indent="0" pn="section-4-3.2.1">An MPLS label
          corresponding to any of the segment types defined for SR-MPLS (as
          defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> or other SR-MPLS specifications)
          can be used. Additionally, special purpose labels like explicit-null
          or in general any MPLS label <bcp14>MAY</bcp14> also be used. For example, this type can be
          used to specify a label representation that maps to an optical
          transport path on a packet transport node. </t>
          <t indent="0" pn="section-4-3.2.2"/>
        </dd>
        <dt pn="section-4-3.3">Type B: SRv6 SID:</dt>
        <dd pn="section-4-3.4">
          <t indent="0" pn="section-4-3.4.1">An IPv6 address
          corresponding to any of the SID behaviors for SRv6 (as defined in
          <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> or other SRv6 specifications) can be used.
          Optionally, the SRv6 SID behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> or other SRv6 specifications) and structure (as
          defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> also be provided for the
          headend to perform validation of the SID when using it for building
          the segment list.</t>
          <t indent="0" pn="section-4-3.4.2"/>
        </dd>
        <dt pn="section-4-3.5">Type C: IPv4 Prefix with optional SR Algorithm:</dt>
        <dd pn="section-4-3.6">
          <t indent="0" pn="section-4-3.6.1">In
          this case, the headend is required to resolve the specified IPv4
          Prefix Address to the SR-MPLS label corresponding to its Prefix SID
          segment (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>). The SR algorithm
          (refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>) to be used <bcp14>MAY</bcp14>
          also be provided. </t>
          <t indent="0" pn="section-4-3.6.2"/>
        </dd>
        <dt pn="section-4-3.7">Type D: IPv6 Global Prefix with optional SR Algorithm for SR-MPLS:</dt>
        <dd pn="section-4-3.8">
          <t indent="0" pn="section-4-3.8.1">In
          this case, the headend is required to resolve the specified IPv6
          Global Prefix Address to the SR-MPLS label corresponding to its
          Prefix SID segment (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>). The SR
          Algorithm (refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>) to be
          used <bcp14>MAY</bcp14> also be provided. </t>
          <t indent="0" pn="section-4-3.8.2"/>
        </dd>
        <dt pn="section-4-3.9">Type E: IPv4 Prefix with Local Interface ID:</dt>
        <dd pn="section-4-3.10">
          <t indent="0" pn="section-4-3.10.1">This
          type allows for identification of an Adjacency SID or BGP Peer Adjacency
          SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>) SR-MPLS label for
          point-to-point links including IP unnumbered links. The headend is
          required to resolve the specified IPv4 Prefix Address to the node
          originating it and then use the Local Interface ID to identify the
          point-to-point link whose adjacency is being referred to. The Local
          Interface ID link descriptor follows semantics as specified in <xref target="RFC5307" format="default" sectionFormat="of" derivedContent="RFC5307"/>. This type can also be used to indicate
          indirection into a layer 2 interface (i.e., without IP address) like
          a representation of an optical transport path or a layer 2 Ethernet
          port or circuit at the specified node. </t>
          <t indent="0" pn="section-4-3.10.2"/>
        </dd>
        <dt pn="section-4-3.11">Type F: IPv4 Addresses for link endpoints as Local, Remote pair:</dt>
        <dd pn="section-4-3.12">
          <t indent="0" pn="section-4-3.12.1">This
          type allows for identification of an Adjacency SID or BGP Peer Adjacency
          SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>) SR-MPLS label for
          links. The headend is required to resolve the specified IPv4 Local
          Address to the node originating it and then use the IPv4 Remote
          Address to identify the link adjacency being referred to. The Local
          and Remote Address pair link descriptors follow semantics as
          specified in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>. </t>
          <t indent="0" pn="section-4-3.12.2"/>
        </dd>
        <dt pn="section-4-3.13">Type G: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SR-MPLS:</dt>
        <dd pn="section-4-3.14">
          <t indent="0" pn="section-4-3.14.1">This
          type allows for identification of an Adjacency SID or BGP Peer Adjacency
          SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>) label for links
          including those with only Link-Local IPv6 addresses. The headend is
          required to resolve the specified IPv6 Prefix Address to the node
          originating it and then use the Local Interface ID to identify the
          point-to-point link whose adjacency is being referred to. For other
          than point-to-point links, additionally the specific adjacency over
          the link needs to be resolved using the Remote Prefix and Interface
          ID. The Local and Remote pair of Prefix and Interface ID link
          descriptor follows semantics as specified in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>. This type can also be used to indicate
          indirection into a layer 2 interface (i.e., without IP address) like
          a representation of an optical transport path or a layer 2 Ethernet
          port or circuit at the specified node. </t>
          <t indent="0" pn="section-4-3.14.2"/>
        </dd>
        <dt pn="section-4-3.15">Type H: IPv6 Addresses for link endpoints as Local, Remote pair for SR-MPLS:</dt>
        <dd pn="section-4-3.16">
          <t indent="0" pn="section-4-3.16.1">This
          type allows for identification of an Adjacency SID or BGP Peer Adjacency
          SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>) label for links with
          Global IPv6 addresses. The headend is required to resolve the
          specified Local IPv6 Address to the node originating it and then use
          the Remote IPv6 Address to identify the link adjacency being
          referred to. The Local and Remote Address pair link descriptors
          follow semantics as specified in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>. </t>
          <t indent="0" pn="section-4-3.16.2"/>
        </dd>
        <dt pn="section-4-3.17">Type I: IPv6 Global Prefix with optional SR Algorithm for SRv6:</dt>
        <dd pn="section-4-3.18">
          <t indent="0" pn="section-4-3.18.1">The
          headend is required to resolve the specified IPv6 Global Prefix
          Address to an SRv6 SID corresponding to a Prefix SID segment (as
          defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>), such as a SID associated with
          the End behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) of the
          node that is originating the prefix. The SR Algorithm (refer to
          <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>), the SRv6 SID behavior
          (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> or other SRv6
          specifications), and structure (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> also be provided.</t>
          <t indent="0" pn="section-4-3.18.2"/>
        </dd>
        <dt pn="section-4-3.19">Type J: IPv6 Prefix and Interface ID for link endpoints as Local, Remote pair for SRv6:</dt>
        <dd pn="section-4-3.20">
          <t indent="0" pn="section-4-3.20.1">This
          type allows for identification of an SRv6 SID corresponding to an
          Adjacency SID or BGP Peer Adjacency SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>), such as a SID associated with the End.X
          behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) associated with
          link or adjacency with only Link-Local IPv6 addresses. The headend
          is required to resolve the specified IPv6 Prefix Address to the node
          originating it and then use the Local Interface ID to identify the
          point-to-point link whose adjacency is being referred to. For other
          than point-to-point links, additionally the specific adjacency needs
          to be resolved using the Remote Prefix and Interface ID. The Local
          and Remote pair of Prefix and Interface ID link descriptor follows
          semantics as specified in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>. The SR Algorithm
          (refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>), the SRv6 SID
          behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> or other SRv6
          specifications), and structure (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> also be provided.</t>
          <t indent="0" pn="section-4-3.20.2"/>
        </dd>
        <dt pn="section-4-3.21">Type K: IPv6 Addresses for link endpoints as Local, Remote pair for SRv6:</dt>
        <dd pn="section-4-3.22">
          <t indent="0" pn="section-4-3.22.1">This type allows for identification of an SRv6 SID corresponding to
          an Adjacency SID or BGP Peer Adjacency SID (as defined in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>), such as a SID associated with
          the End.X behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) associated with link or adjacency with Global
          IPv6 addresses. The headend is required to resolve the specified
          Local IPv6 Address to the node originating it and then use the
          Remote IPv6 Address to identify the link adjacency being referred
          to. The Local and Remote Address pair link descriptors follow
          semantics as specified in <xref target="RFC7752" format="default" sectionFormat="of" derivedContent="RFC7752"/>. The SR Algorithm (refer to <xref target="RFC8402" sectionFormat="of" section="3.1.1" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-3.1.1" derivedContent="RFC8402"/>), the SRv6 SID behavior (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> or other SRv6 specifications),
          and structure (as defined in <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> also be provided.</t>
          <t indent="0" pn="section-4-3.22.2"/>
        </dd>
      </dl>
      <t indent="0" pn="section-4-4">When the algorithm is not specified for the SID types above which
      optionally allow for it, the headend <bcp14>SHOULD</bcp14> use the Strict Shortest Path
      algorithm if available and otherwise, it <bcp14>SHOULD</bcp14> use the default Shortest
      Path algorithm.

      The specification of the algorithm enables the use of SIDs specific to
      the IGP Flex Algorithm <xref target="I-D.ietf-lsr-flex-algo" format="default" sectionFormat="of" derivedContent="IGP-FLEX-ALGO"/> in SR Policy.</t>
      <t indent="0" pn="section-4-5">For SID types C through K, a SID value <bcp14>MAY</bcp14> also be optionally
      provided to the headend for verification purposes. <xref target="Path-validity-explicit" format="default" sectionFormat="of" derivedContent="Section 5.1"/> describes the resolution and
      verification of the SIDs and segment lists on the headend.</t>
      <t indent="0" pn="section-4-6">When building the MPLS label stack or the SRv6 SID list from the
      segment list, the node instantiating the policy <bcp14>MUST</bcp14> interpret the set
      of Segments as follows: </t>
      <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-4-7">
        <li pn="section-4-7.1">The first Segment represents the topmost MPLS label or the first
        SRv6 SID. It identifies the active segment the traffic will be
        directed toward along the explicit SR path.</li>
        <li pn="section-4-7.2">The last segment represents the bottommost MPLS label or the last
        SRv6 SID the traffic will be directed toward along the explicit SR
        path.</li>
      </ul>
      <section anchor="Explicit-Null" numbered="true" toc="include" removeInRFC="false" pn="section-4.1">
        <name slugifiedName="name-explicit-null">Explicit Null</name>
        <t indent="0" pn="section-4.1-1">A Type A SID <bcp14>MAY</bcp14> be any MPLS label, including special purpose
        labels.</t>
        <t indent="0" pn="section-4.1-2">For example, assuming that the desired traffic-engineered path from
        a headend 1 to an endpoint 4 can be expressed by the segment list
        &lt;16002, 16003, 16004&gt; where 16002, 16003, and 16004, respectively,
        refer to the IPv4 Prefix SIDs bound to nodes 2, 3, and 4, then IPv6
        traffic can be traffic-engineered from nodes 1 to 4 via the previously
        described path using an SR Policy with segment list &lt;16002, 16003,
        16004, 2&gt; where the MPLS label value of 2 represents the "IPv6
        Explicit NULL Label".</t>
        <t indent="0" pn="section-4.1-3">The penultimate node before node 4 will pop 16004 and will forward
        the frame on its directly connected interface to node 4.</t>
        <t indent="0" pn="section-4.1-4">The endpoint receives the traffic with the top label "2", which
        indicates that the payload is an IPv6 packet.</t>
        <t indent="0" pn="section-4.1-5">When steering unlabeled IPv6 BGP destination traffic using an SR
        Policy composed of segment list(s) based on IPv4 SIDs, the Explicit
        Null Label Policy is processed as specified in <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/>. When
        an "IPv6 Explicit NULL label" is not present as the bottom
        label, the headend <bcp14>SHOULD</bcp14> automatically impose one. Refer to <xref target="Steering" format="default" sectionFormat="of" derivedContent="Section 8"/> for more details.</t>
      </section>
    </section>
    <section anchor="Path-validity" numbered="true" toc="include" removeInRFC="false" pn="section-5">
      <name slugifiedName="name-validity-of-a-candidate-path">Validity of a Candidate Path</name>
      <section anchor="Path-validity-explicit" numbered="true" toc="include" removeInRFC="false" pn="section-5.1">
        <name slugifiedName="name-explicit-candidate-path">Explicit Candidate Path</name>
        <t indent="0" pn="section-5.1-1">An explicit candidate path is associated with a segment list or a
        set of segment lists.</t>
        <t indent="0" pn="section-5.1-2">An explicit candidate path is provisioned by the operator directly
        or via a controller.</t>
        <t indent="0" pn="section-5.1-3">The computation/logic that leads to the choice of the segment list
        is external to the SR Policy headend. The SR Policy headend does not
        compute the segment list. The SR Policy headend only confirms its
        validity.</t>
        <t indent="0" pn="section-5.1-4">An explicit candidate path <bcp14>MAY</bcp14> consist of a single explicit
        segment list containing only an implicit-null label to indicate
        pop-and-forward behavior. The Binding SID (BSID) is popped and the
        traffic is forwarded based on the inner label or an IP lookup in the
        case of unlabeled IP packets. Such an explicit path can serve as a
        fallback or path of last resort for traffic being steered into an SR
        Policy using its BSID (refer to <xref target="Steering-Incoming-BSID" format="default" sectionFormat="of" derivedContent="Section 8.3"/>).</t>
        <t indent="0" pn="section-5.1-5">A segment list of an explicit candidate path <bcp14>MUST</bcp14> be declared
        invalid when any of the following is true: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-5.1-6">
          <li pn="section-5.1-6.1">It is empty.</li>
          <li pn="section-5.1-6.2">Its weight is 0.</li>
          <li pn="section-5.1-6.3">It comprises a mix of SR-MPLS and SRv6 segment types.</li>
          <li pn="section-5.1-6.4">The headend is unable to perform path resolution for the first
            SID into one or more outgoing interface(s) and next-hop(s).</li>
          <li pn="section-5.1-6.5">The headend is unable to perform SID resolution for any
            non-first SID of type C through K into an MPLS label or an SRv6
            SID.</li>
          <li pn="section-5.1-6.6">The headend verification fails for any SID for which
            verification has been explicitly requested.</li>
        </ul>
        <t indent="0" pn="section-5.1-7">"Unable to perform path resolution" means that the headend has no
        path to the SID in its SR database.</t>
        <t indent="0" pn="section-5.1-8">SID verification is performed when the headend is explicitly
        requested to verify SID(s) by the controller via the signaling
        protocol used. Implementations <bcp14>MAY</bcp14> provide a local configuration
        option to enable verification on a global or per-policy or per-candidate path basis.</t>
        <t indent="0" pn="section-5.1-9">"Verification fails" for a SID means any of the following:</t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-5.1-10">
          <li pn="section-5.1-10.1">The headend is unable to find the SID in its SR-DB</li>
          <li pn="section-5.1-10.2">The headend detects a mismatch between the SID value provided
            and the SID value resolved by context provided for SIDs of type
            C through K in its SR-DB.</li>
          <li pn="section-5.1-10.3">The headend is unable to perform SID resolution for any
            non-first SID of type C through K into an MPLS label or an SRv6
            SID.</li>
        </ul>
        <t indent="0" pn="section-5.1-11">In multi-domain deployments, it is expected that the headend may be
        unable to verify the reachability of the SIDs in remote domains. Types
        A or B <bcp14>MUST</bcp14> be used for the SIDs for which the reachability cannot be
        verified. Note that the first SID <bcp14>MUST</bcp14> always be reachable regardless
        of its type.</t>
        <t indent="0" pn="section-5.1-12">Additionally, a segment list <bcp14>MAY</bcp14> be declared invalid when both of
        the conditions below are met : </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-5.1-13">
          <li pn="section-5.1-13.1">Its last segment is not a Prefix SID (including BGP Peer
            Node-SID) advertised by the node specified as the endpoint of the
            corresponding SR Policy.</li>
          <li pn="section-5.1-13.2">Its last segment is not an Adjacency SID (including BGP Peer
            Adjacency SID) of any of the links present on neighbor nodes and
            that terminate on the node specified as the endpoint of the
            corresponding SR Policy.</li>
        </ul>
        <t indent="0" pn="section-5.1-14">An explicit candidate path is invalid as soon as it has no valid
        segment list.</t>
        <t indent="0" pn="section-5.1-15">Additionally, an explicit candidate path <bcp14>MAY</bcp14> be declared invalid
        when its constituent segment lists (valid or invalid) are using
        segment types of different SR data planes.</t>
      </section>
      <section anchor="Path-validity-dynamic" numbered="true" toc="include" removeInRFC="false" pn="section-5.2">
        <name slugifiedName="name-dynamic-candidate-path">Dynamic Candidate Path</name>
        <t indent="0" pn="section-5.2-1">A dynamic candidate path is specified as an optimization objective
        and a set of constraints.</t>
        <t indent="0" pn="section-5.2-2">The headend of the policy leverages its SR database to compute a
        segment list ("solution segment list") that solves this optimization
        problem for either the SR-MPLS or the SRv6 data plane as
        specified.</t>
        <t indent="0" pn="section-5.2-3">The headend re-computes the solution segment list any time the
        inputs to the problem change (e.g., topology changes).</t>
        <t indent="0" pn="section-5.2-4">When the local computation is not possible (e.g., a policy's
        tail end is outside the topology known to the headend) or not desired,
        the headend may rely on an external entity. For example, a path
        computation request may be sent to a PCE supporting PCEP extensions
        specified in <xref target="RFC8664" format="default" sectionFormat="of" derivedContent="RFC8664"/>.</t>
        <t indent="0" pn="section-5.2-5">If no solution is found to the optimization objective and
        constraints, then the dynamic candidate path <bcp14>MUST</bcp14> be declared
        invalid.</t>
        <t indent="0" pn="section-5.2-6"><xref target="I-D.filsfils-spring-sr-policy-considerations" format="default" sectionFormat="of" derivedContent="SR-POLICY-CONSID"/> discusses some
        of the optimization objectives and constraints that may be considered
        by a dynamic candidate path. It illustrates some of the desirable
        properties of the computation of the solution segment list.</t>
      </section>
      <section anchor="Path-validity-composite" numbered="true" toc="include" removeInRFC="false" pn="section-5.3">
        <name slugifiedName="name-composite-candidate-path">Composite Candidate Path</name>
        <t indent="0" pn="section-5.3-1">A composite candidate path is specified as a group of its
        constituent SR Policies.</t>
        <t indent="0" pn="section-5.3-2">A composite candidate path is valid when it has at least one valid
        constituent SR Policy.</t>
      </section>
    </section>
    <section anchor="Binding-SID" numbered="true" toc="include" removeInRFC="false" pn="section-6">
      <name slugifiedName="name-binding-sid">Binding SID</name>
      <t indent="0" pn="section-6-1">The Binding SID (BSID) is fundamental to Segment Routing <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>. It provides scaling, network opacity, and service
      independence. <xref target="I-D.filsfils-spring-sr-policy-considerations" format="default" sectionFormat="of" derivedContent="SR-POLICY-CONSID"/> illustrates some
      of these benefits. This section describes the association of BSID with
      an SR Policy.</t>
      <section anchor="Binding-SID-candidate-path" numbered="true" toc="include" removeInRFC="false" pn="section-6.1">
        <name slugifiedName="name-bsid-of-a-candidate-path">BSID of a Candidate Path</name>
        <t indent="0" pn="section-6.1-1">Each candidate path <bcp14>MAY</bcp14> be defined with a BSID.</t>
        <t indent="0" pn="section-6.1-2">Candidate paths of the same SR Policy <bcp14>SHOULD</bcp14> have the same
        BSID.</t>
        <t indent="0" pn="section-6.1-3">Candidate paths of different SR Policies <bcp14>MUST NOT</bcp14> have the same
        BSID.</t>
      </section>
      <section anchor="Binding-SID-sr-policy" numbered="true" toc="include" removeInRFC="false" pn="section-6.2">
        <name slugifiedName="name-bsid-of-an-sr-policy">BSID of an SR Policy</name>
        <t indent="0" pn="section-6.2-1">The BSID of an SR Policy is the BSID of its active candidate
        path.</t>
        <t indent="0" pn="section-6.2-2">
	  When the active candidate path has a specified BSID, the SR Policy
	  uses that BSID if this value (label in MPLS, IPv6 address in SRv6)
	  is available. A BSID is available when its value is not associated
	  with any other usage, e.g., a label used by some other MPLS
	  forwarding entry or an SRv6 SID used in some other context (such as
	  to another segment, to another SR Policy, or that it is outside the
	  range of SRv6 Locators).
</t>
        <t indent="0" pn="section-6.2-3">In the case of SR-MPLS, SRv6 BSIDs (e.g., with the behavior End.BM
        <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> be associated with the SR Policy in
        addition to the MPLS BSID. In the case of SRv6, multiple SRv6 BSIDs
        (e.g., with different behaviors like End.B6.Encaps and End.B6.Encaps.Red
        <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>) <bcp14>MAY</bcp14> be associated with the SR Policy.</t>
        <t indent="0" pn="section-6.2-4">Optionally, instead of only checking that the BSID of the active
        path is available, a headend <bcp14>MAY</bcp14> check that it is available within the
        given SID range i.e., Segment Routing Local Block (SRLB) as specified
        in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/>.</t>
        <t indent="0" pn="section-6.2-5">When the specified BSID is not available (optionally is not in the
        SRLB), an alert message <bcp14>MUST</bcp14> be generated via mechanisms like
        syslog.</t>
        <t indent="0" pn="section-6.2-6">In the cases (as described above) where SR Policy does not have a
        BSID available, the SR Policy <bcp14>MAY</bcp14> dynamically bind a BSID to
        itself. Dynamically bound BSIDs <bcp14>SHOULD</bcp14> use an available SID outside the
        SRLB.</t>
        <t indent="0" pn="section-6.2-7">Assuming that at time t the BSID of the SR Policy is B1, if at time
        t+dt a different candidate path becomes active and this new active
        path does not have a specified BSID or its BSID is specified but is
        not available (e.g., it is in use by something else), then the SR
        Policy <bcp14>MAY</bcp14> keep the previous BSID B1.</t>
        <t indent="0" pn="section-6.2-8">The association of an SR Policy with a BSID thus <bcp14>MAY</bcp14> change over
        the life of the SR Policy (e.g., upon active path change). Hence, the
        BSID <bcp14>SHOULD NOT</bcp14> be used as an identification of an SR Policy.</t>
        <section anchor="Binding-SID-sr-policy-unspecified-bsid" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.2.1">
          <name slugifiedName="name-frequent-use-case-unspecifi">Frequent Use Case : Unspecified BSID</name>
          <t indent="0" pn="section-6.2.1-1">All the candidate paths of the same SR Policy can have an
          unspecified BSID.</t>
          <t indent="0" pn="section-6.2.1-2">In such a case, a BSID <bcp14>MAY</bcp14> be dynamically bound to the SR Policy
          as soon as the first valid candidate path is received. That BSID is
          kept through the life of the SR Policy and across changes of the active
          candidate path.</t>
        </section>
        <section anchor="Binding-SID-policy-same-bsid" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.2.2">
          <name slugifiedName="name-frequent-use-case-all-speci">Frequent Use Case: All Specified to the Same BSID</name>
          <t indent="0" pn="section-6.2.2-1">All the paths of the SR Policy can have the same specified
          BSID.</t>
        </section>
        <section anchor="Binding-SID-specified-bsid" numbered="true" toc="exclude" removeInRFC="false" pn="section-6.2.3">
          <name slugifiedName="name-specified-bsid-only">Specified-BSID-only</name>
          <t indent="0" pn="section-6.2.3-1">An implementation <bcp14>MAY</bcp14> support the configuration of the
          Specified-BSID-only restrictive behavior on the headend for all SR
          Policies or individual SR Policies. Further, this restrictive
          behavior <bcp14>MAY</bcp14> also be signaled on a per-SR-Policy basis to the
          headend.</t>
          <t indent="0" pn="section-6.2.3-2">When this restrictive behavior is enabled, if the candidate path
          has an unspecified BSID or if the specified BSID is not available
          when the candidate path becomes active, then no BSID is bound to it
          and the candidate path is considered invalid. An alert <bcp14>MUST</bcp14> be
          triggered for this error via mechanisms like syslog. Other candidate
          paths <bcp14>MUST</bcp14> then be evaluated for becoming the active candidate
          path.</t>
        </section>
      </section>
      <section anchor="Binding-SID-forwarding" numbered="true" toc="include" removeInRFC="false" pn="section-6.3">
        <name slugifiedName="name-forwarding-plane">Forwarding Plane</name>
        <t indent="0" pn="section-6.3-1">A valid SR Policy results in the installation of a BSID-keyed entry
        in the forwarding plane with the action of steering the packets
        matching this entry to the selected path of the SR Policy.</t>
        <t indent="0" pn="section-6.3-2">If the Specified-BSID-only restrictive behavior is enabled and the
        BSID of the active path is not available (optionally not in the SRLB),
        then the SR Policy does not install any entry indexed by a BSID in the
        forwarding plane.</t>
      </section>
      <section anchor="BSID-to-tunnel" numbered="true" toc="include" removeInRFC="false" pn="section-6.4">
        <name slugifiedName="name-non-sr-usage-of-binding-sid">Non-SR Usage of Binding SID</name>
        <t indent="0" pn="section-6.4-1">An implementation <bcp14>MAY</bcp14> choose to associate a Binding SID with any
        type of interface (e.g., a layer 3 termination of an Optical Circuit)
        or a tunnel (e.g., IP tunnel, GRE tunnel, IP/UDP tunnel, MPLS RSVP-TE
        tunnel, etc). This enables the use of other non-SR-enabled interfaces
        and tunnels as segments in an SR Policy segment list without the need
        of forming routing protocol adjacencies over them.</t>
        <t indent="0" pn="section-6.4-2">The details of this kind of usage are beyond the scope of this
        document. A specific packet-optical integration use case is described
        in <xref target="I-D.anand-spring-poi-sr" format="default" sectionFormat="of" derivedContent="POI-SR"/>.</t>
      </section>
    </section>
    <section anchor="Policy-state" numbered="true" toc="include" removeInRFC="false" pn="section-7">
      <name slugifiedName="name-sr-policy-state">SR Policy State</name>
      <t indent="0" pn="section-7-1">The SR Policy state is maintained on the headend to represent the
      state of the policy and its candidate paths. This is to provide an
      accurate representation of whether the SR Policy is being instantiated
      in the forwarding plane and which of its candidate paths and
      segment list(s) are active. The SR Policy state <bcp14>MUST</bcp14> also reflect the
      reason when a policy and/or its candidate path is not active due to
      validation errors or not being preferred. The operational state
      information reported for SR Policies are specified in <xref target="I-D.ietf-spring-sr-policy-yang" format="default" sectionFormat="of" derivedContent="SR-POLICY-YANG"/>.</t>
      <t indent="0" pn="section-7-2">The SR Policy state can be reported by the headend node via BGP-LS
      <xref target="I-D.ietf-idr-te-lsp-distribution" format="default" sectionFormat="of" derivedContent="BGP-LS-TE-POLICY"/> or PCEP <xref target="RFC8231" format="default" sectionFormat="of" derivedContent="RFC8231"/> <xref target="I-D.ietf-pce-binding-label-sid" format="default" sectionFormat="of" derivedContent="PCEP-BSID-LABEL"/>.</t>
      <t indent="0" pn="section-7-3">SR Policy state on the headend also includes traffic accounting
      information for the flows being steered via the policies. The details of
      the SR Policy accounting are beyond the scope of this document. The
      aspects related to the SR traffic counters and their usage in the
      broader context of traffic accounting in an SR network are covered in
      <xref target="I-D.filsfils-spring-sr-traffic-counters" format="default" sectionFormat="of" derivedContent="SR-TRAFFIC-COUNTERS"/> and <xref target="I-D.ali-spring-sr-traffic-accounting" format="default" sectionFormat="of" derivedContent="SR-TRAFFIC-ACCOUNTING"/>, respectively.</t>
      <t indent="0" pn="section-7-4">Implementations <bcp14>MAY</bcp14> support an administrative state to control
      locally provisioned policies via mechanisms like command-line interface (CLI) or NETCONF.</t>
    </section>
    <section anchor="Steering" numbered="true" toc="include" removeInRFC="false" pn="section-8">
      <name slugifiedName="name-steering-into-an-sr-policy">Steering into an SR Policy</name>
      <t indent="0" pn="section-8-1">A headend can steer a packet flow into a valid SR Policy in various
      ways:</t>
      <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8-2">
        <li pn="section-8-2.1">Incoming packets have an active SID matching a local BSID at the
          headend.</li>
        <li pn="section-8-2.2">Per-Destination Steering: incoming packets match a BGP/Service
          route, which recurses on an SR Policy.</li>
        <li pn="section-8-2.3">Per-Flow Steering: incoming packets match or recurse on a
          forwarding array of which some of the entries are SR Policies.</li>
        <li pn="section-8-2.4">Policy-Based Steering: incoming packets match a routing policy
          that directs them on an SR Policy.</li>
      </ul>
      <section anchor="Steering-validity" numbered="true" toc="include" removeInRFC="false" pn="section-8.1">
        <name slugifiedName="name-validity-of-an-sr-policy-2">Validity of an SR Policy</name>
        <t indent="0" pn="section-8.1-1">An SR Policy is invalid when all its candidate paths are invalid as
        described in Sections <xref target="SR-policy-validity" format="counter" sectionFormat="of" derivedContent="2.10"/> and <xref target="Path-validity" format="counter" sectionFormat="of" derivedContent="5"/>.</t>
        <t indent="0" pn="section-8.1-2">By default, upon transitioning to the invalid state, </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.1-3">
          <li pn="section-8.1-3.1">an SR Policy and its BSID are removed from the forwarding
            plane.</li>
          <li pn="section-8.1-3.2">any steering of a service (Pseudowire (PW)), destination
            (BGP-VPN), flow or packet on the related SR Policy is disabled and
            the related service, destination, flow, or packet is routed per
            the classic forwarding table (e.g., longest match to the
            destination or the recursing next-hop).</li>
        </ul>
      </section>
      <section anchor="Steering-drop" numbered="true" toc="include" removeInRFC="false" pn="section-8.2">
        <name slugifiedName="name-drop-upon-invalid-sr-policy">Drop-upon-Invalid SR Policy</name>
        <t indent="0" pn="section-8.2-1">An SR Policy <bcp14>MAY</bcp14> be enabled for the Drop-Upon-Invalid behavior. This would entail the following:
        </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.2-2">
          <li pn="section-8.2-2.1">an invalid SR Policy and its BSID is kept in the forwarding
            plane with an action to drop.</li>
          <li pn="section-8.2-2.2">any steering of a service (PW), destination (BGP-VPN), flow, or
            packet on the related SR Policy is maintained with the action to
            drop all of this traffic.</li>
        </ul>
        <t indent="0" pn="section-8.2-3">The Drop-Upon-Invalid behavior has been deployed in use cases
        where the operator wants some PW to only be transported on a path with
        specific constraints. When these constraints are no longer met, the
        operator wants the PW traffic to be dropped. Specifically, the
        operator does not want the PW to be routed according to the IGP
        shortest path to the PW endpoint.</t>
      </section>
      <section anchor="Steering-Incoming-BSID" numbered="true" toc="include" removeInRFC="false" pn="section-8.3">
        <name slugifiedName="name-incoming-active-sid-is-a-bs">Incoming Active SID is a BSID</name>
        <t indent="0" pn="section-8.3-1">Let us assume that headend H has a valid SR Policy P of
        segment list &lt;S1, S2, S3&gt; and BSID B.</t>
        <t indent="0" pn="section-8.3-2">In the case of SR-MPLS, when H receives a packet K with label stack
        &lt;B, L2, L3&gt;, H pops B and pushes &lt;S1, S2, S3&gt; and forwards
        the resulting packet according to SID S1. </t>
        <aside pn="section-8.3-3">
          <t indent="0" pn="section-8.3-3.1">          "Forwards the resulting packet according to SID S1" means: If S1
            is an Adj-SID or a PHP-enabled prefix SID advertised by a
            neighbor, H sends the resulting packet with label stack &lt;S2,
            S3, L2, L3&gt; on the outgoing interface associated with S1; Else,
            H sends the resulting packet with label stack &lt;S1, S2, S3, L2,
            L3&gt; along the path of S1.</t>
        </aside>
        <t indent="0" pn="section-8.3-4">In the case of SRv6, the processing is similar and follows the SR
        Policy headend behaviors as specified in <xref target="RFC8986" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8986#section-5" derivedContent="RFC8986"/>.</t>
        <t indent="0" pn="section-8.3-5">H has steered the packet into the SR Policy P.</t>
        <t indent="0" pn="section-8.3-6">H did not have to classify the packet. The classification was done
        by a node upstream of H (e.g., the source of the packet or an
        intermediate ingress edge node of the SR domain) and the result of
        this classification was efficiently encoded in the packet header as a
        BSID.</t>
        <t indent="0" pn="section-8.3-7">This is another key benefit of the segment routing in general and
        the binding SID in particular: the ability to encode a classification
        and the resulting steering in the packet header to better scale and
        simplify intermediate aggregation nodes.</t>
        <t indent="0" pn="section-8.3-8">When Drop-Upon-Invalid (refer to <xref target="Steering-drop" format="default" sectionFormat="of" derivedContent="Section 8.2"/>) is
        not in use, for an invalid SR Policy P, its BSID B is not in the
        forwarding plane and hence, the packet K is dropped by H.</t>
      </section>
      <section anchor="Steering-per-destination" numbered="true" toc="include" removeInRFC="false" pn="section-8.4">
        <name slugifiedName="name-per-destination-steering">Per-Destination Steering</name>
        <t indent="0" pn="section-8.4-1">This section describes how a headend applies steering of flows
        corresponding to BGP routes over SR Policy using the Color Extended
        community <xref target="RFC9012" format="default" sectionFormat="of" derivedContent="RFC9012"/>.</t>
        <t indent="0" pn="section-8.4-2">In the case of SR-MPLS, let us assume that headend H: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.4-3">
          <li pn="section-8.4-3.1">learns a BGP route R/r via next-hop N, Color Extended community
            C, and VPN label V.</li>
          <li pn="section-8.4-3.2">has a valid SR Policy P to (color = C, endpoint = N) of
            segment list &lt;S1, S2, S3&gt; and BSID B.</li>
          <li pn="section-8.4-3.3">has a BGP policy that matches on the Color Extended community C
            and allows its usage as SLA steering information.</li>
        </ul>
        <t indent="0" pn="section-8.4-4">If all these conditions are met, H installs R/r in RIB/FIB with
        next-hop = SR Policy P of BSID B instead of via N.</t>
        <t indent="0" pn="section-8.4-5">Indeed, H's local BGP policy and the received BGP route indicate
        that the headend should associate R/r with an SR Policy path to
        endpoint N with the SLA associated with color C. The headend,
        therefore, installs the BGP route on that policy.</t>
        <t indent="0" pn="section-8.4-6">This can be implemented by using the BSID as a generalized next-hop
        and installing the BGP route on that generalized next-hop.</t>
        <t indent="0" pn="section-8.4-7">When H receives a packet K with a destination matching R/r, H
        pushes the label stack &lt;S1, S2, S3, V&gt; and sends the resulting
        packet along the path to S1.</t>
        <t indent="0" pn="section-8.4-8">Note that any SID associated with the BGP route is inserted after
        the segment list of the SR Policy (i.e., &lt;S1, S2, S3, V&gt;).</t>
        <t indent="0" pn="section-8.4-9">In the case of SRv6, the processing is similar and follows the SR
        Policy headend behaviors as specified in <xref target="RFC8986" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8986#section-5" derivedContent="RFC8986"/>.</t>
        <t indent="0" pn="section-8.4-10">The same behavior applies to any type of service route: any
        AFI/SAFI of BGP <xref target="RFC4760" format="default" sectionFormat="of" derivedContent="RFC4760"/> or the Locator/ID Separation Protocol (LISP) <xref target="RFC6830" format="default" sectionFormat="of" derivedContent="RFC6830"/> for both IPv4/IPv6.</t>
        <t indent="0" pn="section-8.4-11">In a BGP multi-path scenario, the BGP route <bcp14>MAY</bcp14> be resolved over a
        mix of paths that include those that are steered over SR Policies and
        others resolved via the normal BGP next-hop resolution. Implementations
        <bcp14>MAY</bcp14> provide options to prefer one type over the other or other forms
        of local policy to determine the paths that are selected.</t>
        <section anchor="Steering-per-destination-colors" numbered="true" toc="exclude" removeInRFC="false" pn="section-8.4.1">
          <name slugifiedName="name-multiple-colors">Multiple Colors</name>
          <t indent="0" pn="section-8.4.1-1">When a BGP route has multiple Color Extended communities each
          with a valid SR Policy, the BGP process installs the route on the SR
          Policy giving preference to the Color Extended community with the
          highest numerical value.</t>
          <t indent="0" pn="section-8.4.1-2">Let us assume that headend H: </t>
          <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.4.1-3">
            <li pn="section-8.4.1-3.1">learns a BGP route R/r via next-hop N, Color Extended
              communities C1 and C2.</li>
            <li pn="section-8.4.1-3.2">has a valid SR Policy P1 to (color = C1, endpoint = N) of
              segment list &lt;S1, S2, S3&gt; and BSID B1.</li>
            <li pn="section-8.4.1-3.3">has a valid SR Policy P2 to (color = C2, endpoint = N) of
              segment list &lt;S4, S5, S6&gt; and BSID B2.</li>
            <li pn="section-8.4.1-3.4">has a BGP policy that matches the Color Extended communities
              C1 and C2 and allows their usage as SLA steering information</li>
          </ul>
          <t indent="0" pn="section-8.4.1-4"> If all these conditions are met, H installs R/r in RIB/FIB
          with next-hop = SR Policy P2 of BSID=B2 (instead of N) because C2
          &gt; C1.</t>
          <t indent="0" pn="section-8.4.1-5">When the SR Policy with a specific color is not instantiated or
          in the down/inactive state, the SR Policy with the next highest
          numerical value of color is considered.</t>
        </section>
      </section>
      <section anchor="Steering-per-dynamic-BSID" numbered="true" toc="include" removeInRFC="false" pn="section-8.5">
        <name slugifiedName="name-recursion-on-an-on-demand-d">Recursion on an On-Demand Dynamic BSID</name>
        <t indent="0" pn="section-8.5-1">In the previous section, it was assumed that H had a
        pre-established "explicit" SR Policy (color C, endpoint N).</t>
        <t indent="0" pn="section-8.5-2">In this section, independent of the a priori existence of any
        explicit candidate path of the SR Policy (C, N), it is to be noted
        that the BGP process at headend node H triggers the instantiation of a
        dynamic candidate path for the SR Policy (C, N) as soon as: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.5-3">
          <li pn="section-8.5-3.1">the BGP process learns of a route R/r via N and with Color
            Extended community C.</li>
          <li pn="section-8.5-3.2">a local policy at node H authorizes the on-demand SR Policy
            path instantiation and maps the color to a dynamic SR Policy path
            optimization template.</li>
        </ul>
        <section anchor="Steering-per-dynamic-BSID-color" numbered="true" toc="exclude" removeInRFC="false" pn="section-8.5.1">
          <name slugifiedName="name-multiple-colors-2">Multiple Colors</name>
          <t indent="0" pn="section-8.5.1-1">When a BGP route R/r via N has multiple Color Extended
          communities Ci (with i=1 ... n), an individual on-demand SR Policy
          dynamic path request (color Ci, endpoint N) is triggered for each
          color Ci. The SR Policy that is used for steering is then determined
          as described in <xref target="Steering-per-destination-colors" format="default" sectionFormat="of" derivedContent="Section 8.4.1"/>.</t>
        </section>
      </section>
      <section anchor="Steering-per-flow" numbered="true" toc="include" removeInRFC="false" pn="section-8.6">
        <name slugifiedName="name-per-flow-steering">Per-Flow Steering</name>
        <t indent="0" pn="section-8.6-1">This section provides an example of how a headend might apply
        per-flow steering in practice.</t>
        <t indent="0" pn="section-8.6-2">Let us assume that headend H: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.6-3">
          <li pn="section-8.6-3.1">has a valid SR Policy P1 to (color = C1, endpoint = N) of
            segment list &lt;S1, S2, S3&gt; and BSID B1.</li>
          <li pn="section-8.6-3.2">has a valid SR Policy P2 to (color = C2, endpoint = N) of
            segment list &lt;S4, S5, S6&gt; and BSID B2.</li>
          <li pn="section-8.6-3.3">is configured to instantiate an array of paths to N where the
            entry 0 is the IGP path to N, color C1 is the first entry, and
            color C2 is the second entry. The index into the array is called a
            Forwarding Class (FC). The index can have values 0 to 7,
            especially when derived from the MPLS TC bits <xref target="RFC5462" format="default" sectionFormat="of" derivedContent="RFC5462"/>.</li>
          <li pn="section-8.6-3.4">is configured to match flows in its ingress interfaces (upon
            any field such as Ethernet destination/source/VLAN/TOS or IP
            destination/source/Differentiated Services Code Point (DSCP), or transport ports etc.), and color them
            with an internal per-packet forwarding-class variable (0, 1, or 2
            in this example).</li>
        </ul>
        <t indent="0" pn="section-8.6-4">If all these conditions are met, H installs in RIB/FIB: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.6-5">
          <li pn="section-8.6-5.1">N via recursion on an array A (instead of the immediate
            outgoing link associated with the IGP shortest path to N).</li>
          <li pn="section-8.6-5.2">Entry A(0) set to the immediate outgoing link of the IGP
            shortest path to N.</li>
          <li pn="section-8.6-5.3">Entry A(1) set to SR Policy P1 of BSID=B1.</li>
          <li pn="section-8.6-5.4">Entry A(2) set to SR Policy P2 of BSID=B2.</li>
        </ul>
        <t indent="0" pn="section-8.6-6">H receives three packets K, K1, and K2 on its incoming interface.
        These three packets either longest match on N or more likely on a
        BGP/service route that recurses on N. H colors these 3 packets
        respectively with forwarding-class 0, 1, and 2.</t>
        <t indent="0" pn="section-8.6-7">As a result, for SR-MPLS: </t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.6-8">
          <li pn="section-8.6-8.1">H forwards K along the shortest path to N (i.e., pushes the
            Prefix-SID of N).</li>
          <li pn="section-8.6-8.2">H pushes &lt;S1, S2, S3&gt; on packet K1 and forwards the
            resulting frame along the shortest path to S1.</li>
          <li pn="section-8.6-8.3">H pushes &lt;S4, S5, S6&gt; on packet K2 and forwards the
            resulting frame along the shortest path to S4.</li>
        </ul>
        <t indent="0" pn="section-8.6-9">For SRv6, the processing is similar and the segment lists of the
        individual SR Policies P1 and P2 are enforced for packets K1 and K2
        using the SR Policy headend behaviors as specified in <xref target="RFC8986" sectionFormat="of" section="5" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8986#section-5" derivedContent="RFC8986"/>.</t>
        <t indent="0" pn="section-8.6-10">If the local configuration does not specify any explicit forwarding
        information for an entry of the array, then this entry is filled with
        the same information as entry 0 (i.e., the IGP shortest path).</t>
        <t indent="0" pn="section-8.6-11">If the SR Policy mapped to an entry of the array becomes invalid,
        then this entry is filled with the same information as entry 0. When
        all the array entries have the same information as entry 0, the
        forwarding entry for N is updated to bypass the array and point
        directly to its outgoing interface and next-hop.</t>
        <t indent="0" pn="section-8.6-12">The array index values (e.g., 0, 1, and 2) and the notion of
        forwarding class are implementation specific and only meant to
        describe the desired behavior. The same can be realized by other
        mechanisms.</t>
        <t indent="0" pn="section-8.6-13">This realizes per-flow steering: different flows bound to the same
        BGP endpoint are steered on different IGP or SR Policy paths.</t>
        <t indent="0" pn="section-8.6-14">A headend <bcp14>MAY</bcp14> support options to apply per-flow steering only for
        traffic matching specific prefixes (e.g., specific IGP or BGP
        prefixes).</t>
      </section>
      <section anchor="Steering-policy-based" numbered="true" toc="include" removeInRFC="false" pn="section-8.7">
        <name slugifiedName="name-policy-based-routing">Policy-Based Routing</name>
        <t indent="0" pn="section-8.7-1">Finally, headend H <bcp14>MAY</bcp14> be configured with a local routing policy
        that overrides any BGP/IGP path and steers a specified packet on an
        SR Policy. This includes the use of mechanisms like IGP Shortcut for
        automatic routing of IGP prefixes over SR Policies intended for such
        purpose.</t>
      </section>
      <section anchor="Steering-optional-bgp" numbered="true" toc="include" removeInRFC="false" pn="section-8.8">
        <name slugifiedName="name-optional-steering-modes-for">Optional Steering Modes for BGP Destinations</name>
        <section anchor="Steering-optional-bgp-color-only-steering" numbered="true" toc="exclude" removeInRFC="false" pn="section-8.8.1">
          <name slugifiedName="name-color-only-bgp-destination-">Color-Only BGP Destination Steering</name>
          <t indent="0" pn="section-8.8.1-1">In the previous section, it is seen that the steering on an SR
          Policy is governed by the matching of the BGP route's next-hop N and
          the authorized Color Extended community C with an SR Policy defined
          by the tuple (N, C).</t>
          <t indent="0" pn="section-8.8.1-2">This is the most likely form of BGP destination steering and the
          one recommended for most use cases.</t>
          <t indent="0" pn="section-8.8.1-3">This section defines an alternative steering mechanism based only
          on the Color Extended community.</t>
          <t indent="0" pn="section-8.8.1-4">Three types of steering modes are defined.</t>
          <t indent="0" pn="section-8.8.1-5">For the default, Type 0, the BGP destination is steered as
          follows:</t>
          <sourcecode type="pseudocode" markers="false" pn="section-8.8.1-6">
   IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6
           endpoint address and C is a color;
       Steer into SR Policy (N, C);
   ELSE;
       Steer on the IGP path to the next-hop N.
</sourcecode>
          <t indent="0" pn="section-8.8.1-7">This is the classic case described in this document previously
          and what is recommended in most scenarios.</t>
          <t indent="0" pn="section-8.8.1-8">For Type 1, the BGP destination is steered as follows:</t>
          <sourcecode type="pseudocode" markers="false" pn="section-8.8.1-9">
   IF there is a valid SR Policy (N, C) where N is the IPv4 or IPv6
           endpoint address and C is a color;
       Steer into SR Policy (N, C);
   ELSE IF there is a valid SR Policy (null endpoint, C) of the
           same address-family of N;
       Steer into SR Policy (null endpoint, C);
   ELSE IF there is any valid SR Policy
           (any address-family null endpoint, C);
       Steer into SR Policy (any null endpoint, C);
   ELSE;
       Steer on the IGP path to the next-hop N.
</sourcecode>
          <t indent="0" pn="section-8.8.1-10">For Type 2, the BGP destination is steered as follows:</t>
          <sourcecode type="pseudocode" markers="false" pn="section-8.8.1-11">
   IF there is a valid SR Policy (N, C) where N is an IPv4 or IPv6
           endpoint address and C is a color;
       Steer into SR Policy (N, C);
   ELSE IF there is a valid SR Policy (null endpoint, C)
           of the same address-family of N;
       Steer into SR Policy (null endpoint, C);
   ELSE IF there is any valid SR Policy
           (any address-family null endpoint, C);
       Steer into SR Policy (any null endpoint, C);
   ELSE IF there is any valid SR Policy (any endpoint, C)
           of the same address-family of N;
       Steer into SR Policy (any endpoint, C);
   ELSE IF there is any valid SR Policy
           (any address-family endpoint, C);
       Steer into SR Policy (any address-family endpoint, C);
   ELSE;
       Steer on the IGP path to the next-hop N.
</sourcecode>
          <t indent="0" pn="section-8.8.1-12">The null endpoint is 0.0.0.0 for IPv4 and :: for IPv6 (all bits
          set to the 0 value).</t>
          <t indent="0" pn="section-8.8.1-13">Please refer to <xref target="I-D.ietf-idr-segment-routing-te-policy" format="default" sectionFormat="of" derivedContent="BGP-SR-POLICY"/> for the updates to
          the BGP Color Extended community for the implementation of these
          mechanisms.</t>
        </section>
        <section anchor="Steering-optional-bgp-multi-color" numbered="true" toc="exclude" removeInRFC="false" pn="section-8.8.2">
          <name slugifiedName="name-multiple-colors-and-co-flag">Multiple Colors and CO flags</name>
          <t indent="0" pn="section-8.8.2-1">The steering preference is first based on the highest Color
          Extended community value and then Color-Only steering type for the
          color. Assuming a Prefix via (NH, C1(CO=01), C2(CO=01)); C1&gt;C2.
          The steering preference order is: </t>
          <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.8.2-2">
            <li pn="section-8.8.2-2.1">SR Policy (NH, C1).</li>
            <li pn="section-8.8.2-2.2">SR Policy (null, C1).</li>
            <li pn="section-8.8.2-2.3">SR Policy (NH, C2).</li>
            <li pn="section-8.8.2-2.4">SR Policy (null, C2).</li>
            <li pn="section-8.8.2-2.5">IGP to NH.</li>
          </ul>
        </section>
        <section anchor="Steering-optional-bgp-drop-on-invalid" numbered="true" toc="exclude" removeInRFC="false" pn="section-8.8.3">
          <name slugifiedName="name-drop-upon-invalid">Drop-upon-Invalid</name>
          <t indent="0" pn="section-8.8.3-1">This document defined earlier that when all the following
          conditions are met, H installs R/r in RIB/FIB with next-hop = SR
          Policy P of BSID B instead of via N. </t>
          <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-8.8.3-2">
            <li pn="section-8.8.3-2.1">H learns a BGP route R/r via next-hop N, Color Extended
              community C.</li>
            <li pn="section-8.8.3-2.2">H has a valid SR Policy P to (color = C, endpoint = N) of
              segment list &lt;S1, S2, S3&gt; and BSID B.</li>
            <li pn="section-8.8.3-2.3">H has a BGP policy that matches the Color Extended community
              C and allows its usage as SLA steering information.</li>
          </ul>
          <t indent="0" pn="section-8.8.3-3">This behavior is extended by noting that the BGP Policy may
          require the BGP steering to always stay on the SR Policy whatever
          its validity.</t>
          <t indent="0" pn="section-8.8.3-4">This is the "drop-upon-invalid" option described in <xref target="Steering-drop" format="default" sectionFormat="of" derivedContent="Section 8.2"/> applied to BGP-based steering.</t>
        </section>
      </section>
    </section>
    <section anchor="protection" numbered="true" toc="include" removeInRFC="false" pn="section-9">
      <name slugifiedName="name-recovering-from-network-fai">Recovering from Network Failures</name>
      <section anchor="Local-protection-tilfa" numbered="true" toc="include" removeInRFC="false" pn="section-9.1">
        <name slugifiedName="name-leveraging-ti-lfa-local-pro">Leveraging TI-LFA Local Protection of the Constituent IGP Segments</name>
        <t indent="0" pn="section-9.1-1">In any topology, Topology-Independent Loop-Free Alternate (TI-LFA)
        <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa" format="default" sectionFormat="of" derivedContent="SR-TI-LFA"/> provides a
        50 msec local protection technique for IGP SIDs. The backup path is
        computed on a per-IGP-SID basis along the post-convergence path.</t>
        <t indent="0" pn="section-9.1-2">In a network that has deployed TI-LFA, an SR Policy built on the
        basis of TI-LFA protected IGP segments leverages the local protection
        of the constituent segments. Since TI-LFA protection is based on IGP
        computation, there are cases where the path used during the
        fast-reroute time window may not meet the exact constraints of the SR
        Policy.</t>
        <t indent="0" pn="section-9.1-3">In a network that has deployed TI-LFA, an SR Policy instantiated
        only with non-protected Adj SIDs does not benefit from any local
        protection.</t>
      </section>
      <section anchor="Local-protection-policy" numbered="true" toc="include" removeInRFC="false" pn="section-9.2">
        <name slugifiedName="name-using-an-sr-policy-to-local">Using an SR Policy to Locally Protect a Link</name>
        <figure anchor="PROTECTION" align="left" suppress-title="false" pn="figure-1">
          <name slugifiedName="name-local-protection-using-sr-p">Local Protection Using SR Policy</name>
          <artwork align="center" name="" type="" alt="" pn="section-9.2-1.1">
     1----2-----6----7
     |    |     |    |
     4----3-----9----8 
        </artwork>
        </figure>
        <t indent="0" pn="section-9.2-2"> An SR Policy can be instantiated at node 2 to protect link
        2-to-6. A typical explicit segment list would be &lt;3, 9, 6&gt;.</t>
        <t indent="0" pn="section-9.2-3">A typical use case occurs for links outside an IGP domain: e.g., 1,
        2, 3, and 4 are part of IGP/SR sub-domain 1 while 6, 7, 8, and 9 are
        part of IGP/SR sub-domain 2. In such a case, links 2-to-6 and 3to9
        cannot benefit from TI-LFA automated local protection. The SR Policy
        with segment list &lt;3, 9, 6&gt; on node 2 can be locally configured
        to be a fast-reroute backup path for the link 2-to-6.</t>
      </section>
      <section anchor="cp-path-protection" numbered="true" toc="include" removeInRFC="false" pn="section-9.3">
        <name slugifiedName="name-using-a-candidate-path-for-">Using a Candidate Path for Path Protection</name>
        <t indent="0" pn="section-9.3-1">An SR Policy allows for multiple candidate paths, of which at any
        point in time there is a single active candidate path that is
        provisioned in the forwarding plane and used for traffic steering.
        However, another (lower preference) candidate path <bcp14>MAY</bcp14> be designated
        as the backup for a specific or all (active) candidate path(s). The
        following options are possible:</t>
        <ul spacing="compact" bare="false" empty="false" indent="3" pn="section-9.3-2">
          <li pn="section-9.3-2.1">A pair of disjoint candidate paths are provisioned with one of
            them as primary and the other identified as its backup.</li>
          <li pn="section-9.3-2.2">A specific candidate path is provisioned as the backup for any
            (active) candidate path.</li>
          <li pn="section-9.3-2.3">The headend picks the next (lower) preference valid candidate
            path as the backup for the active candidate path.</li>
        </ul>
        <t indent="0" pn="section-9.3-3">The headend <bcp14>MAY</bcp14> compute a priori and validate such backup candidate
        paths as well as provision them into the forwarding plane as a backup
        for the active path. The backup candidate path may be dynamically
        computed or explicitly provisioned in such a way that they provide the
        most appropriate alternative for the active candidate path. A fast-reroute mechanism <bcp14>MAY</bcp14> then be used to trigger sub-50 msec switchover
        from the active to the backup candidate path in the forwarding plane.
        Mechanisms like Bidirectional Forwarding Detection (BFD) <bcp14>MAY</bcp14> be used
        for fast detection of such failures.</t>
      </section>
    </section>
    <section anchor="Security" numbered="true" toc="include" removeInRFC="false" pn="section-10">
      <name slugifiedName="name-security-considerations">Security Considerations</name>
      <t indent="0" pn="section-10-1">This document specifies in detail the SR Policy construct introduced
      in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> and its instantiation on a router supporting
      SR along with descriptions of mechanisms for the steering of traffic flows
      over it. Therefore, the security considerations of <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> apply. The security consideration related to SR-MPLS
      <xref target="RFC8660" format="default" sectionFormat="of" derivedContent="RFC8660"/> and SRv6 <xref target="RFC8754" format="default" sectionFormat="of" derivedContent="RFC8754"/> <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/> also apply.</t>
      <t indent="0" pn="section-10-2">The endpoint of the SR Policy, other than in the case of a null
      endpoint, uniquely identifies the tail-end node of the segment routed
      path. If an address that is used as an endpoint for an SR Policy is
      advertised by more than one node due to a misconfiguration or spoofing
      and the same is advertised via an IGP, the traffic steered over the SR
      Policy may end up getting diverted to an undesired node resulting in
      misrouting. Mechanisms for detection of duplicate prefix advertisement
      can be used to identify and correct such scenarios. The details of these
      mechanisms are outside the scope of this document.</t>
      <t indent="0" pn="section-10-3"><xref target="Steering" format="default" sectionFormat="of" derivedContent="Section 8"/> specifies mechanisms for the steering of
      traffic flows corresponding to BGP routes over SR Policies matching the
      color value signaled via the BGP Color Extended Community attached with
      the BGP routes. Misconfiguration or error in setting of the Color
      Extended Community with the BGP routes can result in the forwarding of
      packets for those routes along undesired paths.</t>
      <t indent="0" pn="section-10-4">In Sections <xref target="SR-policy-identification" format="counter" sectionFormat="of" derivedContent="2.1"/> and <xref target="SR-policy-candidate-path-identification" format="counter" sectionFormat="of" derivedContent="2.6"/>, the document
      mentions that a symbolic name <bcp14>MAY</bcp14> be signaled along with a candidate
      path for the SR Policy and for the SR Policy Candidate Path,
      respectively. While the value of symbolic names for display clarity is
      indisputable, as with any unrestricted free-form text received from
      external parties, there can be no absolute assurance that the
      information the text purports to show is accurate or even truthful. For
      this reason, users of implementations that display such information
      would be well advised not to rely on it without question and to use the
      specific identifiers of the SR Policy and SR Policy Candidate Path for
      validation. Furthermore, implementations that display such information
      might wish to display it in such a fashion as to differentiate it from
      known-good information. (Such display conventions are inherently
      implementation specific; one example might be use of a distinguished
      text color or style for information that should be treated with
      caution.)</t>
      <t indent="0" pn="section-10-5">This document does not define any new protocol extensions and does
      not introduce any further security considerations.</t>
    </section>
    <section anchor="MGMT" numbered="true" toc="include" removeInRFC="false" pn="section-11">
      <name slugifiedName="name-manageability-consideration">Manageability Considerations</name>
      <t indent="0" pn="section-11-1">This document specifies in detail the SR Policy construct introduced
      in <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> and its instantiation on a router supporting
      SR along with descriptions of mechanisms for the steering of traffic flows
      over it. Therefore, the manageability considerations of <xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC8402"/> apply.</t>
      <t indent="0" pn="section-11-2">A YANG model for the configuration and operation of SR Policy has
      been defined in <xref target="I-D.ietf-spring-sr-policy-yang" format="default" sectionFormat="of" derivedContent="SR-POLICY-YANG"/>.</t>
    </section>
    <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn="section-12">
      <name slugifiedName="name-iana-considerations">IANA Considerations</name>
      <t indent="0" pn="section-12-1">IANA has created a new subregistry called
      "Segment Types" under the "Segment Routing" registry that was
      created by <xref target="RFC8986" format="default" sectionFormat="of" derivedContent="RFC8986"/>. This subregistry maintains the
      alphabetic identifiers for the segment types (as specified in <xref target="SID-List" format="default" sectionFormat="of" derivedContent="Section 4"/>)
      that may be used within a segment list of an SR Policy. The alphabetical
      identifiers run from A to Z and may be extended on exhaustion with the
      identifiers AA to AZ, BA to BZ, and so on, through ZZ. This
      subregistry follows the Specification Required allocation policy
      as specified in <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>.</t>
      <t indent="0" pn="section-12-2">The initial registrations for this subregistry are as follows:</t>
      <table anchor="table_iana" align="center" pn="table-2">
        <name slugifiedName="name-segment-types-2">Segment Types</name>
        <thead>
          <tr>
            <th align="center" colspan="1" rowspan="1">Value</th>
            <th align="left" colspan="1" rowspan="1">Description</th>
            <th align="center" colspan="1" rowspan="1">Reference</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="center" colspan="1" rowspan="1">A</td>
            <td align="left" colspan="1" rowspan="1">SR-MPLS Label</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">B</td>
            <td align="left" colspan="1" rowspan="1">SRv6 SID</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">C</td>
            <td align="left" colspan="1" rowspan="1">IPv4 Prefix with optional SR Algorithm</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">D</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Global Prefix with optional SR Algorithm for SR-MPLS</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">E</td>
            <td align="left" colspan="1" rowspan="1">IPv4 Prefix with Local Interface ID</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">F</td>
            <td align="left" colspan="1" rowspan="1">IPv4 Addresses for link endpoints as Local, Remote pair</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">G</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Prefix and Interface ID for link endpoints as Local, Remote
        pair for SR-MPLS</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">H</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Addresses for link endpoints as Local, Remote pair for
        SR-MPLS</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">I</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Global Prefix with optional SR Algorithm for SRv6</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">J</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Prefix and Interface ID for link endpoints as Local, Remote
        pair for SRv6</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
          <tr>
            <td align="center" colspan="1" rowspan="1">K</td>
            <td align="left" colspan="1" rowspan="1">IPv6 Addresses for link endpoints as Local, Remote pair for
        SRv6</td>
            <td align="center" colspan="1" rowspan="1">RFC 9256</td>
          </tr>
        </tbody>
      </table>
      <section anchor="guidance" numbered="true" toc="include" removeInRFC="false" pn="section-12.1">
        <name slugifiedName="name-guidance-for-designated-exp">Guidance for Designated Experts</name>
        <t indent="0" pn="section-12.1-1">The Designated Expert (DE) is expected to ascertain the existence
        of suitable documentation (a specification) as described in <xref target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/> and to verify that the document is permanently and
        publicly available. The DE is also expected to check the clarity of
        purpose and use of the requested assignment. Additionally, the DE must
        verify that any request for one of these assignments has been made
        available for review and comment within the IETF: the DE will post the
        request to the SPRING Working Group mailing list (or a successor
        mailing list designated by the IESG). If the request comes from within
        the IETF, it should be documented in an Internet-Draft. Lastly, the DE
        must ensure that any other request for a code point does not conflict
        with work that is active or already published within the IETF.</t>
      </section>
    </section>
  </middle>
  <back>
    <displayreference target="I-D.ietf-pce-binding-label-sid" to="PCEP-BSID-LABEL"/>
    <displayreference target="I-D.ietf-pce-segment-routing-policy-cp" to="PCEP-SR-POLICY-CP"/>
    <displayreference target="I-D.ietf-idr-te-lsp-distribution" to="BGP-LS-TE-POLICY"/>
    <displayreference target="I-D.ietf-idr-segment-routing-te-policy" to="BGP-SR-POLICY"/>
    <displayreference target="I-D.ietf-rtgwg-segment-routing-ti-lfa" to="SR-TI-LFA"/>
    <displayreference target="I-D.ietf-lsr-flex-algo" to="IGP-FLEX-ALGO"/>
    <displayreference target="I-D.ali-spring-sr-traffic-accounting" to="SR-TRAFFIC-ACCOUNTING"/>
    <displayreference target="I-D.filsfils-spring-sr-policy-considerations" to="SR-POLICY-CONSID"/>
    <displayreference target="I-D.ietf-spring-sr-policy-yang" to="SR-POLICY-YANG"/>
    <displayreference target="I-D.anand-spring-poi-sr" to="POI-SR"/>
    <displayreference target="I-D.filsfils-spring-sr-traffic-counters" to="SR-TRAFFIC-COUNTERS"/>
    <references pn="section-13">
      <name slugifiedName="name-references">References</name>
      <references pn="section-13.1">
        <name slugifiedName="name-normative-references">Normative References</name>
        <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author initials="S." surname="Bradner" fullname="S. Bradner">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1997" month="March"/>
            <abstract>
              <t indent="0">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="RFC7752" target="https://www.rfc-editor.org/info/rfc7752" quoteTitle="true" derivedAnchor="RFC7752">
          <front>
            <title>North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP</title>
            <author initials="H." surname="Gredler" fullname="H. Gredler" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Medved" fullname="J. Medved">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Farrel" fullname="A. Farrel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Ray" fullname="S. Ray">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2016" month="March"/>
            <abstract>
              <t indent="0">In a number of environments, a component external to a network is called upon to perform computations based on the network topology and current state of the connections within the network, including Traffic Engineering (TE) information.  This is information typically distributed by IGP routing protocols within the network.</t>
              <t indent="0">This document describes a mechanism by which link-state and TE information can be collected from networks and shared with external components using the BGP routing protocol.  This is achieved using a new BGP Network Layer Reachability Information (NLRI) encoding format.  The mechanism is applicable to physical and virtual IGP links.  The mechanism described is subject to policy control.</t>
              <t indent="0">Applications of this technique include Application-Layer Traffic Optimization (ALTO) servers and Path Computation Elements (PCEs).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7752"/>
          <seriesInfo name="DOI" value="10.17487/RFC7752"/>
        </reference>
        <reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author initials="M." surname="Cotton" fullname="M. Cotton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="T." surname="Narten" fullname="T. Narten">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="June"/>
            <abstract>
              <t indent="0">Many protocols make use of points of extensibility that use constants to identify various protocol parameters.  To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper.  For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t indent="0">To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed.  This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t indent="0">This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author initials="B." surname="Leiba" fullname="B. Leiba">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="May"/>
            <abstract>
              <t indent="0">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>
        <reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8402" quoteTitle="true" derivedAnchor="RFC8402">
          <front>
            <title>Segment Routing Architecture</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="July"/>
            <abstract>
              <t indent="0">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 indent="0">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 indent="0">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="RFC8660" target="https://www.rfc-editor.org/info/rfc8660" quoteTitle="true" derivedAnchor="RFC8660">
          <front>
            <title>Segment Routing with the MPLS Data Plane</title>
            <author initials="A." surname="Bashandy" fullname="A. Bashandy" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="B." surname="Decraene" fullname="B. Decraene">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Litkowski" fullname="S. Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Shakir" fullname="R. Shakir">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="December"/>
            <abstract>
              <t indent="0">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="RFC8754" target="https://www.rfc-editor.org/info/rfc8754" quoteTitle="true" derivedAnchor="RFC8754">
          <front>
            <title>IPv6 Segment Routing Header (SRH)</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Dukes" fullname="D. Dukes" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Leddy" fullname="J. Leddy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Matsushima" fullname="S. Matsushima">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Voyer" fullname="D. Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="March"/>
            <abstract>
              <t indent="0">Segment Routing can be applied to the IPv6 data plane using a new type of Routing Extension Header called the Segment Routing Header (SRH). This document describes the SRH and how it is used by nodes that are Segment Routing (SR) capable.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8754"/>
          <seriesInfo name="DOI" value="10.17487/RFC8754"/>
        </reference>
        <reference anchor="RFC8986" target="https://www.rfc-editor.org/info/rfc8986" quoteTitle="true" derivedAnchor="RFC8986">
          <front>
            <title>Segment Routing over IPv6 (SRv6) Network Programming</title>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Camarillo" fullname="P. Camarillo" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Leddy" fullname="J. Leddy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Voyer" fullname="D. Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Matsushima" fullname="S. Matsushima">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Z." surname="Li" fullname="Z. Li">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="February"/>
            <abstract>
              <t indent="0">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 indent="0">Each instruction is implemented on one or several nodes in the network and identified by an SRv6 Segment Identifier in the packet.</t>
              <t indent="0">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="RFC9012" target="https://www.rfc-editor.org/info/rfc9012" quoteTitle="true" derivedAnchor="RFC9012">
          <front>
            <title>The BGP Tunnel Encapsulation Attribute</title>
            <author initials="K." surname="Patel" fullname="K. Patel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Van de Velde" fullname="G. Van de Velde">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Sangli" fullname="S. Sangli">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Scudder" fullname="J. Scudder">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="April"/>
            <abstract>
              <t indent="0">This document defines a BGP path attribute known as the "Tunnel Encapsulation attribute", which can be used with BGP UPDATEs of various Subsequent Address Family Identifiers (SAFIs) to provide information needed to create tunnels and their corresponding encapsulation headers. It provides encodings for a number of tunnel types, along with procedures for choosing between alternate tunnels and routing packets into tunnels.</t>
              <t indent="0">This document obsoletes RFC 5512, which provided an earlier definition of the Tunnel Encapsulation attribute. RFC 5512 was never deployed in production. Since RFC 5566 relies on RFC 5512, it is likewise obsoleted. This document updates RFC 5640 by indicating that the Load-Balancing Block sub-TLV may be included in any Tunnel Encapsulation attribute where load balancing is desired.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9012"/>
          <seriesInfo name="DOI" value="10.17487/RFC9012"/>
        </reference>
      </references>
      <references pn="section-13.2">
        <name slugifiedName="name-informative-references">Informative References</name>
        <reference anchor="I-D.ietf-idr-te-lsp-distribution" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-te-lsp-distribution-17" derivedAnchor="BGP-LS-TE-POLICY">
          <front>
            <title>Distribution of Traffic Engineering (TE) Policies and State using BGP-LS</title>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Dong" fullname="Jie Dong" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Chen" fullname="Mach(Guoyi) Chen">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H" surname="Gredler" fullname="Hannes Gredler">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Tantsura" fullname="Jeff Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="April" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-te-lsp-distribution-17"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-idr-segment-routing-te-policy" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-idr-segment-routing-te-policy-18" derivedAnchor="BGP-SR-POLICY">
          <front>
            <title>Advertising Segment Routing Policies in BGP</title>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P" surname="Mattes" fullname="Paul Mattes">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Jain" fullname="Dhanendra Jain">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Lin" fullname="Steven Lin">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="June" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-idr-segment-routing-te-policy-18"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-lsr-flex-algo" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-lsr-flex-algo-20" derivedAnchor="IGP-FLEX-ALGO">
          <front>
            <title>IGP Flexible Algorithm</title>
            <author initials="P" surname="Psenak" fullname="Peter Psenak" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Hegde" fullname="Shraddha Hegde">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A" surname="Gulko" fullname="Arkadiy Gulko">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="May" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-lsr-flex-algo-20"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-pce-binding-label-sid" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-pce-binding-label-sid-15" derivedAnchor="PCEP-BSID-LABEL">
          <front>
            <title>Carrying Binding Label/Segment Identifier (SID) in PCE-based Networks.</title>
            <author initials="S" surname="Sivabalan" fullname="Siva Sivabalan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J" surname="Tantsura" fullname="Jeff Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Previdi" fullname="Stefano Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Li" fullname="Cheng Li" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="March" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-binding-label-sid-15"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-pce-segment-routing-policy-cp" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-pce-segment-routing-policy-cp-07" derivedAnchor="PCEP-SR-POLICY-CP">
          <front>
            <title>PCEP extension to support Segment Routing Policy Candidate Paths</title>
            <author fullname="Mike Koldychev">
              <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
            </author>
            <author fullname="Siva Sivabalan">
              <organization showOnFrontPage="true">Ciena Corporation</organization>
            </author>
            <author fullname="Colby Barth">
              <organization showOnFrontPage="true">Juniper Networks, Inc.</organization>
            </author>
            <author fullname="Shuping Peng">
              <organization showOnFrontPage="true">Huawei Technologies</organization>
            </author>
            <author fullname="Hooman Bidgoli">
              <organization showOnFrontPage="true">Nokia</organization>
            </author>
            <date month="April" day="21" year="2022"/>
            <abstract>
              <t indent="0">   This document introduces a mechanism to specify a Segment Routing
   (SR) policy, as a collection of SR candidate paths.  An SR policy is
   identified by &lt;headend, color, endpoint&gt; tuple.  An SR policy can
   contain one or more candidate paths where each candidate path is
   identified in PCEP by its uniquely assigned PLSP-ID.  This document
   proposes extension to PCEP to support association among candidate
   paths of a given SR policy.  The mechanism proposed in this document
   is applicable to both MPLS and IPv6 data planes of SR.


              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-pce-segment-routing-policy-cp-07"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-pce-segment-routing-policy-cp-07.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.anand-spring-poi-sr" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-anand-spring-poi-sr-08" derivedAnchor="POI-SR">
          <front>
            <title>Packet-Optical Integration in Segment Routing</title>
            <author fullname="Madhukar Anand">
              <organization showOnFrontPage="true">Ciena Corporation</organization>
            </author>
            <author fullname="Sanjoy Bardhan">
              <organization showOnFrontPage="true">Infinera Corporation</organization>
            </author>
            <author fullname="Ramesh Subrahmaniam">
              <organization showOnFrontPage="true">Individual</organization>
            </author>
            <author fullname="Jeff Tantsura">
              <organization showOnFrontPage="true">Apstra</organization>
            </author>
            <author fullname="Utpal Mukhopadhyaya">
              <organization showOnFrontPage="true">Equinix Inc</organization>
            </author>
            <author fullname="Clarence Filsfils">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <date month="July" day="29" year="2019"/>
            <abstract>
              <t indent="0">   This document illustrates a way to integrate a new class of nodes and
   links in segment routing to represent transport/optical networks in
   an opaque way into the segment routing domain.  An instance of this
   class would be optical networks that are typically transport centric
   by having very few devices with the capability to process packets.
   In the IP centric network, this will help in defining a common
   control protocol for packet optical integration that will include
   optical paths as 'transport segments' or sub-paths as an augmentation
   to packet paths. The transport segment option also defines a general
   mechanism to allow for future extensibility of segment routing into
   non-packet domains.



              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-anand-spring-poi-sr-08"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-anand-spring-poi-sr-08.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="RFC0020" target="https://www.rfc-editor.org/info/rfc20" quoteTitle="true" derivedAnchor="RFC0020">
          <front>
            <title>ASCII format for network interchange</title>
            <author initials="V.G." surname="Cerf" fullname="V.G. Cerf">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1969" month="October"/>
          </front>
          <seriesInfo name="STD" value="80"/>
          <seriesInfo name="RFC" value="20"/>
          <seriesInfo name="DOI" value="10.17487/RFC0020"/>
        </reference>
        <reference anchor="RFC1195" target="https://www.rfc-editor.org/info/rfc1195" quoteTitle="true" derivedAnchor="RFC1195">
          <front>
            <title>Use of OSI IS-IS for routing in TCP/IP and dual environments</title>
            <author initials="R.W." surname="Callon" fullname="R.W. Callon">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1990" month="December"/>
            <abstract>
              <t indent="0">This memo specifies an integrated routing protocol, based on the OSI Intra-Domain IS-IS Routing Protocol, which may be used as an interior gateway protocol (IGP) to support TCP/IP as well as OSI.  This allows a single routing protocol to be used to support pure IP environments, pure OSI environments, and dual environments.  This specification was developed by the IS-IS working group of the Internet Engineering Task Force.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1195"/>
          <seriesInfo name="DOI" value="10.17487/RFC1195"/>
        </reference>
        <reference anchor="RFC2328" target="https://www.rfc-editor.org/info/rfc2328" quoteTitle="true" derivedAnchor="RFC2328">
          <front>
            <title>OSPF Version 2</title>
            <author initials="J." surname="Moy" fullname="J. Moy">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="1998" month="April"/>
            <abstract>
              <t indent="0">This memo documents version 2 of the OSPF protocol.  OSPF is a link- state routing protocol.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="54"/>
          <seriesInfo name="RFC" value="2328"/>
          <seriesInfo name="DOI" value="10.17487/RFC2328"/>
        </reference>
        <reference anchor="RFC3630" target="https://www.rfc-editor.org/info/rfc3630" quoteTitle="true" derivedAnchor="RFC3630">
          <front>
            <title>Traffic Engineering (TE) Extensions to OSPF Version 2</title>
            <author initials="D." surname="Katz" fullname="D. Katz">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Kompella" fullname="K. Kompella">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Yeung" fullname="D. Yeung">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2003" month="September"/>
            <abstract>
              <t indent="0">This document describes extensions to the OSPF protocol version 2 to support intra-area Traffic Engineering (TE), using Opaque Link State Advertisements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3630"/>
          <seriesInfo name="DOI" value="10.17487/RFC3630"/>
        </reference>
        <reference anchor="RFC4760" target="https://www.rfc-editor.org/info/rfc4760" quoteTitle="true" derivedAnchor="RFC4760">
          <front>
            <title>Multiprotocol Extensions for BGP-4</title>
            <author initials="T." surname="Bates" fullname="T. Bates">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Chandra" fullname="R. Chandra">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Katz" fullname="D. Katz">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2007" month="January"/>
            <abstract>
              <t indent="0">This document defines extensions to BGP-4 to enable it to carry routing information for multiple Network Layer protocols (e.g., IPv6, IPX, L3VPN, etc.).  The extensions are backward compatible - a router that supports the extensions can interoperate with a router that doesn't support the extensions.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4760"/>
          <seriesInfo name="DOI" value="10.17487/RFC4760"/>
        </reference>
        <reference anchor="RFC5305" target="https://www.rfc-editor.org/info/rfc5305" quoteTitle="true" derivedAnchor="RFC5305">
          <front>
            <title>IS-IS Extensions for Traffic Engineering</title>
            <author initials="T." surname="Li" fullname="T. Li">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="H." surname="Smit" fullname="H. Smit">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="October"/>
            <abstract>
              <t indent="0">This document describes extensions to the Intermediate System to Intermediate System (IS-IS) protocol to support Traffic Engineering (TE).  This document extends the IS-IS protocol by specifying new information that an Intermediate System (router) can place in Link State Protocol Data Units (LSP).  This information describes additional details regarding the state of the network that are useful for traffic engineering computations.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5305"/>
          <seriesInfo name="DOI" value="10.17487/RFC5305"/>
        </reference>
        <reference anchor="RFC5307" target="https://www.rfc-editor.org/info/rfc5307" quoteTitle="true" derivedAnchor="RFC5307">
          <front>
            <title>IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)</title>
            <author initials="K." surname="Kompella" fullname="K. Kompella" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Y." surname="Rekhter" fullname="Y. Rekhter" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="October"/>
            <abstract>
              <t indent="0">This document specifies encoding of extensions to the IS-IS routing protocol in support of Generalized Multi-Protocol Label Switching (GMPLS).  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5307"/>
          <seriesInfo name="DOI" value="10.17487/RFC5307"/>
        </reference>
        <reference anchor="RFC5329" target="https://www.rfc-editor.org/info/rfc5329" quoteTitle="true" derivedAnchor="RFC5329">
          <front>
            <title>Traffic Engineering Extensions to OSPF Version 3</title>
            <author initials="K." surname="Ishiguro" fullname="K. Ishiguro">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Manral" fullname="V. Manral">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Davey" fullname="A. Davey">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Lindem" fullname="A. Lindem" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="September"/>
            <abstract>
              <t indent="0">This document describes extensions to OSPFv3 to support intra-area Traffic Engineering (TE).  This document extends OSPFv2 TE to handle IPv6 networks.  A new TLV and several new sub-TLVs are defined to support IPv6 networks.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5329"/>
          <seriesInfo name="DOI" value="10.17487/RFC5329"/>
        </reference>
        <reference anchor="RFC5340" target="https://www.rfc-editor.org/info/rfc5340" quoteTitle="true" derivedAnchor="RFC5340">
          <front>
            <title>OSPF for IPv6</title>
            <author initials="R." surname="Coltun" fullname="R. Coltun">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ferguson" fullname="D. Ferguson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Moy" fullname="J. Moy">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Lindem" fullname="A. Lindem">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2008" month="July"/>
            <abstract>
              <t indent="0">This document describes the modifications to OSPF to support version 6 of the Internet Protocol (IPv6).  The fundamental mechanisms of OSPF (flooding, Designated Router (DR) election, area support, Short Path First (SPF) calculations, etc.) remain unchanged.  However, some changes have been necessary, either due to changes in protocol semantics between IPv4 and IPv6, or simply to handle the increased address size of IPv6.  These modifications will necessitate incrementing the protocol version from version 2 to version 3.  OSPF for IPv6 is also referred to as OSPF version 3 (OSPFv3).</t>
              <t indent="0">Changes between OSPF for IPv4, OSPF Version 2, and OSPF for IPv6 as described herein include the following.  Addressing semantics have been removed from OSPF packets and the basic Link State Advertisements (LSAs).  New LSAs have been created to carry IPv6 addresses and prefixes.  OSPF now runs on a per-link basis rather than on a per-IP-subnet basis.  Flooding scope for LSAs has been generalized.  Authentication has been removed from the OSPF protocol and instead relies on IPv6's Authentication Header and Encapsulating Security Payload (ESP).</t>
              <t indent="0">Even with larger IPv6 addresses, most packets in OSPF for IPv6 are almost as compact as those in OSPF for IPv4.  Most fields and packet- size limitations present in OSPF for IPv4 have been relaxed.  In addition, option handling has been made more flexible.</t>
              <t indent="0">All of OSPF for IPv4's optional capabilities, including demand circuit support and Not-So-Stubby Areas (NSSAs), are also supported in OSPF for IPv6.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5340"/>
          <seriesInfo name="DOI" value="10.17487/RFC5340"/>
        </reference>
        <reference anchor="RFC5462" target="https://www.rfc-editor.org/info/rfc5462" quoteTitle="true" derivedAnchor="RFC5462">
          <front>
            <title>Multiprotocol Label Switching (MPLS) Label Stack Entry: "EXP" Field Renamed to "Traffic Class" Field</title>
            <author initials="L." surname="Andersson" fullname="L. Andersson">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Asati" fullname="R. Asati">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2009" month="February"/>
            <abstract>
              <t indent="0">The early Multiprotocol Label Switching (MPLS) documents defined the form of the MPLS label stack entry.  This includes a three-bit field called the "EXP field".  The exact use of this field was not defined by these documents, except to state that it was to be "reserved for experimental use".</t>
              <t indent="0">Although the intended use of the EXP field was as a "Class of Service" (CoS) field, it was not named a CoS field by these early documents because the use of such a CoS field was not considered to be sufficiently defined.  Today a number of standards documents define its usage as a CoS field.</t>
              <t indent="0">To avoid misunderstanding about how this field may be used, it has become increasingly necessary to rename this field.  This document changes the name of the field to the "Traffic Class field" ("TC field").  In doing so, it also updates documents that define the current use of the EXP field.  [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5462"/>
          <seriesInfo name="DOI" value="10.17487/RFC5462"/>
        </reference>
        <reference anchor="RFC6830" target="https://www.rfc-editor.org/info/rfc6830" quoteTitle="true" derivedAnchor="RFC6830">
          <front>
            <title>The Locator/ID Separation Protocol (LISP)</title>
            <author initials="D." surname="Farinacci" fullname="D. Farinacci">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V." surname="Fuller" fullname="V. Fuller">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Meyer" fullname="D. Meyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Lewis" fullname="D. Lewis">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2013" month="January"/>
            <abstract>
              <t indent="0">This document describes a network-layer-based protocol that enables separation of IP addresses into two new numbering spaces: Endpoint Identifiers (EIDs) and Routing Locators (RLOCs).  No changes are required to either host protocol stacks or to the "core" of the Internet infrastructure.  The Locator/ID Separation Protocol (LISP) can be incrementally deployed, without a "flag day", and offers Traffic Engineering, multihoming, and mobility benefits to early adopters, even when there are relatively few LISP-capable sites.</t>
              <t indent="0">Design and development of LISP was largely motivated by the problem statement produced by the October 2006 IAB Routing and Addressing Workshop.  This document defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6830"/>
          <seriesInfo name="DOI" value="10.17487/RFC6830"/>
        </reference>
        <reference anchor="RFC7471" target="https://www.rfc-editor.org/info/rfc7471" quoteTitle="true" derivedAnchor="RFC7471">
          <front>
            <title>OSPF Traffic Engineering (TE) Metric Extensions</title>
            <author initials="S." surname="Giacalone" fullname="S. Giacalone">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ward" fullname="D. Ward">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Drake" fullname="J. Drake">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="A." surname="Atlas" fullname="A. Atlas">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2015" month="March"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network performance information (e.g., link propagation delay) is becoming critical to data path selection.</t>
              <t indent="0">This document describes common extensions to RFC 3630 "Traffic                                           Engineering (TE) Extensions to OSPF Version 2" and RFC 5329 "Traffic                                     Engineering Extensions to OSPF Version 3" to enable network performance information to be distributed in a scalable fashion.  The information distributed using OSPF TE Metric Extensions can then be used to make path selection decisions based on network performance.</t>
              <t indent="0">Note that this document only covers the mechanisms by which network performance information is distributed.  The mechanisms for measuring network performance information or using that information, once distributed, are outside the scope of this document.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7471"/>
          <seriesInfo name="DOI" value="10.17487/RFC7471"/>
        </reference>
        <reference anchor="RFC8231" target="https://www.rfc-editor.org/info/rfc8231" quoteTitle="true" derivedAnchor="RFC8231">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE</title>
            <author initials="E." surname="Crabbe" fullname="E. Crabbe">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="I." surname="Minei" fullname="I. Minei">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Medved" fullname="J. Medved">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R." surname="Varga" fullname="R. Varga">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2017" month="September"/>
            <abstract>
              <t indent="0">The Path Computation Element Communication Protocol (PCEP) provides mechanisms for Path Computation Elements (PCEs) to perform path computations in response to Path Computation Client (PCC) requests.</t>
              <t indent="0">Although PCEP explicitly makes no assumptions regarding the information available to the PCE, it also makes no provisions for PCE control of timing and sequence of path computations within and across PCEP sessions.  This document describes a set of extensions to PCEP to enable stateful control of MPLS-TE and GMPLS Label Switched Paths (LSPs) via PCEP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8231"/>
          <seriesInfo name="DOI" value="10.17487/RFC8231"/>
        </reference>
        <reference anchor="RFC8476" target="https://www.rfc-editor.org/info/rfc8476" quoteTitle="true" derivedAnchor="RFC8476">
          <front>
            <title>Signaling Maximum SID Depth (MSD) Using OSPF</title>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="U." surname="Chunduri" fullname="U. Chunduri">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Aldrin" fullname="S. Aldrin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P." surname="Psenak" fullname="P. Psenak">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="December"/>
            <abstract>
              <t indent="0">This document defines a way for an Open Shortest Path First (OSPF) router to advertise multiple types of supported Maximum SID Depths (MSDs) at node and/or link granularity.  Such advertisements allow entities (e.g., centralized controllers) to determine whether a particular Segment Identifier (SID) stack can be supported in a given network.  This document only refers to the Signaling MSD as defined in RFC 8491, but it defines an encoding that can support other MSD types.  Here, the term "OSPF" means both OSPFv2 and OSPFv3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8476"/>
          <seriesInfo name="DOI" value="10.17487/RFC8476"/>
        </reference>
        <reference anchor="RFC8491" target="https://www.rfc-editor.org/info/rfc8491" quoteTitle="true" derivedAnchor="RFC8491">
          <front>
            <title>Signaling Maximum SID Depth (MSD) Using IS-IS</title>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="U." surname="Chunduri" fullname="U. Chunduri">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Aldrin" fullname="S. Aldrin">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2018" month="November"/>
            <abstract>
              <t indent="0">This document defines a way for an Intermediate System to Intermediate System (IS-IS) router to advertise multiple types of supported Maximum SID Depths (MSDs) at node and/or link granularity. Such advertisements allow entities (e.g., centralized controllers) to determine whether a particular Segment ID (SID) stack can be supported in a given network.  This document only defines one type of MSD: Base MPLS Imposition.  However, it defines an encoding that can support other MSD types.  This document focuses on MSD use in a network that is Segment Routing (SR) enabled, but MSD may also be useful when SR is not enabled.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8491"/>
          <seriesInfo name="DOI" value="10.17487/RFC8491"/>
        </reference>
        <reference anchor="RFC8570" target="https://www.rfc-editor.org/info/rfc8570" quoteTitle="true" derivedAnchor="RFC8570">
          <front>
            <title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
            <author initials="L." surname="Ginsberg" fullname="L. Ginsberg" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Previdi" fullname="S. Previdi" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Giacalone" fullname="S. Giacalone">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D." surname="Ward" fullname="D. Ward">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Drake" fullname="J. Drake">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Q." surname="Wu" fullname="Q. Wu">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="March"/>
            <abstract>
              <t indent="0">In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network-performance criteria (e.g., latency) are becoming as critical to data-path selection as other metrics.</t>
              <t indent="0">This document describes extensions to IS-IS Traffic Engineering Extensions (RFC 5305).  These extensions provide a way to distribute and collect network-performance information in a scalable fashion. The information distributed using IS-IS TE Metric Extensions can then be used to make path-selection decisions based on network performance.</t>
              <t indent="0">Note that this document only covers the mechanisms with which network-performance information is distributed.  The mechanisms for measuring network performance or acting on that information, once distributed, are outside the scope of this document.</t>
              <t indent="0">This document obsoletes RFC 7810.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8570"/>
          <seriesInfo name="DOI" value="10.17487/RFC8570"/>
        </reference>
        <reference anchor="RFC8664" target="https://www.rfc-editor.org/info/rfc8664" quoteTitle="true" derivedAnchor="RFC8664">
          <front>
            <title>Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing</title>
            <author initials="S." surname="Sivabalan" fullname="S. Sivabalan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="W." surname="Henderickx" fullname="W. Henderickx">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Hardwick" fullname="J. Hardwick">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2019" month="December"/>
            <abstract>
              <t indent="0">Segment Routing (SR) enables any head-end node to select any path without relying on a hop-by-hop signaling technique (e.g., LDP or RSVP-TE). It depends only on "segments" that are advertised by link-state Interior Gateway Protocols (IGPs). An SR path can be derived from a variety of mechanisms, including an IGP Shortest Path Tree (SPT), an explicit configuration, or a Path Computation Element (PCE). This document specifies extensions to the Path Computation Element Communication Protocol (PCEP) that allow a stateful PCE to compute and initiate Traffic-Engineering (TE) paths, as well as a Path Computation Client (PCC) to request a path subject to certain constraints and optimization criteria in SR networks.</t>
              <t indent="0">This document updates RFC 8408.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8664"/>
          <seriesInfo name="DOI" value="10.17487/RFC8664"/>
        </reference>
        <reference anchor="RFC8814" target="https://www.rfc-editor.org/info/rfc8814" quoteTitle="true" derivedAnchor="RFC8814">
          <front>
            <title>Signaling Maximum SID Depth (MSD) Using the Border Gateway Protocol - Link State</title>
            <author initials="J." surname="Tantsura" fullname="J. Tantsura">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="U." surname="Chunduri" fullname="U. Chunduri">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Talaulikar" fullname="K. Talaulikar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G." surname="Mirsky" fullname="G. Mirsky">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="N." surname="Triantafillis" fullname="N. Triantafillis">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2020" month="August"/>
            <abstract>
              <t indent="0">This document defines a way for a Border Gateway Protocol - Link State (BGP-LS) speaker to advertise multiple types of supported Maximum SID Depths (MSDs) at node and/or link granularity.</t>
              <t indent="0">Such advertisements allow entities (e.g., centralized controllers) to determine whether a particular Segment Identifier (SID) stack can be supported in a given network.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8814"/>
          <seriesInfo name="DOI" value="10.17487/RFC8814"/>
        </reference>
        <reference anchor="RFC9086" target="https://www.rfc-editor.org/info/rfc9086" quoteTitle="true" derivedAnchor="RFC9086">
          <front>
            <title>Border Gateway Protocol - Link State (BGP-LS) Extensions for Segment Routing BGP Egress Peer Engineering</title>
            <author initials="S." surname="Previdi" fullname="S. Previdi">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Talaulikar" fullname="K. Talaulikar" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C." surname="Filsfils" fullname="C. Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K." surname="Patel" fullname="K. Patel">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S." surname="Ray" fullname="S. Ray">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="J." surname="Dong" fullname="J. Dong">
              <organization showOnFrontPage="true"/>
            </author>
            <date year="2021" month="August"/>
            <abstract>
              <t indent="0">A node steers a packet through a controlled set of instructions, called segments, by prepending the packet with a list of segment identifiers (SIDs).  A segment can represent any instruction, topological or service based. SR segments allow steering a flow through any topological path and service chain while maintaining per-flow state only at the ingress node of the SR domain.</t>
              <t indent="0">This document describes an extension to Border Gateway Protocol - Link State (BGP-LS) for advertisement of BGP Peering Segments along with their BGP peering node information so that efficient BGP Egress Peer Engineering (EPE) policies and strategies can be computed based on Segment Routing.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9086"/>
          <seriesInfo name="DOI" value="10.17487/RFC9086"/>
        </reference>
        <reference anchor="I-D.filsfils-spring-sr-policy-considerations" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-filsfils-spring-sr-policy-considerations-09" derivedAnchor="SR-POLICY-CONSID">
          <front>
            <title>SR Policy Implementation and Deployment Considerations</title>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P" surname="Krol" fullname="Przemyslaw Krol">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Horneffer" fullname="Martin Horneffer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="P" surname="Mattes" fullname="Paul Mattes">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="April" day="24" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-filsfils-spring-sr-policy-considerations-09"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-spring-sr-policy-yang" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-spring-sr-policy-yang-01" derivedAnchor="SR-POLICY-YANG">
          <front>
            <title>YANG Data Model for Segment Routing Policy</title>
            <author initials="K" surname="Raza" fullname="Kamran Raza" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Sawaya" fullname="Robert Sawaya">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Z" surname="Shunwan" fullname="Zhuang Shunwan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Voyer" fullname="Daniel Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Durrani" fullname="Muhammad Durrani">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Matsushima" fullname="Satoru Matsushima">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="V" surname="Beeram" fullname="Vishnu Pavan Beeram">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="April" year="2021"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-spring-sr-policy-yang-01"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ietf-rtgwg-segment-routing-ti-lfa" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ietf-rtgwg-segment-routing-ti-lfa-08" derivedAnchor="SR-TI-LFA">
          <front>
            <title>Topology Independent Fast Reroute using Segment Routing</title>
            <author fullname="Stephane Litkowski">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <author fullname="Ahmed Bashandy">
              <organization showOnFrontPage="true">Individual</organization>
            </author>
            <author fullname="Clarence Filsfils">
              <organization showOnFrontPage="true">Cisco Systems</organization>
            </author>
            <author fullname="Pierre Francois">
              <organization showOnFrontPage="true">INSA Lyon</organization>
            </author>
            <author fullname="Bruno Decraene">
              <organization showOnFrontPage="true">Orange</organization>
            </author>
            <author fullname="Daniel Voyer">
              <organization showOnFrontPage="true">Bell Canada</organization>
            </author>
            <date month="January" day="21" year="2022"/>
            <abstract>
              <t indent="0">   This document presents Topology Independent Loop-free Alternate Fast
   Re-route (TI-LFA), aimed at providing protection of node and
   adjacency segments within the Segment Routing (SR) framework.  This
   Fast Re-route (FRR) behavior builds on proven IP-FRR concepts being
   LFAs, remote LFAs (RLFA), and remote LFAs with directed forwarding
   (DLFA).  It extends these concepts to provide guaranteed coverage in
   any two connected network using a link-state IGP.  A key aspect of
   TI-LFA is the FRR path selection approach establishing protection
   over the expected post-convergence paths from the point of local
   repair, reducing the operational need to control the tie-breaks among
   various FRR options.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-segment-routing-ti-lfa-08"/>
          <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-rtgwg-segment-routing-ti-lfa-08.txt"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.ali-spring-sr-traffic-accounting" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-ali-spring-sr-traffic-accounting-07" derivedAnchor="SR-TRAFFIC-ACCOUNTING">
          <front>
            <title>Traffic Accounting in Segment Routing Networks</title>
            <author initials="Z" surname="Ali" fullname="Zafar Ali">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="K" surname="Talaulikar" fullname="Ketan Talaulikar">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Sivabalan" fullname="Siva Sivabalan">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Horneffer" fullname="Martin Horneffer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R" surname="Raszuk" fullname="Robert Raszuk">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="S" surname="Litkowski" fullname="Stephane Litkowski">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Voyer" fullname="Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R" surname="Morton" fullname="Rick Morton">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="G" surname="Dawra" fullname="Gaurav Dawra">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="May" year="2022"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ali-spring-sr-traffic-accounting-07"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
        <reference anchor="I-D.filsfils-spring-sr-traffic-counters" quoteTitle="true" target="https://datatracker.ietf.org/doc/html/draft-filsfils-spring-sr-traffic-counters-02" derivedAnchor="SR-TRAFFIC-COUNTERS">
          <front>
            <title>Segment Routing Traffic Accounting Counters</title>
            <author initials="C" surname="Filsfils" fullname="Clarence Filsfils">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="Z" surname="Ali" fullname="Zafar Ali" role="editor">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Horneffer" fullname="Martin Horneffer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="D" surname="Voyer" fullname="Daniel Voyer">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="M" surname="Durrani" fullname="Muhammad Durrani">
              <organization showOnFrontPage="true"/>
            </author>
            <author initials="R" surname="Raszuk" fullname="Robert Raszuk">
              <organization showOnFrontPage="true"/>
            </author>
            <date month="October" year="2021"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-filsfils-spring-sr-traffic-counters-02"/>
          <refcontent>Work in Progress</refcontent>
        </reference>
      </references>
    </references>
    <section anchor="Acknowledgement" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgement">Acknowledgement</name>
      <t indent="0" pn="section-appendix.a-1">The authors would like to thank <contact fullname="Tarek Saad"/>,
      <contact fullname="Dhanendra Jain"/>, <contact fullname="Ruediger       Geib"/>, <contact fullname="Rob Shakir"/>, <contact fullname="Cheng       Li"/>, <contact fullname="Dhruv Dhody"/>, <contact fullname="Gyan       Mishra"/>, <contact fullname="Nandan Saha"/>, <contact fullname="Jim       Guichard"/>, <contact fullname="Martin Vigoureux"/>, <contact fullname="Benjamin Schwartz"/>, <contact fullname="David Schinazi"/>,
      <contact fullname="Matthew Bocci"/>, <contact fullname="Cullen       Jennings"/>, and <contact fullname="Carlos J. Bernardos"/> for their
      review, comments, and suggestions.</t>
    </section>
    <section anchor="Contributors" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors</name>
      <t indent="0" pn="section-appendix.b-1">The following people have contributed to this document:</t>
      <author fullname="Siva Sivabalan" initials="S" surname="Sivabalan">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>msiva@cisco.com</email>
        </address>
      </author>
      <author fullname="Zafar Ali" initials="Z" surname="Ali">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>zali@cisco.com</email>
        </address>
      </author>
      <author fullname="Jose Liste" initials="J" surname="Liste">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>jliste@cisco.com</email>
        </address>
      </author>
      <author fullname="Francois Clad" initials="F" surname="Clad">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>fclad@cisco.com</email>
        </address>
      </author>
      <author fullname="Kamran Raza" initials="K" surname="Raza">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>skraza@cisco.com</email>
        </address>
      </author>
      <author fullname="Mike Koldychev" initials="M" surname="Koldychev">
        <organization showOnFrontPage="true">Cisco Systems</organization>
        <address>
          <email>mkoldych@cisco.com</email>
        </address>
      </author>
      <author fullname="Shraddha Hegde" initials="S" surname="Hegde">
        <organization showOnFrontPage="true">Juniper Networks</organization>
        <address>
          <email>shraddha@juniper.net</email>
        </address>
      </author>
      <author fullname="Steven Lin" initials="S" surname="Lin">
        <organization showOnFrontPage="true">Google, Inc.</organization>
        <address>
          <email>stevenlin@google.com</email>
        </address>
      </author>
      <author fullname="Przemyslaw Krol" initials="P" surname="Krol">
        <organization showOnFrontPage="true">Google, Inc.</organization>
        <address>
          <email>pkrol@google.com</email>
        </address>
      </author>
      <author fullname="Martin Horneffer" initials="M" surname="Horneffer">
        <organization showOnFrontPage="true">Deutsche Telekom</organization>
        <address>
          <email>martin.horneffer@telekom.de</email>
        </address>
      </author>
      <author fullname="Dirk Steinberg" initials="D" surname="Steinberg">
        <organization showOnFrontPage="true">Steinberg Consulting</organization>
        <address>
          <email>dws@steinbergnet.net</email>
        </address>
      </author>
      <author fullname="Bruno Decraene" initials="B" surname="Decraene">
        <organization showOnFrontPage="true">Orange Business Services</organization>
        <address>
          <email>bruno.decraene@orange.com</email>
        </address>
      </author>
      <author fullname="Stephane Litkowski" initials="S" surname="Litkowski">
        <organization showOnFrontPage="true">Orange Business Services</organization>
        <address>
          <email>stephane.litkowski@orange.com</email>
        </address>
      </author>
      <author fullname="Luay Jalil" initials="L" surname="Jalil">
        <organization showOnFrontPage="true">Verizon</organization>
        <address>
          <email>luay.jalil@verizon.com</email>
        </address>
      </author>
    </section>
    <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c">
      <name slugifiedName="name-authors-addresses">Authors' Addresses</name>
      <author fullname="Clarence Filsfils" initials="C." surname="Filsfils">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <extaddr>Pegasus Parc</extaddr>
            <street>De kleetlaan 6a</street>
            <city>Diegem</city>
            <code>1831</code>
            <country>Belgium</country>
          </postal>
          <email>cfilsfil@cisco.com</email>
        </address>
      </author>
      <author fullname="Ketan Talaulikar" initials="K." role="editor" surname="Talaulikar">
        <organization showOnFrontPage="true">Cisco Systems, Inc.</organization>
        <address>
          <postal>
            <street/>
            <city/>
            <region/>
            <code/>
            <country>India</country>
          </postal>
          <email>ketant.ietf@gmail.com</email>
        </address>
      </author>
      <author fullname="Daniel Voyer" initials="D." surname="Voyer">
        <organization showOnFrontPage="true">Bell Canada</organization>
        <address>
          <postal>
            <street>671 de la gauchetiere W</street>
            <city>Montreal</city>
            <region>Quebec</region>
            <code>H3B 2M8</code>
            <country>Canada</country>
          </postal>
          <email>daniel.voyer@bell.ca</email>
        </address>
      </author>
      <author fullname="Alex Bogdanov" initials="A." surname="Bogdanov">
        <organization showOnFrontPage="true">British Telecom</organization>
        <address>
          <email>alex.bogdanov@bt.com</email>
        </address>
      </author>
      <author fullname="Paul Mattes" initials="P." surname="Mattes">
        <organization showOnFrontPage="true">Microsoft</organization>
        <address>
          <postal>
            <street>One Microsoft Way</street>
            <city>Redmond</city>
            <region>WA</region>
            <code>98052-6399</code>
            <country>United States of America</country>
          </postal>
          <email>pamattes@microsoft.com</email>
        </address>
      </author>
    </section>
  </back>
</rfc>
