Bird just doesn't want to find OSPF neighbors although they are there and can communicate

Lukas Haase lukashaase at gmx.at
Wed Oct 20 05:33:03 CEST 2021


Hi Ondrej,

> On Tue, Oct 19, 2021 at 07:49:09AM +0200, Lukas Haase wrote:
> > I have googled like crazy but haven't found both pages yet.
> > Maybe I should use DuckDuckGo finally.
> > While those didn't fix the problem yet they are helpful. Thanks!
> >
> > > Have you tried setting the type to 'ptmp' or 'ptp' instead of 'nbma'?
> >
> > Yes, I tried ptp.
> > To my understanding, bird should stop sending multicast packets.
> > Instead, it continued to send packets to 224.0.0.5.
> > Why is that? Doesn't make sense to me at all.
>
> Hi
>
> OSPF on PtP interfaces should always use multicast (by specification).
> It is generally assumed that if you have (real) ptp iface, you do not
> need dst address, you just send it to the other end (so you can also
> always deliver multicast).

Is the difference between ptp and broadcast then only a protocol difference but on IP level it is identical? (I.e., the IP packets have src address of the sender and destination address 224.0.0.5)?

Also how about ptmp?
It seems when I set bird to ptmp, the IP packets do *not* have the 224.0.0.5 as destination address but the address given as "neighbor". This is what makes it work for me, I guess.

I found this:
1. https://forum.mikrotik.com/viewtopic.php?t=179552
2. https://docs.nycmesh.net/networking/vpnwireguardospf/

The latter one writes: "# Use PtP is going to a Mikrotik Router. BIRD and Mikrotik dont speak the same PTMP".

Indeed, as mentioned above (and linked in the forum), Mikrotik uses 224.0.0.5 in ptmp whereas bird does not.
Does this mean bird is RFC incompliant for ptmp?
What is meant by "BIRD and Mikrotik dont speak the same PTMP" ?

> > For this reason I went for nbma.
> >
> > Now I have tried ptmp and magically the two see each other now. Does make ZERO sense to me.
> > Why would ptmp work and nbma not?
> > I literally just replaced "nbma" with "ptmp" (kept "neighbors" the same, for example).
>
> I am not sure whether NBMA in BIRD works with /31 prefixes. These are
> really ptp prefixes and are usually used with PtP mode. Could you try
> /30 prefix?

I just did.
No change unfortunately.

As initially reported, both OSPF hello messages show up on both ends via tcpcump and both ends do not show the neighbor at all.
When I just change "nbma" to "ptmp" it works again.

Crazy!!

> Although technically, Wireguard is more PtMP than NBMA, but for two peers
> it should not matter.

I think for this wireguard link I may be happy with ptmp but I also have a link with a Mikrotik router over GRE that doesn't work either. broadcast and ptp for some reason do not work; ptmp does not work because they are not the same so what's left is nbma which seems to work on Mikrotik side. For this reason I'd like to understand why the heck nbma does not even work between two birds.
Regardless, I will open a new thread for the Mikrotik one.

> > What are the exact conditions that the other station shows up as OSPF neighbor. I confirmed already with tcpdump that the OSPF Hello packages appear on the interface and both look *identical* (in terms of Hello Timer, Dead Timer, Mask, Priority).
> > What could possible happen that bird would not add such packets to the neighbor list?
>
> It is possible that BIRD just ignores the packet as it does not match its src/dst address.
> You could enable 'debug all' to see if there are Hello packets logged by BIRD.

Oct 20 03:28:54 endpoint2 bird: test: Starting routing table calculation
Oct 20 03:28:54 endpoint2 bird: test: Starting routing table calculation for area 0.0.0.0
Oct 20 03:28:54 endpoint2 bird: test: Starting routing table calculation for inter-area (area 0.0.0.0)
Oct 20 03:28:54 endpoint2 bird: test: Starting routing table calculation for ext routes
Oct 20 03:28:54 endpoint2 bird: test: Starting routing table synchronisation
Oct 20 03:28:54 endpoint2 bird: test > added [best] 192.168.56.228/30 dev wg-tun
Oct 20 03:28:54 endpoint2 bird: test < rejected by protocol 192.168.56.228/30 dev wg-tun
Oct 20 03:28:58 endpoint2 bird: test: Wait timer fired on wg-tun
Oct 20 03:28:58 endpoint2 bird: test: Interface wg-tun changed state from Waiting to DR
Oct 20 03:28:59 endpoint2 bird: test: Updating router state for area 0.0.0.0
Oct 20 03:29:03 endpoint2 bird: test: HELLO packet sent via wg-tun
Oct 20 03:29:05 endpoint2 bird: test: HELLO packet received from nbr 192.168.56.228 on wg-tun
Oct 20 03:29:05 endpoint2 bird: test: Bad HELLO packet from nbr 192.168.56.228 on wg-tun - eligibility mismatch (1)
Oct 20 03:29:13 endpoint2 bird: test: HELLO packet sent via wg-tun
Oct 20 03:29:13 endpoint2 bird: test: HELLO packet sent via wg-tun
Oct 20 03:29:23 endpoint2 bird: test: HELLO packet sent via wg-tun
Oct 20 03:29:25 endpoint2 bird: test: HELLO packet received from nbr 192.168.56.228 on wg-tun
Oct 20 03:29:25 endpoint2 bird: test: Bad HELLO packet from nbr 192.168.56.228 on wg-tun - eligibility mismatch (1)
Oct 20 03:29:34 endpoint2 bird: test: HELLO packet sent via wg-tun
Oct 20 03:29:34 endpoint2 bird: test: HELLO packet sent via wg-tun


Indeed, bad hello packet. But what the heck? Why?

Thanks,
Lukas







More information about the Bird-users mailing list