PCEP configuration

Summary

This section describes PCEP configuration. Traffic Dictator uses PCEP to advertise SR-TE and RSVP-TE policies.

Basic PCEP configuration

The minimal PCEP configuration requires at least one neighbor. Both IPv4 and IPv6 are supported. Example configuration:

router pcep
   !
   neighbor 192.168.0.101

Verify neighbor state

TD1#show pcep summary 
PCEP summary information
  Neighbor             V    Session ID      SRP ID      MsgRcvd  MsgSent      InQ     OutQ      Up/Down    State       
  192.168.0.101        1    0/1             4                33       30        0        0      0:12:05    SessionUp

For more detailed information, run “show pcep neighbors”:

TD1#show pcep neighbors 
PCEP neighbor is 192.168.0.101, port 35273
  PCEP version 1
  Last read 0:00:19, last write 0:00:24
  Hold time is 120, keepalive interval is 30 seconds
  Configured hold time is 120, keepalive interval is 30 seconds
  Hold timer is active, time left 0:01:41
  Keepalive timer is active, time left 0:00:06
  Connect timer is inactive
  Idle hold timer is inactive
  PCEP state is SessionUp, up for 0:12:26
  Number of transitions to SessionUp: 1
  Last state was KeepWait

  Local session ID: 0, remote session ID: 1
  Current SRP ID: 4

  Negotiated capabilities:
    disjoint, sr-policy

                         Sent       Rcvd
    Opens:                  1          1
    Keepalives:            26         22
    PCRequests:             0          0
    PCReplies:              0          0
    Notifications:          0          0
    Errors:                 0          0
    Closes:                 0          0
    PMRequests:             0          0
    PMReplies:              0          0
    PCReports:              0         11
    PCUpdates:              2          0
    PCInitiates:            1          0
    StartTLS:               0          0

    Total messages:        30         34

  NLRI statistics:
                                    Sent       Rcvd
    IPv4 SR-TE:                        1          0
    IPv6 SR-TE:                        0          0
    IPv4 RSVP-TE:                      0          0
Local IP is 192.168.0.1
TTL is 255

SR policy capability

Note “sr-policy” among negotiated capabilities in the previous output. This must be negotiated in Open messages in order for TD to be able to advertise SR-TE color. If the neighbor doesn’t negotiate this capability, TD will not advertise color and, depending on PCC implementation, the policy will be either without color or with color 4294967295.

Check PCEP routing table

SR-TE LSP

TD1#show pcep ipv4 sr-te 
PCEP SR-TE routing table information
Status codes: * acked, > up/active, + - inserted, z - zombie

          NLRI                                      PLSP-ID    Oper status
*>+       [96][16777234][109][9.9.9.9]                    1    Active (2)  
  
TD1#show pcep ipv4 sr-te detail 
PCEP SR-TE routing table information

PCEP routing table entry for [96][16777234][109][9.9.9.9]
    Policy name: R1_R9_EP_STRICT_IPV4
    Headend: 1.1.1.1
    Endpoint: 9.9.9.9, Color 109
    Install peer: 192.168.0.101
    Last modified: February 04, 2025 16:00:20
      Route acked by PCC, PLSP-ID 1
        LSP-ID     Oper status
             4      Active (2)
      Metric type igp, metric 30
      Binding SID: 15008
      Segment list: [16002, 16009]

RSVP-TE LSP

TD1#show pcep ipv4 rsvp-te 
PCEP RSVP-TE routing table information
Status codes: * acked, > up/active, + - inserted, z - zombie

          NLRI                                      PLSP-ID    Oper status
*>+       [16777234][9.9.9.9]                             3    Active (2)    
TD1#show pcep ipv4 rsvp-te detail 
PCEP RSVP-TE routing table information

PCEP routing table entry for [16777234][9.9.9.9]
    Policy name: R1_R9_EP_STRICT_IPV4
    Headend: 1.1.1.1
    Endpoint: 9.9.9.9
    Install peer: 192.168.0.101
    Last modified: February 04, 2025 17:04:59
      Route acked by PCC, PLSP-ID 3
        LSP-ID     Oper status
             0        Down (0)
             2      Active (2)
      Metric type igp, metric 40
      RSVP ERO: ['10.100.3.5', '10.100.9.8', '10.100.12.10', '10.100.21.9']

Unlike BGP, PCEP is a stateful protocol which means the PCC (router) acknowledges LSP and updates Oper status using PCReport messages. In the outputs above, LSPs have been acknowledged and Oper status is Active. Depending on PCC implementation, you might see (or not) multiple LSP-ID with different status.

Clear or shutdown BGP neighbors

TD1#conf
TD1(config)#router pcep
TD1(config-router-pcep)#neighbor 192.168.0.101
TD1(config-router-pcep-nbr)#shut
TD1(config-router-pcep-nbr)#do sh pcep su
PCEP summary information
  Neighbor             V    Session ID      SRP ID      MsgRcvd  MsgSent      InQ     OutQ      Up/Down    State       
  192.168.0.101        1    1/0             1                 0        1        0        0      Never      Idle(Admin) 

Reset PCEP session

TD1#clear pcep ?
  <ipv4|ipv6|*>        Reset PCEP sessions

LSP deletion and session reset

According to [RFC8281], in order to delete the LSP, PCE should sends PCInitiate with relevant PLSP-ID, and PLSP-ID 0 informs the PCC to delete all LSP.

Since this could lead to accidental withdrawal of all LSP if just one LSP wasn’t acked by PCC for some reason, TD does not delete LSP for which PCC did not assign PLSP-ID (which could happen due to bug or unsupported feature on PCC). Instead, such LSP are marked as zombies and will rot in the routing table until the PCEP session is shutdown or cleared.

Another problem is that if the PCEP session goes down, existing PCC implementations don’t immediately delete all LSP advertised by dead PCE, like any normal routing protocol would do in this situation. This can not only lead to stale LSP, but also when the session comes up again and PCE advertises the LSP, PCC would reject them with “Symbolic path in use” error.

In order to prevent this, when you shutdown or clear a PCEP session, TD always sends PCInitaite with PLSP-ID 0 to delete all LSP, before closing the session.

Advanced PCEP neighbor configuration

Traffic Dictator has some other configuration options for BGP session.

Adjust keepalive and hold timers (default are 30 and 120):

TD1(config-router-pcep-nbr)#timers 10 40

Enable passive mode (only accept connections but don’t initiate session):

TD1(config-router-pcep-nbr)#passive