<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?Pub Inc?>
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-rtgwg-srv6-egress-protection-14"
     ipr="trust200902">
  <front>
    <title abbrev="Egress Protection">SRv6 Path Egress Protection</title>

    <author fullname="Zhibo Hu" initials="Z. " surname="Hu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Bld., No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>huzhibo@huawei.com</email>
      </address>
    </author>

    <author fullname="Huaimo Chen" initials="H" surname="Chen">
      <organization>Futurewei</organization>

      <address>
        <postal>
          <street/>

          <city>Boston, MA</city>

          <region/>

          <code/>

          <country>USA</country>
        </postal>

        <email>Huaimo.chen@futurewei.com</email>
      </address>
    </author>
<!--
    <author fullname="Huanan Chen" initials="H. " surname="Chen">
      <organization>China Telecom</organization>

      <address>
        <postal>
          <street>109, West Zhongshan Road, Tianhe District</street>

          <city>Guangzhou</city>

          <code>510000</code>

          <country>China</country>
        </postal>

        <email>chenhn8.gd@chinatelecom.cn</email>
      </address>
    </author>

    <author fullname="Peng Wu" initials="P. " surname="Wu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>Huawei Bld., No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <code>100095</code>

          <country>China</country>
        </postal>

        <email>baggio.wupeng@huawei.com</email>
      </address>
    </author>
-->
    <author fullname="Mehmet Toy" initials="M" surname="Toy">
      <organization>Verizon</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <country>USA</country>
        </postal>

        <email>mehmet.toy@verizon.com</email>
      </address>
    </author>

    <author fullname="Chang Cao" initials="C" surname="Cao">
      <organization>China Unicom</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <country>Beijing China</country>
        </postal>

        <email>caoc15@chinaunicom.cn</email>
      </address>
    </author>

    <author fullname="Tao He" initials="T" surname="He">
      <organization>China Unicom</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <country>Beijing China</country>
        </postal>

        <email>het21@chinaunicom.cn</email>
      </address>
    </author>

 <!--
    <author fullname="Lei Liu" initials="L" surname="Liu">
      <organization>Fujitsu</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country>USA</country>
        </postal>

        <email>liulei.kddi@gmail.com</email>
      </address>
    </author>

   <author initials="X" fullname="Xufeng Liu" 
            surname="Liu">
      <organization>IBM Corporation</organization>
      <address>
        <postal>
          <street> </street>
          <city> </city>
          <region> </region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>xufeng.liu.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Chris Bowers" initials="C. " surname="Bowers">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street>1194 N. Mathilda Ave.</street>
          <city>Sunnyvale, CA</city>
          <code>94089</code>
          <country>USA</country>
        </postal>
        <email>cbowers@juniper.net</email>
      </address>
    </author>
-->

    <date year="2023"/>

    <abstract>
      <t>TI-LFA specifies fast protections for transit nodes and links of an
      SR path. However, it does not present any fast protections for  
      the egress node of the SR path.
      This document describes protocol extensions for fast protecting 
      the egress node and link of a Segment Routing for IPv6 (SRv6) path.</t>

      <t/>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"></xref> <xref target="RFC8174"></xref>
      when, and only when, they appear in all
      capitals, as shown here.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <!-- <xref target="I-D.hu-rtgwg-sr-proxy-forwarding"/>. -->

      <t><xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/>
      specifies fast protections 
      for nodes and links that are within a link-state IGP area.
      In other words, it specifies fast protections for transit nodes 
      and links of an SR path, but does not describe any fast 
      protections for the egress node or link of an SR path. </t>

      <t><xref target="RFC8400"/> and <xref target="RFC8679"/> 
      specify fast protections for egress node(s) and link(s) of an
      MPLS TE LSP tunnel including P2P TE LSP tunnel and P2MP TE LSP tunnel in
      details. However, these documents do not discuss any fast protection for
      the egress node and link of a Segment Routing for IPv6 (SRv6) path or tunnel.</t>

      <t>For an SRv6 path from an ingress node to an egress node, 
      the fast protection for the egress node and link of the path can be 
      achieved through using 1 + 1 global protection. This solution
      uses more network resources and makes operation complex. 
      A backup SRv6 path from the ingress node to a backup egress node
      is set up. A CE is dual homed to the egress node and
      the backup egress node. A SID of the egress node
      is used to forward the traffic to the CE. This same SID is
      configured on the backup egress node to forward the traffic
      to the same CE. Both paths transmit the traffic to the same
      CE, which selects one. The CE selects the traffic from the 
      egress node if the egress node and link work well;
      otherwise (i.e., the egress node or link failed), the CE
      selects the traffic from the backup egress node.</t>

<!--
      <t>This document fills that void and presents protocol extensions for
      the fast protection of the egress node of an SRv6 path or tunnel.</t>
-->
      <t>
      This document presents a solution which provides fast protections 
      for the egress node and link  
      of an SRv6 path through extending IGP and using Mirror SID.
      Compared to 1 + 1 global protection, 
      this solution is more efficient 
      and the operation on it is simpler. 
      </t>

<!--
      <t>There are a number of topics related to the egress protection, which
      include the detection of egress node failure, the relation between
      egress protection and global repair, and so on. These are discussed in
      details in <xref target="RFC8679"/>.</t>
