The LSP attribute set feature allows you to apply attributes to individual path-options instead of to the TE tunnel as a whole. This allows you to do complex logic such as “if the previous path-option is not valid, try with affinity set to <value>.” You can have the router try to remove constraints as previous path-options fail. This can allow the TE tunnel to always be up, even if, for example, someone accidentally removes affinity values from a router in the network.
On IOS-XE, this is accomplised using the following configuration:
#IOS-XE
mpls traffic-eng lsp attributes name
affinity ...
bandwidth ...
priority ...
!
interface Tunnel0
tunnel mpls traffic-eng path-option num dynamic|explicit attributes name
IOS-XE also allows you to specify only the bandwidth attribute without needing a separate attribute set. Note that when you use this, if the associated path-option is active, the router will attempt to reoptimize the tunnel every 30 seconds to try to satisfy the original bandwidth constraint. This allows for the tunnel to at least be up in case bandwidth cannot be satisfied, but to actually reserve the bandwidth as soon as possible when it becomes available again.
#IOS-XE
interface Tunnel0
tunnel mpls traffic-eng path-option num dynamic|explicit bandwidth value
On IOS-XR, this is accomplished similarly using an attribute-set. Note that IOS-XR doesn’t support as many features with the attribute-set. The major ones are just signalled-bandwidth and affinity.
#IOS-XR
mpls traffic-eng
attribute-set path-option name
signalled-bandwidth ...
affinity ...
!
int tunnel-te 0
path-option num dynamic|explicit attribute-set name
To meet the task requirements, we set the affinity and bandwidth for the tunnel to 0x4/0x4 and 100M. Path-option 1 attempts to calculate a dynamic path. Path-option 2 uses zero bandwidth. Path-option 3 uses 0x0/0x0 affinity and zero bandwidth.
When all links are up, CSR8 should be able to use the first path-option:
If we change all of CSR8’s interfaces to only have 50M available bandwidth, path-option 1 should fail, and path-option 2 should succeed. Notice below that the requested bandwidth on the tunnel when path-option 2 is used is now zero.
#CSR8
int GigabitEthernet2.518
ip rsvp bandwidth 50000
int GigabitEthernet2.568
ip rsvp bandwidth 50000
int GigabitEthernet2.589
ip rsvp bandwidth 50000
Lastly, we can change CSR8’s local interfaces no not belong to affinity “BLUE” (0x4). This should cause path-option 2 to fail and path-option 3 should be used. Notice below that the affinity has changed to 0x0/0x0.
#CSR8
int GigabitEthernet2.518
no mpls traffic-eng attribute-flags
int GigabitEthernet2.568
mpls traffic-eng attribute-flags 0x2
We can also test this on XR11. By default, path-option 1 is used.
If we change XR11’s available bandwidth on all local interfaces to less than 100M, path-option 1 should fail.