bird (2.0.4) does not install multipath route in kernel

Kenth Eriksson Kenth.Eriksson at infinera.com
Tue Jun 11 14:36:44 CEST 2019


On Tue, 2019-06-11 at 14:18 +0200, Arno O wrote:
> CAUTION: This email originated from outside of the organization. Do
> not click links or open attachments unless you recognize the sender
> and know the content is safe.
> 
>   This topic was already discussed around March 1st 2019, without
> having received a clear outcome.
> 
> Now, dealing with ECMP with OSPF in Bird 2.04 on Fedora30, I run in
> same problems:
> 
> -> multiple next hops to same destination (50.50.50.0/24)  are in the
> route table of bird:
> bird> sho route
> Table master4:
> 10.10.10.0/24        unicast [OIPv46 13:39:16.979] I (150/10)
> [10.10.10.1]
> dev enp0s3
> 192.168.122.0/24     unicast [OIPv46 13:46:18.979] E2 (150/10/10000)
> [10.10.10.3]
> via 10.10.10.3 on enp0s3
> 50.50.50.0/24        unicast [OIPv46 13:46:18.979] E2 (150/10/100)
> [10.10.10.3]
>                via 10.10.10.2 on enp0s3 weight 11
>                via 10.10.10.3 on enp0s3 weight 11
> bird> 
> [root at localhost ~]#
> 
> but kernel route table looks unexpectedly different:
> root at localhost ~]# netstat -rn
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags   MSS Window
>  irtt Iface
> 10.10.10.0      0.0.0.0         255.255.255.0   U         0 0        
>  0 enp0s3
> 50.50.50.0      10.10.10.2      255.255.255.0   UG        0 0        
>  0 enp0s3
> 192.168.122.0   10.10.10.3      255.255.255.0   UG        0 0        
>  0 enp0s3
> [root at localhost ~]# 
> 
Do you see them if you do 'ip route'? I think iproute2 is better at
displaying multipath routes.

> Kernel looks configured correctly (CONFIG_IP_ROUTE_MULTIPATH=y),
> etc.etc.
> 
If the kernel is mis-configured, I believe you get an error trace in
the bird log. Something along the following lines; 

<WARN> Netlink: Invalid argument

I tested it on 2.0.4 and kernel 4.14.92+ and that seems to work.

> 
> Bird config on ECMPed bird router:
> protocol ospf OIPv46 {
>         tick 2;
>         rfc1583compat yes;
>         ecmp yes limit 8;
>         merge external yes;
>   ipv4 {
>                 import all;
>                 export all;
> };
> area 0 {
> interface "enp0*" {
> # type broadcast; # Detected by default
> cost 10; # Interface metric
>                         ecmp weight 11;
> 
> What is missing either in the bird-config or the kernel part?
> 
> Thx
> 
> BR
> Ar
> 



More information about the Bird-users mailing list