-->
    </section>

    <!-- Introduction -->

    <section title="Terminologies">
      <t>The following terminologies are used in this document. <list
          style="hanging">

          <t hangText="BFD:">Bidirectional Forwarding Detection</t>
          <t hangText="BGP:">Border Gateway Protocol</t>
          <t hangText="CE:">Customer Edge</t>
          <t hangText="DA:">Destination Address</t>

          <t hangText="Egress link:">A link from an egress node to another 
             domain <xref target="RFC8679"/></t>
          <t hangText="Egress node:">A domain exit node on a SRv6 path</t>

          <t hangText="FIB:">Forwarding Information Base</t>

          <t hangText="IGP:">Interior Gateway Protocol</t>
          <t hangText="IS-IS:">Intermediate System to Intermediate System</t>

          <t hangText="L3VPN:">Layer 3 VPN</t>
          <t hangText="LFA:">Loop-Free Alternate</t>
          <t hangText="LS:">Link Sate, which is LSA in OSPF or LSP in
             IS-IS</t>
          <t hangText="LSA:">Link State Advertisement in OSPF</t>
          <t hangText="LSP:">Label Switched Path in MPLS or Link State
             Protocol PDU in IS-IS</t>

          <t hangText="OSPF:">Open Shortest Path First</t>

          <t hangText="P2MP:">Point-to-MultiPoint</t>
          <t hangText="P2P:">Point-to-Point</t>
          <t hangText="PDU:">Protocol Data Unit</t>
          <t hangText="PE:">Provider Edge</t>
          <t hangText="PLR:">Point of Local Repair</t>

          <t hangText="RL:">Repair List</t>

          <t hangText="SA:">Source Address</t>
          <t hangText="SID:">Segment Identifier</t>
          <t hangText="SR:">Segment Routing</t>
          <t hangText="SR path:">A SR path in this document is the
             active path of a SR Policy 
             <xref target="RFC9256"/></t>
          <t hangText="SRv6:">SR for IPv6</t>

          <t hangText="SRv6 path:">A SRv6 path in this document is the
             active path of a SR Policy with SRv6 SIDs 
             <xref target="RFC9256"/></t>

          <t hangText="TE:">Traffic Engineering</t>
          <t hangText="TI-LFA:">Topology Independent LFA</t>

          <t hangText="VPN:">Virtual Private Network</t>
        </list></t>
    </section>

    <!-- Terminologies -->

    <section title="SR Path Egress Protection">
      <t>This section describes the mechanism of SR path egress protection and
      illustrates it through an example.</t>

      <section title="Mechanism">
        <t><xref target="SR-Protect-Egress-A"/> is used to explain the
        mechanism of SR path egress node and egress link protection. <figure
            anchor="SR-Protect-Egress-A"
            title="PEB Protects Egress PEA of SR Path">
            <artwork><![CDATA[                                    
            *******  *******   SIDa
        [PE1]-----[P1]-----[PEA]---[CE2]    PEA Egress
        / |        |&        | \   /        PEB Backup Egress
       /  |        |&        |  \ /         CEx Customer Edge
  [CE1]   |        |&        |   X          Px  Non-Provider Edge
       \  |        |&        |  / \         *** SR Path
        \ |        |& &&&&&  | /   \        &&& Backup Path
        [PE2]-----[P2]-----[PEB]---[CE3]                                                                       
                        Mirror SID]]></artwork>
          </figure> 
     </t>


     <section title="Egress Node Protection">
     <t>Desired Pathways in <xref target="SR-Protect-Egress-A"/>:</t>

     <t>
        Node PEA in <xref target="SR-Protect-Egress-A"/> 
        is the egress node (aka egress) 
        of the SR path from PE1 to
        PEA and has SIDa which is the active segment in the packet from the
        SR path at PEA. Node PEB is the backup egress node (aka protector or
        backup egress) to
        provide the fast protection for the egress node 
        (aka primary egress node) PEA. Node P1
        is the direct previous/upstream hop of egress node PEA and 
        acts as PLR 
        (refer to <xref target="I-D.ietf-rtgwg-segment-routing-ti-lfa"/>)
        to support the fast protection for PEA.</t>

     <t>Steps in Creating the Pathways:</t>

     <t>Step 1: Normal Pathway Set-up</t>

       <t>Normal path set-up establishes 
          the SR path from ingress PE1 to egress PEA via P1. 
          Ingress PE1 imports the traffic from CE1 into the SR path and
          egress PEA delivers the traffic from the SR path to CE2.</t>

     <t>Step 2: Backup Pathway Set-up</t>

     <t>Step 2a: PEB Announces to Protect PEA</t>

        <t>When PEB is selected as a backup egress node 
        to protect the egress node PEA,
        a Mirror SID (refer to Section 5.1 of <xref target="RFC8402"/>) is
        configured on PEB to protect PEA. PEB MUST advertise this information
        through IGP, which includes the Mirror SID and the egress PEA. The
        information is represented by &lt;PEB, PEA, Mirror SID&gt;, which
        indicates that PEB protects PEA with Mirror SID.</t>

     <t>Step 2b: PEB Gets Forwarding Behavior of PEA</t>

        <t>After PEA receives the information &lt;PEB, PEA, Mirror SID&gt;, it
        may send the forwarding behavior of the SIDa at PEA to PEB with the
        Mirror SID. 
        This information is sent via BGP if PEB can not obtain this
        behavior from other protocols or other information.
<!--
        In some cases, PEB can figure out the behavior of the SIDa at PEA 
        from other protocols. 
-->
        For example, when SIDa is a VPN SID of PEA, PEB can get 
        the behavior of the SIDa at PEA based on the VPN SID distribution by
        <xref target="RFC9252"/>.

        If PEB cannot obtain the behavior of the SIDa at PEA from protocols,
        the behavior MUST be configured on PEB.
<!--
        How to send the forwarding behavior of the SIDa to PEB is out scope of
        this document
