* fe80::/64 route missing on GRE tunnels @ 2014-02-11 21:55 Steinar H. Gunderson 2014-02-11 21:59 ` Steinar H. Gunderson 0 siblings, 1 reply; 12+ messages in thread From: Steinar H. Gunderson @ 2014-02-11 21:55 UTC (permalink / raw) To: netdev; +Cc: itk-intern Hi, It seems that recent kernels no longer automatically add the link-local route to GRE tunnels. 3.10.27 does it right: root@morgental:~# ip tunnel add foo mode gre remote 1.2.3.4 ttl 64 root@morgental:~# ip link set foo up mtu 1468 root@morgental:~# ip -6 route show dev foo fe80::/64 proto kernel metric 256 but on 3.13.1, no such route shows up. I can add it manually, though. This broke our in-house IPv6 tunnel broker (which essentially uses link-local addresses over GRE tunnels to bring up BGP sessions). Do you think you could have a look? /* Steinar */ -- Homepage: http://www.sesse.net/ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-11 21:55 fe80::/64 route missing on GRE tunnels Steinar H. Gunderson @ 2014-02-11 21:59 ` Steinar H. Gunderson 2014-02-15 7:45 ` Hannes Frederic Sowa 0 siblings, 1 reply; 12+ messages in thread From: Steinar H. Gunderson @ 2014-02-11 21:59 UTC (permalink / raw) To: netdev, itk-intern On Tue, Feb 11, 2014 at 10:55:11PM +0100, Steinar H. Gunderson wrote: > but on 3.13.1, no such route shows up. I can add it manually, though. Correction; I can add it manually, but only to one GRE device at a time: root@altersex:~$ ip -6 route add fe80::/64 dev k_molvenfinnoy root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits RTNETLINK answers: File exists root@altersex:~$ ip -6 route del fe80::/64 dev k_molvenfinnoy root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits root@altersex:~$ /* Steinar */ -- ITK-pang http://www.sesse.net/ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-11 21:59 ` Steinar H. Gunderson @ 2014-02-15 7:45 ` Hannes Frederic Sowa 2014-02-15 12:10 ` Hannes Frederic Sowa 0 siblings, 1 reply; 12+ messages in thread From: Hannes Frederic Sowa @ 2014-02-15 7:45 UTC (permalink / raw) To: netdev, itk-intern On Tue, Feb 11, 2014 at 10:59:28PM +0100, Steinar H. Gunderson wrote: > On Tue, Feb 11, 2014 at 10:55:11PM +0100, Steinar H. Gunderson wrote: > > but on 3.13.1, no such route shows up. I can add it manually, though. > > Correction; I can add it manually, but only to one GRE device at a time: > > root@altersex:~$ ip -6 route add fe80::/64 dev k_molvenfinnoy > root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits > RTNETLINK answers: File exists > root@altersex:~$ ip -6 route del fe80::/64 dev k_molvenfinnoy > root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits > root@altersex:~$ Sorry for the long delay, I was busy with other stuff... So basically a workaround you can do for the time being is to add the tunnel with a local address: ip tunnel add foo mode gre local 4.3.2.1 remote 1.2.3.4 ttl 64 The reason is that link local address generation fails in ipv6/addrconf as long as dev->dev_addr is zero. I have not yet found the change which causes this change in behaviour, but will do so soon. Bye, Hannes ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-15 7:45 ` Hannes Frederic Sowa @ 2014-02-15 12:10 ` Hannes Frederic Sowa 2014-02-17 9:37 ` Nicolas Dichtel 0 siblings, 1 reply; 12+ messages in thread From: Hannes Frederic Sowa @ 2014-02-15 12:10 UTC (permalink / raw) To: nicolas.dichtel; +Cc: netdev, itk-intern, sesse Hi Nicolas! On Sat, Feb 15, 2014 at 08:45:59AM +0100, Hannes Frederic Sowa wrote: > On Tue, Feb 11, 2014 at 10:59:28PM +0100, Steinar H. Gunderson wrote: > > On Tue, Feb 11, 2014 at 10:55:11PM +0100, Steinar H. Gunderson wrote: > > > but on 3.13.1, no such route shows up. I can add it manually, though. > > > > Correction; I can add it manually, but only to one GRE device at a time: > > > > root@altersex:~$ ip -6 route add fe80::/64 dev k_molvenfinnoy > > root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits > > RTNETLINK answers: File exists > > root@altersex:~$ ip -6 route del fe80::/64 dev k_molvenfinnoy > > root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits > > root@altersex:~$ > > Sorry for the long delay, I was busy with other stuff... > > So basically a workaround you can do for the time being is to add the tunnel > with a local address: > > ip tunnel add foo mode gre local 4.3.2.1 remote 1.2.3.4 ttl 64 > > The reason is that link local address generation fails in ipv6/addrconf as > long as dev->dev_addr is zero. > > I have not yet found the change which causes this change in behaviour, but > will do so soon. f7cb8886335dea ("sit/gre6: don't try to add the same route two times") causes this problem, because dev->dev_addr will never get initialized and thus ipv6_generate_eui64 and addrconf_add_linklocal will never get called. Ok for revert or do you have a better idea? Greetings, Hannes ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-15 12:10 ` Hannes Frederic Sowa @ 2014-02-17 9:37 ` Nicolas Dichtel 2014-02-17 9:45 ` Steinar H. Gunderson 0 siblings, 1 reply; 12+ messages in thread From: Nicolas Dichtel @ 2014-02-17 9:37 UTC (permalink / raw) To: netdev, itk-intern, sesse, Hannes Frederic Sowa Le 15/02/2014 13:10, Hannes Frederic Sowa a écrit : > Hi Nicolas! > > On Sat, Feb 15, 2014 at 08:45:59AM +0100, Hannes Frederic Sowa wrote: >> On Tue, Feb 11, 2014 at 10:59:28PM +0100, Steinar H. Gunderson wrote: >>> On Tue, Feb 11, 2014 at 10:55:11PM +0100, Steinar H. Gunderson wrote: >>>> but on 3.13.1, no such route shows up. I can add it manually, though. >>> >>> Correction; I can add it manually, but only to one GRE device at a time: >>> >>> root@altersex:~$ ip -6 route add fe80::/64 dev k_molvenfinnoy >>> root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits >>> RTNETLINK answers: File exists >>> root@altersex:~$ ip -6 route del fe80::/64 dev k_molvenfinnoy >>> root@altersex:~$ ip -6 route add fe80::/64 dev k_sessesveits >>> root@altersex:~$ >> >> Sorry for the long delay, I was busy with other stuff... >> >> So basically a workaround you can do for the time being is to add the tunnel >> with a local address: >> >> ip tunnel add foo mode gre local 4.3.2.1 remote 1.2.3.4 ttl 64 >> >> The reason is that link local address generation fails in ipv6/addrconf as >> long as dev->dev_addr is zero. >> >> I have not yet found the change which causes this change in behaviour, but >> will do so soon. > > f7cb8886335dea ("sit/gre6: don't try to add the same route two times") causes > this problem, because dev->dev_addr will never get initialized and thus > ipv6_generate_eui64 and addrconf_add_linklocal will never get called. > > Ok for revert or do you have a better idea? I'm not sure to understand the problem. In the case described above, there is no fe80::/64 route because there is no link local address. What source address will be used to communicate over this gre interface? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-17 9:37 ` Nicolas Dichtel @ 2014-02-17 9:45 ` Steinar H. Gunderson 2014-02-17 9:59 ` Nicolas Dichtel 0 siblings, 1 reply; 12+ messages in thread From: Steinar H. Gunderson @ 2014-02-17 9:45 UTC (permalink / raw) To: Nicolas Dichtel; +Cc: netdev, itk-intern, Hannes Frederic Sowa On Mon, Feb 17, 2014 at 10:37:07AM +0100, Nicolas Dichtel wrote: > I'm not sure to understand the problem. In the case described above, there is no > fe80::/64 route because there is no link local address. > What source address will be used to communicate over this gre interface? It is added (ip -6 addr add fe80::1 dev foo), but it doesn't help without the /64 being present. /* Steinar */ -- ITK-pang http://www.sesse.net/ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-17 9:45 ` Steinar H. Gunderson @ 2014-02-17 9:59 ` Nicolas Dichtel 2014-02-17 10:17 ` Steinar H. Gunderson 0 siblings, 1 reply; 12+ messages in thread From: Nicolas Dichtel @ 2014-02-17 9:59 UTC (permalink / raw) To: netdev, itk-intern, Hannes Frederic Sowa Le 17/02/2014 10:45, Steinar H. Gunderson a écrit : > On Mon, Feb 17, 2014 at 10:37:07AM +0100, Nicolas Dichtel wrote: >> I'm not sure to understand the problem. In the case described above, there is no >> fe80::/64 route because there is no link local address. >> What source address will be used to communicate over this gre interface? > > It is added (ip -6 addr add fe80::1 dev foo), but it doesn't help without the > /64 being present. With 'ip -6 addr add fe80::1/64 dev foo', the link local route will be added. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-17 9:59 ` Nicolas Dichtel @ 2014-02-17 10:17 ` Steinar H. Gunderson 2014-02-17 10:34 ` Nicolas Dichtel 0 siblings, 1 reply; 12+ messages in thread From: Steinar H. Gunderson @ 2014-02-17 10:17 UTC (permalink / raw) To: Nicolas Dichtel; +Cc: netdev, itk-intern, Hannes Frederic Sowa On Mon, Feb 17, 2014 at 10:59:38AM +0100, Nicolas Dichtel wrote: >> It is added (ip -6 addr add fe80::1 dev foo), but it doesn't help without the >> /64 being present. > With 'ip -6 addr add fe80::1/64 dev foo', the link local route will be added. Possible, but you're still breaking userspace. You could argue the tunnel setup system in question should have added a /64 in the first place, but it is deployed at a number of locations and changing all of them is not trivial. /* Steinar */ -- ITK-pang http://www.sesse.net/ ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-17 10:17 ` Steinar H. Gunderson @ 2014-02-17 10:34 ` Nicolas Dichtel 2014-02-17 13:04 ` Hannes Frederic Sowa 2014-02-17 13:22 ` [PATCH net] gre: add link local route when local addr is any Nicolas Dichtel 0 siblings, 2 replies; 12+ messages in thread From: Nicolas Dichtel @ 2014-02-17 10:34 UTC (permalink / raw) To: netdev, itk-intern, Hannes Frederic Sowa, sesse Le 17/02/2014 11:17, Steinar H. Gunderson a écrit : > On Mon, Feb 17, 2014 at 10:59:38AM +0100, Nicolas Dichtel wrote: >>> It is added (ip -6 addr add fe80::1 dev foo), but it doesn't help without the >>> /64 being present. >> With 'ip -6 addr add fe80::1/64 dev foo', the link local route will be added. > > Possible, but you're still breaking userspace. You could argue the tunnel > setup system in question should have added a /64 in the first place, but it > is deployed at a number of locations and changing all of them is not trivial. I will propose a patch (instead of reverting the original one). ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: fe80::/64 route missing on GRE tunnels 2014-02-17 10:34 ` Nicolas Dichtel @ 2014-02-17 13:04 ` Hannes Frederic Sowa 2014-02-17 13:22 ` [PATCH net] gre: add link local route when local addr is any Nicolas Dichtel 1 sibling, 0 replies; 12+ messages in thread From: Hannes Frederic Sowa @ 2014-02-17 13:04 UTC (permalink / raw) To: Nicolas Dichtel; +Cc: netdev, itk-intern, sesse On Mon, Feb 17, 2014 at 11:34:07AM +0100, Nicolas Dichtel wrote: > Le 17/02/2014 11:17, Steinar H. Gunderson a écrit : > >On Mon, Feb 17, 2014 at 10:59:38AM +0100, Nicolas Dichtel wrote: > >>>It is added (ip -6 addr add fe80::1 dev foo), but it doesn't help > >>>without the > >>>/64 being present. > >>With 'ip -6 addr add fe80::1/64 dev foo', the link local route will be > >>added. > > > >Possible, but you're still breaking userspace. You could argue the tunnel > >setup system in question should have added a /64 in the first place, but it > >is deployed at a number of locations and changing all of them is not > >trivial. > I will propose a patch (instead of reverting the original one). Thanks for looking into this, Nicolas. I agree it is not a very nice situation. ^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH net] gre: add link local route when local addr is any 2014-02-17 10:34 ` Nicolas Dichtel 2014-02-17 13:04 ` Hannes Frederic Sowa @ 2014-02-17 13:22 ` Nicolas Dichtel 2014-02-17 19:09 ` David Miller 1 sibling, 1 reply; 12+ messages in thread From: Nicolas Dichtel @ 2014-02-17 13:22 UTC (permalink / raw) To: sesse; +Cc: hannes, itk-intern, davem, netdev, Nicolas Dichtel This bug was reported by Steinar H. Gunderson and was introduced by commit f7cb8886335d ("sit/gre6: don't try to add the same route two times"). root@morgental:~# ip tunnel add foo mode gre remote 1.2.3.4 ttl 64 root@morgental:~# ip link set foo up mtu 1468 root@morgental:~# ip -6 route show dev foo fe80::/64 proto kernel metric 256 but after the above commit, no such route shows up. There is no link local route because dev->dev_addr is 0 (because local ipv4 address is 0), hence no link local address is configured. In this scenario, the link local address is added manually: 'ip -6 addr add fe80::1 dev foo' and because prefix is /128, no link local route is added by the kernel. Even if the right things to do is to add the link local address with a /64 prefix, we need to restore the previous behavior to avoid breaking userpace. Reported-by: Steinar H. Gunderson <sesse@samfundet.no> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> --- net/ipv6/addrconf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index ad235690684c..fdbfeca36d63 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2783,6 +2783,8 @@ static void addrconf_gre_config(struct net_device *dev) ipv6_addr_set(&addr, htonl(0xFE800000), 0, 0, 0); if (!ipv6_generate_eui64(addr.s6_addr + 8, dev)) addrconf_add_linklocal(idev, &addr); + else + addrconf_prefix_route(&addr, 64, dev, 0, 0); } #endif -- 1.8.5.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH net] gre: add link local route when local addr is any 2014-02-17 13:22 ` [PATCH net] gre: add link local route when local addr is any Nicolas Dichtel @ 2014-02-17 19:09 ` David Miller 0 siblings, 0 replies; 12+ messages in thread From: David Miller @ 2014-02-17 19:09 UTC (permalink / raw) To: nicolas.dichtel; +Cc: sesse, hannes, itk-intern, netdev From: Nicolas Dichtel <nicolas.dichtel@6wind.com> Date: Mon, 17 Feb 2014 14:22:21 +0100 > This bug was reported by Steinar H. Gunderson and was introduced by commit > f7cb8886335d ("sit/gre6: don't try to add the same route two times"). > > root@morgental:~# ip tunnel add foo mode gre remote 1.2.3.4 ttl 64 > root@morgental:~# ip link set foo up mtu 1468 > root@morgental:~# ip -6 route show dev foo > fe80::/64 proto kernel metric 256 > > but after the above commit, no such route shows up. > > There is no link local route because dev->dev_addr is 0 (because local ipv4 > address is 0), hence no link local address is configured. > > In this scenario, the link local address is added manually: 'ip -6 addr add > fe80::1 dev foo' and because prefix is /128, no link local route is added by the > kernel. > > Even if the right things to do is to add the link local address with a /64 > prefix, we need to restore the previous behavior to avoid breaking userpace. > > Reported-by: Steinar H. Gunderson <sesse@samfundet.no> > Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Applied and queued up for -stable, thanks. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2014-02-17 19:09 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2014-02-11 21:55 fe80::/64 route missing on GRE tunnels Steinar H. Gunderson 2014-02-11 21:59 ` Steinar H. Gunderson 2014-02-15 7:45 ` Hannes Frederic Sowa 2014-02-15 12:10 ` Hannes Frederic Sowa 2014-02-17 9:37 ` Nicolas Dichtel 2014-02-17 9:45 ` Steinar H. Gunderson 2014-02-17 9:59 ` Nicolas Dichtel 2014-02-17 10:17 ` Steinar H. Gunderson 2014-02-17 10:34 ` Nicolas Dichtel 2014-02-17 13:04 ` Hannes Frederic Sowa 2014-02-17 13:22 ` [PATCH net] gre: add link local route when local addr is any Nicolas Dichtel 2014-02-17 19:09 ` David Miller
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.