ospf6d / OSPFv3: Post graceful-restart grace lsa flush failed on the GR-Restarter #18061
Open
2 tasks done
Labels
triage
Needs further investigation
Description
OSPFv3 Graceful-restart grace lsa flush failed on the GR-Restarter. Post restart, after all adjacencies are re-established on the restarting node grace lsa flush(grace lsa maxage send) failed.
Version
How to reproduce
GR configuration
6a. receives pre-restart lsa's from the helper and installs the lsa's(both self originated and non-self originated)
6b. after all adjacanceis are re-established exits GR and re-originates all self-originated LSA's
6c. flush grace-lsa's and send max-age lsa to helper so that helper exits GR-helper
Expected behavior
GR-restarter(node-1) grace lsa flush should not fail. grace-lsa maxage should be sent out after and the gr-helper(node-2) should exit GR successfully
Actual behavior
1.pre-restart and post-restart ospfv3 interface if-index are different.
2.graceful-restart is successful at the gr-restarter(node-1) but the grace-lsa flush fails because of different if-index used in the grace lsa lookup.
3.gr-helper is waiting for the grace lsa flush (max-age grace-lsa from the gr-restarter) to exit GR-helper
4.gr-restarter is exiting gr successfully and re-originates all the lsa's
5.The re-originated router-lsa is causing a topology-change on the gr-helper (strict lsa check enabled)
or a grace timer expiry ( if strict lsa check is disabled), in both case a unsuccesful graceful-restart on the gr-helper
Additional context
I added some debugs in my environment to understand the problem better. OSPFv3 link state id for the link-lsa and grace-lsa are derived from the interface ifindex, and the assumption is that ifindex would be same after process restart(which is incorrect in this case?)
node-1(rtrid: 192.x.x.x) ----[Ethernet1]----- node-2(rtrid: 193.x.x.x)
/pre-restart/
ospf6d[301]: [VG0KG-PBTHZ] Originate Grace-LSA for Interface Ethernet1
ospf6d[301]: [TQB4M-JQ72Z] LSA Originate:
ospf6d[301]: [GNRNM-HX7W3] [Grace Id:0.0.1.218 Adv:192.x.x.x]
ospf6d[301]: [HA4BY-46K3Y] Age: 0 SeqNum: 0x80000001 Cksum: e0fa Len: 36
ospf6d[301]: [ZGT86-07C95] ospf6_install_lsa Install LSA: [Grace Id:0.0.1.218 Adv:192.x.x.x] age 0 seqnum 80000001 in LSDB.
/*pre-restart interface ifindex is 74 */
ospf6d[301]: [KAY2X-SAB58] ospf6_interface_lsdb_hook_add LSA: [Grace Id:0.0.1.218 Adv:192.x.x.x] age 0 seqnum 80000001 to oi(Ethernet1,74) LSDB.
/post-restart/
ospf6d[368]: [M3K4C-7HG7V] LSA Receive from 193.x.x.x%Ethernet1
ospf6d[368]: [GNRNM-HX7W3] [Link Id:0.0.1.218 Adv:192.x.x.x]
ospf6d[368]: [HA4BY-46K3Y] Age: 329 SeqNum: 0x80000001 Cksum: 3d50 Len: 56
ospf6d[368]: [Z8A48-ZTKMJ] Install, Flood, Possibly acknowledge the received LSA
ospf6d[368]: [ZGT86-07C95] ospf6_install_lsa Install LSA: [Link Id:0.0.1.218 Adv:192.x.x.x] age 329 seqnum 80000001 in LSDB.
/*post-restart interface ifindex is 73 */
ospf6d[368]: [KAY2X-SAB58] ospf6_interface_lsdb_hook_add LSA: [Link Id:0.0.1.218 Adv:192.x.x.x] age 329 seqnum 80000001 to oi(Ethernet1,73) LSDB.
ospf6d[368]: [RTGCS-FBH35] GR: exiting graceful restart[vrf default]: all adjacencies were reestablished
/*grace-lsa is being looked up with current ifindex/link-state-id 73 , but grace lsa is actually present in the interface LSDB with pre-restart ifindex/link-state-id 74 as received from the gr-helper */
ospf6d[368]: [Y052T-0BR52] ospf6_gr_flush_grace_lsas: GR: Grace-LSA not found [intf Ethernet1 ifdx 73 rtrid 192.x.x.x] [area 0.0.0.0] [vrf :default]
Checklist
The text was updated successfully, but these errors were encountered: