IGMP snooping is a method that allows switches to only send traffic to interested receivers of multicast packet streams.
IGMP snooping helps switches to optimise forwarding and minimise flooding of multicast streams to all connected ports on their device.
Typically with unicast traffic, switches learn about MAC addresses and where they belong to by inspecting the MAC address source of traffic traveling through the switch. These MAC addresses are then stored in a MAC address table for future reference for more efficient transfer of traffic.
When it comes to multicast traffic, the multicast MAC address is never used as a source MAC address. Typically without IGMP snooping a switch will treat a multicast MAC address as an unknown frame and flood it out of all ports on the switch. It is then up to the connected devices themselves to spend processing time to decide whether to accept or discard the traffic. Cisco switches can utilise two methods to reduce the multicast flooding on a local area network: IGMP snooping and static MAC address entries.
IGMP snooping, as part of RFC 4541, is the most widely used method over the alternative, static MAC address entries. IGMP snooping works by the switch monitoring IGMP joins sent by the hosts and maintaining a list of interfaces to IGMP joins, similar to a MAC address table.
When a switch receives a multicast frame destined for a particular group, the switch can look up its IGMP snooping table and set the traffic destination accordingly.
The alternative, static MAC address entries means programming static multicast entries into the MAC address table. This solution is nowhere near as scalable and dynamic as IGMP snooping.