<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?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-00"
     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>huaimo.chen@futurewei.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="2022"/>

    <abstract>
     <t>PCE is used to distribute a binding SID with a list of SIDs 
        to a node. 
        This document describes extensions to
        PCEP for distributing 
        the binding SID with the list of SIDs and an identifier of the node.
        When detecting the failure of the node, an neighbor of the node
        protects 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 network node.
An SR Policy is an
   ordered list of segments (i.e., instructions) that represent a
   source-routed policy.
An SR Policy consists of one or more candidate
   paths, each consisting of one or more segment lists.
An SR Policy may contain a binding SID associated with a path
represented by a segment list (i.e., a list of SIDs).
</t>

     <t>After a PCE as a controller distributes an SR policy containing 
a binding SID associated with a list of SIDs to a network node,
each neighbor of the node needs the information about the binding SID
for protecting the binding SID of the node when the node fails.
The information includes the binding SID, the list of SIDs and 
the identifier (ID) of the node.

This document proposes some procedures and extensions 
         to PCEP for distributing the information.
</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 of the nodes 
      of 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 information about a binding SID 
      on a node to each neighbor of the node
      for protecting the binding SID of the node when the node fails.</t>

    <section title="Capability of distributing Binding for Protection">

      <t>When a PCE and a PCC running on a network node 
      establish a PCEP session between them, they exchange 
      their capabilities of distributing Binding for 
      Binding SID Protection 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 SID (BSID) Distribution for Protection
Capability (BSID-D for short) sub-TLV.
</t>

     <t>PST = TBD1 indicates that Binding SID with List of SIDs 
       (path) for a node for protecting binding SID of the node.</t>

     <t>BSID-D sub-TLV contains parameters used for distributing 
        the information about a binding SID for protection.</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_DISTRIBUTION_PROTECTION_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 
       distributing Binding for Protection, 
      sends a PCE an Open message containing 
a PATH_SETUP_TYPE_CAPABILITY TLV with Path Setup Type (PST) = TBD1 
and a BSID_DISTRIBUTION_PROTECTION_CAPABILITY sub-TLV. 
PST = TBD1 indicates that the PCC is capable of receiving and processing 
the 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 
       distributing Binding for Protection, 
      sends a PCC an Open message containing 
a PATH_SETUP_TYPE_CAPABILITY TLV with Path Setup Type (PST) = TBD1 
and a BSID_DISTRIBUTION_PROTECTION_CAPABILITY sub-TLV.
PST = TBD1 indicates that the PCE is capable of sending 
the information about a binding SID 
      on a node to the PCC
      for protecting the binding SID of the node when the node fails.</t>

      <t>If both a PCC and a PCE support the capability of 
       distributing Binding for Protection, 
      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_DISTRIBUTION_PROTECTION_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 information about a binding SID 
      on a node for protecting the binding SID of the node 
when the node fails.</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 information about a binding SID 
      on a node for protecting the binding SID of the node from the PCE.</t>


      <t>When PCECC is used, 

a PCC and PCE exchange capability of distributing Binding SID for 
Binding SID protection 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 information to a node 
(i.e., the PCC running on the node), 
a PCE sends the corresponding binding protection 
information to each neighbor 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 for Binding SID 
           with List of SIDs (path) for a node for protecting 
           binding SID of the 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 sub-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/6)           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Node ID (4/6 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 (4/6) indicates the length 
          of the value field of the TLV is 4/6.</t>
       <t hangText="Node ID:"> 4/6-octet field 
          contains the OSPF/IS-IS node (or 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 piece of binding information 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 each neighbor 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 information to node N, 
if the PCE removes the binding information from node N through sending 
a third PCUpd message to node N, the PCE removes the corresponding 
binding protection information from each neighbor of node N through 
sending a fourth PCUpd message to the neighbor. </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 information to node N, 
if the PCE changes the binding information in node N through 
sending a fifth PCUpd message to node N, the PCE changes the 
corresponding binding protection information in each neighbor 
of node N through sending a sixth PCUpd message to the neighbor.
</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.RFC.9012"?>
    </references>

    <references title="Informative References">
      <?rfc include="reference.I-D.ietf-pce-binding-label-sid"?>

    </references>

  </back>

</rfc>
