RFC 9757
Path Computation Element Communication Protocol (PCEP) Extensions for Native IP Networks
RFC 9757: Path Computation Element Communication Protocol (PCEP) Extensions for Native IP Networks ๐ฆ
okay bestie, this is an Experimental RFC from the IETF, dated March 2025. ๐ It's numbered RFC 9757 and the ISSN is 2070-1721. The authors are A. Wang from China Telecom, B. Khasanov from MTS Web Services (MWS), S. Fang from Huawei Technologies, and C. Zhu from ZTE Corporation. ๐ The header doesn't have an "Obsoletes" or "Updates" line, so it doesn't list any RFCs as obsoleted or updated. โจ
Abstract
this doc adds extensions to PCEP so a PCE can do path computation in Native IP networks ๐ง through a PCE-based central control mechanism called Centralized Control Dynamic Routing (CCDR). the PCE can calculate and manage paths just for Native IP networks, so PCEP grows past its old job in MPLS and GMPLS networks. ๐ฅ once these extensions are in place, IP network resources get used more efficiently, which makes traffic engineering easier to deploy in Native IP environments. it's giving main character energy ๐
Status of This Memo
ngl this part is the legal-ish stuff, but it's important ๐ this document is not an Internet Standards Track specification. it's published for examination, experimental implementation, and evaluation. ๐งช
it defines an Experimental Protocol for the Internet community ๐ and it's a product of the Internet Engineering Task Force (IETF). it represents the consensus of the IETF community and got public review. the Internet Engineering Steering Group (IESG) approved it for publication. not every IESG-approved doc is a candidate for any level of Internet Standard, so check Section 2 of RFC 7841 if you want the details. ๐
for the current status, any errata, and how to send feedback, go to https://www.rfc-editor.org/info/rfc9757 โจ
Copyright Notice
Copyright (c) 2025 IETF Trust and the persons identified as the document authors. All rights reserved. ๐ซถ
this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they stand on the publication date. please read these carefully, because they spell out your rights and restrictions for this document. ๐ code components pulled out of this document must include Revised BSD License text, as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty, as described in the Revised BSD License. ๐
Table of Contents ๐
1. Introduction
2. Conventions Used in This Document
2.1. Use of RBNF
2.2. Experimental Status Consideration
3. Terminology
4. Capability Advertisement
4.1. Open Message
5. PCEP Messages
5.1. The PCInitiate Message
5.2. The PCRpt Message
6. PCECC Native IP TE Procedures
6.1. BGP Session Establishment Procedures
6.2. Explicit Route Establishment Procedures
6.3. BGP Prefix Advertisement Procedures
6.4. Selection of the Raw Mode and Tunnel Mode Forwarding
Strategy
6.5. Cleanup
6.6. Other Procedures
7. New PCEP Objects
7.1. CCI Object
7.2. BGP Peer Info Object
7.3. Explicit Peer Route Object
7.4. Peer Prefix Advertisement Object
8. New Error-Type and Error-Values Defined
9. BGP Considerations
10. Deployment Considerations
11. Manageability Considerations
11.1. Control of Function and Policy
11.2. Information and Data Models
11.3. Liveness Detection and Monitoring
11.4. Verify Correct Operations
11.5. Requirements on Other Protocols
11.6. Impact on Network Operations
12. Security Considerations
13. IANA Considerations
13.1. PCEP Path Setup Types
13.2. PCECC-CAPABILITY Sub-TLV Flag Field
13.3. PCEP Objects
13.4. PCEP-Error Objects
13.5. CCI Object Flag Field
13.6. BPI Object Status Codes
13.7. BPI Object Error Codes
13.8. BPI Object Flag Field
14. References
14.1. Normative References
14.2. Informative References
Acknowledgements
Contributors
Authors' Addresses
1. Introduction ๐ธ
okay so, MPLS-TE normally needs the network devices to support the Resource ReSerVation Protocol (RSVP) [RFC3209] and the Label Distribution Protocol (LDP) [RFC5036] so that End-to-End (E2E) traffic performance is guaranteed. ๐ but in the Native IP network scenarios from [RFC8735], there's no signaling protocol to keep the actions of different network devices in sync. ๐ it's doable to use the central control mode from [RFC8283] to line up the forwarding behavior across devices. ๐ฅ
then [RFC8821] describes the architecture and solution philosophy for E2E traffic assurance in a Native IP network, using multiple Border Gateway Protocol (BGP) sessions. ๐ง the only thing the PCE has to do is send instructions to the Path Computation Clients (PCCs) so they can build multiple BGP sessions, spread different prefixes across those sessions, and assign different paths to the BGP next hops. it's so clean, no cap โจ
this document describes the PCEP extensions that carry the key info about the BGP peer, the peer prefix advertisement, and the explicit peer route on on-path routers. ๐
2. Conventions Used in This Document ๐
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. ๐ so the capital letters are the whole point, don't lowercase them lol ๐ญ
2.1. Use of RBNF
the message formats in this document are shown with Routing Backus-Naur Form (RBNF) encoding, as specified in [RFC5511]. ๐งฉ RBNF is only illustrative and it may leave out important details. the normative spec for messages is the prose description. if the RBNF and the prose ever disagree, the prose wins, periodt ๐
2.2. Experimental Status Consideration
the procedures here are experimental ๐งช the experiment is about using PCE (and PCEP) for E2E traffic assurance in Native IP networks through multiple BGP sessions. more implementation is needed to really understand the operational impact, scalability, and stability of the mechanism. ๐ feedback from deployments is going to be crucial for deciding whether this spec moves from Experimental to the IETF Standards Track. it's giving "wait and see" energy ๐
3. Terminology ๐ง
this document uses the terms PCC, PCE, and PCEP, which are defined in [RFC5440]. โจ
also, here's the extra terminology this doc uses:
- BPI: BGP Peer Info
- CCDR: Centralized Control Dynamic Routing
- CCI: Central Controller Instructions (defined in [RFC9050])
- E2E: End-to-End
- EPR: Explicit Peer Route
- Native IP network: Network that forwards traffic based solely on the IP address, instead of another indicator, for example, MPLS, etc. ๐ท
- PCECC: PCE as a Central Controller (defined in [RFC8283])
- PPA: Peer Prefix Advertisement
- PST: Path Setup Type (defined in [RFC8408])
- SRP: Stateful PCE Request Parameter (defined in [RFC8231])
- RR: Route Reflector
4. Capability Advertisement ๐ฆ
4.1. Open Message
during the PCEP Initialization Phase, PCEP speakers (PCE or PCC) advertise whether they support the Native IP extensions. ๐ฃ
this document defines a new Path Setup Type (PST) [RFC8408] for Native IP, like so:
PST = 4: Path is a Native IP TE path as per [RFC8821].
a PCEP speaker MUST indicate its support for the function in this document by sending a PATH-SETUP-TYPE-CAPABILITY TLV in the OPEN object, with this new PST in the PST list. ๐
[RFC9050] defined the PCECC-CAPABILITY sub-TLV to exchange info about the PCEP speakers' PCECC capability. ๐ a new flag is defined in the PCECC-CAPABILITY sub-TLV for Native IP:
N(NATIVE-IP-TE-CAPABILITY - 1 bit - 30): When set to 1 by a PCEP speaker, this flag indicates that the PCEP speaker is capable of TE in a Native IP network, as specified in this document. Both the PCC and PCE MUST set this flag to support this extension. ๐ฅ
if a PCEP speaker gets the PATH-SETUP-TYPE-CAPABILITY TLV with the new PST, but the N bit isn't set in the PCECC-CAPABILITY sub-TLV, it MUST:
- send a PCErr message with Error-Type=10 (Reception of an invalid object) and Error-value=39 (PCECC NATIVE-IP-TE-CAPABILITY bit is not set), and
- terminate the PCEP session. ๐
if a PCEP speaker gets the PATH-SETUP-TYPE-CAPABILITY TLV with the new PST, but there's no PCECC-CAPABILITY sub-TLV at all, it MUST:
- send a PCErr message with Error-Type=10 (Reception of an invalid object) and Error-value=33 (Missing PCECC Capability sub-TLV), and
- terminate the PCEP session. ๐ญ
if one or both speakers (PCE and PCC) haven't indicated support for Native IP, the PCEP extensions for Native IP MUST NOT be used. if someone tries a Native IP operation when both speakers haven't agreed in the OPEN messages, the receiver of the message MUST:
- send a PCErr message with Error-Type=19 (Invalid Operation) and Error-value=29 (Attempted Native IP operations when the capability was not advertised), and
- terminate the PCEP session. ๐ โโ๏ธ
5. PCEP Messages ๐
the PCECC Native IP TE solution uses the existing PCE Label Switched Path (LSP) Initiate Request message (PCInitiate) [RFC8281] and the PCE Report message (PCRpt) [RFC8231]. together they set up multiple BGP sessions, deploy the E2E Native IP TE path, and advertise route prefixes across the different BGP sessions. ๐ a new PST for Native IP tells everyone the path is being set up based on TE in Native IP networks.
the extended PCInitiate message described in [RFC9050] downloads or removes the Central Controller Instructions (CCI). [RFC9050] specifies an object called CCI that encodes the central controller's instructions. this document specifies a new CCI Object-Type for Native IP, and the PCEP messages are extended here to handle PCECC operations for Native IP. โจ three new PCEP objects are defined in this document: BGP Peer Info (BPI), Explicit Peer Route (EPR), and Peer Prefix Advertisement (PPA). see Section 7 for the detailed object definitions. all the PCEP procedures in [RFC9050] keep applying unless this document says otherwise. ๐ซถ
(part 1 of 8, more to come ๐)
5.1. The PCInitiate Message โจ
okay so the PCInitiate message from [RFC8281] (which got its own upgrade in [RFC9050]) is getting extended AGAIN ๐ so it can handle Native IP CCI ๐ฆ the shape looks like this:
<PCInitiate Message> ::= <Common Header>
<PCE-initiated-lsp-list>
Where:
<Common Header>is defined in RFC 5440
<PCE-initiated-lsp-list> ::= <PCE-initiated-lsp-request>
[<PCE-initiated-lsp-list>]
<PCE-initiated-lsp-request> ::=
(<PCE-initiated-lsp-instantiation>|
<PCE-initiated-lsp-deletion>|
<PCE-initiated-lsp-central-control>)
<PCE-initiated-lsp-central-control> ::= <SRP>
<LSP>
<cci-list>
<cci-list> ::= <CCI>
[<BPI>|<EPR>|<PPA>]
[<cci-list>]
Where:
<PCE-initiated-lsp-instantiation>and<PCE-initiated-lsp-deletion>are as per [RFC8281].- The LSP and SRP objects are defined in [RFC8231].
When the PCInitiate message is used for Native IP instructions, i.e., when the CCI Object-Type is 2, the SRP, LSP, and CCI objects MUST be present. Error handling for missing SRP, LSP, or CCI objects MUST be performed as specified in [RFC9050]. Additionally, exactly one object among the BPI, EPR, or PPA objects MUST be present. The PCEP-specific LSP identifier (PLSP-ID) and Symbolic Path Name TLVs are set as per the existing rules in [RFC8231], [RFC8281], and [RFC9050]. The Symbolic Path Name is used by the PCE/PCC to uniquely identify the E2E Native IP TE path. The related Native IP instructions with BPI, EPR, or PPA objects are identified by the same Symbolic Path Name. ๐
If none of the BPI, EPR, or PPA objects are present, the receiving PCC MUST send a PCErr message with Error-Type=6 (Mandatory Object missing) and Error-value=19 (Native IP object missing). If there is more than one BPI, EPR, or PPA object present, the receiving PCC MUST send a PCErr message with Error-Type=19 (Invalid Operation) and Error-value=22 (Only one BPI, EPR, or PPA object can be included in this message). the errors are very specific and very important ๐ญ
When the PCInitiate message is not used for Native IP instructions, i.e., when the CCI Object-Type is not equal to 2, the BPI, EPR, and PPA objects SHOULD NOT be present. If present, they MUST be ignored by the receiver.
To clean up the existing Native IP instructions, the SRP object MUST set the R (remove) bit. ๐งน
5.2. The PCRpt Message ๐
the PCRpt message is how the Native IP instructions get acknowledged, both when they come in from the central controller (PCE) and during the State Synchronization phase ๐ธ here's the layout:
<PCRpt Message> ::= <Common Header>
<state-report-list>
<state-report-list> ::= <state-report>[<state-report-list>]
<state-report> ::= (<lsp-state-report>|
<central-control-report>)
<lsp-state-report> ::= [<SRP>]
<LSP>
<path>
<central-control-report> ::= [<SRP>]
<LSP>
<cci-list>
<cci-list> ::= <CCI>
[<BPI>|<EPR>|<PPA>]
[<cci-list>]
Where:
The error handling for missing CCI objects is as per [RFC9050]. Furthermore, one and only one BPI, EPR, or PPA object MUST be present.
If none of the BPI, EPR, or PPA objects are present, the receiving PCE MUST send a PCErr message with Error-Type=6 (Mandatory Object missing) and Error-value=19 (Native IP object missing). If there is more than one BPI, EPR, or PPA object present, the receiving PCE MUST send a PCErr message with Error-Type=19 (Invalid Operation) and Error-value=22 (Only one BPI, EPR, or PPA object can be included in this message).
When the PCInitiate message is not used for Native IP instructions, i.e., when the CCI Object-Type is not equal to 2, the BPI, EPR, and PPA objects SHOULD NOT be present. If present, they MUST be ignored by the receiver.
6. PCECC Native IP TE Procedures ๐
the detailed procedures for TE in the Native IP environment are in the sections below, so let's get into it ๐ง
6.1. BGP Session Establishment Procedures ๐
the PCInitiate and PCRpt message pair is used to swap the configuration parameters for a BGP peer session. this pair of PCEP messages goes between a PCE and each BGP peer (acting as the PCC) that needs to set up a BGP session. once the BGP peer session has been kicked off with this pair of messages, the BGP session comes up and runs like normal ๐ฆ the BGP peers can be External BGP (EBGP) peers or Internal BGP (IBGP) peers. for IBGP topologies, the Route Reflector (RR) is required.
The PCInitiate message is sent to the BGP router and/or RR (which are acting as the PCC).
The RR topology for a single Autonomous System (AS) is shown in Figure 1. the BGP routers R1, R3, and R7 are all in one AS. R1 and R7 are BGP RR clients, and R3 is the RR ๐ the PCInitiate message goes out to R1, R3, and R7, since they all need to set up a BGP session.
PCInitiate message creates an autoconfiguration function for these BGP peers by providing the indicated Peer AS and the Local/Peer IP Address. it's giving self-setup vibes ๐
When the PCC receives the BPI and CCI objects (with the R bit set to 0 in the SRP object) in the PCInitiate message, the PCC SHOULD try to establish the BGP session with the indicated Peer as per the AS and Local/Peer IP Address.
During the establishment procedure, the PCC MUST report the status of the BGP session to the PCE via the PCRpt message, with the status field in the BPI object set to the appropriate value and the corresponding SRP and CCI objects included. ๐ฃ
When the PCC receives this message with the R bit set to 1 in the SRP object in the PCInitiate message, the PCC MUST clear the BGP configuration and tear down the BGP session that is indicated by the BPI object. bye bye session ๐
When the PCC successfully clears the specified BGP session configuration, it MUST report the result via the PCRpt message, with the BPI object and the corresponding SRP and CCI objects included.
+------------------+
+-----------> PCE <----------+
| +--------^---------+ |
| | |
| PCInitiate/PCRpt |
| | |
| +----v--+ |
+---------------+ R3(RR)+-----------------+
| +-------+ |
PCInitiate/PCRpt PCInitiate/PCRpt
| |
+v-+ +--+ +--+ +-v+
|R1+----------+R5+----------+R6+---------+R7|
++-+ +-++ +--+ +-++
| | |
| +--+ +--+ |
+------------+R2+----------+R4+-----------+
+--+ +--+
Figure 1: BGP Session Establishment Procedures (R3 acts as the RR)
The message peers, message types, message key parameters, and procedures in the above figure are shown below:
+-------+ +-------+
|PCC | | PCE |
|R1 | +-------+
+------| | |
| PCC +-------+ |
| R3 | | (For R1/R3 BGP Session on R1) |
+------| | |<-PCInitiate,CC-ID=X,Symbolic Path Name=Class A-|
| | | |BPI Object(Peer AS, Local_IP=R1_A, Peer_IP=R3_A)|
|PCC +--------+ | |
|R7 | | |----PCRpt,CC-ID=X(Symbolic Path Name=Class A)-->|
| | | |BPI Object(Peer AS, Local_IP=R1_A, Peer_IP=R3_A)|
+--------+ | |
| | (For R1/R3 BGP Session on R3) |
| |<--PCInitiate,CC-ID=Y1,Symbolic Path Name=Class A-----|
| | BPI Object(Peer AS, Local_IP=R3_A, Peer_IP=R1_A)|
| |---PCRpt,CC-ID=Y1,Symbolic Path Name=Class A--------->|
| | BPI Object(Peer AS, Local_IP=R3_A, Peer_IP=R1_A)|
| | |
| | (For R3/R7 BGP Session on R3) |
| |<--PCInitiate,CC-ID=Y2,Symbolic Path Name=Class A-----|
| | BPI Object(Peer AS, Local_IP=R3_A, Peer_IP=R7_A) |
| |----PCRpt,CC-ID=Y2,Symbolic Path Name=Class A-------->|
| | BPI Object(Peer AS, Local_IP=R3_A, Peer_IP=R7_A) |
| |
| (For R3/R7 BGP Session on R7) |
|<--PCInitiate,CC-ID=Z,Symbolic Path Name=Class A--------------|
| BPI Object(Peer AS, Local_IP=R7_A, Peer_IP=R3_A) |
|---PCRpt,CC-ID=Z,Symbolic Path Name=Class A------------------>|
| BPI Object(Peer AS, Local_IP=R7_A, Peer_IP=R3_A) |
Figure 2: Message Information and Procedures
The Local/Peer IP Address MUST be dedicated to the usage of the Native IP TE solution and MUST NOT be used by other BGP sessions that are established manually or in other ways. If the Local IP Address or Peer IP Address within the BPI object is used in other existing BGP sessions, the PCC MUST report such an error situation via a PCErr message with:
Error-Type=33(Native IP TE failure) andError-value=1(Local IP is in use) orError-Type=33(Native IP TE failure) andError-value=2(Remote IP is in use).
The detailed Error-Types and Error-values are defined in Section 8. โ ๏ธ
If the established BGP session is broken, the PCC MUST report such information via a PCRpt message with the status field set to "BGP session down" in the associated BPI object. The error code field within the BPI object SHOULD indicate the reason that leads to the BGP session being down. In the future, when the BGP session is up again, the PCC MUST report that as well via the PCRpt message with the status field set to "BGP Session Established". ๐ฅน
6.2. Explicit Route Establishment Procedures โจ
okay bestie, this part is about how a PCE can install a route directly on a PCC ๐ using the PCInitiate and PCRpt message pair ๐ฆ. These explicit routes act just like static routes that network management protocols (e.g., Network Configuration Protocol (NETCONF) / YANG) put in place. ngl the PCE has to be the one running the show here, because it MUST control adding and removing these routes in a specific order so the pathways come up without loops ๐
For explicit route addition, the PCInitiate message ought to go to every router on the explicit path ๐ฃ๏ธ Say we want the explicit route from R1 to R7. Then the PCInitiate message goes to R1, R2, and R4, as you can see in Figure 3 ๐ธ Going the other way, from R7 to R1, the PCInitiate message goes to R7, R4, and R2, as in Figure 5 ๐ฆ
+------------------+
+----------> PCE +
| +----^-----------^-+
| | |
| | |
| | +------+ |
+---------------|-+R3(RR)+--|-------------+
PCInitiate/PCRpt | +------+ | |
| | | |
+v-+ +--+ | | +--+ +--+
|R1+------+R5+---+-----------|---+R6+----+R7|
++-+ +--+ | | +--+ +-++
| PCInitiate/PCRpt PCInitiate/PCRpt |
| | | |
| +--v--+ +--v-+ |
+------------+- R2 +-----+ R4 +-----------+
+--+--+ +--+-+
Figure 3: Explicit Route Establish Procedures (from R1 to R7)
The message peers, message types, message key parameters, and procedures in the above figure are shown below ๐
+-------+ +-------+
|PCC | | PCE |
|R4 | +-------+
+------| | |
| PCC +-------+ |
| R2 | | (EPR route on R4) |
+------| | |<-PCInitiate,CC-ID=Z,Symbolic Path Name=Class A|
| | | | EPR Object(Peer Address=R7_A, Next Hop=R7_A)|
|PCC +--------+ | |
|R1 | | |----PCRpt,CC-ID=Z,Symbolic Path Name=Class A-->|
| | | | EPR Object(Peer Address=R7_A, Next Hop=R7_A)|
+--------+ | |
| | (EPR route on R2) |
| |<--PCInitiate,CC-ID=Y,Symbolic Path Name=Class A-----|
| | EPR Object(Peer Address=R7_A, Next Hop=R4_A) |
| |----PCRpt,CC-ID=Y,Symbolic Path Name=Class A-------->|
| | EPR Object(Peer Address=R7_A, Next Hop=R4_A) |
| | |
| |
| (EPR route on R1) |
|<--PCInitiate,CC-ID=X,Symbolic Path Name=Class A-------------|
| EPR Object(Peer Address=R7_A, Next Hop=R2_A) |
|---PCRpt,CC-ID=X1(Symbolic Path Name=Class A)--------------->|
| EPR Object(Peer Address=R7_A, Next Hop=R2_A) |
Figure 4: Message Information and Procedures
+------------------+
+ PCE <-----------+
+----^-----------^-+ |
| | |
| | |
| +------+ | |
+-----------------+R3(RR)+--|-------------+
| | +------+ | PCInitiate/PCRpt
| | | |
+--+ +--+ | | +--+ +-v+
|R1+------+R5+---+-----------|---+R6+----+R7|
++-+ +--+ | | +--+ +-++
| PCInitiate/PCRpt PCInitiate/PCRpt |
| | | |
| +--v--+ +--v-+ |
+------------+- R2 +-----+ R4 +-----------+
+--+--+ +--+-+
Figure 5: Explicit Route Establish Procedures (from R7 to R1)
The message peers, message types, message key parameters, and procedures in the above figure are shown below ๐ง
+-------+ +-------+
|PCC | | PCE |
|R2 | +-------+
+------| | |
| PCC +-------+ |
| R4 | | (EPR route on R2) |
+------| | |<-PCInitiate,CC-ID=X,Symbolic Path Name=Class A|
| | | | EPR Object(Peer Address=R1_A, Next Hop=R1_A) |
|PCC +--------+ | |
|R7 | | |----PCRpt,CC-ID=X,Symbolic Path Name=Class A-->|
| | | | EPR Object(Peer Address=R1_A, Next Hop=R1_A) |
+--------+ | |
| | (EPR route on R4) |
| |<--PCInitiate,CC-ID=Y,Symbolic Path Name=Class A-----|
| | EPR Object(Peer Address=R1_A, Next Hop=R2_A) |
| |----PCRpt,CC-ID=Y,Symbolic Path Name=Class A-------->|
| | EPR Object(Peer Address=R1_A, Next Hop=R2_A) |
| | |
| |
| (EPR route on R7) |
|<--PCInitiate,CC-ID=Z,Symbolic Path Name=Class A-------------|
| EPR Object(Peer Address=R1_A, Next Hop=R4_A) |
|---PCRpt,CC-ID=Z,Symbolic Path Name=Class A----------------->|
| EPR Object(Peer Address=R1_A, Next Hop=R4_A) |
Figure 6: Explicit Route Establish Procedures (from R7 to R1)
Now the important rules ๐ฅ When the PCC gets the EPR and the CCI object (with the R bit set to 0 in the SRP object) in a PCInitiate message, the PCC SHOULD install the explicit route to the peer in the RIB/FIB ๐
Once the PCC successfully installs that explicit route to the peer, it MUST report the result via the PCRpt message, with the EPR object and the corresponding SRP and CCI objects included โ
When the PCC gets the EPR and the CCI object with the R bit set to 1 in the SRP object in a PCInitiate message, the PCC MUST remove the explicit route to the peer that the EPR object points to ๐๏ธ
After the PCC has removed the explicit route indicated by this object, it MUST report the result via the PCRpt message, with the EPR object and the corresponding SRP and CCI objects included ๐ซถ
Order matters, bestie! To avoid a transient loop while deploying the explicit peer route, the EPR object MUST be sent to the PCCs in the reverse order of the E2E path ๐ To remove the explicit peer route, the EPR object MUST be sent to the PCCs in the same order as the E2E path.
To get ECMP effects ๐, the PCE can send multiple EPR/CCI objects to the same node, with the same route priority and peer address value but a different next-hop address.
The PCC MUST verify that the next-hop address is reachable ๐ If that check fails, the PCC MUST send the corresponding error via a PCErr message, with the error information Error-Type=33 (Native IP TE failure) and Error-value=3 (Explicit Peer Route Error) ๐
When the peer info is not the same as the peer info indicated in the BPI object in the PCC for the same path identified by the Symbolic Path Name TLV, a PCErr message MUST be reported, with the error information Error-Type=33 (Native IP TE failure) and Error-value=4 (EPR/BPI Peer Info mismatch) ๐ Note that the same error can be used in case no BPI is received at the PCC.
Last but not least, if the PCE needs to update the path, it MUST first instruct the new CCI with the updated EPR corresponding to the new next hop to use, and only then instruct the removal of the older CCI ๐
6.3. BGP Prefix Advertisement Procedures โจ
okay so here's the play-by-play for BGP prefix advertisement, using the PCInitiate and PCRpt message pair ๐
The PCInitiate message SHOULD be sent to the PCC that acts as a BGP peer edge router only ๐ In the example, it goes to R1 and R7, respectively.
When the PCC gets the PPA and the CCI object (with the R bit set to 0 in the SRP object) in the PCInitiate message, the PCC SHOULD send the prefixes listed in this object to the identified BGP peer over the matching BGP session [RFC4271] ๐ฆ
Once the PCC has successfully sent the prefixes to the appointed BGP peer, it MUST report the result via PCRpt messages, with the PPA object and the matching SRP and CCI objects included ๐จ
When the PCC gets the PPA and the CCI object with the R bit set to 1 in the SRP object in the PCInitiate message, the PCC MUST withdraw the prefix advertisement to the peer named in this object ๐ โโ๏ธ
When the PCC successfully withdraws the prefixes indicated by this object, it MUST report the result via the PCRpt message, with the PPA object and the matching SRP and CCI objects included ๐
+------------------+
+----------> PCE <-----------+
| +------------------+ |
| +--+ |
+------------------+R3+-------------------+
PCInitiate/PCRpt +--+ PCInitiate/PCRpt
| |
+v-+ +--+ +--+ +-v+
|R1+----------+R5+----------+R6+---------+R7|
++-+ +--+ +--+ +-++
(BGP Router) (BGP Router)
| |
| |
| +--+ +--+ |
+------------+R2+----------+R4+-----------+
+--+ +--+
Figure 7: BGP Prefix Advertisement Procedures
the message peers, message types, key parameters, and procedures in the figure above look like this ๐
+-------+ +-------+
|PCC | | PCE |
|R1 | +-------+
+------| | |
| PCC +-------+ |
| R7 | | (Instruct R1 to advertise Prefix 1_A to R7) |
| | |<-PCInitiate,CC-ID=X,Symbolic Path Name=Class A|
| | | PPA Object(Peer IP=R7_A, Prefix=1_A) |
+--------+ | |
| |----PCRpt,CC-ID=X,Symbolic Path Name=Class A-->|
| | PPA Object(Peer IP=R7_A, Prefix=1_A) |
| |
| (Instruct R7 to advertise Prefix 7_A to R1 ) |
|<--PCInitiate,CC-ID=Z,Symbolic Path Name=Class A-----|
| PPA Object(Peer IP=R1_A, Prefix=7_A) |
|----PCRpt,CC-ID=Z,Symbolic Path Name=Class A-------->|
| PPA Object(Peer IP=R1_A, Prefix=7_A) |
| |
Figure 8: Message Information and Procedures
The AFI/SAFI for the matching BGP session SHOULD match the Peer Prefix Advertisement Object-Type, i.e., AFI/SAFI SHOULD be 1/1 for the IPv4 prefix and 2/1 for the IPv6 prefix. If they don't line up, an error, i.e., Error-Type=33 (Native IP TE failure) and Error-value=5 (BPI/PPA Address Family mismatch), MUST be reported via the PCErr message ๐จ
When the peer info isn't the same as the peer info in the BPI object at the PCC for the same path (identified by the Symbolic Path Name TLV), an error, i.e., Error-Type=33 (Native IP TE failure) and Error-value=6 (PPA/BPI Peer Info mismatch), MUST be reported via the PCErr message. Note that the same error can be used if no BPI is received at the PCC ๐ฅบ
6.4. Selection of the Raw Mode and Tunnel Mode Forwarding Strategy ๐ฆ
normally, once all the procedures above are done, user traffic gets forwarded along the appointed path. BUT the forwarding is based solely on the destination of the user traffic ๐ So if traffic comes into the network from different attachment points but heads to the same destination, they could end up sharing the priority path, which might not be what you wanted. For example, in Figure 1, the goal is for traffic to enter the network via R1 and exit at R7 via R5-R6-R7. If some traffic enters via R2, passes through R5, and exits at R7, it could share the priority path among R5-R6-R7, and that might not be the desired effect ๐ญ
That normal forwarding behavior is called the Raw mode forwarding strategy. It can only give you a moderate level of traffic path control ๐ For strict traffic path control, the entry point MUST tunnel the user traffic from the network's entry point to its exit point, which is also between the BGP peers established via Section 6.1. That forwarding behavior is called the Tunnel mode forwarding strategy. For simplicity, the IP-in-IP tunnel type [RFC2003] is used between the BGP peers by default ๐ง
Picking between Raw mode and Tunnel mode is controlled by the T bit in the BPI object, which is defined in Section 7.2
6.5. Cleanup ๐งน
To remove the Native IP state from the PCC, the PCE MUST send explicit CCI cleanup instructions for PPA, EPR, and BPI objects, respectively, with the R bit set in the SRP object ๐ซถ If the PCC gets a PCInitiate message but doesn't recognize the Native IP information in the CCI, the PCC MUST generate a PCErr message with Error-Type=19 (Invalid Operation) and Error-value=30 (Unknown Native IP Info), and MUST include the SRP object to show the error is for the corresponding cleanup (via a PCInitiate message) ๐
โโ๏ธ
6.6. Other Procedures ๐
State Synchronization, redundant PCEs, redelegation, and cleanup are handled the same way as the other CCIs specified in [RFC9050]. no extra drama here โจ
7. New PCEP Objects ๐
One new CCI Object-Type and three new PCEP objects are defined in this document. All new PCEP objects follow [RFC5440] ๐
7.1. CCI Object ๐ฆ
The Central Control Instructions (CCI) Object (defined in [RFC9050]) is what the PCE uses to specify forwarding instructions. This document defines another Object-Type for Native IP procedures ๐
The CCI Object-Type is 2 for Native IP, 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| CC-ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Reserved | Flags |
+---------------------------------------------------------------+
| |
// Optional TLVs //
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 9: CCI Object for Native IP
The CC-ID field works exactly as described in [RFC9050]. These fields are defined for CCI Object-Type 2 ๐
Reserved: 2 bytes. Set to zero while sending and ignored on receipt.
Flags: 2 bytes. Used to carry any additional information about the Native IP CCI. Right now, no flag bits are defined. Unassigned flags are set to zero while sending and ignored on receipt ๐ธ
Optional TLVs may be included within the CCI object body. The Symbolic Path Name TLV [RFC8231] MUST be included in the CCI Object-Type 2 to identify the E2E TE path in the Native IP environment. That one's non-negotiable, bestie ๐
7.2. BGP Peer Info Object ๐ฆ
okay bestie, the BGP Peer Info (BPI) object is how the PCC tells a router who to set up a BGP session with ๐ It gets sent to the source and destination router of the E2E path when there's no Route Reflection (RR) involved. If an RR is sitting between the source and destination, the info goes to the source router, the RR, and the destination router instead โจ
By default, the Local/Peer IP Address MUST be a unicast address and dedicated to the usage of the Native IP TE solution, and it MUST NOT be used by other BGP sessions that are established by manual or other configuration mechanisms. main character energy for that address, no sharing ๐
The BGP Peer Info Object-Class is 46 ๐
The BGP Peer Info Object-Type is 1 for IPv4 and 2 for IPv6 ๐
The format of the BGP Peer Info object body for IPv4 (Object-Type=1) 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer AS Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETTL | Status | Error Code | Flag |T|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Local IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer IP Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 10: BGP Peer Info Object Body Format for IPv4
The format of the BGP Peer Info object body for IPv6 (Object-Type=2) 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer AS Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETTL | Status | Error Code | Flag |T|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Local IP Address (16 bytes) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Peer IP Address (16 bytes) |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 11: BGP Peer Info Object Body Format for IPv6
Now the fields, the fun part ๐ง
- Peer AS Number: 4 bytes. Indicates the AS number of the Remote Peer. Note that if 2-byte AS numbers are in use, the low-order bits (16 through 31) are used, and the high-order bits (0 through 15) are set to zero. ๐
- ETTL: 1 byte. EBGP Time To Live. Indicates the multi-hop count for the EBGP session. It should be 0 and ignored when Local AS and Peer AS are the same.
- Status: 1 byte. Indicates the BGP session status between the peers. Its values are:
0: Reserved1: BGP Session Established2: BGP Session Establishment In Progress3: BGP Session Down4-255: Reserved
- Error Code: 1 byte. Indicates the reason that the BGP session can't be established. Its values are:
0: Unspecific1: ASes do not match, BGP Session Failure2: Peer IP can't be reached, BGP Session Failure3-255: Reserved
- Flag: 1 byte. Currently, only bit 7 (T bit) is defined. When the T bit is set, the traffic SHOULD be sent in the IP-in-IP tunnel (the tunnel source is the Local IP Address, and the tunnel destination is the Peer IP Address). When the T bit is cleared, the traffic is sent via its original source and destination address. The Tunnel mode (i.e., the T bit is set) is used when the operator wants to ensure only the traffic from the specified (entry, exit) pair, and the Raw mode (i.e., the T bit is clear) is used when the operator wants to ensure traffic from any entry to the specified destination. Unassigned flags are set to zero while sending and ignored on receipt. โจ
- Local IP Address (4/16 bytes): Unicast IP address of the local router, used to peer with another end router. When the Object-Type is 1, the length is 4 bytes; when the Object-Type is 2, the length is 16 bytes.
- Peer IP Address (4/16 bytes): Unicast IP address of the peer router, used to peer with the local router. When the Object-Type is 1, the length is 4 bytes; when the Object-Type is 2, the length is 16 bytes.
- Optional TLVs: TLVs that are associated with this object; can be used to convey other necessary information for dynamic BGP session establishment. No TLVs are currently defined.
When the PCC receives a BPI object, with Object-Type=1, it SHOULD try to establish a BGP session with the peer in AFI/SAFI=1/1 ๐
When the PCC receives a BPI object, with Object-Type=2, it SHOULD try to establish a BGP session with the peer in AFI/SAFI=2/1 ๐
7.3. Explicit Peer Route Object ๐ธ
the Explicit Peer Route (EPR) object is how you specify the explicit peer route to the corresponding peer address on each device on the E2E Native IP TE path ๐ This object ought to be sent to all the devices on the path that are calculated by the PCE.
ngl the name is a little misleading ๐ Although it's called "Explicit Peer Route", the routes it installs are simply host routes. Using this object to install host routes for any other purpose than reaching the corresponding peer address on each device on the E2E Native IP TE path is outside the scope of this specification. not doing that, bestie ๐ซถ
By default, the path established by this object MUST have higher priority than the other paths calculated by the dynamic IGP protocol, and MUST have lower priority than the static route configured by manual, NETCONF, or any other static means. so it sits right in the middle, iykyk ๐
The Explicit Peer Route Object-Class is 47 ๐ฆ
The Explicit Peer Route Object-Type is 1 for IPv4 and 2 for IPv6 โจ
The format of the Explicit Peer Route object body for IPv4 (Object-Type=1) 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Route Priority | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer IPv4 Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Hop IPv4 Address to the Peer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 12: Explicit Peer Route Object Body Format for IPv4
The format of the Explicit Peer Route object body for IPv6 (Object-Type=2) 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Route Priority | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Peer IPv6 Address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Next Hop IPv6 Address to the Peer |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 13: Explicit Peer Route Object Body Format for IPv6
The fields, bestie ๐
- Route Priority: 2 bytes. The priority of this explicit route. The higher priority SHOULD be preferred by the device. This field is used to indicate the preferred path at each hop. ๐ฅ
- Reserved: Set to zero while sending and ignored on receipt.
- Peer (IPv4/IPv6) Address: Peer address for the BGP session (4/16 bytes).
- Next Hop (IPv4/IPv6) Address to the Peer: Indicates the next-hop address (4/16 bytes) to the corresponding peer address.
- Optional TLVs: TLVs that are associated with this object; can be used to convey other necessary information for explicit peer path establishment. No TLVs are currently defined.
7.4. Peer Prefix Advertisement Object ๐
Okay so the Peer Prefix Advertisement (PPA) object is the one that spells out which IP prefixes get advertised to the corresponding peer ๐ฆ. It only needs to be included and sent over to the source/destination router of the E2E path, no extra drama โจ
The prefix info in this object MUST only be advertised to the indicated peer ๐. It SHOULD NOT be advertised to other BGP peers, so keep that between them ๐คซ
The Peer Prefix Advertisement Object-Class is 48 ๐
The Peer Prefix Advertisement Object-Type is 1 for IPv4 and 2 for IPv6 ๐
Here's the layout for the IPv4 version ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Peer IPv4 Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| No. of Prefix | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Prefix #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix #1 Len | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : |
| : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv4 Prefix #n |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix #n Len | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 14: Peer Prefix Advertisement Object Body Format for IPv4
And here's the IPv6 version ๐
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Peer IPv6 Address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| No. of Prefix | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 Prefix #1 |
| |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix #1 Len | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| : |
| : |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IPv6 Prefix #n |
| |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Prefix #n Len | Reserved |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
// Optional TLVs //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 15: Peer Prefix Advertisement Object Body Format for IPv6
Common Fields:
- No. of Prefix: 1 byte. Tells you how many prefixes get advertised to the peer in the PPA object ๐ฆ
- Reserved: 3 bytes. Ought to be set to zero when sending and ignored on receipt ๐ซถ
- Prefix Len: 1 byte. Tells you the length of the prefix ๐
- Optional TLVs: TLVs tied to this object, which can carry other info needed for prefix advertisement. No TLVs are currently defined, so it's a blank canvas for now ๐จ
For IPv4:
- Peer IPv4 Address: 4 bytes. The Peer IPv4 Address the associated prefixes get sent to ๐ฏ
- IPv4 Prefix: 4 bytes. The prefix that gets sent to the peer identified by the Peer IPv4 Address ๐ธ
For IPv6:
- Peer IPv6 Address: 16 bytes. The Peer IPv6 Address the associated prefixes get sent to ๐ฏ
- IPv6 Prefix: The prefix that gets sent to the peer identified by the Peer IPv6 Address ๐ธ
If someday there's a need to advertise IPv4 prefixes toward an IPv6 peering address, or IPv6 prefixes toward an IPv4 peering address, a new Peer Prefix Advertisement Object-Type can be defined for that ๐ฎ
8. New Error-Type and Error-Values Defined โจ
A PCEP-ERROR object is used to report a PCEP error ๐จ. It's characterized by an Error-Type that says what kind of error it is, and an Error-value that gives extra details about it ๐
An additional Error-Type and several Error-values are defined to cover the errors tied to the newly defined objects that relate to Native IP TE procedures ๐. See Table 4 for the newly defined Error-Type and Error-values ๐
9. BGP Considerations ๐ฅ
This document defines procedures and objects to create the BGP sessions and to advertise the associated prefixes dynamically ๐. Only the key info, like Peer IP Addresses and Peer AS numbers, gets exchanged via the PCEP ๐ค. Other parameters needed for the BGP session setup SHOULD be derived from their default values ๐ง
When the PCE sends out the PCInitiate message with the BPI object embedded to establish the BGP session between the PCC peers, the PCC SHOULD report the BGP session status ๐ก. For instance, the PCC could respond with "BGP Session Establishment In Progress" at first, and then, once the session is up, send another PCRpt message with the state updated to "BGP Session Established" โ . If there's any error during the BGP session establishment, the PCC SHOULD indicate the reason with the appropriate status value set in the BPI object ๐
Once the BGP module on the PCC gets that key info, it SHOULD try to get the task the PCEP handed it done ๐ . After the session is set up, it reports the successful status back to the PCEP modules ๐ซง
There's no influence on the current implementation of the BGP Finite State Machine (FSM) ๐. PCEP only focuses on the success and failure status of the BGP session and acts on that info accordingly ๐
The error-handling procedures for incorrect BGP parameters are specified in Sections 6.1, 6.2, and 6.3 ๐
10. Deployment Considerations ๐ธ
The info transferred in this document is mainly used for BGP session setup, explicit route deployment, and prefix distribution ๐ฆ. The planning, allocation, and distribution of the peer addresses within the IGP need to be sorted out in advance. That stuff is out of this document's scope ๐บ๏ธ
The communication between PCE and PCC described here MUST follow the State Synchronization procedures described in [RFC8232], i.e., treat the three newly defined objects (BPI, EPR, and PPA) associated with the same Symbolic Path Name as attributes of the same path in the LSP Database (LSP-DB) ๐
When the PCE detects that one or some of the PCCs are out of its control, it MUST recompute and redeploy the traffic engineering path for Native IP on the currently active PCCs ๐. The PCE MUST ensure that possible transient loops are avoided during such a node failure when it deploys the explicit peer route on the PCCs ๐ก๏ธ
If a PCE fails, a new PCE can gain control over the Central Controller Instructions, as described in [RFC9050] ๐
As per the PCEP procedures in [RFC8281], the State Timeout Interval timer makes sure a PCE failure doesn't cause automatic and immediate disruption for services โฑ๏ธ. Similarly, as per [RFC9050], the Central Controller Instructions aren't removed right away when a PCE fails. Instead, they could be redelegated to the new PCE before this timer expires, or cleaned up when it does ๐งน. That lets network cleanup happen without manual intervention ๐. The PCC supports removing CCI as one of the behaviors applied when the State Timeout Interval timer expires โจ
11. Manageability Considerations ๐
11.1. Control of Function and Policy
A PCE or PCC implementation SHOULD allow the PCECC Native IP capability to be enabled/disabled as part of the global configuration โ๏ธ
11.2. Information and Data Models
[RFC7420] describes the PCEP MIB, and this MIB could be extended to get the PCECC Native IP capability status ๐. The PCEP YANG module [YANG-PCEP] could be extended to enable/disable the PCECC Native IP capability ๐งฉ
11.3. Liveness Detection and Monitoring
The mechanisms defined in this document don't imply any new liveness detection and monitoring requirements beyond those already listed in [RFC5440] ๐. The operator relies on existing IP liveness detection and monitoring ๐
11.4. Verify Correct Operations
Verification of the mechanisms defined here can be built on those already listed in [RFC5440], [RFC8231], and [RFC9050] ๐. Further, the operator needs to be able to verify the status of BGP sessions and prefix advertisements ๐
11.5. Requirements on Other Protocols
The mechanisms defined in this document require interaction with BGP ๐ค. Section 9 goes into detail about the BGP considerations ๐. During BGP session establishment, the Local/Peer IP Address MUST be dedicated to the usage of the Native IP TE solution, and it MUST NOT be used by other BGP sessions that are established manually or in other ways ๐
11.6. Impact on Network Operations
[RFC8821] describes the various deployment considerations in CCDR architecture and their impact on network operations ๐
12. Security Considerations ๐โจ
Okay bestie, so in this setup the PCE is the one running the show ๐. It controls the BGP sessions, the prefix advertisements, and the explicit peer route establishment. For the classic BGP security stuff, check out [RFC4271], and for the classic BGP vulnerabilities analysis, look at [RFC4272]. You also SHOULD consider the security notes in [RFC5440] for basic PCEP, [RFC8231] for the PCEP stateful PCE extension, and [RFC8281] for PCE-initiated LSP setup ๐ .
Now the big one ๐จ. To stop a bogus PCE from sending harmful messages to network nodes, the network devices SHOULD authenticate the PCE and make sure the communication channel between them is secure ๐. So the mechanisms in [RFC8253] for using TLS with PCEP and in [RFC9050] for protection against malicious PCEs SHOULD be used. No cap, this is the part that keeps the whole thing from getting cooked ๐.
If the default values from Section 9 aren't enough, and you need to secure the BGP transport (for example, with the TCP Authentication Option (TCP-AO) [RFC5925]), you can give it a suitable value by adding optional TLVs to the BGP Peer Info object. Those TLVs carry the extra info you need, like a key chain [RFC8177] name ๐๏ธ๐.
13. IANA Considerations ๐๐ธ
13.1. PCEP Path Setup Types
[RFC8408] created the "PCEP Path Setup Types" registry inside the "Path Computation Element Protocol (PCEP) Numbers" registry group. IANA has given this registry one new codepoint, as shown here ๐:
+=======+===================+===========+
| Value | Description | Reference |
+=======+===================+===========+
| 4 | Native IP TE Path | RFC 9757 |
+-------+-------------------+-----------+
Table 1: PCEP Path Setup Types Registry
13.2. PCECC-CAPABILITY Sub-TLV Flag Field
[RFC9050] created the "PCECC-CAPABILITY sub-TLV" registry inside the "Path Computation Element Protocol (PCEP) Numbers" registry group, and its job is to manage the value of the PCECC-CAPABILITY sub-TLV's 32-bit Flag field โจ. IANA has allocated a new bit position in this registry, like so:
+=====+===========+===========+
| Bit | Name | Reference |
+=====+===========+===========+
| 30 | Native IP | RFC 9757 |
+-----+-----------+-----------+
Table 2: PCECC-CAPABILITY
Sub-TLV Registry
13.3. PCEP Objects
IANA has allocated new codepoints in the "PCEP Objects" registry, and they look like this ๐ฆ:
+==============+===================+=============+===========+
| Object-Class | Name | Object-Type | Reference |
| Value | | | |
+==============+===================+=============+===========+
| 44 | CCI Object-Type | 2: Native | RFC 9757 |
| | | IP | |
+--------------+-------------------+-------------+-----------+
| 46 | BGP Peer Info | 0: Reserved | RFC 9757 |
| | Object-Type | | |
| | +-------------+-----------+
| | | 1: IPv4 | RFC 9757 |
| | | address | |
| | +-------------+-----------+
| | | 2: IPv6 | RFC 9757 |
| | | address | |
+--------------+-------------------+-------------+-----------+
| 47 | Explicit Peer | 0: Reserved | RFC 9757 |
| | Route Object-Type | | |
| | +-------------+-----------+
| | | 1: IPv4 | RFC 9757 |
| | | address | |
| | +-------------+-----------+
| | | 2: IPv6 | RFC 9757 |
| | | address | |
+--------------+-------------------+-------------+-----------+
| 48 | Peer Prefix | 0: Reserved | RFC 9757 |
| | Advertisement | | |
| | Object-Type | | |
| | +-------------+-----------+
| | | 1: IPv4 | RFC 9757 |
| | | address | |
| | +-------------+-----------+
| | | 2: IPv6 | RFC 9757 |
| | | address | |
+--------------+-------------------+-------------+-----------+
Table 3: PCEP Objects Registry
13.4. PCEP-Error Objects
IANA has allocated a new Error-Type and several Error-values in the "PCEP-ERROR Object Error Types and Values" registry, which lives inside the "Path Computation Element Protocol (PCEP) Numbers" registry group ๐ซ. Here's the lineup:
+============+==============+==========================+===========+
| Error-Type | Meaning | Error-value | Reference |
+============+==============+==========================+===========+
| 6 | Mandatory | 19: Native IP object | RFC 9757 |
| | Object | missing | |
| | missing | | |
+------------+--------------+--------------------------+-----------+
| 10 | Reception of | 39: PCECC NATIVE-IP-TE- | RFC 9757 |
| | an invalid | CAPABILITY bit is not | |
| | object | set | |
+------------+--------------+--------------------------+-----------+
| 19 | Invalid | 22: Only one BPI, EPR, | RFC 9757 |
| | Operation | or PPA object can be | |
| | | included in this message | |
| | +--------------------------+-----------+
| | | 29: Attempted Native IP | RFC 9757 |
| | | operations when the | |
| | | capability was not | |
| | | advertised | |
| | +--------------------------+-----------+
| | | 30: Unknown Native IP | RFC 9757 |
| | | Info | |
+------------+--------------+--------------------------+-----------+
| 33 | Native IP TE | 0: Unassigned | RFC 9757 |
| | failure | | |
| | +--------------------------+-----------+
| | | 1: Local IP is in use | RFC9757 |
| | +--------------------------+-----------+
| | | 2: Remote IP is in use | RFC 9757 |
| | +--------------------------+-----------+
| | | 3: Explicit Peer Route | RFC 9757 |
| | | Error | |
| | +--------------------------+-----------+
| | | 4: EPR/BPI Peer Info | RFC 9757 |
| | | mismatch | |
| | +--------------------------+-----------+
| | | 5: BPI/PPA Address | RFC 9757 |
| | | Family mismatch | |
| | +--------------------------+-----------+
| | | 6: PPA/BPI Peer Info | RFC 9757 |
| | | mismatch | |
+------------+--------------+--------------------------+-----------+
Table 4: PCEP-ERROR Object Error Types and Values Registry
The reference for each new Error-Type/Error-value should be set to this document ๐.
13.5. CCI Object Flag Field
IANA has created the "CCI Object Flag Field for Native IP" registry to manage the 16-bit Flag field of the new CCI object ๐. New values are to be assigned by IETF Review [RFC8126]. Each bit should be tracked with these qualities:
- bit number (counting from bit 0 as the most significant bit and bit 15 as the least significant bit)
- capability description
- defining RFC
Right now, no flags are assigned ๐.
13.6. BPI Object Status Codes
IANA has created the "BPI Object Status Code Field" registry inside the "Path Computation Element Protocol (PCEP) Numbers" registry group. New values are assigned by IETF Review [RFC8126]. Each value should be tracked with these qualities: value, meaning, and defining RFC. The following values are defined in this document ๐:
+=======+=======================================+===========+
| Value | Meaning | Reference |
+=======+=======================================+===========+
| 0 | Reserved | RFC 9757 |
+-------+---------------------------------------+-----------+
| 1 | BGP Session Established | RFC 9757 |
+-------+---------------------------------------+-----------+
| 2 | BGP Session Establishment In Progress | RFC 9757 |
+-------+---------------------------------------+-----------+
| 3 | BGP Session Down | RFC 9757 |
+-------+---------------------------------------+-----------+
| 4-255 | Unassigned | RFC 9757 |
+-------+---------------------------------------+-----------+
Table 5: BPI Object Status Code Field Registry
13.7. BPI Object Error Codes
IANA has created the "BPI Object Error Code Field" registry inside the "Path Computation Element Protocol (PCEP) Numbers" registry group. New values are assigned by IETF Review [RFC8126]. Each value should be tracked with these qualities: value, meaning, and defining RFC. The following values are defined in this document ๐ง:
+=======+=========================================+===========+
| Value | Meaning | Reference |
+=======+=========================================+===========+
| 0 | Reserved | RFC 9757 |
+-------+-----------------------------------------+-----------+
| 1 | ASes do not match - BGP Session Failure | RFC 9757 |
+-------+-----------------------------------------+-----------+
| 2 | Peer IP can't be reached - BGP Session | RFC 9757 |
| | Failure | |
+-------+-----------------------------------------+-----------+
| 3-255 | Unassigned | RFC 9757 |
+-------+-----------------------------------------+-----------+
Table 6: BPI Object Error Code Field Registry
13.8. BPI Object Flag Field ๐
okay so IANA made a "BPI Object Flag Field" registry ๐ and it lives inside the "Path Computation Element Protocol (PCEP) Numbers" registry group โจ. New values get assigned by IETF Review [RFC8126]. Each bit should be tracked with these three things:
- bit number (counting from bit 0 as the most significant bit)
- capability description
- defining RFC
The following values are defined in this document ๐ฆ:
+=====+==================+===========+
| Bit | Meaning | Reference |
+=====+==================+===========+
| 0-6 | Unassigned |
+-----+------------------+-----------+
| 7 | T (IP-in-IP) bit | RFC 9757 |
+-----+------------------+-----------+
Table 7: BPI Object Flag Field
Registry
14. References ๐
14.1. Normative References
[RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, DOI 10.17487/RFC2003, October 1996, https://www.rfc-editor.org/info/rfc2003.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, https://www.rfc-editor.org/info/rfc2119.
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, January 2006, https://www.rfc-editor.org/info/rfc4271.
[RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, DOI 10.17487/RFC5440, March 2009, https://www.rfc-editor.org/info/rfc5440.
[RFC5511] Farrel, A., "Routing Backus-Naur Form (RBNF): A Syntax Used to Form Encoding Rules in Various Routing Protocol Specifications", RFC 5511, DOI 10.17487/RFC5511, April 2009, https://www.rfc-editor.org/info/rfc5511.
[RFC5925] Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, DOI 10.17487/RFC5925, June 2010, https://www.rfc-editor.org/info/rfc5925.
[RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D., and J. Hardwick, "Path Computation Element Communication Protocol (PCEP) Management Information Base (MIB) Module", RFC 7420, DOI 10.17487/RFC7420, December 2014, https://www.rfc-editor.org/info/rfc7420.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, https://www.rfc-editor.org/info/rfc8126.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/info/rfc8174.
[RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE", RFC 8231, DOI 10.17487/RFC8231, September 2017, https://www.rfc-editor.org/info/rfc8231.
[RFC8232] Crabbe, E., Minei, I., Medved, J., Varga, R., Zhang, X., and D. Dhody, "Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE", RFC 8232, DOI 10.17487/RFC8232, September 2017, https://www.rfc-editor.org/info/rfc8232.
[RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, "PCEPS: Usage of TLS to Provide a Secure Transport for the Path Computation Element Communication Protocol (PCEP)", RFC 8253, DOI 10.17487/RFC8253, October 2017, https://www.rfc-editor.org/info/rfc8253.
[RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, https://www.rfc-editor.org/info/rfc8281.
[RFC8408] Sivabalan, S., Tantsura, J., Minei, I., Varga, R., and J. Hardwick, "Conveying Path Setup Type in PCE Communication Protocol (PCEP) Messages", RFC 8408, DOI 10.17487/RFC8408, July 2018, https://www.rfc-editor.org/info/rfc8408.
[RFC9050] Li, Z., Peng, S., Negi, M., Zhao, Q., and C. Zhou, "Path Computation Element Communication Protocol (PCEP) Procedures and Extensions for Using the PCE as a Central Controller (PCECC) of LSPs", RFC 9050, DOI 10.17487/RFC9050, July 2021, https://www.rfc-editor.org/info/rfc9050.
14.2. Informative References
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, https://www.rfc-editor.org/info/rfc3209.
[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC 4272, DOI 10.17487/RFC4272, January 2006, https://www.rfc-editor.org/info/rfc4272.
[RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., "LDP Specification", RFC 5036, DOI 10.17487/RFC5036, October 2007, https://www.rfc-editor.org/info/rfc5036.
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J. Zhang, "YANG Data Model for Key Chains", RFC 8177, DOI 10.17487/RFC8177, June 2017, https://www.rfc-editor.org/info/rfc8177.
[RFC8283] Farrel, A., Ed., Zhao, Q., Ed., Li, Z., and C. Zhou, "An Architecture for Use of PCE and the PCE Communication Protocol (PCEP) in a Network with Central Control", RFC 8283, DOI 10.17487/RFC8283, December 2017, https://www.rfc-editor.org/info/rfc8283.
[RFC8735] Wang, A., Huang, X., Kou, C., Li, Z., and P. Mi, "Scenarios and Simulation Results of PCE in a Native IP Network", RFC 8735, DOI 10.17487/RFC8735, February 2020, https://www.rfc-editor.org/info/rfc8735.
[RFC8821] Wang, A., Khasanov, B., Zhao, Q., and H. Chen, "PCE-Based Traffic Engineering (TE) in Native IP Networks", RFC 8821, DOI 10.17487/RFC8821, April 2021, https://www.rfc-editor.org/info/rfc8821.
[YANG-PCEP] Dhody, D., Beeram, V. P., Hardwick, J., and J. Tantsura, "A YANG Data Model for Path Computation Element Communications Protocol (PCEP)", Work in Progress, Internet-Draft, draft-ietf-pce-pcep-yang-30, 26 January 2025, https://datatracker.ietf.org/doc/html/draft-ietf-pce-pcep-yang-30.
Acknowledgements ๐ซถ
Thanks to Mike Koldychev, Susan Hares, Siva Sivabalan, and Adam Simpson for their valuable suggestions and comments ๐.
Contributors ๐
Ren Tan and Dhruv Dhody have contributed to this document โจ.
Authors' Addresses ๐ฆ
Aijun Wang
China Telecom
Beiqijia Town, Changping District
Beijing
102209
China
Email: wangaijun@tsinghua.org.cn
Boris Khasanov
MTS Web Services (MWS)
Andropova av., 18/9
Moscow
115432
Russian Federation
Email: bhassanov@yahoo.com
Sheng Fang
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing
China
Email: fsheng@huawei.com
Chun Zhu
ZTE Corporation
50 Software Avenue, Yuhua District
Nanjing
Jiangsu, 210012
China
Email: zhu.chun1@zte.com.cn
๐ฆ where this page comes from
- ietf: rfc9757 2025-03
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms