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

Attachment: bird.conf
Description: Binary data

Reply via email to