]> git.proxmox.com Git - mirror_frr.git/commit
isisd: refactor handling of SR Prefix-SIDs
authorRenato Westphal <renato@opensourcerouting.org>
Sun, 20 Sep 2020 05:39:28 +0000 (02:39 -0300)
committerRenato Westphal <renato@opensourcerouting.org>
Fri, 23 Oct 2020 13:31:39 +0000 (10:31 -0300)
commitd47d6089e06c2c6b9f0f5ae4518f0e07abdca1af
tree78b3bbe7a05e5e76e551b377d3ece5b82641b93a
parentd4fcd8bd82b232a467f5063268683a5dd7d52cd2
isisd: refactor handling of SR Prefix-SIDs

Embed Prefix-SID information inside SPF data structures so that
Prefix-SIDs can be installed together with their associated routes
at the end of the SPF algorithm. This is different from the current
implementation where Prefix-SIDs are parsed and processed separately,
which is vastly suboptimal.

Advantages of the new code:
* No need to parse the LSPDB an additional time to detect and process
  SR-related changes;
* Routes are installed with their Prefix-SID labels in the same ZAPI
  message. This can prevent packet dropping for a few milliseconds
  after each SPF run if there are BGP-labeled routes (e.g. L3VPN) that
  recurse on IGP labeled routes;
* Much easier to support Anycast-SIDs, as the SPF code will naturally
  figure out the best nexthops and use only them (that can't be done
  in any reasonable way if the Prefix-SID Sub-TVLs are processed
  separately);
* Less code to maintain and reduced memory footprint;

The "show isis segment-routing prefix-sids" command was removed as
it doesn't make sense anymore now that "show isis route" exists.
Prefix-SIDs are a property of routes, so what was done was to extend
the "show isis route" command with a new "prefix-sid" option that
changes the output table to show the Prefix-SID information associated
to each route.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
15 files changed:
doc/user/isisd.rst
isisd/isis_lfa.c
isisd/isis_route.c
isisd/isis_route.h
isisd/isis_spf.c
isisd/isis_spf.h
isisd/isis_spf_private.h
isisd/isis_sr.c
isisd/isis_sr.h
isisd/isis_tlvs.c
isisd/isis_tlvs.h
isisd/isis_zebra.c
isisd/isis_zebra.h
tests/isisd/test_isis_spf.c
tests/isisd/test_isis_spf.refout