Traffic Dictator 1.4 Release Notes
Summary
Traffic Dictator version 1.4 has been released on 21.03.2025. This article describes changes in the new version.
New feature: disjoint-group
Disjoint-group ensures that multiple policies that are in the same group never use the same links. Common use case is have 2 redundant traffic flows with guarantee that if any link in the network fails, one of the traffic flows will be unaffected.
Config model:
traffic-eng policies
policy [name]
!
candidate-path preference <0-4294967295>
disjoint-group <1-65535>Example:

In this topology, policies “R1_R5” and “R1_R5_disjoint” are configured with the same disjoint-group. Config:
traffic-eng policies
!
policy R1_R5
headend 1.1.1.1 topology-id 101
endpoint 5.5.5.5 color 101
binding-sid 966668
priority 7 7
install direct srte 192.168.123.101
!
candidate-path preference 100
metric te
disjoint-group 100
bandwidth 1 gbps
!
policy R1_R5_disjoint
headend 1.1.1.1 topology-id 101
endpoint 5.5.5.5 color 102
binding-sid 966670
priority 7 7
install direct srte 192.168.123.101
!
candidate-path preference 100
metric te
disjoint-group 100
bandwidth 1 gbpsNow let’s check detailed policy output:
TD1#show traffic-eng policy R1_R5 detail
Detailed traffic-eng policy information:
Traffic engineering policy "R1_R5"
Valid config, Active
Headend 1.1.1.1, topology-id 101, Maximum SID depth: 6
Endpoint 5.5.5.5, color 101
Endpoint type: Node, Topology-id: 101, Protocol: isis, Router-id: 0005.0005.0005.00
Setup priority: 7, Hold priority: 7
Reserved bandwidth bps: 1000000000
Install direct, protocol srte, peer 192.168.123.101
Policy index: 5, SR-TE distinguisher: 16777221
Binding-SID: 966668
Candidate paths:
Candidate-path preference 100
Path config valid
Metric: te
Disjoint-group: 100
Path-option: dynamic
This path is currently active
Calculation results:
Aggregate metric: 1000
Topologies: ['101']
Segment lists:
[900003, 900005]
Policy statistics:
Last config update: 2025-03-21 08:51:57,634
Last recalculation: 2025-03-21 08:51:58.285
Policy calculation took 0 miliseconds
TD1#show traffic-eng policy R1_R5_disjoint detail
Detailed traffic-eng policy information:
Traffic engineering policy "R1_R5_disjoint"
Valid config, Active
Headend 1.1.1.1, topology-id 101, Maximum SID depth: 6
Endpoint 5.5.5.5, color 102
Endpoint type: Node, Topology-id: 101, Protocol: isis, Router-id: 0005.0005.0005.00
Setup priority: 7, Hold priority: 7
Reserved bandwidth bps: 1000000000
Install direct, protocol srte, peer 192.168.123.101
Policy index: 6, SR-TE distinguisher: 16777222
Binding-SID: 966670
Candidate paths:
Candidate-path preference 100
Path config valid
Metric: te
Disjoint-group: 100
Path-option: dynamic
This path is currently active
Calculation results:
Aggregate metric: 1000
Topologies: ['101']
Segment lists:
[900002, 900005]
Policy statistics:
Last config update: 2025-03-21 08:51:57,634
Last recalculation: 2025-03-21 08:51:58.285
Policy calculation took 0 milisecondsNote that these 2 policies have different segment lists, even though the candidate path option is the same. This is because TD keeps track of links used for policies in a disjoint-group and when calculating another policy with the same disjoint group, these links are excluded when running CSPF.
Disjoint-groups are supported with SR-TE and RSVP-TE policies; it is also possible to put SR-TE and RSVP-TE policies in the same disjoint-group.
Limitations
- When calculating a policy with disjoint-group, TD doesn’t use ECMP. This is an obvious design decision because if the path has ECMP links, different disjoint policies can just use different links.
- Disjoint-groups are not supported with explicit path option.
Bug fixes and improvements
- When there is a lot of BGP-LS route churn, sometimes policy engine would send bandwidth reservation update for non-existing links or topologies (bug #40). This was a race condition between different Kafka topics. Fixed by putting all topology updates in the same topic so now it’s strictly consequential.
- Incorrect parsing of BGP Peer SID routes from some implementations (bug #41). Some vendors send the same TLV twice in a Peer SID BGP-LS route and that caused a problem with parsing. Fixed now.
- Added PCEP commands to “show tech”.
Download
You can pull the latest TD version from Docker Hub:
sudo docker pull vegvisirsystems/td:latest