Modify

Opened 3 years ago

Last modified 3 years ago

#17625 reopened defect

destination mac address of IPv6 neighbour solicitation changed from multi- to unicast (IPv6 partly broken)

Reported by: elpeh Owned by: nbd
Priority: high Milestone: Barrier Breaker 14.07
Component: kernel Version: Barrier Breaker 14.07
Keywords: bridge multicast IPv6 NDP Cc: cyrus@…

Description

Hello,

with 14.07rc3 I see the following misbehaviour on openwrt-ar71xx-generic-tl-wr710n-v1... This (IPv6 partly broken) was not the case with some earlier BB snapshot on that device and (as shown later) AA on WRT160NL.

Effect: IPv6 is not working reliably for a Linux VM in VMware Fusion on Macbook, connected by WLAN (Ethernet not tested yet). If OpenWRT has to send NDP neighbour solicitation packets those do not reach the VM (that means IPv6 connectivity for the VM only works if one e.g. ping6s the gateway/OpenWRT first).

VMware Fusion is doing some MAC address NAT for bridged interfaces with WLAN(?). Guest MAC addresses are replaced by address of host interface.

IPv6 Neighbour solicitation frames are sent to muliticast group and multicast MAC address. At laest this is also what tcpdump br-lan shows on OpenWRT:

07:53:15.267516 64:66:b3:85:15:c9 > 33:33:ff:6a:67:2f, ethertype IPv6 (0x86dd), length 86: (hlim 255, next-header ICMPv6 (58) payload length: 32) fde9:9177:dccc:8::1 > ff02::1:ff6a:672f: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fde9:9177:dccc:8:20c:29ff:fe6a:672f

source link-address option (1), length 8 (1): 64:66:b3:85:15:c9

BUT: this is received on WLAN interface of Mac (host system):
09:53:15.273459 64:66:b3:85:15:c9 (oui Unknown) > b8:8d:12:18:31:e4 (oui Unknown), ethertype IPv6 (0x86dd), length 86: (hlim 255, next-header ICMPv6 (58) payload length: 32) fde9:9177:dccc:8::1 > ff02::1:ff6a:672f: [icmp6 sum ok] ICMP6, neighbor solicitation, length 32, who has fde9:9177:dccc:8:20c:29ff:fe6a:672f

source link-address option (1), length 8 (1): 64:66:b3:85:15:c9

33:33:ff:6a:67:2f has been replaced by b8:8d:12:18:31:e4 somewhere. Somewhere within OpenWRT 14.07rc3 that is, because it happens only in this setup.
With earlier version (see above) the destinations address stays multicast.
VMware Fusion does not/cannot pass a frame with hardware address of Mac WLAN interface as destination to the Linux VM -> IPv6 for VM is broken...

What's going on here? Trying to optimize something? Please revert the change.

Thanks for your work,

Lutz

Attachments (0)

Change History (14)

comment:1 Changed 3 years ago by cyrus

  • Cc cyrus@… added

We recently added a feature which translates multicast-to-unicast for wireless connection because WiFi is usually very bad at handling multicast traffic efficiently. This makes stuff like IPTV work better over wireless but apparently breaks in some obscure cases like yours.

You can probably disable this by adding:
option igmp_snooping 0
to your lan interface config in /etc/config/network.

I guess we will need to see if we can find a generic fix here or not since this layer 2 natting vmware is doing is not really standard behaviour either.

comment:2 Changed 3 years ago by elpeh

Thanks. Yes, "option igmp_snooping 0" disables also multicast-to-unicast and leads to working IPv6 within VM. So does (manually) "echo 0 > /sys/devices/virtual/net/br-lan/brif/wlan0/multicast_to_unicast".
(Is the option igmp_snooping, setting /sys/.../muticast_snooping, activating MLD snooping, too, btw?)

Maybe you want to introduce an uci option for netifd to (de)activate this setting.

Concerning IPTV performance vs. IPv6 in VMs on WLAN connected hosts (not_so_ obscure, I think): Could it be possible to optionally exempt frames with ICMP(v6) from translation?

Lutz

comment:3 Changed 3 years ago by cyrus

  • Owner changed from developers to nbd
  • Status changed from new to assigned

I'll notify the developer and will discuss some possible exceptions with him once he's back from vacation.

comment:4 Changed 3 years ago by nbd

please try applying this patch on top of your kernel tree and see if it fixes the issue:
http://nbd.name/br-multicast-test.patch

comment:5 Changed 3 years ago by elpeh

Thanks! I won't be able to set up the build system/figure out how to compile and replace the kernel image within the next days/weeks though, I'm afraid. This patch is not included in trunk/snapshots yet, is it? Could someone provide me with a modified kernel/openwrt-ar71xx-generic-tl-wr710n-v1-squashfs-sysupgrade.bin for testing?

Lutz

comment:6 Changed 3 years ago by elpeh

This patch is not included in the released 14.07, is it? Could this still change?
I'm sorry that I haven't been able to test it yet.

Lutz

comment:7 follow-up: Changed 3 years ago by nbd

It's not included. It may get included in 14.07.1 if it gets tested in time ;)

comment:8 in reply to: ↑ 7 Changed 3 years ago by elpeh

Replying to nbd:

It's not included. It may get included in 14.07.1 if it gets tested in time ;)

Please do include there. It works (for me). Thanks, Lutz

comment:9 Changed 3 years ago by nbd

  • Resolution set to fixed
  • Status changed from assigned to closed

committed in r43736, r43737

comment:10 Changed 3 years ago by linus.luessing@…

  • Resolution fixed deleted
  • Status changed from closed to reopened

Hi nbd. I'm a little upset because of this patch. We discussed thoroughly, what the real issue is:

https://lists.openwrt.org/pipermail/openwrt-devel/2014-September/027859.html

And you made a suggestion how to fix things properly:

https://lists.openwrt.org/pipermail/openwrt-devel/2014-October/028924.html

In my opinion, we should either have such a fix or disable the multicast-to-unicast feature by default. Disabling the feature partially with r43736, r43737 leaves things partially broken...

comment:11 Changed 3 years ago by nbd

I hope that i will find the time to take care of this soon. I just had a bit too much other stuff to deal with

comment:12 Changed 3 years ago by chris@…

I also was experiencing issues with ipv6 and VMWare Fusion VMs on my mac over wifi. I implemented the igmp_snooping 0 config change on my lan interface, and that resolved the issue.

If I didn't have a knowledgable network guy as a friend, who helped me go through a bunch of tcpdumps, I never would have figured this out on my own. I would agree that the default situation as-is is undesirable.

comment:13 Changed 3 years ago by linus.luessing@…

@Lutz: Hm, it seems like a bug in VMWare Fusion to me: If it did NAT'ing properly, then this shouldn't be an issue and the multicast frame from OpenWRT unicasted to the WLAN adapter address of the Macbook should be translated back to the guest MAC by VMWare Fusion. So you are seeing MLD reports with the source MAC address of the VMWare guest when leaving the Macbook's WLAN / entering the OpenWRT AP?

NAT'ing should hide the internal guest MAC to the outside world.

comment:14 Changed 3 years ago by linus.luessing@…

Although, then it'd have to change the MAC address *within* the ICMPv6 header of the IPv6 Neighbor Advertisement, too, which VMWare Fusion is probably not doing.

I'm curious, could someone provide a pcap-file with something like "tcpdump -i wlan0 icmp6" on the OpenWRT router and name the according MAC addresses of the host and guest on the Macbook? Or maybe some link to what VMWare Fusion is doing exactly?

Add Comment

Modify Ticket

Action
as reopened .
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.