<?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="no"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="no"?>
<?rfc compact="yes" ?>
<?rfc iprnotified="Yes" ?>
<?rfc strict="no" ?>
<rfc ipr="trust200902" category="std" docName="draft-chen-pce-compute-backup-egress-24" obsoletes="" updates="" submissionType="IETF" xml:lang="en">

  <front><?Pub Caret?>
    <!-- The abbreviated title is used in the page header - it is only necessary if the 
         full title is longer than 39 characters -->


    <title abbrev="Find Backup Egress"> 
     Extensions to the Path Computation Element Communication Protocol (PCEP) 
          for Backup Egress of a Traffic Engineering Label Switched Path
    </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

   

 <author initials="H." fullname="Huaimo Chen" 
         surname="Chen">
      <organization>
         Futurewei
      </organization>
      <address>
        <postal>
         <street></street>
         <city>Boston</city>
          <region>MA</region>
          <country>USA</country>
        </postal>
        <email>hchen.ietf@gmail.com</email>
      </address>
  </author>

<!-- 
 <author initials="C." fullname="Cyril Margaria" 
         surname="Margaria">

      <organization>
         Nokia Siemens Networks
      </organization>

      <address>
        <postal>

          <city>St Martin Strasse 76</city>
          <region>Munich, 81541</region>
          <country>Germany</country>
        </postal>

        <email>cyril.margaria@nsn.com</email>

      </address>
  </author>
-->

    <date year="2024" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>template</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->


<abstract>
<t>     
This document presents extensions to the Path Computation Element Communication Protocol (PCEP) 
for a PCC to send a request for computing a backup egress for an MPLS TE P2MP LSP or 
an MPLS TE P2P LSP
to a PCE and for a PCE to compute the backup egress and reply to the PCC with 
a computation result for the backup egress.
</t> 
</abstract>



</front>
<middle>
  
  


<section title="Introduction">
    
<t>
RFC 4655 "A Path Computation Element-(PCE) Based Architecture" 
describes a set of building blocks for constructing solutions to 
compute Point-to-Point (P2P) Traffic Engineering (TE) label switched 
paths across multiple areas or Autonomous System (AS) domains.  
A typical PCE-based system comprises one or more path computation 
servers, traffic engineering databases (TED), and a number of 
path computation clients (PCC). A routing protocol is used to 
exchange traffic engineering information from which the TED is 
constructed. A PCC sends a Point-to-Point traffic engineering Label 
Switched Path (LSP) computation request to the path computation 
server, which uses the TED to compute the path and responses to 
the PCC with the computed path. A path computation server is 
named as a PCE. The communications between a PCE and a PCC for 
Point-to-Point label switched path computations follow the PCE 
communication protocol (PCEP).
</t>

<t>
RFC6006 "Extensions to PCEP 
for Point-to-Multipoint Traffic Engineering Label Switched Paths" 
describes extensions to PCEP to 
handle requests and responses for the computation of paths for P2MP TE LSPs.
</t>


<!--
<t>
"Extensions to RSVP-TE for P2MP TE LSPs" RFC4875 describes 
how to use the one-to-one backup method and facility bypass backup method to protect 
a link or intermediate node failure on the path of a P2MP LSP. 
</t>

<t> 
However, there is no mention of locally protecting an egress node 
failure in a protected P2MP LSP or P2P LSP. 
</t>
-->


<t>     
This document defines extensions to the Path Computation Element 
Communication Protocol (PCEP) for a PCC to send a request for computing 
a backup egress node for an MPLS TE P2MP LSP or an MPLS TE P2P LSP
to a PCE and for a PCE to compute the backup egress node and 
reply to the PCC with a computation result for the backup egress node.
</t> 

</section>


  
<section title="Terminology">
<t>
This document uses terminologies defined in RFC5440, and RFC4875.
</t>
</section>


<section title="Conventions Used in This Document">
<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 RFC 2119.
</t>
</section>  
                                

