What could be reason of route not propagating from LSA to routing table ?
Hi, I'm trying to replace one of our Junipers and I've come up with bizzare problem. I'm trying to run OSPF instance on VRF (I don't think problem is VRF related, I tried without VRF and it's same result) and I see both peers and the LSA database are getting filled ☠ ip r sh vrf vrf-core 10.30.0.0/31 dev b-swcore.3011 proto kernel scope link src 10.30.0.0 10.30.0.4/31 dev b-swcore.3012 proto kernel scope link src 10.30.0.4 10.30.1.0/31 dev b-swcore.3000 proto kernel scope link src 10.30.1.0 bird> show ospf neighbors core: Router ID Pri State DTime Interface Router IP 10.100.1.1 1 Full/PtP 37.905 b-swcore.3011 10.30.0.1 10.100.1.2 1 Full/PtP 37.904 b-swcore.3012 10.30.0.5 193.200.227.2 128 Full/PtP 39.907 b-swcore.3000 10.30.1.1 bird> show ospf state area 0.0.0.0 router 193.200.227.1 distance 0 router 10.100.1.1 metric 10 router 10.100.1.2 metric 10 router 193.200.227.2 metric 10 stubnet 193.200.227.1/32 metric 0 stubnet 10.30.1.0/31 metric 10 stubnet 10.30.0.0/31 metric 10 stubnet 10.30.0.4/31 metric 10 stubnet 10.30.1.0/31 metric 10 bird> show ospf topology area 0.0.0.0 router 193.200.227.1 distance 0 router 10.100.1.1 metric 10 router 10.100.1.2 metric 10 router 193.200.227.2 metric 10 bird> show protocols Name Proto Table State Since Info device1 Device --- up 2026-02-11 15:43:43.320 kcore Kernel master4 up 2026-02-11 15:43:43.320 core OSPF master4 up 2026-02-11 15:43:43.320 Running (kcore is fetching from VRF kernel table to the main bird table) config is very bare bones protocol ospf core { vrf "vrf-core"; ipv4 { import keep filtered on; import all; export all; }; area 0 { interface "b-swcore.30*" { }; interface "vrf-core" { stub; }; }; }; protocol kernel kcore { kernel table 1002; learn all; ipv4 { export none; import all; }; }; but I'm only getting my own routes bird> show route Table master4: 10.30.1.0/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3000 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3000 10.30.0.0/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3011 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3011 10.30.0.4/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3012 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3012 193.200.227.1/32 unicast [core 2026-02-11 16:21:37.684] * I (150/0) [193.200.227.1] dev vrf-core bird> So far I tried running it outside of VRF and adding some PtP related options to OSPF but it didn't change anything I'm getting warnings about broadcast address Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3011 Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3012 Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3000 but those appear to be unrelated, I've changed one of the /31 links to /30 and nothing changed Version is 3.1.0 from Debian package but I also tried to downgrade to 2.x with no effect. The P2P links are just vlans to juniper and our 2 core switches on other side I also get no routes xani@r2> show ospf database advertising-router 193.200.227.1 OSPF database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len Router 193.200.227.1 193.200.227.1 0x80000060 347 0x42 0xadd4 108 while at same time getting some bird> show ospf lsadb router 193.200.227.1 Area 0.0.0.0 Type LS ID Router Sequence Age Checksum 0001 193.200.227.1 193.200.227.1 80000076 76 cd17 bird> show ospf lsadb router 193.200.227.2 Global Type LS ID Router Sequence Age Checksum 0005 88.156.75.236 193.200.227.2 8000c3e1 1249 3340 0005 193.200.227.2 193.200.227.2 8002a08f 2150 7d23 0005 194.50.132.0 193.200.227.2 80006374 1849 a24f 0005 194.50.134.0 193.200.227.2 80006374 648 8c63 0005 194.50.135.0 193.200.227.2 80006373 1549 836c 0005 212.91.10.200 193.200.227.2 800019e7 948 1b27 0005 0.0.0.0 193.200.227.2 80001b60 48 9334 0005 46.28.244.72 193.200.227.2 80018367 349 339f Area 0.0.0.0 Type LS ID Router Sequence Age Checksum 0001 193.200.227.2 193.200.227.2 8002a1f5 87 074e 0002 10.30.1.1 193.200.227.2 80000001 87 427e I did try to run very simple equivalent OSPF config on FRR and it "just worked" so needless to say I'm very confused by the issue. Any ideas how I can even debug what's happening in the first place ? Regards -- Mariusz Gronczewski (XANi) <xani+bird@devrandom.pl> GnuPG: 0xEA8ACE64 https://devrandom.eu
I have dug some more and tried to change network interface setting on 10.30.1.0/31 RFC 3021 link (no broadcast), doesn't propagate route on 10.30.1.1/30 link, doesn't propagate routes on 10.30.1.1/29 link, propagates routes just fine Similar setup "just works" in FRR so I'm now very confused on what is happening. Setup is 3 devices (other router and core L3 switches) all with separate VLAN and /31 assigned to it. Regards Mariusz On Wed, 11 Feb 2026 16:57:09 +0100 Mariusz Gronczewski <xani+bird@devrandom.pl> wrote:
Hi,
I'm trying to replace one of our Junipers and I've come up with bizzare problem.
I'm trying to run OSPF instance on VRF (I don't think problem is VRF related, I tried without VRF and it's same result) and I see both peers and the LSA database are getting filled
☠ ip r sh vrf vrf-core 10.30.0.0/31 dev b-swcore.3011 proto kernel scope link src 10.30.0.0 10.30.0.4/31 dev b-swcore.3012 proto kernel scope link src 10.30.0.4 10.30.1.0/31 dev b-swcore.3000 proto kernel scope link src 10.30.1.0
bird> show ospf neighbors core: Router ID Pri State DTime Interface Router IP 10.100.1.1 1 Full/PtP 37.905 b-swcore.3011 10.30.0.1 10.100.1.2 1 Full/PtP 37.904 b-swcore.3012 10.30.0.5 193.200.227.2 128 Full/PtP 39.907 b-swcore.3000 10.30.1.1
bird> show ospf state
area 0.0.0.0
router 193.200.227.1 distance 0 router 10.100.1.1 metric 10 router 10.100.1.2 metric 10 router 193.200.227.2 metric 10 stubnet 193.200.227.1/32 metric 0 stubnet 10.30.1.0/31 metric 10 stubnet 10.30.0.0/31 metric 10 stubnet 10.30.0.4/31 metric 10 stubnet 10.30.1.0/31 metric 10 bird> show ospf topology
area 0.0.0.0
router 193.200.227.1 distance 0 router 10.100.1.1 metric 10 router 10.100.1.2 metric 10 router 193.200.227.2 metric 10
bird> show protocols Name Proto Table State Since Info device1 Device --- up 2026-02-11 15:43:43.320 kcore Kernel master4 up 2026-02-11 15:43:43.320 core OSPF master4 up 2026-02-11 15:43:43.320 Running
(kcore is fetching from VRF kernel table to the main bird table)
config is very bare bones
protocol ospf core { vrf "vrf-core"; ipv4 { import keep filtered on; import all; export all;
}; area 0 { interface "b-swcore.30*" {
}; interface "vrf-core" { stub; };
};
};
protocol kernel kcore { kernel table 1002; learn all; ipv4 { export none; import all;
};
};
but I'm only getting my own routes
bird> show route Table master4: 10.30.1.0/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3000 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3000 10.30.0.0/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3011 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3011 10.30.0.4/31 unicast [core 2026-02-11 16:21:37.684] * I (150/10) [193.200.227.1] dev b-swcore.3012 unicast [kcore 2026-02-11 16:21:38.584] (10) dev b-swcore.3012 193.200.227.1/32 unicast [core 2026-02-11 16:21:37.684] * I (150/0) [193.200.227.1] dev vrf-core bird>
So far I tried running it outside of VRF and adding some PtP related options to OSPF but it didn't change anything I'm getting warnings about broadcast address
Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3011 Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3012 Feb 11 16:21:37 d1-r1 bird[7194]: Missing broadcast address for interface b-swcore.3000
but those appear to be unrelated, I've changed one of the /31 links to /30 and nothing changed
Version is 3.1.0 from Debian package but I also tried to downgrade to 2.x with no effect.
The P2P links are just vlans to juniper and our 2 core switches
on other side I also get no routes
xani@r2> show ospf database advertising-router 193.200.227.1
OSPF database, Area 0.0.0.0 Type ID Adv Rtr Seq Age Opt Cksum Len Router 193.200.227.1 193.200.227.1 0x80000060 347 0x42 0xadd4 108
while at same time getting some
bird> show ospf lsadb router 193.200.227.1
Area 0.0.0.0
Type LS ID Router Sequence Age Checksum 0001 193.200.227.1 193.200.227.1 80000076 76 cd17 bird> show ospf lsadb router 193.200.227.2
Global
Type LS ID Router Sequence Age Checksum 0005 88.156.75.236 193.200.227.2 8000c3e1 1249 3340 0005 193.200.227.2 193.200.227.2 8002a08f 2150 7d23 0005 194.50.132.0 193.200.227.2 80006374 1849 a24f 0005 194.50.134.0 193.200.227.2 80006374 648 8c63 0005 194.50.135.0 193.200.227.2 80006373 1549 836c 0005 212.91.10.200 193.200.227.2 800019e7 948 1b27 0005 0.0.0.0 193.200.227.2 80001b60 48 9334 0005 46.28.244.72 193.200.227.2 80018367 349 339f
Area 0.0.0.0
Type LS ID Router Sequence Age Checksum 0001 193.200.227.2 193.200.227.2 8002a1f5 87 074e 0002 10.30.1.1 193.200.227.2 80000001 87 427e
I did try to run very simple equivalent OSPF config on FRR and it "just worked" so needless to say I'm very confused by the issue. Any ideas how I can even debug what's happening in the first place ?
Regards
-- Mariusz Gronczewski (XANi) <xani+bird@devrandom.pl> GnuPG: 0xEA8ACE64 https://devrandom.eu
On Tue, Feb 17, 2026 at 05:23:50PM +0100, Mariusz Gronczewski wrote:
I have dug some more and tried to change network interface setting
on 10.30.1.0/31 RFC 3021 link (no broadcast), doesn't propagate route on 10.30.1.1/30 link, doesn't propagate routes on 10.30.1.1/29 link, propagates routes just fine
Similar setup "just works" in FRR so I'm now very confused on what is happening.
Setup is 3 devices (other router and core L3 switches) all with separate VLAN and /31 assigned to it.
Hi Isn't that just mismatched ptp/broadcast mode? BIRD defaults to ptp mode for /30 and similar networks, but i thought that in mismatch mode it would not even make an adjacency. But perhaps it makes adjacency, just not work correctly. Try setting explicitly broadcast mode (or ptp mode on the other side). -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
On Tue, 17 Feb 2026 17:48:54 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Tue, Feb 17, 2026 at 05:23:50PM +0100, Mariusz Gronczewski wrote:
I have dug some more and tried to change network interface setting
on 10.30.1.0/31 RFC 3021 link (no broadcast), doesn't propagate route on 10.30.1.1/30 link, doesn't propagate routes on 10.30.1.1/29 link, propagates routes just fine
Similar setup "just works" in FRR so I'm now very confused on what is happening.
Setup is 3 devices (other router and core L3 switches) all with separate VLAN and /31 assigned to it.
Hi
Isn't that just mismatched ptp/broadcast mode? BIRD defaults to ptp mode for /30 and similar networks, but i thought that in mismatch mode it would not even make an adjacency. But perhaps it makes adjacency, just not work correctly.
Try setting explicitly broadcast mode (or ptp mode on the other side).
First, thanks for help, I didn't thought about trying to change stuff on the router/switch side ("it was working fine before") and forcing Juniper/Brocade side to PtP was enough. I tried every option on Bird side, didn't help, setting it to p2p on the router/switch side worked, but I'm more confused than before because: * the other devices talked between them just fine (in similar /31 vlans without PtP being explicitly set) * the same setup in FRR worked just fine (not needing to set PtP there too) * the same setup with 2 Bird instances (albeit thru wireguard tunnels) also works fine (PtP mode is enabled automatically) It just... established connection, filled the LSADB then refused to propagate it further Cheers Mariusz -- Mariusz Gronczewski (XANi) <xani+bird@devrandom.pl> GnuPG: 0xEA8ACE64 https://devrandom.eu
On Tue, Feb 17, 2026 at 07:16:03PM +0100, Mariusz Gronczewski wrote:
Hi
Isn't that just mismatched ptp/broadcast mode? BIRD defaults to ptp mode for /30 and similar networks, but i thought that in mismatch mode it would not even make an adjacency. But perhaps it makes adjacency, just not work correctly.
Try setting explicitly broadcast mode (or ptp mode on the other side).
First, thanks for help, I didn't thought about trying to change stuff on the router/switch side ("it was working fine before") and forcing Juniper/Brocade side to PtP was enough.
I tried every option on Bird side, didn't help, setting it to p2p on the router/switch side worked, but I'm more confused than before because:
Setting 'type broadcast' for the interface on BIRD side (when router/switch side was not set to ptp) with /30 did not work? (i am not sure about /31) You can also use 'show ospf interface' to see which mode (type) is used on the interface.
* the other devices talked between them just fine (in similar /31 vlans without PtP being explicitly set) * the same setup in FRR worked just fine (not needing to set PtP there too) * the same setup with 2 Bird instances (albeit thru wireguard tunnels) also works fine (PtP mode is enabled automatically)
I think other devices always defaults to broadcast mode on ethernet, while BIRD defaults to ptp mode when an opposite address is known (i.e. /30, /31, /32 with peer address). -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) "To err is human -- to blame it on a computer is even more so."
On Tue, 17 Feb 2026 20:13:02 +0100 Ondrej Zajicek <santiago@crfreenet.org> wrote:
On Tue, Feb 17, 2026 at 07:16:03PM +0100, Mariusz Gronczewski wrote:
Hi
Isn't that just mismatched ptp/broadcast mode? BIRD defaults to ptp mode for /30 and similar networks, but i thought that in mismatch mode it would not even make an adjacency. But perhaps it makes adjacency, just not work correctly.
Try setting explicitly broadcast mode (or ptp mode on the other side).
First, thanks for help, I didn't thought about trying to change stuff on the router/switch side ("it was working fine before") and forcing Juniper/Brocade side to PtP was enough.
I tried every option on Bird side, didn't help, setting it to p2p on the router/switch side worked, but I'm more confused than before because:
Setting 'type broadcast' for the interface on BIRD side (when router/switch side was not set to ptp) with /30 did not work?
(i am not sure about /31)
I've checked it now and it worked when forcing broadcast on Bird (I think I forgot to check broadcast before). So in short when Bird auto-defaulted to PtP and other router did broadcast I had Full/PtP state on Bird side and Full state on the Juniper (but no routes put into Bird routing table) But in reverse situation, when I forced Juniper to run PtP and forced Bird to run brodcast, the connection did not establish at all. So I'm confused why it even established in the first place
You can also use 'show ospf interface' to see which mode (type) is used on the interface.
* the other devices talked between them just fine (in similar /31 vlans without PtP being explicitly set) * the same setup in FRR worked just fine (not needing to set PtP there too) * the same setup with 2 Bird instances (albeit thru wireguard tunnels) also works fine (PtP mode is enabled automatically)
I think other devices always defaults to broadcast mode on ethernet, while BIRD defaults to ptp mode when an opposite address is known (i.e. /30, /31, /32 with peer address).
Yeah I just kinda assumed the other devices did the logical thing here Cheers Mariusz -- Mariusz Gronczewski (XANi) <xani+bird@devrandom.pl> GnuPG: 0xEA8ACE64 https://devrandom.eu
participants (2)
-
Mariusz Gronczewski -
Ondrej Zajicek