Tracing a multicast packet hop by hop in three cases: L2 within a subnet (IGMP snooping vs flooding), PIM-SM across subnets (shared tree → Register → SPT switchover → RPT prune), and PIM-SSM (IGMPv3 INCLUDE → (S,G) join, no RP).
Multicast is easier to reason about hop by hop. This traces a multicast packet in the three cases you'll be asked to walk: L2 within a subnet, PIM-SM across subnets (shared → source tree), and PIM-SSM. Theory: Multicast & PIM.
The recurring pieces: IGMP tells the last-hop router who wants group G; PIM
builds the tree between routers; the RPF check (arrived on the interface toward the source/RP?) keeps
it loop-free; and the L2 dst MAC is always 01:00:5e + the low 23 bits of G.
Multicast forwarding runs off state the control plane builds first:
| Signalling | Builds (the state it populates) |
|---|---|
| IGMP reports (v2/v3) | Router's group membership per interface; on a switch, the IGMP snooping table group → ports (+ the mrouter port). IGMPv3 INCLUDE(S,G) records the source too. |
| PIM (*,G) Join | A shared-tree mroute (*,G): IIF = RPF interface toward the RP; OIL grows from the Joins received downstream. |
| PIM (S,G) Join | A source-tree mroute (S,G): IIF = RPF interface toward the source; OIL from downstream Joins. |
| Register / Register-Stop | Flips the RP's (S,G) from register/pruned (P) to native forwarding once the SPT to the source is up. |
| RP discovery (static / Auto-RP / BSR) | The group-to-RP mapping every router uses to point its (*,G) Joins. |
| Prune / Assert | Prune trims the OIL (incl. the (S,G,RPT) prune after SPT switchover); Assert elects one forwarder on a shared LAN. |
The result on each router is the mroute table: for every (*,G) and
(S,G), an Incoming Interface (which must pass RPF) and an Outgoing
Interface List, with flags (S C J T P F). A packet is forwarded only if it arrives on the
IIF, then copied to every interface in the OIL. See the
show ip mroute flags.
Source and receivers on the same VLAN; no routing. The question is: does the switch flood, or forward selectively?
01:00:5e:xx:xx:xx).No L3, no PIM — purely the switch deciding which ports get the group.
Source S behind the first-hop router (FHR); receiver behind the last-hop router (LHR); a Rendezvous Point (RP). Sparse mode is explicit-join: nothing flows until someone asks.
before switchover: S → FHR → (register/native) → RP → RPT → LHR → receiver
after switchover: S → ......... shortest path (SPT) ......... → LHR → receiver
Every hop keeps forwarding only if the packet passes RPF; the OIL (outgoing interface list) is built from the Joins received.
The receiver already knows the source S (out-of-band), and the group is in 232.0.0.0/8. This is the simplest path — no RP, no Register, no shared tree.
No RP to find or fail, no Register encapsulation, and a rogue source can't inject into G because the receiver pinned S — which is why SSM is the norm for one-to-many streaming and market data.