Summary
Traffic Dictator version 1.3 has been released on 04.02.2025. This article describes changes in the new version.
New feature: PCEP
Path Computation Element Protocol (PCEP) is another method of installing SR-TE policies, in addition to BGP-LU and BGP SR-TE. The advantage of PCEP is that it’s stateful – i.e. PCC (router) reports policy state to PCE (controller).
New config:
router pcep ! neighbor <ipv4|ipv6> description <name> timers <ka> <hold> passive shutdown
Example config:
router pcep ! neighbor 192.168.0.101 ! traffic-eng policies ! policy R1_R9_EP_STRICT_IPV4 headend 1.1.1.1 topology-id 101 endpoint 9.9.9.9 color 109 binding-sid 15008 priority 4 4 install direct pcep 192.168.0.101 ! candidate-path preference 100 explicit-path R2_R6_R9_STRICT bandwidth 100 mbps
Verify neighbor status:
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 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
Verify policy status and PCEP route:
TD1#show traffic-eng policy R1_R9_EP_STRICT_IPV4 Traffic-eng policy information Status codes: * valid, > active, r - RSVP-TE, e - EPE only, s - admin down, m - multi-topology Endpoint codes: * active override Policy name Headend Endpoint Color/Service loopback Protocol Reserved bandwidth Priority Status/Reason *> R1_R9_EP_STRICT_IPV4 1.1.1.1 9.9.9.9 109 PCEP/direct 100000000 4/4 Active
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]
PCEP limitations and caveats
PCEP is not a simple protocol like BGP-LU or BGP SR-TE. Standard are vague, different vendors interpret things differently and no implementation supports everything.
TD aims for best compatibility with all vendors but it’s not an easy task. BGP-LU and BGP SR-TE are the recommended protocols to install SR-TE policies due to their simplicity and compatibility out of the box with most vendors.
Only PCE-initiated LSP are supported in first phase
As of 1.3, TD can initiate (PCInitiate) and update (PCUpdate) SR and RSVP LSP, it can also receive PCReports to update LSP status – only for PCE-initiated LSP. Reports for LSP not initiated by TD are ignored.
Support for PCC-initiated LSP is planned in the future.
Only one segment list is supported
Despite almost 50 RFC regulating PCEP as of now, they still haven’t standardized multipath. There is [draft-ietf-pce-multipath] but due to lack of vendor support, TD does not implement multipath yet. However, TD will prefer anycast SID whenever possible, so in some cases multipath can be expressed in one segment list with anycast SID.
Color advertisement in PCEP
The way to advertise SR-TE color via PCEP has not been standardized yet either. Some vendors support [draft-ietf-pce-segment-routing-policy-cp] and TD supports this as well, however it requies SR policy association to be negotiated in PCEP Open messages. Check if it’s negotiated:
TD1#show pcep neighbors | grep -A1 Negotiated Negotiated capabilities: disjoint, sr-policy
If it’s not negotiated, TD will not advertise color and depending on PCC implementation, it will be either a colorless policy or a policy with color 4294967295.
LSP status acknowledgement
There is a lot of vagueness about how exactly PCC acknowledges LSP status and what different status codes mean exactly.
TD aims for best compatibility so it keeps track of both PLSP-ID and LSP-ID assigned by PCC. If the PCC advertises multiple LSP-ID for the same LSP, TD prints the “best” status in show commands. Sometimes it’s possible to see multiple transient LSP during route updates (make before break on PCC):
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 3 Active (2) 4 Active (2) Metric type igp, metric 30 Binding SID: 15008 Segment list: [16002, 16009] 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]
Some PCC don’t bother with make before break so there will be always just one LSP.
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.
New feature: RSVP-TE LSP
In addition to SR-TE and EPE policies, TD can also calculate and advertise RSVP-TE LSP.
Configuration example:
traffic-eng policies ! policy R1_R9_EP_STRICT_IPV4 headend 1.1.1.1 topology-id 101 endpoint 9.9.9.9 service-loopback 9.9.9.9 rsvp-te priority 7 7 install direct pcep 192.168.0.101 ! candidate-path preference 100 explicit-path R5_R8_R10 bandwidth 100 mbps
Verify:
TD1#show traffic-eng policy R1_R9_EP_STRICT_IPV4 Traffic-eng policy information Status codes: * valid, > active, r - RSVP-TE, e - EPE only, s - admin down, m - multi-topology Endpoint codes: * active override Policy name Headend Endpoint Color/Service loopback Protocol Reserved bandwidth Priority Status/Reason r*> R1_R9_EP_STRICT_IPV4 1.1.1.1 9.9.9.9 9.9.9.9 PCEP/direct 100000000 7/7 Active TD1#show traffic-eng policy R1_R9_EP_STRICT_IPV4 detail Detailed traffic-eng policy information: Traffic engineering policy "R1_R9_EP_STRICT_IPV4" Valid config, Active This is an RSVP-TE policy Headend 1.1.1.1, topology-id 101 Endpoint 9.9.9.9, service-loopback 9.9.9.9 Endpoint type: Node, Topology-id: 101, Protocol: isis, Router-id: 0009.0009.0009.00 Setup priority: 7, Hold priority: 7 Reserved bandwidth bps: 100000000 Install direct, protocol pcep, peer 192.168.0.101 Policy index: 18, SR-TE distinguisher: 16777234 Binding-SID: 15008 Candidate paths: Candidate-path preference 100 Path config valid Metric: igp Path-option: explicit Explicit path name: R5_R8_R10 This path is currently active Calculation results: Aggregate metric: 40 Topologies: ['101'] RSVP ERO: ['10.100.3.5', '10.100.9.8', '10.100.12.10', '10.100.21.9'] Policy statistics: Last config update: 2025-02-04 17:04:58,797 Last recalculation: 2025-02-04 17:04:59.105 Policy calculation took 0 miliseconds5 Policy calculation took 0 miliseconds
Instead of segment list like with SR-TE policies, TD advertises RSVP ERO.
Only PCEP is supported a protocol to install RSVP-TE policies.
Check PCEP route:
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']
Service loopback for RSVP-TE policies
In the example above, endpoint and service loopback is the same. Since service-loopback is a replacement for color in SR-TE policies to be used with BGP-LU; and the traditional MPLS-TE architecture doesn’t have color-based steering, normally it’s not possible to steer traffic from different services into different RSVP-TE LSP with the same endpoint.
However, with Traffic Dictator, it is possible to configure a service loopback to be different from endpoint, so that the service loopback is not advertised into IGP. Some RSVP implementations allow to singal the LSP towards the endpoint that is not advertised in IGP, in this case it’s possible to use an architecture similar to color-only steering, but with traditional MPLS-TE.
Caveats and limitations
All the caveats related to PCEP SR-TE LSP, also apply to RSVP-TE LSP. In addition to that:
RSVP-TE LSP are always advertised with bandwidth 0
TD keeps internal database of bandwidth for all SR-TE, RSVP-TE and EPE policies. Provisioning RSVP-TE LSP with bandwidth would lead to a lot of churn in IGP and possible double-reservations.
RSVP-TE LSP with EPE endpoint are not supported
Since RSVP-TE is stateful, it’s not possible to just add one extra lable like with SR-TE. But it’s possible to configure 2 separate policies: RSVP-TE and EPE-only resolving via RSVP-TE.
Bug fixes and improvements
1. API idempotency (bug #32). Starting from 1.3, HTTP API is idempotent and the same request sent multiple times will give the same result.
2. API atomic config support (bug #33). Starting from 1.3, HTTP API operations are atomic and the entire request will either succeed or fail.
3. API scale improvements (bug #34). In 1.3, API has been improved to support larger configs. Current tested scale is up to 20k SR-TE policies.
4. BGP FSM: If neighbor has very small ConnectRetryTimer, TD keeps resetting IdleHoldTimer so it never expires (bug #35). Fixed in 1.3, now IdleHoldTimer never resets when BGP state is Idle.
5. 1-hop BGP-LU policies sent with an empty label stack (bug #36). When BGP-LU is used as a protocol to install SR-TE policies, TD checks if the first SID in the segment list belongs to the router directly connected to the policy headend. If yes, TD removes first label because BGP-LU uses BGP nexthop to resolve first hop (unlike BGP SR-TE which uses first label). When a policy is just one hop, this behaviour results in an empty label stack being sent.
Fixed in 1.3, now label 3 (imp-null) is sent instead of an empty label stack.
Download
You can download the new version of Traffic Dictator from the Downloads page.