rfc-7731

Multicast Protocol for Low-Power and Lossy Networks (MPL)

J. Hui, R. Kelsey
date2016-02 streamIETF areartg wgroll statusPROPOSED STANDARD pages29 canonicalhttps://www.rfc-editor.org/rfc/rfc7731 doi10.17487/RFC7731
This document specifies the Multicast Protocol for Low-Power and Lossy Networks (MPL), which provides IPv6 multicast forwarding in constrained networks. MPL avoids the need to construct or maintain any multicast forwarding topology, disseminating messages to all MPL Forwarders in an MPL Domain. MPL has two modes of operation. One mode uses the Trickle algorithm to manage control-plane and data-plane message transmissions and is applicable for deployments with few multicast sources. The other mode uses classic flooding. By providing both modes and parameterization of the Trickle algorithm, an MPL implementation can be used in a variety of multicast deployments and can trade between dissemination latency and transmission efficiency.

Extracted elements (31)

design-rationale §1

MPL avoids constructing or maintaining a multicast routing topology because topology maintenance in LLNs is prohibitively expensive: devices may only afford one or a few neighbor routes, and maintaining a connected dominating set for multicast requires two-hop topology information whose cost grows polynomially with network density.

multicast, ip, routing

design-rationale §3

MPL includes a classic flooding mode (DATA_MESSAGE_IMAX = DATA_MESSAGE_IMIN, DATA_MESSAGE_K=1) in addition to Trickle's polite gossip mode because research (Clausen2013) questioned Trickle's efficiency in some multicast scenarios, allowing MPL to perform satisfactorily across a variety of deployment conditions.

multicast, ip, routing

design-rationale §1

MPL uses the Trickle algorithm to achieve density-aware communication: Trickle's transmission suppression causes the communication rate to scale logarithmically with network density, requiring only small, constant state per MPL Seed rather than a full routing topology.

multicast, ip, routing

design-rationale §5.4

Setting DATA_MESSAGE_IMAX equal to DATA_MESSAGE_IMIN in the default configuration is acceptable because subsequent MPL Data Message retransmissions are driven by MPL Control Messages (which have CONTROL_MESSAGE_IMAX > CONTROL_MESSAGE_IMIN), rather than the Data Message Trickle timer itself.

multicast, ip

interoperability-note §3

The MPL Control Message size grows linearly with the number of simultaneous MPL Seeds in the domain — approximately 4 octets per MPL Seed. When reactive forwarding is disabled (CONTROL_MESSAGE_TIMER_EXPIRATIONS=0), no MPL Control Messages are transmitted and this overhead is not incurred.

multicast, ip

interoperability-note §9.1 MUST

When the original multicast destination address is not the MPL Domain Address, the MPL Seed MUST use IPv6-in-IPv6 encapsulation (RFC 2473) to encapsulate the original multicast message in an MPL Data Message, preserving the original IPv6 Destination Address inside the tunnel while the outer header uses the MPL Domain Address.

multicast, ip

normative-requirement §10.2 MUST

After CONTROL_MESSAGE_TIMER_EXPIRATIONS Trickle timer expiration events, the MPL Forwarder MUST disable the MPL Control Message Trickle timer. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the forwarder does not execute the Trickle algorithm and does not transmit MPL Control Messages.

multicast, ip

normative-requirement §7.4 MUST

All MPL Data Messages in a Buffered Message Set MUST have sequence numbers greater than or equal to MinSequence for the corresponding SeedID. When MinSequence increases, the forwarder MUST delete any Buffered Message Set entries that fall below the new MinSequence.

multicast, ip

normative-requirement §9.3 MUST

An MPL Forwarder MUST discard an MPL Data Message if its sequence number is less than MinSequence or if a message with the same sequence number already exists in the Buffered Message Set. If no Seed Set entry exists for the MPL Seed, the forwarder MUST create one before accepting the message.

multicast, ip

normative-requirement §7.3 MUST NOT

An MPL Forwarder MUST NOT free a Seed Set entry before its remaining lifetime expires. When an accepted MPL Data Message is processed, the Lifetime of the corresponding Seed Set entry MUST be reset to SEED_SET_ENTRY_LIFETIME.

multicast, ip

normative-requirement §9.2 MUST

An MPL Forwarder MUST use a separate Trickle timer for each MPL Data Message that it is actively forwarding. After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer expiration events, the MPL Forwarder MUST disable the Trickle timer for that message.

multicast, ip

normative-requirement §4.1 MUST

For each MPL Domain Address that an MPL Interface subscribes to, the MPL Interface MUST also subscribe to the same MPL Domain Address with Link-Local scope (scop=2) when reactive forwarding is in use (i.e., when MPL Control Messages are being communicated).

multicast, ip

normative-requirement §5.3 MUST

For each MPL Domain that an MPL Forwarder serves as an MPL Seed, it MUST have an associated MPL Seed Identifier that is unique within each MPL Domain, though the same identifier MAY be reused across multiple domains.

multicast, ip

normative-requirement §9.3 MUST

If PROACTIVE_FORWARDING is TRUE, the MPL Forwarder MUST initialize and start a Trickle timer for each accepted MPL Data Message. If CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero and the MPL Control Message Trickle timer is not running, the forwarder MUST initialize and start it; if already running, MUST reset it.

multicast, ip

normative-requirement §6.1 MUST

