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:

  1. Required: Enable MLD.
  2. Required: Configure MLD interfaces.
  3. Optional: Specify the MLD version on the interface.
  4. Optional: Configure static (S,G)/(*,G).
  5. 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

  1. To add an MLD static multicast source:
        — config>router# mld
        — interface ip-int-name
        — no shutdown
        — static
        — group grp-ipv6-address
        — source ipv6-address
    
  2. 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#
    
  3. 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.

Note: The group range is not created until the source is specified.
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