-->
        </t>

     <t>Step 2c: PEB Creates FIB for PEA</t>

        <t>When PEB gets the forwarding behavior of the SIDa of PEA from PEA
        or other means, it MUST add a forwarding entry for the SIDa according to
        the behavior into the forwarding table for node PEA. This table is
        identified by the Mirror SID, which indicates node PEA's context.
        Using the forwarding entry for SIDa in this table, a packet with SIDa
        will be transmitted by PEB to the same destination as it is
        transmitted by PEA. For example, assume that the packet with SIDa is
        transmitted by PEA to CE2 through the forwarding behavior of the SIDa
        in PEA. The packet will be transmitted by PEB to the same CE2 through
        looking up the table identified by the Mirror SID.</t>

     <t>Step 2d: P1 as PLR Prepares to Protect PEA by PEB</t>

        <t>After P1 as PLR receives the information &lt;PEB, PEA, Mirror
        SID&gt; and knows that PEB wants to protect SIDa of PEA, it computes
        an LFA for PEA assuming that PEA and PEB have a same anycast address.
        A Repair List RL (or say backup path) is obtained based on the LFA.
        It is one of the following: <list style="hanging">
            <t hangText="o">RL = &lt;Mirror SID&gt; if the LFA is the next 
               hop node to PEB along the shortest path to PEB; or</t>

            <t hangText="o">RL = &lt;S1, ..., Sn, Mirror SID&gt; if the LFA is
            a TI-LFA, where &lt;S1, ..., Sn&gt; is the TI-LFA Repair
            List to PEB computed by P1.</t>
          </list></t>


     <t>Step 3: Backup Path Is Engaged upon PEA Failure</t>

     <t>Step 3a: P1 Detects PEA Failure via BFD or Other Mechanisms</t>

     <t>Step 3b: P1 Sends Packet with SIDa to Backup Egress PEB</t>

        <t>When egress node PEA fails, 
        P1 as PLR sends the packet with SIDa carried by the
        SR path to backup egress node PEB, 
        but MUST encapsulate the packet before sending it by
        executing H.Encaps with the Repair List RL and a Source Address T.</t>

<t>P1 as PLR needs to
   retain the route to PEA for a period of time 
   after its IGP converges on the failure of PEA.  Thus the backup path
   for PEA will be used when the other nodes (such as PE1) still send
   the packet to PEA via P1 since their IGPs do not converge on the
   failure.
</t>

        <t>Suppose that the packet received by P1 is represented by Pkt = (S,
        SIDa)Pkt0, where SA = S and DA = SIDa, and Pkt0 is the rest of the
        packet.</t>

        <t>The execution of H.Encaps pushes an IPv6 header to Pkt and sets
        some fields in the outer and inner IPv6 header to produce an
        encapsulated packet Pkt'. Pkt' will be one of the following: <list
            style="hanging">
            <t hangText="o">Pkt' = (T, Mirror SID) (S, SIDa)Pkt0 if RL =
            &lt;Mirror SID&gt;; or</t>

            <t hangText="o">Pkt' = (T, S1)(Mirror SID, Sn, ..., S1; SL=n) (S,
            SIDa)Pkt0 if RL = &lt;S1, ..., Sn, Mirror SID&gt;.</t>
          </list></t>


     <t>Step 3c: PEB Decapsulates Packet and Forwards It</t>

        <t>When PEB receives the re-routed packet, which is (T, Mirror SID)
        (S, SIDa)Pkt0, it decapsulates the packet and forwards the
        decapsulated packet using the FIB table Tm identified by the Mirror SID
        as a variant of End.DT6 SID. The Mirror SID
        is called End.M.</t>

        <t>It obtains the Mirror SID in the outer IPv6 header of the packet,
        removes this outer IPv6 header with all its extension headers, and
        then processes the inner IPv6 packet (i.e., (S, SIDa)Pkt0, the packet
        without the outer IPv6 header). PEB finds the FIB table Tm for node PEA
        using the Mirror SID as the context ID, and submits the packet to this
        FIB table lookup and transmission to the same destination as PEA
        does.</t>

        <t>The behavior of Mirror SID (End.M for short) is a variant of
           the End.DT6 behavior (refer to Section 4.6 of 
           <xref target="RFC8986"/>). 
           The End.M SID MUST be the last segment in an SR path, 
           and a SID instance is associated with an IPv6 FIB table Tm.</t>

       <t>When processing the Upper-Layer header of a packet matching 
          a FIB entry locally instantiated as an End.M SID,
          N does the following:</t>
<t>
<figure>
            <artwork><![CDATA[
    S01. If (Upper-Layer header type == 41(IPv6) ) {
    S02.    Remove the outer IPv6 header with all its extension headers
    S03.    Set the packet's associated FIB table to Tm
    S04.    Submit the packet to the egress IPv6 FIB lookup for
               transmission to the new destination
    S05. } Else {
    S06.    Process as per Section 4.1.1 of RFC8986
    S07. }]]></artwork>
</figure>
</t>

     </section>
<!-- "Egress Node Protection" -->

     <section title="Egress Link Protection">

      <t>Egress link protection is similar to egress node protection
        <xref target="RFC8679"/>.
        When the egress link from egress node PEA to CE2 fails,
        PEA acting as a PLR reroutes the traffic to 
        backup egress node PEB via a backup path. 
        Specifically, PEA as a PLR pre-computes a Repair List RL 
        (or say backup path) toward PEB after 
        receiving &lt;PEB, PEA, Mirror SID&gt; and
        knowing that PEB wants to protect SIDa of PEA. 
        When the link fails, PEA as PLR sends the packet with SIDa
        by executing H.Encaps with the Repair List RL.
      </t>
     </section>
