The complete process, clickable — from IGMP report to steady state

The same twelve steps as the figure above, one at a time. Click a step or use the stepper; the phase buttons jump ahead. The diagram shows each message against the trees the earlier steps already built.

IGMP PIM Join / Prune multicast data Register (unicast) Register-Stop tree already built S pruned off the RPT

Joins are hop-by-hop: a PIM Join is addressed to the RPF neighbor, not to the RP or source. Every router on the path creates its own (*,G) or (S,G) state and sends its own Join upstream — the arrows spanning several hops above are shorthand for that chain.

Two different RPF lookups: (*,G) RPF points toward the RP, (S,G) RPF points toward the source — one tree is rooted at the RP, the other at S, so the incoming interfaces can differ. Both come straight from the unicast routing table.

Register-Stop is not proof of receivers: the RP sends it when it receives the traffic natively (SPTbit set) or when it has no receivers at all — a zero-listener source gets a Register-Stop too, just for the opposite reason.

Everything is soft state: Joins must be refreshed periodically or the state expires — including the steady state of step 12, which is held up by refreshed Joins and the ~once-a-minute Null-Register / Register-Stop heartbeat.