PCE Working Group                                   JP Vasseur
                                                  Cisco System Inc.
     IETF Internet Draft                                 JL Le Roux
                                                     France Telecom
                                                     Arthi Ayyangar
                                                   Juniper Networks
                                                           Eiji Oki
                                                                NTT
                                                         Alia Atlas
                                                 Avici Systems, Inc
     
     Proposed Status: Standard
     Expires: November 2005                                 May 2005
     
     
     Path Computation Element (PCE) Communication Protocol (PCEP)
                       - Version 1 -
     
                    draft-vasseur-pce-pcep-00.txt
     
     
     Status of this Memo
     
       By submitting this Internet-Draft, each author represents that any
       applicable patent or other IPR claims of which he or she is aware
       have been or will be disclosed, and any of which he or she becomes
       aware will be disclosed, in accordance with Section 6 of BCP 79.
     
       Internet-Drafts are working documents of the Internet Engineering
       Task Force (IETF), its areas, and its working groups.  Note that
       other groups may also distribute working documents as Internet-
       Drafts.
     
       Internet-Drafts are draft documents valid for a maximum of six months
       and may be updated, replaced, or obsoleted by other documents at any
       time.  It is inappropriate to use Internet-Drafts as reference
       material or to cite them other than as "work in progress."
     
       The list of current Internet-Drafts can be accessed at
       http://www.ietf.org/ietf/1id-abstracts.txt.
     
       The list of Internet-Draft Shadow Directories can be accessed at
       http://www.ietf.org/shadow.html.
     
       Copyright Notice
     
       Copyright (C) The Internet Society (2005). All Rights Reserved.
     
     
     Abstract
     
     
     
     Vasseur et al.                                       [Page 1]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       This document specifies a communication protocol named PCEP (Path
       Computation Element (PCE) Communication Protocol) for supporting the
       interactions between a Path Computation Client (PCC) and a PCE or
       between two PCEs. Such interactions include path computation requests
       and path computation replies as well as notifications of specific
       states related to the use of a PCE in the context of MPLS Traffic
       Engineering. The PCEP protocol is designed to be flexible and
       extensible so as to easily allow for the addition of further messages
       and objects, should further requirements be expressed in the future.
     
     Conventions used in this document
     
       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.
     
     Table of Contents
     
       1. Terminology...........................................3
       2. Introduction..........................................4
       3. Assumptions...........................................4
       4. Transport protocol....................................5
       5. PCEP overview.........................................5
       6. PCEP Finite State Machine (FSM).......................6
       7. PCEP messages.........................................6
       7.1. Common header.......................................6
       7.2. Path Computation Request (PCReq) message............7
       7.3. Path Computation Reply (PCRep) message..............8
       7.4. Notification (PCNtf) message........................10
       7.5. Error (PCErr) message...............................10
       8. Object Formats........................................11
       8.1. Common object header................................11
       8.2. REQUEST-ID Object...................................12
       8.3. END-POINTS object...................................14
       8.4. BANDWIDTH object....................................15
       8.5. DELAY Object........................................16
       8.6. IRO Object..........................................16
       8.7. CVEC Object.........................................17
       8.8. NOTIFICATION object.................................18
       8.9. PCEP-ERROR object...................................21
       8.10. Reuse of existing RSVP objects.....................23
       9. Path computation requests bundling....................24
       9.1. Motivations.........................................25
       9.1.1. Independent requests..............................25
       9.1.2. Correlated request................................25
       9.2. CVEC object.........................................26
       9.3. Bundling of response within a PCRep message.........26
       10. Elements of procedure................................26
       10.1. REQUEST-ID message.................................26
       10.2. BANDWITH Object....................................27
       10.3. DELAY Object.......................................27
       10.4. XRO Object.........................................27
     
     Vasseur et al.                                     [Page 2]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       10.5. IRO Object........................................27
       10.6. CVEC object.......................................28
       10.7. SESSION-ATTRIBUTE object..........................28
       11. Manageability.......................................28
       12. IANA considerations.................................28
       12.1. TCP port..........................................28
       12.2. PCEP Objects......................................28
       12.3. Notification......................................30
       12.4. PCEP Error........................................30
       13. Security Considerations.............................31
       14. Intellectual Property Statement.....................31
       15. Acknowledgment......................................32
       16. References..........................................32
       16.1. Normative references..............................32
       16.2. Informative References............................32
       17. AuthorsÆ Address....................................33
     
     
     
     
     1. Terminology
     
       Terminology used in this document
     
       CSPF: Constraint-based Shortest Path First.
     
       IGP Area: OSPF Area or IS-IS level
     
       Intra-domain TE LSP: TE LSP whose path does not transit across
       domains where a domain can either be an IGP area, an Autonomous
       System or a sub-AS (BGP confederations).
     
       Inter-domain TE LSP: A TE LSP whose path transits across at least
       two different IGP domains where a domain can either be an IGP area,
       an Autonomous System or a sub-AS (BGP confederations).
     
       Link State Advertisement: An OSPF LSA or IS-IS LSP
     
       LSDB: Link State Database.
     
       LSP: Label Switched Path.
     
       LSR: Label Switch Router.
     
       PCC: Path Computation Client: any client application requesting a
       path computation to be performed by the Path Computation Element.
     
       PCE: Path Computation Element: an entity (component, application or
       network node) that is capable of computing a network path or route
       based on a network graph and applying computational constraints (see
       further description in section 3).
     
     
     Vasseur et al.                                     [Page 3]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       PCEP: PCE Communication Protocol.
     
       TED: Traffic Engineering Database which contains the topology and
       resource information of the domain. The TED may be fed by IGP
       extensions or potentially by other means.
     
       TE LSP: Traffic Engineering Label Switched Path.
     
       TE LSP head-end: Head/source of the TE LSP.
     
       TE LSP tail-end: Tail/destination of the TE LSP.
     
     
     2. Introduction
     
       There are several motivations for the adoption of a PCE based
       architecture to perform TE LSP path computation:
     
       (1) Limitation of the PCC:
           - Partial visibility (e.g. in the case of inter-domain TE LSPs),
           - Absence of the TED or use of Non-TE-Enabled IGP,
           - Network element lacks control plane or routing capability,
     
       (2) Requirement for sophisticated path computation not available on
       the PCC:
           - CPU-intensive path computation,
           - Backup path computation for bandwidth protection where more
           sophisticated backup tunnel path computations are required to
           minimize the required amount of backup capacity,
           - Multi-Layer traffic engineering.
     
       A more detailed description of the motivations listed above can be
       found in [PCE-ARCH] and this list does not mean to be exhaustive.
       Further, [PCE-ARCH] defines the building blocks for the PCE
       architecture (not repeated in this document), an element of which is
       the PCC-PCE/PCE-PCE communication protocol. The aim of this document
       is to specify such communication protocol with the objective to be
       compliant with the set of generic requirements specified in [PCE-COM-
       GEN-REQ] produced by the PCE Working Group.
     
     3. Assumptions
     
       [PCE-ARCH] describes various types of PCE: it is important to note
       that no assumption is made on the nature of the PCE in this document.
     
       Moreover, it is assumed that the PCE gets the required information so
       as to perform TE LSP path computation which usually requires network
       topology and resource information that can be gathered by routing
       protocols or by some other means. The retrieval of such information
       is out of the scope of this document.
     
     
     Vasseur et al.                                     [Page 4]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       Similarly no assumption is made on the discovery method used by a PCC
       to discover a set of PCEs (e.g. via static configuration or dynamic
       discovery) and select a PCE to send it(s) request(s) to. For the sake
       of reference [PCE-DISC-REQ] defines a list of requirements for
       dynamic PCE discovery.
     
     4. Transport protocol
     
       Reliable messaging and flow control are two key requirements
       specified in [PCE-COM-GEN-REQ] for PCEP. Consequently, TCP has been
       chosen as the transport protocol of choice and meet such
       requirements. The PCEP protocol will use a well-known TCP port to be
       assigned by IANA.
     
       An implementation may either decide to keep the TCP session alive for
       a unlimited time, should it have to send a new request later on (in
       which case the TCP session will already be in place); conversely, in
       some other circumstances, it may be desirable to systematically open
       and close the TCP session for each PCEP request (this is for instance
       the case if the sending of PCEP message is a rare event). Since there
       are circumstances where the TCP connection state is used to detect
       the PCC/PCE liveness (e.g case of a stateful PCE detecting a PCC
       failure thanks to the TCP state), the desired mode MUST be notified
       by the PCE when advertising its capability or manually configured on
       the PCE/PCC. Furthermore, another option would consist of negotiating
       the desired mode upon PCEP connection set up. Such aspect will be
       detailed in further revision of this document based on Working Group
       comments.
     
     5. PCEP overview
     
       The PCE Working Group has produced a set of requirements for the PCE
       communication protocols ([PCE-COM-GEN-REQ]) which served as input to
       the design of the PCEP protocol and will not be repeated here in
       their entirety.
     
       A set of chief objectives of the PCEP protocol are:
     
       - To rely on a transport protocol that provides reliable data
         delivery, flow control and security,
       - To design a flexible protocol that could easily be extended to
         meet further requirements,
       - To ensure that the same protocol could be used between a PCC and a
         PCE as well as between two PCEs,
       - When appropriate, try to re-use objects already defined to encode
         TE LSP constraints (e.g. some RSVP ([RSVP]), RSVP-TE ([RSVP-TE]
         and [G-RSVP]) objects),
       - To design a scalable protocol capable of coping with situations
         which may require extensive protocol exchanges.
     
     
     
     Vasseur et al.                                     [Page 5]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       Note on terminology: in the rest of this document we use the PCC
       terminology to refer to an entity that sends a request to a PCE,
       should it be a regular PCC or a PCE itself acting as a PCC.
     
     6. PCEP Finite State Machine (FSM)
     
       PCE Working Group feed-backs will be requested on the following
       items:
       - Is there a need for "open" and "close" messages?
       - Is there a requirement for PCEP hello message that could be used
         for faster PCC/PCE liveness detection? (If yes, the hello
         frequency could be negotiated upon PCEP connection setup (via
         open messages)
       - Is there a requirement for detailed capability discovery upon PCEP
         connection set up?
     
       Based on Working Groups feed-backs, the appropriate sections and the
       detailed FSM will be added.
     
     7. PCEP messages
     
       A PCEP message consists of a common header followed by a variable
       length body made of a set of objects which can either be mandatory or
       optional. For each PCEP message type a set of rules is defined which
       specifies the set of possible objects that it can carry. We use the
       Backus-Naur Form (BNF) to specify such rules. Square brackets refer
       to optional sub-sequences.  Note that although BNF implies a specific
       object order, a specific order is recommended but not imposed by
       PCEP. In other words, an implementation SHOULD form the PCEP messages
       using the recommended order but SHOULD accept a message with an
       arbitrary order. Conversely, if a mandatory object is missing in a
       PCEP message as defined in this document, this MUST trigger a
       protocol error condition.
     
       7.1. Common header
     
       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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        | Ver   |     Flags             |         Message-Length        |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        | Message-Type  |                    Reserved                   |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
       Ver (Version): 4 bits
     
           PCEP protocol version number.  The current version is version 1
     
       Flags: 12 bits
     
           No Flag is currently defined
     
     
     Vasseur et al.                                     [Page 6]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       Message Length: 16 bits
     
           Total length of the PCEP message expressed in bytes including
           the common header.
     
       Message-Type: 8 bits
     
            The following message types are currently defined:
     
            1: Path Computation Request
           2: Path Computation Reply
           3: Notification
           4: Error
     
       7.2. Path Computation Request (PCReq) message
     
       A Path Computation Request message (also referred to as a PCReq
       message) is sent by a PCC to a PCE so as to request a TE LSP path
       computation. The Message-Type field of the PCEP common header is set
       to 1.
     
       There are several mandatory objects that MUST be included within a
       PCReq message: the REQUEST-ID, the END-POINTS and the SESSION-
       ATTRIBUTE objects (see section 7). If one of these objects is
       missing, the receiving PCE MUST return an error message to the sender
       as specified in section 9. Other objects are optional.
     
       The IP source address of the PCReq message is any IP address of the
       sending PCC and MUST not be changed for a specific path computation
       request, should multiple PCReq messages be sent that all relate to
       same request. Furthermore, the requesting PCC MUST ensure that such
       IP address is reachable and present in the Routing Information Based
       (RIB). It is RECOMMENDED for the sending PCC to make use of the same
       IP address for all of its requests (unless such IP address becomes
       unreachable) in order to ease statistic computations on the PCE: for
       instance, if the PCC sends multiple path computation requests during
       a specific period of time, it is RECOMMENDED to systematically use
       the same source IP address. This way, some statistics can be
       maintained by the PCE to track the number of received path
       computation requests per PCC. If the PCCÆs address becomes
       unreachable, the PCE MUST not conclude of a PCC failure. The state of
       the TCP Connection dictates the PCC liveness.
     
       The format of a PCReq message is as follows:
     
       <PCReq Message>::= <Common Header>
                           <REQUEST-ID>
                           <END-POINTS>
                           <SESSION-ATTRIBUTE>
                           [<GENERALIZED LABEL REQUEST>]
                           [<BANDWIDTH>]
                           [<CLASSTYPE>]
     
     Vasseur et al.                                     [Page 7]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
                           [<DELAY>]
                           [<ERO>]
                           [<XRO>]
                           [<IRO>]
                           [<PROTECTION>]
     
       When used with the CVEC object (see section 7) the PCReq message has
       the following form:
     
       <PCReq Message>::= <Common Header>
                           <CVEC>
                           <request-list>
     
              <request-list>::= <REQUEST-ID>
                           <END-POINTS>
                           <SESSION-ATTRIBUTE>
                           [<GENERALIZED LABEL REQUEST>]
                           [<BANDWIDTH>]
                        [<CLASSTYPE>]
                           [<DELAY>]
                           [<ERO>]
                           [<XRO>]
                           [<IRO>]
                           [<PROTECTION>]
     
       Definition of the objects listed above:
     
       Objects name                   Reference
     
       <REQUEST-ID>
       <END-POINTS>
       <BANDWIDTH>
       <CVEC>
       <DELAY>
       <IRO>                        Section 7 of this document
     
       <SESSION-ATTRIBUTE>
       <ERO>                        [RSVP-TE]
     
       <GENERALIZED LABEL REQUEST>       [G-RSVP]
     
       <PROTECTION>                   [G-RECV-E2E-SIG].
     
       <CLASSTYPE>                   [DS-TE-PROTO]
     
       <XRO>                        [XRO]
     
     
       7.3. Path Computation Reply (PCRep) message
     
       The PCEP Path Computation reply message (also referred to as a PCRep
       message) is sent by a PCE to a requesting PCC in response to a
     
     Vasseur et al.                                     [Page 8]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       previously received PCReq message. The Message-Type field of the PCEP
       common header is set to 2.
     
       The PCRep message MUST comprise a REQUEST-ID object with a Request-
       ID-number identical to the one received in the REQUEST-ID object
       carried in the corresponding PCReq message (see section 7 for the
       definition of the REQUEST-ID object). The IP destination address of
       the PCRep message MUST be equal to the IP source address present in
       the corresponding PCReq message.
     
       If the path computation request can be successfully satisfied (the
       PCE manages to compute a set of path(s) that obey the requested
       constraint(s)), the set of computed path(s) specified by means of ERO
       object(s) is inserted in the PCReq message. Such a situation where
       multiple computed paths are provided in a PCRep message is discussed
       in detail in section 8.
     
       In some circumstances (further discussed in section 7), the
       requesting PCC has the ability to specify in its path computation
       requests its interest in less-constrained path, should no path fully
       satisfying the set of requested constraints be found. If the path
       computation request cannot be (fully) satisfied and if the requesting
       PCC notified its interest to receive less-constrained paths then the
       PCE may insert in its reply a less-constrained computed path along
       with the corresponding attributes.
     
       The format of a PCRep message is as follows:
     
       <PCRep Message> ::= <Common Header>
                           <REQUEST-ID>
                           <ERO> [<ERO> à <ERO>]
                           [<SESSION-ATTRIBUTE>]
                           [<GENERALIZED LABEL REQUEST>]
                           [<BANDWIDTH>]
                           [<DELAY>]
                           [<XRO>]
                           [<IRO>]
                           [<PROTECTION>]
     
       When used with the CVEC object, the PCRep message has the following
       form:
     
       <PCRep Message> ::= <Common Header>
                           <CVEC>
                           <path-list>
     
              path-list:== <REQUEST-ID>
                           <ERO> [<ERO> à <ERO>]
                           [<SESSION-ATTRIBUTE>]
                           [<GENERALIZED LABEL REQUEST>]
                           [<BANDWIDTH>]
                           [<DELAY>]
     
     Vasseur et al.                                     [Page 9]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
                           [<XRO>]
                           [<IRO>]
                        [<PROTECTION>]
     
     
       7.4. Notification (PCNtf) message
     
       The PCEP Notification message (also referred to as the PCNtf message)
       can either be sent by a PCE to a PCC or by a PCC to a PCE so as to
       notify of a specific event. The Message-Type field of the PCEP common
       header is set to 3.
     
       The PCNtf message MUST carry at least one NOTIFICATION object and may
       comprise several NOTIFICATION objects, should the PCE or the PCC
       intent to notify of multiple events. The NOTIFICATION object is
       defined in section 7. The PCNtf message may also comprise a REQUEST-
       ID object when the notification refers to a particular path
       computation request.
     
       The PCNtf message may be sent by a PCC or a PCE in response to a
       request or in an unsolicited manner.
     
       The format of a PCNtf message is as follows:
     
       <PCNtf Message> ::= <Common Header>
                           [<REQUEST-ID> à <REQUEST-ID>]
                           <NOTIFICATION> [<NOTIFICATION> à <NOTIFICATION>]
     
       The expected procedure upon the reception of a PCNtf message is
       defined in section 9.
     
       7.5. Error (PCErr) message
     
       The PCEP Error message (also referred to as a PCErr message) is sent
       when a protocol error condition is met. The Message-Type field of the
       PCEP common header is set to 4.
     
       The PCErr message may be sent by a PCC or a PCE in response to a
       request or in an unsolicited manner. In the former case, the PCErr
       message MUST include the set of REQUEST-ID objects related to the
       pending path computation request(s) which triggered the protocol
       error condition. In the later case (unsolicited), no REQUEST-ID is
       inserted within the PCErr message. A PCErr message MUST comprise a
       PCEP-ERROR object specifying the PCEP error condition. The PCEP-ERROR
       object is defined in section 7.
     
       The format of a PCErr message is as follows:
     
       <PCErr Message> ::= <Common Header>
                           [<REQUEST-ID> à <REQUEST-ID>]
                           <PCEP-ERROR>
     
     
     Vasseur et al.                                    [Page 10]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       The expected procedure upon the reception of a PCErr message is
       defined in section 9.
     
     8. Object Formats
     
       8.1. Common object header
     
       A PCEP object carried within a PCEP message consists of one or more
       32-bit words with a common header which has the following format:
     
        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | Object-Class  |  Object-Type  |      Object Length (bytes)    |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       | OS|PR|                          Reserved                      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                                                               |
       //                      (Object contents)                       //
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                      Figure 1 - Common PCEP object header
     
       Object-Class (to be managed by IANA)
     
          8-bit field that identifies the PCEP object class
     
       Object-Type (to be managed by IANA)
     
           8-bit field that identifies the PCEP object type
     
        Object Length
     
           16-bit field containing the total object length in bytes.  Must
           always be a multiple of 4, and at least 8.
     
       OS (Object-Semantic)
     
           2-bit flag that specifies the nature of the object carried within
           the object body. When set to 0, the object body carries a native
           PCEP object. When set to 1, the object body carries an RSVP
           object.
     
       PR (Processing-Rule)
     
            2-bit flag which specifies whether the object is mandatory or
            optional. When set to 0, the object is mandatory. When set to 1,
            the object is optional.
     
       The maximum object content length is 65528 bytes.  The Object-Class
       and Object-Type fields uniquely identify each PCEP object.
     
     Vasseur et al.                                    [Page 11]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
       The PR flag is used to determine what action a node should take if it
       does not recognize the Object-Class of a PCEP object: there are two
       possible ways that a PCEP implementation can react to a received PCEP
       object with an unknown Object-Class. This choice is determined by the
       PR flag, as follows.
     
       If PR flag=0 (Mandatory object)
     
       The entire PCEP message should be rejected and an "Unknown Object-
       Class" error returned in a PCErr message.
     
       If PR flag=1 (Optional object)
     
       The node should ignore the object and process the PCEP message if
       possible. In that case, the PCE should send a PCNtf message prior to
       sending its PCRep message containing the computed path(s) so as to
       notify the requesting PCC of the list of objects that were ignored
       during path computation because not recognized (see section XX). If
       not possible, a PCErr message must be sent to the requesting entity
       with a "Unknown Object-Class" error.
     
       8.2. REQUEST-ID Object
     
       The REQUEST-ID object MUST be carried within every PCReq and PCRep
       messages and MAY be carried within PCNtf and PCErr messages.
     
          REQUEST-ID Object-Class is to be assigned by IANA
          REQUEST-ID Object-Type is to be assigned by IANA (recommended
       value=1)
     
       The PR flag of the REQUEST-ID object MUST be set to 0. Consequently,
       as described in section 7.1, a PCE receiving a PCEP message that does
       not support the REQUEST-ID object MUST trigger a protocol error and
       return a PCErr message to the requesting PCC.
     
       The format of the REQUEST-ID object body is as follows:
     
       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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |       Reserved    |              Flags      |P|C|B|R|N|L| Pri |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        Request-ID-number                      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       //                                                              //
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                    Figure 2 - REQUEST-ID object body format
     
       The REQUEST-ID object has a variable length and may contain
       additional TLVs. No TLV is currently defined.
     
     Vasseur et al.                                    [Page 12]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
       Flags: 18 bits - The following flags are currently defined:
     
           Pri (Priority) field (3 bits)
     
           This field may be used by the requesting PCC to specify to the
           PCE the requestÆs priority. The decision of which priority
           should be used for a specific request is of a local matter and
           MUST be set to 0 when unused. In particular, the priority may or
           may not be correlated to the TE LSP priority used for setup. For
           example, a path computation request related to the computation
           of a TE LSP path of priority n which is in a down state may have
           a higher priority than the path computation request for the
           reoptimization of a TE LSP of priority n-1. Furthermore, the use
           of the path computation request priority by the PCE by its
           requests scheduler is implementation specific and out of the
           scope of this document. Note that it is not required for a PCE
           to support the priority field: in that case, the priority field
           SHOULD be set to 0 by the PCC in the REQUEST-ID object. If the
           PCE does not take into account the request priority, it is
           RECOMMENDED to set the priority field to 0 in the REQUEST-ID
           object carried within the corresponding PCRep message,
           regardless of the priority value contained in the REQUEST-ID
           object carried within the corresponding PCReq message. A higher
           numerical value of the priority field reflects a higher
           priority. Note that it is the responsibility of the network
           administrator to make use of the Priority values in a consistent
           way across the various PCC(s). The ability of a PCE to support
           requests prioritization may be dynamically discovered by the
           PCC(s) by means of PCE capability discovery. Conversely, if not
           advertised by the PCE, a PCC may decide to set the request
           priority and will learn the ability of the PCE the support
           request prioritization by observing the Priority field of the
           REQUEST-ID object received in the PCRep message.
     
           L (Less-constrained path) bit: when set in the PCReq message,
           the requesting PCC indicates to the PCE that a less-constrained
           path is of interest, should no path satisfying the full set of
           constraints be found by the PCE.  If set in a PCRep message,
           this indicates that the requesting PCC has expressed an interest
           in less-constrained path and that the PCE was capable of
           computing less-constrained path(s) provided in the PCRep
           message. Note that further extensions of the PCEP protocol may
           allow for the support of hierarchical constraints relaxation
           policy whereby the requesting PCC may be able to indicate a
           preference order in which constraints may be relaxed in its path
           computation request.
     
           N (No path) bit: The N bit is exclusively used in PCRep message
           to indicate the status of the path computation response for a
           specific path computation request identified by the REQUEST-ID
           object. When cleared, the path computation request has been
     
     Vasseur et al.                                    [Page 13]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
           (fully or partially) satisfied and the corresponding path(s)
           is/are provided in the PCRep message. When set, that means that
           no path could be found by the PCE (thus no path is provided in
           the PCRep message).
     
           R (Reoptimization) bit: when set, the requesting PCC specifies
           that the PCReq message relates to the reoptimization of an
           existing TE LSP in which case the path of the existing TE LSP to
           be reoptimized MUST be provided in the PCReq message.
     
           B (Bi-directional) bit: when set, the PCC specifies that the
           path computation request relates to a bidirectional TE LSP. When
           cleared, the TE LSP is unidirectional.
     
           C (Cost) bit: when set, the PCE MUST provide the cost of the
           computed path in the PCRep message.
     
           P (Partial):  When cleared in a PCReq message this indicates to
           the PCE that a path exclusively made of strict hops (set of
           directly connected LSRs) is required, and otherwise (the P bit
           is set to 1), a path with strict or loose route, or a mix of the
           two, is acceptable. In a PCRep message, when the P bit is
           cleared this indicates that the returned path is a strict route,
           otherwise (the P bit is set to 1), the returned path is partial
           (comprises loose hops).
     
           Request-ID-number: 32 bits
     
           This value (combined with the source IP address of the PCC)
           uniquely identifies the Path Computation Request context and is
           incremented each time a new request is sent to the PCE. If no
           path computation reply is received from the PCE, and the PCC
           wishes to resend its request, the same Request-ID-number MUST be
           used. Conversely, different Request-ID-number MUST be used for
           different requests sent to a PCE. The same Request-ID-number may
           be sent to different PCEs. The path computation reply is
           unambiguously identified by the IP source address of the
           replying PCE.
     
       8.3. END-POINTS object
     
       The END-POINTS object is used in a PCReq message to specify the
       source IP address and the destination IP address of the TE LSP for
       which a path computation is requested. Two END-POINTS objects (for
       IPv4 and IPv6) are defined.
     
          END-POINTS Object-Class is to be assigned by IANA
          END-POINTS Object-Type is to be assigned by IANA (recommended
       value=1)
     
       The PR flag of the END-POINTS object MUST be set to 0. Consequently,
       as described in section 7.1, a PCE receiving a PCEP message that does
     
     Vasseur et al.                                    [Page 14]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       not support the END-POINTS object MUST trigger a protocol error and
       return a PCErr message to the requesting PCC.
     
       The format of the END-POINTS object body for IPv4 is as follows:
     
       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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     Source IPv4 address                       |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                  Destination IPv4 address                     |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
           Figure 3 - END-POINTS object body format for IPv4
     
       The format of the END-POINTS object for IPv6 is as follows:
     
       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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |                Source IPv6 address (16 bytes)                 |
       |                                                               |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       |              Destination IPv6 address (16 bytes)              |
       |                                                               |
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
            Figure 4 - END-POINTS object body format for IPv6
     
     
       8.4. BANDWIDTH object
     
       The BANDWIDTH object is optional and can be used to specify the
       requested bandwidth and may be carried within PCReq and PCRep
       messages. The absence of the BANDWIDTH object MUST be interpreted by
       the PCE as a path computation request related to a 0 bandwidth TE
       LSP.
     
          BANDWIDTH Object-Class is to be assigned by IANA
          BANDWIDTH Object-Type is to be assigned by IANA (recommended
       value=1)
     
       The PR flag of the BANDWIDTH object MUST be set to 1.
     
       The format of the BANDWIDTH object body is as follows:
     
        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
     
     Vasseur et al.                                    [Page 15]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                        BANDWIDTH                              |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
             Figure 5 -
                         - BANDWIDTH object body format
     
     
       Bandwidth: 32 bits. The requested bandwidth is encoded in 32 bits in
       IEEE floating point format, expressed in bytes per second.
     
       8.5. DELAY Object
     
       The DELAY object is optional and can be used to specify a strict
       delay constraint for the TE LSP. Note that the mechanism used by the
       PCE to retrieve the delays of each link is outside of the scope of
       this document (for the sake of illustration the link delay could be
       the IGP metric or a Service Provider may choose to use the TE metric
       to represent link delays). The requested delay may be carried within
       PCReq and PCRep messages. The absence of the DELAY object MUST be
       interpreted by the PCE as a path computation request without delay
       constraint. When carried within a PCReq message, the DELAY object
       specifies a delay constraint that must be satisfied by the computed
       path(s). In a PCRep message, the DELAY object indicates the delays of
       the computed path(s).
     
          DELAY Object-Class is to be assigned by IANA
          DELAY Object-Type is to be assigned by IANA (recommended value=1)
     
       The PR flag of the DELAY object MUST be set to 1.
     
       The format of the DELAY object body is as follows:
     
        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                          Delay                                |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                       Figure 6 -
                           - DELAY object body format
     
     
       Delay: 32 bits. The requested delay constraint is encoded in 32 bits
       in IEEE floating point format, expressed in milliseconds.
     
       8.6. IRO Object
     
       The IRO (Include Route Object) object is optional and can be used to
       specify that the computed path must traverse a set of specified
       network element (abstract node). The IRO object may be carried within
       PCReq and PCRep messages.
     
          IRO Object-Class is to be assigned by IANA
     
     Vasseur et al.                                    [Page 16]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
          IRO Object-Type is to be assigned by IANA (recommended value=1)
     
       The PR flag of the IRO object MUST be set to 1.       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       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+       |                                                               |       //                        (Subobjects)                         //       |                                                               |       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                 Figure 7 Ï IRO object body format       Subobjects       The IRO object is made of sub-object identical to the ones defined in
       [RSVP-TE] and [G-RSVP] for use in EROs.       The following subobject types are supported.       Type   Subobject        1   IPv4 prefix        2   IPv6 prefix        4   Unnumbered Interface ID        32   Autonomous system number
       Note that the L bit of such sub-object has no meaning within an IRO
       object.
     
       Note also that the ERO object carried within a PCReq message is
       exclusively used in the context of a reoptimization path computation
       request, thus the need to define a new object (IRO) to specify the
       inclusion of specified network element(s) in a TE LSP path.
     
       8.7. CVEC Object
     
       Section 8 details the circumstances where it may be desirable and/or
       required to correlate several path computation requests. This leads
       to the specification of a new PCEP object named the CVEC object
       (Correlation VECtor). The CVEC object is optional.
     
       The aim of the CVEC object carried within a PCReq message is to
       specify the correlation of M path computation requests. The CVEC
       object is a variable length object that lists the set of M requests
       the computation of which MUST be correlated. Each path computation
       request is uniquely identified by the Request-ID-number carried
       within the respective REQUEST-ID object. The CVEC object also
       contains a set of flags that specify the correlation type.
     
       The CVEC object is carried within PCReq messages.
     
          CVEC Object-Class is to be assigned by IANA
     
     Vasseur et al.                                    [Page 17]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
          CVEC Object-Type is to be assigned by IANA
     
       The PR flag of the CVEC object MUST be set to 0. One Object-Type is
       defined for this object to be assigned by IANA with a recommended
       value of 1.
     
       The format of the CVEC object body is as follows:
     
        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |   Reserved    |                   Flags                 |S|N|L|
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                     REQUEST-ID Object #1                      |
       |                                                               |
       //                                                             //
       |                     REQUEST-ID Object #M                      |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                         Figure 8 -
                             - CVEC body object format
     
       Flags
     
       Defines the correlation type between multiple path computation
       requests.
     
       L (Link diverse) bit: when set, this indicates that the computed
       paths corresponding to the requests specified by the following
       REQUEST-ID objects MUST not have any link in common.
     
       N (Node diverse) bit: when set, this indicates that the computed
       paths corresponding to the requests specified by the following
       REQUEST-ID objects MUST not have any node in common.
     
       S (SRLG diverse) bit: when set, this indicates that the computed
       paths corresponding to the requests specified by the following
       REQUEST-ID objects MUST not share any SRLG (Shared Risk Link Group).
     
       The flags defined above are not exclusive.
     
       8.8. NOTIFICATION object
     
       The NOTIFICATION object is exclusively carried within a PCNtf message
       and can either be used in a message sent by a PCC to a PCE or by a
       PCE to a PCC so as to notify of an event.
     
           NOTIFICATION Object-Class is to be assigned by IANA
           NOTIFICATION Object-Type is to be assigned by IANA (recommended
           value=1)
     
     
     
     Vasseur et al.                                    [Page 18]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       The PR flag of the NOTIFICATION object MUST be set to 1. One Object-
       Type is defined for this object to be assigned by IANA with a
       recommended value of 1.
     
       The format of the NOTIFICATION body object is as follows:
     
        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Length    |     Flags     | Notification- | Notification- |
       |               |               | type          | value         |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       //                      Optional TLV(s)                         //
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
                        Figure 9 -
                            - NOTIFICATION body object format
     
       Length
     
           The Length contains the total length of the object in bytes and
           includes the Type and Length fields.  This length must be a
           multiple of 4 and must be at least 12.
     
       Flags
     
           No flag is currently defined
     
       A NOTIFICATION object is characterized by a Notification-type that
       specifies the class of notification and the Notification-value that
       provides additional information related to the nature of the
       notification. Both the Notification-type and Notification-value
       should be managed by IANA (see IANA section).
     
       The following Notification-type and Notification-value values are
       currently defined:
     
       Notification-type=1: Pending Request cancelled
     
       Notification-value=1: PCC cancels a set of pending request(s)
     
           A Notification-type=1, Notification-value=1 indicates that the
           PCC wants to inform a PCE of its desire to cancel a set of
           pending request(s). Such event could be triggered because of
           external conditions such as the receipt of a positive reply from
           another PCE (should the PCC have sent multiple requests to a set
           of PCEs for the same path computation request), a network event
           such as a network failure rendering the request obsolete or any
           other event(s) local to the PCE. A NOTIFICATION object with
           Notification-type=1, Notification-value=1 is exclusively carried
           within a PCNtf message sent from the PCC to the PCE. In that
     
     Vasseur et al.                                    [Page 19]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
           case, the REQUEST-ID object MUST also be present in the PCNtf
           message. Note that multiple REQUEST-ID objects may be carried
           within the PCNtf message in which case the notification applies
           to all of them.
     
       Notification-value=2: PCE cancels a set of pending request(s)
     
           A Notification-type=1, Notification-value=2 indicates that the
           PCE wants to inform a PCC of its desire to cancel a set of
           pending request(s). Such event could be triggered because of
           some PCE congested state or because of some path computation
           requests that are part the set of correlated path computation
           requests are missing. A NOTIFICATION object with Notification-
           type=1, Notification-value=2 is exclusively carried within a
           PCNtf message sent by a PCE. In that case, the REQUEST-ID object
           MUST also be present in the PCNtf message. Note that multiple
           REQUEST-ID objects may be comprised within the PCNtf message in
           which case the notification applies to all of them.
     
       Notification-type=2: PCE congestion
     
       Notification-value=1
     
           A Notification-type=2, Notification-value=1 indicates to the
           PCC(s) that the PCE is currently in a congested state. If no
           REQUEST-ID objects are comprised in the PCNtf message, this
           indicates that no other requests should be sent to that PCE
           until the congested state is cleared: the pending requests are
           not affected and will be served. If some pending requests cannot
           be served due to the congested state, the PCE MUST also include
           a set of REQUEST-ID object(s) that identifies the set of pending
           requests which will not be honored and which will be cancelled
           by the PCE. In this case, the PCE does not have to send an
           additional PCNtf message with Notification-type=1 and
           Notification-value=2 since the list of cancelled requests is
           specified by including the corresponding set of REQUEST-ID
           object(s).
     
           Optionally, a TLV named CONGESTION-DURATION may be included in
           the NOTIFICATION object that specifies the duration during which
           no further request should be sent to the PCE. Once this period
           has expired the PCE can be considered as no longer in congested
           state.
     
           The CONGESTION-DURATION TLV is composed of 1 octet for the type,
           1 octet specifying the number of bytes in the value field
           followed by a fix length value field of 4 octets specifying the
           estimated PCE congestion duration in seconds.
     
           TYPE: To be assigned by IANA
           LENGTH: 4
           VALUE: estimated congestion duration in seconds
     
     Vasseur et al.                                    [Page 20]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
     
       Notification-value=2
     
           A Notification-type=2, Notification-value=2 indicates that the
           PCE is no longer in congested state and is available to process
           new path computation requests. An implementation MUST make sure
           that a PCE sends such notification to every PCC to which a
           Notification message (with Notification-type=2, Notification-
           value=1) has been sent unless a CONGESTION-DURATION TLV had been
           included in the corresponding message and the PCE wishes to wait
           for the expiration of that time before receiving new requests.
           If the PCE detects that a PCC to which such notification has
           been sent is in down state (TCP connection released), the PCE
           should delay the sending of such PCNtf message with
           Notification-type=2 and Notification-value=2 until the
           connection is re-established. An implementation may decide to
           cancel such notification if the PCC is in down state for a
           specific period. A RECOMMENDED value for such delay is 1 hour.
     
       It is RECOMMENDED to support some dampening notification procedure on
       the PCE so as to avoid too frequent congestion notifications and
       releases. For example, an implementation could make use of a dual-
       thresholds mechanism triggering the sending of congestion
       notifications and releases. Further, in case of high instabilities of
       the PCE resources, an additional dampening mechanism SHOULD be used
       (linear or exponential) to pace the notification frequency and avoid
       path computation requests oscillation.
     
       Notification-type=3: Reception by the PCE of a PCEP object with an
       unrecognized
                  ææObject-Class
                             ÆÆ
     
       Notification-value=1
     
       A Notification-type=3, Notification-value=1 indicates to the PCC(s)
       that the PCE has received a path computation request comprising an
       optional PCEP object (PR flag set to 1) with an unrecognized Object-
       Class but that the PCE managed to compute a set of path(s) by
       ignoring the object. In that case, the PCE should send a PCNtf
       message prior to sending its PCRep message containing the computed
       path(s) so as to notify the requesting PCC of the list of objects
       that were ignored during path computation because they were not
       recognized. In such situation, the PCNtf message MUST comprise the
       list of ignored PCEP objects.
     
     
       8.9. PCEP-ERROR object
     
       The PCEP-ERROR object is exclusively carried within a PCErr message
       and can either be used in a message sent by a PCC to a PCE or by a
       PCE to a PCC to notify of a PCEP protocol error.
     
     
     Vasseur et al.                                    [Page 21]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
           PCEP-ERROR Object-Class is to be assigned by IANA
           PCEP-ERROR Object-Type is to be assigned by IANA
     
       The PR flag of the PCEP-ERROR object MUST be set to 0. One Object-
       Type is defined for this object to be assigned by IANA with a
       recommended value of 1.
     
       The format of the PCEP-ERROR object body is as follows:
     
        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
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |     Length    |      Flags    |   Error-Type  |  Error-Value  |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                                                               |
       //                     Optional TLV(s)                         //
       |                                                               |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     
             Figure 10 - PCEP-ERROR object body format
     
       A PCEP-ERROR object is used to report a PCEP protocol error and is
       characterized by an Error-Type which specifies the type of error and
       an Error-value that provides additional information about the error
       type. Both the Error-Type and the Error-Value should be managed by
       IANA (see the IANA section).
     
       Length (8 bits)
     
           The Length contains the total length of the object in bytes and
           includes the Type and Length fields.  This length must be a
           multiple of 4 and must be at least 8.
     
       Flags (8 bits)
     
           No flag is currently defined.
     
       Error-type (8 bits)
     
           The Error-type defines the class of error.
     
       Error-value (8 bits)
     
           Provides additional details about the error.
     
       Note that optionally the PCErr message may contain additional TLV so
       as to provide further information about the encountered error. No TLV
       is currently defined.
     
       Furthermore, a single PCErr message may contain multiple PCEP-ERROR
       objects.
     
     
     Vasseur et al.                                    [Page 22]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       For each PCEP protocol error, an Error type and value is defined.
     
       Error-Type              Meaning
           1                  Capability not supported
           2                  Unknown Object-Class
           3                  Not supported object
           4                  Policy violation
           5                  Required Object missing
           6                  Correlated path computation request
                              missing
           7                  Unknown request reference
     
     
       In case of the Error-Type 2, the PCE indicates that the path
       computation request cannot be completed because it does not support
       one or more required capability. The corresponding path computation
       request MUST then be cancelled.
     
       If a PCEP message is received that carries a mandatory PCEP object
       not recognized by the PCE (PR flag=0) or not supported, then the PCE
       MUST send a PCErr message with a PCEP-ERROR object (Error-Type=2 and
       3 respectively). The corresponding path computation MUST be
       cancelled.
     
       If a PCEP message is received that relates to a request not compliant
       with an agreed policy between the PCC and the PCE, the PCE MUST send
       a PCErr message with a PCEP-ERROR object (Error-Type=4). The
       corresponding path computation MUST be cancelled.
     
       If a PCEP path computation request is received that does not comprise
       a required object, the PCE MUST send a PCErr message with a PCEP-
       ERROR object (Error-Type=5). The corresponding path computation MUST
       be cancelled.
     
       If a PCC sends a correlated path computation request to a PCE and the
       PCE does not receive all the correlated path computation requests
       listed within the corresponding CVEC object, the PCE MUST send a
       PCErr message with a PCEP-ERROR object (Error-Type=6). The
       corresponding correlated path computation MUST be cancelled.
     
       If a PCC receives a PCRep message related to an unknown path
       computation request, the PCC MUST send a PCErr message with a PCEP-
       ERROR object (Error-Type=6).
     
       8.10. Reuse of existing RSVP objects
     
       Several RSVP objects have been defined in [RSVP], [RSVP-TE], [G-RSVP]
       and [DS-TE-PROTO] that specify TE LSP constraints which are used
       during TE LSP signaling. Although the PCEP protocol is not used for
       the purpose of signaling a TE LSP, there are several constraints
       which are provided by a requesting PCC to a PCE to perform path
       computation. Hence, when appropriate, objects already in the
     
     Vasseur et al.                                    [Page 23]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       documents referenced above can be reused to pass constraint(s) or
       results to the computing PCE or provide results to the requesting
       PCC.
     
       A non-exhaustive list of such objects follows:
     
       1) Explicit Route Object (ERO): The ERO object is defined in [RSVP-
       TE] and is used to specify an explicit route. An explicit route is
       described as a list of groups of nodes along the explicit route.  In
       addition to the ability to identify specific nodes along the path, an
       explicit route can identify a group of nodes that must be traversed
       along the path. See [RSVP-TE] for the detailed object format
       description.
     
       2) SESSION-ATTRIBUTE object: The SESSION-ATTRIBUTE object is defined
       in [RSVP-TE]. The Session Attribute Class is 207.  Two C-Types are
       defined, LSP_TUNNEL, C-Type = 7 and LSP_TUNNEL_RA, C-Type = 1. The
       SESSION-ATTRIBUTE object with C-Type = 1 includes several TE LSP
       constraints: the set up and holding priorities, a set of flags used
       for various purposes which characterise TE LSP properties related for
       instance to protection (and in particular various attributes used by
       MPLS Traffic Engineering Fast Reroute (see [FRR])), the SE style,
       session name and so on. The SESSION-ATTRIBUTE object with C-Type =1
       includes the same set of fields and additionally carries resource
       affinity information.
     
       3) GENERALIZED LABEL REQUEST
       The GENERALIZED LABEL REQUEST object is defined in [G-RSVP] and is
       used to specify GMPLS TEP LSP constraints: LSP Encoding type,
       switching type, and G-PID parameter. See [G-RSVP] for the detailed
       object format.
     
       4) PROTECTION
       The PROTECTION object is defined in [G-RECV-E2E-SIG]. LSP (Protection
       Type) Flags indicates the desired end-to-end LSP recovery type. Link
       Flags indicates the desired link protection type. The Notification
       (N) bit and Operational (O) bit has no meaning within an PROTECTION
       Object. See [G-RECV-E2E-SIG] for the detailed object format. When LSP
       When an LSP recovery type indicates "1+1 Bi-directional Protection",
       "1:N Protection with Extra-Traffic","1:N Protection with Extra-
       Traffic" or "Re-routing without Extra-Traffic", the CVEC Object is
       used to correlate more than one request in PCReq. When a LSP
       indicates "(Full) Re-routing" or "Unprotected", a correlated request
       is not necessary.
     
       An RSVP object may be carried within a PCEP object. In this case, the
       OS flag of the PCP common header MUST be set to 1.
     
     
     9. Path computation requests bundling
     
     
     Vasseur et al.                                    [Page 24]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       There are various circumstances where bundling multiple path
       computation requests is desirable or required.
     
       9.1. Motivations
     
     9.1.1. Independent requests
     
       When an LSR has to signal a set of N TE LSPs for which it needs to
       send path computation requests to a PCE so as to obtain their
       respective paths, the first solution consists of sending N
       independent PCReq messages to the selected PCE. Note that the PCC may
       chose to distribute the set of N requests across K PCEs for load
       balancing reasons. Considering that M (with M<N) requests are sent to
       a particular PCEi, as described above such M requests can be sent in
       the form of successive PCReq messages destined to PCEi. This is of
       course a viable solution if and only if such requests are
       independent. That said, even if such M request are independent, it
       can be desirable to request from the PCE the computation of their
       paths in a correlated fashion which is likely to lead to more optimal
       path computations and/or reduced blocking probability if the PCE is a
       stateless PCE.
     
       For example, trying to simultaneously compute the paths of M TE LSPs
       may allow the PCE to improve the likelihood to meet multiple
       constraints. Consider the case of two TE LSPs requesting N1 MBits/s
       and N2 MBits/s respectively and a maximum tolerable end to end delay
       for each TE LSP of X ms. There may be circumstances where the
       computation of the first TE LSP path irrespectively of the second TE
       LSP may lead to the impossibility to meet the delay criteria for the
       second TE LSP. A second example is related to the bandwidth
       constraint. It is quite straightforward to provide examples where a
       serialized independent path computation approach would lead to the
       impossibility to satisfy both requests (due to bandwidth
       fragmentation) while a correlated path computation would successfully
       satisfy both requests. A last example relies to the ability to avoid
       the allocation of the same resource to multiple requests thus helping
       to reduce the call set up failure probability compared to the
       computation of independent requests.
     
       Furthermore, if the PCC has to send a large number of path
       computation requests, it may also be desirable to pack multiple
       requests within a single PCReq object so as to minimize the control
       plane overhead. Note that the algorithm used by the PCC to
                                                      ææpack
                                                          ÆÆ a
       set of requests introduces some unavoidable trade-off between control
       plane load and delays and is outside of the scope of this document.
     
       The considerations listed above highlight one of the benefits of
       requesting the PCE to correlate the computation of M independent
       requests.
     
     9.1.2. Correlated request
     
     
     Vasseur et al.                                    [Page 25]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       There are other cases where the computation of M requests must be
       correlated an obvious example of which being the computation of M
       diverse paths. If such paths are computed in a non-correlated fashion
       this seriously increases the probability of not being able to satisfy
       all requests (sometimes also referred to as the well-know "trapping
       problem" and would not allow a PCE to implement objective functions
       such as trying to minimize the sum of the TE LSP costs. In such a
       case, the path computation requests are correlated, they cannot be
       computed independently of each others (in contrast with the previous
       cases discussed in section 8.1.1 where a set of requests are
       independent but would benefit from being computed in a correlated
       fashion).
     
       9.2. CVEC object
     
       For the reasons explained in sections 8.1, path computation requests
       may be correlated. This is achieved by using the CVEC object that
       specifies the list of correlated requests along with the nature of
       the correlation.
     
       9.3. Bundling of response within a PCRep message
     
       The bundling of multiple responses within a single PCRep message is
       permitted by the PCEP protocol. If a PCE receives non correlated path
       computation requests by means of one or more PCReq messages from a
       requesting PCC it may decide to bundle the computed paths within a
       single PCRep message so as to reduce the control plane load. Note
       that the counter side of such approach is the introduction of
       additional delays for some path computation requests of the set.
     
     10. Elements of procedure
     
       10.1. REQUEST-ID message
     
       The absence of a REQUEST-ID object in the PCReq message MUST trigger
       the sending of a PCErr message with Error-type=5 and Error-value=1.
     
       If the C bit of the REQUEST-ID message carried within a PCReq message
       is set and some local policy has been configured on the PCE not to
       provide such cost, then a PCErr message MUST be sent by the PCE to
       the requesting PCC and the pending path computation request MUST be
       discarded. The Error-type and Error-value of the PCEP-ERROR object
       MUST be set to 4 and 1 respectively.
     
       If the P bit of the REQUEST-ID message carried within a PCReq message
       is set and some local policy has been configured on the PCE not to
       provide path made of strict hops (for instance, for confidentiality
       reasons), then a PCErr message MUST be sent by the PCE to the
       requesting PCC and the pending path computation request MUST be
       discarded. The Error-type and Error-value of the PCEP-ERROR object
       MUST be set to 4 and 2 respectively.
     
     
     Vasseur et al.                                    [Page 26]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       R bit: when the R bit of the REQUEST-ID object is set in a PCReq
       message, this indicates that the path computation request relates to
       the reoptimization of an existing TE LSP. In this case, the PCC MUST
       provide the complete or partial path by including an ERO object in
       the PCReq message so as to avoid double bandwidth counting. The ERO
       must be formed of strict hops only. If the PCC has previously
       requested a Partial ERO (P bit cleared), a reoptimization can still
       be requested by the PCC but this implies for the PCE to be either
       statefull (keep a trace of the previously computed path with the
       associated list of strict hops) or to have the ability to retrieve
       the complete required path segment, or for PCC to inform PCE of the
       working path with associated list of strict hops in PCReq. The
       absence of an ERO in the PCReq message when the R bit of the REQUEST-
       ID object is set MUST trigger the sending of a PCErr message with
       Error-type=5 and Error-value=2.
     
       If the PCC receives a PCReq message which contains a REQUEST-ID
       object referring to an unknown Request-ID-Number, it MUST trigger the
       sending of a PCErr message with Error-Type=7 and Error-value=1.
     
       10.2. BANDWIDTH Object
     
       If the PCE cannot find a path that fully satisfies the bandwidth
       constraint and if the L bit of the REQUEST-ID is set and the PCE can
       find a less-constrained path, the PCE MUST return the less-
       constrained path in the form of an ERO along with a BANDWIDHT object
       that indicates the bandwidth for the computed TE LSP path.
     
       10.3. DELAY Object
     
       If the PCE cannot find a path that fully satisfies the delay
       constraint and if the L bit of the REQUEST-ID is set and the PCE can
       find a less-constrained path, the PCE MUST return the less-
       constrained path in the form of an ERO along with a DELAY object that
       indicates the delay for the computed TE LSP path.
     
       10.4. XRO Object
     
       If the PCE cannot find a path that fully satisfies the XRO constraint
       and if the L bit of the REQUEST-ID is set and the PCE can find a
       less-constrained path, the PCE MUST return the less-constrained path
       in the form of an ERO object along with a XRO object that specifies
       the list of network elements that the returned path does not
       comprise. Note that the inclusion of such XRO object in the PCReq
       message is required, should a partial path (path containing a set of
       loose hops/abstract nodes(s)) be returned to the PCC.
     
       10.5. IRO Object
     
       If the PCE cannot find a path that fully satisfies the IRO constraint
       and if the L bit of the REQUEST-ID is set and the PCE can find a
       less-constrained path, the PCE MUST return the less-constrained path
     
     Vasseur et al.                                    [Page 27]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       in the form of an ERO object along with a IRO object that specifies
       the list of network elements that the returned path comprises. Note
       that the inclusion of such IRO object in the PCReq message is
       required, should a partial path (path containing a set of loose
       hops/abstract nodes(s)) be returned to the PCC.
     
       10.6. CVEC object
     
       When a requesting PCC desires to send multiple correlated path
       computation requests, as explained in section 8, it MUST send all the
       path computation requests within a single PCReq message that contains
       all the correlated path computation requests: in that case, the PCReq
       message MUST also comprise a CVEC object listing all the correlated
       path computation requests. Note that such PCReq message may also
       comprise non-correlated path computation requests. For example, the
       PCReq message may comprise N correlated path computation requests
       related to REQUEST-ID 1, à , REQUEST-ID N which will also be present
       in the CVEC object along with any other path computation requests.
     
       10.7. SESSION-ATTRIBUTE object
     
       If the PCE cannot find a path that fully satisfies some of the
       constraints specified in the SESSION-ATTRIBUTE object carried within
       the PCReq message and if the L bit of the REQUEST-ID is set and the
       PCE can find a less-constrained path, then the PCE MUST return the
       less-constrained path in the form of an ERO along with a SESSION-
       ATTRIBUTE object that indicates the constraints that the returned
       computed TE LSP path has satisfied.
     
     11. Manageability
     
       To be detailed in further revision of this document.
     
     12. IANA considerations
     
       12.1. TCP port
     
       The PCEP protocol will use a well-known TCP port to be assigned by
       IANA.
     
       12.2. PCEP Objects
     
       Several new PCEP objects are defined in this document which have a
       Object-Class and an Object-Type. The new Object-Class and Object-Type
       should be assigned by IANA.
     
       - REQUEST-ID Object
     
       The Object-Class of the REQUEST-ID object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
     Vasseur et al.                                    [Page 28]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
       - END-POINTS Object
     
       The Object-Class of the END-POINTS object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - BANDWIDTH Object
     
       The Object-Class of the BANDWIDTH object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - DELAY Object
     
       The Object-Class of the DELAY object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - IRO Object
     
       The Object-Class of the IRO object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - NOTIFICATION Object
     
       The Object-Class of the NOTIFICATION object is to be assigned by
       IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - PCEP-ERROR Object
     
       The Object-Class of the PCEP-ERROR object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
       - CVEC Object
     
       The Object-Class of the CVEC object is to be assigned by IANA.
     
       One Object-Type is defined for this object and should be assigned by
       IANA with a recommended value of 1.
     
     
     Vasseur et al.                                    [Page 29]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       12.3. Notification
     
       A NOTIFICATION object is characterized by a Notification-type that
       specifies the class of notification and a Notification-value that
       provides additional information related to the nature of the
       notification. Both the Notification-type and Notification-value
       should be managed by IANA (see IANA section).
     
       The following Notification-type and Notification-value values are
       currently defined:
     
       Notification-type=1: Pending Request cancelled
     
         Notification-value=1: PCC cancels a set of pending request(s)
     
         Notification-value=2: PCE cancels a set of pending request(s)
     
       Notification-type=2: PCE congestion
     
          Notification-value=1: PCE in congested state
     
         Notification-value=2: PCE no longer in congested state
     
       Notification-type=3: Reception by the PCE of a PCEP object with an
       unrecognized
                  ææObject-Class
                             ÆÆ
     
          Notification-value=1: indicates to the PCC(s) that the PCE has
       received a path computation request comprising an optional PCEP
       object (PR flag set to 1) with an unrecognized Object-Class but that
       the PCE managed to compute a set of path(s) by ignoring the object.
     
     
       12.4. PCEP Error
     
       A PCEP-ERROR object is used to report a PCEP protocol error and is
       characterized by an Error-Type which specifies the type of error and
       an Error-value that provides additional information about the error
       type. Both the Error-Type and the Error-Value should be managed by
       IANA.
     
       Error-Type     Meaning     Error-Value
     
       1         Capability not supported
     
       2            Unknown Object-Class
     
     
       3         Not supported object
     
       4      Policy violation
                             1: Cost requested and not authorized
                             2: Complete path requested and not
     
     Vasseur et al.                                    [Page 30]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
                                authorized
     
       5      Required Object missing
                              1: REQUEST-ID object missing
                                2: ERO missing in a path computation
                                           reoptimization request
     
       6      Correlated path computation request missing
                                 1: Path computation requests listed
                                           in the CVEC object not received:
                                           resend requested
     
       7      Unknown request reference
     
     
     13. Security Considerations
     
       To be detailed in a further revision of this document.
     
     14. Intellectual Property Statement
     
       The IETF takes no position regarding the validity or scope of any
       Intellectual Property Rights or other rights that might be claimed to
       pertain to the implementation or use of the technology described in
       this document or the extent to which any license under such rights
       might or might not be available; nor does it represent that it has
       made any independent effort to identify any such rights. Information
       on the procedures with respect to rights in RFC documents can be
       found in BCP 78 and BCP 79.
     
       Copies of IPR disclosures made to the IETF Secretariat and any
       assurances of licenses to be made available, or the result of an
       attempt made to obtain a general license or permission for the use of
       such proprietary rights by implementers or users of this
       specification can be obtained from the IETF on-line IPR repository at
       http://www.ietf.org/ipr.
     
       The IETF invites any interested party to bring to its attention any
       copyrights, patents or patent applications, or other proprietary
       rights that may cover technology that may be required to implement
       this standard. Please address the information to the IETF at ietf-
       ipr@ietf.org.
     
       Internet-Drafts are working documents of the Internet Engineering
       Task Force (IETF), its areas, and its working groups. Note that other
       groups may also distribute working documents as Internet-Drafts.
     
       Internet-Drafts are draft documents valid for a maximum  of six
       months and may be updated, replaced, or obsoleted by other documents
       at any time. It is inappropriate to use Internet-Drafts as  reference
       material or to cite them other than as "work in progress.
     
     
     Vasseur et al.                                    [Page 31]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
     15. Acknowledgment
     
       We would like to thank Dave Oran and Dean Cheng for their very
       valuable input.
     
     16. References
     
       16.1. Normative references
     
       [RFC] Bradner, S., "Key words for use in RFCs to indicate
       requirements levels", RFC 2119, March 1997.
     
       [RFC3667] Bradner, S., "IETF Rights in Contributions", BCP 78,
       RFC 3667, February 2004.
     
       [RFC3668] Bradner, S., Ed., "Intellectual Property Rights in IETF
       Technology", BCP 79, RFC 3668, February 2004.
     
       [RSVP] R. Braden et al., "Resource ReSerVation Protocol (RSVP) -
       Version 1 Functional Specification", RFC 2205, September 1997.
     
       [RSVP-TE] Awduche, D., et. al., "RSVP-TE: Extensions to RSVP for LSP
       tunnels", RFC 3209, December 2001.
     
       [G-RSVP] Berger, L, et. al., "GMPLS Signaling RSVP-TE extensions",      Formatted:
       RFC 3473, January 2003.
     
       [SCTP] Stewart et al., "Stream Control Transmission Protocol",
       RFC2960, October 2000.
     
       [TCP] J. Postel, "Transmission Control Protocol", RFC 793, September
       1981.
     
       [DS-TE-PROTO] Le Faucheur et al, "Protocol extensions for support of
       Differentiated-Service-aware MPLS Traffic Engineering", draft-ietf-
       tewg-diff-te-proto, (Work in progress).
     
       [G-RECV-E2E-SIG] J. P. Lang et al, "RSVP-TE Extensions in support of
       End-to-End Generalized Multi-Protocol Label Switching (GMPLS)-based
       Recovery", draft-ietf-ccamp-gmpls-recovery-e2e-signaling-03.txt
       (working in progress).
     
       16.2. Informative References
     
       [PCE-ARCH] A. Farrel, JP. Vasseur and J. Ash, "Path Computation
       Element (PCE) Architecture", draft-ietf-pce-architecture (work in
       progress).
     
       [PCE-GEN-COM-REQ] J. Ash, J.L Le Roux et al., "PCE Communication
       Protocol Generic Requirements", draft-ietf-pce-comm-protocol-gen-
       reqs, (Work Progress).
     
     Vasseur et al.                                    [Page 32]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
     
       [GMPLS-RTG] Kompella, K., Rekhter, Y., "Routing Extensions in Support
       of Generalized Multi-Protocol Label Switching", draft-ietf-ccamp-
       gmpls-routing-09.txt (work in progress)
     
       [INT-AREA-REQ] Le Roux, J.L., Vasseur, J.P., Boyle, J. et al,
       "Requirements for inter-area MPLS Traffic Engineering", draft-ietf-
       tewg-interarea-mpls-te-req-03.txt, work in progress.
     
       [INT-AS-REQ] Zhang, R., Vasseur, J.P. et al, "MPLS Inter-AS Traffic
       Engineering Requirements", draft-ietf-tewg-interas-mpls-te-req-
       09.txt, work in progress.
     
       [INT-DOMAIN-FRWK] Farrel, A., Vasseur, J.P., Ayyangar, A., "A
       Framework for Inter-Domain MPLS Traffic Engineering", draft-ietf-
       ccamp-inter-domain-framework-00.txt, work in progress.
     
       [MGT] A. Farrel et al. "Requirements for Manageability Sections in
       Routing Area Drafts", draft-farrel-rtg-manageability-requirements-
       00.txt, work in progress.
     
       [XRO] Lee et al, "Exclude Routes - Extension to RSVP-TE", draft-ietf-
       ccamp-rsvp-te-exclude-route-03.txt, work in progress.
     
       [PCE-DISC-REQ] JL Le Roux et al., "Requirements for Path Computation
       Element (PCE) Discovery", draft-leroux-pce-discovery-reqs-00.txt,
       work in progress.
     
     
     17. Authors Address
     
       Jean-Philippe Vasseur
       Cisco Systems, Inc.
       300 Beaver Brook Road
       Boxborough , MA - 01719
       USA
       Email: jpv@cisco.com
     
       Jean-Louis Le Roux
       France Telecom
       2, avenue Pierre-Marzin
       22307 Lannion Cedex
       FRANCE
       Email: jeanlouis.leroux@francetelecom.com
     
       Arthi Ayyangar
       Juniper Networks, Inc.
       1194 N.Mathilda Ave
       Sunnyvale, CA 94089
       USA
       E-mail: arthi@juniper.net
     
     
     Vasseur et al.                                    [Page 33]


     Internet Draft       draft-vasseur-pce-pcep-00            May 2005
     
       Eiji Oki
       NTT
       Midori 3-9-11
       Musashino, Tokyo 180-8585
       JAPAN
       Email: oki.eiji@lab.ntt.co.jp
     
       Alia K. Atlas
       Avici Systems, Inc.
       101 Billerica Avenue
       N. Billerica, MA  01862
       USA
       Phone: +1 978 964 2070
       EMail: aatlas@avici.com
     
     
     Full Copyright Statement
     
       Copyright (C) The Internet Society (2005).
     
       This document is subject to the rights, licenses and  restrictions
       contained in BCP 78, and except as set forth therein, the authors
       retain all their rights."
     
       This  document and the information contained herein are provided on
       an "AS IS"  basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
       REPRESENTS OR IS  SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE
       INTERNET ENGINEERING  TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR
       IMPLIED, INCLUDING BUT  NOT LIMITED TO ANY WARRANTY THAT THE USE OF
       THE INFORMATION HEREIN WILL  NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
       WARRANTIES OF MERCHANTABILITY OR  FITNESS FOR A PARTICULAR PURPOSE.
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     Vasseur et al.                                    [Page 34]