<!-- "Egress Link Protection" -->
      </section>

      <!-- Mechanism -->

      <section title="Example">
        <t><xref target="SR-Protect-Egress-PE3"/> shows an example of
        fast protecting egress node PE3 of an SR path, 
        which is from ingress node PE1 to
        egress node PE3. <figure anchor="SR-Protect-Egress-PE3"
            title="PE4 Protects Egress PE3 of SR Path">
            <artwork><![CDATA[ 
                                Locator: A3:1::/64
              *******  *******  VPN SID: A3:1::B100
          [PE1]-----[P1]-----[PE3]---[CE2]      PE3 Egress
          / |        |&        | \   /          PE4 Backup Egress
         /  |        |&        |  \ /           CEx Customer Edge
    [CE1]   |        |&        |   X            Px  Non-Provider Edge
         \  |        |&        |  / \           *** SR Path
          \ |        |& &&&&&  | /   \          &&& Backup Path
          [PE2]-----[P2]-----[PE4]---[CE3]
                                Locator: A4:1::/64 
                                VPN SID: A4:1::B100
                             Mirror SID: A4:1::3, protect A3:1::/64]]></artwork>
          </figure> 
     </t>

     <t>Desired Pathways in <xref target="SR-Protect-Egress-PE3"/>:</t>

        <t>Node P1's pre-computed backup path for PE3 is from
        P1 to PE4 via P2. In normal operations, after receiving a packet with
        destination PE3, P1 forwards the packet to PE3 according to its FIB.
        When PE3 receives the packet, it sends the packet to CE2.</t>

        <t>When PE3 fails, P1 as PLR detects the failure through using a
        failure detection mechanism such as BFD and forwards the packet to PE4
        via the backup path. When PE4 receives the packet, it sends the packet
        to the same CE2.</t>

        <t>When P1's IGP converges on the failure of PE3, P1 as PLR needs to
        retain the route to PE3 for a period of time. 
        Thus the backup path for PE3 will be used when the other nodes 
        (such as PE1) still send the packet to PE3 via P1 since their IGPs
        do not converge on the failure.</t>

        <t>In <xref target="SR-Protect-Egress-PE3"/>, Both CE2 and CE3 are
        dual home to PE3 and PE4. PE3 has a locator A3:1::/64 and a VPN SID
        A3:1::B100. PE4 has a locator A4:1::/64 and VPN SID A4:1::B100. A
        Mirror SID A4:1::3 is configured on PE4 for protecting PE3 with
        locator A3:1::/64. </t>

     <t>Steps in Creating the Pathways:</t>

     <t>Step 1: Normal Pathway Set-up [PEB is PE4, PEA is PE3]</t>
     <t>Step 2: Backup Pathway Set-up</t>

     <t>Step 2a: PE4 (aka PEB) Announces to Protect PE3 (aka PEA)</t>

        <t>After the configuration, PE4 advertises this information through an
        IGP LS (i.e., LSA in OSPF or LSP in IS-IS), which includes PE3's
        locator and Mirror SID A4:1::3. Every node in the SR domain will
        receive this IGP LS, which indicates that PE4 wants to protect PE3 
        (indicated by PE3's locator) with Mirror SID A4:1::3.</t>

     <t>Step 2b: PE4 (aka PEB) Gets Forwarding Behavior of PE3 (aka PEA)</t>

        <t>When PE4 (e.g., BGP on PE4) receives a prefix whose VPN SID belongs
        to PE3 that is protected by PE4 through Mirror SID A4:1::3, it finds
        PE4's VPN SID corresponding to PE3's VPN SID. For example, local PE4
        has Prefix 1.1.1.1 with VPN SID A4:1::B100, when PE4 receives prefix
        1.1.1.1 with remote PE3's VPN SID A3:1::B100, it knows that they are
        for the same VPN.</t>

        <t>The forwarding behaviors for these two VPN SIDs are the same from
        function's point of view. If the behavior for PE3's VPN SID in PE3
        forwards the packet with it to CE2, then the behavior for PE4's VPN
        SID in PE4 forwards the packet to the same CE2; and vice versa. </t>

     <t>Step 2c: PE4 (aka PEB) Creates FIB for PE3 (aka PEA)</t>

        <t>PE4
        creates a forwarding entry for PE3's VPN SID A3:1::B100 in the FIB
        table identified by Mirror SID A4:1::3 according to the forwarding
        behavior for PE4's VPN SID A4:1::B100.</t>

        <!--
    <t>(Note: alternatively, the entry created may map PE3's VPN SID A3:1::B100 
    to PE4's VPN SID A4:1::B100. PE4 uses its VPN SID to forward the packet
    in its forwarding table. This is a local decision.)</t> 
-->

     <t>Step 2d: P1 Prepares to Protect PE3 (aka PEA) by PE4 (aka PEB)</t>

        <t>Node P1's pre-computed backup path for destination PE3 is
        from P1 to PE4 having mirror SID A4:1::3. When P1 receives a packet
        destined to PE3's VPN SID A3:1::B100, in normal operations, it
        forwards the packet with source A1:1:: and destination PE3's VPN SID
        A3:1::B100 according to the FIB using the destination PE3's VPN SID
        A3:1::B100.</t>


     <t>Step 3: Backup Path Is Engaged upon PE3 (aka PEA) Failure</t>

     <t>Step 3a: P1 Detects PE3 (aka PEA) Failure via BFD</t>

     <t>Step 3b: P1 Sends Packet with SIDa to Backup Egress PE4 (aka PEB)</t>

        <t>When PE3 fails, P1 as PLR sends the packet to PE4 via the backup
        path pre-computed. P1 encapsulates the packet using H.Encaps before
        sending it to PE4.</t>

        <t>Suppose that the packet received by P1 is represented by Pkt = (SA
        = A1:1::, DA = A3:1::B100)Pkt0, where DA = A3:1::B100 is PE3's VPN
        SID, and Pkt0 is the rest of the packet. The encapsulated packet Pkt'
        will be one of the following: <list style="hanging">
            <t hangText="o">Pkt' = (T, Mirror SID A4:1::3) (A1:1::,
            A3:1::B100)Pkt0 if the LFA is the next hop node to PE4 along the
      shortest path to PE4; or (otherwise)</t>

            <t hangText="o">Pkt' = (T, S1)(Mirror SID A4:1::3, Sn, ..., S1;
            SL=n) (A1:1::, A3:1::B100)Pkt0.</t>
          </list> where T is a Source Address, &lt;S1, ..., Sn&gt; is the
        TI-LFA Repair List to PE4 computed by P1.</t>

    <t>Step 3c: PE4 (aka PEB) Decapsulates Packet and Forwards It</t>

        <t>When PE4 receives the re-routed packet, it decapsulates the packet
        and forwards the decapsulated packet by executing the behavior of
        End.M for the Mirror SID
        that is associated with the IPv6 FIB table for PE3. The packet
        received by PE4 is (T, Mirror SID A4:1::3) (A1:1::, PE3's VPN SID
        A3:1::B100)Pkt0.</t>

        <t>PE4 obtains Mirror SID A4:1::3 in the outer IPv6 header of the
        packet, removes this outer IPv6 header, and then processes the inner
        IPv6 packet (A1:1::, A3:1::B100)Pkt0. It finds the FIB table for PE3
        using Mirror SID A4:1::3 as the context ID, gets the forwarding entry
        for PE3's VPN SID A3:1::B100 from the table, and forwards the packet
        to CE2 using the entry.</t>
      </section>

      <!-- Example -->
    </section>

    <!-- SR Path Egress Protection -->

    <section title="Extensions to IGP for Egress Protection">
      <t>This section describes extensions to IS-IS and OSPF for advertising
      the information about SRv6 path egress protection.</t>

      <section title="Extensions to IS-IS">
        <t>A new sub-TLV, called IS-IS SRv6 Mirror SID sub-TLV, is defined. It
        is used in the SRv6 Locator TLV defined in <xref
        target="RFC9352"/> to advertise SRv6 Mirror
        SID and the locators of the nodes to be protected. The SRv6 Mirror SID
        inherit the topology/algorithm from the parent locator. The format of
        the sub-TLV is illustrated below.<figure
            anchor="isis-srv6-mirror-sid-sub-tlv"
            title="IS-IS SRv6 Mirror SID sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Type (TBD1)   |    Length     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Reserved    |    SRv6 Endpoint Function     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         SID (16 octets)                       |
 :                                                               :
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         sub-sub-TLVs                          |
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure></t>

        <t><list style="hanging">
            <t hangText="Type:">TBD1 (suggested value 8) is to be assigned by
            IANA.</t>

            <t hangText="Length:">1 octet. Its value MUST NOT be less than 23.
