Introduction


IGMP (Internet Group Management Protocol) and MLD (Multicast Listener Discovery) snooping allow the bridge to listen to IGMP/MLD communication and make forwarding decisions for multicast traffic based on the received information. By default, bridges are flooding multicast traffic to all bridge ports just like broadcast traffic, which might not always be the best scenario (e.g. for multicast video traffic). The IGMP/MLD snooping tries to solve the problem by forwarding the multicast traffic only to ports where clients are subscribed to. RouterOS bridge is able to process IGMP v1/v2/v3 and MLD v1/v2 packets. 

Source-specific multicast forwarding is not supported for IGMP v3 and MLD v2.


Configuration options


This section describes the IGMP and MLD snooping bridge configuration options.

Sub-menu: /interface bridge

Property

Description

igmp-snooping (yes | no; Default: no)Enables IGMP and MLD snooping.
igmp-version (2 | 3; Default: 2)Selects the IGMP version in which IGMP membership queries will be generated, when the bridge interface is acting as an IGMP querier. This property only has an effect when igmp-snooping and multicast-querier is set to yes.
last-member-interval (time; Default: 1s)

When the last client on the bridge port unsubscribes to a multicast group and the bridge is acting as an active querier, the bridge will send group-specific IGMP/MLD query, to make sure that no other client is still subscribed. The setting changes the response time for these queries. In case no membership reports are received in a certain time period (last-member-interval * last-member-query-count), the multicast group is removed from the multicast database (MDB).

If the bridge port is configured with fast-leave, the multicast group is removed right away without sending any queries.

This property only has an effect when igmp-snooping and multicast-querier is set to yes.

last-member-query-count (integer: 0..4294967295; Default: 2)How many times should last-member-interval pass until the IGMP/MLD snooping bridge stops forwarding a certain multicast stream. This property only has an effect when igmp-snooping and multicast-querier is set to yes.
membership-interval (time; Default: 4m20s)The amount of time after an entry in the Multicast Database (MDB) is removed if no IGMP/MLD membership reports are received on a bridge port. This property only has an effect when igmp-snooping is set to yes.
mld-version (1 | 2; Default: 1)Selects the MLD version in which MLD membership queries will be generated, when the bridge interface is acting as an MLD querier. This property only has an effect when the bridge has an active IPv6 address, igmp-snooping and multicast-querier is set to yes.
multicast-querier (yes | no; Default: no)

Multicast querier generates periodic IGMP/MLD general membership queries to which all IGMP/MLD capable devices respond with an IGMP/MLD membership report, usually a PIM (multicast) router or IGMP proxy generates these queries.

By using this property you can make an IGMP/MLD snooping enabled bridge to generate IGMP/MLD general membership queries. This property should be used whenever there is no active querier (PIM router or IGMP proxy) in a Layer2 network. Without a multicast querier in a Layer2 network, the Multicast Database (MDB) is not being updated, the learned entries will timeout and IGMP/MLD snooping will not function properly.

Only untagged IGMP/MLD general membership queries are generated, IGMP queries are sent with IPv4 0.0.0.0 source address, MLD queries are sent with IPv6 link-local address of the bridge interface. The bridge will not send queries if an external IGMP/MLD querier is detected (see the monitoring values igmp-querier and mld-querier).

This property only has an effect when igmp-snooping is set to yes.

multicast-router (disabled | permanent | temporary-query; Default: temporary-query)A multicast router port is a port where a multicast router or querier is connected. On this port, unregistered multicast streams and IGMP/MLD membership reports will be sent. This setting changes the state of the multicast router for a bridge interface itself. This property can be used to send IGMP/MLD membership reports to the bridge interface for further multicast routing or proxying. This property only has an effect when igmp-snooping is set to yes.
  • disabled - disabled multicast router state on the bridge interface. Unregistered multicast and IGMP/MLD membership reports are not sent to the bridge interface regardless of what is configured on the bridge interface.
  • permanent - enabled multicast router state on the bridge interface. Unregistered multicast and IGMP/MLD membership reports are sent to the bridge interface itself regardless of what is configured on the bridge interface.
  • temporary-query - automatically detect multicast router state on the bridge interface using IGMP/MLD queries.
