Traffic Dictator v1.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 gbps

Now let’s check detailed policy output:

knecht#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

knecht#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 miliseconds

 

Note 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

1. 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.

2. Disjoint-groups are not supported with explicit path option.

Bug fixes and improvements

1. 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.

2. 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.

3. Added PCEP commands to “show tech”.

Download

You can download the new version of Traffic Dictator from the Downloads page.

Leave a Comment