MLD
MLD overview
Multicast Listener Discovery (MLD) is the IPv6 version of IGMP and belongs to the Source Specific Multicast (SSM) service model (see IPv6 PIM models for more information). The purpose of MLD is to allow each IPv6 router to discover the presence of multicast listeners on its directly attached links, and to discover specifically which multicast groups are of interest to those neighboring nodes.
MLD is a sub-protocol of ICMPv6. MLD message types are a subset of the set of ICMPv6 messages, and MLD messages are identified in IPv6 packets by a preceding Next Header value of 58. All MLD messages are sent with a link-local IPv6 source address, a Hop Limit of 1, and an IPv6 Router Alert option in the Hop-by-Hop Options header.
MLDv1
Similar to IGMPv2, MLDv1 reports only include the multicast group addresses that listeners are interested in, and do not include the source addresses. To work with the PIM-SSM model, a similar SSM translation function is required when MLDv1 is used.
SSM translation allows an IGMPv2 device to join an SSM multicast network through the router that provides such a translation capability. Currently SSM translation can done at a box level, but this does not allow a per-interface translation to be specified. SSM translation per interface offers the ability to have a same (*,G) mapped to two different (S,G) on two different interfaces to provide flexibility.
MLDv2
MLDv2 is backward compatible with MLDv1 and adds the ability for a node to report interest in listening to packets with a particular multicast group only from specific source addresses or from all sources except for specific source addresses.
Configuring MLD with CLI
This section provides information to configure MLD using the command line interface.
MLD configuration overview
The routers use MLD to manage membership for a multicast session. MLD is not enabled by default. When enabled, at least one interface must be specified in the MLD context as MLD is an interface function. Creating an interface enables MLD. Traffic can only flow away from the router to an MLD interface and to and from a PIM interface. A router directly connected to a source must have PIM enabled on the interface to that source. The traffic travels in a network from PIM interface to PIM interface and arrives finally on an MLD enabled interface.
The MLD CLI context allows you to specify an existing IP interface and modify the interface-specific parameters. Static MLD group memberships can be configured to test multicast forwarding without a receiver host. When MLD static group membership is enabled, data is forwarded to an interface without receiving membership reports from host members.
When static MLD group entries on point-to-point links that connect routers to a rendezvous point (RP) are configured, the static MLD group entries do not generate join messages toward the RP. When a host wants to receive multicast sessions it sends a join message for each multicast group it wants to join. Then, a leave message may be sent for each multicast group it no longer needs to participate with.
A multicast router keeps a list of multicast group memberships for each attached network, and an interval timer for each membership. Hosts issue a Multicast Group Membership Report when they want to receive a multicast session. The reports are sent to all multicast routers.
Basic MLD configuration
Perform the following basic multicast configuration tasks:
- Required: Enable MLD.
- Required: Configure MLD interfaces.
- Optional: Specify the MLD version on the interface.
- Optional: Configure static (S,G)/(*,G).
- Optional: Configure SSM translation.
Configuring MLD parameters
Enabling MLD
Use the following CLI syntax to enable MLD.
config>router# mld
The following example displays the detailed output when MLD is enabled:
A:LAX>config>router>mld# info detail
----------------------------------------------
no grp-if-query-src-ip
query-interval 125
query-last-listener-interval 1
query-response-interval 10
robust-count 2
no shutdown
----------------------------------------------
A:LAX>config>router>mld#
Configuring an MLD interface
To configure an MLD interface:
config>router# mld
— interface ip-int-name
— import policy-name
— max-groups value
— version version
— no shutdown
Use the following CLI syntax to configure MLD interfaces:
config>router#
— config>router>mld# interface "lax-vls"
— config>router>mld>if? no shutdown
— config>router>mld>if# exit
— config>router>mld# interface "p1-ix"
— config>router>mld>if? no shutdown
— config>router>mld>if# exit
— config>router>mld# interface "lax-sjc"
— config>router>mld>if? no shutdown
— config>router>mld>if# exit
The following example displays the MLD configuration:
A:LAX>config>router>mld# info
----------------------------------------------
interface "lax-sjc"
exit
interface "lax-vls"
exit
interface "p1-ix"
exit
----------------------------------------------
A:LAX>config>router>mld# exit
Configuring static parameters
-
To add an MLD static multicast source:
— config>router# mld — interface ip-int-name — no shutdown — static — group grp-ipv6-address — source ipv6-address
-
Use the following CLI syntax to configure static group addresses and source
addresses for the SSM translate group ranges:
config>router>mld# interface lax-vls — config>router>mld>if# static — config>router>mld>if>static# group ff05:db8:1 — config>router>mld>if>static>group# source 2001:db8:2016:10ff::4
The following example displays the configuration:
A:LAX>config>router>mld# info ---------------------------------------------- interface "lax-sjc" exit interface "lax-vls" static group ff05:db8:1ff05:db8:1 source 2001:db8:2016:10ff::4 exit exit exit interface "p1-ix" exit ---------------------------------------------- A:LAX>config>router>mld#
-
To add an MLD static starg entry:
config>router# mld — interface ip-int-name — no shutdown — static — group grp-ipv6-address — starg
Use the following CLI syntax to configure static group addresses and add a static (*,G) entry:
config>router>mld# interface lax-sjc — config>router>mld>if# static — config>router>mld>if>static# group ff06:db8:1 — config>router>mld>if>static>group# starg
The following example displays the configuration:
A:LAX>config>router>mld# info ---------------------------------------------- interface "lax-sjc" static group ff06:db8:1 starg exit exit exit interface "lax-vls" static group ff05:db8:1 source 2001:db8:2016:10ff::4 exit exit exit interface "p1-ix" exit ---------------------------------------------- A:LAX>config>router>mld#
Configuring SSM translation
To configure MLD parameters:
config>router# mld
— ssm-translate
— grp-range start end
— source ipv6-address
The following example displays the command usage to configure MLD parameters.
config>router# mld
— config>router>mld# ssm-translate
— config>router>mld>ssm# grp-range ff0e::db8:9 ff0e::db8:c
— config>router>mld>ssm>grp-range# source 2001:db8::1
The following example displays the SSM translation configuration:
A:LAX>config>router>mld# info
----------------------------------------------
ssm-translate
grp-range ff0::db8:9 ff0e:db8:c
source 2001:db8::1
exit
exit
interface "lax-sjc"
static
group ff0:db8:1
starg
exit
exit
exit
interface "lax-vls"
static
group ff0:db8:1
source 2001:db8:2016:10ff::4
exit
exit
exit
interface "p1-ix"
exit
----------------------------------------------
A:LAX>config>router>mld# exit
Disabling MLD
Use the following CLI syntax to disable MLD:
config>router#
— mld
— shutdown
The following example displays the command usage to disable MLD:
config>router# mld
— config>router>mld# shutdown