On Fri, 10 Jul 2026 18:31:42 +0200 Maria Matejka <[email protected]> wrote:
> This smells of a runaway hostentry resolution cycle or something like
> that. Do you have some "minimal reproducer" then, which causes this
> godzilla to emerge? It is probably not easy to fix but we'd like to
> try.
>
> Thanks!
Try the attached config. Thankfully it appears to be reproducible with
no dependencies. It appears to be Bird2 -> 3 regression I have tested
on 3.3.1 and on 3.1.7 vs 2.19.1 (both from Debian)
It's a static protocol with few routes with different preferences
attached to a separate table and the routes are moved off this table to
the master one via pipe protocol.
Now, if static is attached directly to table it works fine. But doing
it thru pipe starts the loop:
bird> show memory
BIRD memory usage
Effective Overhead
Routing tables: 11.8 MB 1145.0 kB
Route attributes: 12.8 MB 252.9 kB
Protocols: 39.3 kB 3520.0 B
Current config: 8351.0 B 504.0 B
Standby memory: 0.0 B 188.0 kB
Total: 24.8 MB 1628.1 kB
Active pages: 25.6 MB
Kept free pages: 188.0 kB
Cold free pages: 0.0 B
Hot page cache depleted while in RCU: 0
bird> show memory
BIRD memory usage
Effective Overhead
Routing tables: 12.5 MB 1213.2 kB
Route attributes: 13.5 MB 263.5 kB
Protocols: 39.3 kB 3520.0 B
Current config: 8351.0 B 504.0 B
Standby memory: 0.0 B 200.0 kB
Total: 26.3 MB 1718.9 kB
Active pages: 27.1 MB
Kept free pages: 200.0 kB
Cold free pages: 0.0 B
Hot page cache depleted while in RCU: 0
bird> show route count
5 of 5 routes for 1 networks in table master4
0 of 0 routes for 0 networks in table master6
Total: 5 of 5 routes for 1 networks in 2 tables
and disabling the pipe stops it
bird> disable pipe_generated
pipe_generated: disabled
bird> show memory
BIRD memory usage
Effective Overhead
Routing tables: 295.1 kB 29.3 kB
Route attributes: 28.4 kB 59.5 kB
Protocols: 7217.0 B 2048.0 B
Current config: 8351.0 B 504.0 B
Standby memory: 0.0 B 55.7 MB
Total: 483.1 kB 55.8 MB
Active pages: 204.0 kB
Kept free pages: 55.7 MB
Cold free pages: 0.0 B
Hot page cache depleted while in RCU: 0
kinda feels like putting pipe in-between fucks with some logic but that
doesn't explain the memory growth, just the route churn, and it all
appears to be in the pipe protocol:
bird> show protocols all
Name Proto Table State Since Info
pipe_generated Pipe --- up 2026-07-13 11:08:28 master4 <=>
generated_t
Created: 2026-07-13 11:08:28
Channel main
Table: master4
Peer table: generated_t
Import state: READY
Export state: READY
Import filter: ACCEPT
Export filter: REJECT
Routes: 5 imported, 0 exported
Route change stats: received rejected filtered ignored accepted
Import updates: 409490 0 0 5 204745
Import withdraws: 0 0 --- 0 0
Export updates: 409480 204740 0 0 0
Export withdraws: 0 0 --- 0 0
device1 Device --- up 2026-07-13 11:08:28
Created: 2026-07-13 11:08:28
generated Static generated_t up 2026-07-13 11:08:28
Created: 2026-07-13 11:08:28
Channel ipv4
State: UP
Import state: UP
Export state: DOWN
Table: generated_t
Preference: 200
Input filter: ACCEPT
Output filter: REJECT
Routes: 5 imported, 0 exported, 1 preferred
Route change stats: received rejected filtered ignored RX
limit limit accepted
Import updates: 5 0 0 0
0 0 5
Import withdraws: 0 0 --- 0
--- --- 0
Export updates: 0 0 0 0
--- 0 0
Export withdraws: 0 --- --- 0
--- --- 0
for comparison, bird2 :
☠ birdc
BIRD 2.19.1 ready.
bird> show protocols all
Name Proto Table State Since Info
device1 Device --- up 2026-07-13 11:14:05
generated Static generated_t up 2026-07-13 11:14:05
Channel ipv4
State: UP
Table: generated_t
Preference: 200
Input filter: ACCEPT
Output filter: REJECT
Routes: 5 imported, 0 exported, 1 preferred
Route change stats: received rejected filtered ignored accepted
Import updates: 5 0 0 0 5
Import withdraws: 0 0 --- 0 0
Export updates: 0 0 0 --- 0
Export withdraws: 0 --- --- --- 0
pipe_generated Pipe --- up 2026-07-13 11:14:05 master4 <=>
generated_t
Channel main
Table: master4
Peer table: generated_t
Import state: up
Export state: up
Import filter: ACCEPT
Export filter: REJECT
Routes: 5 imported, 0 exported
Route change stats: received rejected filtered ignored accepted
Import updates: 10 0 0 0 10
Import withdraws: 0 0 --- 0 0
Export updates: 10 10 0 0 0
Export withdraws: 0 0 --- 0 0
>
> Maria
>
> On Fri, Jul 10, 2026 at 05:58:43PM +0200, Mariusz Gronczewski wrote:
>
> > On Fri, 10 Jul 2026 17:23:54 +0200
> > Mariusz Gronczewski <[email protected]> wrote:
> >
> >
> > > Now 0.0.0.0/0 isnt imported from any peer (dropped on filters),
> > > and only generated in static and then distributed to OSPF:
> > >
> >
> > That was incorrect. I had kernel import filter set to all so it
> > imported 0.0.0.0/0 route
> >
> > and kernel export filter also allowed 0.0.0.0/0 route
> >
> > however fixing that (no 0.0.0.0/0 exported to kernel any more)
> > didn't fix the problem
> >
> > removing all but one generated route
> >
> >
> > protocol static generated {
> > ipv4 {
> > table generated_t;
> >
> > };
> > check link;
> > igp table master4;
> > route 193.200.227.0/24 blackhole;
> > route 194.50.132.0/22 blackhole;
> > route 0.0.0.0/0 recursive 8.8.8.8 {
> > preference=500;
> >
> > };
> >
> >
> > };
> >
> > seems to fix it however I don't know why... the previous config just
> > showed 0.0.0.0/0 in bird with multiple hops based on preference.
> >
> >
> > --
> > Mariusz Gronczewski (XANi) <[email protected]>
> > GnuPG: 0xEA8ACE64
> > https://devrandom.eu
>
--
Mariusz Gronczewski (XANi) <[email protected]>
GnuPG: 0xEA8ACE64
https://devrandom.eu
bird.conf
Description: Binary data
