<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-IN" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Hello Palpandi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">     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? <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Santosh P K <o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Palpandi Perumal <palp@pluribusnetworks.com><br>
<b>Date: </b>Tuesday, 12 November 2019 at 5:56 PM<br>
<b>To: </b><dev@lists.frrouting.org><br>
<b>Subject: </b>regarding - ospf-loop issue with the given topology<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">Hi All,<o:p></o:p></p>
<div>
<p class="MsoNormal">Please find the topology attached.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Whenever the node "uspine02" was rebooted, we ended in an ospf loop intermittently.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> We are seeing one anomaly sequence and we are not able to get the trigger point of it.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Once we ended up in the promatic state.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">From the debug log,<o:p></o:p></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.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It is a timing problem. That is the reason we are not hitting consistently.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><b>Root cause:</b><o:p></o:p></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.<o:p></o:p></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.<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><b>Potential fix based on the RFC 2328 section 13:</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Before flooding the LSA to broadcast domain.Check whether the received is self-originated.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">diff -r dc50bb05b29e usr/src/cmd/FRRouting/frr-master/ospfd/ospf_flood.c<o:p></o:p></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<o:p></o:p></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<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">@@ -925,6 +925,26 @@<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  old->retransmit_counter--;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  ospf_lsdb_delete(&nbr->ls_rxmt, old);<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">  }<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+              /*</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * Please refer section 13.1 in RFC 2328</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * Flooding procedure is not applicable for self</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * originating lsa. Unfortunately we ended up the</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * self-originated lsa to be added in retransmit list</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * through flood caller.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+               * while adding this lsa to re-transmit list,</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+               * need to confirm whether this is self-originated lsa.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * If its, it should get remove in lsdb and shouldnt add</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+  * in retransmit list.</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+               */</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ if (ospf_lsa_is_self_originated(nbr->oi->ospf, lsa)) {</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ if (IS_DEBUG_OSPF(lsa, LSA_FLOODING))</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ zlog_debug("self originated RXmtL(%lu)++,"</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ " NBR(%s), LSA[%s]",</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ ospf_ls_retransmit_count(nbr),</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ inet_ntoa(nbr->router_id),</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ dump_lsa_key(lsa));</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black;background:yellow">+ return;</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">+ }<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Palpandi P<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
</body>
</html>