frr icon indicating copy to clipboard operation
frr copied to clipboard

Some ISIS routes are not removed from routing table after ISIS adjacencies time out

Open Karen-Schoener opened this issue 1 year ago • 2 comments

Observed issue:

  • When running isis_topo1, after ISIS adjacencies time out, not all ISIS routes are removed from routing table.

Test steps:

  1. Run isis_topo1
  2. Wait for r5 to have 2 isis adjacencies
  3. On r3: shutdown interface to r5
  4. On r4: shutdown interface to r5
  5. On r5: wait for isis adjacencies to time out
  6. On r5: issue: show ip route. This will show unexpected isis routes in the routing table.
r5# show ip route
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIP, O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric, t - Table-Direct,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

I>* 0.0.0.0/0 [115/10] via 10.0.11.2, r5-eth1, weight 1, 00:00:50
C>* 10.0.10.0/24 is directly connected, r5-eth0, 00:04:03
L>* 10.0.10.1/32 is directly connected, r5-eth0, 00:04:03
C>* 10.0.11.0/24 is directly connected, r5-eth1, 00:04:03
L>* 10.0.11.1/32 is directly connected, r5-eth1, 00:04:03
L * 10.254.0.5/32 is directly connected, lo, 00:04:03
C>* 10.254.0.5/32 is directly connected, lo, 00:04:03
T[20]>* 192.0.2.6/32 [15/0] via 10.0.10.6, r5-eth0, weight 1, 00:04:03

Investigation shows that:

  • After the last ISIS adjacency times out (on step 5), isis_zebra_route_del_route is called for prefix 0.0.0.0.
  • isis_zebra_route_del_route does not send the ZEBRA_ROUTE_DELETE message for prefix 0.0.0.0.
  • isis_zebra_route_del_route returns early due to ISIS_ROUTE_FLAG_ZEBRA_SYNCED flag, on this line: https://github.com/FRRouting/frr/blob/master/isisd/isis_zebra.c#L312

Observed with this recent FRR commit:

commit bbda45a82546bc0d841de5503e14b674db5e8c80 (HEAD -> master, origin/master, origin/HEAD)
Merge: b6cb72fcc dec87faab
Author: Russ White <[email protected]>
Date:   Wed Dec 20 15:42:25 2023 -0500

    Merge pull request #15047 from LabNConsulting/aceelindem/fix-opaque-functab-leak

    ospfd: Fix opaque functab memory leak and opaque AS External LSA cleanup problems

Observed while running FRR topotest isis_topo1 on Ubuntu 20.04.

Karen-Schoener avatar Dec 21 '23 14:12 Karen-Schoener

Issue looks to be related to the following commit:

commit 7064d8a7276e1ec23b568edcf35bd36a27d953d8
Author: Carmine Scarpitta <[email protected]>
Date:   Sat Jun 10 09:30:17 2023 +0200

    isisd: Uninstall routes only if installed

    In some cases, IS-IS may attempt to remove routes that have not been
    installed before. We can prevent IS-IS from doing this by aborting
    `isis_zebra_route_del_route` when the ISIS_ROUTE_FLAG_ZEBRA_SYNCED flag
    is unset, meaning that the route is not installed in the kernel.

    Signed-off-by: Carmine Scarpitta <[email protected]>

Karen-Schoener avatar Dec 21 '23 15:12 Karen-Schoener

Hi @Karen-Schoener, thanks for reporting the issue. I'm working on it.

cscarpitta avatar Jan 22 '24 18:01 cscarpitta

This issue is stale because it has been open 180 days with no activity. Comment or remove the autoclose label in order to avoid having this issue closed.

github-actions[bot] avatar Jul 21 '24 01:07 github-actions[bot]

This issue will be automatically closed in the specified period unless there is further activity.

frrbot[bot] avatar Jul 21 '24 01:07 frrbot[bot]