<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:12.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle19
{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="font-size:11.0pt;mso-fareast-language:EN-US">Naveen,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> The issue is with unnumbered interface. With this you see flap only when multiple interface address is configured even if prefix is no /32. I tried with /31 and /24 as well
but I still see flaps. Not sure how it worked for you. The reason for flap is due to the code below.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;mso-fareast-language:EN-US">Sending hello:<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">There are two ospf interface created when you have multiple IP address. Hello will be sent on both with each IP address as the source address in it and rest of the hello content
remains the same. <br>
<br>
<o:p></o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;mso-fareast-language:EN-US">Receiving hello:<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">When hello is received then OSPF tries to get the OSPF interface. In case of unnumbered it gets the first ospf interface on that IFP. As in case of unnumbered there is no way we
can match on prefix as received source may not have any overlapping IP address with what is configured as source.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">In function ospf_if_lookup_recv_if which is called by ospf_read to get the ospf interface.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> if (CHECK_FLAG(oi->connected->flags, ZEBRA_IFA_UNNUMBERED))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> match = oi; >>>>> Gets the fist OI and uses that.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> else if (prefix_match(CONNECTED_PREFIX(oi->connected),<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> (struct prefix *)&addr)) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> if ((match == NULL) || (match->address->prefixlen<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> < oi->address->prefixlen))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> match = oi;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;mso-fareast-language:EN-US">Flap:<o:p></o:p></span></b></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Flap is caused due to receiving two hellos from peer and mapping to only single ospf interface. Now take the case where you have two IP address configured on the same interface on
either end (R1- 10.10.10.1, 20.20.20.1 and R2- 10.10.10.2, 20.20.20.2). When Router R1 sends hello with source IP in IP header as 10.10.10.1 to R2 then it receives it and matches with first ospf interface let’s assume that is associated with IP 10.10.10.2.
When R1 sends hello with source IP in IP header as 20.20.20.1 then R2 will still map to 10.10.10.2 ospf interface as that is first in list. R2 will keep receiving hello from R1 one with neighbour seen and other without it and hence we see OSPF session flapping.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Santosh P K <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;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="color:black">From: </span></b><span style="color:black">Naveen K Suvarna <naveen.suvarna@broadcom.com><br>
<b>Date: </b>Wednesday, 8 January 2020 at 8:58 AM<br>
<b>To: </b>Santosh P K <sapk@vmware.com>, "dev@lists.frrouting.org" <dev@lists.frrouting.org><br>
<b>Subject: </b>Re: OSPF neighbour-ship on multi-ip P2P interface<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
</div>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Hi Santosh,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> Yes, I have tried /31 prefix. Sessions do come up in /31 prefix.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> I am using version 7.2. I have a loopback interface with multiple /32 prefix IPs assigned. This loopback is borrowed by an unnumbered OSPF interface. Two node, directly connected
single link ospf topology, as give below. When only one IP is present in the loopback interface, sessions comes up. If more than one Ip is added to the loopback interface, ospf session keep getting flap/reset.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Difference I see between /32 and / <1-31> Prefix is that, in hello packet network mask is set to 0 in case of /32. Upon receiving Hello for the other IP which is different from
current adjacency ip, adjacency will be re-inited.</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">static int
<b>ospf_make_hello</b>(struct ospf_interface *oi, struct stream *s)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> if (!(CHECK_FLAG(oi->connected->flags, ZEBRA_IFA_UNNUMBERED) && oi->type == OSPF_IFTYPE_POINTOPOINT)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> && oi->type != OSPF_IFTYPE_VIRTUALLINK)</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> masklen2ip(oi->address->prefixlen, &mask);</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> else</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> memset((char *)&mask, 0, sizeof(struct in_addr));
<span style="background:yellow;mso-highlight:yellow"><<<<</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">DUT1#</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">Sudo config loopback add Loopback0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">sudo config interface ip add Loopback0 10.0.0.1/32;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">sudo config interface ip add Loopback0 11.1.1.1/32;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">config interface ip unnumbered add Ethernet16 Loopback0
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">interface Ethernet16</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ip ospf network point-to-point</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ip ospf area 0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">router ospf</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ospf router-id 1.1.1.1</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">DUT2#</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">Sudo config loopback add Loopback0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">sudo config interface ip add Loopback0 10.0.0.2/32;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">sudo config interface ip add Loopback0 11.1.1.2/32;</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">config interface ip unnumbered add Ethernet16 Loopback0
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">interface Ethernet16</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ip ospf network point-to-point</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ip ospf area 0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">router ospf</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";mso-fareast-language:EN-US">ospf router-id 2.2.2.2</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Regards</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US">Naveen</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt;mso-fareast-language:EN-US"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black">Santosh P K <sapk@vmware.com><br>
<b>Date: </b>Tuesday, 7 January 2020 at 9:54 PM<br>
<b>To: </b>Naveen K Suvarna <naveen.suvarna@broadcom.com>, "dev@lists.frrouting.org" <dev@lists.frrouting.org><br>
<b>Subject: </b>Re: OSPF neighbour-ship on multi-ip P2P interface</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Times New Roman",serif"> </span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt">Naveeen,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> Did you test with /31 prefix configured on interface and did that work too? Could you also let me know which version of FRR you are using?
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Thanks</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Santosh P K </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span style="color:black">From: </span></b><span style="color:black">Naveen K Suvarna <naveen.suvarna@broadcom.com><br>
<b>Date: </b>Tuesday, 7 January 2020 at 2:33 PM<br>
<b>To: </b>"dev@lists.frrouting.org" <dev@lists.frrouting.org><br>
<b>Subject: </b>OSPF neighbour-ship on multi-ip P2P interface</span><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
</div>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Hi,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> Does FRR OSPF support neighborship on an P2P interface with Multiple Interface IP addresses? I am using multiple 32bit host ip address on same interface.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> When I try to establish ospf neighborship on an P2P interface with multiple IP addresses assigned, OSPF neighborship keeps resetting due to, receival of interleaving hello of 1<sup>st</sup>
or 2<sup>nd</sup> ip-address. Is there any way to avoid this and bring up sessions on the Interface.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> Above thing works good if the Interface IP addresses are assigned < 32 bit subnet mask (for example, 10.0.0.1/24 instead of 10.0.0.1/32).
</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Regards</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt">Naveen</span><o:p></o:p></p>
</div>
</div>
</body>
</html>