IGMP V3 Mode 1 VS Mode 2
We had an ongoing issue recently with multicast receivers on our 4507 that would loose their multicast groups every so often and we couldn’t explain why. It looked like the problem was the 4507. We were able to do packet captures that proved that the 4507 was definitely receiving the igmp group requests from the receiver but it would ignore them and let the 3 minute default timer time out and have the group fail even though every minute the receivers were sending traffic to that group. We were definitely certain the fault HAD to be the 4507 because it was visibly ignoring the joins. Turns out it isn’t that simple.
We discovered during a long series of debugs that what was actually occuring was a test DCM connected to our production device was also joining these multicasts feeds. The DCM was doing an IGMP V3 Mode 1 join which is an INCLUDE join. The recievers made by Grass Valley were doing an IGMP V2 join which is an EXCLUDE join. Once the 4507 recieved a Mode 1 join for the multicast it is designed to ignore any Mode 2 joins that come in. The test DCM would occasionally stop joining the multicast for one reason or another. Being a lab device this wasn’t too concerning. When it did, the feed would just die, until it joined the streams again.
Here is an excerpt on Mode 1 vs Mode 2 from Cisco’s website.
Devices Running IGMPv3
IGMPv3 adds support for source filtering, which enables a multicast receiver host to signal to a device which groups it wants to receive multicast traffic from, and from which sources this traffic is expected. This membership information enables the software to forward traffic only from those sources from which receivers requested the traffic.
IGMPv3 supports applications that explicitly signal sources from which they want to receive traffic. With IGMPv3, receivers signal membership to a multicast group in the following two modes:
- INCLUDE mode–In this mode, the receiver announces membership to a group and provides a list of IP addresses (the INCLUDE list) from which it wants to receive traffic.
- EXCLUDE mode–In this mode, the receiver announces membership to a group and provides a list of IP addresses (the EXCLUDE list) from which it does not want to receive traffic. In other words, the host wants to receive traffic only from sources whose IP addresses are not listed in the EXCLUDE list. To receive traffic from all sources, like in the case of the Internet Standard Multicast (ISM) service model, a host expresses EXCLUDE mode membership with an empty EXCLUDE list.
4209170: Jul 11 23:35:56.374 EST: IGMP(0): Send v3 general Query on Vlanxxx
4209171: Jul 11 23:35:56.374 EST: IGMP(0): Set report delay to 0.5 seconds to respond to General Query on Vlanxxx
4209172: Jul 11 23:35:56.375 EST: L2MCSN: Clearing flags for source x.x.x.x group 232.125.10.161 in Vlan xxx
<snip>
4209186: Jul 11 23:35:57.836 EST: MRT(0): Cancel delete, IGMP members for (x.x.x.x, 232.125.10.161)
4209187: Jul 11 23:35:57.976 EST: IGMP(0): Source timer expired for (x.x.x.x,232.125.10.161) on Vlanxxx
4209188: Jul 11 23:35:57.976 EST: MRT(0): Reset the I-flag for (x.x.x.x, 232.125.10.161)
4209189: Jul 11 23:35:57.976 EST: IGMP(0): MRT delete Vlanxxx for (x.x.x.x,232.125.10.161) by 0
4209190: Jul 11 23:35:57.976 EST: MRT(0): Delete Vlanxxx/232.125.10.161 from the olist of (x.x.x.x, 232.125.10.161)
4209191: Jul 11 23:35:57.976 EST: IGMP(0): Deleting source (x.x.x.x,232.125.10.161)
<snip>
4209200: Jul 11 23:35:59.320 EST: IGMPSN: Add v3 group 232.125.10.161 member port Gi2/44, on Vlan xxx
4209201: Jul 11 23:35:59.320 EST: IGMP(0): Received v3 Report for 1 group on Vlanxxx from y.y.y.y
4209202: Jul 11 23:35:59.320 EST: IGMP(0): Received Group record for group 232.125.10.161, mode 2 from y.y.y.y for 1 sources
4209203: Jul 11 23:35:59.321 EST: IGMP(0): Group Record mode 2 for SSM group 232.125.10.161 from y.y.y.y on Vlanxxx, ignored
4209204: Jul 11 23:35:59.676 EST: IGMP(0): Deleting source (a.a.a.a,232.125.10.194)
4209205: Jul 11 23:35:59.976 EST: IGMP(0): Received Group 232.125.10.13 Query for 1 sources
4209206: Jul 11 23:35:59.976 EST: IGMPSN: Syncing Querier information for Vlan xxx4209206: Jul 11 23:35:59.976 EST: IGMPSN: Syncing Querier information for Vlan xxx
4209207: Jul 11 23:36:02.460 EST: L2MCSN: group: Upadating expiration time for source x.x.x.x group 232.125.10.161 to 130s
4209208: Jul 11 23:36:02.460 EST: L2MCSN: EHT: Updating expire time for Host z.z.z.z
4209209: Jul 11 23:36:02.460 EST: IGMPSN: Add v3 group 232.125.10.161 member port Gi1/31, on Vlan xxx<SNIP>
4209306: Jul 11 23:36:05.548 EST: IGMPSN: Add v3 group 232.125.10.161 member port Gi2/47, on Vlan xxx
<SNIP>
4209334: Jul 11 23:36:06.117 EST: IGMPSN: Add v3 group 232.125.10.161 member port Gi2/43, on Vlan xxx
4210163: Jul 11 23:36:56.372 EST: IGMP(0): Send v3 general Query on Vlanxxx
4210164: Jul 11 23:36:56.372 EST: IGMP(0): Set report delay to 4.2 seconds to respond to General Query on Vlanxxx
4210165: Jul 11 23:36:56.372 EST: L2MCSN: Clearing flags for source x.x.x.x group 232.125.10.161 in Vlan xxx
4210166: Jul 11 23:36:56.373 EST: IGMPSN: Syncing Querier information for Vlan xxx
<snip>
4210169: Jul 11 23:36:57.210 EST: IGMPSN: Syncing Querier information for Vlan xxx
4210170: Jul 11 23:36:57.519 EST: L2MCSN: group: Upadating expiration time for source x.x.x.x group 232.125.10.161 to 130s
4210171: Jul 11 23:36:57.519 EST: L2MCSN: EHT: Updating expire time for Host z.z.z.z
4210172: Jul 11 23:36:57.519 EST: IGMPSN: Add v3 group 232.125.10.161 member port Gi1/31, on Vlan xxx
4210173: Jul 11 23:36:57.520 EST: IGMP(0): Received v3 Report for 4 groups on Vlanxxx from z.z.z.z
4210174: Jul 11 23:36:57.520 EST: IGMP(0): Received Group record for group 232.125.10.161, mode 1 from z.z.z.z for 1 sources
4210175: Jul 11 23:36:57.520 EST: IGMP(0): WAVL Insert group: 232.125.10.161 interface: VlanxxxSuccessful
4210176: Jul 11 23:36:57.520 EST: IGMP(0): Create source x.x.x.x