What is Internet Group Management Protocol (IGMP) / Multicast Listener Discovery (MLD)?


Internet Group Management Protocol (IGMP) and Multicast Listener Discovery (MLD) are the Multicast Group Membership Discovery (MGMD) protocols. They are essentially the same protocol, with IGMP used for IPv4 multicast groups and MLD used for IPv6 multicast groups. These protocols are used between end systems (often desktops) and the multicast router to request data for a given multicast group.There have been three versions of IGMP, and two versions of MLD. IGMPv2 is equivalent in function to MLDv1 and IGMPv3 is equivalent to MLDv2. All versions of IGMP/MLD are widely deployed. For example, an IGMP/MLD host implementation is included in some operating systems, and the following table shows the level of support for IGMP in Microsoft Windows hosts.

IGMP Version    Microsoft Windows Version
IGMPv1 Windows 95, Windows NT 4.0 (SP3 and earlier)
IGMPv2 Windows 98, Windows ME, Windows NT 4.0 (SP4 and later), Windows 2000
IGMPv3 Windows XP, Windows Server 2003, Windows Vista

Implementations of IGMP are required to support all earlier versions.

Basic Operation

The following describes the basic operation of IGMP/MLD, common to all versions. Note that a multicast router acts as both an IGMP/MLD host and an IGMP/MLD router in this and following descriptions, and as a result can respond to its own IGMP/MLD messages.

  • One router periodically broadcasts IGMP/MLD Query messages onto the link.
  • Hosts respond to the Query messages by sending IGMP/MLD Report messages indicating their group memberships.
  • All routers receive the Report messages and note the memberships of hosts on the link.
  • If a router doesn't receive a Report message for a particular group for a period of time, the router assumes there are no more members of the group on the link.

All IGMP/MLD messages are raw IP datagrams with a TTL of 1. Since raw IP does not provide reliable transport, some messages are sent multiple times to aid reliability.

Sending Group Membership Queries

Only one router sends IGMP/MLD Query messages onto a particular link. This router is called the Querier. IGMPv1 depended on the multicast routing protocol to decide which router was the Querier. IGMPv2 introduced a Querier election process, which works as follows.

By default, a router takes the role of Querier. If a querier receives an IGMP/MLD Query message from a router on the same interface and with a lower IP address, it stops being the Querier. If a router has stopped being the Querier, but does not receive an IGMP/MLD Query message within a configured interval, it becomes the Querier again.

Responding To Group Membership Queries

IGMPv1 and IGMPv2 use a Report suppression technique to avoid a 'storm' of responses to an IGMP Query message. When a host receives a Query, it starts a randomized timer for each group that it is a member of. When this timer pops, the host sends an IGMP Report message addressed to that group. Any other hosts that are members of the group also receive the message, at which point they cancel their timer for the group.

This mechanism ensures that, under most circumstances, a single IGMP Report message is sent for each multicast group in response to a single Query.

IGMPv3 removed the need for this, by packing multiple group memberships in a single Report message to reduce the number of packets sent.

Improving Group Membership Latency

When a host joins a new multicast group on an interface, it immediately sends an unsolicited IGMP Report message for that group.

IGMPv2 introduced a Leave Group message, which is sent by a host when it leaves a multicast group for which it was the last host to send an IGMP Report message. Receipt of this message causes the Querier possibly to reduce the remaining lifetime of its state for the group, and to send a group-specific IGMP Query message to the multicast group.

The Leave Group message is not used with IGMPv3, as its source address filtering mechanism (see below) provides the same functionality.

Source Address Filtering

IGMPv3 introduced an IGMP Version 3 Report message. This allows a host to include or exclude a list of source addresses for each multicast group of which the host is a member. Routers merge the source address requirements of different hosts for each group.

In particular, this feature is required to support Source Specific Multicast, which can be provided by PIM-SM.

Learn more: view the specification of our IGMP / MLD protocol stack.