Hi all. I'm try to get working ecmp with ipv6 and bird 1.4. Now i'm not understand why routes to test ip installed and removed after 3-5 seconds. Can somebody helps me? In log i have : Apr 6 15:14:31 rl01 bird6: device1: Scanning interfaces Apr 6 15:14:31 rl01 bird6: kernel1: Scanning routing table Apr 6 15:14:31 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: will be updated Apr 6 15:14:31 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: already seen Apr 6 15:14:31 rl01 bird6: kernel1: Pruning table master Apr 6 15:14:31 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: updating Apr 6 15:14:31 rl01 bird6: Netlink: No such process Apr 6 15:14:31 rl01 bird6: kernel1: Pruning inherited routes Apr 6 15:14:32 rl01 bird6: radv1: Timer fired on eth1 Apr 6 15:14:32 rl01 bird6: radv1: Sending RA via eth1 Apr 6 15:14:32 rl01 bird6: radv1: Timer fired on eth0 Apr 6 15:14:32 rl01 bird6: radv1: Sending RA via eth0 Apr 6 15:14:32 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a719 via eth1 Apr 6 15:14:32 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a718 via eth0 Apr 6 15:14:37 rl01 bird6: device1: Scanning interfaces Apr 6 15:14:37 rl01 bird6: kernel1: Scanning routing table Apr 6 15:14:37 rl01 bird6: kernel1: Pruning table master Apr 6 15:14:37 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: reinstalling Apr 6 15:14:37 rl01 bird6: kernel1: Pruning inherited routes Apr 6 15:14:37 rl01 bird6: ospf1: HELLO packet sent via eth1 Apr 6 15:14:37 rl01 bird6: ospf1: HELLO packet sent via eth0 Apr 6 15:14:37 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a719 via eth1 Apr 6 15:14:37 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a718 via eth0 Apr 6 15:14:42 rl01 bird6: ospf1: HELLO packet sent via eth0 Apr 6 15:14:42 rl01 bird6: ospf1: HELLO packet sent via eth1 Apr 6 15:14:42 rl01 bird6: device1: Scanning interfaces Apr 6 15:14:42 rl01 bird6: kernel1: Scanning routing table Apr 6 15:14:42 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: will be updated Apr 6 15:14:42 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: already seen Apr 6 15:14:42 rl01 bird6: kernel1: Pruning table master Apr 6 15:14:42 rl01 bird6: kernel1: 2001:db8:0:f101:ccde:85ff:fe22:ec43/128: updating Apr 6 15:14:42 rl01 bird6: Netlink: No such process Apr 6 15:14:42 rl01 bird6: kernel1: Pruning inherited routes Apr 6 15:14:42 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a719 via eth1 Apr 6 15:14:42 rl01 bird6: ospf1: HELLO packet received from fe80::225:90ff:fe97:a718 via eth0 rl01 bird config: log syslog all; #{error, info}; router id 172.16.250.251; debug protocols all; protocol kernel { learn; scan time 5; # Scan kernel routing table every 20 seconds import all; # Default is import all export all; # Default is export none } protocol direct { interface "eth0", "eth1", "dummy0"; export all; import all; } protocol device { scan time 5; # Scan interfaces every 10 seconds } protocol radv { interface "eth0" { max ra interval 30; link mtu 9000; prefix 2001:db8:0:f102::/64; }; interface "eth1" { max ra interval 30; link mtu 9000; prefix 2001:db8:0:f103::/64; }; } filter ospf_filter { if net ~ [ ::/0 ] then reject; else accept; } protocol ospf { tick 5; ecmp 4; import filter ospf_filter; export all; #filter ospf_filter; area 0 { interface "eth0","eth1" { check link yes; cost 5; hello 5; retransmit 2; wait 10; dead 20; ecmp weight 5; }; interface "dummy0" { stub yes; cost 1; }; stubnet 2001:db8:0:f101::/128; }; } birdc6 show route BIRD 1.4.0 ready. 2001:db8:0:f101:ccde:85ff:fe22:ec43/128 multipath [ospf1 15:14:27] ! I (150/5) [172.16.250.8] via fe80::225:90ff:fe97:a718 on eth0 weight 5 via fe80::225:90ff:fe97:a719 on eth1 weight 5 2001:db8:0:f101:e010:b8ff:feb6:d4a/128 dev dummy0 [direct1 15:14:16] * (240) dev dummy0 [ospf1 15:14:17] I (150/0) [172.16.250.251] 2001:db8:0:f103::/64 dev eth1 [direct1 15:14:16] * (240) dev eth1 [ospf1 15:14:27] I (150/5) [172.16.250.8] 2001:db8:0:f102::/64 dev eth0 [direct1 15:14:16] * (240) dev eth0 [ospf1 15:14:27] I (150/5) [172.16.250.8] birdc6 show ospf top BIRD 1.4.0 ready. area 0.0.0.0 router 172.16.250.8 distance 5 network [172.16.250.8-2] metric 5 network [172.16.250.8-3] metric 5 router 172.16.250.251 distance 0 network [172.16.250.8-2] metric 5 network [172.16.250.8-3] metric 5 network [172.16.250.8-2] distance 5 router 172.16.250.8 router 172.16.250.251 network [172.16.250.8-3] distance 5 router 172.16.250.8 router 172.16.250.251 birdc6 show ospf ne BIRD 1.4.0 ready. ospf1: Router ID Pri State DTime Interface Router IP 172.16.250.8 1 full/dr 00:20 eth0 fe80::225:90ff:fe97:a718 172.16.250.8 1 full/dr 00:20 eth1 fe80::225:90ff:fe97:a719 birdc6 show interfaces BIRD 1.4.0 ready. lo up (index=1) MultiAccess AdminUp LinkUp Loopback Ignored MTU=65536 ::1/128 (Primary, scope host) eth0 up (index=2) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=9000 2001:db8:0:f102:92e2:baff:fe31:44c/64 (Primary, scope univ) fe80::92e2:baff:fe31:44c/64 (Unselected, scope link) eth1 up (index=3) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=9000 2001:db8:0:f103:92e2:baff:fe31:44d/64 (Primary, scope univ) fe80::92e2:baff:fe31:44d/64 (Unselected, scope link) eth2 DOWN (index=4) MultiAccess Broadcast Multicast AdminDown LinkDown MTU=1500 eth3 up (index=5) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 fe80::92e2:baff:fe31:44f/64 (Primary, scope link) eth4 up (index=6) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 fe80::225:90ff:fea1:82a6/64 (Primary, scope link) eth5 DOWN (index=7) MultiAccess Broadcast Multicast AdminDown LinkDown MTU=1500 bond0 DOWN (index=8) MultiAccess Broadcast Multicast AdminDown LinkDown MTU=1500 ovs-system DOWN (index=9) MultiAccess Broadcast Multicast AdminDown LinkDown MTU=1500 ovs-vm up (index=10) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 fe80::b485:3ff:fe6b:e1f5/64 (Primary, scope link) dummy0 up (index=11) MultiAccess Broadcast Multicast AdminUp LinkUp MTU=1500 2001:db8:0:f101:e010:b8ff:feb6:d4a/128 (Primary, scope univ) fe80::94c5:c3ff:fe84:dd26/64 (Unselected, scope link) -- Vasiliy Tolstov,
On Sun, Apr 06, 2014 at 03:19:26PM +0400, Vasiliy Tolstov wrote:
Hi all. I'm try to get working ecmp with ipv6 and bird 1.4. Now i'm not understand why routes to test ip installed and removed after 3-5 seconds. Can somebody helps me?
Short answer: They are not supported. Long answer: Well, BIRD generates IPv6 ECMP routes for internal tables and tries to export them to kernel tables in the same way as IPv4 ECMP routes, but Linux kernel did not support these for a long time. In some recent kernel version. they were implemented, but with a different API/conceptual model than IPv4 routes and with some lame compatibility layer, which works for some operations (route insert) but not for others (route scan), so it is broken. -- 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."
2014-04-07 12:34 GMT+04:00 Ondrej Zajicek <santiago@crfreenet.org>:
Short answer: They are not supported.
Long answer: Well, BIRD generates IPv6 ECMP routes for internal tables and tries to export them to kernel tables in the same way as IPv4 ECMP routes, but Linux kernel did not support these for a long time. In some recent kernel version. they were implemented, but with a different API/conceptual model than IPv4 routes and with some lame compatibility layer, which works for some operations (route insert) but not for others (route scan), so it is broken.
May be some people have unnoficial patches for bird for that case? Another possible solution - is that possible to then have 2 routes export only one, but if i have only one route - export it? -- Vasiliy Tolstov,
2014-04-07 12:58 GMT+04:00 Vasiliy Tolstov <v.tolstov@selfip.ru>:
Long answer: Well, BIRD generates IPv6 ECMP routes for internal tables and tries to export them to kernel tables in the same way as IPv4 ECMP routes, but Linux kernel did not support these for a long time. In some recent kernel version. they were implemented, but with a different API/conceptual model than IPv4 routes and with some lame compatibility layer, which works for some operations (route insert) but not for others (route scan), so it is broken.
May be some people have unnoficial patches for bird for that case? Another possible solution - is that possible to then have 2 routes export only one, but if i have only one route - export it?
Does it possible to sponsorship ecmp with ipv6 in bird? -- Vasiliy Tolstov,
2014-04-07 23:29 GMT+04:00 Vasiliy Tolstov <v.tolstov@selfip.ru>:
Does it possible to sponsorship ecmp with ipv6 in bird?
Anybody can helps? I'm realy need this feature, as i understand main problem in nl_parse_route in netlink.c and correct parse attributes..? -- Vasiliy Tolstov,
2014-04-09 19:41 GMT+04:00 Vasiliy Tolstov <v.tolstov@selfip.ru>:
Anybody can helps? I'm realy need this feature, as i understand main problem in nl_parse_route in netlink.c and correct parse attributes..?
Now i'm create ugly patch for multipath ipv6 routes. But as i see linux caches route info and for iperf for example i don't see utilization of both links (1.96Gbit/s , but have only 980Mbit/s) Does somebody knowns about ecmp in linux and how can i use both links for speedup network? -- Vasiliy Tolstov,
participants (2)
-
Ondrej Zajicek -
Vasiliy Tolstov