SRv6 uSID - Scale (Pt. 4) (Flex Algo)
Last updated
Last updated
Load top1.vpnv4v6.srv6.usid.multi.area.part4.init.cfg in the XRv9K topology in CML.
The leaking and summarization of loopbacks has been added back in.
Add a new locator that uses flex algo 128. This should optimize latency. Ensure that prefixes are summarized at the L1/L2 routers and propagated to all L1 areas. Use fd00:1::/32 for the prefix block, using the same formula for the node ID (XXYY, where XX is the domain, and YY is the node number).
Static latency values have been added to all links, as shown in the diagram above. If a latency value is not specified, it is statically set to 10.
Using flex algo with prefix summarization uses the same configuration you are familiar with from the previous summarization lab, but with a slight twist to ensure that the algorithm is included in the prefix summary.
First we configure the Flex-Algo Defintion (FAD), the locator, and advertise the locator in ISIS:
Next, we add the ::/32 to the RPL that is used to control route leaking from L2 into L1:
Finally we add the prefix summarization. We must include the algorithm keyword so that the flex algo is included on the summary prefix. Without this, the prefix will simply be a normal IGP summary.
To demonstrate the issue, let’s remove the algorithm from the prefix summarization on XR3 and XR4:
XR3 and XR4 add a fd00:1:7800::/40 IPv6 external prefix to their L2 LSP. They supress the more specific SRv6 locator advertisements for fd00:1:7807::/48 and fd00:1:7808::/48:
The problem is that to XR1, this simply looks like a normal IGP prefix. So essentially, the default algo #0 is used.
A traceroute from XR5 to XR1 follows the IGP path XR5-XR1-XR3-XR7.
Let’s add the algorithm keyword back onto the prefix summary:
The prefix has been removed as a normal IPv6 external prefix, and is now an SRv6 locator with an associated algorithm:
XR1 now uses its delay values for the metric instead of its IGP costs, as it sees that the prefix is associated with algo 128, not the default algo 0. XR1 has a best path via XR4 due to lower latency values. Additionally, XR1 passes this prefix from L2 into L1 as an SRv6 locator, not an external prefix. So you only need to set the algorithm at the local ABRs which do L1 to L2 propagation.
A traceroute from XR5 to XR7 now takes the lowest latency path:
Note that there is also optional explicit knob that can be used on the summary advertisement. This means that only SRv6 locators that have the specified algorithm attached will be candidate contributing prefixes towards the summary.
We also saw in the previous article that the adv-unreachable knob should be used as well. This enables UPA (unreachable prefix advertisement) so that upon failure of a contributing prefix, the L1/L2 router will leak the contributing prefix with an unreachable metric to allow PEs to correctly do fast reroute (BGP PIC).
While this UPA for each flex algo summary is enabled on the XR docs design guide, I don’t quite know if this is really necessary. The BGP service routes should all be via the loopback, so simply using UPA for the single loopback should be all that is necessary. The flex algo summary will only be used for the SRv6 SID, not BGP nexthop reachability.
Notice that a traceroute from XR7 to XR5 does not take the lowest latency path. Why is this?
The reason is the inherent rules for L1/L2 redistribution in ISIS. XR7’s lowest latency path is through XR3. However, XR3 has two routes for fd00:1:5600::/40. It knows this via L2 from XR1, and via L1 from XR4. The L1 path via XR4 has a lower metric (latency), but XR4 has set the down bit as the prefix is propagated from L2 into L1, so XR3 cannot use this route for risk of looping. Therefore, XR3 must use its L2 route via XR1.
Notice that XR7 actually calculates the correct metric of 60 for the path:
However, XR3 has a metric of 110 because it must use its L2 route:
The best solution to this is to use a PCE for end-to-end inter-area path calculation.