lkml.org 
[lkml]   [2012]   [Mar]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectLinux 3.2 and 3.3 - "network is down" when pinging IPv6.
Hi,

it's me again with a different issue regarding IPv6. This may be
related to the issue I reported in http://lkml.org/lkml/2012/3/22/59
and http://lkml.org/lkml/2012/3/25/8, but not necessarily. This was
really bizarrely fixed.

Again, this is seen on a single box with native IPv6 on eth0, routing
IPv4 and IPv6 to two bridges where KVM VMs are attached to. Setup:

myhost$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:24:21:af:8f:cb brd ff:ff:ff:ff:ff:ff
inet 172.24.53.218/32 scope global eth0
inet6 2001:db8:40b7:9100::100:100/128 scope global
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9100:6686:29f:cdfc:9713/128 scope global deprecated
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 00:24:21:af:8f:cc brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether fe:54:00:23:47:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.145.254/24 brd 192.168.145.255 scope global br0
inet6 2001:db8:40b7:9101::100:153/64 scope global deprecated
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9101::100:100/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::c091:aaff:fe67:fd99/64 scope link
valid_lft forever preferred_lft forever
5: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether fe:54:00:fa:de:7d brd ff:ff:ff:ff:ff:ff
inet 192.168.146.254/24 brd 192.168.146.255 scope global br1
inet6 2001:db8:40b7:9102::100:153/64 scope global deprecated
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9102::100:100/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::1/64 scope link
valid_lft forever preferred_lft forever
inet6 fe80::2c46:f8ff:feb9:16bf/64 scope link
valid_lft forever preferred_lft forever
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 500
link/ether fe:54:00:23:47:46 brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe23:4746/64 scope link
valid_lft forever preferred_lft forever
8: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN qlen 500
link/ether fe:54:00:67:86:fb brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe67:86fb/64 scope link
valid_lft forever preferred_lft forever
9: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br1 state UNKNOWN qlen 500
link/ether fe:54:00:fa:de:7d brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fefa:de7d/64 scope link
valid_lft forever preferred_lft forever
myhost$ ip r
default via 172.29.179.1 dev eth0
172.29.179.1 dev eth0 scope link
172.29.179.176 dev br0 scope link
192.168.145.0/24 dev br0 proto kernel scope link src 192.168.145.254
192.168.146.0/24 dev br1 proto kernel scope link src 192.168.146.254
myhost$ ip -6 r
2001:db8:40b7:9100::100:100 dev eth0 proto kernel metric 256
2001:db8:40b7:9100:6686:29f:cdfc:9713 dev eth0 proto kernel metric 256
2001:db8:40b7:9101::/64 dev br0 proto kernel metric 256
2001:db8:40b7:9102::/64 dev br1 proto kernel metric 256
fe80::/64 dev br0 proto kernel metric 256
fe80::/64 dev br1 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev vnet0 proto kernel metric 256
fe80::/64 dev vnet1 proto kernel metric 256
fe80::/64 dev vnet2 proto kernel metric 256
default via fe80::1 dev eth0 metric 1024
myhost$ sudo brctl show
bridge name bridge id STP enabled interfaces
br0 8000.fe5400234746 no vnet0
vnet1
br1 8000.fe5400fade7d no vnet2
myhost$

On br0/vnet0, there is a Linux VM with the following IP configuration:
myvm$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 52:54:00:23:47:46 brd ff:ff:ff:ff:ff:ff
inet 172.29.179.176 peer 192.168.145.254/32 scope global eth0
inet6 2001:db8:40b7:9101::2:53/64 scope global deprecated
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9101::1:53/64 scope global deprecated
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9101::6667/64 scope global deprecated
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9101::1/64 scope global
valid_lft forever preferred_lft forever
inet6 2001:db8:40b7:9101:5054:ff:fe23:4746/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fe23:4746/64 scope link
valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.11.12.1 peer 10.11.12.2/32 scope global tun0
4: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1498 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.11.25.1 peer 10.11.25.2/32 scope global tun1
myvm$ ip r
default via 192.168.145.254 dev eth0
10.11.12.0/24 via 10.11.12.2 dev tun0
10.11.12.2 dev tun0 proto kernel scope link src 10.11.12.1
10.11.25.0/24 via 10.11.25.2 dev tun1
10.11.25.2 dev tun1 proto kernel scope link src 10.11.25.1
192.168.145.254 dev eth0 proto kernel scope link src 172.29.179.176
myvm$ ip -6 r
2001:db8:40b7:9101::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
default via fe80::c091:aaff:fe67:fd99 dev eth0 proto kernel metric 1024 expires 1435sec
myvm$

Please note that myvm has both 2001:db8:40b7:9101::1/64 and
2001:db8:40b7:9101::1:53/64 configured.

Most of the time (but not always!), myhost does not even try to send
out a packet when I ping6 2001:db8:40b7:9101::1. Instead, ping6 says
that sendmsg cannot send the packet ("network is down").
2001:db8:40b7:9101::1 is not in the neighbor table, and myhost does not
send out a neighbor solicitation. It simple immediately claims that
the network is down.

At the same time, ping6'ing 2001:db8:40b7:9101::1:53 works just fine.
IPv4 is not affected as well.

I can see similiar behavior with other VMs as well, on both br0 and br1.

Now for the real bizarre solution: Setting a more specific route for
2a01:238:40b7:9101::/65 immediately fixes the issue. Same holds for
br1 and the route 2a01:238:40b7:9102::/65.

The IPv6 routing table on myhost now looks like
myhost$ ip -6 r
2001:db8:40b7:9100::100:100 dev eth0 proto kernel metric 256
2001:db8:40b7:9100:6686:29f:cdfc:9713 dev eth0 proto kernel metric 256
2001:db8:40b7:9101::/65 dev br0 metric 1024
2001:db8:40b7:9101::/64 dev br0 proto kernel metric 256
2001:db8:40b7:9102::/65 dev br1 metric 1024
2001:db8:40b7:9102::/64 dev br1 proto kernel metric 256
fe80::/64 dev br0 proto kernel metric 256
fe80::/64 dev br1 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/64 dev vnet0 proto kernel metric 256
fe80::/64 dev vnet1 proto kernel metric 256
fe80::/64 dev vnet2 proto kernel metric 256
default via fe80::1 dev eth0 metric 1024
and everything works as designed.

Why do I need the /65 route? Why can I ping one address from the /64
network and not another?

If you need more information, please say so.

Greetings
Marc

--
-----------------------------------------------------------------------------
Marc Haber | "I don't trust Computers. They | Mailadresse im Header
Mannheim, Germany | lose things." Winona Ryder | Fon: *49 621 31958061
Nordisch by Nature | How to make an American Quilt | Fax: *49 621 31958062


\
 
 \ /
  Last update: 2012-03-25 10:41    [W:0.052 / U:2.260 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site