<!--
               and less than 38.
-->
               23 is 19 (i.e., the size of Reserved, SRv6 Endpoint Function and SID) 
               plus 4 (i.e., the minimum size of a IS-IS protected locators sub-sub-TLV).
<!--
               38 is 19 plus 19 (i.e., the maximum size of a IS-IS protected 
               locator sub-sub-TLV).
-->
               The entire IS-IS SRv6 Mirror SID sub-TLV MUST be ignored 
               if the length is less than 23.
               </t>

            <t hangText="Reserved:">1 octet. This octet MUST be set to zero 
               on transmit, and ignored on receipt.</t>

            <t hangText="SRv6 Endpoint Function:">2 octets. It MUST contain the endpoint
               function 74 for Mirror SID. 
               The entire IS-IS SRv6 Mirror SID sub-TLV MUST be ignored 
               if it does not contain the endpoint function 74.</t>

            <t hangText="SID:">16 octets. This field contains the SRv6 Mirror
               SID to be advertised. It MUST NOT be zero (0). 
               The entire IS-IS SRv6 Mirror SID sub-TLV MUST be ignored 
               if it contains zero (0).
            </t>
          </list></t>

<!--
        <t>Two sub-sub-TLVs are defined. One is the protected locators sub-sub-TLV, and
        the other is the protected SIDs sub-sub-TLV.</t>
-->
        <t>A protected locators sub-sub-TLV is defined and used to carry 
        the Locators of the egress node to be
        protected by the SRv6 mirror SID. 
        The IS-IS SRv6 Mirror SID sub-TLV MUST include one 
        IS-IS protected locators sub-sub-TLV. 
        It has the following format.<figure
            anchor="isis-protected-node-sub-tlv"
            title="IS-IS Protected Locators sub-sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Type (TBD2)  |    Length     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure></t>

        <t><list style="hanging">
            <t hangText="Type:">TBD2 (suggested value 1) is to be assigned by
            IANA.</t>

            <t hangText="Length:">1 octet. Its value MUST NOT be less than 2.
               The entire IS-IS SRv6 Mirror SID sub-TLV MUST be ignored 
               if the length is less than 2.
<!-- 
               and less than 17.