<section title="Extensions to PCEP">
<t>
This section describes the extensions to PCEP for computing
a backup egress of an MPLS TE P2MP LSP and an MPLS TE P2P LSP.
</t>

<section title="Backup Egress Capability Advertisement">

<section title="Capability TLV in Existing PCE Discovery Protocol">
<t>
An option for advertising a PCE capability for computing 
a backup egress for an MPLS TE P2MP LSP or an MPLS TE P2P LSP
is to define two new flags. 
One new flag in the OSPF and IS-IS PCE Capability Flags 
indicates the capability that a PCE is capable to compute
a backup egress for an MPLS TE P2MP LSP;
and another new flag in the OSPF and IS-IS PCE Capability Flags 
indicates the capability that a PCE is capable to compute
a backup egress for an MPLS TE P2P LSP.
</t>

<!--
<t>
The first option is to define a new flag in the OSPF and IS-IS PCE 
Capability Flags to
indicate the capability that a PCE is capable to compute both
a backup egress for an MPLS TE P2MP LSP and 
a backup egress for an MPLS TE P2P LSP.
</t>

<t>
The second option is to define two new flags. 
One new flag in the OSPF and IS-IS PCE Capability Flags 
indicates the capability that a PCE is capable to compute
a backup egress for an MPLS TE P2MP LSP;
and another new flag in the OSPF and IS-IS PCE Capability Flags 
indicates the capability that a PCE is capable to compute
a backup egress for an MPLS TE P2P LSP.
</t>

<t>
This second option is preferred now.
</t>
-->

<t>
The format of the PCE-CAP-FLAGS sub-TLV is as follows:

<figure>
  <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 = 5         |             Length            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    ~                 PCE Capability Flags                          ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Type:     5
      Length:   Multiple of 4 octets
      Value:    This contains an array of units of 32-bit flags
                numbered from the most significant as bit zero, where
                each bit represents one PCE capability.

The following capability bits have been assigned by IANA:

      Bit       Capabilities
       0        Path computation with GMPLS link constraints
       1        Bidirectional path computation
       2        Diverse path computation
       3        Load-balanced path computation
       4        Synchronized path computation
       5        Support for multiple objective functions
       6        Support for additive path constraints
                (max hop count, etc.)
       7        Support for request prioritization
       8        Support for multiple requests per message
       9        Global Concurrent Optimization (GCO)
       10       P2MP path computation
      11-31     Reserved for future assignments by IANA.
  ]]>
  </artwork>
</figure>
</t>
<t>
Reserved bits SHOULD be set to zero on transmission and MUST be
ignored on receipt.
</t>

<!--
<t>
For the first option, one bit such as bit 13 may be assigned to indicate that 
a PCE is capable to compute both a backup egress for 
an MPLS TE P2MP LSP and a backup egress for an MPLS TE P2P LSP.
</t>

  <artwork> <![CDATA[  
      Bit       Capabilities
       13       Backup egress computation for P2MP LSP and P2P LSP
      14-31     Reserved for future assignments by IANA.
  ]]>
  </artwork>
-->

<t>
For the backup egress capabilities, 
one bit such as bit 13 may be assigned to indicate that 
a PCE is capable to compute a backup egress for 
an MPLS TE P2MP LSP and another bit such as 
bit 14 may be assigned to indicate that 
a PCE is capable to compute a backup egress for an MPLS TE P2P LSP
as follows.

<figure>
  <artwork> <![CDATA[  
      Bit       Capabilities
       13       Backup egress computation for P2MP LSP 
       14       Backup egress computation for P2P LSP
      15-31     Reserved for future assignments by IANA.
  ]]>
  </artwork>
</figure>
</t>
</section>



<section title="Open Message Extension">

<t>
If a PCE does not advertise its backup egress compution 
capability during discovery, 
PCEP should be used to allow a PCC to discover, during the
Open Message Exchange, which PCEs are capable of supporting backup egress
computation.
</t>

