IGMP stands for Internet Group Management Protocol. It is a protocol that allows several devices to share one IP address so they can all receive the same data. IGMP is a network layer protocol used to set up multicasting on networks that use the Internet Protocol version 4 (IPv4). Specifically, IGMP allows devices to join a multicast group.
IGMP is not a multicasting routing protocol; it is a protocol that manages group membership. In any network, there are one or more multicast routers that distribute multicast packets to hosts or other routers.
The IGMP protocol gives the multicast routers information about the membership status of hosts (routers) connected to the network.
A multicast router may receive thousands of multicast packets every day for different groups. If a router has no knowledge about the membership status of the hosts, it must broadcast all these packets.
This creates a lot of traffic and consumes bandwidth. A better solution is to keep a list of groups in the network for which there is at least one loyal member. IGMP helps the multicast router create and update this list.
IGMP operates locally. A multicast router connected to a network has a list of multicast addresses of the groups with at least one loyal member in that network, as shown in the figure below −
For each group, there is one router that has the duty of distributing the multicast packets destined for that group. This means that if there are three multicast routers connected to a network, their lists of group ids are mutually exclusive.
A host or multicast router can have membership in a group. When a host has membership, it means that one of its processes (an application program) receives multicast packets from some group. When a router has membership, it means that a network connection to one of its other interfaces receives these multicast packets. We say that the host or the router has an interest in the group. In both cases, the host and the router keep a list of group ids and relay their interest to the distributing router.
There are two other multicast routers (R1 and R2) that, depending on the group list maintained by router R, could be the recipients of router R in this network. Routers RI and R2 may be distributors for some of these groups in other networks but not on this network.
A host or a router can join a group. A host maintains a list of processes that have membership in a group. When a process wants to join a new group, it sends its request to the host.
The host adds the name of the process and the name of the requested group to its list. If this is the first entry for this particular group, the host sends a membership report message. If this is not the first entry, there is no need to send the membership report. As the host is already a member of the group; it receives multicast packets for this group.
The protocol requires that the membership report be sent twice, one after the other, within a few moments. In this way, if the first one is lost or damaged, the second one replaces it.
When a host sees that no process is interested in a specific group, it sends a leave report. Similarly, when a router sees that none of the networks connected to its interfaces is interested in a specific group, it sends a leave report about that group.
However, when a multicast router receives a leave report, it cannot immediately purge that group from its list. This is because the report comes from just one host or router and there may be other hosts or routers that are still interested in that group. To make sure, the router sends a special query message and inserts the group id, or multicast address, related to the group.
The router allows a specified time for any host or router to respond. If during this time, no interest (membership report) is received, the router assumes that there are no loyal members in the network and purges the group from its list.