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 !
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!
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 184.108.40.206, 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.
[toc:faq]The ProblemOn traditional switches whenever we have a trunk
interface we use the VLAN tag to demultiplex the VLANs. The switch needs
to determine which MAC Address table to look in for a forwarding
decision. To do this we require the switch to do...
[toc:faq]Introduction:Netdr is a tool available on a RSP720, Sup720 or
Sup32 that allows one to capture packets on the RP or SP inband. The
netdr command can be used to capture both Tx and Rx packets in the
software switching path. This is not a substitut...
IntroductionOSPF, being a link-state protocol, allows for every router
in the network to know of every link and OSPF speaker in the entire
network. From this picture each router independently runs the Shortest
Path First (SPF) algorithm to determine the b...