IGMPv3 enhancements
IGMPv3 is based on and is compatible with IGMPv1 and IGMPv2. It provides hosts with enhanced control capabilities and provides enhancements of query and report messages.
Enhancements in control capability of hosts
IGMPv3 introduced two source filtering modes (Include and Exclude). These modes allow a host to join a designated multicast group and to choose whether to receive or reject multicast data from a designated multicast source. When a host joins a multicast group, one of the following occurs:
If the host expects to receive multicast data from specific sources like S1, S2, …, it sends a report with the Filter-Mode denoted as "Include Sources (S1, S2, …)."
If the host expects to reject multicast data from specific sources like S1, S2, …, it sends a report with the Filter-Mode denoted as "Exclude Sources (S1, S2, …)".
As shown in Figure 21, the network has two multicast sources, Source 1 (S1) and Source 2 (S2). Both of them can send multicast data to the multicast group G. Host B is interested in the multicast data that Source 1 sends to G but not in the data from Source 2.
Figure 21: Flow paths of source-and-group-specific multicast traffic
In IGMPv1 or IGMPv2, Host B cannot select multicast sources when it joins the multicast group G. Multicast streams from both Source 1 and Source 2 flow to Host B whether or not it needs them.
When IGMPv3 runs between the hosts and routers, Host B can explicitly express that it needs to receive the multicast data that Source 1 sends to the multicast group G (denoted as (S1, G)). It also can explicitly express that it does not want to receive the multicast data that Source 2 sends to multicast group G (denoted as (S2, G)). Finally, only multicast data from Source 1 is delivered to Host B.
Enhancements in query and report capabilities
Query message carrying the source addresses
Compatible with IGMPv1 and IGMPv2, IGMPv3 supports general queries and group-specific queries. In addition, it introduces group-and-source-specific queries.
A general query does not carry a group address or a source address.
A group-specific query carries a group address, but no source address.
A group-and-source-specific query carries a group address and one or more source addresses.
Reports containing multiple group records
Unlike an IGMPv1 or IGMPv2 report message, an IGMPv3 report message is destined to 224.0.0.22 and contains one or more group records. Each group record contains a multicast group address and a multicast source address list.
Group records include the following categories:
IS_IN—The source filtering mode is Include. The report sender requests the multicast data from only the sources defined in the multicast source address list.
IS_EX—The source filtering mode is Exclude. The report sender requests the multicast data from any sources except those defined in the multicast source address list.
TO_IN—The filtering mode has changed from Exclude to Include.
TO_EX—The filtering mode has changed from Include to Exclude.
ALLOW—The Source Address field contains a list of additional sources from which the receiver wants to obtain data. If the current filtering mode is Include, these sources are added to the INCLUDE source address list. If the current filtering mode is Exclude, these sources are deleted from the EXCLUDE source address list.
BLOCK—The Source Address field contains a list of the sources from which the receiver no longer wants to obtain data. If the current filtering mode is Include, these sources are deleted from the INCLUDE source address list. If the current filtering mode is Exclude, these sources are added to the EXCLUDE source address list.