MLD
Hosts use Multicast Listener Discovery (MLD) protocol in IPv6 to report their multicast group memberships to neighboring routers. Similarly, multicast routers, such as the E-series router, use MLD to discover which of their hosts belong to multicast groups.
The IPv6 address scheme uses hexadecimal FF at the start of an address for IPv6 multicast. MLD is a protocol that uses these addresses. The following addresses have specific functions:
- You can assign only multicast addresses of global-scope (that is, containing an FFxE prefix, where x is the flags field) to a multicast group.
- FF02::1 is the link-scope all-nodes address—A packet sent to this address reaches all nodes on a subnetwork.
- FF02::2 is the link-scope all-routers address—A packet sent to this address reaches all routers on a subnetwork.
- FF02::16 is the link-scope all-MLDv2 routers address—A packet sent to this address reaches all MLDv2 routers on a subnetwork.
This implementation of MLD complies with MLD versions 1 and 2. MLDv2 allows for source-specific join and leave messages and is backward compatible with MLDv1. Configuring MLDv1 with the SSM mapping feature provides support for source-specific joins.
MLD Operation
MLDv1 mode interfaces exchange the following types of messages between routers and hosts:
MLDv2 mode interfaces exchange the following types of messages with MLDv2 hosts:
Multicast Listener Queries
A multicast router can be a querier or a nonquerier. There is only one querier on a network at any time. Multicast routers monitor queries from other multicast routers to determine the status of the querier. If the querier hears a query from a router with a lower IPv6 address, it relinquishes its role to that router.
MLDv1 and MLDv2 mode interfaces send two types of multicast listener queries to hosts on the network:
- General queries to the all-nodes address (FF02::1)
- Specific queries to the appropriate multicast group address
MLDv2 mode interfaces send the following type of queries to MLDv2 hosts:
The purpose of a membership group query is to discover the multicast groups to which a host belongs.
MLDv1 and MLDv2 multicast listener queries have a Max Response Time field. This response time is the maximum that a host can take to reply to a query.
Multicast Listener Reports
When a host receives a multicast listener query, it identifies the groups associated with the query and determines to which groups it belongs. The host then sets a timer, with a value less than the Max Response Time field in the query, for each group to which it belongs.
When the timer expires, the host sends a multicast listener report to the group address. When a multicast router receives a report, it adds the group to the membership list for the network and sets a timer to the multicast address listening interval. If this timer expires before the router receives another multicast listener report, the router determines that the group has no members left on the network.
If the router does not receive any reports for a specific multicast group within the maximum response time, it assumes that the group has no members on the network. The router does not forward subsequent multicasts for that group to the network.
MLDv2 supports an extended report format that allows you to report multiple groups and source lists in a single report. These reports are addressed to the all-MLDv2 router's multicast address (FF02::16).
Multicast Listener Done Messages
When an MLDv1 host leaves a group, it sends a multicast listener done message to multicast routers on the network. A host generally addresses multicast listener done messages to the all-routers address, FF02::2.
When an MLDv2 host leaves a group, it sends a multicast listener report. This report includes an empty source list for that group.
Configuring Static and Dynamic MLD Interfaces
The router supports static and dynamic MLD interfaces. Unlike static interfaces, dynamic interfaces are not restored when you reboot the router. For some protocols, dynamic layers can build on static layers in an interface; however, in a dynamic MLD interface, all the layers are dynamic. See Figure 30 for examples of static and dynamic MLD interfaces.
![]()
Static MLD interfaces are configured with software such as the CLI or an SNMP application; dynamic MLD interfaces are configured with a profile. A profile comprises a set of attributes for an interface; a profile for dynamic MLD interfaces contains attributes for configuring all the layers in the interface.
You define a profile by using the same CLI commands that you use to configure a static MLD interface; however, the mode in which you use the commands differs. Use the commands in Interface Configuration mode to configure a static MLD interface and in Profile Configuration mode to define a profile.
When you have defined a profile, you can apply it to an interface or a group of interfaces. Profiles provide an efficient method of creating and managing large numbers of dynamic interfaces. For detailed information about creating and assigning profiles, see JUNOSe Link Layer Configuration Guide, Chapter 13, Configuring Dynamic Interfaces. When you create a profile for dynamic MLD interfaces, specify attributes for configuring all layers in the interface.
You use the MLD commands shown in Table 21 to configure a static MLD interface. You also use these commands to define the attributes for the MLD layer when you create a profile for dynamic MLD interfaces.
The following sections describe the tasks associated with these commands.
Enabling MLD on an Interface
You must start MLD on each interface that you want to use the protocol. You can configure MLD and PIM on the same interface. If you configure only MLD on an interface, the router considers that MLD owns that interface. If you configure MLD and PIM on an interface, the router considers that PIM owns the interface.
In an MLDv1 or MLDv2 network, the querier is the router with the lowest IPv6 address.
To start MLD, complete the following steps:
- Enable MLD on the interface (MLDv2 is the default version).
- (MLDv1) Specify the MLD version for the interface.
ipv6 mld
- Use to enable MLD on an interface and to set the MLD version to MLDv2. Use the ipv6 mld version command to specify a different MLD version.
- Example
host1:boston(config-if)#ipv6 mldUse the no version to disable MLD on an interface. ipv6 mld version
host1:boston(config-if)#ipv6 mld version 2Use the no version to set the version to the default, MLDv2. Configuring MLD Settings for an Interface
When you start MLD on an interface, it operates with the default settings. You can, however, modify:
- The method that the router uses to remove hosts from multicast groups
- The time interval at which the querier sends multicast listener queries
- The time that a querier waits before sending a new query to hosts from which it receives multicast listener done messages
- The time that a new querier waits before sending query messages after it assumes responsibility from another querier
- The time that a host can take to reply to a query (maximum response time)
- The number of times that the router sends each MLD message from this interface
ipv6 mld immediate-leave
- Use to specify that when the router receives a multicast listener done message from a host associated with this interface, the router will immediately remove that host from the multicast group.
- Example
host1:boston(config-if)#ipv6 mld immediate-leaveUse the no version to restore the default situation, in which the router removes a host from a multicast group if that host does not return a multicast listener report within a certain length of time after receiving a multicast listener query from the router. ipv6 mld last-member-query-interval
- Use to specify the last-member-query-interval value, in tenths of a second. When the router receives an MLDv1 leave message or an MLDv2 state change report, it sends out a query and expects a response within the time specified by this value.
- Using a lower value allows members to leave groups more quickly.
- Example
host1:boston(config-if)#ipv6 mld last-member-query-interval 90Use the no version to restore the default, 10-tenths of a second (1 second). ipv6 mld querier-timeout
- Use to set the time in seconds that the interface waits before sending query messages after it becomes the querier.
- Example
host1:boston(config-if)#ipv6 mld querier-timeout 200Use the no version to set the time to the default, twice the query interval. ipv6 mld query-interval
host1:boston(config-if)#ipv6 mld query-interval 100Use the no version to set the polling interval to the default, 125 seconds. ipv6 mld query-max-response-time
- Use to specify the period in tenths of a second during which the host is expected to respond to a group membership query.
- MLDv1 and MLDv2 include this value in MLD query messages sent out on the interface.
- Using a lower value allows members to join and leave groups more quickly.
- Example
host1:boston(config-if)#ipv6 mld query-max-response-time 120Use the no version to restore the default, 100-tenths of a second (10 seconds). ipv6 mld robustness
- Use to specify the number of times that the router sends each MLD message from this interface.
- Use a higher value to ensure high reliability from MLD.
- Specify a number in the range 1-4.
- Example
host1:boston(config-if)#ipv6 mld robustness 2Use the no version to restore the default, 3. Assigning a Multicast Group to an Interface
You can assign an interface to send and receive all traffic for a particular multicast group. This feature allows you to control the MLD traffic and to test the behavior of multicast protocols in the network.
ipv6 mld static-group
- Use to send and receive all traffic for a multicast group from a specific interface.
- The interface sets no timers for this group.
- Example
host1:boston(config-if)#ipv6 mld static-group ff0e::1Use the no version to remove the group from the interface. Specifying Multicast Groups
You can use a standard IPv6 access list to specify the multicast groups that a host can join.
ipv6 mld access-group
- Use to restrict hosts on this subnetwork to join only multicast groups that appear on the specified IPv6 access list.
- When configured, the access list is queried whenever the router receives an MLDv1 report requesting membership of a group and MLDv2 ChangeToInclude, IsInclude, ChangeToExclude, or IsExclude reports. The request is ignored if the access list query fails. The ipv6 mld access-group command uses IPv6 access lists, which allow both source and destination/group addresses to be specified. You must set the source address to "any."
- Example
host1:boston(config-if)#ipv6 mld access-group boston-listUse the no version to dissociate the interface from an access list and to allow hosts on the interface to join any multicast group. ipv6 mld access-source-group
- Use to restrict hosts on this subnetwork to membership in those (S,G) pairs (also known as "channels") permitted by the specified IPv6 access list.
- When configured, both source and group addresses query the associated access list whenever the router receives an MLDv2 report requesting membership of the (S,G) pairs (that is, the router receives an MLDv2 ChangeToInclude, IsInclude, or AllowNewSource group report). The request is ignored if the access list query fails. The ipv6 mld access-source-group command uses IPv6 access lists, which allow both source and destination group addresses to be specified.
- Example
host1:boston(config-if)#ipv6 mld access-source-group dallas-listUse the no version to remove any access list restriction. Configuring SSM Mapping
SSM mapping allows the router to determine one or more source addresses for group G. The mapping effectively translates an MLDv1 multicast listener report to an MLDv2 report, allowing the router to continue as if it had initially received an MLDv2 report. Once the router is joined to these groups, it sends out PIM join messages and continues to allow joining from these groups, as long as it continues to receive MLDv1 membership reports and no change occurs to the SSM mapping for the group.
When you statically configure SSM mapping, the router can discover source addresses from a statically configured table.
The following applies when you configure SSM mapping:
- When enabled, and either you have not configured a static SSM map or the router cannot find any matching access lists, the router continues to accept (*,G) groups. The PIM SSM range must deny any unacceptable SSM group addresses.
- When you issue the no ipv6 mld ssm-map enable command, the router removes all SSM map (S,G) states and establishes a (*,G) state.
- You can enter multiple ssm-map static commands for different access lists. Also, you can enter multiple ssm-map static commands for the same access list, as long as the access list uses different source addresses.
- SSM maps do not process statically configured groups.
ipv6 mld ssm-map enable
- Use to enable SSM mapping on the router. SSM mapping statically assigns sources to MLDv1 groups. You must use SSM mapping for MLDv1 hosts to interoperate with PIM SSM. SSM mapping allows the router use a statically configured list to translate (*,G) memberships to (S,G) memberships.
- Example
host1:boston(config)#ipv6 mld ssm-map enableUse the no version to disable the SSM map. ipv6 mld ssm-map static
- Use to specify an access list and source address for use in SSM mapping. SSM mapping statically assigns sources to MLDv1 groups. You must use SSM mapping for MLDv1 hosts to interoperate with PIM SSM. SSM mapping allows the router to use a statically configured list to translate (*,G) memberships to (S,G) memberships.
- The ipv6 mld ssm-map static command uses IPv6 access lists, which allow both source and destination/group addresses to be specified. You must set the source address to "any."
- Example
host1:boston(config)#ipv6 mld ssm-map static boston-list 2001::1Use the no version to remove the SSM map association. Limiting the Number of Accepted MLD Groups
By default, there is no limit on the number of MLD groups that an MLD interface can accept. However, you can manage multicast traffic on the router by restricting the number of MLD groups accepted by:
If you set limits for both a port and interfaces on that port, the router uses the lower of the two limits when determining how many MLD groups an interface can accept. For example, if you set a limit of 10 groups for the port and 15 groups for each interface, the router allows only 10 groups to be accepted among the interfaces.
However, if you set a limit for a port and that limit is lower than the number of groups currently accepted by the interfaces on that port, the router does not dissociate the groups from the interfaces. The router enforces the new limit on the port when the number of groups associated with the interfaces falls to that limit. For example, if the interfaces on the port have accepted a total of 15 groups, and you set a limit of 10 groups on the port, the router does not disconnect any of the groups and does not allow the interfaces to accept any more groups. Over time, some groups leave the interfaces and, eventually, a maximum of ten groups remains connected.
ipv6 mld group limit
host1:boston(config-if)#ipv6 mld group limit 5Use the no version to restore the default situation, in which there is no limit on the number of MLD groups that an interface can accept. multicast group port limit
- Use to limit the number of MLD groups that a port can accept.
- Specify the identifier for the port in slot/port format and the maximum number of MLD groups that interfaces can accept.
- slot—Number of the chassis slot in the range 0-6 (ERX-7xx models) and 0-13 (ERX-14xx models)
- port—Port number on the I/O module
host1(config)#multicast group port 3/0 limit 5Use the no version to restore the default situation, in which there is no limit on the number of MLD groups that a port can accept. Including and Excluding Traffic
MLDv2 extends MLDv1 functionality with the ability to include or exclude specific multicast traffic sources. That is, with MLDv2, hosts signal (S,G) pairs that they want to include or exclude.
For hosts that cannot signal group membership dynamically, you can use the ipv6 mld static-include or ipv6 mld static-exclude command to statically include or exclude multicast traffic, respectively.
MLDv2 is the industry-designated standard protocol for hosts to signal channel subscriptions in SSM. For additional information about SSM, see PIM SSM later in this chapter.
ipv6 mld static-exclude
- Use to statically exclude the MLD (S,G) membership for a host that is not capable of dynamically signaling group membership.
- Example
host1:boston(config-if)#ipv6 mld static-exclude 2001::1 ff0e::1Use the no version to remove the static designation. ipv6 mld static-include
- Use to statically include the MLD (S,G) membership for a host that is not capable of dynamically signaling group membership.
- Example
host1:boston(config-if)#ipv6 mld static-include 2001::1 ff0e::1Use the no version to remove the static designation. Disabling and Removing MLD
You can disable and reenable MLD on the VR. You can also remove MLD from the VR and recreate it on the VR.
mld disable
host1(config)#virtual-router bostonhost1:boston(config)#router mldhost1:boston(config-router)#mld disableUse the no version to enable MLD on a VR. router mld
ipv6 router mldhost1(config)#virtual-router bostonhost1:boston(config)#router mldExample 2 host1(config)#virtual-router bostonhost1:boston(config)#ipv6 router mldUse the no version to delete MLD and MLD proxy from the VR. Monitoring MLD
You can establish a reference point for MLD statistics by setting the statistics counters to zero.
To display MLD parameters, use the show commands described in this section.
baseline ipv6 mld
(host1)#baseline ipv6 mldThere is no no version. show ipv6 mld
- Administrative state—Status of MLD in the software: enabled or disabled
- Operational state—Status of MLD on the VR: enabled or disabled
- total interfaces—Number of interfaces on which you started MLD
- enabled—Number of interfaces on which MLD is enabled
- disabled—Number of interfaces on which MLD is disabled
- learned groups—Number of multicast groups that the VR has discovered
- MLD Statistics Rcvd—Statistics for MLD messages received
- total—Number of MLD messages received
- checksum errors—Number of MLD messages received with checksum errors
- unknown types—Number of messages received that are not multicast listener queries, multicast listener reports, or multicast listener done messages
- discards—Number of multicast listener discards
- queries—Number of multicast listener queries
- reports—Number of multicast listener reports
- leaves—Number of done messages
host1:boston#show ipv6 mldRouting Process MLD, Administrative state enabled, Operational state enabled4 total interfaces, 4 enabled, 0 disabled2 learned groupsMLD Statistics:Rcvd: 3 total, 0 checksum errors, 0 unknown types, 0 discards0 queries, 3 reports, 0 leavesSent: 5 totalshow ipv6 mld groups
- Use to display statically joined and directly connected groups learned through MLD.
- Field descriptions
- Grp Address—Address of the multicast group
- Interface—Interface that discovered the multicast group
- State—MLD version of the group
- Reporter—Link-local address of the host reporting the multicast group
- ExpTim—Remaining time, in seconds, at which the router decides there are no more members of this group
- oldHTo—Remaining time at which the router decides there are no more MLDv1 members of a group. If this value is 0, the interface has received no MLDv1 reports for the group.
host1:boston#show ipv6 mld groupsGrp Address Interface State Reporter ExpTim oldHTo------------------- --------------- ----------- --------------- ------ ------ff0e::1 ATM5/0.200 Version2 --- never ---ff0e::2 ATM5/0.200 Version1 fe80::f7:0:241a 91 91:0Counts: 1 version-2, 1 version-1, 0 check state, 0 disabled(2 total)0 excludedshow ipv6 mld interface
- Use to display MLD information for interfaces on which you enabled MLD.
- Specify the brief keyword to see a summary of the information.
- Specify the count keyword to see the number of MLD interfaces.
- Field descriptions
- Interface—Type of interface and interface specifier. For details about interface types and specifiers, see JUNOSe Command Reference Guide, About This Guide.
- address—IPv6 link-local address of the interface
- Administrative state—Status of the interface in the software: enabled or disabled
- Operational state—Physical status of the interface: enabled or disabled
- Version—MLD version
- State—Function of the interface: querier or nonquerier
- Query Interval—Time interval at which this interface sends query messages
- Other querier present interval—Time that the interface waits before declaring itself as the querier
- Maximum response time—Time interval during which this interface expects a host to respond
- Last member query interval—Time that this interface waits before sending a new query to a host that sends a group leave message
- Robustness—Number of times this interface sends MLD messages
- Information about IPv6 access lists configured with the ipv6 mld access-group command
- Immediate Leave—Setting of the ipv6 mld immediate-leave command: enabled or disabled
- Max-Group limit—Number of MLD groups that the interface can accept, as configured with the ipv6 mld group limit command
- Group Count—Number of MLD groups that the interface has accepted
- Interface statistics Rcvd—Information about MLD messages received on this interface
- reports—Number of group multicast listener reports received
- leaves—Number of group multicast listener done messages received
- wrong version queries—Number of multicast listener queries received from devices running a different version of MLD
- Interface statistics Sent—Number of MLD messages this interface has sent
- Interface statistics Groups learned—Number of groups this interface has discovered
- Counts—Total number of MLD interfaces
host1:boston#show ipv6 mld interfaceInterface ATM5/0.1 address fe80::f7:0:321a:0Administrative state enabled, Operational state enabledInterface parameters:Version 1State QuerierQuery Interval 125 secs, 123 secs before the next queryOther querier present interval 250 secsMaximum response time 100 (in 10ths of a second)Last member query interval 10 (in 10ths of a second)Robustness 3No inbound access groupNo inbound access source-groupImmediate Leave: disabledMax-Group limit: No LimitGroup Count: 0Interface statistics:Rcvd: 0 reports, 0 leaves, 0 wrong version queriesSent: 14 queriesGroups learned: 0Counts: 0 down, 0 init state, 1 querier, 0 non-querier, 1 Totalshow ipv6 mld interface brief
- Use to display a summary of MLD information for interfaces on which you enabled MLD.
- Field descriptions
- Interface—Type of interface and interface specifier. For details about interface types and specifiers, see JUNOSe Command Reference Guide, About This Guide.
- Intf Address—IPv6 link-local address of the interface
- Ver—MLD version
- State—Function of the interface: querier or nonquerier
- Querier—IPv6 address of the querier on the network to which this interface connects
- QTime—Remaining time interval at which this interface sends query messages
- QPTime—Remaining time that the interface waits before declaring itself as the querier
host1:boston#show ipv6 mld interface briefInterface Intf Address Ver State Querier QTime QPTime--------------- --------------- --- ----------- --------------- ------ ------ATM5/0.1 fe80::f7:0:231a 1 Querier fe80::f7:0:231a 1 0:0 :0ATM5/0.200 fe80::f7:0:231a 2 Querier fe80::f7:0:231a 20 0:0 :0Counts: 0 down, 0 init state, 2 querier, 0 non-querier, 2 Totalshow ipv6 mld ssm-mapping
- Used to display the SSM mapping state and the source list mapping associated with a multicast group address.
- Field descriptions
- SSM Mapping—Status of SSM mapping on the interface (enabled or disabled)
- Group Address—Multicast group address requested
- Source List—List of sources mapped to the multicast group address
host1:boston#show ipv6 mld ssm-mapping ff3e::1SSM Mapping : EnabledGroup Address : ff3e::1Source List : 2001::1: 2001::2show multicast group limit
- Use to display the number of MLD groups that ports have accepted and, if configured, the maximum number of groups that ports can accept.
- Only ports that have accepted MLD groups and ports for which you have configured a limit for the number of MLD groups appear in this display.
- Field descriptions
- slot—Number of the chassis slot in the range 0-6 (ERX-7xx models) and 0-13 (ERX-14xx models)
- port—Port number on the I/O module
- limit—Maximum number of MLD groups that the port can accept. A value of -1 indicates that no limit has been specified.
- count—Actual number of MLD groups the port has accepted
host1:boston#show multicast group limitPort limit count--------- ----- -----2/0 5 02/1 -1 1