Flex Algo provides the mechanism for IGP to use constraint-based paths like RSVP or SR TE using ISIS or OSPF extensions. By default, ISIS uses default algorithm 0. Along with it, there are 128 to 255 algorithms supported in Nokia.
As of writing, Nokia does not support flex-algo 1. but it does supported by juniper because we have identified during a project to swap Juniper MX with Nokia 7750 SR
All the routers participating in the Flex Algorithm should have the same definition of how it should work.
Consider the SRGB block of 2000-3000. To reach prefix F1, index-1, algorithm 0, label is 2001, then we have prefix F2, index-101, algorithm 128 and to reach F2 label is 2101
Nokia supports Flex algo 128, 129 and 130.
By default the IGP cost-based tunnel travels through PE5 to PE3 via PE5-PE1-ASBR1-ASBR3-PE5.
Let's configure Flex Algo 129 based on delay and push the traffic towards PE5-PE5-PE2-ASBR2-ASBR4-PE4-PE3.
*A:PE5>config>router>fad>flex-algo$
metric-type
{igp|te-metric|delay}
We can map the flex algo to SR-MPLS as well or steer traffic to SR-TE.
Delay metric:
We can configure the delay metric statically or dynamically and advertise it in ISIS or OSPF.
Configuring the delay metric on the interface directly.
interface "PE1"
if-attribute
delay
static 100000
exit
exit
no shutdown
exit
interface "PE6"
if-attribute
delay
static 10000
exit
exit
no shutdown
exit
As per our topology, shortest path to reach
the PE5 to PE3 is via PE1 through IGP metric calculation.
Propogating the delay in IGP
*A:PE5>config>router>isis# info
----------------------------------------------
level-capability level-2
area-id 49.0001
traffic-engineering-options
advertise-delay
application-link-attributes
exit
exit
We can configure both static and dynamic
delay together and have the option to configure which one we prefer. I am using a static delay. In a later blog, we will use the dynamic delay calculation using twamp.
Configuring the flex algo and metric-type
ISIS advertising flex algo 129 and delay as metric type
A:PE3>conf>router>segment-routing# info
sr-mpls
prefix-sids "system"
ipv4-sid index 13
flex-algo 129
ipv4-sid index 53
exit
exit
exit
sr-policies
shutdown
reserved-label-block
"sr-policy"
exit
A:PE3>conf>router>segment-routing#
sr-mpls prefix-sids "system"
A:PE3>config>router>segment-routing>sr-mpls>prefix-sids#
flex-algo 129 no ipv
ipv4-sid
ipv6-sid
A:PE3>config>router>segment-routing>sr-mpls>prefix-sids#
flex-algo 129 no ipv4-sid
*A:PE3>config>router>segment-routing>sr-mpls>prefix-sids#
info
----------------------------------------------
ipv4-sid index 13
flex-algo 129
exit
----------------------------------------------
*A:PE3>config>router>segment-routing>sr-mpls>prefix-sids#
no flex-algo 129
*A:PE3>config>router>isis#
interface "system" flex-algo
<[128..255]>
*A:PE3>config>router>isis#
interface "system" flex-algo 129
ipv4-node-sid ipv6-node-sid
*A:PE3>config>router>isis#
interface "system" flex-algo 129 ipv4-node-sid
index <[0..4294967295]>
label <[0..4294967295]>
*A:PE3>config>router>isis#
interface "system" flex-algo 129 ipv4-node-sid index 53
A:PE3>config>router>isis# info
interface "system"
level-capability level-2
passive
flex-algo 129
ipv4-node-sid index 53
exit
no shutdown
exit
*A:PE2>conf>router>segment-routing#
sr-mpls prefix-sids "system" no flex-algo 129
*A:PE2>conf>router>segment-routing#
*A:PE2>conf>router>segment-routing#
*A:PE2>conf>router>segment-routing#
/co
configure
compare
*A:PE2>conf>router>segment-routing#
/conrouter is
^
Error: Bad command.
*A:PE2>conf>router>segment-routing#
/configure router isis 1
*A:PE2>config>router>isis#
interface "system" flex-algo
<[128..255]>
*A:PE2>config>router>isis#
interface "system" flex-algo 129
ipv4-node-sid ipv6-node-sid
*A:PE2>config>router>isis# interface "system" flex-algo 129 ipv4-node-sid index 52
After swapping the flex-algo index from shared sid to system interface under isis. Route-table is populated with routes. Output below
A:PE5# show router tunnel-table
===============================================================================
IPv4 Tunnel Table (Router: Base)
===============================================================================
Destination Owner Encap TunnelId Pref
Nexthop Metric
Color
-------------------------------------------------------------------------------
1.0.0.1/32 [L] isis (1) MPLS
524359 11 10.1.5.1 10
1.0.0.2/32 [L] isis (1) MPLS
524372 11 10.1.5.1 20
1.0.0.2/32 isis (1) MPLS
524379 11 10.5.6.6 18000
From below output we need to fix the PE4 to advertise the flex algo 129 route properly
After remapping the flex-algo node index under the ISIS context, now we see tunnel table entries separately for algo 0 and algo 129.
Steering traffic using an auto-bind tunnel, or we can use the Flex algorithm label used for 129 under path in SR-TE.
Let's use an auto-bind tunnel via VPRN
service and make it work end to end to use flex-algo for VPRN traffic
Now we can see that for the PE3 destination,
we have SR-ISIS flex-algo 129 tunnel based on delay installed.