1

I have written a piece of software which joins a multicast group and processes packets. This seems to work on a number of machines I've tested with, both with Windows (tested on XP through to 8.1) and linux. Except for one machine: a laptop with Windows 8.1.

I had a look at the question How do I know if IP Multicasting is enabled on my network in Windows? and from that tried running netsh interface ip show joins, only to confirm that this machine does not join the multicast group on any of the network interfaces (wifi or ethernet) I try my software out on. I have looked out for IGMP messages on wireshark, too, but can't see any. I have disabled firewalls, etc. but still nothing.

I have tried my software on another windows machine and it works without issues (without having to touch firewalls) and I see the correct group joined when I run netsh interface ip show joins.

The only variable I can see with this particular machine is that it is a laptop. Is there a particular setting I need to enable in windows to allow laptops to receive multicast packets? Is there another way I can debug this issue. It's driving me up the wall!

Thanks.

Further note: I have tried running the software in a Linux VM. Under the host (Windows) OS, the Bridge interface shows it joining a multicast group in netsh interface ip show joins. But the hardware interface still has no joins. And no packets are received.

rod
  • 111
  • 1
  • 3
  • Oh interesting. I just noticed that when I run the software in windows, it always binds to the VirtualBox network bridge. if I disable the VirtualBox network bridge, the ```netsh interface ip show joins``` shows joins on the correct interface. This is promising... but I do really need that VirtualBox interface. Calling a SetBindIP() style function in my code isn't forcing it to bind to the correct interface. – rod Sep 30 '15 at 11:36
  • I've had a look at the routing tables through route print and saw that the route for 224.0.0.0 on the VirtualBox bridge had a lower cost metric than the one on the ethernet card. So the OS must be overriding the preference I set in software. I removed all multicast routes(!!) in the routing table through ```route delete 224.0.0.0```, then called ```route add 224.0.0.0 mask 240.0.0.0 metric 200```. Amazingly, this now causes no joins listed on any interface. – rod Sep 30 '15 at 12:39

0 Answers0