setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &mreq, sizeof(mreq) );
For Ethernet, the IP multicast messages is transmitted in an Ethernet frame containing the broadcast address (FF:FF:FF:FF:FF:FF) as destination address.
Even if you change every OS kernel in every computer, the Internet will NOT perform multicasting...
The reason is:
IP multicast addresses will not be found in the routing table data structure....
Note: routers on the backbone of the Internet do not use default routers (they must know how to get to everyone).
In fact, there are still plenty of routers on the Internet that do not recognize class D (multicast) addresses.
(But there are still many multicast unaware routers, and even if a company has multicast enabled routers, they often choose not to enable multicast because of the high bandwidth demand of many multicast applications (which are usually multi-media - like video and audio conferencing))
When a multicast IP packet arrives at such router, the packet is dropped like a brick...
By 1994, a logical network has been built on top of the Internet (which itself is a logical network...) consisting of multicast enabled IP routers:
This logical multicast enable network is called the MBone - for Multicast Backbone.
Multicast applications will perform poorly over the ordinary Internet.
So you don't need tunnels for multicasting in Internet 2.
So also, you need information to perform multicast forwarding.
More on multicast routing information on the next few webpages....