-->
            </t>

            <t hangText="Locator-Size:">1 octet. Number of bits in
            the Locator field, which MUST be from the range (1-128).
            The entire IS-IS SRv6 Mirror SID sub-TLV MUST be ignored 
            if the Loc-Size is outside this range.</t>

            <t hangText="Locator:">1-16 octets. This field encodes an SRv6
            Locator of an egress node to be protected by the SRv6 mirror SID. 
            The Locator is
            encoded in the minimal number of octets for the given number of
            bits. Trailing bits MUST be set to zero and 
            ignored when received.</t>
          </list></t>

<!--
        <t>A protected SIDs sub-sub-TLV is used to carry the SIDs to be protected
        by the SRv6 Mirror SID. It has the following format. <figure
            anchor="isis-protected-sids-sub-tlv"
            title="IS-IS Protected SIDs sub-sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  Type (TBD3)  |    Length     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure> <list style="hanging">
            <t hangText="Type:">TBD3 (suggested value 2) is to be assigned by
            IANA.</t>

            <t hangText="Length:">variable.</t>

            <t hangText="SID-Size:">1 octet. Number of bits in the SID field.
            It is from 1 to 128. When it is less than 128, the SID field is a
            locator. When it is 128, the SID field is an SRv6 SID.</t>

            <t hangText="SID:">1-16 octets. This field encodes an SRv6 SID 
            to be protected. The SID is encoded in the minimal
            number of octets for the given number of bits. Trailing bits MUST
            be set to zero and ignored when received.</t>
          </list></t>
-->
        <t>When node B advertises that B wants to protect node A
        with a Mirror SID through an LSP, the LSP MUST have 
        an SRv6 Locator TLV containing an IS-IS SRv6
        Mirror SID sub-TLV, which includes the Mirror SID and node A's
        locators in an IS-IS Protected locators sub-sub-TLV. </t>
<!--
        <t>Note: the IS-IS extensions for SR MPLS is described in <xref
        target="RFC8667"/>. It says that the SID/Label Binding TLV may also be
        used to advertise a Mirror SID. For B to protect egress A of SR MPLS
        path, B may also use this TLV to advertise the node A's ID and a
        specific set of SIDs of A to be protected. An IS-IS SR MPLS Mirror SID
        sub-TLV may be obtained from an IS-IS SRv6 Mirror SID sub-TLV by
        replacing each SID field in the latter with an SID/Label sub-TLV. B
        may advertise a SID/Label Binding TLV including this IS-IS SR MPLS
        Mirror SID sub-TLV.</t>

        <t>Alternatively, an IS-IS SR MPLS Mirror Supplement sub-TLV is
        defined from an IS-IS SRv6 Mirror SID sub-TLV by removing the SID
        field in the top level and replacing each other SID field with an
        SID/Label sub-TLV. That is that an IS-IS SR MPLS Mirror Supplement
        sub-TLV just contains a Protected Node sub-TLV and a Protected SIDs
        sub-TLV, which includes SID/Label sub-TLVs. When the SID/Label Binding
        TLV contains an SID/Label sub-TLV for the Mirror SID, it includes an
        IS-IS SR MPLS Mirror Supplement sub-TLV.</t>
-->
      </section>

      <!-- Extensions to IS-IS -->

      <section title="Extensions to OSPF">
        <t>Similarly, a new sub-TLV, called OSPF Mirror SID sub-TLV, is
        defined. It is used in the SRv6 Locator TLV defined in 
        <xref target="I-D.ietf-lsr-ospfv3-srv6-extensions"/>
        to advertise SRv6 Mirror SID and the locators of
        the nodes to be protected. Its format is illustrated below.<figure
            anchor="ospf-srv6-mirror-sid-sub-tlv"
            title="OSPF SRv6 Mirror SID sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Type (TBD4)           |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |             Reserved          |    SRv6 Endpoint Function     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         SID (16 octets)                       |
 :                                                               :
 |                                                               |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                            sub-TLVs                           |
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure></t>

        <t><list style="hanging">
            <t hangText="Type:">TBD4 (suggested value 8) is to be assigned by
            IANA.</t>

            <t hangText="Length:">2 octets. Its value MUST NOT be less than 26.
<!--
               and less than 41.
-->
               26 is 20 (i.e., the size of Reserved, SRv6 Endpoint Function and SID) 
               plus 6 (i.e., the minimum size of a OSPF protected locators sub-TLV).
<!--
               41 is 20 plus 21 (i.e., the maximum size of a OSPF protected 
               locator sub-TLV).
-->
               The entire OSPF SRv6 Mirror SID sub-TLV MUST be ignored 
               if the length is less than 26.
            </t>

            <t hangText="Reserved:">2 octets. It MUST be set to zero 
               for transmission and ignored on reception.</t>

            <t hangText="SRv6 Endpoint Function:">2 octets. 
               It MUST contain the endpoint
               function 74 for End.M SID.
               The entire OSPF SRv6 Mirror SID sub-TLV MUST be ignored if
               it does not contain the endpoint function 74.</t>

            <t hangText="SID:">16 octets. This field contains the SRv6 Mirror
               SID to be advertised.
               It MUST NOT be zero (0).  
               The entire OSPF SRv6 Mirror SID sub-TLV MUST be
               ignored if it contains zero (0).</t>
          </list></t>
<!--
        <t>Two sub-TLVs are defined. One is the protected locators sub-TLV, and
        the other is the protected SIDs sub-TLV.</t>
