If you want to know how the IGMPv1 & IGMPv2 works in packet level and how it is evolved, please go through the following posts.
Traffic Analysis of IGMPv1
Traffic Analysis of IGMPv2
Now the next level of IGMP has a special added feature called source specific multicast. Here the hosts can ask for a multicast feed from a specified source. All other features work pretty much the same as IGMPv2 except IGMPv3 uses several types of Membership Reports to Join, Reply and Leave which are discussed later and summarized at the end of the post.
So in this post, I am focusing on this new enhancements..
Let's analyze the traffic flow with a packet capture using this setup..
Here the hosts are also Cisco IOS routers.
Nothing is configured on the switch.
Host will be configured in the same multicast group.
Packets entering and leaving on e0/0 interface of Router will be captured..
debug ip igmp is entered on all devices..
(click on images to view in full size)
Configuring Router..
Router(config)#ip multicast-routing
Router(config)#int e0/0
As soon as the last interface command entered on Router, following debug messages will opt out..
And the multicast routing table will be like the following on Router, show ip mroute
Host(config)#int e0/0
As you can see the Host is sending 3 Reports. Let's see the contents of them..
All these 3 messages which a host send when it wants to join a group for the 1st time are identical. It is like 3 copies of the same packet.
On Router, the debug output will show the following..
Now the multicast routing table on Router-1 will be like the following with the new group entry..
Now for the General Query of the Router, the Host replies with a Membership Report which has a little different content.
This mode Include says which source is accepted for multicast feed for the group, by this host.
Let's see what happens when a Host leaves the group..
As you can see, the Host is sending 2 Reports of the same content. Let's analyze the packet..
This packet says not to send the feed from 1.1.1.1 to him (sending Host)..
The Router will reply with Source & Group Specific Queries to find out any other live hosts..
Packet Types Summary..
Unlike in IGMPv1 & IGMPv2; IGMPv3 uses 3 different types of Membership Reports to Join, Reply to a Query and to Leave a group.
Join - Type 5 (Allow new sources)
Reply - Type 1 (Mode is Include)
Leave - Type 6 (Block old sources)
So the packet types seems to be using are,
1. Membership Report
2. Membership Query
3. Source & Group Specific Membership Query
Packet capture will look like the following and you can download from here.
Traffic Analysis of IGMPv1
Traffic Analysis of IGMPv2
Now the next level of IGMP has a special added feature called source specific multicast. Here the hosts can ask for a multicast feed from a specified source. All other features work pretty much the same as IGMPv2 except IGMPv3 uses several types of Membership Reports to Join, Reply and Leave which are discussed later and summarized at the end of the post.
So in this post, I am focusing on this new enhancements..
Here the hosts are also Cisco IOS routers.
Nothing is configured on the switch.
Host will be configured in the same multicast group.
Packets entering and leaving on e0/0 interface of Router will be captured..
debug ip igmp is entered on all devices..
(click on images to view in full size)
Configuring Router..
Router(config)#ip multicast-routing
Router(config)#int e0/0
Router(config-if)#ip igmp version 3
Router(config-if)#ip pim sparse-mode
1st command will enable the multicast routing globally.
Next the version is fixed for 3, because the default version is 2.
Router(config-if)#ip pim sparse-mode
Next the version is fixed for 3, because the default version is 2.
Finally a multicast routing protocol is specified for the interface to process the multicast packets.
As soon as the last interface command entered on Router, following debug messages will opt out..
224.0.1.40 group is not related to this lab, it is coming by default. This address is for Cisco RP discovery.
And the multicast routing table will be like the following on Router, show ip mroute
Configuring Host..
Host(config-if)#ip igmp version 3
Host(config-if)#ip igmp join-group 226.139.1.2 source 1.1.1.1
As soon as the above command entered on Host; debug output will give the following..
Host(config-if)#ip igmp join-group 226.139.1.2 source 1.1.1.1
As you can see the Host is sending 3 Reports. Let's see the contents of them..
All these 3 messages which a host send when it wants to join a group for the 1st time are identical. It is like 3 copies of the same packet.
On Router, the debug output will show the following..
Router is taking the new multicast group in to the account..
Now the multicast routing table on Router-1 will be like the following with the new group entry..
Let's see what happens when a Host leaves the group..
As you can see, the Host is sending 2 Reports of the same content. Let's analyze the packet..
This packet says not to send the feed from 1.1.1.1 to him (sending Host)..
The Router will reply with Source & Group Specific Queries to find out any other live hosts..
Packet Types Summary..
Unlike in IGMPv1 & IGMPv2; IGMPv3 uses 3 different types of Membership Reports to Join, Reply to a Query and to Leave a group.
Join - Type 5 (Allow new sources)
Reply - Type 1 (Mode is Include)
Leave - Type 6 (Block old sources)
So the packet types seems to be using are,
1. Membership Report
2. Membership Query
3. Source & Group Specific Membership Query
Packet capture will look like the following and you can download from here.