Device protocol not recognizing interface address change

Bernardo Figueiredo bernardopascoalfigueiredo at tecnico.ulisboa.pt
Wed Jul 22 18:50:09 CEST 2015


Hello,

When restarting some routers at the institution I work, sometimes bird 
doesn't start announcing any routes until we either restart bird or 
restart the device protocol using birdc.
I think this happens due to the init scripts responsible for setting the 
network up finishing before the interfaces are fully configured(without 
the ip address set up), which allows for the init scripts dependent of 
the network init script, like bird, to start running. The problem is 
that bird detects that the interfaces are there, but doesn't recognize 
that the machine is configured with ip addresses(because the interfaces 
aren't fully configured yet) in the networks that it is announcing, so 
it doesn't announce the routes.
When this happens:
"bird> show ospf
(...)
                 Area networks:
                                10.3.0.0/16      Advertise
                                10.0.0.0/16      Advertise
                                 (...)
" ( The problem is that the Area networks aren't active).

After restarting the bird process, the output becomes correct(because 
now bird is starting with the interfaces fully configured):
"bird> show ospf
                 Area networks:
                                10.3.0.0/16      Advertise Active
                                10.0.0.0/16      Advertise Active
"

We have the device protocol to scan every 10 seconds in our bird.conf:
"protocol device {
    scan time 10;
}"
I think that even though when bird first starts it shouldn't immediately 
start announcing(because it didn't see that the interfaces ip 
addresses), it should after 10 seconds when it scans again, because then 
the interfaces are already fully configured.
For example, when radvd starts it complains that the interfaces don't 
have ip addresses configured, so it checks every second for the 
interfaces until they are fully configured, and the starts running 
correctly.

Our current working workaround is make the networking init script wait 
for some time before exiting, meaning that when the init dependents 
start executing, the interfaces are already fully configured.
This might work for the machine startup, but it doesn't solve the 
problem when we add a new ip address in a new network to an already 
existing interface and make bird start announcing that network without 
restarting bird (or the interface). I haven't checked that the same 
behaviour described above happens in this situation, but it should. If 
you want me to try it I can.

If I haven't explained some parts clearly just ask and I'll try to 
explain it better. Also, if you need any configuration details just ask.

This problems happens in both bird "1.4.5-1~bpo70+1" and "1.5.0-4" 
distributed by Debian.

So, my question is, shouldn't the Device protocol scan update see that 
the ip addresses of an interface have changed and if so, start 
announcing the route.

Thank you,
Bernardo Figueiredo


More information about the Bird-users mailing list