rfc-2710

Multicast Listener Discovery (MLD) for IPv6

S. Deering, W. Fenner, B. Haberman
date1999-10 streamIETF areaint wgipngwg statusPROPOSED STANDARD pages22 canonicalhttps://www.rfc-editor.org/rfc/rfc2710 doi10.17487/RFC2710
This document specifies the protocol used by an IPv6 router to discover the presence of multicast listeners (that is, nodes wishing to receive multicast packets) on its directly attached links, and to discover specifically which multicast addresses are of interest to those neighboring nodes. [STANDARDS-TRACK]

updated by

Extracted elements (27)

design-rationale §2

MLD uses ICMPv6 (IP Protocol 58) message types rather than IGMP (IP Protocol 2). MLD is derived from IGMPv2 but adapted for IPv6, with the most significant architectural difference being its embedding within ICMPv6.

multicast, ip

design-rationale §4

Report suppression is used to reduce link traffic: if a node receives another node's Report for the same multicast address while its own timer is running, it stops its timer and does not send its own Report. This is a deliberate trade-off between reliability and bandwidth efficiency.

multicast, ip

design-rationale §5

The link-scope all-nodes address (FF02::1) is handled as a special case: a node starts in Idle Listener state for that address on every interface, never transitions, and never sends a Report or Done for it. MLD messages are also never sent for multicast addresses of scope 0 (reserved) or 1 (node-local).

multicast, ip

design-rationale §3

The Router Alert option in a Hop-by-Hop Options header is required on all MLD messages so that routers will examine MLD messages sent to multicast addresses in which the routers themselves have no interest; without it, routers might not process those packets.

multicast, ip

interoperability-note §4

An Ethernet-attached router must configure its Ethernet address reception filter to accept all Ethernet multicast addresses starting with 3333 (hexadecimal) for IPv6 multicasts. If the interface does not support range filtering, it must accept ALL Ethernet multicast addresses.

multicast, ip

interoperability-note §3.7

If a received MLD message is longer than 24 octets, that indicates additional fields perhaps belonging to a future backwards-compatible version of MLD. This version's implementations MUST NOT send messages longer than 24 octets and MUST ignore bytes beyond the first 24.

multicast, ip

normative-requirement §3.7 MUST

An implementation MUST NOT send an MLD message longer than 24 octets and MUST ignore anything past the first 24 octets of a received MLD message. The MLD checksum MUST be computed over the entire MLD message, not just the first 24 octets.

multicast, ip

normative-requirement §4 MUST

If a router hears a Query whose IPv6 Source Address is numerically less than its own selected address for that link, it MUST become a Non-Querier on that link. There is normally only one Querier per link and all routers start up as Querier.

multicast, ip

normative-requirement §4 SHOULD

On startup, a router SHOULD send [Startup Query Count] General Queries spaced closely together [Startup Query Interval] on all attached links in order to quickly and reliably discover multicast listeners.

multicast, ip

normative-requirement §4 MUST

Routers in Non-Querier state MUST ignore Done messages. Only the Querier processes Done messages and responds with Multicast-Address-Specific Queries.

multicast, ip

normative-requirement §7.4 MUST

The Multicast Listener Interval MUST be ((Robustness Variable) times (Query Interval)) plus (one Query Response Interval). This is the time a router waits before deciding there are no more listeners for an address.

multicast, ip

normative-requirement §7.5 MUST

The Other Querier Present Interval MUST be ((Robustness Variable) times (Query Interval)) plus (one half of one Query Response Interval). If non-default timer values are used, they MUST be consistent among all routers on a single link.

multicast, ip

normative-requirement §7.1 MUST NOT

The Robustness Variable MUST NOT be zero, and SHOULD NOT be one. Default value is 2. MLD is robust to (Robustness Variable - 1) packet losses.

multicast, ip

normative-requirement §4 SHOULD

When a node ceases to listen to a multicast address on an interface, it SHOULD send a single Done message to FF02::2 carrying the address. If the node's most recent Report was suppressed by hearing another Report, it MAY send nothing. If this optimization is implemented, it MUST be able to be turned off but SHOULD default to on.

multicast, ip

protocol-element §3

All MLD messages MUST be sent with a link-local IPv6 Source Address, an IPv6 Hop Limit of 1, and an IPv6 Router Alert option in a Hop-by-Hop Options header. The Router Alert is required to cause routers to examine MLD messages sent to multicast addresses in which the routers themselves have no interest.

multicast, ip

protocol-element §3.6

In a Query, the Multicast Address field is zero for a General Query and a specific IPv6 multicast address for a Multicast-Address-Specific Query. In a Report or Done, it holds the specific multicast address the sender is listening to or ceasing to listen to, respectively.

multicast, ip

protocol-element §8

Message destinations are fixed by message type: General Query to FF02::1 (all-nodes), Multicast-Address-Specific Query to the queried multicast address, Report to the reported multicast address, and Done to FF02::2 (all-routers).

multicast, ip

protocol-element §3.4

The Maximum Response Delay field is meaningful only in Query messages, specifying the maximum allowed delay before sending a responding Report (in milliseconds). In all other messages it is set to zero by the sender and ignored by receivers.

multicast, ip

protocol-element §3.1

Three MLD message types are defined: Multicast Listener Query (Type=130), Multicast Listener Report (Type=131), and Multicast Listener Done (Type=132). Queries have two subtypes—General Query (Multicast Address field = 0) and Multicast-Address-Specific Query (Multicast Address field = specific address).

multicast, ip

security-consideration §9

A forged Done message causes the Querier to send Multicast-Address-Specific Queries for the address in question, causing extra processing and traffic, but cannot cause loss of desired traffic since legitimate listeners will respond.

security, multicast, ip

security-consideration §9

A forged Query from a machine with a lower IP address than the current Querier will cause that forger to be elected Querier; if it ignores Done messages, traffic may flow to addresses with no listeners for up to [Multicast Listener Interval]. Recovery occurs when the Other Querier Present timer expires on legitimate routers.

security, multicast, ip

security-consideration §9

A forged Report message may cause routers to think there are listeners for an address when there are not; however, since listening to a multicast address is generally an unprivileged operation, a local user may trivially achieve the same effect without forging messages.

security, multicast, ip

security-consideration §9

The requirement that nodes verify that the IPv6 Source Address of all received MLD messages is a link-local address defends them from acting on forged MLD messages originated off-link; only on-link forgery is a concern.

security, multicast, ip

state-machine §5

A node tracks three states per (multicast address, interface) pair: Non-Listener (initial), Delaying Listener (listening with a running report timer), and Idle Listener (listening without a timer). Transitions are triggered by: start listening, stop listening, query received, report received, and timer expired.

multicast, ip

state-machine §6

A router transitions between Querier and Non-Querier states per link. It starts as Querier, transitions to Non-Querier upon receiving a Query from a lower-addressed router (starting the other-querier-present timer), and returns to Querier when that timer expires without a further lower-addressed Query.

multicast, ip

state-machine §6

Per (multicast address, link) pair, a router (in Querier state) moves through: No Listeners Present, Listeners Present, and Checking Listeners. A Report received triggers entry into Listeners Present; a Done triggers Checking Listeners with retransmit of Multicast-Address-Specific Queries; no response before timer expires triggers return to No Listeners Present.

multicast, ip

wire-format §3

MLD messages are exactly 24 octets: Type (1 byte, ICMPv6 type), Code (1 byte, set to zero), Checksum (2 bytes, ICMPv6 standard), Maximum Response Delay (2 bytes, milliseconds), Reserved (2 bytes, zero), and Multicast Address (16 bytes, IPv6 address).

multicast, ip