rfc-5790

Lightweight Internet Group Management Protocol Version 3 (IGMPv3) and Multicast Listener Discovery Version 2 (MLDv2) Protocols

H. Liu, W. Cao, H. Asaeda
date2010-02 streamIETF areaops wgmboned statusPROPOSED STANDARD pages17 canonicalhttps://www.rfc-editor.org/rfc/rfc5790 doi10.17487/RFC5790
This document describes lightweight IGMPv3 and MLDv2 protocols (LW- IGMPv3 and LW-MLDv2), which simplify the standard (full) versions of IGMPv3 and MLDv2. The interoperability with the full versions and the previous versions of IGMP and MLD is also taken into account. [STANDARDS-TRACK]

Extracted elements (21)

design-rationale §4.4

Although LW-IGMPv3 hosts use only four record types (ALLOW, BLOCK, TO_IN, TO_EX), using IS_EX({}) instead of TO_EX({}) and IS_IN(x) instead of ALLOW(x) in query responses is not prohibited. Because the router processes both pairs identically per full IGMPv3 rules, this does not introduce interoperability issues.

multicast, routing

design-rationale §3.2

Because hosts in LW-IGMPv3 only send INCLUDE requests and EXCLUDE(*,G) joins (never EXCLUDE with a non-null source list), multicast routers no longer need to maintain an EXCLUDE filter-mode. The router state model is simplified to (multicast address, group timer, source records), eliminating complex filter-mode transitions.

multicast, routing

design-rationale §1

EXCLUDE mode with non-null source lists is rarely used in practice because users typically specify desired sources, not undesired ones. Even when a user blocks sources, other hosts on the shared network may still request those sources, making the filter ineffective. LW-IGMPv3 drops this operation entirely to simplify both host and router behavior.

multicast, routing

design-rationale §4.4

IS_EX({}) and IS_IN(x) record types are eliminated from LW-IGMPv3 host behavior. IS_EX({}) is subsumed by TO_EX({}) because a router creates identical state for both; IS_IN(x) is replaced by ALLOW(x) because router processing is identical. This reduces the set of report types a host must generate from six to four (ALLOW, BLOCK, TO_IN, TO_EX).

multicast, routing

interoperability-note §5.3

If an LW-IGMPv3 router receives an IS_EX(x) report with a non-empty source list, it treats it as IS_EX({}). Similarly, a TO_EX(x) with a non-empty source list is treated as TO_EX({}). This ensures graceful handling of full-version IGMPv3 messages that are not generated by lightweight hosts.

multicast, routing

interoperability-note §6.1

LW-IGMPv3 and LW-MLDv2 do not introduce any changes to Query or Report message formats. An LW-IGMPv3 host sends a subset of IGMPv3 Report messages recognized by both full and lightweight IGMPv3 routers on the same LAN; its Host Compatibility Mode is set to IGMPv3.

multicast, routing

interoperability-note §6.2.1

The Host Compatibility Mode of an interface is set to IGMPv2 on receipt of an IGMPv2 General Query, and to IGMPv1 on receipt of an IGMPv1 Membership Query; the corresponding Querier Present timer is set to Older Version Querier Present Timeout. LW-IGMPv3 hosts may optionally suppress their reports when IGMPv1/v2 reports are present, and this suppression behavior may be configurable.

multicast, routing

interoperability-note §6.2.2

When Group Compatibility Mode is IGMPv2, an LW-IGMPv3 router treats an IGMPv2 Report as TO_EX({}) and an IGMPv2 Leave as TO_IN({}). When Group Compatibility Mode is IGMPv1, both IGMPv1 and IGMPv2 Reports are translated to TO_EX({}).

multicast, routing

normative-requirement §7.2 OPTIONAL

An LW-IGMPv3 host should implement either the IPv4 Basic MSF API or the Protocol-Independent Basic MSF API. An LW-MLDv2 host should implement the Protocol-Independent Basic MSF API. The Advanced MSF APIs (IPv4 Advanced and Protocol-Independent Advanced) are optional.

multicast, routing

normative-requirement §7.1 MUST NOT

