Multicasting is “one to many” – sending a single data stream from a source to many recipients. This is distinct from a broadcast, where everyone will see a given frame. Broadcasts are not be routed; multicast traffic can be routed.
Multicasting arose because there’s a finite amount of bandwidth in the world. It’s not practical to send a unique copy of the same data stream to everyone that might want it. Let’s say you are sending an audio feed out to listeners, and that audio feed takes 128Kbps per stream. If you send a unique copy of that stream to 12 listeners, you just used up T1’s worth of pipe. But if that were a multicast audio feed, you could send a single 128K stream that all of your listeners would get copies of, saving lots of pipe in the process.
Unicast doesn’t scale well. And we already established that broadcasting isn’t routed, and even if you could route a broadcast, you’d still be wasting the time of all the devices who aren’t interested in the broadcast. They’d be forced to participate if they wanted to see the traffic or not.
6 Requirements for Supporting Multicast In A Routed Environment
- You must use L3 addresses from a range reserved for use by multicast applications.
- Multicast addresses are used as destinations, and not sources. A multicast destination IP address does not indicate the address of the receiving station, but rather indicates that the packet has multicast traffic for a specific multicast application.
- The multicast application must be installed on all stations that should receive the traffic. When the application is installed, it must use the same multicast address used on the multicast server. This concept is referred to in multicast-lingo as “launching an application” or “joining a group”.
- Hosts need to compute a L2 multicast address from their L3 multicast address, and assign that L2 address to their NIC. This multicast L2 address will be in addition to their burned-in unique MAC address.
- A potential multicast receiver must be able to tell his router that he wants to receive traffic for his installed multicast application. Internet Group Management Protocol (IGMP) performs this function between routers and hosts. Switches can also learn which ports will need to participate in the multicast by performing IGMP snooping, or running Cisco Group Management Protocol (CGMP).
- Routers must support multicast routing protocols to get multicast traffic through the routed infrastructure. Such protocols include Distance Vector Multicast Routing Protocol (DVMRP), Multicast Open Shortest Path First (MOSPF) and Protocol Independent Multicast dense mode (PIM-DM) and PIM sparse mode (PIM-SM).
Note that multicast is UDP-based, with all that UDP implied – not reliable, no windowing or “slow-start” like TCP provides. Sometimes duplicate packets are generated, and packets may be delivered in the wrong order.