bird (2.0.4) does not install multipath route in kernel
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@localhost ~]# but kernel route table looks unexpectedly different: root@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@localhost ~]# Kernel looks configured correctly (*CONFIG_IP_ROUTE_MULTIPATH=y), etc.etc.* *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
Sorry, there of course are "protocol kernel" configs. as below: # routing tables with the OS kernel. One instance per table. protocol kernel { ipv4 { # Connect protocol to IPv4 table by channel # table master4; # Default IPv4 table is master4 import all; # Import to table, default is import all export all; # Export to protocol. default is export none }; merge paths yes; metric 10; learn; # Learn alien routes from the kernel # kernel table 10; # Kernel table to synchronize with (default: main) } Ar ---------- Forwarded message --------- Von: Arno O <odermaar@gmail.com> Date: Di., 11. Juni 2019 um 14:18 Uhr Subject: bird (2.0.4) does not install multipath route in kernel To: <bird-users@network.cz> 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@localhost ~]# but kernel route table looks unexpectedly different: root@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@localhost ~]# Kernel looks configured correctly (*CONFIG_IP_ROUTE_MULTIPATH=y), etc.etc.* *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
Hi, Are you sure "netstat -rn" is capable of it on Linux. Try to use "ip route". On Tue, Jun 11, 2019 at 2:40 PM Arno O <odermaar@gmail.com> wrote:
Sorry, there of course are "protocol kernel" configs. as below:
# routing tables with the OS kernel. One instance per table. protocol kernel { ipv4 { # Connect protocol to IPv4 table by channel # table master4; # Default IPv4 table is master4 import all; # Import to table, default is import all export all; # Export to protocol. default is export none }; merge paths yes; metric 10; learn; # Learn alien routes from the kernel # kernel table 10; # Kernel table to synchronize with (default: main) }
Ar ---------- Forwarded message --------- Von: Arno O <odermaar@gmail.com> Date: Di., 11. Juni 2019 um 14:18 Uhr Subject: bird (2.0.4) does not install multipath route in kernel To: <bird-users@network.cz>
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@localhost ~]#
but kernel route table looks unexpectedly different: root@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@localhost ~]#
Kernel looks configured correctly (CONFIG_IP_ROUTE_MULTIPATH=y), etc.etc.
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
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@localhost ~]#
but kernel route table looks unexpectedly different: root@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@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
participants (3)
-
Alexander Zubkov -
Arno O -
Kenth Eriksson