<t>
To achieve this, we extend the PCEP OPEN object by
defining a new optional TLV to indicate the PCE's capability to
perform backup egress computation for an MPLS TE P2MP LSP and 
an MPLS TE P2P LSP.
</t>

<t>
We request IANA to allocate a value such as 8 from the 
"PCEP TLV Type Indicators" subregistry,
as documented in Section below ("Backup Egress Capability TLV").
The description is "backup egress capable", 
and the length value is 2 bytes.
The value field is set to indicate the capability of a PCE for
backup egress computation for an MPLS TE LSP in details.
</t>

<t>
We can use flag bits in the value field in the same way as the PCE
Capability Flags described in the previous section.
</t>

<!--
<t>
There are two options to indicate a PCE's capability for computing
a backup egress for an MPLS TE P2MP LSP or an MPLS TE P2P LSP.
</t>

<t>
The first option is to use one bit such as bit 2 in the value field
to indicate that a PCE is capable to compute both a backup egress 
for an MPLS TE P2MP LSP and a backup egress for an MPLS TE P2P LSP.
</t>

<t>
The second option is to use one bit such as bit 2 in the value
field to indicate that a PCE is capable to compute a backup egress 
for an MPLS TE P2MP LSP; and 
another bit such as bit 3 in the value
field to indicate that a PCE is capable to compute a backup egress 
for an MPLS TE P2P LSP.
</t>
-->

<t>
The inclusion of this TLV in an OPEN object indicates that the sender
can perform backup egress computation for an MPLS TE P2MP LSP or 
an MPLS TE P2P LSP.
</t>

<t>
The capability TLV is meaningful only for a PCE, so it will typically
appear only in one of the two Open messages during PCE session
establishment. However, in case of PCE cooperation (e.g.,
inter-domain), when a PCE behaving as a PCC initiates a PCE session
it SHOULD also indicate its path computation capabilities.
</t>

</section>
</section>



<section title="Request and Reply Message Extension">
<t>
This section describes extensions to the existing RP (Request Parameters) 
object to allow a PCC to request a PCE for computing a backup egress 
of an MPLS TE P2MP LSP or an MPLS TE P2P LSP when the PCE receives 
the PCEP request.
</t>


<section title="RP Object Extension">

<t> 
The following flags are added into the RP Object: 
</t>

<t>
The T bit is added in the flag bits field of the RP object to tell
the receiver of the message that the request/reply is for 
computing a bcakup egress of an MPLS TE P2MP LSP and an MPLS TE P2P LSP.

<figure>
  <artwork> <![CDATA[  
    o T ( Backup Egress bit - 1 bit):
        0: This indicates that this is not PCReq/PCRep 
           for backup egress.
        1: This indicates that this is PCReq or PCRep message 
           for backup egress.
  ]]>
  </artwork>
</figure>
</t>
<t>
The IANA request is referenced in Section below (Request Parameter Bit
Flags) of this document.
</t>

<t>
This T bit with the N bit defined in RFC 6006 can indicate whether
a request/reply is for a bcakup egress of an MPLS TE P2MP LSP 
or an MPLS TE P2P LSP.

<figure>
  <artwork> <![CDATA[  
    o T = 1 and N = 1: This indicates that this is a PCReq/PCRep
                       message for backup egress of an MPLS TE
                       P2MP LSP.
    o T = 1 and N = 0: This indicates that this is a PCReq/PCRep
                       message for backup egress of an MPLS TE
                       P2P LSP.
  ]]>
  </artwork>
</figure>
</t>
</section>


<section title="External Destination Nodes">

<t>
In addition to the information about the path that an MPLS TE P2MP LSP 
or an MPLS TE P2P LSP
traverses, a request message may comprise other information 
that may be used for computing the backup egress for the P2MP LSP 
or P2P LSP.  

For example,
the information about an external destination node, 
to which data traffic is delivered from an egress node of 
the P2MP LSP or P2P LSP,
is useful for computing a backup egress node. 
</t>

