Cisco Support Community
Showing results for 
Search instead for 
Did you mean: 

Welcome to Cisco Support Community. We would love to have your feedback.

For an introduction to the new site, click here. If you'd prefer to explore, try our test area to get started. And see here for current known issues.

New Member

CGMP mechanism - confusion

I'm a bit confused about the CGMP join mechanism. When a host wants to join a group, it firstly sends IGMP report message to the router. Then the switch will record the MAC of this host to its CAM table. Then the router will send a CGMP join message to the switch. This join message has Unicast Source address set to that host MAC address and Group Destination address set to the multicast group MAC address. Then the switch will map the group address to the unicast source address so that according to the CAM table, it knows which port is related to the multicast MAC address. That's very clear but my confusion is what about when a second host also wants to join that group.

IGMP mechanism tells us that the second host will not send IGMP report message if it has just received the report message from the first host, because this will save the bandwidth. Then the router should not be able to send a CGMP join message with the Unicast source address set to the second host ! Then in that case, the switch won't be able to map the port of the second host to the group MAC address !

Can anyone correct me ? Thank you.

  • Other Network Infrastructure Subjects
New Member

Re: CGMP mechanism - confusion

The second host to join will never receive the initial join from the first host. With CGMP, the switch port that connects to the router is identified, and all multicast traffic is sent to this port by default. Because each port is a seperate collision domain, the router port will only recieve the multicast join. Therefore, the second host will send it's own join which will be recieved by host 1 and the router.

I don't know if I'm explaining myself. Do you understand, if not I'll go through it periodically!


Cisco Employee

Re: CGMP mechanism - confusion

In CGMP there is no way to distinguish data flow from IGMP flow.

In the case you describe, the second host just sends an unsolicited IGMP report (a join) and the router & everyone else in the group receives the traffic.

Suppression is irrelevant. If there is no query outstanding, then the first host was not intending to send a report anyway. If there is a query outstanding, then the router is satisfied, state is maintained, even if the first host suppressed its report.

In CGMP (and this is a big weakness of CGMP), once a port is joined to a group, it remains joined to the group until all hosts leave the group. IGMP snooping does not suffer from this weakness, as it is looking at the IGMP packets themselves.

If you enable CGMP leave processing, then we can begin to figure out when hosts leave & remove those ports. There are still some weaknesses here but it is better than CGMP w/o leave processing.

With leave processing, since leaves are sent to, not to the group address, all traffic to that MAC is redirected to the CPU. The switch sends a MAC based General Query on the port where the leave was received - this will trigger a report from any host still interested in the group on that port. If the switch sees a CGMP join for that group during the query interval, it does not remove the port, else, it does remove the port.

There are more details, but basically, this is how it works.