• Welcome to Hurricane Electric's IPv6 Tunnel Broker Forums.

Android not answering Neighbor Solicitation messages from Ubuntu router

Started by mikeollington, February 06, 2012, 02:35:11 PM

Previous topic - Next topic

mikeollington

Hello,

I've had a functional IPv6 tunnel via an Ubuntu router box for sometime which Apple, Windows and Linux boxes seem to be quite happy with.  I noted that a Samsung Galaxy Tab (Honeycomb 3.2) was struggling with some IPv6 sites and after scratching my head, I seemed to get a little closer to it working.

I could get the tablet to send pings to ipv6.google.com but the Ubuntu router wasn't getting a response to Neighbor Solicitation messages:

22:08:45.409621 IP6 2001:470:**:4e3f > 2a00:1450:400c:c01::63: ICMP6, echo request, seq 53, length 64
22:08:45.436990 IP6 fe80::21d:7dff:fee5:86f0 > ff02::1:ffad:4e3f: ICMP6, neighbor solicitation, who has 2001:470:**:4e3f, length 32
22:08:46.409878 IP6 2001:470:**:4e3f > 2a00:1450:400c:c01::63: ICMP6, echo request, seq 54, length 64
22:08:46.436996 IP6 fe80::21d:7dff:fee5:86f0 > ff02::1:ffad:4e3f: ICMP6, neighbor solicitation, who has 2001:470:**:4e3f, length 32
22:08:47.410050 IP6 2001:470:**:4e3f > 2a00:1450:400c:c01::63: ICMP6, echo request, seq 55, length 64
22:08:47.436992 IP6 fe80::21d:7dff:fee5:86f0 > ff02::1:ffad:4e3f: ICMP6, neighbor solicitation, who has 2001:470:**:4e3f, length 32
22:08:48.410427 IP6 2001:470:**:4e3f > 2a00:1450:400c:c01::63: ICMP6, echo request, seq 56, length 64
22:08:48.447884 IP6 fe80::21d:7dff:fee5:86f0 > ff02::1:ffad:4e3f: ICMP6, neighbor solicitation, who has 2001:470:**:4e3f, length 32
22:08:49.410696 IP6 2001:470:**:4e3f > 2a00:1450:400c:c01::63: ICMP6, echo request, seq 57, length 64
22:08:49.447539 IP6 fe80::21d:7dff:fee5:86f0 > ff02::1:ffad:4e3f: ICMP6, neighbor solicitation, who has 2001:470:**:4e3f, length 32

To get it working, I've added a static neighbour to Ubuntu, now the tablet has full connectivity.

sudo ip -6 neigh change 2001:470:**:4e3f lladdr 8c:**:4e:3f nud permanent dev eth0

What's left me a little bit puzzled is why the tablet didn't respond to the ND messages in the first place?  Is this a known Android thing?

Cheers,
Mike

kasperd

Puzzling indeed. Have you tested this with different Android units? Have you tested with a different access point?

The neighbor solicitation messages are being sent to a special multicast MAC address which has the group bit set. If some of the networking hardware doesn't treat this bit correctly, that could potentially mean the neighbor solicitation messages is never received by the tablet. I don't know whether networking hardware with such flaws exist, but with the way IPv4 is used it is possible that some hardware never saw a multicast packet in its lifetime, so at least in theory it is possible.

It sounds unlikely that this is a general problem across all Android devices. I think we should be able to narrow it down to specific hardware and/or a specific version of Android.

cholzhauer

A little off topic, but did you have to do anything special to get IPv6 working on there? I'm running 2.3.4 and it doesn't seem to do IPv6

(I guess working is relative)

kasperd

Yesterday I was thinking that there was no way the IPv6 implementation could be useful at all, if the device did not respond to neighbor solicitations. However I now realize that a router could in theory pick up the MAC address from any prior packet send from the device to the router. So assuming that traffic is always initiated by the device, and the router does pick up the MAC address when the device initiates traffic, then IPv6 could have appeared to be working correctly from that device. That is not to say that it makes sense to have a device behave like that, but it does provide a way it could have been missed during testing.

I don't know if there are actual routers around that you could be using in this way from devices without support for neighbor solicitations.

I am also wondering about the possibility to be using SEcure Neighbor Discovery instead. I don't know much about SEND, so I cannot say if it would make sense to have a device that only supports SEND and not the original neighbor discovery protocols.

broquea

Quote from: cholzhauer on February 06, 2012, 07:19:46 PM
A little off topic, but did you have to do anything special to get IPv6 working on there? I'm running 2.3.4 and it doesn't seem to do IPv6

(I guess working is relative)


I've had it working with IPv6 on wifi since 2.x on a NexusOne, radio didn't support it in that model. You don't even enable anything, it should just be autoconfiguring itself.

mikeollington

Thanks for the responses.  For sanity, I noted that the wife had never complained that her Galaxy S2 had stopped working after I changed to IPv6 DNS servers and www.google.com became IPv6. 

I watched this device this morning and the ND seems to work just fine (although the neighbor entry didn't seem to stay around for a long time on the Ubuntu side) and the phone passed the IPv6 test without a static entry.  With the other things that are working and the S2 using the same network path, I'm confident it's not a network equipment thing.  (The S2 is 2.3.4 and appears to have just worked out of the box with nothing special other than setting the Ubuntu box as an RA)

I need to have a look at the S2 in more detail.   In Linux, under IPv4, you used to have to add a static route for the multicast range 224.0.0.0/12 to your Ethernet interface in some cases.  It would seem a bit broken to have to do that for FF02::1 but there isn't any multicast route on the tablet.