Multi protocol route handling (IPv4 via IPv6)
Hello, I have setup an MP-BGP with 2 bird instances and my aim is to route IPv4 via IPv6, like cumulus is doing it. Currently I receive the IPv4 and IPv6 routes via the IPv6 session, as follows: 58.69.253.0/24 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS36776i] via 2a0a:e5c0:1:8::4 on bond0.8 23.211.0.0/22 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS16625i] via 2a0a:e5c0:1:8::4 on bond0.8 ... However bird seems not to add the routes into the kernel. Testing it manually, I also get an error message: router3:~# ip route add 185.50.77.0/24 via inet6 2a0a:e5c0:1:8::4 RTNETLINK answers: Invalid argument router3:~# uname -a Linux router3 4.19.75-0-vanilla #1-Alpine SMP Mon Sep 23 12:27:20 UTC 2019 x86_64 GNU/Linux router3:~# However using a different test system, it potentially works: [root@diamond ~]# ip route add 185.12.3.0/24 via inet6 2a0a:e5c1:137::136 [root@diamond ~]# uname -a Linux diamond 5.3.8-arch1-1 #1 SMP PREEMPT @1572357769 x86_64 GNU/Linux [root@diamond ~]# Now my question regarding bird: If the kernel / i route actually supports it (as seen in the 2nd system), should bird2 be able to install the IPv4 routes via IPv6 or not? According to the documentation RFC5549 is supported, but as far as I can see that does not state whether or not the interface to the kernel needs to be supported as well. I have also just installed and tested bird 2.0.7 on the system with the 5.3.8 kernel and bird also does not setup the ipv4 route via ipv6: [root@diamond ~]# birdc show route BIRD 2.0.7 ready. Table master4: 10.11.0.0/24 unicast [static4 19:50:31.005] * (200) via 192.168.43.1 on wlp0s20f3 10.10.0.0/24 unicast [static4 19:50:31.005] ! (200) via 2a0a:e5c1:137::136 on wgungleich Table master6: 2001:db8::/32 unicast [static6 19:50:31.005] * (200) via 2a0a:e5c1:137::136 on wgungleich [root@diamond ~]# ip r default via 192.168.43.104 dev wlp0s20f3 proto dhcp src 192.168.43.38 metric 302 10.11.0.0/24 via 192.168.43.1 dev wlp0s20f3 proto bird metric 32 192.168.43.0/24 dev wlp0s20f3 proto dhcp scope link src 192.168.43.38 metric 302 [root@diamond ~]# cat /etc/bird.conf router id 192.168.1.1; protocol kernel kernel4 { ipv4 { import all; export all; }; } protocol kernel kernel6 { ipv6 { import all; export all; }; } protocol static static4 { ipv4; # this doesn't work route 10.10.0.0/24 via 2a0a:e5c1:137::136; # this works route 10.11.0.0/24 via 192.168.43.1; } protocol static static6 { ipv6; route 2001:db8::/32 via 2a0a:e5c1:137::136; } protocol device { scan time 10; } [root@diamond ~]# If I read https://bird.network.cz/pipermail/bird-users/2019-March/013144.html correctly, the exclamation mark in the route output means it had a problem pushing it into the kernel. However doing it manually, works as expected: [root@diamond ~]# ip route add 10.10.0.0/24 via inet6 2a0a:e5c1:137::136 [root@diamond ~]# ip r default via 192.168.43.104 dev wlp0s20f3 proto dhcp src 192.168.43.38 metric 302 10.10.0.0/24 via inet6 2a0a:e5c1:137::136 dev wgungleich 10.11.0.0/24 via 192.168.43.1 dev wlp0s20f3 proto bird metric 32 192.168.43.0/24 dev wlp0s20f3 proto dhcp scope link src 192.168.43.38 metric 302 [root@diamond ~]# Sorry for the long mail, I hope it is understandable what I am trying to achieve. Best, Nico -- Modern, affordable, Swiss Virtual Machines. Visit www.datacenterlight.ch
On Sat, Nov 09, 2019 at 07:58:43PM +0100, Nico Schottelius wrote:
Hello,
I have setup an MP-BGP with 2 bird instances and my aim is to route IPv4 via IPv6, like cumulus is doing it.
Currently I receive the IPv4 and IPv6 routes via the IPv6 session, as follows:
58.69.253.0/24 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS36776i] via 2a0a:e5c0:1:8::4 on bond0.8 23.211.0.0/22 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS16625i] via 2a0a:e5c0:1:8::4 on bond0.8 ...
Now my question regarding bird:
If the kernel / i route actually supports it (as seen in the 2nd system), should bird2 be able to install the IPv4 routes via IPv6 or not?
Hello It was implemented in BIRD before Linux kernel got the support, so kernel interface was not tested and it is likely it would need some more work now when it is supported by Linux. Thanks for notification, i did not know that Linux got the support. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
On Sat, Nov 09, 2019 at 07:58:43PM +0100, Nico Schottelius wrote:
Hello,
I have setup an MP-BGP with 2 bird instances and my aim is to route IPv4 via IPv6, like cumulus is doing it.
Currently I receive the IPv4 and IPv6 routes via the IPv6 session, as follows:
58.69.253.0/24 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS36776i] via 2a0a:e5c0:1:8::4 on bond0.8 23.211.0.0/22 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS16625i] via 2a0a:e5c0:1:8::4 on bond0.8 ... Now my question regarding bird:
If the kernel / i route actually supports it (as seen in the 2nd system), should bird2 be able to install the IPv4 routes via IPv6 or not?
Hello Fixed in git: https://gitlab.labs.nic.cz/labs/bird/commit/53401bef63013dfee01b65d071ffbd88... Now works even with ECMP: # ip r l 10.0.10.0/24 proto bird metric 32 nexthop via inet6 2001:1488:fffe:6::1 dev eth0 weight 1 nexthop via inet6 2001:1488:fffe:6::2 dev eth0 weight 1 -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
Hey Ondrej, very nice and also nice short patch! Do you plan to create a new release soon? Otherise I'll give it a try from git directly. Best regards, Nico Ondrej Zajicek <santiago@crfreenet.org> writes:
On Sat, Nov 09, 2019 at 07:58:43PM +0100, Nico Schottelius wrote:
Hello,
I have setup an MP-BGP with 2 bird instances and my aim is to route IPv4 via IPv6, like cumulus is doing it.
Currently I receive the IPv4 and IPv6 routes via the IPv6 session, as follows:
58.69.253.0/24 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS36776i] via 2a0a:e5c0:1:8::4 on bond0.8 23.211.0.0/22 unicast [router2_place5_ungleich_ch_v6 18:11:21.625] ! (100) [AS16625i] via 2a0a:e5c0:1:8::4 on bond0.8 ... Now my question regarding bird:
If the kernel / i route actually supports it (as seen in the 2nd system), should bird2 be able to install the IPv4 routes via IPv6 or not?
Hello
Fixed in git:
https://gitlab.labs.nic.cz/labs/bird/commit/53401bef63013dfee01b65d071ffbd88...
Now works even with ECMP:
# ip r l 10.0.10.0/24 proto bird metric 32 nexthop via inet6 2001:1488:fffe:6::1 dev eth0 weight 1 nexthop via inet6 2001:1488:fffe:6::2 dev eth0 weight 1
-- Modern, affordable, Swiss Virtual Machines. Visit www.datacenterlight.ch
On Wed, Nov 13, 2019 at 05:16:57PM +0100, Nico Schottelius wrote:
Hey Ondrej,
very nice and also nice short patch!
Do you plan to create a new release soon? Otherise I'll give it a try from git directly.
Probably during 2019-12. -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: santiago@crfreenet.org) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
participants (2)
-
Nico Schottelius -
Ondrej Zajicek