An LW-IGMPv3 or LW-MLDv2 host SHOULD NOT invoke (*,G) join (TO_EX({})) or (*,G) leave (TO_IN({})) for applications whose multicast addresses are in the SSM address range. An upstream LW-IGMPv3/LW-MLDv2 router MUST NOT establish forwarding state upon receipt of such messages for SSM addresses and MAY log an error.

multicast, routing

normative-requirement §6.3 MUST

LW-MLDv2 hosts and routers MUST interoperate with hosts and routers running MLDv1. An LW-MLDv2 router translates MLDv1 Report messages to TO_EX({}) and MLDv1 Done messages to TO_IN({}).

multicast, routing

normative-requirement §6.1.2 MUST

When an LW-IGMPv3 or LW-MLDv2 router receives IS_EX(x) or TO_EX(x) Report messages (with non-null source lists) from full-version hosts, it MUST translate them internally to IS_EX({}) and TO_EX({}) respectively and behave accordingly.

multicast, routing

protocol-element §4.4

LW-IGMPv3 uses four Group Record Types in Report messages: ALLOW(x) for INCLUDE join or query response; BLOCK(x) for INCLUDE leave; TO_IN(x) for change to INCLUDE or (*,G) leave when x is null; TO_EX({}) for (*,G) join. EXCLUDE with non-null source list (IS_EX(x), TO_EX(x)) is not generated by LW-IGMPv3 hosts.

multicast, routing

protocol-element §3.2

The lightweight router state model for a group is (multicast address, group timer, source records), with no filter-mode field. The group timer represents a (*,G) join: when positive, all members in the group are assumed active; when zero, the router checks source timers to determine per-source forwarding.

multicast, routing

security-consideration §8

The security considerations for LW-IGMPv3 and LW-MLDv2 are identical to those of the full versions of IGMPv3 and MLDv2. No new security issues are introduced by the lightweight simplifications.

security, multicast

state-machine §5.1

In LW-IGMPv3, when a source timer expires, the corresponding source record is deleted immediately, regardless of the group timer state. This contrasts with full IGMPv3 where an expired source timer under EXCLUDE filter-mode keeps the record until the group timer expires.

multicast, routing

state-machine §4.2

Interface state-change rules for LW-IGMPv3 hosts: INCLUDE(A)→INCLUDE(B) sends ALLOW(B-A) and BLOCK(A-B); INCLUDE(A)→EXCLUDE({}) sends TO_EX({}); INCLUDE({})→EXCLUDE({}) sends TO_EX({}); EXCLUDE({})→INCLUDE(B) sends TO_IN(B). State-Change Reports are retransmitted [Robustness Variable]-1 more times at random intervals within [0, Unsolicited Report Interval].

multicast, routing

state-machine §5.2

LW-IGMPv3 router source-specific forwarding decisions: (G_Timer==0, S_Timer>0) → forward; (G_Timer==0, S_Timer==0) → stop and remove source, delete group if no sources remain; (G_Timer==0, no sources) → do not forward; (G_Timer>0, any S_Timer) → forward; (G_Timer>0, no sources) → forward.

multicast, routing

state-machine §5.3

On receiving Current-State Records, an LW-IGMPv3 router applies: IS_IN(B) → new source list is A+B with (B)=GMI; IS_EX({}) → source list unchanged at A, G_Timer reset to GMI. These rules apply uniformly regardless of the current G_Timer value, simplifying processing compared to the full version.

multicast, routing

state-machine §5.4

On receiving Source-List-Change and Filter-Mode-Change Records, the LW-IGMPv3 router applies: ALLOW(B) → A+B, (B)=GMI; BLOCK(B) → A unchanged, send Q(G,A*B); TO_IN(B) → A+B, (B)=GMI, send Q(G,A-B), and if G_Timer>0 also send Q(G); TO_EX({}) → A unchanged, G_Timer=GMI.

multicast, routing

state-machine §5.1

The group timer in LW-IGMPv3 router has two states: G_Timer > 0 means all sources for the group are forwarded (non-source-specific reception); G_Timer == 0 means only sources with running source timers (S_Timer > 0) are forwarded, and the group record is deleted when all source timers also expire.

multicast, routing