[zebra 22776] OSPFv3: Question about LSA expiration
2006-03-03 13:11:18 GMT
Hi.
I'm running ospfv3d on two routers, router A (router id: 4.4.4.4) and router B (router id: 2.2.2.2).
When starting up I notice something peculiar, which is described below.
To illustrate, I'm adding output from router A's debug messages I've
included in the source code. I've added some comments.
--------------------
2006/03/03 13:40:05 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:05 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:05 OSPF6: Age: 0 SeqNum: 0x80000001 Cksum: 33fb Len: 44
2006/03/03 13:40:05 OSPF6:
2006/03/03 13:40:05 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:05 OSPF6: [Link Id:0.0.0.2 Adv:4.4.4.4]
2006/03/03 13:40:05 OSPF6: Age: 0 SeqNum: 0x80000001 Cksum: 0d9d Len: 56
Installing selv-originated LSAs.
2006/03/03 13:40:05 OSPF6:
2006/03/03 13:40:06 OSPF6: Neighbor state change 2.2.2.2%eth0: [Down]->[Init]
2006/03/03 13:40:15 OSPF6: Neighbor state change 2.2.2.2%eth0: [Init]->[ExStart]
2006/03/03 13:40:15 OSPF6: Neighbor state change 2.2.2.2%eth0: [ExStart]->[ExChange]
Yay, a new neighbor - let's synchronize!
2006/03/03 13:40:15 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:15 OSPF6: [Link Id:0.0.0.2 Adv:2.2.2.2]
2006/03/03 13:40:15 OSPF6: Age: 11 SeqNum: 0x80000001 Cksum: 52f8 Len: 56
2006/03/03 13:40:15 OSPF6:
2006/03/03 13:40:15 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:15 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:2.2.2.2]
2006/03/03 13:40:15 OSPF6: Age: 11 SeqNum: 0x80000001 Cksum: 0b34 Len: 44
2006/03/03 13:40:15 OSPF6:
2006/03/03 13:40:15 OSPF6: *** Sending LSAs to 2.2.2.2:
Sending two LSAs to neighbor 2.2.2.2:
2006/03/03 13:40:15 OSPF6: [Link Id:0.0.0.2 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 10 SeqNum: 0x80000001 Cksum: 0d9d Len: 56
and
2006/03/03 13:40:15 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 10 SeqNum: 0x80000001 Cksum: 33fb Len: 44
2006/03/03 13:40:15 OSPF6: Neighbor state change 2.2.2.2%eth0: [ExChange]->[Full]
2006/03/03 13:40:15 OSPF6: * Neighbor state change: prev or next is FULL
Macro "OSPF6_INTRA_PREFIX_LSA_SCHEDULE_STUB
(on->ospf6_if->area);" is run. The LSA(see below) is purged, as
the following statements are true:
if (route_advertise->count == 0)
{
if (old)
ospf6_lsa_purge (old);
(...)
Thus, the LSA is prematurely aged, and the function ospf6_lsa_expire is executed (again, see below).
2006/03/03 13:40:15 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:15 OSPF6: [Router Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 0 SeqNum: 0x80000001 Cksum: 8c57 Len: 40
2006/03/03 13:40:15 OSPF6:
The following LSA is purged (as described above). The following lines
resides in ospf6_lsa_expire, or in functions called from it:
2006/03/03 13:40:15 OSPF6: * Flooding expired LSA
2006/03/03 13:40:15 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 3600 SeqNum: 0x80000001 Cksum: 33fb Len: 44
2006/03/03 13:40:15 OSPF6: * Reinstalling expired LSA
The LSA is reinstalled into the database...
2006/03/03 13:40:15 OSPF6: * Installed this LSA into the database:
2006/03/03 13:40:15 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 3600 SeqNum: 0x80000001 Cksum: 33fb Len: 44
2006/03/03 13:40:15 OSPF6:
..and then removed when calling "ospf6_maxage_remove (ospf6);":
2006/03/03 13:40:15 OSPF6: ## Remove MaxAge [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:15 OSPF6: Age: 3600 SeqNum: 0x80000001 Cksum: 33fb Len: 44
2006/03/03 13:40:15 OSPF6:
<end function ospf6_lsa_expire>
Then, when router B responds with an LS Ack for the LSA, router A (the local node) doesn't have a copy of the LSA anymore:
2006/03/03 13:40:18 OSPF6:
2006/03/03 13:40:18 OSPF6: ** I'm the adv router of the following LSA, but haven't got a copy of the LSA in my database!
Router A have thus received an ack for an LSA it doesn't have.
2006/03/03 13:40:18 OSPF6: [Intra-Prefix Id:0.0.0.0 Adv:4.4.4.4]
2006/03/03 13:40:18 OSPF6: Age: 15 SeqNum: 0x80000001 Cksum: 33fb Len: 44
--------------------------------
Why does router A remove an LSA from its database before acks for the LSA have been received?
I need to know if this is normal behavior, or if it is a bug. If its a
bug, it may have been introduced by myself as I've modified some parts
of the source code. However, I can't think of anything I've modified
that should affect this.
So, does anybody have any thoughts on this matter?
Regards,
Kenneth Holter
_______________________________________________ Zebra mailing list Zebra <at> ml.zebra.org http://ml.zebra.org/mailman/listinfo/zebra
RSS Feed