Summary
Traffic Dictator version 1.2 has been released on 06.09.2024. This article describes changes in the new version.
New feature: unique SR-TE distinguisher per policy
BGP SR-TE NLRI has a 4-byte field called “distinguisher”. It is similar to route distinguisher in MPLS VPN and EVPN and is used to separate different NLRI from the BGP perspective.
Traffic Dictator uses distinguisher for 2 purposes:
- Separate policies with different headend but same endpoint and color.
- Facilitate redundancy when multiple controllers advertise the same policy with different distinguishers.
In versions 1.0 and 1.1, all policies used the same distinguisher which was configured under “router general”. Starting from 1.2, you can configure a Global SR-TE distinguisher under “router general” which is useful for redundancy in deployments with multiple controllers.
When generating SR-TE distinguisher for each policy, Traffic Dictator takes first byte from the configured global value (under router general), and the next 3 bytes are auto-generated from policy index. E.g. if configured distinguisher is 1, and first policy has index 0, the distinguisher will be 16777216 (0x01000000) and so on.
This ensures that each NLRI is unique even if multiple policies have the same endpoint and color, but are calculated for different headends.
Sample output:
TD1#sh bgp ipv4 srte
BGP-SRTE routing table information
Router identifier 111.111.111.111, local AS number 65001
Status codes: * valid, > best, + - inserted
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPref Weigth Path
*>+ [96][16777221][6][0.0.0.0] - 0 - 0 i
*>+ [96][16777220][7][0.0.0.0] - 0 - 0 i
*>+ [96][16777216][3][1.1.1.1] - 0 - 0 i
*>+ [96][16777226][8][9.9.9.9] - 0 - 0 i
*>+ [96][16777217][5][10.100.19.104] - 0 - 0 i
*>+ [96][16777225][2][11.11.11.11] - 0 - 0 i
*>+ [96][16777223][9][11.11.11.11] - 0 - 0 i
*>+ [96][16777224][10][11.11.11.11] - 0 - 0 i
If global SR-TE distinguisher changes:
TD1#conf
TD1(config)#router general
TD1(config-router-general)#srte distinguisher 2
TD1(config-router-general)#end
TD1#sh bgp ipv4 srte
BGP-SRTE routing table information
Router identifier 111.111.111.111, local AS number 65001
Status codes: * valid, > best, + - inserted
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPref Weigth Path
*>+ [96][33554437][6][0.0.0.0] - 0 - 0 i
*>+ [96][33554436][7][0.0.0.0] - 0 - 0 i
*>+ [96][33554432][3][1.1.1.1] - 0 - 0 i
*>+ [96][33554442][8][9.9.9.9] - 0 - 0 i
*>+ [96][33554433][5][10.100.19.104] - 0 - 0 i
*>+ [96][33554441][2][11.11.11.11] - 0 - 0 i
*>+ [96][33554439][9][11.11.11.11] - 0 - 0 i
*>+ [96][33554440][10][11.11.11.11] - 0 - 0 i
Distinguisher for labeled unicast policies
When BGP-LU is used to distribute policies, distinguisher is also used. There is no distinguisher field in BGP-LU NLRI so it’s not advertised anywhere, but used internally by Traffic Dictator to ensure each policy is unique in BGP-LU RIB. Also it separates BGP-LU routes generated from policies from BGP-LU routes received from the network (e.g. routes with EPE labels).
Sample output:
BGP-LS routing table information
Router identifier 111.111.111.111, local AS number 65001
Status codes: * valid, > best, + - inserted
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPref Weigth Path
*> 10.100.16.101/32 192.168.0.102 0 100 0 65002 ?
*> 10.100.17.102/32 192.168.0.106 0 100 0 65002 ?
*> 10.100.18.103/32 192.168.0.105 0 100 0 65002 ?
*> 10.100.19.104/32 192.168.0.111 0 100 0 65002 ?
*> 10.100.20.105/32 192.168.0.111 0 100 0 65002 ?
*>+ [16777218][103.11.11.11/32] - 0 - 0 i
*>+ [16777222][100.11.11.11/32] - 0 - 0 i
*>+ [16777219][102.11.11.11/32] - 0 - 0 i
In this example, routes with distinguisher are SR-TE or EPE policies distributed by BGP-LU, while regular routes are EPE routes received from the network.
Also, updated the “Edge Routing Optimization with SR” white paper to reflect this change. Check the Egress Peer Engineering solution page for details and the lab setup.
New CLI shortcuts
Versions 1.0 and 1.1 supported the most commonly used CLI shortcuts like context help, autocomplete etc. Version 1.2 brings all common CLI shortcuts normally found in unix shell and network devices CLI. Below is the complete list:
| ? | Context help |
| Tab | Autocomplete |
| Ctrl-C (or Ctrl-Z) | Erase line / if in config mode – exit to exec |
| Ctrl-A | Goto BEGINNING of command line |
| Ctrl-E | Goto END of command line |
| Ctrl-B (or left arrow) | Move back one character |
| Ctrl-F (or right arrow) | Move forward one character |
| Up arrow | Get historic command |
| Down arrow | Get previous historic command |
| Ctrl-D | Delete the character under the cursor; if line is empty – exit shell |
| Ctrl-U | Clear all / cut BEFORE cursor |
| Ctrl-K | Clear all / cut AFTER cursor |
| Ctrl-W | delete the word BEFORE the cursor |
| Ctrl-L | Clear the screen |
| Ctrl-T | Swap the last two characters before the cursor |
Bug fixes and improvements
1. Fixed the bug where Traffic Dictator crashed if the startup-config started from an empty line.
2. Fixed the bug where CLI got corrupted if an unsupported CLI shortcut was used. Now unknown shortcuts or characters are ignored.
Download
You can download the new version of Traffic Dictator from the Downloads page.