I am using a CentOS 6.3 server to subscribe to UDP multicast data, and I noticed that my server doesn't answer the IGMP queries sent by the switch it is connected to.
As a result, when I open my multicast socket, I start receiving multicast data, but this stops when my IGMP subscription times out. The server doesn't renew its IGMP subscriptions, so the switch cuts off the multicast stream.
(To insure that the problem doesn't come from any code of mine, I am using smcroute to open multicast subscriptions.)
Here is a screenshot of the IGMP communications on any interface of my server:
http://img521.imageshack.us/img521/9953/capture10y.png
As we can see, my server first sends 2 IGMP joins, but a few minutes later when the switch sends the IGMP group membership query, the kernel doesn't answer.
The version of the IGMP protocol set for the affected interface is V2:
[root@localhost ~]# cat /proc/net/igmp
Idx Device : Count Querier Group Users Timer Reporter
1 lo : 0 V2
010000E0 1 0:00000000 0
2 eth0 : 5 V2
FB0000E0 1 0:00000000 1
010000E0 1 0:00000000 0
5 tap0 : 5 V3
FB0000E0 1 0:00000000 0
010000E0 1 0:00000000 0
7 eth1.371: 13 V2
414000E0 1 0:00000000 1
404000E0 1 0:00000000 1
3F4000E0 1 0:00000000 1
504000E0 1 0:00000000 1
524000E0 1 0:00000000 1
494000E0 1 0:00000000 1
4A4000E0 1 0:00000000 1
4B4000E0 1 0:00000000 1
FB0000E0 1 0:00000000 0
010000E0 1 0:00000000 0
The rp_filter is disabled on this interface:
[root@localhost ~]# cat /proc/sys/net/ipv4/conf/eth1.371/rp_filter
0