Internet Group Management Protocol (IGMP) used by a Host to notify the local Router that it wishes to receive (or stop receiving) multicast traffic for a given group address. Below diagram shows a basic multicast service model. IGMP’s functionality is shown in item 2.b in the diagram.
There are 3 versions (IGMP v1, IGMP v2 & IGMP v3) available. The most common version of deployment is IGMP v2. Once you enable PIM on a layer 3 interface it will automatically enable IGMPv2 on that interface. If a host want to join for a particular multicast group, they will send a IGMP Membership report to 126.96.36.199 (all-routers in local subnet) & first hop router will get it. When another host in the same network requesting same group, layer 2 switch will suppress that request. You can disable this feature by using “no ip igmp snooping report-suppression” command if needed.
Normally (without IGMP snooping) a switch will forward a multicast frame to all switch ports (except incoming port). IGMP snooping allows the switch to send multicast frames only to those receivers that join a particular group by listening for report/leave messages from the hosts. By default this feature is enabled on a layer 2 switch. If you want to enable is only on particular VLAN you can disable it globally & configure “ip igmp snooping vlan vlan-id” with required vlan-id.
When a client want to leave the group they will send a “IGMP Leave Msg” to 188.8.131.52 (& first hop router will get it). Then router will query “IGMP Query Msg” to 184.108.40.206 (All-Host multicast address). As long as at least one client is in this group, switch will forward IGMP Membership report back to first hop router. In IGMP v2.0 you can configure fast-leaving feature by using “ip igmp snooping vlan <vlan-id> immediate-leave“. In this way switch will immediately remove the port from multicast forwarding table
If no users join for the multicast group, router will not get any response & it will wait for 3 x query interval to decide no users require this multicast stream any longer. Then it will pass that info to upstream routers to stop forwarding multicast traffic to that group.
Compare to IGMPv2, IGMPv3 has following advantages.
1. Hosts can join one group and leave another in the same transaction. IGMPv2 requires separate report/leave messages.
2. Reduces the likelyhood of multicast group being spoofed by a rogue source.
3. Eliminates overlapping multicast addresses.
4. First-hop router immediately knows the source address, so no need for RP (Rendezvous Point) – can use PIM-SSM.
You can find more details about from here. I used the above diagrams from the CiscoLive pdf (listed in item 2 here) presentation material.
When it comes to Wireless environment WLC does the IGMP functionality of a layer 2 switch for its wireless clients.(ie keeping track of which AP/wireless clients require what multicast group traffic). Below shows the IGMP specific configs in a WLC (Controller -> Multicast section)