Well, some observations: You need to make sure that the dhcp client assigns the default routes with different metrics so they appear in the kernel routing table in the first place. Also it appears like bird imports only the first default route: # bird.conf filter test { print net, " interface: ", ifname; accept; } protocol kernel { ipv4 { import filter test; export none; }; learn; } root@host-1:/etc/bird# ip r default via 172.21.0.1 dev bond0.300 default via 172.21.101.1 dev eno1 metric 200 <... snip ...> root@host-1:/etc/bird# birdc show route all BIRD 2.0.7 ready. Table master4: 0.0.0.0/0 unicast [kernel1 21:54:15.332] (10) via 172.21.0.1 on bond0.300 Type: inherit univ Kernel.source: 3 Kernel.metric: 0 I assume this is an intended behavior, because a second route with a higher metric would usually not be used? Greetings Jo