<?xml version="1.0" encoding="US-ASCII"?>

<?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-chen-pce-mbinding-03"
     ipr="trust200902">
  <front>
    <title abbrev="Mirror Binding">PCE for Mirror Binding</title>

     <author initials="H" surname="Chen" fullname="Huaimo Chen">
      <organization>Futurewei</organization>
      <address>
        <postal>
          <street></street>
          <city>Boston, MA</city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>hchen.ietf@gmail.com</email>
      </address>
    </author>

    <author initials="B" fullname="Bruno Decraene" 
            surname="Decraene">
      <organization> Orange </organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <country>France</country>
        </postal>
        <email>bruno.decraene@orange.com</email>
      </address>
     </author>

    <author fullname="Gyan S. Mishra" initials="G" surname="Mishra">
      <organization>Verizon</organization>
      <address>
        <postal>
          <street>13101 Columbia Pike</street>
          <city>Silver Spring</city>
          <code>MD 20904</code>
          <country>USA</country>
        </postal>
        <phone> 301 502-1347</phone>
        <email>gyan.s.mishra@verizon.com</email>
      </address>
    </author>

<!--
   <author initials="Y" fullname="Yanhe Fan" 
            surname="Fan">
      <organization>Casa Systems</organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>yfan@casa-systems.com</email>
      </address>
    </author>
-->
     <author initials="A" fullname="Aijun Wang" 
            surname="Wang">
      <organization>China Telecom</organization>
      <address>
        <postal>
          <street>Beiqijia Town, Changping District</street>
          <city>Beijing</city>
          <region> </region>
          <code>102209</code>
          <country>China</country>
        </postal>
        <email>wangaj3@chinatelecom.cn</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 initials="L" fullname="Lei Liu" 
            surname="Liu">
      <organization>Fujitsu</organization>
      <address>
        <postal>
          <street> </street>
          <city> </city>
          <region></region>
          <code></code>
          <country>USA</country>
        </postal>
        <email>liulei.kddi@gmail.com</email>
      </address>
    </author>


    <date year="2024"/>

    <abstract>
     <t>PCE is used to distribute a binding 
to a node. The binding includes a binding SID and 
a path represented by a list of SIDs. 
         
        This document describes extensions to PCEP for distributing
the information about the binding to a protecting node.

        For an SR path via the node with the binding SID, 
        when the node fails,
   the protecting node such
   as the upstream neighbor on the path uses the information to protect
   the binding SID of the failed node.
</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">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">

	
    <t><xref target="I-D.ietf-pce-binding-label-sid"/> 
specifies how PCE may be used to distribute a 
Segment Routing (SR) Policy to a node in a network.
An SR Policy may contain a binding, which includes 
a binding SID and a path associated with the binding SID.
The path is represented by a list of SIDs.
</t>

     <t>After a PCE as a controller distributes  
the binding to the node, the
node forwards the packet with the binding SID according to the first
   SID in the list.  It replaces the binding SID in the packet with the
   list of SIDs and forwards the packet using the FIB entry for the top
   SID (i.e., the first SID) in the packet.</t>

     <t>
When the node fails, suppose that the upstream neighbor (as PLR) of
   the node has the corresponding binding protection information for
   protecting the binding SID of the node.  The information includes the
   binding SID, the list of SIDs and an identifier of the node.  After
   the upstream neighbor as PLR detects the failure of the node, for a
   packet with the node SID of the failed node received, it protects the
binding SID of the failed node.  It pops the node SID, replaces the
   binding SID in the packet with the list of SIDs, forwards the packet
   without going through the failed node towards the top SID (i.e., the
   first SID, assuming it is a node SID for simplicity here).  How a
   upstream node protect the binding SID of the failed node is out of
   scope of this document and described in

<xref target="I-D.ietf-spring-segment-protection-sr-te-paths"/>
and <xref target="I-D.hu-spring-segment-routing-proxy-forwarding"/> 
(Note: the second reference will be removed after
the first one includes enough text for 
protecting binding SIDs of a node).</t>

<t>
This document proposes some procedures and extensions 
         to PCEP for distributing the binding protection information 
to the possible protecting nodes, which are the nodes that may protect
   the failed node.
</t> 

    </section> <!-- Introduction -->

<!--
    <section title="Terminologies">
    <t>The following terminologies are used in this document.
      <list style="hanging" hangIndent="6">
       <t hangText="PCE:">Path Computation Element</t>
       <t hangText="PCEP:">PCE communication Protocol</t>
       <t hangText="PCC:">Path Computation Client</t>
      </list>
     </t>
    </section>
