Flavors of IGMP
As I stated in the last post, there are three versions of IGMP. These are V1, V2, and V3. So what are the differences? I will be explaining that, and I also want to just quickly go over what IGMP is. IGMP is when a host tells a router that it wants to join a multicast stream and receive multicast traffic.
When IGMP first came out, all we had was IGMPv1. This protocol uses two types of messages: a membership query and a membership report. When a device wants to join a multicast group to start receiving multicast traffic, it will send a membership report to the group address it wants to receive. Once the router receives this, it will forward the requested multicast traffic to the interface where that membership report was received on. Periodically, the router will send a membership query to the destination of 224.0.0.1. The hosts that receive this will respond to the router to let the router know that they are still interested in this multicast traffic, and then the expiration time will be reset. If there is no response, it will know to stop forwarding multicast traffic to this host.
IGMP version 2 is an enhanced version of IGMP version 1. The main reason for this new version is to improve the mechanism allowing us to leave a multicast stream. There are some new features introduced in IGMPv2. There are now leave group messages. When a device decides it no longer wants to receive traffic from a multicast group, it will tell the router that it has stopped listening. There is also now a group-specific membership query. This lets the router send a membership query for a specific group address. The router will use this to check if there are any hosts still interested in receiving multicast traffic after getting a leave group message. Next, there is an MRT (Maximum Response Time) field added to query messages. It specifies how much time hosts have to respond to a query. Lastly, we have a querier election process, which is new to IGMP. When there are two routers in the same subnet, only one of these routers should send query messages. This makes sure only one router becomes the active querier—this is the router with the lowest IP address.
IGMP version 3 adds a very unique feature called source filtering. In previous versions of IGMP, any source is able to receive multicast traffic from multicast groups they joined. By adding this feature, hosts can join multicast groups but only from specified source addresses, enhancing security. This is a requirement when we use Source-Specific Multicast, a topic I will explain in a later blog. So why is this useful? This version of IGMP is also compatible with the older versions too, making it a smooth transition if you plan to upgrade to IGMPv3.