Modify

Opened 3 years ago

Closed 3 years ago

#17954 closed defect (not_a_bug)

IGMP snooping not working on Chaos Calmer r42463

Reported by: anonymous Owned by: developers
Priority: high Milestone: Chaos Calmer 15.05
Component: packages Version: Trunk
Keywords: Cc:

Description

I've made sure that snooping is enabled in /etc/config/network

config interface 'lan'
	option ifname 'eth0.1'
	option type 'bridge'
	option proto 'static'
	option ipaddr '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option mtu '9000'
	option igmp_snooping '1'

and also /sys/devices/virtual/net/br-lan/bridge/multicast_snooping is set to 1.

IGMP snooping is set in kernel_menuconfig and kmod-brigde is set in menuconfig.

But network is flooded with multicast packages. I had to connect a switch between the router and the LAN and set igmp snooping on the switch and everything came back to normal working condition.

Device is a Comtrend 5813n with a 6369 CPU.

Attachments (0)

Change History (4)

comment:1 Changed 3 years ago by jfmart@…

I have found an article

http://troglobit.com/blog/2013/07/09/multicast-howto/

which states that there "is a bug in the IGMP snooping code in the Linux bridging code: the bridge handles the special case 224.0.0.*"

If this is true, it would explain why I observe multicast flooding in my LAN. My IPTV service channels are 239.0.0.0/16

For IGMP snooping to work properly, the ip range to watch is 224.0.0.0/4

comment:2 Changed 3 years ago by jfmart@…

I have searched source code for potential culprits and have found this:

/* Defines for Multicast INADDR.  */
#define INADDR_UNSPEC_GROUP	((in_addr_t) 0xe0000000) /* 224.0.0.0 */
#define INADDR_ALLHOSTS_GROUP	((in_addr_t) 0xe0000001) /* 224.0.0.1 */
#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002) /* 224.0.0.2 */
#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff) /* 224.0.0.255 */

in include/linux/in.h and include/netinet/in.h

Shouldn't it be:

#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xefffffff) /* 239.255.255.255 */

I don't know if this is the source of the error but it must be something like this.

comment:3 Changed 3 years ago by jfmart@…

I was wrong about this definition. It refers to the max multicasting address for a local subnetwork (according to IANA) and it‘s correct.

I‘ll have to look somewhere else.

comment:4 Changed 3 years ago by jogo

  • Resolution set to not_a_bug
  • Status changed from new to closed

The linux igmp/mld snooping only works between linux interfaces, but does not have any effect on the switch chip behind a certain interface.

You should not see any multicast traffic on wifi as long as there are no subscribers, but it will still be broadcast to all ethernet ports if there is any subscriber on one of the ports.

This is more or less a hardware limitation, Broadcom switches do not implement full MLD/IGMP snooping in hardware but are only able to redirect these packets to linux with additional information, which would then require a special driver to update the switch internal forwarding tables to match the joins/leaves/membership reports.

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.