7. Interoperation with IGMPv1 and IGMPv2
IGMPv3 hosts and routers interoperate with hosts and routers that have not yet been upgraded to IGMPv3. This compatibility is maintained by the periodic Membership Query messages that are multicast by the Querier, and by the Version 1 and Version 2 Membership Report messages that are multicast by older hosts.
7.1. IGMPv3 Host Operation
The behavior of an IGMPv3 host depends on whether the Querier on the network is speaking IGMPv3, IGMPv2, or IGMPv1.
7.1.1. Query Version Distinctions
The IGMP version of a Membership Query message is determined as follows:
- IGMPv1 Query: length = 8 octets, Max Resp Code = 0.
- IGMPv2 Query: length = 8 octets, Max Resp Code > 0.
- IGMPv3 Query: length >= 12 octets.
7.1.2. Behavior in the Presence of Older Queriers
An IGMPv3 host may be placed on a network where the Querier has not yet been upgraded to IGMPv3. The host must allow for this possibility.
- IGMPv1 Querier Present: If an IGMPv3 host receives an IGMPv1 Query, it must respond with IGMPv1 Reports. Source filtering is not supported.
- IGMPv2 Querier Present: If an IGMPv3 host receives an IGMPv2 Query, it must respond with IGMPv2 Reports. Source filtering is not supported.
- IGMPv3 Querier Present: If an IGMPv3 host receives an IGMPv3 Query, it responds with IGMPv3 Reports. Source filtering is supported.
The host maintains a compatibility mode variable for each interface, which is updated whenever a Query is received. If an older Query is received, the host switches to the corresponding compatibility mode and sets a timer. When the timer expires, the host switches back to IGMPv3 mode.
7.2. IGMPv3 Router Operation
The behavior of an IGMPv3 router depends on whether there are older hosts or routers on the network.
7.2.1. Presence of Older Hosts
An IGMPv3 router may receive IGMPv1 or IGMPv2 Reports from older hosts.
- IGMPv1 Report Received: The router acts as if it received an IGMPv3 IS_EX({}) report for the group. It must also ignore any Leave Group messages for that group (since IGMPv1 doesn't have Leave messages).
- IGMPv2 Report Received: The router acts as if it received an IGMPv3 IS_EX({}) report for the group.
When older hosts are present, the router may need to suppress IGMPv3-specific processing (like source-specific queries) for the affected groups to ensure compatibility.
7.2.2. Presence of Older Routers
If an IGMPv3 router is on a network with older routers, the Querier election process (Section 6.1) determines which router becomes the Querier.
- If an IGMPv1 router is present and becomes the Querier, all routers (including IGMPv3 routers) must act as IGMPv1 routers.
- If an IGMPv2 router is present and becomes the Querier, all routers must act as IGMPv2 routers.
- If an IGMPv3 router becomes the Querier, it sends IGMPv3 Queries. Older routers will see these as invalid IGMPv1/v2 queries (or handle them if they are partially compatible), but generally, IGMPv3 routers should be configured to run in IGMPv1 or IGMPv2 mode if they must coexist with older routers that cannot handle IGMPv3 packets.
7.3. Mixing Version 1, 2, and 3 Hosts
It is possible to have a mix of IGMPv1, IGMPv2, and IGMPv3 hosts on the same network.
- If the Querier is IGMPv3, it sends IGMPv3 Queries.
- IGMPv3 hosts respond with IGMPv3 Reports.
- IGMPv2 hosts respond with IGMPv2 Reports.
- IGMPv1 hosts respond with IGMPv1 Reports.
The IGMPv3 router must handle all these report types. For groups with IGMPv1 or IGMPv2 members, the router must effectively treat the group as being in EXCLUDE mode with an empty source list (i.e., "send me everything for this group"), because older hosts cannot specify source filters.