summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc7731.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc7731.txt')
-rw-r--r--doc/rfc/rfc7731.txt1627
1 files changed, 1627 insertions, 0 deletions
diff --git a/doc/rfc/rfc7731.txt b/doc/rfc/rfc7731.txt
new file mode 100644
index 0000000..314c812
--- /dev/null
+++ b/doc/rfc/rfc7731.txt
@@ -0,0 +1,1627 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) J. Hui
+Request for Comments: 7731 Nest Labs
+Category: Standards Track R. Kelsey
+ISSN: 2070-1721 Silicon Labs
+ February 2016
+
+
+ Multicast Protocol for Low-Power and Lossy Networks (MPL)
+
+Abstract
+
+ 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.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 5741.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ http://www.rfc-editor.org/info/rfc7731.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 1]
+
+RFC 7731 MPL February 2016
+
+
+Copyright Notice
+
+ Copyright (c) 2016 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (http://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 2]
+
+RFC 7731 MPL February 2016
+
+
+Table of Contents
+
+ 1. Introduction ....................................................4
+ 2. Terminology .....................................................5
+ 3. Applicability Statement .........................................6
+ 4. MPL Protocol Overview ...........................................7
+ 4.1. MPL Domains ................................................7
+ 4.2. Information Base Overview ..................................8
+ 4.3. Protocol Overview ..........................................8
+ 4.4. Signaling Overview ........................................10
+ 5. MPL Parameters and Constants ...................................11
+ 5.1. MPL Multicast Addresses ...................................11
+ 5.2. MPL Message Types .........................................11
+ 5.3. MPL Seed Identifiers ......................................11
+ 5.4. MPL Parameters ............................................11
+ 6. Protocol Message Formats .......................................14
+ 6.1. MPL Option ................................................14
+ 6.2. MPL Control Message .......................................15
+ 6.3. MPL Seed Info .............................................16
+ 7. Information Base ...............................................17
+ 7.1. Local Interface Set .......................................17
+ 7.2. Domain Set ................................................18
+ 7.3. Seed Set ..................................................18
+ 7.4. Buffered Message Set ......................................18
+ 8. MPL Seed Sequence Numbers ......................................19
+ 9. MPL Data Messages ..............................................19
+ 9.1. MPL Data Message Generation ...............................19
+ 9.2. MPL Data Message Transmission .............................20
+ 9.3. MPL Data Message Processing ...............................21
+ 10. MPL Control Messages ..........................................22
+ 10.1. MPL Control Message Generation ...........................22
+ 10.2. MPL Control Message Transmission .........................22
+ 10.3. MPL Control Message Processing ...........................23
+ 11. IANA Considerations ...........................................24
+ 11.1. MPL Option Type ..........................................24
+ 11.2. MPL ICMPv6 Type ..........................................25
+ 11.3. Well-Known Multicast Addresses ...........................25
+ 12. Security Considerations .......................................25
+ 13. References ....................................................26
+ 13.1. Normative References .....................................26
+ 13.2. Informative References ...................................28
+ Acknowledgements ..................................................29
+ Authors' Addresses ................................................29
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 3]
+
+RFC 7731 MPL February 2016
+
+
+1. Introduction
+
+ Low-Power and Lossy Networks (LLNs) typically operate with strict
+ resource constraints in communication, computation, memory, and
+ energy. Such resource constraints may preclude the use of existing
+ IPv6 multicast routing and forwarding mechanisms. Traditional IP
+ multicast delivery typically relies on topology maintenance
+ mechanisms to discover and maintain routes to all subscribers of a
+ multicast group (e.g., [RFC3973] [RFC4601]). However, maintaining
+ such topologies in LLNs is costly and may not be feasible given the
+ available resources.
+
+ Memory constraints may limit devices to maintaining links/routes to
+ one or a few neighbors. For this reason, the Routing Protocol for
+ LLNs (RPL) specifies both storing and non-storing modes [RFC6550].
+ The latter allows RPL routers to maintain only one or a few default
+ routes towards an LLN Border Router (LBR) and use source routing to
+ forward messages away from the LBR. For the same reasons, an LLN
+ device may not be able to maintain a multicast routing topology when
+ operating with limited memory.
+
+ Furthermore, the dynamic properties of wireless networks can make the
+ cost of maintaining a multicast routing topology prohibitively
+ expensive. In wireless environments, topology maintenance may
+ involve selecting a connected dominating set used to forward
+ multicast messages to all nodes in an administrative domain.
+ However, existing mechanisms often require two-hop topology
+ information, and the cost of maintaining such information grows
+ polynomially with network density.
+
+ 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 routing topology, disseminating multicast messages to
+ all MPL Forwarders in an MPL Domain. By using the Trickle algorithm
+ [RFC6206], MPL requires only small, constant state for each MPL
+ device that initiates disseminations. The Trickle algorithm also
+ allows MPL to be density aware, allowing the communication rate to
+ scale logarithmically with density.
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 4]
+
+RFC 7731 MPL February 2016
+
+
+2. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ [RFC2119].
+
+ The following terms are used throughout this document:
+
+ MPL Forwarder - A router that implements MPL. An MPL Forwarder is
+ equipped with at least one MPL Interface.
+
+ MPL Interface - An MPL Forwarder's attachment to a communications
+ medium, over which it transmits and receives MPL Data Messages and
+ MPL Control Messages according to this specification. An MPL
+ Interface is assigned one or more unicast addresses and is
+ subscribed to one or more MPL Domain Addresses.
+
+ MPL Domain Address - A multicast address that identifies the set of
+ MPL Interfaces within an MPL Domain. MPL Data Messages
+ disseminated in an MPL Domain have the associated MPL Domain
+ Address as their destination address.
+
+ MPL Domain - A scope zone, as defined in [RFC4007], in which MPL
+ Interfaces subscribe to the same MPL Domain Address and
+ participate in disseminating MPL Data Messages.
+
+ MPL Data Message - A multicast message that is used to communicate a
+ multicast payload between MPL Forwarders within an MPL Domain. An
+ MPL Data Message contains an MPL Option in the IPv6 header and has
+ as its destination address the MPL Domain Address corresponding to
+ the MPL Domain.
+
+ MPL Control Message - A link-local multicast message that is used to
+ communicate information about recently received MPL Data Messages
+ to neighboring MPL Forwarders.
+
+ MPL Seed - An MPL Forwarder that generates MPL Data Messages and
+ serves as an entry point into an MPL Domain.
+
+ MPL Seed Identifier - An unsigned integer that uniquely identifies
+ an MPL Seed within an MPL Domain.
+
+ Node - Used within this document to refer to an MPL Forwarder.
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 5]
+
+RFC 7731 MPL February 2016
+
+
+3. Applicability Statement
+
+ MPL is an IPv6 multicast forwarding protocol designed for the
+ communication characteristics and resource constraints of LLNs. By
+ implementing controlled disseminations of multicast messages using
+ the Trickle algorithm, MPL is designed for networks that communicate
+ using low-power and lossy links with widely varying topologies in
+ both the space and time dimensions.
+
+ While designed specifically for LLNs, MPL is not limited to use over
+ such networks. MPL may be applicable to any network where no
+ multicast routing state is desired. MPL may also be used in
+ environments where only a subset of links are considered low-power
+ and lossy links.
+
+ A host need not be aware that their multicast is supported by MPL as
+ long as its attachment router forwards multicast messages between the
+ MPL Domain and the host. However, a host may choose to implement MPL
+ so that it can take advantage of the broadcast medium inherent in
+ many LLNs and receive multicast messages carried by MPL directly.
+
+ MPL is parameterized to support different dissemination techniques.
+ In one parameterization, MPL may utilize the classic flooding method
+ that involves having each device receiving a message rebroadcast the
+ message. In another parameterization, MPL may utilize Trickle's
+ [RFC6206] "polite gossip" method, which involves transmission
+ suppression and adaptive timing techniques. [Clausen2013] questions
+ the efficiency of Trickle's "polite gossip" mechanism in some
+ multicast scenarios, so by also including a classic flooding mode of
+ operation MPL aims to be able to perform satisfactorily in a variety
+ of situations.
+
+ To support efficient message delivery in networks that have many poor
+ links, MPL supports a reactive forwarding mode that utilizes MPL
+ Control Messages to summarize the current multicast state. The MPL
+ Control Message size grows linearly with the number of simultaneous
+ MPL Seeds in the MPL Domain -- 4 octets per MPL Seed. When reactive
+ forwarding is not enabled, MPL Control Messages are not transmitted,
+ and the associated overhead is not incurred.
+
+ This document does not specify a cryptographic security mechanism for
+ MPL to ensure that MPL messages are not spoofed by anyone with access
+ to the LLN. In general, the basic ability to inject messages into an
+ LLN may be used as a denial-of-service attack, regardless of what
+ forwarding protocol is used. For these reasons, LLNs typically
+ employ link-layer security mechanisms to mitigate an attacker's
+ ability to inject messages. For example, the IEEE 802.15.4
+ [IEEE802.15.4] standard specifies frame security mechanisms using
+
+
+
+Hui & Kelsey Standards Track [Page 6]
+
+RFC 7731 MPL February 2016
+
+
+ AES-128 to support access control, message integrity, message
+ confidentiality, and replay protection. However, if the attack
+ vector includes attackers that have access to the LLN, then MPL
+ SHOULD NOT be used.
+
+4. MPL Protocol Overview
+
+ The goal of MPL is to deliver multicast messages to all interfaces
+ that subscribe to the multicast messages' destination address within
+ an MPL Domain.
+
+4.1. MPL Domains
+
+ An MPL Domain is a scope zone, as defined in [RFC4007], in which MPL
+ Interfaces subscribe to the same MPL Domain Address and participate
+ in disseminating MPL Data Messages.
+
+ When participating in only one MPL Domain, the MPL Domain Address is
+ the ALL_MPL_FORWARDERS multicast address with Realm-Local scope
+ ("scop" value 3) [RFC7346].
+
+ When an MPL Forwarder participates in multiple MPL Domains
+ simultaneously, at most one MPL Domain may be assigned an MPL Domain
+ Address equal to the ALL_MPL_FORWARDERS multicast address. All other
+ MPL Domains MUST be assigned a unique MPL Domain Address that allows
+ the MPL Forwarder to identify each MPL Domain. The MPL Domains
+ SHOULD be configured automatically based on some underlying topology.
+ For example, when using RPL [RFC6550], MPL Domains may be configured
+ based on RPL Instances.
+
+ When MPL is used in deployments that use administratively defined
+ scopes that cover, for example, multiple subnets based on different
+ underlying network technologies, Admin-Local scope (scop value 4) or
+ Site-Local scope (scop value 5) SHOULD be used.
+
+ An MPL Forwarder MAY participate in additional MPL Domains identified
+ by other multicast addresses. An MPL Interface MUST subscribe to the
+ MPL Domain Addresses for the MPL Domains that it participates in.
+ The assignment of other multicast addresses is out of scope.
+
+ 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 value 2) when reactive forwarding is in use
+ (i.e., when communicating MPL Control Messages).
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 7]
+
+RFC 7731 MPL February 2016
+
+
+4.2. Information Base Overview
+
+ A node records necessary protocol state in the following
+ information sets:
+
+ o The Local Interface Set records the set of local MPL Interfaces
+ and the unicast addresses assigned to those MPL Interfaces.
+
+ o The Domain Set records the set of MPL Domain Addresses and the
+ local MPL Interfaces that subscribe to those addresses.
+
+ o A Seed Set records information about received MPL Data Messages
+ received from an MPL Seed within an MPL Domain. Each MPL Domain
+ has an associated Seed Set. A Seed Set maintains the minimum
+ sequence number for MPL Data Messages that the MPL Forwarder is
+ willing to receive or has buffered in its Buffered Message Set
+ from an MPL Seed. MPL uses Seed Sets and Buffered Message Sets to
+ determine when to accept an MPL Data Message, process its payload,
+ and retransmit it.
+
+ o A Buffered Message Set records recently received MPL Data Messages
+ from an MPL Seed within an MPL Domain. Each MPL Domain has an
+ associated Buffered Message Set. MPL Data Messages resident in a
+ Buffered Message Set have sequence numbers that are greater than
+ or equal to the minimum threshold maintained in the corresponding
+ Seed Set. MPL uses Buffered Message Sets to store MPL Data
+ Messages that may be transmitted by the MPL Forwarder for
+ forwarding.
+
+4.3. Protocol Overview
+
+ MPL achieves its goal by implementing a controlled flood that
+ attempts to disseminate the multicast data message to all interfaces
+ within an MPL Domain. MPL performs the following tasks to
+ disseminate a multicast message:
+
+ o When having a multicast message to forward into an MPL Domain, the
+ MPL Seed generates an MPL Data Message that includes the MPL
+ Domain Address as the IPv6 Destination Address, the MPL Seed
+ Identifier, a newly generated sequence number, and the multicast
+ message. If the multicast destination address is not the MPL
+ Domain Address, IP-in-IP tunneling [RFC2473] is used to
+ encapsulate the multicast message in an MPL Data Message,
+ preserving the original IPv6 Destination Address.
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 8]
+
+RFC 7731 MPL February 2016
+
+
+ o Upon receiving an MPL Data Message, the MPL Forwarder extracts the
+ MPL Seed and sequence number and determines whether or not the MPL
+ Data Message was previously received using the MPL Domain's Seed
+ Set and Buffered Message Set.
+
+ * If the sequence number is less than the lower-bound sequence
+ number maintained in the Seed Set or a message with the same
+ sequence number exists within the Buffered Message Set, the MPL
+ Forwarder marks the MPL Data Message as old.
+
+ * Otherwise, the MPL Forwarder marks the MPL Data Message as new.
+
+ o For each newly received MPL Data Message, an MPL Forwarder updates
+ the Seed Set, adds the MPL Data Message into the Buffered Message
+ Set, processes its payload, and multicasts the MPL Data Message a
+ number of times on all MPL Interfaces participating in the same
+ MPL Domain to forward the message.
+
+ o Each MPL Forwarder may periodically link-local multicast MPL
+ Control Messages on MPL Interfaces to communicate information
+ contained in an MPL Domain's Seed Set and Buffered Message Set.
+
+ o Upon receiving an MPL Control Message, an MPL Forwarder determines
+ whether or not there are any new MPL Data Messages that have yet
+ to be received by the MPL Control Message's source and multicasts
+ those MPL Data Messages.
+
+ MPL's configuration parameters allow two forwarding strategies for
+ disseminating MPL Data Messages via MPL Interfaces:
+
+ Proactive Forwarding - With proactive forwarding, an MPL Forwarder
+ schedules transmissions of MPL Data Messages using the Trickle
+ algorithm, without any prior indication that neighboring nodes
+ have yet to receive the message. After transmitting the MPL Data
+ Message a limited number of times, the MPL Forwarder may terminate
+ proactive forwarding for the MPL Data Message.
+
+ Reactive Forwarding - With reactive forwarding, an MPL Forwarder
+ link-local multicasts MPL Control Messages using the Trickle
+ algorithm [RFC6206]. MPL Forwarders use MPL Control Messages to
+ discover new MPL Data Messages that have not yet been received.
+ When discovering that a neighboring MPL Forwarder has not yet
+ received an MPL Data Message, the MPL Forwarder schedules those
+ MPL Data Messages for transmission using the Trickle algorithm.
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 9]
+
+RFC 7731 MPL February 2016
+
+
+ Note that, when used within the same MPL Domain, proactive and
+ reactive forwarding strategies are not mutually exclusive and may be
+ used simultaneously. For example, upon receiving a new MPL Data
+ Message when both proactive and reactive forwarding techniques are
+ enabled, an MPL Forwarder will proactively retransmit the MPL Data
+ Message a limited number of times and schedule further transmissions
+ upon receiving MPL Control Messages.
+
+4.4. Signaling Overview
+
+ MPL generates and processes the following messages:
+
+ MPL Data Message - Generated by an MPL Seed to deliver a multicast
+ message across an MPL Domain. The MPL Data Message's source is an
+ address in the Local Interface Set of the MPL Seed that generated
+ the message and is valid within the MPL Domain. The MPL Data
+ Message's destination is the MPL Domain Address corresponding to
+ the MPL Domain. An MPL Data Message contains:
+
+ * The Seed Identifier of the MPL Seed that generated the MPL Data
+ Message.
+
+ * The sequence number of the MPL Seed that generated the MPL Data
+ Message.
+
+ * The original multicast message.
+
+ MPL Control Message - Generated by an MPL Forwarder to communicate
+ information contained in an MPL Domain's Seed Set and Buffered
+ Message Set to neighboring MPL Forwarders. An MPL Control Message
+ contains a list of tuples for each entry in the Seed Set. Each
+ tuple contains:
+
+ * The minimum sequence number maintained in the Seed Set for the
+ MPL Seed.
+
+ * A bit-vector indicating the sequence numbers of MPL Data
+ Messages resident in the Buffered Message Set for the MPL Seed,
+ where the first bit represents a sequence number equal to the
+ minimum threshold maintained in the Seed Set.
+
+ * The length of the bit-vector.
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 10]
+
+RFC 7731 MPL February 2016
+
+
+5. MPL Parameters and Constants
+
+ This section describes various program and networking parameters and
+ constants used by MPL.
+
+5.1. MPL Multicast Addresses
+
+ MPL makes use of MPL Domain Addresses to identify MPL Interfaces of
+ an MPL Domain. By default, MPL Forwarders subscribe to the
+ ALL_MPL_FORWARDERS multicast address with Realm-Local scope (scop
+ value 3) [RFC7346].
+
+ For each MPL Domain Address that an MPL Interface subscribes to, the
+ MPL Interface MUST also subscribe to the MPL Domain Address with
+ Link-Local scope (scop value 2) when reactive forwarding is in use.
+ MPL Forwarders use the link-scoped MPL Domain Address to communicate
+ MPL Control Messages to neighboring (i.e., on-link) MPL Forwarders.
+
+5.2. MPL Message Types
+
+ MPL defines an IPv6 Option for carrying an MPL Seed Identifier and a
+ sequence number within an MPL Data Message. The IPv6 Option Type has
+ value 0x6D.
+
+ MPL defines an ICMPv6 Message (MPL Control Message) for communicating
+ information contained in an MPL Domain's Seed Set and Buffered
+ Message Set to neighboring MPL Forwarders. The MPL Control Message
+ has ICMPv6 Type 159.
+
+5.3. MPL Seed Identifiers
+
+ MPL uses MPL Seed Identifiers to uniquely identify MPL Seeds within
+ an MPL Domain. For each MPL Domain that the MPL Forwarder serves as
+ an MPL Seed, the MPL Forwarder MUST have an associated MPL Seed
+ Identifier. An MPL Forwarder MAY use the same MPL Seed Identifier
+ across multiple MPL Domains, but the MPL Seed Identifier MUST be
+ unique within each MPL Domain. The mechanism for assigning and
+ verifying uniqueness of MPL Seed Identifiers is not specified in this
+ document.
+
+5.4. MPL Parameters
+
+ PROACTIVE_FORWARDING - A boolean value that indicates whether or not
+ the MPL Forwarder schedules MPL Data Message transmissions after
+ receiving them for the first time. PROACTIVE_FORWARDING has a
+ default value of TRUE. All MPL Interfaces on the same link SHOULD
+ be configured with the same value of PROACTIVE_FORWARDING. An
+ implementation MAY choose to vary the value of
+
+
+
+Hui & Kelsey Standards Track [Page 11]
+
+RFC 7731 MPL February 2016
+
+
+ PROACTIVE_FORWARDING across interfaces on the same link if
+ reactive forwarding is also in use. The mechanism for setting
+ PROACTIVE_FORWARDING is not specified within this document.
+
+ SEED_SET_ENTRY_LIFETIME - The minimum lifetime for an entry in the
+ Seed Set. SEED_SET_ENTRY_LIFETIME has a default value of
+ 30 minutes. It is RECOMMENDED that all MPL Forwarders use the
+ same value for SEED_SET_ENTRY_LIFETIME for a given MPL Domain and
+ use a default value of 30 minutes. Using a value of
+ SEED_SET_ENTRY_LIFETIME that is too small can cause the duplicate
+ detection mechanism to fail, resulting in an MPL Forwarder
+ receiving a given MPL Data Message more than once. The mechanism
+ for setting SEED_SET_ENTRY_LIFETIME is not specified within this
+ document.
+
+ As specified in [RFC6206], a Trickle timer runs for a defined
+ interval and has three configuration parameters: the minimum interval
+ size Imin, the maximum interval size Imax, and a redundancy
+ constant k.
+
+ This specification defines a fourth Trickle configuration parameter,
+ TimerExpirations, which indicates the number of Trickle timer
+ expiration events that occur before terminating the Trickle algorithm
+ for a given MPL Data Message or MPL Control Message.
+
+ Each MPL Interface uses the following Trickle parameters for MPL Data
+ Message and MPL Control Message transmissions:
+
+ DATA_MESSAGE_IMIN - The minimum Trickle timer interval, as defined
+ in [RFC6206], for MPL Data Message transmissions.
+ DATA_MESSAGE_IMIN has a default value of 10 times the expected
+ link-layer latency.
+
+ DATA_MESSAGE_IMAX - The maximum Trickle timer interval, as defined
+ in [RFC6206], for MPL Data Message transmissions.
+ DATA_MESSAGE_IMAX has a default value equal to DATA_MESSAGE_IMIN.
+
+ DATA_MESSAGE_K - The redundancy constant, as defined in [RFC6206],
+ for MPL Data Message transmissions. DATA_MESSAGE_K has a default
+ value of 1.
+
+ DATA_MESSAGE_TIMER_EXPIRATIONS - The number of Trickle timer
+ expirations that occur before terminating the Trickle algorithm's
+ retransmission of a given MPL Data Message.
+ DATA_MESSAGE_TIMER_EXPIRATIONS has a default value of 3.
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 12]
+
+RFC 7731 MPL February 2016
+
+
+ CONTROL_MESSAGE_IMIN - The minimum Trickle timer interval, as
+ defined in [RFC6206], for MPL Control Message transmissions.
+ CONTROL_MESSAGE_IMIN has a default value of 10 times the
+ worst-case link-layer latency.
+
+ CONTROL_MESSAGE_IMAX - The maximum Trickle timer interval, as
+ defined in [RFC6206], for MPL Control Message transmissions.
+ CONTROL_MESSAGE_IMAX has a default value of 5 minutes.
+
+ CONTROL_MESSAGE_K - The redundancy constant, as defined in
+ [RFC6206], for MPL Control Message transmissions.
+ CONTROL_MESSAGE_K has a default value of 1.
+
+ CONTROL_MESSAGE_TIMER_EXPIRATIONS - The number of Trickle timer
+ expirations that occur before terminating the Trickle algorithm
+ for MPL Control Message transmissions.
+ CONTROL_MESSAGE_TIMER_EXPIRATIONS has a default value of 10.
+
+ As described in [RFC6206], if different nodes have different
+ configuration parameters, Trickle may have unintended behaviors.
+ Therefore, it is RECOMMENDED that all MPL Interfaces attached to the
+ same link of a given MPL Domain use the same values for the Trickle
+ parameters above for a given MPL Domain. The mechanism for setting
+ the Trickle parameters is not specified within this document.
+
+ The default MPL parameters specify a forwarding strategy that
+ utilizes both proactive and reactive techniques. Using these default
+ values, an MPL Forwarder proactively transmits any new MPL Data
+ Messages it receives and then uses MPL Control Messages to trigger
+ additional MPL Data Message retransmissions where message drops are
+ detected. Setting DATA_MESSAGE_IMAX to the same value as
+ DATA_MESSAGE_IMIN in this case is acceptable, since subsequent MPL
+ Data Message retransmissions are triggered by MPL Control Messages,
+ where CONTROL_MESSAGE_IMAX is greater than CONTROL_MESSAGE_IMIN.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 13]
+
+RFC 7731 MPL February 2016
+
+
+6. Protocol Message Formats
+
+ Messages generated and processed by an MPL Forwarder are described in
+ this section.
+
+6.1. MPL Option
+
+ The MPL Option is carried in MPL Data Messages in an IPv6 Hop-by-Hop
+ Options header, immediately following the IPv6 header. The MPL
+ Option has the following format:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Option Type | Opt Data Len |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | S |M|V| rsv | sequence | seed-id (optional) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Option Type 0x6D.
+
+ Opt Data Len Length of the Option Data field [RFC2460] in octets.
+
+ S 2-bit unsigned integer. Identifies the length of the
+ seed-id. '0' indicates that the seed-id is the IPv6
+ Source Address and not included in the MPL Option.
+ '1' indicates that the seed-id is a 16-bit unsigned
+ integer. '2' indicates that the seed-id is a 64-bit
+ unsigned integer. '3' indicates that the seed-id is a
+ 128-bit unsigned integer.
+
+ M 1-bit flag. '1' indicates that the value in the
+ sequence field is known to be the largest sequence
+ number that was received from the MPL Seed.
+
+ V 1-bit flag. '0' indicates that the MPL Option
+ conforms to this specification. MPL Data Messages
+ with an MPL Option in which this flag is set to 1 MUST
+ be dropped.
+
+ rsv 4-bit reserved field. MUST be set to 0 on
+ transmission and ignored on reception.
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 14]
+
+RFC 7731 MPL February 2016
+
+
+ sequence 8-bit unsigned integer. Identifies relative ordering
+ of MPL Data Messages from the MPL Seed identified by
+ the seed-id.
+
+ seed-id Uniquely identifies the MPL Seed that initiated
+ dissemination of the MPL Data Message. The size of
+ the seed-id is indicated by the S field.
+
+ The Option Data (specifically, the M flag) of the MPL Option is
+ updated by MPL Forwarders as the MPL Data Message is forwarded.
+ Nodes that do not understand the MPL Option MUST discard the MPL Data
+ Message. Thus, according to [RFC2460], the three high-order bits of
+ the Option Type are set to '011'. The Option Data length is
+ variable.
+
+ The seed-id uniquely identifies an MPL Seed. When the seed-id is
+ 128 bits (S=3), the MPL Seed MAY use an IPv6 address assigned to one
+ of its interfaces that is unique within the MPL Domain. Managing MPL
+ Seed Identifiers is not within the scope of this document.
+
+ The sequence field establishes a total ordering of MPL Data Messages
+ generated by an MPL Seed for an MPL Domain. The MPL Seed MUST
+ increment the sequence field's value on each new MPL Data Message
+ that it generates for an MPL Domain. Implementations MUST follow the
+ Serial Number Arithmetic as defined in [RFC1982] when incrementing a
+ sequence value or comparing two sequence values.
+
+ Future updates to this specification may define additional fields
+ following the seed-id field.
+
+6.2. MPL Control Message
+
+ An MPL Forwarder uses ICMPv6 Messages to communicate information
+ contained in an MPL Domain's Seed Set and Buffered Message Set to
+ neighboring MPL Forwarders. The MPL Control Message has the
+ following format:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type | Code | Checksum |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . MPL Seed Info[0..n] .
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 15]
+
+RFC 7731 MPL February 2016
+
+
+ IP Fields:
+
+ Source Address An IPv6 address in the AddressSet of the
+ corresponding MPL Interface. MUST be valid
+ within the MPL Domain.
+
+ Destination Address The link-scoped MPL Domain Address
+ corresponding to the MPL Domain.
+
+ Hop Limit 255
+
+
+ ICMPv6 Fields:
+
+ Type 159
+
+ Code 0
+
+ Checksum The ICMP checksum. See [RFC4443].
+
+ MPL Seed Info[0..n] List of zero or more MPL Seed Info entries.
+
+ The MPL Control Message indicates the sequence numbers of MPL Data
+ Messages that are within the MPL Domain's Buffered Message Set. The
+ MPL Control Message also indicates the sequence numbers of MPL Data
+ Messages that an MPL Forwarder is willing to receive. The MPL
+ Control Message allows neighboring MPL Forwarders to determine
+ whether or not there are any new MPL Data Messages to exchange.
+
+6.3. MPL Seed Info
+
+ The MPL Seed Info encodes the minimum sequence number for an MPL Seed
+ maintained in the MPL Domain's Seed Set. The MPL Seed Info also
+ indicates the sequence numbers of MPL Data Messages generated by the
+ MPL Seed that are stored within the MPL Domain's Buffered Message
+ Set. The MPL Seed Info has the following format:
+
+ 0 1 2 3
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | min-seqno | bm-len | S | seed-id (0/2/8/16 octets) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ . buffered-mpl-messages (variable length) .
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 16]
+
+RFC 7731 MPL February 2016
+
+
+ min-seqno 8-bit unsigned integer. The lower-bound
+ sequence number for the MPL Seed.
+
+ bm-len 6-bit unsigned integer. The size of
+ buffered-mpl-messages in octets.
+
+ S 2-bit unsigned integer. Identifies the
+ length of the seed-id. '0' indicates that
+ the seed-id value is the IPv6 Source Address
+ and not included in the MPL Seed Info. '1'
+ indicates that the seed-id value is a 16-bit
+ unsigned integer. '2' indicates that the
+ seed-id value is a 64-bit unsigned integer.
+ '3' indicates that the seed-id is a 128-bit
+ unsigned integer.
+
+ seed-id Variable-length unsigned integer. Indicates
+ the MPL Seed associated with this MPL
+ Seed Info.
+
+ buffered-mpl-messages Variable-length bit-vector. Identifies the
+ sequence numbers of MPL Data Messages
+ maintained in the corresponding Buffered
+ Message Set for the MPL Seed. The i-th bit
+ represents a sequence number of min-seqno
+ + i. '0' indicates that the corresponding
+ MPL Data Message does not exist in the
+ Buffered Message Set. '1' indicates that the
+ corresponding MPL Data Message does exist in
+ the Buffered Message Set.
+
+ The MPL Seed Info does not have any octet alignment requirement.
+
+7. Information Base
+
+7.1. Local Interface Set
+
+ The Local Interface Set records the local MPL Interfaces of an MPL
+ Forwarder. The Local Interface Set consists of Local Interface
+ Tuples, one per MPL Interface: (AddressSet).
+
+ AddressSet - a set of unicast addresses assigned to the MPL
+ Interface.
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 17]
+
+RFC 7731 MPL February 2016
+
+
+7.2. Domain Set
+
+ The Domain Set records the MPL Interfaces that subscribe to each MPL
+ Domain Address. The Domain Set consists of MPL Domain Tuples, one
+ per MPL Domain: (MPLInterfaceSet).
+
+ MPLInterfaceSet - a set of MPL Interfaces that subscribe to the MPL
+ Domain Address that identifies the MPL Domain.
+
+7.3. Seed Set
+
+ A Seed Set records a sliding window used to determine the sequence
+ numbers of MPL Data Messages (generated by the MPL Seed) that an MPL
+ Forwarder is willing to accept. An MPL Forwarder maintains a Seed
+ Set for each MPL Domain that it participates in. A Seed Set consists
+ of MPL Seed Tuples: (SeedID, MinSequence, Lifetime).
+
+ SeedID - the identifier for the MPL Seed.
+
+ MinSequence - a lower-bound sequence number that represents the
+ sequence number of the oldest MPL Data Message the MPL Forwarder
+ is willing to receive or transmit. An MPL Forwarder MUST ignore
+ any MPL Data Message that has a sequence value less than
+ MinSequence.
+
+ Lifetime - indicates the minimum remaining lifetime of the Seed Set
+ entry. An MPL Forwarder MUST NOT free a Seed Set entry before the
+ remaining lifetime expires.
+
+7.4. Buffered Message Set
+
+ A Buffered Message Set records recently received MPL Data Messages
+ from an MPL Seed within an MPL Domain. An MPL Forwarder uses a
+ Buffered Message Set to buffer MPL Data Messages while the MPL
+ Forwarder is forwarding the MPL Data Messages. An MPL Forwarder
+ maintains a Buffered Message Set for each MPL Domain that it
+ participates in. A Buffered Message Set consists of Buffered Message
+ Tuples: (SeedID, SequenceNumber, DataMessage).
+
+ SeedID - the identifier for the MPL Seed that generated the MPL Data
+ Message.
+
+ SequenceNumber - the sequence number for the MPL Data Message.
+
+ DataMessage - the MPL Data Message.
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 18]
+
+RFC 7731 MPL February 2016
+
+
+ All MPL Data Messages within a Buffered Message Set MUST have a
+ sequence number greater than or equal to MinSequence for the
+ corresponding SeedID. When increasing MinSequence for an MPL Seed,
+ the MPL Forwarder MUST delete any MPL Data Messages from the
+ corresponding Buffered Message Set that have sequence numbers less
+ than MinSequence.
+
+8. MPL Seed Sequence Numbers
+
+ Each MPL Seed maintains a sequence number for each MPL Domain that it
+ serves. The sequence numbers are included in MPL Data Messages
+ generated by the MPL Seed. The MPL Seed MUST increment the sequence
+ number for each MPL Data Message that it generates for an MPL Domain.
+ Implementations MUST follow the Serial Number Arithmetic as defined
+ in [RFC1982] when incrementing a sequence value or comparing two
+ sequence values. This sequence number is used to establish a total
+ ordering of MPL Data Messages generated by an MPL Seed for an MPL
+ Domain.
+
+9. MPL Data Messages
+
+9.1. MPL Data Message Generation
+
+ MPL Data Messages are generated by MPL Seeds when these messages
+ enter the MPL Domain. All MPL Data Messages have the following
+ properties:
+
+ o The IPv6 Source Address MUST be an address in the AddressSet of a
+ corresponding MPL Interface and MUST be valid within the MPL
+ Domain.
+
+ o The IPv6 Destination Address MUST be set to the MPL Domain Address
+ corresponding to the MPL Domain.
+
+ o An MPL Data Message MUST contain an MPL Option in its IPv6 header
+ to identify the MPL Seed that generated the message and the
+ ordering relative to other MPL Data Messages generated by the
+ MPL Seed.
+
+ When the destination address is an MPL Domain Address and the source
+ address is in the AddressList of an MPL Interface that belongs to
+ that MPL Domain Address, the application message and the MPL Data
+ Message MAY be identical. In other words, the MPL Data Message may
+ contain a single IPv6 header that includes the MPL Option.
+
+ Otherwise, IPv6-in-IPv6 encapsulation MUST be used to satisfy the MPL
+ Data Message requirements listed above [RFC2473]. The complete
+ IPv6-in-IPv6 message forms an MPL Data Message. The outer IPv6
+
+
+
+Hui & Kelsey Standards Track [Page 19]
+
+RFC 7731 MPL February 2016
+
+
+ header conforms to the MPL Data Message requirements listed above.
+ The encapsulated IPv6 datagram encodes the multicast data message
+ that is communicated beyond the MPL Domain.
+
+9.2. MPL Data Message Transmission
+
+ An MPL Forwarder manages transmission of MPL Data Messages in its
+ Buffered Message Sets using the Trickle algorithm [RFC6206]. An MPL
+ Forwarder MUST use a separate Trickle timer for each MPL Data Message
+ that it is actively forwarding. In accordance with Section 5 of
+ RFC 6206 [RFC6206], the following items apply:
+
+ o This document defines a "consistent" transmission as receiving an
+ MPL Data Message that has the same MPL Domain Address, seed-id,
+ and sequence value as the MPL Data Message managed by the
+ Trickle timer.
+
+ o This document defines an "inconsistent" transmission as receiving
+ an MPL Data Message that has the same MPL Domain Address, seed-id
+ value, and the M flag set, but has a sequence value less than that
+ of the MPL Data Message managed by the Trickle timer.
+
+ o This document does not define any external "events".
+
+ o This document defines MPL Data Messages as Trickle messages.
+
+ o The actions outside the Trickle algorithm that MPL takes involve
+ managing the MPL Domain's Seed Set and Buffered Message Set.
+
+ As specified in [RFC6206], a Trickle timer has three variables: the
+ current interval size I, a time within the current interval t, and a
+ counter c. MPL defines a fourth variable, e, which counts the number
+ of Trickle timer expiration events since the Trickle timer was last
+ reset.
+
+ After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPL
+ Forwarder MUST disable the Trickle timer. When a buffered MPL Data
+ Message does not have an associated Trickle timer, the MPL Forwarder
+ MAY delete the message from the Buffered Message Set by advancing the
+ MinSequence value of the corresponding MPL Seed in the Seed Set.
+ When the MPL Forwarder no longer buffers any messages for an MPL
+ Seed, the MPL Forwarder MUST NOT increment MinSequence for that
+ MPL Seed.
+
+ When transmitting an MPL Data Message, the MPL Forwarder MUST either
+ set the M flag to zero or set it to a level that indicates whether or
+ not the message's sequence number is the largest value that has been
+ received from the MPL Seed.
+
+
+
+Hui & Kelsey Standards Track [Page 20]
+
+RFC 7731 MPL February 2016
+
+
+9.3. MPL Data Message Processing
+
+ Upon receiving an MPL Data Message, the MPL Forwarder first processes
+ the MPL Option and updates the Trickle timer associated with the MPL
+ Data Message if one exists.
+
+ Upon receiving an MPL Data Message, an MPL Forwarder MUST perform one
+ of the following actions:
+
+ o Accept the message and enter the MPL Data Message in the MPL
+ Domain's Buffered Message Set.
+
+ o Accept the message and update the corresponding MinSequence in
+ the MPL Domain's Seed Set to 1 greater than the message's
+ sequence number.
+
+ o Discard the message without any change to the MPL
+ Information Base.
+
+ If a Seed Set entry exists for the MPL Seed, the MPL Forwarder MUST
+ discard the MPL Data Message if its sequence number is less than
+ MinSequence or exists in the Buffered Message Set.
+
+ If a Seed Set entry does not exist for the MPL Seed, the MPL
+ Forwarder MUST create a new entry for the MPL Seed before accepting
+ the MPL Data Message.
+
+ If memory is limited, an MPL Forwarder SHOULD reclaim memory
+ resources by:
+
+ o Incrementing MinSequence entries in a Seed Set and deleting MPL
+ Data Messages in the corresponding Buffered Message Set that fall
+ below the MinSequence value.
+
+ o Deleting other Seed Set entries that have expired and the
+ corresponding MPL Data Messages in the Buffered Message Set.
+
+ If the MPL Forwarder accepts the MPL Data Message, the MPL Forwarder
+ MUST perform the following actions:
+
+ o Reset the Lifetime of the corresponding Seed Set entry to
+ SEED_SET_ENTRY_LIFETIME.
+
+ o If PROACTIVE_FORWARDING is TRUE, the MPL Forwarder MUST initialize
+ and start a Trickle timer for the MPL Data Message.
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 21]
+
+RFC 7731 MPL February 2016
+
+
+ o If the MPL Control Message Trickle timer is not running and
+ CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero, the MPL Forwarder
+ MUST initialize and start the MPL Control Message Trickle timer.
+
+ o If the MPL Control Message Trickle timer is running, the MPL
+ Forwarder MUST reset the MPL Control Message Trickle timer.
+
+10. MPL Control Messages
+
+10.1. MPL Control Message Generation
+
+ An MPL Forwarder generates MPL Control Messages to communicate an MPL
+ Domain's Seed Set and Buffered Message Set to neighboring MPL
+ Forwarders. Each MPL Control Message is generated according to
+ Section 6.2, with an MPL Seed Info entry for each entry in the MPL
+ Domain's Seed Set. Each MPL Seed Info entry has the following
+ content:
+
+ o S set to the size of the seed-id field in the MPL Seed Info entry.
+
+ o min-seqno set to the MinSequence value of the MPL Seed.
+
+ o bm-len set to the size of buffered-mpl-messages in octets.
+
+ o seed-id set to the MPL Seed Identifier.
+
+ o buffered-mpl-messages with each bit representing whether or not an
+ MPL Data Message with the corresponding sequence number exists in
+ the Buffered Message Set. The i-th bit represents a sequence
+ number of min-seqno + i. '0' indicates that the corresponding MPL
+ Data Message does not exist in the Buffered Message Set. '1'
+ indicates that the corresponding MPL Data Message does exist in
+ the Buffered Message Set.
+
+10.2. MPL Control Message Transmission
+
+ An MPL Forwarder transmits MPL Control Messages using the Trickle
+ algorithm. An MPL Forwarder maintains a single Trickle timer for
+ each MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the
+ MPL Forwarder does not execute the Trickle algorithm and does not
+ transmit MPL Control Messages. In accordance with Section 5 of
+ RFC 6206 [RFC6206], the following items apply:
+
+ o This document defines a "consistent" transmission as receiving an
+ MPL Control Message that results in a determination that neither
+ the receiving nor transmitting node has any new MPL Data Messages
+ to offer.
+
+
+
+
+Hui & Kelsey Standards Track [Page 22]
+
+RFC 7731 MPL February 2016
+
+
+ o This document defines an "inconsistent" transmission as receiving
+ an MPL Control Message that results in a determination that either
+ the receiving or transmitting node has at least one new MPL Data
+ Message to offer.
+
+ o The Trickle timer is reset in response to external "events". This
+ document defines an "event" as increasing the MinSequence value of
+ any entry in the corresponding Seed Set or adding a message to the
+ corresponding Buffered Message Set.
+
+ o This document defines an MPL Control Message as a Trickle message.
+
+ As specified in [RFC6206], a Trickle timer has three variables: the
+ current interval size I, a time within the current interval t, and a
+ counter c. MPL defines a fourth variable, e, which counts the number
+ of Trickle timer expiration events since the Trickle timer was last
+ reset. After CONTROL_MESSAGE_TIMER_EXPIRATIONS Trickle timer events,
+ the MPL Forwarder MUST disable the Trickle timer.
+
+10.3. MPL Control Message Processing
+
+ An MPL Forwarder processes each MPL Control Message that it receives
+ to determine if it has any new MPL Data Messages to receive or offer.
+
+ An MPL Forwarder determines if a new MPL Data Message has not been
+ received from a neighboring node if any of the following conditions
+ hold true:
+
+ o The MPL Control Message includes an MPL Seed that does not exist
+ in the MPL Domain's Seed Set.
+
+ o The MPL Control Message indicates that the neighbor has an MPL
+ Data Message in its Buffered Message Set with sequence number
+ greater than MinSequence (i.e., the i-th bit is set to 1 and
+ min-seqno + i > MinSequence) and is not included in the MPL
+ Domain's Buffered Message Set.
+
+ When an MPL Forwarder determines that it has not yet received an MPL
+ Data Message buffered by a neighboring device, the MPL Forwarder MUST
+ reset its Trickle timer associated with MPL Control Message
+ transmissions. If an MPL Control Message Trickle timer is not
+ running, the MPL Forwarder MUST initialize and start a new
+ Trickle timer.
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 23]
+
+RFC 7731 MPL February 2016
+
+
+ An MPL Forwarder determines if an MPL Data Message in the Buffered
+ Message Set has not yet been received by a neighboring MPL Forwarder
+ if any of the following conditions hold true:
+
+ o The MPL Control Message does not include an MPL Seed for the MPL
+ Data Message.
+
+ o The MPL Data Message's sequence number is greater than or equal to
+ min-seqno and not included in the neighbor's corresponding
+ Buffered Message Set (i.e., the MPL Data Message's sequence number
+ does not have a corresponding bit in buffered-mpl-messages
+ set to 1).
+
+ When an MPL Forwarder determines that it has at least one MPL Data
+ Message in its corresponding Buffered Message Set that has not yet
+ been received by a neighbor, the MPL Forwarder MUST reset the MPL
+ Control Message Trickle timer. Additionally, for each of those
+ entries in the Buffered Message Set, the MPL Forwarder MUST reset the
+ Trickle timer and reset e to 0. If a Trickle timer is not associated
+ with the MPL Data Message, the MPL Forwarder MUST initialize and
+ start a new Trickle timer.
+
+11. IANA Considerations
+
+ This document defines one IPv6 Option, a type that has been allocated
+ from the IPv6 "Destination Options and Hop-by-Hop Options" registry
+ of [RFC2780].
+
+ This document defines one ICMPv6 Message, a type that has been
+ allocated from the "ICMPv6 'type' Numbers" registry of [RFC4443].
+
+ This document registers a well-known multicast address from the
+ "Variable Scope Multicast Addresses" registry of [RFC3307].
+
+11.1. MPL Option Type
+
+ IANA has allocated an IPv6 Option Type from the IPv6 "Destination
+ Options and Hop-by-Hop Options" registry of [RFC2780], as specified
+ in Table 1 below:
+
+ +-----------+-----+-----+-------+-------------+-----------+
+ | Hex Value | act | chg | rest | Description | Reference |
+ +-----------+-----+-----+-------+-------------+-----------+
+ | 0x6D | 01 | 1 | 01101 | MPL Option | RFC 7731 |
+ +-----------+-----+-----+-------+-------------+-----------+
+
+ Table 1: IPv6 Option Type Allocation
+
+
+
+
+Hui & Kelsey Standards Track [Page 24]
+
+RFC 7731 MPL February 2016
+
+
+ Note: IANA has marked the value 0x4D (previously "MPL Option") as
+ "Deprecated".
+
+11.2. MPL ICMPv6 Type
+
+ IANA has allocated an ICMPv6 Type from the "ICMPv6 'type' Numbers"
+ registry of [RFC4443], as specified in Table 2 below:
+
+ +------+---------------------+-----------+
+ | Type | Name | Reference |
+ +------+---------------------+-----------+
+ | 159 | MPL Control Message | RFC 7731 |
+ +------+---------------------+-----------+
+
+ Table 2: ICMPv6 Type Allocation
+
+11.3. Well-Known Multicast Addresses
+
+ IANA has allocated an IPv6 multicast address, with Group ID in the
+ range [0x01,0xFF] for IPv6 over Low-Power Wireless Personal Area
+ Network (6LoWPAN) compression [RFC6282], "ALL_MPL_FORWARDERS" from
+ the "Variable Scope Multicast Addresses" sub-registry of the "IPv6
+ Multicast Address Space Registry" [RFC3307], as specified in Table 3
+ below:
+
+ +---------------------+--------------------+-----------+------------+
+ | Address(es) | Description | Reference | Date |
+ | | | | Registered |
+ +---------------------+--------------------+-----------+------------+
+ | FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | RFC 7731 | 2013-04-10 |
+ +---------------------+--------------------+-----------+------------+
+
+ Table 3: Variable Scope Multicast Address Allocation
+
+12. Security Considerations
+
+ MPL uses sequence numbers to maintain a total ordering of MPL Data
+ Messages from an MPL Seed. The use of sequence numbers allows a
+ denial-of-service attack where an attacker can spoof a message with a
+ sufficiently large sequence number to (i) flush messages from the
+ Buffered Message List and (ii) increase the MinSequence value for an
+ MPL Seed in the corresponding Seed Set. In both cases, the side
+ effect allows an attacker to halt the forwarding process of any MPL
+ Data Messages being disseminated and prevents MPL Forwarders from
+ accepting new MPL Data Messages that an MPL Seed generates while the
+ sequence number is less than MinSequence or until the corresponding
+ Seed Set Entry expires. The net effect applies to both proactive and
+ reactive forwarding modes.
+
+
+
+Hui & Kelsey Standards Track [Page 25]
+
+RFC 7731 MPL February 2016
+
+
+ In general, the basic ability to inject messages into an LLN may be
+ used as a denial-of-service attack, regardless of what forwarding
+ protocol is used. Because MPL is a dissemination protocol, the
+ ability to spoof MPL messages allows an attacker to affect an entire
+ MPL Domain. For these reasons, LLNs typically employ link-layer
+ security mechanisms to mitigate an attacker's ability to inject
+ messages. For example, the IEEE 802.15.4 [IEEE802.15.4] standard
+ specifies frame security mechanisms using AES-128 to support access
+ control, message integrity, message confidentiality, and replay
+ protection. However, if the attack vector includes attackers that
+ have access to the LLN, then MPL SHOULD NOT be used.
+
+ To prevent attackers from injecting packets through an MPL Forwarder,
+ the 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.
+
+ MPL uses the Trickle algorithm to manage message transmissions;
+ therefore, the security considerations described in [RFC6206] apply.
+
+13. References
+
+13.1. Normative References
+
+ [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982,
+ DOI 10.17487/RFC1982, August 1996,
+ <http://www.rfc-editor.org/info/rfc1982>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <http://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
+ (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460,
+ December 1998, <http://www.rfc-editor.org/info/rfc2460>.
+
+ [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in
+ IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473,
+ December 1998, <http://www.rfc-editor.org/info/rfc2473>.
+
+ [RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For
+ Values In the Internet Protocol and Related Headers",
+ BCP 37, RFC 2780, DOI 10.17487/RFC2780, March 2000,
+ <http://www.rfc-editor.org/info/rfc2780>.
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 26]
+
+RFC 7731 MPL February 2016
+
+
+ [RFC3307] Haberman, B., "Allocation Guidelines for IPv6 Multicast
+ Addresses", RFC 3307, DOI 10.17487/RFC3307, August 2002,
+ <http://www.rfc-editor.org/info/rfc3307>.
+
+ [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and
+ B. Zill, "IPv6 Scoped Address Architecture", RFC 4007,
+ DOI 10.17487/RFC4007, March 2005,
+ <http://www.rfc-editor.org/info/rfc4007>.
+
+ [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
+ Control Message Protocol (ICMPv6) for the Internet
+ Protocol Version 6 (IPv6) Specification", RFC 4443,
+ DOI 10.17487/RFC4443, March 2006,
+ <http://www.rfc-editor.org/info/rfc4443>.
+
+ [RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko,
+ "The Trickle Algorithm", RFC 6206, DOI 10.17487/RFC6206,
+ March 2011, <http://www.rfc-editor.org/info/rfc6206>.
+
+ [RFC6282] Hui, J., Ed., and P. Thubert, "Compression Format for IPv6
+ Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
+ DOI 10.17487/RFC6282, September 2011,
+ <http://www.rfc-editor.org/info/rfc6282>.
+
+ [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
+ Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
+ JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
+ Low-Power and Lossy Networks", RFC 6550,
+ DOI 10.17487/RFC6550, March 2012,
+ <http://www.rfc-editor.org/info/rfc6550>.
+
+ [RFC7346] Droms, R., "IPv6 Multicast Address Scopes", RFC 7346,
+ DOI 10.17487/RFC7346, August 2014,
+ <http://www.rfc-editor.org/info/rfc7346>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 27]
+
+RFC 7731 MPL February 2016
+
+
+13.2. Informative References
+
+ [Clausen2013]
+ Clausen, T., de Verdiere, A., and J. Yi, "Performance
+ Analysis of Trickle as a Flooding Mechanism", The 15th
+ IEEE International Conference on Communication
+ Technology (ICCT2013), DOI 10.1109/ICCT.2013.6820439,
+ November 2013.
+
+ [IEEE802.15.4]
+ IEEE, "IEEE Standard for Local and metropolitan area
+ networks--Part 15.4: Low-Rate Wireless Personal Area
+ Networks (LR-WPANs)", IEEE 802.15.4,
+ DOI 10.1109/ieeestd.2011.6012487,
+ <http://ieeexplore.ieee.org/servlet/
+ opac?punumber=6012485>.
+
+ [RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol
+ Independent Multicast - Dense Mode (PIM-DM): Protocol
+ Specification (Revised)", RFC 3973, DOI 10.17487/RFC3973,
+ January 2005, <http://www.rfc-editor.org/info/rfc3973>.
+
+ [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas,
+ "Protocol Independent Multicast - Sparse Mode (PIM-SM):
+ Protocol Specification (Revised)", RFC 4601,
+ DOI 10.17487/RFC4601, August 2006,
+ <http://www.rfc-editor.org/info/rfc4601>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 28]
+
+RFC 7731 MPL February 2016
+
+
+Acknowledgements
+
+ The authors would like to acknowledge the helpful comments of Robert
+ Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Adrian Farrel, Ulrich
+ Herberg, Owen Kirby, Philip Levis, Kerry Lynn, Joseph Reddy, Michael
+ Richardson, Ines Robles, Don Sturek, Dario Tedeschi, and Peter
+ van der Stok, which greatly improved the document.
+
+Authors' Addresses
+
+ Jonathan W. Hui
+ Nest Labs
+ 3400 Hillview Ave.
+ Palo Alto, California 94304
+ United States
+
+ Phone: +650 253 2770
+ Email: jonhui@nestlabs.com
+
+
+ Richard Kelsey
+ Silicon Labs
+ 25 Thomson Place
+ Boston, Massachusetts 02210
+ United States
+
+ Phone: +617 951 1225
+ Email: richard.kelsey@silabs.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hui & Kelsey Standards Track [Page 29]
+