<div dir="ltr"><div dir="ltr"><div dir="ltr">Hi Santosh,<div>Thanks for the feedback and timely response. We have done many customisations on FRR 4.0 so integrating FRR 7.0 to our architecture is not easy work.</div><div><br></div><div>For the above problem, we don't know the trigger. Once we ended up in the problematic state( from the ospfd log)</div><div>    -One switch is saying its originated from me and on other switch expects ls-ack for it.</div><div><br></div><div>Based on this point in RFC 2328:</div><div><pre class="gmail-newpage" style="font-size:13.333333015441895px;margin-top:0px;margin-bottom:0px;break-before:page;color:rgb(0,0,0)"><span class="gmail-h2" style="display:inline;font-size:1em;font-weight:bold"><h2 style="display:inline;font-size:1em"><a class="gmail-selflink" name="section-13" href="https://tools.ietf.org/html/rfc2328#section-13" style="color:black;text-decoration:none">13</a>.  The Flooding Procedure</h2></span>

    Link State Update packets provide the mechanism for flooding LSAs.
    A Link State Update packet may contain several distinct LSAs, and
    <span style="background-color:rgb(255,255,0)">floods each LSA one hop further from its point of origination</span>.</pre></div><div><br></div><div>Added a potential fix - in somehow this network LSA added on re-transmit list through flooding procedure so before adding the LSA to the retransmit list , checking whether the LSA is self-originated and if its, it need not to be flooded to the broadcast domain ( based on the above point).</div><div><br></div><div>After this fix, we haven't seen this problem.</div><div>Could you give us feedback on this fix?</div><div>It's a tedious work for us to migrate from FRR4.0 to FRR7.0.</div><div><br></div><div>Thanks</div><div>Palpandi P</div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Nov 13, 2019 at 11:41 AM Santosh P K <<a href="mailto:sapk@vmware.com">sapk@vmware.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">





<div lang="EN-IN">
<div class="gmail-m_-8805523691918806721WordSection1">
<p class="MsoNormal"><span>Hello Palpandi,<u></u><u></u></span></p>
<p class="MsoNormal"><span>     I have replied to your query on slack. Also Donald pointed out that in FRR 4.0 there are issue around MAX-ageing and many issues are addressed in master. Could you see if your concerns are addressed
 in master? <u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<p class="MsoNormal"><span>Thanks<u></u><u></u></span></p>
<p class="MsoNormal"><span>Santosh P K <u></u><u></u></span></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<div style="border-style:solid none none;border-top-width:1pt;border-top-color:rgb(181,196,223);padding:3pt 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:12pt;color:black">From: </span></b><span style="font-size:12pt;color:black">Palpandi Perumal <<a href="mailto:palp@pluribusnetworks.com" target="_blank">palp@pluribusnetworks.com</a>><br>
<b>Date: </b>Tuesday, 12 November 2019 at 5:56 PM<br>
<b>To: </b><<a href="mailto:dev@lists.frrouting.org" target="_blank">dev@lists.frrouting.org</a>><br>
<b>Subject: </b>regarding - ospf-loop issue with the given topology<u></u><u></u></span></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi All,<u></u><u></u></p>
<div>
<p class="MsoNormal">Please find the topology attached.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Whenever the node "uspine02" was rebooted, we ended in an ospf loop intermittently.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> We are seeing one anomaly sequence and we are not able to get the trigger point of it.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Once we ended up in the promatic state.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">From the debug log,<u></u><u></u></p>
</div>
<div>
<div>
<p class="MsoNormal">The rebooted us-spine2 says, the received network-lsa is originated from me, so i should ignore that lsa to flood in broadcast domain and set the max-age that i have already installed.In this case, LS ack will not be sent from us-spine2,
 so gh-core1 again will add that LSA in re-transmit list and will process next 10s interval. In the mean-time, us-spine2 will broadcast the max-age LSA to ghcore for removing that route. Once that route was removed by us-spine2 max-age network-lsa, us-spine1
 will send proper network-lsa immediately to ghcore1 to re-install that route so after that event, re-transmit list will be processed again on gh-core1, will send that network-lsa to us-spine2 and us-spine2 will be seeing that lsa as self-originated LSA and
 will do the above thing again. ----------> this anomaly sequence led our switches in that state.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">It is a timing problem. That is the reason we are not hitting consistently.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><b>Root cause:</b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Before uspine2 goes to reboot, it would have been in DR and would have generated one network-lsa to this broadcast domain area 204.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">That LSA would have received on ghcore1. ghcore1 considered that LSA as proper LSA and installed it and ghcore1 flood that LSA again to area 204 at that time uspine2 would have established back with BDR and received the same LSA and considered
 that LSA as self-originated LSA.<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><b>Potential fix based on the RFC 2328 section 13:</b><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Before flooding the LSA to broadcast domain.Check whether the received is self-originated.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">diff -r dc50bb05b29e usr/src/cmd/FRRouting/frr-master/ospfd/ospf_flood.c<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">--- a/usr/src/cmd/FRRouting/frr-master/ospfd/ospf_flood.c Tue Nov 05 05:44:37 2019 -0800<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">+++ b/usr/src/cmd/FRRouting/frr-master/ospfd/ospf_flood.c Tue Nov 05 08:51:51 2019 -0800<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">@@ -925,6 +925,26 @@<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  old->retransmit_counter--;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  ospf_lsdb_delete(&nbr->ls_rxmt, old);<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  }<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+              /*</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * Please refer section 13.1 in RFC 2328</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * Flooding procedure is not applicable for self</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * originating lsa. Unfortunately we ended up the</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * self-originated lsa to be added in retransmit list</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * through flood caller.</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+               * while adding this lsa to re-transmit list,</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+               * need to confirm whether this is self-originated lsa.</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * If its, it should get remove in lsdb and shouldnt add</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+  * in retransmit list.</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+               */</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ if (ospf_lsa_is_self_originated(nbr->oi->ospf, lsa)) {</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ if (IS_DEBUG_OSPF(lsa, LSA_FLOODING))</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ zlog_debug("self originated RXmtL(%lu)++,"</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ " NBR(%s), LSA[%s]",</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ ospf_ls_retransmit_count(nbr),</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ inet_ntoa(nbr->router_id),</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ dump_lsa_key(lsa));</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background-color:yellow;background-position:initial initial;background-repeat:initial initial">+ return;</span><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">+ }<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Palpandi P<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>
</div>
</div>

</blockquote></div>