<section title="External Destination Nodes Object">
<t>
The PCC can specify an external destination nodes (EDN) Object. 
In order to represent the external destination nodes efficiently,
we define two types of encodes for the external destination nodes
in the object.
</t>

<t>
One encode indicates that the EDN object contains an external destination
node for every egress node of an MPLS TE P2MP LSP 
or an MPLS TE P2P LSP. The order of the external destination nodes
in the object is the same as the egress node(s) of the P2MP LSP
or P2P LSP contained in the PCE messages.  
</t>

<t>
Another encode indicates that the EDN object contains
a list of egress node and external destination node pairs.
For an egress node and external destination node pair, 
the data traffic is delivered to the external destination node
from the egress node of the LSP. 
</t>

<t>
The format of the external destination nodes (EDN) object boby for 
IPv4 with the first type of encodes is illustrated as follows:

<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Encode of External Destination Nodes (1)            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The format of the external destination nodes (EDN) object boby for 
IPv4 with the second type of encodes is illustrated below:


<!--
<figure anchor="EDNFormat2" title="Format of EDN Object with another Encode for IPv4">
-->
<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Encode of External Destination Nodes (2)            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The format of the external destination nodes (EDN) object boby for 
IPv6 with the first type of encodes is illustrated as follows:

<!--
<figure anchor="EDNFormat3" title="Format of EDN Object with one Encode for IPv6">
-->
<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Encode of External Destination Nodes (1)            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
  ]]>
  </artwork>
</figure>
</t>

<t>
The format of the external destination nodes (EDN) object boby for 
IPv6 with the second type of encodes is illustrated below:

<!--
<figure anchor="EDNFormat4" title="Format of EDN Object with another Encode for IPv6">
-->
<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Encode of External Destination Nodes (2)            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                        Egress IPv6 address                    |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                        Egress IPv6 address                    |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |                        Egress IPv6 address                    |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    |          External Destination IPv6 address (16 bytes)         |
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The object can only be carried in a PCReq message. A Path Request
may carry at most one external destination nodes Object.
</t>

<t>
The Object-Class and Object-types will need to be allocated by IANA. 
The IANA request is documented in Section below (PCEP Objects).
</t>
</section>

<section title="New Type of END-POINTS Objects">
<t>
Alternatively, we may use END-POINTS to represent 
external destination nodes in a request message 
for computing backup egress nodes of MPLS LSP.
</t>

<t>
The format of the external destination nodes (EDN) END-POINTS object boby for 
IPv4 with the first type of encodes is illustrated as follows:

<!--
<figure anchor="EDNENDPOINT1" title="EDN END-POINTS Body with one Encode for IPv4">
-->
<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Compact External Destination Nodes Type (12)        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External  Destination  IPv4 address              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The new type of END-POINTS is Compact External Destination Nodes Type (12). 
The final value for the type will be assigned by IANA.
The EDN END-POINTS object of type 12 contains an external destination
node for every egress node of an MPLS TE P2MP LSP 
or an MPLS TE P2P LSP. The order of the external destination nodes
in the object is the same as the egress node(s) of the P2MP LSP
or P2P LSP contained in the PCE messages.  
</t>

<t>
The format of the external destination nodes END-POINTS object boby for 
IPv4 with the second type of encodes is illustrated below:

<!--
<figure anchor="EDNENDPOINT2" title="EDN END-POINTS Body with another Encode for IPv4">
-->
<figure>
  <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
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |              External Destination Nodes Type (13)             |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    ~                           ...                                 ~
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Egress IPv4 address                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |               External Destination IPv4 address               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  ]]>
  </artwork>
</figure>
</t>

<t>
The new type of END-POINTS is External Destination Nodes Type (13). 
The final value for the type will be assigned by IANA.
The EDN END-POINTS object of type 13 contains
a list of egress node and external destination node pairs.
For an egress node and external destination node pair, 
the data traffic is delivered to the external destination node
from the egress node of the LSP. 
</t>

</section>
</section>




