I am trying a sender and receiver multicast c# program on my computer. How do I check if my router blocks multicasting? i.e whether members of the group receive packets from 224.0.0.1.
2 Answers
IPv4 routers are required not to forward multicasts to 224.0.0.1. That's the "all hosts" multicast address. That address is not a routable multicast address. See RFC 3171, "IANA Guidelines for IPv4 Multicast Address Assignments". It is not allowed off the current data-link-layer (layer 2) network. Otherwise, when pinging it, you'd literally be pinging every last IPv4-capable host on the entire Internet, and instantly DDOSing yourself with all the ping replies. :-)
While developing your application, I think you'll probably want to use "Administratively Scoped IP Multicast" addresses (239/8). See RFC 2365. caveat lector: I'm certainly no expert on IPv4 multicast routing.
If you were using layman's terms instead of precise networking jargon, and the networking device you were calling a "router" is actually just an Ethernet bridge/switch and not an IPv4 router, then it would indeed forward it between ports, because that's what Ethernet bridges/switches are required to do. Because at the Ethernet layer, the destination MAC address would have the multicast bit set.
If you're dealing with 802.11 (Wi-Fi) at all, note that 802.11 is a data link layer protocol, basically wireless Ethernet. A device that connects a wireless Ethernet to a wired Ethernet is technically called an "Access Point" or AP. An AP can be a simple link-layer bridge between wired and wireless Ethernet. So some devices that people refer to in layman's terms as a "wireless router" may, depending on how you have it set up, really just be a bridging AP and not a router at all.
But if you have a "wireless router" configured to act as an IPv4 NAT gateway, then it's okay to think of it as a router, because a NAT gateway pretty much does everything a simple IPv4 router would do, plus it employs some higher-layer tricks to make the traffic from the LAN-side, private-subnet hosts look like it's actually coming from the gateway's one WAN-side, publicly-routable IP address. But even if it's a NAT gateway, it shouldn't be forwarding packets for 224.0.0.1 from LAN-to-WAN or WAN-to-LAN.
Hardware Concerns:
Check the make, model, and documentation, to ensure the hardware supports multicast. Assuming it is not a hardware issue, check the config of the access-point/switch/gateway/"traffic-passing blinky box"...
Diagnosis:
As a C# user you might need to translate my Mac/Unix command/responses to Windows land...
When I run: > ifconfig from my house I get:
...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
...
which makes sense, because I use zeroconf, mDNS, Bonjour services, etc at home via my wireless connection. When I perform the same thing at a coworking space, where none of the zeroconf stuff works, I also noticed the ifconfig command excludes the multicast flag.
...
en1: flags=963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX> mtu 1500
....
For Gateway Admins
Login to the Access Point and attempt to enable multicasting. For reference if you are using a consumer oriented "router" you may have to dig into Advanced Tabs (PDF example from Time Warner. Be sure search for "mulitcast")
- 21