<div dir="ltr"><div>Hi,</div><div><br></div><div>A message between bug report and feature request, unless it's a silly oversight on my side.</div><div><br></div><div>On Linux it's possible to configure interfaces with /32 (or v6 /128) IPs. I detailed our use-case and examples on <a href="https://phabricator.wikimedia.org/phame/post/view/312/ganeti_on_modern_network_design/">https://phabricator.wikimedia.org/phame/post/view/312/ganeti_on_modern_network_design/</a> if you're curious.</div><div><br></div><div>So focusing on v4 only for now I have this configuration on a VM:</div><div>testvm2006:~$ ip addr</div><div>inet <a href="http://10.192.24.4/32">10.192.24.4/32</a> brd 10.192.24.4 scope global ens13</div><div>testvm2006:~$ ip route<br>default via 10.192.24.1 dev ens13 onlink</div><div><br></div><div>And this on the hypervisor (but it could also be 2 physical servers, or a router and a server) :<br></div><div>ganeti2033:~$ ip addr<br>inet <a href="http://10.192.24.1/32">10.192.24.1/32</a> scope link tap0</div><div>ganeti2033:~$ ip route</div><div>10.192.24.4 dev tap0 proto static scope link</div><div><br></div><div>Note that 10.192.24.1 is close to 10.192.24.4, but they could be totally different IPs (see the v6 example bellow).<br></div><div><br></div><div>Overall connectivity works well, TCP handshake as well:</div><div>testvm2006:~$ nc -zv 10.192.24.1 179<br>Connection to 10.192.24.1 179 port [tcp/bgp] succeeded!</div><div><br></div><div>The issue is that with a basic configuration like:<br></div><div>protocol bgp {<br>    ipv4 {<br>        import none;<br>        export none;<br>    };<br>    local 10.192.24.4 as 64613;<br>    neighbor 10.192.24.1 external;<br>}</div><div>Bird 2.0.12 doesn't try to established the session, and waits with:</div><div>2024-04-12T08:42:29.497756+00:00 testvm2006 bird: bgp1: Waiting for 10.192.24.1 to become my neighbor</div><div><br></div><div>For IPv4 it's possible to workaround the issue by setting the session as "multihop;" on both side<br></div><div>bgp1: Connecting to 10.192.24.1 from local address 10.192.24.4<br>bgp1: Connected<br>bgp1: Sending OPEN(ver=4,as=64613,hold=240,id=0ac01804)<br>bgp1: Got OPEN(as=64612,hold=240,id=10.192.21.6)<br>bgp1: Sending KEEPALIVE<br>bgp1: Got KEEPALIVE<br>bgp1: BGP session established<br></div><div><br></div><div>But for IPv6, it's cleaner to only require the router's link local address:</div><div>testvm2006:~$ ip -6 addr<br>inet6 2620:0:860:140:10:192:24:4/128 scope global </div><div>testvm2006:~$ ip -6 route</div><div>default via fe80::2022:22ff:fe22:2201 dev ens13 metric 1024 pref medium</div><div><br></div><div>In Bird:</div><div>neighbor fe80::2022:22ff:fe22:2201%ens13 external;</div><div><br></div><div>But then the link local address doesn't work with multihop (for obvious reason).<br></div><div>bird: /etc/bird/bird.conf:22:1 Multihop BGP cannot be used with link-local addresses</div><div><br></div><div>The question is then, would it be possible to support that usecase, something along the lines of if the local IP is a /32 (or v6 /128), Treat the neighbor as directly connected, especially if it's a link local IP (unless nultihop is specified).</div><div>I haven't looked at BFD yet, so not sure if anything would need to change there as well.</div><div><br></div><div>Don't hesitate to ask if something needs any clarifications.</div><div><br></div><div>Thank for that great tool, Bird is awesome,</div><div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Arzhel<br></div></div></div></div></div></div></div>