-->
        <t>A protected locators sub-TLV is defined and used to carry the 
           locators of the
        node to be protected by the SRv6 Mirror SID. 
        The OSPF SRv6 Mirror SID sub-TLV MUST include one 
        OSPF protected locators sub-TLV. 
        It has the following
        format.<figure anchor="ospf-protected-node-sub-tlv"
            title="OSPF Protected Locators sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Type (TBD5)           |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Locator-Size  |           Locator (variable)                  ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | Locator-Size  |           Locator (variable)                  ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure></t>

        <t><list style="hanging">
            <t hangText="Type:">TBD5 (suggested value 1) is to be assigned by
            IANA.</t>

            <t hangText="Length:">2 octets. Its value MUST NOT be less than 2.
<!-- 
               and less than 17.
-->
               The entire OSPF SRv6 Mirror SID sub-TLV MUST be ignored
               if the Length is less than 2.
            </t>

            <t hangText="Locator-Size:">1 octet. Number of bits (1 - 128) in
            the Locator field.
               Number of bits in the Locator field, which
               MUST be from the range (1-128). 
               The entire OSPF SRv6 Mirror SID sub-TLV MUST be ignored if
               the Loc-Size is outside this range.</t>

            <t hangText="Locator:">1-16 octets. This field encodes an SRv6
               Locator of an egress node to be protected by the SRv6 mirror SID. 
               The Locator is
               encoded in the minimal number of octets for the given number of
               bits. Trailing bits MUST be set to zero and ignored when
               received.</t>
          </list></t>

        <t>When node B advertises that B wants to protect node A
        with a Mirror SID through an LSA, the LSA MUST have 
        an SRv6 Locator TLV containing an OSPF SRv6
        Mirror SID sub-TLV, which includes the Mirror SID and node A's
        locators in an OSPF Protected Locators sub-TLV. </t>

