IGMP (Internet Group Management Protocol) and MLD (Multicast Listener Discovery) snooping are implemented in the bridge driver in the Cumulus Linux kernel and are enabled by default. IGMP snooping processes IGMP v1/v2/v3 reports received on a bridge port in a bridge to identify the hosts which would like to receive multicast traffic destined to that group.
When an IGMPv2 leave message is received, a group specific query is sent to identify if there are any other hosts interested in that group, before the group is deleted.
An IGMP query message received on a port is used to identify the port that is connected to a router and is interested in receiving multicast traffic.
MLD snooping processes MLD v1/v2 reports, queries and v1 done messages for IPv6 groups. If IGMP or MLD snooping is disabled, multicast traffic gets flooded to all the bridge ports in the bridge. Similarly, in the absence of receivers in a VLAN, multicast traffic would be flooded to all ports in the VLAN. The multicast group IP address is mapped to a multicast MAC address and a forwarding entry is created with a list of ports interested in receiving multicast traffic destined to that group.
Configuring IGMP/MLD Querier
If no multicast router is sending queries to configure IGMP/MLD querier on the switch, you can add a configuration similar to the following in
/etc/network/interfaces. To enable IGMP and MLD snooping for a bridge, set
bridge-mcquerier to 1 in the bridge stanza. By default, the source IP address of IGMP queries is 0.0.0.0. To set the source IP address of the queries to be the bridge IP address, configure
For an explanation of the relevant parameters, see the
ifupdown-addons-interfaces man page.
For a VLAN-aware bridge, use a configuration like the following:
For a VLAN-aware bridge, like bridge in the above example, to enable querier functionality for VLAN 100 in the bridge, set
bridge-mcquerier to 1 in the bridge stanza and set
bridge-igmp-querier-src to 18.104.22.168 in the bridge.100 stanza.
You can specify a range of VLANs as well. For example:
For a bridge in traditional mode, use a configuration like the following:
Disable IGMP and MLD Snooping
To disable IGMP and MLD snooping, set the
bridge-mcsnoop value to 0.
Example Disable IGMP MLD Snooping Configuration
The example NCLU commands below create a VLAN-aware bridge interface for a VRR-enabled network:
The commands above add the
bridge-mcsnoop line to the following example bridge in
Debugging IGMP/MLD Snooping
To get the IGMP/MLD snooping bridge state, run
brctl showstp <bridge>:
To get the groups and bridge port state, use the
bridge mdb show command. To display router ports and group information use the
bridge -d -s mdb show command: