em driver doesn't set multicast ethernet address

iprebeg at freebsd.org iprebeg at freebsd.org
Sat Jul 11 09:33:02 UTC 2009


On Sat, Jul 11, 2009 at 09:14:29AM +0100, Bruce Simpson wrote:
> iprebeg at freebsd.org wrote:
>> While testing -CURRENT in VMWare environment, I discovered that em
>> driver doesn't properly set destination address in Ethernet header. In
>> the other words, when I start listening multicast session with mcastread
>> (mcast-tools), kernel triggers IGMPv3 packet. Its destionation IP is
>> 224.0.0.22, but its destionation Ethernet address doesn't look like
>> 01:00:5e:... Other machines that I run in same environment (like
>> FreeBSD-7) behave in good manner.
>>   
>
> It seems that the introduction of IGMPv3 may have exposed some 
> driver/hardware issues, where certain network interfaces are not able to 
> transmit on groups which haven't been joined for receive. This is a bug, 
> and would likely break production use of IPv6, which makes heavier use of 
> link-scope groups than IPv4 does.
>
> Can you provide the following information please, so that someone can 
> better help you:
> 1) the date of the -CURRENT code you are using;
> 2) tcpdump or wireshark capture output, containing the actual output 
> generated by em(4).

1) Problem emerged after I upgraded to BETA1 and stayed there after I
upgraded to p4 version dated 10th of July. Before that I used few months
old snapshot (can't exactly tell the date).
2) dump file generated by wireshark is attached

>
> Does this issue occur if you use the 'mtest' tool to join 224.0.0.22 inside 
> the guest? The kernel will *not* listen to 224.0.0.22, unless you're 
> running a multicast routing daemon -- as it doesn't have to; that 
> link-scope group is for reports only.

There is no difference, ethernet destination is still usual unicast
address.

>
> This issue doesn't appear with IGMPv2, because it only ever transmits its 
> reports on the group thus joined. This has the disadvantage that multicast 
> routers have to have functioning promiscuous multicast receive, just to 
> proxy or forward traffic.
>
> Can you force the use of IGMPv2 using the sysctls as defined in the igmp(4) 
> man page as a workaround?

Well, now, something really interesting happened. I changed default IGMP
version via sysctl

# sysctl net.inet.igmp.default_version=2

but, then I tested it with mtest and generated packets were still IGMPv3
Membership reports, but first two of them had proper mcast ethernet
address. They generated sent by mtest.

>
> thanks,
> BMS
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: igmp.dump
Type: application/octet-stream
Size: 6618 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20090711/7148a56a/igmp.obj


More information about the freebsd-net mailing list