Overview

IPv6 Multicast Listener Discovery (MLD) is the protocol used between the Listener, and the router(s) on the same link, so that the Listener can join/leave a specific multicast group.

If a new Listener wants to join a multicast group and there are no other Listeners, the router will not have the multicast address in its multicast address list for that link. It will add it.

  • Multicast – One group of senders to many individual receivers – “One-to-Many”
  • Listener – Host that receives the multicast
  • Discovery – Learn who wants to be a member of a specific multicast group

MLD Join
Routers keep a list of active multicast groups on its links.

If a Listener leaves the multicast group, but the router has at least one listener on a link, it will keep the multicast address in its multicast address list for that link.

Since routers do not keep track of how many members are listening to a multicast address, the router that assumes the Querier role will send MLD queries to verify if there is still at least one Listener. This is useful because it helps to prevent wasted bandwidth.

Pro Tip: Planning Consideration - If there are multiple routers on a link, by default the interface with the lowest link-local address value will win the Querier election and assume the Querier role. If that link fails, the router with the next lowest link-local address will assume the Querier role. And so on.

MLD Facts:

  • MLD uses a Link-Local (fe80::/10) or an Unspecified address (::) as its source address
  • Hop Limit is always set to one
    • This ensures that the packet isn’t sent to more than one router
  • MLD inserts a Router Alert flag in the Hop By Hop (HBH) extension header of its queries
    • IPv6 uses multicast for many functions at layer 2 and the Router Alert Flag notifies the router that it must process the join/leave request
    • With the Router Alert Flag set, the router won’t ignore the packet even if it isn’t listening to the specified multicast group. If there are no listeners on the link, the router won’t have the multicast address in the router’s multicast address list for the link. When a host is the first on a link that wants to join a multicast group, the router adds the address to its list of multicast addresses to be forwarded over this particular interface

Pro Tip: Be sure to check that the OS and/or application used on all devices in the path(s) of the multicast stream support the desired version of MLD.

MLD Version 1

MLDv1 is used when the listener doesn’t have a requirement regarding which multicast sender(s) it will accept – any sender in the multicast group is okay. Note that sometimes a group will only have one sender.

MLDv1 uses three message types:

  • Listener Query (Type 130)
  • Multicast Listener Report (Type 131)
  • Multicast Listener Done (Type 132)

Listener Query (Type 130) – Sent by the Querier router to verify if there are listeners on the link. MLDv1 uses two kinds of Listener queries:

  • General Query – The multicast address field is sent to 0. This query is sent at random time intervals to learn what listeners are listening to what multicast group addresses on the link.
  • Address Specific Query – The multicast address field is filled with the specific multicast group address so that the router can discover if there is at least one Listener for that specific multicast group.

Multicast Listener Report (Type 131) - Used by a Listener to register for a multicast group. This can be a response to a Listener Query (Type 130) or unsolicited.

Multicast Listener Done (Type 132) - Sent by a listener to leave a multicast group. If there are no more listeners on a link for a multicast group, the router will remove the multicast address from its list of multicast addresses to be forwarded over the interface.

If you understand MLDv1, then this table will make sense:

MLDv1 Message Types
If you have a need to learn more about the timers with the above queries, see RFC 3590.

MLD Version 2

MLDv2 is enabled by default and is compatible with MLDv1.

MLDv2 is used when the Listener has requirements as to which devices may or may not act as its multicast sender. In other words, the Listener can specify one or more specific source addresses it will accept and it can also exclude one or more specific source addresses it will accept for a specific multicast group.

MLDv2 uses two message types:

  • Listener Query (Type 130)
  • Listener Report (Type 143)

Listener Query (Type 130) is sent by the Querier router to verify if there are listeners on the link. It is the same as the Listener Query (Type 130) used in MLDv1, except there is an additional query option for Source Specific Queries.

  • General Query – The multicast address field is sent to 0. This query is sent at random time intervals to learn what listeners are listening to what multicast group addresses on the link.
  • Address Specific Query – The multicast address field is filled with the specific multicast group address so that the router can discover if there is at least one Listener for that specific multicast group.
  • Multicast Address and Source Specific Queries - Queries to see if there are listeners for a particular multicast stream from a specific source

Listener Report (Type 143) – Note that while MLDv1 does also have a Listener Report, MLDv2’s Listener Report has a different Type number. MLDv2’s Listener Report has enhanced reporting - multiple groups and sources.

RFC 3590 - Source Address Selection for the Multicast Listener Discovery (MLD) Protocol
RFC 4604: Using Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Protocol Version 2 (MLDv2) for Source-Specific Multicast

To continue reading, please login or become a member for full access...