<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">In case of unnumbered I do not think we can work with multiple IP address for OSPF. Simply because fetching right OSPF interface would not be possible when multiple IP address configured.
<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>
<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>Thursday, 9 January 2020 at 6:23 PM<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"> Thanks a lot for the analysis. My base software does not allow me to configure non /32 ip addresses. Hence I had configured two non /32 ip addresses on same interface and sessions
came up for both IP addresses. Interface was considered as regular interface rather than unnumbered interface.</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">In case of session flap with unnumbered interface dual IP, Can we consider it as an expected behaviour or there is room for fix ?</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>Thursday, 9 January 2020 at 2:39 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">Naveen,</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> 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. </span>
<o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt">Sending hello:</span></b><o:p></o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:11.0pt">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. </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt">Receiving hello:</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">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.</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">In function ospf_if_lookup_recv_if which is called by ospf_read to get the ospf interface.
</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"> if (CHECK_FLAG(oi->connected->flags, ZEBRA_IFA_UNNUMBERED))</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> match = oi; >>>>> Gets the fist OI and uses that.
</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> else if (prefix_match(CONNECTED_PREFIX(oi->connected),</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> (struct prefix *)&addr)) {</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> if ((match == NULL) || (match->address->prefixlen</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> < oi->address->prefixlen))</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> match = oi;</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"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt">Flap:</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">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.
</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"> </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>
<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>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</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 style="font-size:11.0pt">Hi Santosh,</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"> 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"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> 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"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">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"> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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""> </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"><<<<</span></span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Courier New"">DUT1#</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Sudo config loopback add Loopback0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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"">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""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">interface Ethernet16</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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"">ip ospf area 0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">router ospf</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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""> </span><o:p></o:p></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Courier New"">DUT2#</span></b><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">Sudo config loopback add Loopback0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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"">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""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">interface Ethernet16</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">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"">ip ospf area 0</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""> </span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">router ospf</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">ospf router-id 2.2.2.2</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">Regards</span><o:p></o:p></p>
<p class="MsoNormal"><span style="font-size:11.0pt">Naveen</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">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>
</div>
</body>
</html>