MPL Data Messages with an MPL Option in which the V flag is set to 1 MUST be dropped. The three high-order bits of the Option Type are set to '011' so that nodes not understanding the MPL Option MUST discard the MPL Data Message (per RFC 2460).

multicast, ip

normative-requirement §6.1 MUST

The MPL Seed MUST increment the sequence field's value on each new MPL Data Message generated for an MPL Domain. Implementations MUST follow Serial Number Arithmetic as defined in RFC 1982 when incrementing or comparing sequence values.

multicast, ip

normative-requirement §12 MUST NOT

To prevent attackers from injecting packets, an MPL Forwarder MUST NOT accept or forward MPL Data Messages from a communication interface that does not subscribe to the MPL Domain Address identified in the message's destination address.

multicast, security, ip

normative-requirement §10.3 MUST

When an MPL Forwarder determines it has not received an MPL Data Message buffered by a neighbor (from an MPL Control Message), it MUST reset its MPL Control Message Trickle timer; and for each such buffered entry, MUST reset the corresponding Data Message Trickle timer and reset e to 0.

multicast, ip

normative-requirement §4.1 MUST

When an MPL Forwarder participates in multiple MPL Domains simultaneously, all MPL Domains except at most one MUST be assigned a unique MPL Domain Address distinct from ALL_MPL_FORWARDERS. Each MPL Interface MUST subscribe to the MPL Domain Addresses for all MPL Domains it participates in.

multicast, ip

normative-requirement §9.2 MUST

When transmitting an MPL Data Message, the MPL Forwarder MUST either set the M flag to zero or set it accurately to indicate whether the message's sequence number is the largest received from the MPL Seed.

multicast, ip

protocol-element §4.1

An MPL Domain is a scope zone in which MPL Interfaces subscribe to the same MPL Domain Address and participate in disseminating MPL Data Messages. MPL avoids constructing or maintaining any multicast routing topology by using a controlled flood within the domain. Each MPL Domain is identified by an MPL Domain Address, defaulting to ALL_MPL_FORWARDERS with Realm-Local scope (scop=3).

multicast, ip, routing

protocol-element §4.2

MPL maintains four information sets per forwarder: the Local Interface Set (unicast addresses per interface), the Domain Set (interfaces per MPL Domain Address), a Seed Set per domain (sliding window of acceptable sequence numbers per seed), and a Buffered Message Set per domain (recently received MPL Data Messages from each seed).

multicast, ip

registry §11.2

IANA allocated ICMPv6 Type 159 with the name 'MPL Control Message' from the 'ICMPv6 type Numbers' registry of RFC 4443.

multicast, ip, registry

registry §11.1

IANA allocated IPv6 Hop-by-Hop Option Type 0x6D (act=01, chg=1) for the MPL Option from the 'Destination Options and Hop-by-Hop Options' registry. The previously allocated value 0x4D ('MPL Option') has been marked Deprecated.

multicast, ip, registry

registry §11.3

IANA allocated the variable-scope IPv6 multicast address FF0X:0:0:0:0:0:0:FC as ALL_MPL_FORWARDERS from the 'Variable Scope Multicast Addresses' sub-registry. By default MPL Forwarders use this address with Realm-Local scope (scop=3) as the MPL Domain Address for a single-domain deployment.

multicast, ip, registry

security-consideration §12 SHOULD NOT

MPL does not specify a cryptographic security mechanism. LLNs should rely on link-layer security (e.g., IEEE 802.15.4 AES-128 frame security for access control, integrity, confidentiality, and replay protection). If the attack vector includes adversaries with LLN access, MPL SHOULD NOT be used.

multicast, security, ip

security-consideration §12

MPL sequence numbers enable a denial-of-service attack: an attacker can spoof a message with a sufficiently large sequence number to flush the Buffered Message Set and advance MinSequence, halting forwarding and preventing acceptance of legitimate MPL Data Messages until the Seed Set entry expires. This affects both proactive and reactive forwarding modes.

multicast, security, ip

state-machine §4.3

Upon receiving an MPL Data Message, a forwarder classifies it as 'old' if the sequence number is less than MinSequence in the Seed Set or if the same sequence number exists in the Buffered Message Set. Otherwise it is 'new'. New messages trigger Seed Set update, Buffered Message Set insertion, payload processing, and multicast retransmission; old messages are discarded.

multicast, ip

wire-format §6.3

Each MPL Seed Info entry contains an 8-bit min-seqno, a 6-bit bm-len (size of buffered-mpl-messages in octets), a 2-bit S field (seed-id length), a variable-length seed-id (0, 2, 8, or 16 octets), and a variable-length bit-vector buffered-mpl-messages where the i-th bit represents sequence number min-seqno+i. The structure has no octet alignment requirement.

multicast, ip

wire-format §6.2

The MPL Control Message is an ICMPv6 message (Type 159, Code 0) with Hop Limit 255, source from the MPL Interface's AddressSet, and destination the link-scoped MPL Domain Address. It carries zero or more MPL Seed Info entries encoding the Seed Set and Buffered Message Set of the sender.

multicast, ip

wire-format §6.1

The MPL Option is carried in an IPv6 Hop-by-Hop Options header (Option Type 0x6D). It contains a 2-bit S field encoding seed-id length (0=IPv6 src, 1=16-bit, 2=64-bit, 3=128-bit), 1-bit M flag (largest known sequence), 1-bit V flag (version, must be 0), 4-bit reserved, an 8-bit sequence number, and an optional variable-length seed-id.

multicast, ip