<!--
        <t>A protected SIDs sub-TLV is used to carry the SIDs to be protected
        by the SRv6 Mirror SID. It has the following format. <figure
            anchor="ospf-protected-sids-sub-tlv"
            title="OSPF Protected SIDs sub-TLV">
            <artwork><![CDATA[  
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |         Type (TBD6)           |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 :                                                               :
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   SID-Size    |         SID (variable)                        ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
          </figure></t>

        <t><list style="hanging">
            <t hangText="Type:">TBD6 (suggested value 2) is to be assigned by
            IANA.</t>

            <t hangText="Length:">variable.</t>

            <t hangText="SID-Size:">1 octet. Number of bits in the SID field.
            It is from 1 to 128. When it is less than 128, the SID field is a
            locator. When it is 128, the SID field is an SRv6 SID.</t>

            <t hangText="SID:">1-16 octets. This field encodes an SRv6 SID
            to be protected. The SID is encoded in the minimal
            number of octets for the given number of bits. Trailing bits MUST
            be set to zero and ignored when received.</t>
          </list></t>
-->
      </section>

      <!-- Extensions to OSPF -->
    </section>

    <!-- Extensions to IGP -->

    <section anchor="Security" title="Security Considerations">

      <t>The egress protection specified in this document involves
      rerouting traffic around an egress node or link failure, 
      via a backup path from a PLR to a backup egress node. 
      The forwarding performed by the nodes in the data plane is 
      anticipated, as part of the planning of egress protection.
      </t>

      <t>The extensions to control plane protocol IS-IS or OSPFv3
      are used to support the egress protection on the nodes in 
      an OSPF or IS-IS area. 
      The area is in a single administrative domain.</t>

      <t>In addition, the PLR and backup egress node are located 
      close to the egress node, which is in the same 
      administrative domain. 
      </t>

<t>Security concerns for IS-IS are addressed in
<xref target="ISO10589"/>,
<xref target="RFC5304"/> and <xref target="RFC5310"/>. 
While IS-IS is
deployed under a single administrative domain, there can be deployments 
where potential
attackers have access to one or more networks in the IS-IS routing domain. 
In these deployments,
the stronger authentication mechanisms defined in the aforementioned 
documents SHOULD be
used.
      </t>

<t>Security concerns for OSPFv3 are described in
<xref target="RFC5340"/> and <xref target="RFC8362"/>. 
While OSPFv3 is under a single
   administrative domain, there can be deployments where potential
   attackers have access to one or more networks in the OSPFv3 routing
   domain.  In these deployments, stronger authentication mechanisms
   such as those specified in 
<xref target="RFC4552"/> and <xref target="RFC7166"/>
SHOULD be used.
</t>

      <t>Security attacks may sometimes come from a customer domain. 
      Such attacks are not introduced by the egress protection 
      in this document and may occur regardless of the existence of 
      egress protection. 
      In one possible case, the egress link between an egress node 
      and a CE could become a point of attack.
      An attacker that gains control of the CE might use it to 
      simulate link failures and trigger constant and cascading 
      activities in the network. 
      If egress link protection is in place,
      egress link protection activities may also be triggered. 
      As a general solution to defeat the attack, a
      damping mechanism SHOULD be used by the egress node to promptly 
      suppress the services associated with the link or CE.
      The egress node would stop delivering the services to CE, 
      essentially detaching them from the network and eliminating 
      the effect of the simulated link failures.
      </t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section anchor="SRv6-End" title="SRv6 Endpoint Behaviors">
        <t>Under sub-registry "SRv6 Endpoint Behaviors" <xref
        target="RFC8986"/>, IANA has assigned the following
        for End.M Endpoint Behavior: <figure>
            <artwork><![CDATA[
  +==============+========+=====================+===============+
  | Value        | Hex    | Endpoint behavior   | Reference     |
  +==============+========+=====================+===============+
  |   74         | 0x004A | End.M (Mirror SID)  | This document |
  +--------------+--------+---------------------+---------------+
  ]]></artwork>
          </figure></t>
      </section>

      <section anchor="IS-IS" title="IS-IS">
        <t>Under 
"IS-IS Sub-TLVs for TLVs Advertising Prefix Reachability registry", 
IANA is requested to add
        the following new Sub-TLV: <figure>
            <artwork><![CDATA[
  +==============+=========================+===============+
  |     Type     | Description             | Reference     |
  +==============+=========================+===============+
  |     8        | SRv6 Mirror SID         | This document |
  +--------------+-------------------------+---------------+ 
  ]]></artwork>
          </figure></t>

        <t>IANA is requested to create and maintain a new registry for
        sub-sub-TLVs of the SRv6 Mirror SID Sub-TLV. The suggested registry
        name is <list style="hanging">
            <t hangText=" o">Sub-Sub-TLVs for SRv6 Mirror SID Sub-TLV</t>
          </list> Initial values for the registry are given below. The future
        assignments are to be made through IETF Review <xref
        target="RFC5226"/>. <figure>
            <artwork><![CDATA[ 
  Value    Sub-Sub-TLV Name                 Definition
  -----   -----------------------          -------------
  0       Reserved
  1       Protected Locators Sub-Sub-TLV   This Document
  2-255   Unassigned
 ]]></artwork>
          </figure></t>
      </section>

      <!-- IS-IS -->

      <section anchor="OSPFv3" title="OSPFv3">
        <t>Under registry "OSPFv3 Locator LSA Sub-TLVs" <xref
        target="I-D.ietf-lsr-ospfv3-srv6-extensions"/>, IANA is requested to
        assign the following new Sub-TLVs: <figure>
            <artwork><![CDATA[
  +==============+============================+===============+
  | Sub-TLV Type | Sub-TLV Name               | Reference     |
  +==============+============================+===============+
  |     8        | SRv6 Mirror SID Sub-TLV    | This document |
  +--------------+----------------------------+---------------+
  |     11       | Protected Locators Sub-TLV | This document |
  +--------------+----------------------------+---------------+ ]]></artwork>
          </figure></t>
      </section>

      <!-- OSPFv3 -->
    </section>


  </middle>

  <back>
    <references title="Normative References">

    <reference anchor="ISO10589">
       <front>
	 <title>
	   Intermediate System to Intermediate System
	   Intra-Domain Routing Exchange Protocol for use in Conjunction
	   with the Protocol for Providing the Connectionless-mode Network
	   Service (ISO 8473)
	 </title>
	 <author>
	   <organization abbrev="ISO">
	     International Organization for Standardization
	   </organization>
	 </author>
	 <date year="2002" month="November"/>
       </front>
       <seriesInfo name="ISO/IEC" value="10589:2002"/>
     </reference>
      <?rfc include="reference.RFC.2119"?>
<!-- <?rfc include="reference.RFC.7356"?> -->
<!-- <?rfc include="reference.RFC.7490"?> -->
      <?rfc include="reference.RFC.8174"?>
      <?rfc include="reference.RFC.8400"?>

      <?rfc include="reference.RFC.8402"?>

<!--  <?rfc include="reference.RFC.8665"?> -->

      <?rfc include="reference.RFC.8667"?>

      <?rfc include="reference.RFC.8679"?>
      <?rfc include="reference.RFC.8986"?>
      <?rfc include="reference.RFC.9256"?>

      <?rfc include="reference.I-D.ietf-lsr-ospfv3-srv6-extensions"?>
      <?rfc include="reference.RFC.9352"?>


      <?rfc include="reference.RFC.5304"?>
      <?rfc include="reference.RFC.5310"?>


      <?rfc include="reference.RFC.5340"?>
      <?rfc include="reference.RFC.8362"?>

      <?rfc include="reference.RFC.4552"?>
      <?rfc include="reference.RFC.7166"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.ietf-rtgwg-segment-routing-ti-lfa"?>

<!--  <?rfc include="reference.I-D.ietf-spring-segment-routing-policy"?> -->

      <?rfc include="reference.RFC.3107"?>
      <?rfc include="reference.RFC.4364"?>
      <?rfc include="reference.RFC.5226"?>
      <?rfc include="reference.RFC.9252"?>

<!--  <?rfc include="reference.RFC.5462"?> -->
    </references>

    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a">
      <name slugifiedName="name-acknowledgments">Acknowledgments</name>
       <t>The authors would like to thank Acee Lindem, Peter Psenak, Yimin Shen,
       Jie Dong, Zhenqiang Li, 
       Alexander Vainshtein, Greg Mirsky, Bruno Decraene, Jeff Tantsura,
       Chris Bowers, Ketan Talaulikar, Bob Halley, Tal Mizrahi, 
       Yingzhen Qu and Susan Hares
       for their comments to this work.</t>
    </section>

    <section numbered="false" toc="include" removeInRFC="false" pn="section-appendix.b">
      <name slugifiedName="name-contributors">Contributors' Addresses</name>
      <figure>
        <artwork>Huanan Chen
China Telecom
109, West Zhongshan Road, Tianhe District
Guangzhou
510000
China
Email: chenhn8.gd@chinatelecom.cn

Peng Wu
Huawei
Huawei Bld., No.156 Beiqing Rd.
Beijing
100095
China
Email: baggio.wupeng@huawei.com

Lei Liu
Fujitsu
United States of America
Email: liulei.kddi@gmail.com

Xufeng Liu
Alef Edge
United States of America
Email: xufeng.liu.ietf@gmail.com</artwork>
      </figure>
    </section>

  </back>
</rfc>
