duplicate device routes on linux

ico ico at petrzalka.net
Mon Feb 20 14:47:39 CET 2023


Hello all,

Here at $work we are using bird for OSPF at some 30 linux boxes. Works 
great. But there is a thing that confuses me:

Let's have some simple linux box:

# ip addr
1: lo: ...rest of loopback output
2: eth0 at if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
state UP group default qlen 1000
     link/ether 86:37:65:15:fa:d9 brd ff:ff:ff:ff:ff:ff link-netns r2
     inet 10.0.0.1/24 scope global eth0
        valid_lft forever preferred_lft forever
# ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1

As you can see, there is single interface with single address, single 
device route automatically generated by kernel. Simple bird config:

# cat bird.conf
# BEGIN bird config
router id 10.0.0.1;
protocol device {
     scan time 3;
}
protocol kernel krnl4 {
     ipv4 {
         table master4;
         import all; export all;
     };
     learn;
}
protocol ospf ospf1 {
     ipv4 {
         table master4;
         import all; export all;
     };
     area 0.0.0.0 {
         stub no;
         interface "eth0" {
             stub yes;
         };
     };
}
# END bird config

When I run bird with this configuration, it inserts another route:

# ip route
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.1
10.0.0.0/24 dev eth0 proto bird scope link metric 32

Is this expected/correct behaviour? Or should I somehow filter those 
device routes out? I want those device routes to be read by OSPF, of 
course, just not to output them back. What is the best way to get rid of 
them?

Another unrelated question: When I run bird, it logs this:

bird: KRT: Netlink strict checking failed, will scan all tables at once
bird: Started

Should I do something about that failed strict check? Is it important or 
only some info message I shouldn't worry about?

Thank you

ico


More information about the Bird-users mailing list