IGMP version 2 is the “enhanced” version of IGMP version 1. One of the major reasons for a new version was to improve the “leave” mechanism. In IGMP version 1, hosts just stop listening to the multicast group address but they never report this to the router. Here are the new features:
- Leave group messages: when a host no longer wants to listen to a multicast group address then it will report to the router that it has stopped listening.
- Group specific membership query: the router is now able to send a membership query for a specific group address. When the router receives a leave group message, it will use this query to check if there are still any hosts interested in receiving the multicast traffic.
- MRT (Maximum Response Time) field: this is a new field in query messages. It specifies how much time hosts have to respond to the query. I will explain later why we use this with an example.
- Querier election process: when there are two routers in the same subnet then only one of them should send query messages. The election ensures only one router becomes the active querier. The router with the lowest IP address becomes the active querier.
To demonstrate these new features, I’ll use the following topology:
Above we have one multicast-enabled router and two hosts.
Let’s start with R1:
R1(config)#ip multicast-routing R1(config)#interface GigabitEthernet 0/1 R1(config-if)#ip pim sparse-mode
First we have to enable multicast routing and PIM on the interface otherwise the router won’t process IGMP traffic. We can verify that it’s running:
R1#show ip igmp interface GigabitEthernet 0/1 GigabitEthernet0/1 is up, line protocol is up Internet address is 192.168.1.1/24 IGMP is enabled on interface Current IGMP host version is 2 Current IGMP router version is 2 IGMP query interval is 60 seconds IGMP configured query interval is 60 seconds IGMP querier timeout is 120 seconds IGMP configured querier timeout is 120 seconds IGMP max query response time is 10 seconds Last member query count is 2 Last member query response interval is 1000 ms Inbound IGMP access group is not set IGMP activity: 6 joins, 5 leaves Multicast routing is enabled on interface Multicast TTL threshold is 0 Multicast designated router (DR) is 192.168.1.1 (this system) IGMP querying router is 192.168.1.1 (this system) Multicast groups joined by this system (number of users): 188.8.131.52(1)
Above we can see that IGMP is enabled and that our router is the quering router. There are no other routers so that’s an easy way to win the election.
Before we let the hosts join a multicast group, let’s enable debugging on all devices:
R1, H1 & H2 #debug ip igmp IGMP debugging is on
On R1 you will see the following message:
R1# IGMP(0): Send v2 general Query on GigabitEthernet0/1
Just like IGMP version 1, the router is now sending general membership queries every 60 seconds. This is what it looks like in wireshark:
Above you can see the destination which is 184.108.40.206 (all hosts multicast group address). Let’s configure our first host to join a multicast group:
H1(config)#interface GigabitEthernet 0/1 H1(config-if)#ip igmp join-group 220.127.116.11
This is what you will see on the console of the host:
H1# IGMP(0): WAVL Insert group: 18.104.22.168 interface: GigabitEthernet0/1Successful IGMP(0): Send v2 Report for 22.214.171.124 on GigabitEthernet0/1
Our host is sending a membership report to 126.96.36.199 to tell the router that it wants to receive this multicast traffic. Here you can see the packet in wireshark:
Here’s what R1 thinks of this:
R1# IGMP(0): Received v2 Report on GigabitEthernet0/1 from 192.168.1.101 for 188.8.131.52 IGMP(0): Received Group record for group 184.108.40.206, mode 2 from 192.168.1.101 for 0 sources IGMP(0): WAVL Insert group: 220.127.116.11 interface: GigabitEthernet0/1Successful IGMP(0): Switching to EXCLUDE mode for 18.104.22.168 on GigabitEthernet0/1 IGMP(0): Updating EXCLUDE group timer for 22.214.171.124 IGMP(0): MRT Add/Update GigabitEthernet0/1 for (*,126.96.36.199) by 0
R1 receives the membership report from host 1 and adds an entry for multicast group 188.8.131.52.
Everything you have seen so far is pretty much the same as IGMP version 1. Our router sends general membership queries and the host sends a report.
When we add a second host, things will change. Let’s configure H2 to join the same group:
H2(config)#interface GigabitEthernet 0/1 H2(config-if)#ip igmp join-group 184.108.40.206
Here’s what we will see on the router:
R1# IGMP(0): Send v2 general Query on GigabitEthernet0/1 IGMP(0): Received v2 Report on GigabitEthernet0/1 from 192.168.1.102 for 220.127.116.11 IGMP(0): Received Group record for group 18.104.22.168, mode 2 from 192.168.1.102 for 0 sources IGMP(0): Updating EXCLUDE group timer for 22.214.171.124 IGMP(0): MRT Add/Update GigabitEthernet0/1 for (*,126.96.36.199) by 0
Our router sends another membership query and it also received the membership report from H2. Here’s what happens now when both hosts receive the query:
H1# IGMP(0): Received v2 Query on GigabitEthernet0/1 from 192.168.1.1 IGMP(0): Set report delay time to 2.8 seconds for 188.8.131.52 on GigabitEthernet0/1 IGMP(0): Send v2 Report for 184.108.40.206 on GigabitEthernet0/1
H2# IGMP(0): Received v2 Query on GigabitEthernet0/1 from 192.168.1.1 IGMP(0): Set report delay time to 3.0 seconds for 220.127.116.11 on GigabitEthernet0/1 IGMP(0): Received v2 Report on GigabitEthernet0/1 from 192.168.1.101 for 18.104.22.168 IGMP(0): Received Group record for group 22.214.171.124, mode 2 from 192.168.1.101 for 0 sources IGMP(0): Cancel report for 126.96.36.199 on GigabitEthernet0/1
Above you can see that both hosts receive the query from the router. Host 1 sets its report delay time to 2.8 seconds and then sends the membership report.
H2 also receives the query but sets its report delay time to 3.0 seconds. Since it has to wait longer, H1 was able to send the membership report first. When H2 receives the report from H1 then it will cancel sending a membership report itself.
Where did these timers come from? This is one of the new features of IGMP version 2. The router advertises a maximum response time in its queries:
Great lesson, I have a question about
188.8.131.52 what is that IP address? I heard in the video you mentioned it is an auto rp. What is RP and why we need this? Please clarify.
PIM is the protocol we use between multicast-enabled routers to forward multicast traffic, it has three modes:
When we use any of the two sparse modes, we use a central point in our traffic where we forward multicast traffic to. This is called the RP (Rendezvous Point).
This RP can be statically configured or it can be learned through auto RP.
Auto RP uses the 184.108.40.206 multicast address.
Once I write about the PIM modes, I’ll cover this in detail.
Thank you… Rene. It is a great tutorial. May I ask if you have a tutorial on bidirectional pim?
You are welcome Vicchester. I don’t have one yet but I’m currently working on multicast material…stay tuned
First of all, thank you for this easiest way to explain this cours,
I have some questions, i would like to know what
Updating EXCLUDE group timer for 220.127.116.11
Switching to INCLUDE mode for 18.104.22.168 on GigabitEthernet0/1means exactly.
I know that the first one is when there is still some members for the groupe and the second one is when no more member is interested for this group, but i didn’t understand the meaning of ‘EXCLUDE’ and ‘INCLUDE’
Also, do you use a switch between the PCs and the router ?