-->
 <!-- Terminologies -->


    <section title="Extensions to PCEP">
      <t>A PCC may run on each node 
      in a network.
      A PCE runs on a server as a controller to communicate with PCCs.
      The PCE and the PCCs 
      work together to distribute the binding protection information 
      about a binding SID 
      on a node to the possible protecting nodes
      for protecting the binding SID of the node when the node fails.</t>

    <section title="Binding Protection Information Distribution Capability">

      <t>When a PCE and a PCC running on a network node 
      establish a PCEP session between them, they exchange 
      their capabilities of Binding  
      Protection Information Distribution in Open messages.

An Open message includes an Open object. The object contains
a PATH_SETUP_TYPE_CAPABILITY TLV with Path Setup Type (PST) = TBD1 
and a new sub-TLV, called Binding Protection Information Distribution
Capability (BSID-D for short) sub-TLV.
</t>

     <t>PST = TBD1 indicates Binding Protection Information 
Distribution.</t>

     <t>BSID-D sub-TLV contains parameters used for 
        Binding Protection Information distribution.</t>

     <t>The format of BSID-D sub-TLV is shown in 
<xref target="bsid-d-protection-cap-sub-tlv"/>.</t>

<t>
<figure anchor="bsid-d-protection-cap-sub-tlv" 
        title="BSID_PROTECTION_DISTRIBUTION_CAPABILITY 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 = 4           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           Reserved            |          Flags                |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</figure>
</t>

<t>
     <list style="hanging">
       <t hangText="Type:"> TBD2 is to be assigned by IANA.</t>
       <t hangText="Length:"> 4. </t>
       <t hangText="Reserved:"> 2 octets. Must be set to zero in transmission 
          and ignored on reception. </t>
       <t hangText="Flags:"> 2 octets. No flag bits are defined.</t>
      </list>
</t>

      <t>A PCC, which supports the capability of 
       Binding Protection Information Distribution, 
      sends a PCE an Open message containing 
a PATH_SETUP_TYPE_CAPABILITY TLV with Path Setup Type (PST) = TBD1 
and a BSID_PROTECTION_DISTRIBUTION_CAPABILITY sub-TLV. 
PST = TBD1 indicates that the PCC is capable of receiving and processing 
the binding protection information about a binding SID 
      on a node from the PCE
      for protecting the binding SID of the node when the node fails.</t>

      <t>A PCE, which supports the capability of 
       Binding Protection Information Distribution, 
      sends a PCC an Open message containing 
a PATH_SETUP_TYPE_CAPABILITY TLV with Path Setup Type (PST) = TBD1 
and a BSID_PROTECTION_DISTRIBUTION_CAPABILITY sub-TLV.
PST = TBD1 indicates that the PCE supports the capability of 
       Binding Protection Information Distribution.</t>

      <t>If both a PCC and a PCE support the capability of 
       Binding Protection Information Distribution, 
      each of the Open messages sent by the PCC and PCE contains 
      a PATH-SETUP-TYPE-CAPABILITY TLV with a PST list containing PST = TBD1 and 
      a BSID_PROTECTION_DISTRIBUTION_CAPABILITY sub-TLV.</t>

      <t>If a PCE receives an Open message without a 
PATH-SETUP-TYPE-CAPABILITY TLV containing PST = TBD1 from a PCC, 
      then the PCE MUST not send the PCC 
      any binding protection information.</t>

      <t>If a PCC receives an Open message without a 
PATH-SETUP-TYPE-CAPABILITY TLV containing PST = TBD1 from a PCE, 
      then the PCC MUST ignore any binding protection information 
      from the PCE.</t>


      <t>When PCECC is used, 

a PCC and PCE exchange capability of 
binding protection information distribution
using PCECC-CAPABILITY Sub-TLV 
which is included in the PATH_SETUP_TYPE_CAPABILITY TLV in an Open message.
</t>

    <t>A new flag bit B is defined in the Flags field of the 
PCECC-CAPABILITY sub-TLV as shown in 
<xref target="pcecc-cap-sub-tlv"/>.

B flag (for Binding SID Protection): 
if set to 1 by a PCEP speaker (PCE or PCC), 
the B flag indicates that the PCEP 
speaker supports and is willing to handle the PCECC based 
central controller instructions for Binding SID protection.  
The bit MUST be set to 1 by both a PCC and a PCE for the PCECC 
Binding SID protection instruction download/report on a PCEP session.
 </t>

<t>
<figure anchor="pcecc-cap-sub-tlv" 
        title="PCECC-Capability sub-TLV with B">
<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 = 1            |          Length = 4           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                         Flags                             |B|L|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</figure>
</t>

    </section> <!-- Capability of  -->


    <section title="Extensions to RP/SRP Object">
