PCEP configuration

There is a list of necessary elements to know when setting up a PCEP framework.

PCEP overview

PCEP (Path Computation Element Protocol) is a TCP based protocol used between path computation elements. The documentation focuses on the communication between the path computation client (PCC) and the path computation element (PCE). The PCE is responsible for computing and determining paths in a network, while the PCC stands for the router in charge of forwarding or switching the traffic. Generally, the PCC requests path computations to the PCE for head-end LSPs sourced from the PCC. The PCC can also act passively, while the PCE will take control of the PCC, updating the LSPs with the PCEP protocol too.

PCEP allows the PCC to communicate its requirements and constraints to the PCE, which will compute requested paths.

The Virtual Service Router uses the PCEP protocol and implements the PCC side to create SR policies in MPLS segment routing networks.

There are multiple advantages to using the PCEP protocol with a PCE server:

  • PCE allows for a centralized approach, and is responsible for computing and optimizing paths in the network. This centralization enables better coordination and control over path decisions, leading to more efficient resource utilization, like using under-used links in the topology, or separating high priority from best effort flows.

  • PCE can be used for inter-domain path computation, enabling coordination between different network domains. This is particularly valuable in large-scale networks where traffic may traverse multiple domains.

PCE overview

A PCE requires certain information to perform path computations effectively. The traffic engineering database (TED) is part of this information and contains the topology and resource information of the domain. The TED may be fed by IGP extensions from the IS-IS protocol. In order to aggregate topology information from multiple domains, the BGP link state protocol may be used to convey this information to the server.

More information about BGP-LS protocol: :ref: BGP Link State <routing-bgp-ls>

Note

Virtual Service Router does not support the BGP-LS speaker mode, which may be necessary for sending link-state information to a PCE server.

A PCE controller has multiple working modes, and the PCC functionality of the Virtual Service Router is able to cooperate in the below mentioned working modes.

When a dynamic candidate path is configured and selected on the PCC, path computation request messages are sent for each computation request. The PCE tries to compute the path and either sends a positive path computation reply with the explicit route object (ERO) containing the LSP information; or the PCE sends a negative path computation reply message, indicating that no LSP path could be provided. More information about dynamic candidate path configuration.

This way of working is called the stateless mode: the LSP policy state of each PCC is not known by the PCE, there is no ongoing state information stored on the PCE, all the PCC requests are processed independently. Stateless PCE is simpler but may not be as adaptive to real-time changes in the network.

When working in stateful mode, in addition to replying to requests of the PCCs, the PCE maintains synchronised information about the network’s current state of each PCC, at each LSP policy operational status change. If the PCE has the stateful capability, then the PCC sends lsp state report messages, to inform about the LSP status changes. Stateful PCE allows for better control and optimization of paths based on real-time network conditions. For instance, the lsp state report messages optionally include a recorded route object (RRO), which gives information to the PCE about the LSP information that the PCC knows, about how to steer colored traffic up to the endpoint. This information is used by the PCE to better syncronise with the PCC.

The active stateful mode mode is a sub-mode of the stateful mode. When the delegation bit of a report message LSP is set to 1, The PCE is allowed to send multiple path communication update messages to the PCC. Those messages update the dynamic LSP policy, whenever a change in the synchronised information is detected by the PCE.

There is an additional working mode called pce-initiated lsp setup where the PCC exchanges an additional capability that authorises PCE to create LSPs instead of only relying on the PCC configured LSP policies. An example consists in letting the PCE to create the whole policies, by means of the PCEP protocol. More information about delegated mode configuring delegated mode in pcc.

PCC configuration

PCC Server configuration

The below configuration establishes a PCEP communication with the 192.0.2.10 and the 192.0.2.20 PCE controllers. By default, the PCEP protocol operates over the TCP destination port 4189.

vsr running config# vrf main
vsr running vrf main# interface physical eth0
vsr running physical eth0# ipv4 address 192.0.2.1/24
vsr running physical eth0#
vsr running vrf main# routing segment-routing
vsr running segment-routing# enabled true
vsr running segment-routing# traffic-engineering
vsr running traffic-engineering# pcep
vsr running pcep# pcc
vsr running pcc# pce server1
vsr running pce server1# server 192.0.2.10 port 4189
vsr running pce server1# source 192.0.2.1 port 10001
vsr running pce server1# priority 10
vsr running pce server1# ..
vsr running pcc# pce server2
vsr running pce server2# server 192.0.2.20 port 4189
vsr running pce server2# source 192.0.2.1 port 10002
vsr running pce server2# priority 5
vsr running pce server2# commit

The below command dumps the status of the PCEP session with the PCE controller:

vsr> show segment-routing pcep session
2 session(s) configured.
2 session(s) connected.
Name    Status        Address    Port Connected since PCE keepalive PCE dead-timer Primary PCE confidence
====    ======        =======    ==== =============== ============= ============== ======= ==============
server1 up            192.0.2.10 4189 04m53s          30s           02m00s         True    normal
server2 up            192.0.2.20 4189 05m53s          30s           02m00s         False   normal

The Primary information tells which PCE effectively replies to PCE requests from the PCC. Only the established connection with the lowest priority will be the primary server. When the primary PCE fails, the PCC will synchronise its state with the secondary PCE. The secondary PCE will be considered as the primary one.

The below command dumps the capabilities exchanged between the PCC and the PCE devices.

vsr> show segment-routing pcep session capability

Name    Type Capabilities
====    ==== ============
server1 PCE  sr-te-pst stateful-pce
server1 PCC  pcc-initiated-lsps sr-te-pst stateful-pce
server2 PCE  sr-te-pst stateful-pce
server2 PCC  pcc-initiated-lsps sr-te-pst stateful-pce

To maintain the connectivity, keepalive PCEP messages are sent when no other PCEP message is sent. A keepalive frequency interval value is exchanged in PCEP open messages. The keepalive-interval configurable parameter determines the PCC transmitted frequency interval. Reversely, the keepalive-peer-min-interval and keepalive-peer-max-interval values control the acceptable keepalive value sent by the PCE: when out of range, the PCC will not establish the PCEP connection. By default, the PCC keepalive value is set to 30 seconds.

A similar control mechanism is present for the dead-interval value which stands for the time a PCC waits before considering a PCEP session down when no PCEP messages are received. By default, the PCE dead interval timer value is set to 120 seconds.

The below configuration changes the default timer values.

vsr running config# vrf main
vsr running vrf main# routing segment-routing
vsr running segment-routing# traffic-engineering
vsr running traffic-engineering# pcep
vsr running pcep# pcc
vsr running pcc# pce server1
vsr running pce server2# timer keepalive-interval 45
vsr running pce server2# timer keepalive-peer-min-interval 60
vsr running pce server2# timer keepalive-peer-max-interval 90
vsr running pce server2# timer dead-interval 45
vsr running pce server2#

PCC segment-routing capability announcement

In a PCEP communication, each device sends its own capability in the PCEP open message. By default, the Virtual Service Router sends the segment routing capability as a sub-tlv in the path setup type capability TLV, as per RFC 8664. This option is not well understood by some PCE vendors that implement an alternative tlv as depicted in draft-ietf-pce-segment-routing-07. The pce-segment-routing draft-ietf-07 command facilitates the interoperability with those PCE vendors.

vsr running vrf main# routing segment-routing
vsr running segment-routing# enabled true
vsr running segment-routing# traffic-engineering
vsr running traffic-engineering# pcep
vsr running pcep# pcc
vsr running pcc# pce server1
vsr running pce server1# server 192.0.2.10 port 4189
vsr running pce server1# source 192.0.2.1 port 10001
vsr running pce server1# priority 10
vsr running pce server1# pce-segment-routing draft-ietf-07
vsr running pce server1#

PCC configuration in delegated mode

When operating in stateful mode, the PCE can be configured to create LSP policies on each PCC. The below pce-initiated command adds a new PCC capability named pcc-and-pce-initiated-lsps that will be used by PCE to send initiated LSPs.

vsr running vrf main# routing segment-routing
vsr running segment-routing# enabled true
vsr running segment-routing# traffic-engineering
vsr running traffic-engineering# pcep
vsr running pcep# pcc
vsr running pcc# pce server1
vsr running pce server1# server 192.0.2.10 port 4189
vsr running pce server1# source 192.0.2.1 port 10001
vsr running pce server1# priority 10
vsr running pce server1# pce-initiated
vsr running pce server1#
vsr> show segment-routing pcep session capabilities

Name    Type Capabilities
====    ==== ============
server1 PCE  sr-te-pst stateful-pce
server1 PCC  pcc-and-pce-initiated-lsps sr-te-pst stateful-pce

No additional SR-TE configuration is required by the PCE to completely take the control of the LSP policies of the PCC.

PCC maximum sid depth control

When computing a path, the PCE needs to take into account the maximum number of labels that a PCC can support. The msd value is a PCEP parameter sent to the PCE, that stands for the maximum number of label stack that a computed LSP should have on the PCC device. This value is set to 4 by default and can be modified:

vsr running vrf main# routing segment-routing
vsr running traffic-engineering# pcep
vsr running pcep# pcc
vsr running pcc# msd 8
vsr running pce server1# server 192.0.2.10 port 4189
vsr running pce server1#