Understanding How MLDv2 Snooping Works
These sections describe MLDv2 snooping:
MLDv2 Snooping Overview
MLDv2 snooping allows Cisco 7600 series routers to examine MLDv2 packets and make forwarding decisions based on their content.
You can configure the router to use MLDv2 snooping in subnets that receive MLDv2 queries from either MLDv2 or the MLDv2 snooping querier. MLDv2 snooping constrains IPv6 multicast traffic at Layer 2 by configuring Layer 2 LAN ports dynamically to forward IPv6 multicast traffic only to those ports that want to receive it.
MLDv2, which runs at Layer 3 on a multicast router, generates Layer 3 MLDv2 queries in subnets where the multicast traffic needs to be routed.
You can configure the MLDv2 snooping querier on the router to support MLDv2 snooping in subnets that do not have any multicast router interfaces. For more information about the MLDv2 snooping querier, see the “Enabling the MLDv2 Snooping Querier” section.
MLDv2 (on a multicast router) or the MLDv2 snooping querier (on the supervisor engine) sends out periodic general MLDv2 queries that the router forwards through all ports in the VLAN, and to which hosts respond. MLDv2 snooping monitors the Layer 3 MLDv2 traffic.
Note If a multicast group has only sources and no receivers in a VLAN, MLDv2 snooping constrains the multicast traffic to only the multicast router ports.
MLDv2 Messages
MLDv2 uses these messages:
- Multicast listener queries:
– General query—Sent by a multicast router to learn which multicast addresses have listeners.
– Multicast address specific query—Sent by a multicast router to learn if a particular multicast address has any listeners.
– Multicast address and source specific query—Sent by a multicast router to learn if any of the sources from the specified list for the particular multicast address has any listeners.
- Multicast listener reports:
– Current state record (solicited)—Sent by a host in response to a query to specify the INCLUDE or EXCLUDE mode for every multicast group in which the host is interested.
– Filter mode change record (unsolicited)—Sent by a host to change the INCLUDE or EXCLUDE mode of one or more multicast groups.
– Source list change record (unsolicited)—Sent by a host to change information about multicast sources.
Source-Based Filtering
MLDv2 uses source-based filtering, which enables hosts and routers to specify which multicast sources should be allowed or blocked for a specific multicast group. Source-based filtering either allows or blocks traffic based on the following information in MLDv2 messages:
- Source lists
- INCLUDE or EXCLUDE mode
Because the Layer 2 table is (MAC-group, VLAN) based, with MLDv2 hosts it is preferable to have only a single multicast source per MAC-group.
Note Source-based filtering is not supported in hardware. The states are maintained only in software and used for explicit host tracking and statistics collection.
Explicit Host Tracking
MLDv2 supports explicit tracking of membership information on any port. The explicit-tracking database is used for fast-leave processing, proxy reporting, and statistics collection. When explicit tracking is enabled on a VLAN, the MLDv2 snooping software processes the MLDv2 report it receives from a host and builds an explicit-tracking database that contains the following information:
- The port connected to the host
- The channels reported by the host
- The filter mode for each group reported by the host
- The list of sources for each group reported by the hosts
- The router filter mode of each group
- For each group, the list of hosts requesting the source
Note ● Disabling explicit host tracking disables fast-leave processing and proxy reporting.
- When explicit tracking is enabled and the router is in report-suppression mode, the multicast router might not be able to track all the hosts accessed through a VLAN interface.
MLDv2 Snooping Proxy Reporting
Because MLDv2 does not have report suppression, all the hosts send their complete multicast group membership information to the multicast router in response to queries. The router snoops these responses, updates the database and forwards the reports to the multicast router. To prevent the multicast router from becoming overloaded with reports, MLDv2 snooping does proxy reporting.
Proxy reporting forwards only the first report for a multicast group to the router and suppresses all other reports for the same multicast group.
Proxy reporting processes solicited and unsolicited reports. Proxy reporting is enabled and cannot be disabled.
Note Disabling explicit host tracking disables fast-leave processing and proxy reporting.
Joining an IPv6 Multicast Group
Hosts join IPv6 multicast groups either by sending an unsolicited MLDv2 report or by sending an MLDv2 report in response to a general query from an IPv6 multicast router (the router forwards general queries from IPv6 multicast routers to all ports in a VLAN). The router snoops these reports.
In response to a snooped MLDv2 report, the router creates an entry in its Layer 2 forwarding table for the VLAN on which the report was received. When other hosts that are interested in this multicast traffic send MLDv2 reports, the router snoops their reports and adds them to the existing Layer 2 forwarding table entry. The router creates only one entry per VLAN in the Layer 2 forwarding table for each multicast group for which it snoops an MLDv2 report.
MLDv2 snooping suppresses all but one of the host reports per multicast group and forwards this one report to the IPv6 multicast router.
The router forwards multicast traffic for the multicast group specified in the report to the interfaces where reports were received (see Figure 32-1).
Layer 2 multicast groups learned through MLDv2 snooping are dynamic. However, you can statically configure Layer 2 multicast groups using the mac-address-table static command. When you specify group membership for a multicast group address statically, the static setting supersedes any MLDv2 snooping learning. Multicast group membership lists can consist of both static and MLDv2 snooping-learned settings.
Figure 32-1 Initial MLDv2 Listener Report
Multicast router A sends an MLDv2 general query to the router, which forwards the query to ports 2 through 5 (all members of the same VLAN). Host 1 wants to join an IPv6 multicast group and multicasts an MLDv2 report to the group with the equivalent MAC destination address of 0x0100.5E01.0203. When the router snoops the MLDv2 report multicast by Host 1, the router uses the information in the MLDv2 report to create a forwarding-table entry, as shown in Table 32-1 , that includes the port numbers of Host 1, the multicast router, and the router.
Table 32-1 MLDv2 Snooping Forwarding Table
|
|
|
0100.5exx.xxxx |
MLDv2 |
0 |
0100.5e01.0203 |
!MLDv2 |
1, 2 |
The router hardware can distinguish MLDv2 information packets from other packets for the multicast group. The first entry in the table tells the router to send only MLDv2 packets to the CPU. This prevents the router from becoming overloaded with multicast frames. The second entry tells the router to send frames addressed to the 0x0100.5E01.0203 multicast MAC address that are not MLDv2 packets (!MLDv2) to the multicast router and to the host that has joined the group.
If another host (for example, Host 4) sends an unsolicited MLDv2 report for the same group (Figure 32-2), the router snoops that message and adds the port number of Host 4 to the forwarding table as shown in Table 32-2 . Because the forwarding table directs MLDv2 messages only to the router, the message is not flooded to other ports. Any known multicast traffic is forwarded to the group and not to the router.
Figure 32-2 Second Host Joining a Multicast Group
Table 32-2 Updated MLDv2 Snooping Forwarding Table
|
|
|
0100.5exx.xxxx |
MLDv2 |
0 |
0100.5e01.0203 |
!MLDv2 |
1, 2, 5 |
Leaving a Multicast Group
These sections describe leaving a multicast group:
Normal Leave Processing
Interested hosts must continue to respond to the periodic MLDv2 general queries. As long as at least one host in the VLAN responds to the periodic MLDv2 general queries, the multicast router continues forwarding the multicast traffic to the VLAN. When hosts want to leave a multicast group, they can either ignore the periodic MLDv2 general queries (called a “silent leave”), or they can send an MLDv2 filter mode change record.
When MLDv2 snooping receives a filter mode change record from a host that configures the EXCLUDE mode for a group, MLDv2 snooping sends out a MAC-addressed general query to determine if any other hosts connected to that interface are interested in traffic for the specified multicast group.
If MLDv2 snooping does not receive an MLDv2 report in response to the general query, MLDv2 snooping assumes that no other hosts connected to the interface are interested in receiving traffic for the specified multicast group, and MLDv2 snooping removes the interface from its Layer 2 forwarding table entry for the specified multicast group.
If the filter mode change record was from the only remaining interface with hosts interested in the group, and MLDv2 snooping does not receive an MLDv2 report in response to the general query, MLDv2 snooping removes the group entry and relays the MLDv2 filter mode change record to the multicast router. If the multicast router receives no reports from a VLAN, the multicast router removes the group for the VLAN from its MLDv2 cache.
The interval for which the router waits before updating the table entry is called the “last member query interval.” To configure the interval, enter the ipv6 mld snooping last-member-query-interval interval command.
Fast-Leave Processing
Fast-leave processing is enabled by default. To disable fast-leave processing, turn off explicit-host tracking.
Fast-leave processing is implemented by maintaining source-group based membership information in software while also allocating LTL indexes on a MAC GDA basis.
When fast-leave processing is enabled, hosts send BLOCK_OLD_SOURCES{src-list} messages for a specific group when they no longer want to receive traffic from that source. When the router receives such a message from a host, it parses the list of sources for that host for the given group. If this source list is exactly the same as the source list received in the leave message, the router removes the host from the LTL index and stops forwarding this multicast group traffic to this host.
If the source lists do not match, the router does not remove the host from the LTL index until the host is no longer interested in receiving traffic from any source.
Note Disabling explicit host tracking disables fast-leave processing and proxy reporting.
Understanding the MLDv2 Snooping Querier
Use the MLDv2 snooping querier to support MLDv2 snooping in a VLAN where PIM and MLDv2 are not configured because the multicast traffic does not need to be routed.
In a network where IP multicast routing is configured, the IP multicast router acts as the MLDv2 querier. If the IP-multicast traffic in a VLAN only needs to be Layer 2 switched, an IP-multicast router is not required, but without an IP-multicast router on the VLAN, you must configure another router as the MLDv2 querier so that it can send queries.
When enabled, the MLDv2 snooping querier sends out periodic MLDv2 queries that trigger MLDv2 report messages from the router that wants to receive IP multicast traffic. MLDv2 snooping listens to these MLDv2 reports to establish appropriate forwarding.
You can enable the MLDv2 snooping querier on all the Cisco 7600 series routers in the VLAN, but for each VLAN that is connected to switches that use MLDv2 to report interest in IP multicast traffic, you must configure at least one router as the MLDv2 snooping querier.
You can configure a router to generate MLDv2 queries on a VLAN regardless of whether or not IP multicast routing is enabled.
Configuring MLDv2 Snooping
Note To use MLDv2 snooping, configure a Layer 3 interface in the subnet for IPv6 multicast routing or enable the MLDv2 snooping querier in the subnet (see the “Enabling the MLDv2 Snooping Querier” section).
These sections describe how to configure MLDv2 snooping:
Note Except for the global enable command, all MLDv2 snooping commands are supported only on VLAN interfaces.
Enabling MLDv2 Snooping
To enable MLDv2 snooping globally, perform this task:
|
|
|
Step 1 |
Router(config)# ipv6 mld snooping |
Enables MLDv2 snooping. |
Router(config)# no ipv6 mld snooping |
Disables MLDv2 snooping. |
Step 2 |
Router(config)# end |
Exits configuration mode. |
Step 3 |
Router# show ipv6 mld interface vlan vlan_ID | include globally |
Verifies the configuration. |
This example shows how to enable MLDv2 snooping globally and verify the configuration:
Router(config)# ipv6 mld snooping
Router# show ipv6 mld interface vlan 200 | include globally
MLD snooping is globally enabled
To enable MLDv2 snooping in a VLAN, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping |
Enables MLDv2 snooping. |
Router(config-if)# no ipv6 mld snooping |
Disables MLDv2 snooping. |
Step 3 |
Router(config-if)# end |
Exits configuration mode. |
Step 4 |
Router# show ipv6 mld interface vlan vlan_ID | include snooping |
Verifies the configuration. |
This example shows how to enable MLDv2 snooping on VLAN 25 and verify the configuration:
Router# interface vlan 25
Router(config-if)# ipv6 mld snooping
Router# show ipv6 mld interface vlan 25 | include snooping
MLD snooping is globally enabled
MLD snooping is enabled on this interface
MLD snooping fast-leave is enabled and querier is enabled
MLD snooping explicit-tracking is enabled
MLD snooping last member query response interval is 1000 ms
MLD snooping report-suppression is disabled
Configuring a Static Connection to a Multicast Receiver
To configure a static connection to a multicast receiver, perform this task:
|
|
|
Step 1 |
Router(config)# mac-address-table static mac_addr vlan vlan_id interface type slot/port [ disable-snooping ] |
Configures a static connection to a multicast receiver. |
Router(config)# no mac-address-table static mac_addr vlan vlan_id |
Clears a static connection to a multicast receiver. |
Step 2 |
Router(config-if)# end |
Exits configuration mode. |
Step 3 |
Router# show mac-address-table address mac_addr |
Verifies the configuration. |
When you configure a static connection, enter the disable-snooping keyword to prevent multicast traffic addressed to the statically configured multicast MAC address from also being sent to other ports in the same VLAN.
This example shows how to configure a static connection to a multicast receiver:
Router(config)# mac-address-table static 0050.3e8d.6400 vlan 12 interface fastethernet 5/7
Configuring a Multicast Router Port Statically
To configure a static connection to a multicast router, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects the VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping mrouter interface type slot/port |
Configures a static connection to a multicast router. |
Step 3 |
Router(config-if)# end |
Exits configuration mode. |
Step 4 |
Router# show ipv6 mld snooping mrouter |
Verifies the configuration. |
The interface to the router must be in the VLAN where you are entering the command, the interface must be administratively up, and the line protocol must be up.
This example shows how to configure a static connection to a multicast router:
Router(config-if)# ipv6 mld snooping mrouter interface fastethernet 5/6
Configuring the MLD Snooping Query Interval
You can configure the interval for which the router waits after sending a group-specific query to determine if hosts are still interested in a specific multicast group.
Note When both MLD snooping fast-leave processing and the MLD snooping query interval are configured, fast-leave processing takes precedence.
To configure the interval for the MLD snooping queries sent by the router, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping last-member-query-interval interval |
Configures the interval for the IGMP queries sent by the router. Default is 1 second. Valid range is 1000 to 9990 milliseconds. |
Router(config-if)# no ipv6 mld snooping last-member-query-interval |
Reverts to the default value. |
Step 3 |
Router# show ipv6 mld interface vlan vlan_ID | include last |
Verifies the configuration. |
This example shows how to configure the MLD snooping query interval:
Router(config-if)# ipv6 mld snooping last-member-query-interval 1000
Router# show ipv6 mld interface vlan 200 | include last
MLD snooping last member query response interval is 1000 ms
Enabling Fast-Leave Processing
To enable fast-leave processing in a VLAN, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping fast-leave |
Enables fast-leave processing in the VLAN. |
Router(config-if)# no ipv6 mld snooping fast-leave |
Disables fast-leave processing in the VLAN. |
Step 3 |
Router# show ipv6 mld interface vlan vlan_ID | include fast-leave |
Verifies the configuration. |
This example shows how to enable fast-leave processing on the VLAN 200 interface and verify the configuration:
Router# interface vlan 200
Router(config-if)# ipv6 mld snooping fast-leave
Configuring fast leave on vlan 200
Router# show ipv6 mld interface vlan 200 | include fast-leave
MLD snooping fast-leave is enabled and querier is enabled
Enabling SSM Safe Reporting
To enable source-specific multicast (SSM) safe reporting, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping ssm-safe-reporting |
Enables SSM safe reporting. |
Router(config-if)# no ipv6 mld snooping ssm-safe-reporting |
Clears the configuration. |
This example shows how to SSM safe reporting:
Router(config)# interface vlan 10
Router(config-if)# ipv6 mld snooping ssm-safe-reporting
Configuring Explicit Host Tracking
Note Disabling explicit host tracking disables fast-leave processing and proxy reporting.
To enable explicit host tracking on a VLAN, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping explicit-tracking |
Enables explicit host tracking. |
Router(config-if)# no ipv6 mld snooping explicit-tracking |
Clears the explicit host tracking configuration. |
Step 3 |
Router# show ipv6 mld snooping explicit-tracking vlan vlan_ID |
Displays the status of explicit host tracking. |
This example shows how to enable explicit host tracking:
Router(config)# interface vlan 25
Router(config-if)# ipv6 mld snooping explicit-tracking
Router# show ipv6 mld snooping explicit-tracking vlan 25
Source/Group Interface Reporter Filter_mode
------------------------------------------------------------------------
10.1.1.1/226.2.2.2 Vl25:1/2 16.27.2.3 INCLUDE
10.2.2.2/226.2.2.2 Vl25:1/2 16.27.2.3 INCLUDE
Configuring Report Suppression
To enable report suppression on a VLAN, perform this task:
|
|
|
Step 1 |
Router(config)# interface vlan vlan_ID |
Selects a VLAN interface. |
Step 2 |
Router(config-if)# ipv6 mld snooping report-suppression |
Enables report suppression. |
Router(config-if)# no ipv6 mld snooping report-suppression |
Clears the report suppression configuration. |
Step 3 |
Router# show ipv6 mld interface vlan_ID | include report-suppression |
Displays the status of report suppression. |
This example shows how to enable explicit host tracking:
Router(config)# interface vlan 25
Router(config-if)# ipv6 mld snooping report-suppression
Router# Router# show ipv6 mld interface vlan 25 | include report-suppression
MLD snooping report-suppression is enabled
Displaying MLDv6 Snooping Information
These sections describe displaying MLDv6 snooping information:
Displaying Multicast Router Interfaces
When you enable IGMP snooping, the router automatically learns to which interface the multicast routers are connected.
To display multicast router interfaces, perform this task:
|
|
Router# show ipv6 mld snooping mrouter vlan_ID |
Displays multicast router interfaces. |
This example shows how to display the multicast router interfaces in VLAN 1:
Router# show ipv6 mld snooping mrouter vlan 1
-----+----------------------------------------
1 Gi1/1,Gi2/1,Fa3/48,Router
Displaying MAC Address Multicast Entries
To display MAC address multicast entries for a VLAN, perform this task:
|
|
Router# show mac-address-table multicast vlan_ID [ count ] |
Displays MAC address multicast entries for a VLAN. |
This example shows how to display MAC address multicast entries for VLAN 1:
Router# show mac-address-table multicast vlan 1
vlan mac address type qos ports
-----+---------------+--------+---+--------------------------------
1 0100.5e02.0203 static -- Gi1/1,Gi2/1,Fa3/48,Router
1 0100.5e00.0127 static -- Gi1/1,Gi2/1,Fa3/48,Router
1 0100.5e00.0128 static -- Gi1/1,Gi2/1,Fa3/48,Router
1 0100.5e00.0001 static -- Gi1/1,Gi2/1,Fa3/48,Router,Switch
This example shows how to display a total count of MAC address entries for a VLAN:
Router# show mac-address-table multicast 1 count
Multicast MAC Entries for vlan 1: 4
Displaying MLDv2 Snooping Information for a VLAN Interface
To display MLDv2 snooping information for a VLAN interface, perform this task:
|
|
Router# show ipv6 mld snooping {{ explicit-tracking vlan_ID }| { mrouter [ vlan vlan_ID ]} | { report-suppression vlan vlan_ID } | { statistics vlan vlan_ID } |
Displays MLDv2 snooping information on a VLAN interface. |
This example shows how to display explicit tracking information on VLAN 25:
Router# show ipv6 mld snooping explicit-tracking vlan 25
Source/Group Interface Reporter Filter_mode
------------------------------------------------------------------------
10.1.1.1/226.2.2.2 Vl25:1/2 16.27.2.3 INCLUDE
10.2.2.2/226.2.2.2 Vl25:1/2 16.27.2.3 INCLUDE
This example shows how to display the multicast router interfaces in VLAN 1:
Router# show ipv6 mld snooping mrouter vlan 1
-----+----------------------------------------
1 Gi1/1,Gi2/1,Fa3/48,Router
This example shows IGMP snooping statistics information for VLAN 25:
Router# show ipv6 mld snooping statistics interface vlan 25
Snooping staticstics for Vlan25
Source/Group Interface Reporter Uptime Last-Join Last-Leave
10.1.1.1/226.2.2.2 Gi1/2:Vl25 16.27.2.3 00:01:47 00:00:50 -
10.2.2.2/226.2.2.2 Gi1/2:Vl25 16.27.2.3 00:01:47 00:00:50 -