<t>After sending the binding to a node 
(i.e., the PCC running on the node), 
a PCE sends the corresponding binding protection 
information to the possible protecting nodes of the node
in a PCEP message 
such as a Path Computation LSP Update Request (PCUpd) message. 
The message contains a Request Parameters (RP) object or 
Stateful PCE Request Parameters (SRP) object. 
The object includes: 

     <list style="symbol">
       <t>A PATH-SETUP-TYPE TLV with PST = TBD1 indicating 
          binding protection information for a Binding SID 
           of a node.</t>
       <t>A Node ID TLV containing the identifier of the node.</t>
      </list>
</t>

    <t>The format of PATH-SETUP-TYPE TLV is shown in
<xref target="path-setup-type-tlv"/>.
 </t>

<t>
<figure anchor="path-setup-type-tlv" 
        title="PATH-SETUP-TYPE TLV with PST = TBD1">
<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 = 28           |          Length = 4           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                  Reserved                     |   PST = TBD1  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork>
</figure>
</t>

      <t>
         The format of Node ID TLV 
         is illustrated in <xref target="ospf-node-tlv"/>.</t>
<t>
<figure anchor="ospf-node-tlv" 
        title="Node ID TLV Format">
<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 = TBDa           |         Length (4)            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         Node ID (4 octets)                    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>
</t>

<t>
     <list style="hanging">
       <t hangText="Type:"> Its value (TBDa) is to be assigned by IANA.</t>
       <t hangText="Length:">Its value indicates the length 
          of the value field of the TLV is 4.</t>
       <t hangText="Node ID:"> 4-octet field 
          contains the 4-octet TE router identifier (ID) of
          the (protected) node.</t>
      </list>
</t>

    </section> <!-- Extensions to RP/SRP   -->

    </section> <!-- Extensions to PCEP -->


    <section anchor="procedure" title="Procedure for Updating Information">
      <t>When a PCE sends a binding to node N 
(i.e., PCC running on N)
in a first Path Computation LSP Update Request (PCUpd) message, 
the PCE sends the corresponding binding 
protection information to the possible protecting nodes 
such as neighbors of node N in a second PCUpd message. 
 </t>

      <t>
The first message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV. 
The RP/SRP object does not include any PATH-SETUP-TYPE TLV with PST = TBD1.   
The TLV includes a binding SID and R bit set to zero.  
 </t>

      <t> 
The second message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV.
The RP/SRP object includes a PATH-SETUP-TYPE TLV with PST = TBD1 and
a Node ID TLV indicating node N.
TE-PATH-BINDING TLV includes the binding SID and R bit set to zero. 
 </t>


      <t>After a PCE sends the binding to node N, 
if the PCE removes the binding from node N through sending 
a third PCUpd message to node N, the PCE removes the corresponding 
binding protection information from the nodes through 
sending a fourth PCUpd message to the nodes. </t>

      <t>
The third message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV. 
The RP/SRP object does not include any PATH-SETUP-TYPE TLV with PST = TBD1.   
The TLV includes a binding SID and R bit set to one (1).  
 </t>

      <t> 
The fourth message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV.
The RP/SRP object includes a PATH-SETUP-TYPE TLV with PST = TBD1 and
a Node ID TLV indicating node N.
TE-PATH-BINDING TLV includes the binding SID and R bit set to one (1). 
 </t>


      <t>After a PCE sends the binding to node N, 
if the PCE changes the binding in node N through 
sending a fifth PCUpd message to node N, the PCE changes the 
corresponding binding protection information in the nodes 
through sending a sixth PCUpd message to the them.
</t>
      <t>
The fifth message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV. 
The RP/SRP object does not include any PATH-SETUP-TYPE TLV with PST = TBD1. 
The LSP object includes a (changed) path.
The TLV includes a binding SID and R bit set to zero.  
 </t>

      <t> 
The sixth message contains an RP/SRP object and 
an LSP object with a TE-PATH-BINDING TLV.
The RP/SRP object includes a PATH-SETUP-TYPE TLV with PST = TBD1 and
a Node ID TLV indicating node N.
The LSP object includes the (changed) path.
TE-PATH-BINDING TLV includes the binding SID and R bit set to zero. 
 </t>
 
    </section>


<!--
    <section anchor="Security" title="Security Considerations">
      <t>Protocol extensions defined in this document do not 
      affect the BGP security other than those as discussed 
      in the Security Considerations section of 
      <xref target="RFC5575"/>.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
     <t>The authors of this document would like to thank 
     Dhruv Dhody
     for the comments.</t>
    </section>
-->
 



  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.I-D.ietf-spring-segment-protection-sr-te-paths"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.ietf-pce-binding-label-sid"?>
      <?rfc include="reference.I-D.hu-spring-segment-routing-proxy-forwarding"?>

    </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 
         Andrew Stone, and Dhruv Dhody
      for their comments to this work.</t>
    </section>

  </back>
</rfc>
