What is IGMP?
IGMP (Internet Group Management Protocol) is a Layer 3 protocol (IP protocol number 2) and is a key component (Figure 1) to IP multicast. The role of IGMP is to notify a local multicast router when a host wants to receive multicast traffic for a specific group.
Figure 1 - Summary of Multicast Components.
There are 3 versions of IGMP - IGMPv1, IGMPv2, and IGMPv3.
With IGMPv1, it introduced the following IGMP membership messages:
- Membership Query - Sent by the multicast router on 224.0.01 (with a TTL of 1) to find multicast clients.
- Membership Report - At the point the client receives the multicast query, the client sends a membership report back to the router. This contains the group or groups that the client wants to receive.
Figure 2 - IGMP Messages (IGMPv1)
However, IGMPv1 had two problems:
- No Leave Group message - When a client no longer wanted to receive traffic for a multicast group, it would have to wait for the membership report to timeout, and another membership query was sent so it could report this to the router.
- Queries - When multiple membership routers are present on a single segment, multiple membership queries would be sent. This was highly inefficient.
IGMPv2 looked to address the issues with IGMPv1, and added the following features:
- Leave Group Message - The Leave Group message was added. This allows a client to inform the router that it no longer wants to be a member/receive traffic from particular a multicast group.
- Group-specific Query Message - In addition to being able to send membership queries to 188.8.131.52, IGMPv2 also adds the ability to query an individual group. The group-specific query message is sent by the querying router after it has received a leave message, this is to ensure there are no further clients within the group wanting to receive the multicast stream.
- Designated Querier - Rather than every router upon a given segment sending IGMP queries, a Designated Querier (DQ) is elected. Only the DQ is permitted to send IGMP queries. The DQ election process is based on the router (within the segment) with the lowest IP being elected as the DQ.
IGMPv3 adds support for Source Specific Multicast (SSM). This provides the ability to specify, and join based on the source for the multicast group, instead of only being able to join based on any source/multicast group, as per IGMPv1 and IGMPv2.
As previously mentioned, IGMP operates at Layer 3. Because of this, switches have no understanding of IGMP messages. In addition, it is not possible for the switch to add the multicast MAC address to the forwarding table, this is because the multicast MAC address is never used as a source address. This results in the multicast traffic being flooded to all hosts within the broadcast domain.
IGMP Snooping is a feature, enabled upon layer 2 switches, that inspects the IGMP transmissions between the host and the router. Through this inspection, a mapping is built containing which hosts in a particular VLAN need to receive the multicast transmission. The switch then uses this information to forward multicast traffic for a given multicast group to ONLY the receivers within the given VLAN.
When a multicast host wants to join a multicast group, it generates a multicast report, containing the groups that it wants to receive traffic for. However, when there is no multicast router upon the segment to originate an IGMP membership query from, the host has no-one to send its membership report to.
The role of the IGMP snooping querier (also known as an IGMP forwarder) is to send out periodic IGMP queries that trigger IGMP report messages from hosts that want to receive IP multicast traffic. IGMP snooping then listens to these IGMP reports to establish appropriate forwarding.
 "Cisco Nexus 5000 Series NX-OS Software Configuration Guide ...." https://www.cisco.com/c/en/us/td/docs/switches/datacenter/nexus5000/sw/configuration/guide/cli_rel_4_0_1a/CLIConfigurationGuide/IGMPSnooping.html. Accessed 10 Feb. 2018.