<section title="Constraints between Egress and Backup Egress">

<t>
A request message sent to a PCE from a PCC for computing 
a backup egress of an MPLS TE P2MP LSP or an MPLS TE P2P LSP 
may comprise a constraint 
indicating that there must be a path from the backup egress node 
to be computed to the egress node of the P2MP LSP or P2P LSP 
and that the length of the path is within a given hop limit 
such as one hop.
</t>

<t>
This constraint can be considered as default by a PCE 
or explicitly sent to the PCE by a PCC [TBD].
</t>

</section>


<section title="Constraints for Backup Path">
<t>
A request message sent to a PCE from a PCC for computing 
a backup egress of a P2MP LSP or P2P LSP may comprise a constraint 
indicating that the backup egress node to be computed 
may not be a node on the P2MP LSP or P2P LSP. 
In addition, the request message may comprise a list of nodes, 
each of which is a candidate for the backup egress node.
</t>

<t>
A request message sent to a PCE from a PCC for computing 
a backup egress of a P2MP LSP or P2P LSP may comprise a constraint 
indicating that there must be a path from the previous hop node of 
the egress node of the P2MP LSP or P2P LSP
to the backup egress node to be computed 
and that there is not an internal node of the path 
from the previous hop node of the egress node of the P2MP LSP or P2P LSP
to the backup egress that is on the path of the P2MP LSP or P2P LSP.
</t>


<t>
Most of these constraints for the backup path can be considered 
as default by a PCE.
The constraints for the backup path may be explicitly sent to 
the PCE by a PCC [TBD].
</t>
</section>




<section title="Backup Egress Node">
<t>
The PCE may send a reply message to the PCC in return to 
the request message for computing a new backup egress node
or a number of backup egress nodes.  
The reply message may comprise information about the computed 
backup egress node(s),
which is contained in the path(s) from the previous-hop node of 
the egress node of the P2MP LSP or P2P LSP to the
backup egress node(s) computed.
</t>



</section>


<section title="Backup Egress PCEP Error Objects and Types">
<t>
In some cases, the PCE may not complete the backup egress
computation as requested, for example based on a set of 
constraints.  As such, the PCE may send a reply message to 
the PCC that indicates an unsuccessful backup egress 
computation attempt.  
The reply message may comprise a PCEP-error object, which may 
comprise an error-value, error-type and some detail information.
</t>


</section>




<section title="Request Message Format">
<t>
The PCReq message is encoded as follows using RBNF as defined in
[RFC5511].
</t>

<t>
Below is the message format for a request message:

<!--
<figure anchor="ReqMsgFormat" title="The Format for a Request Message">
-->
<figure>
  <artwork> <![CDATA[
            <PCReq Message>::= <Common Header>
                               [<svec-list>]
                               <request>
            <request>::= <RP> <end-point-rro-pair-list>
                         [<OF>] [<LSPA>] [<BANDWIDTH>]
                         [<metric-list>]
                         [<EDNO>]
                         [<IRO>]
                         [<LOAD-BALANCING>]
        where:
               <EDNO> is an external destination nodes object.
  ]]>
  </artwork>
</figure>
</t>

<t>
The definitions for svec-list, RP, end-point-rro-pair-list, OF,
LSPA, BANDWIDTH, metric-list, IRO, and LOAD-BALANCING
are described in RFC5440 and RFC6006.
</t>

</section>



<section title="Reply Message Format">
<t>
The PCRep message is encoded as follows using RBNF as defined in
[RFC5511].
</t>

<t>
Below is the message format for a reply message:

<!--
<figure anchor="RepMsgFormat" title="The Format for a Reply Message">
-->
<figure>
  <artwork> <![CDATA[
            <PCRep Message>::= <Common Header>
                               <response>
            <response>::= <RP>
                          <end-point-path-pair-list>
                          [<NO-PATH>]
                          [<attribute-list>]
     where:
           <end-point-path-pair-list>::=
                   [<END-POINTS>]<path>[<end-point-path-pair-list>]

           <path> ::= (<ERO>|<SERO>) [<path>]

           <attribute-list>::= [<OF>]
                               [<LSPA>]
                               [<BANDWIDTH>]
                               [<metric-list>]
                               [<IRO>]
  ]]>
  </artwork>