querier-interval (time; Default: 4m15s)Changes the timeout period for detected querier and multicast-router ports. This property only has an effect when igmp-snooping is set to yes.
query-interval (time; Default: 2m5s)Changes the interval on how often IGMP/MLD general membership queries are sent out when the bridge interface is acting as an IGMP/MLD querier. The interval takes place when the last startup query is sent. This property only has an effect when igmp-snooping and multicast-querier is set to yes.
query-response-interval (time; Default: 10s)The setting changes the response time for general IGMP/MLD queries when the bridge is active as an IGMP/MLD querier. This property only has an effect when igmp-snooping and multicast-querier is set to yes.
startup-query-count (integer: 0..4294967295; Default: 2)Specifies how many times general IGMP/MLD queries must be sent when bridge interface is enabled or active querier timeouts. This property only has an effect when igmp-snooping and multicast-querier is set to yes.
startup-query-interval (time; Default: 31s250ms)Specifies the interval between startup general IGMP/MLD queries. This property only has an effect when igmp-snooping and multicast-querier is set to yes.

Sub-menu: /interface bridge port

Property

Description

fast-leave (yes | no; Default: no)Enables IGMP/MLD fast leave feature on the bridge port. The bridge will stop forwarding multicast traffic to a bridge port when an IGMP/MLD leave message is received. This property only has an effect when igmp-snooping is set to yes.
multicast-router (disabled | permanent | temporary-query; Default: temporary-query)A multicast router port is a port where a multicast router or querier is connected. On this port, unregistered multicast streams and IGMP/MLD membership reports will be sent. This setting changes the state of the multicast router for bridge ports. This property can be used to send IGMP/MLD membership reports to certain bridge ports for further multicast routing or proxying. This property only has an effect when igmp-snooping is set to yes.
  • disabled - disabled multicast router state on the bridge port. Unregistered multicast and IGMP/MLD membership reports are not sent to the bridge port regardless of what is connected to it.
  • permanent - enabled multicast router state on the bridge port. Unregistered multicast and IGMP/MLD membership reports are sent to the bridge port regardless of what is connected to it.
  • temporary-query - automatically detect multicast router state on the bridge port using IGMP/MLD queries.

Monitoring and troubleshooting


This section describes the IGMP/MLD snooping bridge monitoring and troubleshooting options. 

To monitor learned multicast database (MDB) entries, use the print command.

Sub-menu: /interface bridge mdb

Property

Description

bridge (read-only: name)Shows the bridge interface the entry belongs to.
group (read-only: ipv4 | ipv6 address)Shows a multicast group address.
ports (read-only: name)Shows the bridge ports which are subscribed to the certain multicast group.
vid (read-only: integer)Shows the VLAN ID for the multicast group, only applies when vlan-filtering is enabled.


[admin@MikroTik] /interface bridge mdb print
GROUP                                                VID PORTS       BRIDGE      
229.1.1.2                                             10 ether3      bridge1     
229.2.2.2                                             10 ether3      bridge1     
ff1e::2010                                            10 ether3      bridge1     
ff1e::2011                                            10 ether3      bridge1 

To monitor the current status of a bridge interface, use the monitor command.

Sub-menu: /interface bridge

Property

Description

igmp-querier (none | interface & IPv4 address)Shows a bridge port and source IP address from the detected IGMP querier. Only shows detected external IGMP querier, local bridge IGMP querier (including IGMP proxy and PIM) will not be displayed. Monitoring value appears only when igmp-snooping is enabled.
mld-querier (none | interface & IPv6 address)Shows a bridge port and source IPv6 address from the detected MLD querier. Only shows detected external MLD querier, local bridge MLD querier will not be displayed. Monitoring value appears only when igmp-snooping is enabled and the bridge has an active IPv6 address.
multicast-router (yes | no)Shows if a multicast router is detected on the bridge interface. Monitoring value appears only when igmp-snooping is enabled.


[admin@MikroTik] /interface bridge monitor bridge1
                  state: enabled
    current-mac-address: 64:D1:54:C7:3A:59
            root-bridge: yes
         root-bridge-id: 0x8000.64:D1:54:C7:3A:59
         root-path-cost: 0
              root-port: none
             port-count: 3
  designated-port-count: 3
           fast-forward: no
       multicast-router: no
           igmp-querier: ether2 192.168.10.10
            mld-querier: ether2 fe80::e68d:8cff:fe39:3824

To monitor the current status of bridge ports, use the monitor command.

Sub-menu: /interface bridge port



Property

Description

multicast-router (yes | no)Shows if a multicast router is detected on the port.




[admin@MikroTik] > /interface bridge port monitor [find]
              interface: ether2          ether3          ether4
                 status: in-bridge       in-bridge       in-bridge
            port-number: 1               2               3
                   role: designated-port designated-port designated-port
              edge-port: no              yes             yes
    edge-port-discovery: yes             yes             yes
    point-to-point-port: yes             yes             yes
           external-fdb: no              no              no
           sending-rstp: yes             yes             yes
               learning: yes             yes             yes
             forwarding: yes             yes             yes
       multicast-router: yes             no              no
       hw-offload-group: switch1         switch1         switch1

Configuration examples