The IGMP standard, developed at Stanford University, was first defined in 1989 for the use of multicast in TCP/IP networks in RFC 1112. This document contains computer and address extensions and IGMP version 1 to support multicast IP computers.
IGMP version 2 is defined in RFC 2236. Both versions of IGMP provide information exchange and update functionality about the membership of computers in specific multicast groups. IGMP release 2 includes a new method to select the multicast functionality for a new group-specific request message type.
IGMP is used to exchange information about the status between IP routers that support multicast and members of multicast groups.
Computers report their membership in the multicast group, and multicast routers regularly query their membership status.
IGMP version 3 is defined in the RFC 3376 and RFC 4604 document, and IGMPv3 is automatically backward compatible with versions 1 and 2, as each version is always backward compatible.
IGMP is solely responsible for IPv4 networks, while a very similar protocol, MLD (Multicast Listener Discovery) is used in IPv6 networks.
The main task of this protocol is to manage dynamic groups for IP multicast data traffic. This broadcast traffic is done through integrated routers and receiving devices receive requests to join a particular multicast group. The devices that receive the data packets forward their IGMP messages to the integrated routers.
The device sending the data packet cannot receive any information about how many target devices a sent packet reaches.
How Does IGMP Work?
Managing groups via IGMP is not the responsibility of the packet sender. Receiving requests from computers to be included in a certain multicast group and informing the computers in case of data flows are carried out by routers on the network between the transmitter and the receiver.
Routers record the interfaces of devices that need to receive certain IP multicast data streams and send specific notifications as soon as relevant data is received.
Data traffic to multicast groups is sent with private IP addresses in the range 224.0.0.x.
IGMPv1 is the first developed and published version of the communication protocol used in TCP networks. For this version, the group address 0.0.0.0 has been defined, and 18.104.22.168 has been defined as the target address for general queries.
The standard time for these router-generated requests is 60 seconds and allows computers to join the appropriate multicast groups. Subsequently, membership requests are made to the appropriate multicast addresses.
IGMPv1 does not allow computers to leave groups on their own by exceeding a time limit, thereby removing computers from the groups it accesses.
The total length of the IGMP header is 64 bits and the first 8 bits indicate the protocol version and message type.
The IGMPv1 packet header is as follows:
IGMPv2 was defined in RFC 2236 in 1997 after the first version was released. In IGMPv2, group (0.0.0.0) and destination (22.214.171.124) addresses did not change, but the interval time was increased to 125 seconds.
The main innovation of the second version is to speed up the process by replacing the logoff time limit used in the first version with the logoff process initiated by a device. Another innovation is that the reception status of a particular multicast address is determined through group-specific messages.
In this version, the address 126.96.36.199 has been defined as the destination address. IGMPv2 sends messages with simple IP packets with IP protocol number 2.
In the IGMPv2 version, the router with the lowest IP address in the subnet is used for multicast queries.
The IGMPv2 packet header is as follows:
The IGMPv3 version was defined in RFC 3376 and RFC 4604 in 2002. In this version, 0.0.0.0 and 188.8.131.52 addresses are considered a group and destination addresses, and the interval time is the same as in version 2.
The new feature of this is that the multicast stream can be specially selected. This greatly reduces the demands on the network and also provides more security as unknown or random sources are not used during transmission.
The first two 32-bit sequences are the same as the IGMPv2 header type, maximum response time, checksum, and group addresses.
The IGMPv3 packet header is as follows:
Packet Structure Definitions
Max Response Code
It specifies the maximum time allowed before a report is sent, and if the value is below 128, the value is used directly, if it is above 128 it is defined as exponent and mantissa.
The checksum value is the value of the 16-bit field and the 16-bit summation of all IGMP messages.
The group address value is the multicast address of queries specific to a particular group or a specific group or resource.
Resv area is reserved and should be reset or ignored when received.
S (Suppress Router-Side Processing) Flag
When the S value is specified, the receiving requires routers to receive regular timer updates.
QRV (Querier’s Robustness Variable)
If the QRV value is not 0, it contains the value of Robustness Variable by the device that sent the query. Routers or other devices match the Robustness Variable variable to the last used query unless this value is zero.
QQIC (Querier’s Query Interval Code)
The QQIC value is used to specify the Query Interval value, and if the number is below 128, the value is used directly or interpreted as exponent and mantissa.
Number of Sources (N)
The N field indicates the number of source addresses in the query process. This value is zero for general and specific group queries, and for queries specific to a particular group and resource, this value may not be zero but is limited by the network’s MTU.
The source address field is a type of n unicast addresses.