Changes in IGMPv3
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 Messages
IGMPv3 differs from IGMPv2 in the following ways:
- Unlike IGMPv2, IGMPv3 does not define a Leave message. Group members send Report messages of a specified type to notify multicast routers that they have left a group.
- In addition to General Query and Group-Specific Query messages, IGMPv3 defines another Query message type: Group-and-Source-Specific Query. A querier sends a Group-and-Source-Specific Query message to members of a specific group on a shared network segment, to check whether the group members want data from specific sources. A Group-and-Source-Specific Query message can carry one or more multicast source addresses.
- A Membership Report message contains the group that a host wants to join and the multicast sources from which the host wants to receive data. IGMPv3 supports source filtering and defines two filter modes: INCLUDE and EXCLUDE. Group-source mappings are represented as (G, INCLUDE, (S1, S2...)) or (G, EXCLUDE, (S1, S2...)). INCLUDE indicates that a host only wants to receive data sent from the listed multicast sources to group G. EXCLUD indicates that a host wants to receive data sent from all multicast sources except the listed ones to group G. When group-source mappings change, hosts add these changes to the Group Record fields in IGMPv3 Report messages and send IGMPv3 Report messages to the IGMP querier on the local network segment.
- An IGMPv3 Report message can carry multiple groups, whereas an IGMPv1 or IGMPv2 Report message can carry only one group. IGMPv3 greatly reduces the number of messages transmitted on a network.
Figure 2-10 shows the IGMPv3 Query message format, and Table 2-4 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, bur so 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-11 shows the IGMPv3 Membership Report message format, and Table 2-5 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 2-12 show the format of a group record, and Table 2-6 explains 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. |
How IGMPv3 Works
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 2-13, 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 its upstream router, the host can choose to receive only data from S1 using either of the following methods:
- Send an IGMPv3 Report (G, INCLUDE, (S1)), requesting to receive only the data sent from S1 to G.
- Send an IGMPv3 Report (G, EXCLUDE, (S2)), notifying the upstream router that it does not want to receive data from S2. Only data sent from S1 is then forwarded to the host.
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.