IGMP’s forerunner was the Host Membership Protocol. This has since evolved into IGMPv1 – RFC 1112, IGMPv2 – RFC 2236 and IGMPv3 – RFC 3376. IGMP messages use IP protocol 2, with a TTL of 1, as they are not intended to traverse a router. IGMP’s key goals are as follows: (1) tell a multicast router that the host wants to receive traffic for a specific multicast application and (2) tell a multicast router that the host no longer wants to receive traffic for that specific multicast application.
IGMPv1 Message Fields
- Total message comprised of 64 bits, 8 octets.
- Version – 4 bits, always set to 1.
- Type – 4 bits, 1 of 2 messages
- Type 1 – Host Membership Query, used by routers.
- Type 2 – Host Membership Report, used by hosts.
- Unused – 8bits, should contain 0s. Is ignored.
- Checksum – 16 bit checksum as calculated by the sender. The receiver will compute his own checksum and discard the message if his computer checksum does not match the checksum in this field.
- Group Address – set to 0.0.0.0 when a router sends a membership query. If a host is sending a membership report, this will contain the multicast group address.
- Note that the Version and Type fields, when combined, are 0x11 for Query messages and 0x12 for Report messages.
IGMPv1 Host Membership Query Functions
- A host joins a multicast group. The host then computes his multicast MAC address for that group, and also listens on the MM for 188.8.131.52.
- The router on that segment will every “Query Interval” send an IGMPv1 Host Membership Query message, by default every 60 seconds. That query is sent to 184.108.40.206 and asks the question “Any hosts on this segment want to get multicast traffic?” The question isn’t specific about the multicast group – the router is expecting to get answers from any host about any multicast group the host may wish to participate in.
IGMPv1 Host Membership Report Functions
- A Host Membership Report is sent by a host in response to an IGMP query message from a router. This is considered a solicited report.
- Not every host on the segment needs to inform the router about their desire to participate in the multicast group. One is sufficient. Remember that the router is going to forward a single multicast frame into the LAN segment, whether one host will ultimately receive it, or 100.
- To avoid 100 or more hosts flooding the router with responses to IGMP queries, all hosts wait to respond to queries for a randomly selected “Maximum Response Timer”. Each host randomly generates a unique MRT in tenths of a second, which will not exceed the Query Response Interval, a fixed 10 seconds in IGMPv1.
- When a query is sent, the host for a specific multicast group that randomly selected the lowest MRT will respond first. The response is addressed to the multicast group address; when the other group hosts see the report on the wire, they will know that the query asked by the router has been responded to, and therefore they do no need to respond. This is called report suppression.
- A Host Membership Report is also sent when a host joins a multicast group. This is considered an unsolicited report. This reduces the time it will take for the router to begin delivering multicast traffic for this group to that particular segment.
IGMPv1 Leave Mechanism – in IGMPv1, there is no way for a host to specifically notify the router that he doesn’t want to receive traffic for that multicast group anymore. The router will continue to forward multicast traffic onto that segment until 3 Host Membership Queries go by with no response (ergo, 3 minutes by default). That 3-minute timer is known as the “Group Membership Interval”.
IGMPv1 Querier – if there are multiple IGMPv1 routers attached to the same segment, only one router needs to put Query messages on the wire. Multicast routing protocols (chapter 20) deal with selecting an IGMP querier and alternate querier for a segment.