LearnNetwork
Multicast — IGMP and PIM

Multicast — IGMP and PIM

12 min

Multicast lets you send one packet that the network fans out to many receivers. A stadium video feed at 10 Mbps reaches 10,000 viewers without sending 10,000 unicast copies. The trick: every receiver "joins" a multicast group, and the network replicates packets only where it needs to.

The address space

| Range | What | |---|---| | 224.0.0.0/4 | All multicast (224.0.0.0 – 239.255.255.255) | | 224.0.0.0/24 | Link-local (OSPF 224.0.0.5, all routers 224.0.0.2, etc.) — TTL 1 | | 232.0.0.0/8 | SSM (Source-Specific Multicast) range | | 233.0.0.0/8 | GLOP (statically-assigned per AS) | | 239.0.0.0/8 | Administratively-scoped — your private multicast space |

A multicast destination IP is never an IP source. Sources are normal unicast IPs sending to a group address.

IGMP — the host-router conversation

Hosts tell routers "I want to receive group X" with IGMP (Internet Group Management Protocol):

  • IGMPv2 is the common version. A host sends a Membership Report when it wants to join, a Leave Group when it's done.
  • IGMPv3 adds source filtering — "give me group X, but only from source S" — required for SSM.

The router uses these reports to maintain its multicast forwarding state: for each (*, G) or (S, G) pair, which interfaces have receivers downstream.

IGMP snooping

A switch that just blindly floods multicast wastes bandwidth. IGMP snooping lets the switch eavesdrop on IGMP join/leave messages between hosts and the router, and forward each group's multicast traffic only to ports with at least one joined receiver. Always enable on access switches — without it, multicast TV / video streams hit every port and saturate them.

PIM — building the distribution tree across routers

Once hosts have joined via IGMP, PIM (Protocol Independent Multicast) builds the inter-router distribution tree. The two flavors:

| Flavor | When | |---|---| | PIM Dense Mode (PIM-DM) | "Push" — flood everywhere first, prune back. Old, wasteful. Mostly historical. | | PIM Sparse Mode (PIM-SM) | "Pull" — receivers explicitly join via a Rendezvous Point. The standard. | | PIM-SSM | Source-specific — works directly with (S, G), no RP needed. | | Bidir-PIM | Bidirectional — for many-to-many apps. Niche. |

For 99% of multicast deployments: PIM Sparse Mode.

The Rendezvous Point (RP)

In PIM-SM, every source registers with an RP (a designated router) and every receiver pulls traffic via the RP first. Once traffic is flowing, routers can optimize to a direct shortest-path tree from source to receiver, dropping the RP from the path.

| Mechanism | Used for | |---|---| | Static RP | You configure the RP IP on every router. Simple, brittle. | | Auto-RP (Cisco) | RP-mapping agent announces RPs in the network. Cisco-only. | | BSR (Bootstrap Router) | Open-standard equivalent of Auto-RP. | | Anycast RP | Multiple physical routers share the same RP IP for redundancy. |

The RP is a single logical point — make it redundant or your multicast service has a SPOF.

A worked walkthrough

  1. Host A sends an IGMPv2 Membership Report for group 239.10.20.30 out its NIC.
  2. Last-hop router records *, 239.10.20.30 is wanted out that port.
  3. The router sends a PIM Join (*, 239.10.20.30) toward the RP, building the shared tree branch.
  4. A source S elsewhere sends a packet to 239.10.20.30. Its first-hop router encapsulates and unicasts it to the RP (PIM Register).
  5. RP de-encaps, forwards down the shared tree to A.
  6. After a few packets, A's router optimizes: sends a PIM Join (S, 239.10.20.30) toward S directly, then a Prune (S, *) toward the RP. Subsequent packets take the direct path.

What to remember

  • Multicast addresses are 224.0.0.0/4; 239.0.0.0/8 for private use.
  • IGMP = host ↔ router group membership. v2 standard, v3 for source-filtering.
  • IGMP snooping = switch listens to IGMP and only forwards to subscribed ports.
  • PIM-SM + Rendezvous Point is the standard for inter-router distribution.
  • Multicast is a heavyweight feature; turn on snooping and use it deliberately.