IGMPv3 was developed to support the source-specific multicast (SSM) model. IGMPv3 messages can contain multicast source information so that hosts can receive data sent from a specific source to a specific group.
IGMPv3 differs from IGMPv2 in the following ways:
Figure 1 shows the IGMPv3 Query message format, and Table 1 describes message fields.
Field |
Description |
---|---|
Type |
In IGMPv3 Query messages, this field is set to 0x11. |
Max Response Code |
Maximum response time. After receiving a General Query message, hosts must respond with a Report message within the maximum response time. |
Checksum |
The checksum is 16 bits long. It is the one's complement of the one's complement sum of the whole IGMP message (the entire IP payload). When computing the checksum, a device initially sets the checksum field to 0. The sender computes the checksum and inserts it into this field. The receiver verifies the checksum before processing the message. |
Group Address |
The group address is set differently in different Query messages:
|
Resv |
Reserved field. This field is set to 0 by the sender and is ignored by the receiver. |
S |
Suppress router-side processing. When this flag is set to 1, routers receiving the Query message suppress timer updates, but do not suppress the querier election or normal host-side processing. |
QRV |
Querier's robustness variable. A non-0 value indicates the robustness variable of the querier. This field is set to 0 if the robustness variable of the querier exceeds 7. When a router receives a Query message and finds that the QRV field is not 0, the router sets its robustness variable to the value of the QRV field. If the QRV field is 0, the router ignores this field. |
QQIC |
Querier's query interval code, expressed in seconds. When a non-querier receives a Query message and finds that the QQIC field is not 0, the non-querier sets its query interval to the value of the QQIC field. If the QQIC field is 0, the non-querier ignores this field. |
Number of Sources |
In a General Query or Group-Specific Query message, this field is set to 0. In a Group-and-Source-Specific Query message, this field is a non-zero integer. The number is limited by the MTU of the network over which the Query message is transmitted. |
Source Address |
The value of this field is limited by the value of the Number of Sources field. |
Figure 2 shows the IGMPv3 Membership Report message format, and Table 2 describe the message fields.
Field |
Description |
---|---|
Type |
In IGMPv3 Membership Report messages, this field is set to 0x22. |
Reserved |
This field is set to 0 by the sender and is ignored by the receiver. |
Checksum |
The checksum is 16 bits long. It is the one's complement of the one's complement sum of the whole IGMP message (the entire IP payload). When computing the checksum, a device initially sets the checksum field to 0. The sender computes the checksum and inserts it into this field. The receiver verifies the checksum before processing the message. |
Number of Group Records |
Number of group records in the message. |
Group Record |
Group information in the message. Figure 3 shows the format of a group record, and Table 3 describes the fields in a group record. |
Field |
Description |
---|---|
Record Type |
The three group record type options are:
|
Aux Data Len |
Length of the Auxiliary Data field. IGMPv3 Report messages do not contain auxiliary data, so this field is set to 0. |
Number of Sources |
Number of source addresses in this group record. |
Multicast Address |
Address of a multicast group. |
Sources Address |
Address of a multicast source. |
Auxiliary Data |
Additional information in this group record. This field is reserved for IGMP extensions or later IGMP versions, and is not included in IGMPv3 Report messages. |
IGMPv3 differs from IGMPv2 and IGMPv3 in that it allows hosts to select specific multicast sources.
Joining a specific source and group
IGMPv3 Report messages have a destination address of 224.0.0.22, which represents all IGMPv3-capable multicast routers on the same network segment. A Report message contains Group Record fields, allowing hosts to specify the multicast sources from which they do or do not want to receive data when joining a multicast group. Figure 4 shows two multicast sources, S1 and S2, sending data to multicast group G. The host only wants to receive data sent from S1 to G.
If IGMPv1 or IGMPv2 is running between the host and the routers, the host cannot select multicast sources when it joins group G. The host receives data from both S1 and S2, regardless of whether it requires the data. If IGMPv3 is running between the host and the routers, the host can choose to receive only data from S1 using either of the following methods:
Group-and-Source-Specific Query
When an IGMP querier receives a Report message with Filter-Mode-Change Records or Source-List-Change Records (such as CHANGE_TO_INCLUDE_MODE or CHANGE_TO_EXCLUDE_MODE), it sends a Group-and-Source-Specific Query message. If members want to receive data from any source in the source list, they send Report messages. The IGMP querier updates the source list of the corresponding group according to the received Report messages.