OSPF unexpectedly adds /128 interface route
hello, i have an interface with a /64 address configured: # ifconfig bridge0.500 bridge0.500: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=0 ether 58:9c:fc:10:8d:b4 inet6 fe80::1%bridge0.500/64 scopeid 0x1c inet6 fd13:480d:2ffa:3::1/64 groups: vlan vlan: 500 vlanproto: 802.1q vlanpcp: 0 parent interface: bridge0 nd6 options=1<PERFORMNUD> this is configured as an OSPF stub interface in BIRD: protocol ospf v3 core { area 0 { interface "bridge0.500" { stub yes; }; ... however, BIRD only adds a /128 route into the OSPF database: # birdc show route in fd13:480d:2ffa:3::/64 BIRD 3.2.0 ready. Table master6: fd13:480d:2ffa:3::1/128 unicast [core 13:25:02.965] ! I (150/0) [176.126.243.164] dev bridge0.500 fd13:480d:2ffa:3::/64 unicast [direct1 13:38:01.578] * (240) dev bridge0.500 i would have expected it to add the /64 route instead. filtering the /64 route in the direct protocol does not make any difference, except that the direct route disappears from 'show route'. am i doing something wrong? the entire configuration is here: https://www.le-fay.org/tmp/30d/bird.conf using BIRD 3.2.0 on FreeBSD 15.0.
On Sun, May 10, 2026 at 01:42:07PM +0100, Lexi Winter wrote:
hello,
i have an interface with a /64 address configured:
# ifconfig bridge0.500 bridge0.500: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=0 ether 58:9c:fc:10:8d:b4 inet6 fe80::1%bridge0.500/64 scopeid 0x1c inet6 fd13:480d:2ffa:3::1/64 groups: vlan vlan: 500 vlanproto: 802.1q vlanpcp: 0 parent interface: bridge0 nd6 options=1<PERFORMNUD>
this is configured as an OSPF stub interface in BIRD:
protocol ospf v3 core { area 0 { interface "bridge0.500" { stub yes; }; ...
however, BIRD only adds a /128 route into the OSPF database:
# birdc show route in fd13:480d:2ffa:3::/64 BIRD 3.2.0 ready. Table master6: fd13:480d:2ffa:3::1/128 unicast [core 13:25:02.965] ! I (150/0) [176.126.243.164] dev bridge0.500 fd13:480d:2ffa:3::/64 unicast [direct1 13:38:01.578] * (240) dev bridge0.500
i would have expected it to add the /64 route instead. filtering the /64 route in the direct protocol does not make any difference, except that the direct route disappears from 'show route'.
Hello There are two reasons why it could generate /128 route instead of /64. Either BIRD thinks there is link down in the interface, or it is confused by its type and handles the interface as PtMP. You can try 'show ospf interface' command, it should give you type and state. You could disable link-down check, or force broadcast type. -- 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."
Ondrej Zajicek wrote in <agG8FCXbKhBjqsvg@feanor>:
On Sun, May 10, 2026 at 01:42:07PM +0100, Lexi Winter wrote:
i have an interface with a /64 address configured: [...] however, BIRD only adds a /128 route into the OSPF database
There are two reasons why it could generate /128 route instead of /64. Either BIRD thinks there is link down in the interface, or it is confused by its type and handles the interface as PtMP.
thanks. setting 'check link no' fixed the problem, but i'm not sure i understand why. on the host, the interface is up: bridge0.500: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 but BIRD considers it down (LinkDown): bridge0.500 up (index=28) MultiAccess Broadcast Multicast AdminUp LinkDown MTU=1500 fe80::1/64 (Preferred, scope link) fd13:480d:2ffa:3::1/64 (Preferred, scope site) looking at another interface that BIRD considers LinkUp: bridge0 up (index=27) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=9000 i see it has the LOWER_UP flag in ifconfig: bridge0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 9000 so, it seems like the problem is that the host system isn't setting this flag on the vlan interface, even though it probably should be set since the underlying interface is up. does that seem like a reasonable explanation for this behaviour? if so, i will go away and see if we can fix the host :-)
On Mon, May 11, 2026 at 12:48:48PM +0100, Lexi Winter wrote:
Ondrej Zajicek wrote in <agG8FCXbKhBjqsvg@feanor>:
On Sun, May 10, 2026 at 01:42:07PM +0100, Lexi Winter wrote:
i have an interface with a /64 address configured: [...] however, BIRD only adds a /128 route into the OSPF database
There are two reasons why it could generate /128 route instead of /64. Either BIRD thinks there is link down in the interface, or it is confused by its type and handles the interface as PtMP.
thanks. setting 'check link no' fixed the problem, but i'm not sure i understand why.
on the host, the interface is up:
bridge0.500: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
but BIRD considers it down (LinkDown):
bridge0.500 up (index=28) MultiAccess Broadcast Multicast AdminUp LinkDown MTU=1500 fe80::1/64 (Preferred, scope link) fd13:480d:2ffa:3::1/64 (Preferred, scope site)
looking at another interface that BIRD considers LinkUp:
bridge0 up (index=27) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=9000
i see it has the LOWER_UP flag in ifconfig:
bridge0: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric 0 mtu 9000
so, it seems like the problem is that the host system isn't setting this flag on the vlan interface, even though it probably should be set since the underlying interface is up.
does that seem like a reasonable explanation for this behaviour? if so, i will go away and see if we can fix the host :-)
Yes, that looks like the right explanation. Not sure if it is a missing implementation in kernel or a bad assumption on BIRD part. -- 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."
participants (2)
-
Lexi Winter -
Ondrej Zajicek