</figure>
</t>
<t>
The definitions for RP, NO-PATH, END-POINTS, OF,
LSPA, BANDWIDTH, metric-list, IRO, and SERO
are described in RFC5440, RFC6006 and RFC4875.
</t>
</section>


</section>

</section>



<section title="Security  Considerations">
<t>
The mechanism described in this document does not raise any new 
security issues for the PCEP, OSPF or IS-IS protocols.
</t>


</section>




<section anchor="IANA" title="IANA Considerations">
<t>
This section specifies requests for IANA allocation.
</t>

<section anchor="IANA-CAP-FLAGS" title="Backup Egress Capability Flag">
<t>
Two new OSPF Capability Flags are defined in this document 
to indicate the capabilities for computing a backup egress 
for an MPLS TE P2MP LSP and an MPLS TE P2P LSP.
IANA is requested to
make the assignment from the "OSPF Parameters Path Computation
Element (PCE) Capability Flags" registry:
<figure>
  <artwork> <![CDATA[  
      Bit       Description                         Reference
       13       Backup egress for P2MP LSP          This I-D
       14       Backup egress for P2P LSP           This I-D
  ]]>
  </artwork>
</figure>
</t>
</section>

<section anchor="IANA-CAP-TLV" title="Backup Egress Capability TLV">
<t>
A new backup egress capability TLV is defined in this document
to allow a PCE to advertize its backup egress computation capability.
IANA is requested to make the following allocation from the "PCEP
TLV Type Indicators" sub-registry.

<figure>
  <artwork> <![CDATA[  
      Value       Description                      Reference
       8          Backup egress capable            This I-D
  ]]>
  </artwork>
</figure>
</t>
</section>


<section anchor="IANA-RP-BITS" title="Request Parameter Bit Flags">
<t>
A new RP Object Flag has been defined in this document. 
IANA is requested to make the following allocation
from the "PCEP RP Object Flag Field" Sub-Registry:

<figure>
  <artwork> <![CDATA[  
      Bit       Description                         Reference
       15       Backup egress (T-bit)               This I-D
  ]]>
  </artwork>
</figure>
</t>
</section>


<section anchor="IANA-PCEP-OBJ" title="PCEP Objects">
<t>
An External Destination Nodes Object-Type is defined in this document. 
IANA is requested to make the following Object-Type
allocation from the "PCEP Objects" sub-registry:

<figure>
  <artwork> <![CDATA[ 
        Object-Class Value     34
        Name                   External Destination Nodes
        Object-Type            1: IPv4
                               2: IPv6
                               3-15: Unassigned
        Reference              This I-D
  ]]>
  </artwork>
</figure>
</t>
</section>






</section>

<section title="Acknowledgement">
<t>
  The author would like to thank 
  Ramon Casellas, Dhruv Dhody
  and Quintin Zhao
  for their valuable comments on this draft.
</t> 
</section>


</middle>
  <!--  *****BACK MATTER ***** -->
<back>



    <!-- References split into informative and normative -->

    <!-- Thre are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->


<references title="Normative References">
   <?rfc include="reference.RFC.2119" ?>

   <?rfc include="reference.RFC.3209" ?> 

   <?rfc include="reference.RFC.4090" ?> 

   <?rfc include="reference.RFC.5440" ?> 

   <?rfc include="reference.RFC.4875" ?> 
  
   <?rfc include="reference.RFC.6006" ?> 



</references>

<references title="Informative References">
   <?rfc include="reference.RFC.4655" ?>
   <?rfc include="reference.RFC.5862" ?>

</references>
 
    <!-- Change Log

  -->
</back>


</rfc>
<?Pub *0000024293?>
