Hi Andrew, On 2016/10/24 23:32, Andrew Lunn wrote: > On Mon, Oct 24, 2016 at 07:50:12PM +0800, Dongpo Li wrote: >> Hello >> >> We encountered a multicast problem when two set-top box(STB) join the same >> multicast group and leave. >> The two boxes can join the same multicast group >> but only one box can send the IGMP leave group message when leave, >> the other box does not send the IGMP leave message. >> Our boxes use the IGMP version 2. >> >> I added some debug info and found the whole procedure is like this: >> (1) Box A joins the multicast group 225.1.101.145 and send the IGMP v2 >> membership report(join group). >> (2) Box B joins the same multicast group 225.1.101.145 and also send the >> IGMP v2 membership report(join group). >> (3) Box A receives the IGMP membership report from Box B and kernel calls >> igmp_heard_report(). >> This function will call igmp_stop_timer(im). >> In function igmp_stop_timer(im), it tries to delete IGMP timer and does >> the following: >> im->tm_running = 0; >> im->reporter = 0; >> (4) Box A leaves the multicast group 225.1.101.145 and kernel calls >> ip_mc_leave_group -> ip_mc_dec_group -> igmp_group_dropped. >> But in function igmp_group_dropped(), the im->reporter is 0, so the >> kernel does not send the IGMP leave message. > > RFC 2236 says: > > 2. Introduction > > The Internet Group Management Protocol (IGMP) is used by IP hosts to > report their multicast group memberships to any immediately- > neighboring multicast routers. > > Are Box A or B multicast routers? Thank you for your comments. Both Box A and B are IP hosts, not multicast routers. And the RFC says: IGMP is used by "IP hosts" to report their multicast group membership.
> > Andrew > > . > Regards, Dongpo .