ROLL J. Hui Internet-Draft Cisco Intended status: Standards Track R. Kelsey Expires:April 22,July 28, 2013 Silicon LabsOctober 19, 2012January 24, 2013 Multicast Protocol for Low power and Lossy Networks (MPL)draft-ietf-roll-trickle-mcast-02draft-ietf-roll-trickle-mcast-03 Abstract This document specifies the Multicast Protocol for Low power and Lossy Networks (MPL) that 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 uses the Trickle algorithm todrive packetmanage message transmissions for both control and data-planepackets. Specificmessages. Different Trickle parameter configurations allow MPL to trade between dissemination latency and transmission efficiency. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet- Drafts is at http://datatracker.ietf.org/drafts/current/. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." This Internet-Draft will expire onApril 22,July 28, 2013. Copyright Notice Copyright (c)20122013 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. Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 5 4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 6 4.1. Information Base Overview . . . . .5 4. Message Formats. . . . . . . . . . . 6 4.2. Overview . . . . . . . . . . . . . . . . . . .7 4.1. MPL Option. . . . . . 6 4.3. Signaling Overview . . . . . . . . . . . . . . . . . . . . 74.2. ICMPv65. MPLMessageConstants . . . . . . . . . . . . . . . . . . . .8 4.2.1. MPL Window. . . . 9 5.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 95.5.2. Message Types . . . . . . . . . . . . . . . . . . . . . . 9 5.3. MPL ForwarderBehaviorParameters . . . . . . . . . . . . . . . . . 9 5.4. Trickle Parameters . . . . . . . . . . . . . . . . . . . . 9 6. Protocol Message Formats . . . . .11 5.1. Multicast Packet Dissemination. . . . . . . . . . . . . . 115.1.1. Trickle Parameters and Variables6.1. MPL Option . . . . . . . . . . .12 5.1.2. Proactive Propagation. . . . . . . . . . . . . 11 6.2. MPL Control Message . . .12 5.1.3. Reactive Propagation. . . . . . . . . . . . . . . . 12 6.3. MPL Seed Info .13 5.2. Sliding Windows. . . . . . . . . . . . . . . . . . . . . 135.3. Transmission of MPL Multicast Packets7. Information Base . . . . . . . . . . . . . . . . . . . . . . . 155.4. Reception of MPL Multicast Packets7.1. Local Interface Set . . . . . . . . . . . .16 5.5. Transmission of ICMPv6 MPL Messages. . . . . . . 15 7.2. Domain Set . . . .16 5.6. Reception of ICMPv6 MPL Messages. . . . . . . . . . . . .17 6. MPL Parameters. . . . . . . 15 7.3. Seed Set . . . . . . . . . . . . . . . . . .19 7. Acknowledgements. . . . . . . 15 7.4. Buffered Message Set . . . . . . . . . . . . . . . .20. . . 15 8.IANA ConsiderationsMPL Domains . . . . . . . . . . . . . . . . . . . . . . .21 9. Security Considerations. . 17 9. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . .22. 18 10.ReferencesMPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 19 10.1. MPL Data Message Generation . . . .23 10.1. Normative References. . . . . . . . . . . 19 10.2. MPL Data Message Transmission . . . . . . . .23 10.2. Informative References. . . . . . 19 10.3. MPL Data Message Processing . . . . . . . . . . . .23 Authors' Addresses. . . 20 11. MPL Control Messages . . . . . . . . . . . . . . . . . . . . .24 1. Introduction Low power and Lossy Networks typically operate with strict resource constraints in22 11.1. MPL Control Message Generation . . . . . . . . . . . . . . 22 11.2. MPL Control Message Transmission . . . . . . . . . . . . . 22 11.3. MPL Control Message Processing . . . . . . . . . . . . . . 23 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 13.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . . 26 13.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . . 26 13.3. Well-known Multicast Addresses . . . . . . . . . . . . . . 26 14. Security Considerations . . . . . . . . . . . . . . . . . . . 27 15. Normative References . . . . . . . . . . . . . . . . . . . . . 28 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 29 1. Introduction Low power and Lossy Networks typically operate with strict resource constraints in communication, computation, memory, and energy. Such resource constraints may preclude the use of existing IPv6 multicasttopologyrouting and forwarding mechanisms. Traditional IP multicastforwardingdelivery typically relies on topology maintenance mechanisms toforward multicast messagesdiscover and maintain routes to all subscribers of a multicast group. 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 a LLN Border Router (LBR) and use source routing to forwardpacketsmessages away from the LBR. For the same reasons, a LLN device may not be able to maintain a multicastforwardingrouting topology when operating with limited memory. Furthermore, the dynamic properties of wireless networks can make the cost of maintaining a multicastforwardingrouting 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 multicastforwardingrouting 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. 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 inRFC 2119[RFC2119]. The following terms are used throughout this document: MPLforwarder An IPv6Forwarder - A router thatsubscribesimplements this protocol. A MPL Forwarder is equipped with at least one MPL Interface. MPL Interface - An MPL Forwarder's attachment tothea communications medium, over which it transmits and receives MPLmulticast groupData Messages andparticipates in disseminatingMPLmulticast packets.Control Messages according to this specification. An MPLmulticast scope The multicast scope thatInterface is assigned one or more unicast addresses and is subscribed to one or more MPLuses when forwardingDomain Addresses. MPLmulticast packets. In other words, the multicast scope of the IPv6 DestinationDomain Addressof an MPL multicast packet. MPL domain- Aconnected set of MPL forwardersmulticast address thatdefine the extent ofidentifies theMPL dissemination process. As a formset offlood, allMPLforwarders inInterfaces within an MPLdomain will receive MPL multicast packets. TheDomain. MPLdomain MUST be composed of at least oneData Messages disseminated in an MPLmulticast scope and MAY be composed of multipleDomain have the associated MPLmulticast scopes.Domain Address as their destination address. MPLseedDomain - A scope zone, as defined in [RFC4007], in which MPLforwarder that begins the dissemination process for an MPL multicast packet. The MPL seed may be different than the source ofInterfaces subscribe to theoriginal multicast packet.same MPLseed identifier An identifier that uniquely identifies anDomain Address and participate in disseminating MPLforwarder within itsData Messages. MPLdomain. original multicast packet An IPv6Data Message - A multicastpacketmessage that isdisseminated using MPL. MPL multicast packet An IPv6 multicast packet that contains an MPL Hop-by-Hop Option. When either source or destinations are beyond the MPLused to communicate a multicastscope, thepayload between MPLmulticast packet is an IPv6-in-IPv6 packet thatForwarders and contains an MPLHop-by-HopOption in theouterIPv6header and encapsulates an original multicast packet. When both source and destinations are within theheader. A MPLmulticast scope,Data Message has its destination address set to the MPLHop-by-Hop Option may be included directly within the original multicast packet. 3. OverviewDomain Address. MPLdelivers IPv6Control Message - A link-local multicastpackets by disseminating themmessage that is used toallcommunicate information about recently received MPLforwarders within anData Messages to neighboring MPLdomain.Forwarders. MPLdissemination is a form of flood.Seed - An MPLforwarder may broadcast/multicastForwarder that generates MPL Data Messages and serves as an entry point into an MPL Domain. 3. Applicability Statement This protocol is an IPv6 multicastpacket out offorwarding protocol for Low-Power and Lossy Networks. By implementing a controlled dissemination using thesame physical interface on which it was received. Using link-layer broadcast/multicast allowsTrickle algorithm, this protocol is designed for networks that communicate using low-power and lossy links with widely varying topologies in both the space and time dimensions. 4. Protocol Overview The goal of MPL is toforward multicast packets without explicitly identifying next-hop destinations. An MPL forwarder may also broadcast/multicast MPLdeliver multicastpackets out othermessages to all interfaces that subscribe todisseminatethemessage across different links. MPL does not build or maintain a multicast forwarding topology to forwardmulticastpackets. Any MPL forwarder may initiate the dissemination process by serving as an MPL seed formessages' destination address within anoriginal multicast packet. TheMPLseed may or may not beDomain. 4.1. Information Base Overview A node records necessary protocol state in thesame device asfollowing information sets: o The Local Interface Set records thesourceset ofthe original multicast packet. When the original multicast packet's source is outside the LLN, thelocal MPLseed may be the ingress router. Even if an original multicast packet source is within the LLN, the source may first forwardInterfaces and themulticast packetunicast addresses assigned tothe MPL seed using IPv6-in-IPv6 tunneling. Becausethose MPLstate requirements grows withInterfaces. o The Domain Set records thenumberset ofactiveMPLseeds, limitingDomain Addresses and thenumber oflocal MPLseeds reduces the amount of stateInterfaces that subscribe to those addresses. o The Seed Set records information about received MPLforwarders must maintain. Because MPL typically broadcasts/multicastsData Messages received from an MPLpackets out ofSeed. The Seed Set maintains the minimum sequence number that thesame interface on which they were received,MPLforwarders are likelyForwarder is willing to receive or has buffered in its Buffered Message Set. MPL uses the Seed Set and Buffered Message Set to determine when to accept an MPLmulticast packet more than once.Data Message, process its payload, and retransmit it. o The Buffered Message Set records recently received MPLseed tags each original multicast packet withData Messages from an MPLseed identifier and a sequence number. TheSeed. MPL Data Messages resident in the Buffered Message Set have sequencenumber provides a total ordering ofnumbers that are greater than or equal to the minimum threshold maintained in the Seed Set. MPLmulticast packets disseminateduses the Buffered Message Set to store MPL Data Messages that may be transmitted by the MPLseed.Forwarder for forwarding. 4.2. Overview MPLdefinesachieves its goal by implementing anew IPv6 Hop-by-Hop Option,controlled flood that attempts to disseminate theMPL Option,multicast data message toinclude MPL-specific information along withall interfaces within an MPL Domain. MPL performs theoriginalfollowing tasks to disseminate a multicastpacket. Each IPv6message: o When having a multicastpacket thatmessage to forward into an MPLdisseminatesDomain, the MPL Seed generates an MPL Data Message that includes the MPLOption. BecauseSeed Identifier, a newly generated sequence number, and theoriginalmulticastpacket's source andmessage. If theMPL seed maymulticast destination address is notbe the same device,the MPLOption may be added to the original multicast packet en-route. To allow Path MTU discoveryDomain Address, IP-in-IP [RFC2473] is used towork properly, MPL encapsulatesencapsulate theoriginalmulticastpacketmessage inanother IPv6 header that includesthe MPLOption.Data Message. o Upon receivinga newan MPLmulticast packet for forwarding,Data Message, the MPLforwarder may proactively transmitForwarder extracts the MPLmulticast packet packet a limitedSeed and sequence numberof timesandthen falls back into an optional reactive mode. In maintenance mode, andetermines whether or not the MPLforwarder buffers recentlyData Message was previously receivedMPL multicast packetsusing the Seed Set andadvertisesBuffered Message Set. * If the sequence number is less than the lower-bound sequence number maintained in the Seed Set or asummary of recentlymessage 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 MPLmulticast packets from time to time, allowing neighboringData Message, an MPLforwardersForwarder 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 todetermine if they have any newforward the message. o Each MPL Forwarder may periodically link-local multicastpacketsMPL Control Messages on MPL Interfaces tooffer or receive.communicate information contained in the MPLforwarders schedule their packet (controlForwarder's Seed Set anddata) transmissions using the Trickle algorithm [RFC6206]. Trickle's adaptive transmission interval allowsBuffered Message Sets. o Upon receiving an MPLto quickly disseminate messages whenControl Message, an MPL Forwarder determines whether there are any new MPLmulticast packets, but reduces transmission overhead asData Messages that have yet to be received by thedissemination process completes. Trickle's suppression mechanismMPL Control Message's source andtransmission time selection allowmulticasts those MPL Data Messages. MPL'scommunication rateconfiguration parameters allow two forwarding strategies for disseminating MPL Data Messages. 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 toscale logarithmically with density. 4.receive the message. After transmitting the MPL Data MessageFormats 4.1.a limited number of times, the MPLOption Theforwarder may terminate proactive forwarding for the MPLOption is carried inData Message message. Reactive Forwarding - With reactive forwarding, anIPv6 Hop-by-Hop Options header, immediately following the IPv6 header. TheMPLOption hasForwarder link-local multicasts MPL Control Messages using thefollowing 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 | OptTrickle algorithm [RFC6206]. MPL Forwarders use MPL Control Messages to discover new MPL DataLen | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | S |M| rsv | sequence | seed-id (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Option Type XX (to be confirmed by IANA). OptMessages that have not yet been received. When discovering that a neighboring MPL Forwarder has not yet received a new MPL DataLen Length ofMessage, theOptionMPL Forwarder schedules those MPL Datafield in octets. MUST be set to either 2 or 4. S 2-bit unsigned integer. IdentifiesMessages for transmission using thelength of seed-id. 0 indicates thatTrickle algorithm. 4.3. Signaling Overview This protocol generates and processes theseed-idfollowing messages: MPL Data Message - Generated by an MPL Seed to deliver a multicast message across an MPL Domain. The MPL Data Message's source is0 and not includedan address in the Local Interface Set of the MPLOption. 1 indicatesSeed that generated theseed-idmessage and isa 16-bit unsigned integer. 2 indicates thatvalid within theseed-idMPL Domain. The MPL Data Message's destination isa 64-bit unsigned integer. 3 indicates thattheseed-id is a 128- bit unsigned integer. M 1-bit flag. 0 indicates thatMPL Domain Address corresponding to thevalue in sequence is notMPL Domain. An MPL Data Message contains: * The Seed Identifier of thegreatest sequence numberMPL Seed thatwas received fromgenerated the MPLseed. rsv 5-bit reserved field. MUST be set to zero and incoming MPL multicast packets in which they are not zero MUST be dropped.Data Message. * The sequence8-bit unsigned integer. Identifies relative orderingnumber ofMPL multicast packets from the source identified by seed-id. seed-id Uniquely identifiesthe MPLseedSeed thatinitiated dissemination ofgenerated the MPLmulticast packet.Data Message. * Thesize of seed-id is indicatedoriginal multicast message. MPL Control Message - Generated by an MPL Forwarder to communicate information contained in theS field. The Option DataSeed Set and Buffered Message Set to neighboring MPL Forwarders. An MPL Control Message contains a list of tuples for each entry in theTrickle Multicast option MUST NOT change asSeed Set. Each tuple contains: * The minimum sequence number maintained in the Seed Set for the MPLmulticast packet is forwarded. Nodes that do not understandSeed. * A bit-vector indicating theTrickle Multicast option MUST discardsequence numbers of MPL Data Messages resident in thepacket. Thus, according to [RFC2460]Buffered Message Set for thethree high order bits ofMPL Seed, where theOption Type must be setfirst bit represents a sequence number equal to'010'.the minimum threshold maintained in the Seed Set. * TheOption Datalengthis variable. The seed-id uniquely identifies an MPL seed withinof the bit-vector. 5. MPLdomain. When seed-id is 128 bits (S=3), theConstants This section describes various program and networking constants used by MPL. 5.1. Multicast Addresses MPLseed MAYmakes usean IPv6 address assigned to oneofits interfaces that is unique within theMPLdomain. ManagingDomain Addresses to identify MPLseed identifiers is not within scope of this document. The sequence field establishes a total orderingInterfaces of an MPLmulticast packets from the same MPL seed. TheDomain. By default, MPLseed MUST incrementForwarders subscribe to thesequence field'sALL_MPL_FORWARDERS multicast address with a scope valueonof 3 (subnet- local). For eachnewMPLmulticast packetDomain Address thatit disseminates. Implementationsan MPL Interface subscribes to, the MPL Interface MUSTfollowalso subscribe to theSerial Number Arithmetic as defined in [RFC1982] when incrementingMPL Domain Address with asequencescope valueor comparing two sequence values. Future updates to this specification may define additional fields followingof 2 (link-local) when reactive forwarding is in use. MPL Forwarders use theseed-id field. 4.2. ICMPv6link-scoped MPLMessage The MPL forwarder uses ICMPv6Domain Address to communicate MPLmessagesControl Messages toadvertise information about recently receivedneighboring (i.e. on-link) MPLmulticast packets. The ICMPv6Forwarders. 5.2. Message Types MPLmessage 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | .defines an IPv6 Option for carrying an MPLWindow[1..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IP Fields: Source Address A link-local address assigned to the sending interface. Destination Address The link-local all-nodesSeed Identifier and a sequence number within an MPLforwarders multicast address (FF02::TBD). Hop Limit 255 ICMPv6 Fields: Type XX (to be confirmed by IANA). Code 0 ChecksumData Message. TheICMP checksum. See [RFC4443]. MPL Window[1..n] List of one or more MPL Windows (defined in Section 4.2.1). AnIPv6 Option Type has value MPL_OPT_TYPE. MPLforwarder transmitsdefines an ICMPv6MPL message to advertiseMessage (MPL Control Message) for communicating informationabout buffered MPL multicast packets. More explicitly, the ICMPv6 MPL message encodes the sliding window state (describedcontained inSection 5.2) that the MPL forwarder maintains for each MPL seed. The advertisement serves to indicateits Seed Set and Buffered Message Set to neighboring MPLforwarders regarding newer messagesForwarders. The MPL Control Message has ICMPv6 Type MPL_ICMP_TYPE. 5.3. MPL Forwarder Parameters PROACTIVE_FORWARDING A boolean value thatit may send orindicates whether theneighboringMPLforwarders have yet to receive. 4.2.1. MPL Window AnForwarder should schedule MPLWindow encodesData Message transmissions after receiving them for thesliding window state (describedfirst time. SEED_SET_LIFETIME The minimum lifetime for an entry inSection 5.2 thattheMPL forwarder maintainsSeed Set. 5.4. Trickle Parameters As specified in [RFC6206], a Trickle timer runs foran MPL seed. Each MPL Windowa defined interval and has three configuration parameters: thefollowingminimum 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. Each MPL forwarder maintains a separate Trickle parameter set for MPL Data Message and MPL Control Message transmissions. The Trickle parameters are listed below: DATA_MESSAGE_IMIN The minimum Trickle timer interval, as defined in [RFC6206], for MPL Data Message transmissions. DATA MESSAGE_IMAX The maximum Trickle timer interval, as defined in [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_K The redundancy constant, as defined in [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer expirations that occur before terminating the Trickle algorithm for MPL Data Message transmissions. CONTROL_MESSAGE_IMIN The minimum Trickle timer interval, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_IMAX The maximum Trickle timer interval, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_K The redundancy constant, as defined in [RFC6206], for MPL Control Message transmissions. CONTROL_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer expirations that occur before terminating the Trickle algorithm for MPL Control Message transmissions. It is RECOMMENDED that all MPL Forwarder within an MPL Domain use the same values for the Trickle Parameters above, as specified in [RFC6206]. 6. Protocol Message Formats The protocol 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 |w-minOpt Data Len |w-len+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | S |M|V| rsv | sequence | seed-id(0, 2 or 16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |(optional) |. buffered-mpl-packets (0 to 8 octets) . . .+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+w-min 8-bit unsigned integer. Indicates the first sequence number associated with the first bit in buffered-mpl-packets. w-len 6-bit unsigned integer. Indicates the sizeOption Type MPL_OPT_TYPE Opt Data Len Length of thesliding window and the number of valid bitsOption Data field inbuffered-mpl-packets. The sliding window's upper bound is the sum of w-min and w-len.octets. S 2-bit unsigned integer. Identifies the length of seed-id. 0 indicates that the seed-idvalueis0the IPv6 Source Address and not included in the MPL Option. 1 indicates that the seed-idvalueis a 16-bit unsigned integer. 2 indicates that the seed-idvalueis a128-bit64-bit unsigned integer. 3is reserved.indicates that the seed-idIndicatesis a 128-bit unsigned integer. M 1-bit flag. 1 indicates that the value in sequence is known to be the largest sequence number that was received from the MPLseed associated with this sliding window. buffered-mpl-packets Variable-length bit vector. IdentifiesSeed. V 1-bit flag. 0 indicates that the MPL Option conforms to this specification. MPL Options received in which this flag is 1 MUST be dropped. rsv 4-bit reserved field. MUST be set to 0 on transmission and ignored on reception. sequencenumbers8-bit unsigned integer. Identifies relative ordering of MPLmulticast packetsData Messages from the MPL Seed identified by seed-id. seed-id Uniquely identifies the MPL Seed that initiated dissemination of the MPLforwarder has buffered.Data Message. Thesequence numbersize of seed-id isdeterminedindicated byw-min + i, where i istheoffset within buffered-mpl-packets.S field. The Option Data (in particular the M flag) of the MPLWindow does not have any octet alignment requirement. 5.Option is updated by MPLForwarder Behavior AnForwarders as the MPLforwarder implementation needs to manage sliding windows for each activeData Message is forwarded. Nodes that do not understand the MPLseed. The sliding window allowsOption MUST discard the MPLforwarder to determine what multicast packetsData Message. Thus, according toaccept and what multicast packets[RFC2460] the three high order bits of the Option Type arebuffered. An MPL forwarder must also manage MPL packet transmissions. 5.1. Multicast Packet Dissemination MPL uses the Trickle algorithmset tocontrol packet transmissions when disseminating MPL multicast packets [RFC6206]. MPL provides two propagation mechanisms for disseminating MPL multicast packets. 1. With proactive propagation,'011'. The Option Data length is variable. The seed-id uniquely identifies an MPLforwarder transmits buffered MPL multicast packets using the Trickle algorithm. This methodSeed. When seed-id iscalled proactive propagation since128 bits (S=3), the MPL seed MAY use an IPv6 address assigned to one of its interfaces that is unique within the MPLforwarder actively transmitsdomain. Managing MPLmulticast packets without discovering thatSeed Identifiers is not within scope of this document. The sequence field establishes aneighboringtotal ordering of MPLforwarder has yet to receive the message. 2. With reactive propagation,Data Messages generated by an MPLforwarder transmits ICMPv6 MPL messages using the Trickle algorithm. AnSeed for an MPLforwarder only transmits bufferedDomain. The MPLmulticast packets upon discovering that neighboring devices have not yet to receiveSeed MUST increment thecorresponding MPL multicast packets. When receiving asequence field's value on each newmulticast packet, an MPL forwarder first utilizes proactive propagation to forward theMPLmulticast packet. Proactive propagation reduces dissemination latency since it does not require discoveringData Message thatneighboring devices have not yet received the MPL multicast packet. MPL forwarders utilize proactive propagationit generates fornewly received MPL multicast packets since they can assume that some neighboringan MPLforwarders have yet to receiveDomain. Implementations MUST follow theMPL multicast packet. AfterSerial Number Arithmetic as defined in [RFC1982] when incrementing alimited number of MPL multicast packet transmissions, the MPL forwardersequence value or comparing two sequence values. Future updates to this specification mayterminate proactive propagation fordefine additional fields following the seed-id field. 6.2. MPLmulticast packet.Control Message An MPLforwarder may optionally use reactive propagationForwarder uses ICMPv6 messages to communicate information contained in its Seed Set and Buffered Message Set tocontinue the dissemination process with lower communication overhead. With reactive propagation,neighboring MPLforwarders use ICMPv6Forwarders. The MPLmessagesControl 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[1..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IP Fields: Source Address A link-local address assigned todiscover newthe sending interface. Destination Address The link-scoped MPLmulticast messagesDomain Address corresponding to the MPL Domain. Hop Limit 255 ICMPv6 Fields: Type MPL_ICMP_TYPE Code 0 Checksum The ICMP checksum. See [RFC4443]. MPL Seed Info[1..n] List of one or more MPL Seed Info entries. The MPL Control Message indicates the sequence numbers of MPL Data Messages thathave not yet been received. When discoveringare within the Buffered Message Set. The MPL Control Message also indicates the sequence numbers of MPL Data Messages thataan MPL Forwarder is willing to receive. The MPL Control Message allows neighboring MPLforwarder has not yet received aForwarders to determine whether there are any new MPLmulticast packet, theData Messages to exchange. 6.3. MPLforwarder enables proactive propagation again. 5.1.1. Trickle Parameters and Variables As specified in RFC 6206 [RFC6206], a Trickle timer runs for a defined interval and has three configuration parameters:Seed Info An MPL Seed Info encodes the minimuminterval size Imin,sequence number for themaximum interval size Imax, and a redundancy constant k.MPLdefines a fourth configuration parameter, TimerExpirations, whichSeed maintained in the Seed Set. The MPL Seed Info also indicates thenumbersequence numbers ofTrickle timer expiration events that occur before terminatingMPL Data Messages generated by theTrickle algorithm. EachMPLforwarder maintains a separate Trickle parameter set forSeed within theproactive and reactive propagation methods. TimerExpirations MUST be greater thanBuffered Message Set. The MPL Seed Info has the following format: 0for proactive propagation. TimerExpirations MAY be set to1 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) . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ min-seqno 8-bit unsigned integer. The lower-bound sequence number forreactive propagation, which effectively disables reactive propagation. As specified in RFC 6206 [RFC6206], a Trickle timer has three variables: the current interval size I, a time withinthecurrent interval t, and a counter c.MPLdefines a fourth variable, e, which countsSeed. bm-len 6-bit unsigned integer. The size of buffered- mpl-messages in octets. S 2-bit unsigned integer. Identifies thenumberlength ofTrickle timer expiration events sinceseed-id. 0 indicates that theTrickle timer was last reset. 5.1.2. Proactive Propagation With proactive propagation,seed-id value is theMPL forwarder transmits buffered MPL multicast packets usingIPv6 Source Address and not included in theTrickle algorithm. Each bufferedMPLmulticast packetSeed Info. 1 indicates that the seed-id value isproactively being disseminated with proactive propagation has an associated Trickle timer. Adhering to Section 5 of RFC 6206 [RFC6206], this document definesa 16-bit unsigned integer. 2 indicates that thefollowing: o This document definesseed-id value is a"consistent" transmission for proactive propagation as receiving an MPL multicast packet64-bit unsigned integer. 3 indicates thathasthesame MPL seed identifier and sequence number asseed-id is abuffered128-bit unsigned integer. seed-id Variable-length unsigned integer. Indicates the MPLpacket. o This document defines an "inconsistent" transmission for proactive propagation as receiving anSeed associated with this MPLmulticast packet that hasSeed Info. buffered-mpl-messages Variable-length bit vector. Identifies thesamesequence numbers of MPLseed identifier,Data Messages maintained in theM flag set, and has aBuffered Message Set for the MPL Seed. The sequence numberless thanis determined by min-seqno + i, where i is thebufferedbit offset within buffered-mpl- messages. The MPLmulticast packet's sequence number. o This documentSeed Info does notdefinehave anyexternal "events". o This document defines bothoctet alignment requirement. 7. Information Base 7.1. Local Interface Set The Local Interface Set records the local MPLmulticast packets and ICMPv6Interfaces of an MPLmulticast packets as Trickle messages. These messages are defined inForwarder. The Local Interface Set consists of Local Interface Tuples, one per MPL Interface: (AddressSet). AddressSet - a set of unicast addresses assigned to thesections below. oMPL Interface. 7.2. Domain Set Theactions outsideDomain Set records theTrickle algorithmMPL Interfaces thatthe protocol takes involve managing sliding window state, and is specified in Section 5.2. 5.1.3. Reactive Propagation With reactive propagation, thesubscribe to each MPLforwarder transmits ICMPv6Domain Address. The Domain Set consists of MPLmessages using the Trickle algorithm. ADomain Tuples, one per MPLforwarder maintainsDomain: (MPLInterfaceSet). MPLInterfaceSet - asingle Trickle timer for reactive propagation with eachset of MPLdomain. When REACTIVE_TIMER_EXPIRATIONS is 0,Interfaces that subscribe to the MPLforwarder does not executeDomain Address that identifies theTrickle algorithm for reactive propagation and reactive propagationMPL Domain. 7.3. Seed Set The Seed Set records a sliding window used to determine the sequence numbers of MPL Data Messages that an MPL Forwarder isdisabled. Adheringwilling toSection 5accept generated by the MPL Seed. It consists ofRFC 6206 [RFC6206], this document definesMPL Seed Tuples: (SeedID, MinSequence, Lifetime). SeedID - thefollowing: o This document defines a "consistent" transmissionidentifier forreactive propagation as receiving an ICMPv6the MPLmessageSeed. MinSequence - a lower-bound sequence number thatindicates neither the receiving nor transmitting node has new MPL multicast packets to offer. o This document defines an "inconsistent" transmission for reactive propagation as receiving an ICMPv6 MPL message that indicates either the receiving or transmitting node has at least one new MPL multicast packet to offer. o This document defines an "event" for reactive propagation as updating any sliding window (i.e. changing the value of WindowMin, WindowMax, or the set of buffered MPL multicast packets) in response to receiving an MPL multicast packet. o This document defines both MPL multicast packets and ICMPv6 MPL multicast packets as Trickle messages. These messages are defined in the sections below. o The actions outside the Trickle algorithm that the protocol takes involve managing sliding window state, and is specified in Section 5.2. 5.2. Sliding Windows Every MPL forwarder MUST maintain a sliding window of sequence numbers for each MPL seed of recently received MPL packets. The sliding window performs two functions: 1. Indicate what MPL multicast packets the MPL forwarder should accept. 2. Indicate what MPL multicast packets are buffered and may be transmitted to neighboring MPL forwarders. Each sliding window logically consists of: 1. A lower-bound sequence number, WindowMin, that representsrepresents the sequence number of the oldest MPLmulticast packetData Message the MPLforwarderForwarder is willing to receive orhas buffered.transmit. An MPLforwarderForwarder MUST ignore any MPLmulticast packetData Message that has sequence value less than thanWindowMin. 2. An upper-bound sequence value, WindowMax, that represents the sequence number of the next MPL multicast packet that the MPL forwarder expects to receive. An MPL forwarder MUST accept any MPL multicast packet that has sequence number greater than or equal to WindowMax. 3. A list of MPL multicast packets, BufferedPackets, buffered by the MPL forwarder. Each entry in BufferedPackets MUST have a sequence number in the range [WindowMin, WindowMax). 4. A timer, HoldTimer, thatMinSequence. Lifetime - indicates the minimum lifetime of thesliding window. TheSeed Set entry. An MPLforwarderForwarder MUST NOT free asliding windowSeed Set entry beforeHoldTimerits expires.When receiving7.4. Buffered Message Set The Buffered Message Set records recently received MPL Data Messages from an MPLmulticast packet, if no existing sliding window exists forSeed. An MPL Forwarder uses the Buffered Message Set to buffer MPLseed,Data Messages while the MPLforwarder MUST create a new sliding window before acceptingForwarder is forwarding the MPLmulticast packet.Data Messages. TheMPL forwarder may reclaim memory resources by freeing a sliding windowBuffered Message Set consists of Buffered Message Tuples: (SeedID, SequenceNumber, DataMessage). SeedID - the identifier foranotherthe MPLseed if its HoldTimer has expired. If, for any reason,Seed that generated the MPLforwarder cannot create a new sliding window, it MUST discardData Message. SequenceNumber - thepacket. If a sliding window existssequence number for the MPLseed,Data Message. DataMessage - the MPLforwarder MUST ignore theData Message. All MPLmulticast packet ifData Messages within thepacket'sBuffered Message Set MUST have a sequence numberis lessgreater thanWindowMin or appears in BufferedPackets. Otherwise, the MPL forwarder MUST accept the packet and determine whetherornot to forward the packet and/or pass the packetequal to MinSequence for thenext higher layer.corresponding SeedID. Whenacceptingincreasing MinSequence for an MPLmulticast packet,Seed, the MPLforwarderForwarder MUSTupdate the sliding window based on the packet's sequence number. Ifdelete any MPL Data Messages from the Buffered Message Set that have sequencenumber is notnumbers less thanWindowMax, theMinSequence. 8. MPLforwarder MUST set WindowMax to 1 greater than the packet's sequence number. If WindowMax - WindowMin > MPL_MAX_WINDOW_SIZE, theDomains An MPLforwarder MUST increment WindowMin such that WindowMax - WindowMin <= MPL_MAX_WINDOW_SIZE. AtDomain is a scope zone, as defined in [RFC4007], in which MPL Interfaces subscribe to the sametime, theMPLforwarder MUST free any entriesDomain Address and participate inBufferedPackets that have a sequence number less than WindowMin. If thedisseminating MPLforwarder has available memory resources, itData Messages. By default, an MPL Forwarder MUSTbufferparticipate in an MPL Domain identified by the ALL_MPL_FORWARDERS multicast address with a scope value of 3 (subnet-local). An MPL Forwarder MAY participate in additional MPL Domains identified by other multicastpacket for proactive propagation. If not enough memory resources are availableaddresses. An MPL Interface MUST subscribe tobufferthepacket,MPL Domain Addresses for the MPLforwarder MUST increment WindowMin and free entries in BufferedPacketsDomains thathave a sequence number less than WindowMin until enough memory resources are available. Incrementing WindowMin will ensureit participates in. The allocation of other multicast addresses is out of scope. For each MPL Domain Address thatthean MPLforwarder does not accept previously received packets. AnInterface subscribes to, the MPLforwarder MAY reclaim memory resources from sliding windows for otherInterface MUST also subscribe to the same MPLseeds. IfDomain Address with asliding window for another MPL seedscope value of 2 (link-local) when reactive forwarding isactively disseminating messages and has more than one entryinits BufferedPackets, theuse (i.e. when communicating MPLforwarder may free entriesControl Messages). 9. MPL Seed Sequence Numbers Each MPL Seed maintains a sequence number for each MPL Domain that it serves. The sequence numbers are included in MPLseedData Messages generated byincrementing WindowMin as described above. If the MPL forwarder cannot free enough memory resources to bufferthe MPLmulticast packet, theSeed. The MPLforwarderSeed MUSTset WindowMin to 1 greater thanincrement thepacket'ssequencenumber. When memory resources are available, an MPL forwarder SHOULD buffer anumber for each MPLmulticast packet until the proactive propagation completes (i.e. the Trickle algorithm stops execution) and MAY bufferData Message that it generates forlonger. After proactive propagation completes, thean MPLforwarder may advance WindowMin toDomain. Implementations MUST follow thepacket'sSerial Number Arithmetic as defined in [RFC1982] when incrementing a sequence value or comparing two sequence values. This sequence number is used toreclaim memory resources. When theestablish a total ordering of MPLforwarder no longer buffers any packets, it MAY set WindowMin equal to WindowMax. When setting WindowMin equal to WindowMax, theData Messages generated by an MPLforwarder MUST initialize HoldTimer to WINDOW_HOLD_TIME and start HoldTimer. After HoldTimer expires, theSeed for an MPLforwarder MAY free the sliding window to reclaim memory resources. 5.3. Transmission ofDomain. 10. MPLMulticast Packets TheData Messages 10.1. MPLforwarder manages bufferedData Message Generation MPLmulticast packet transmissions using the Trickle algorithm. When adding a packet to BufferedPackets,Data Messages are generated by MPL Seeds when they enter the MPLforwarderDomain. All MPL Data messages have the following properties: o The IPv6 Source Address MUSTcreate a Trickle timer forbe an address in thepacket and start executionAddressSet ofthe Trickle algorithm. After PROACTIVE_TIMER_EXPIRATIONS Trickle timer events,a corresponding MPL Interface and MUST be valid within the MPLforwarderDomain. o The IPv6 Destination Address MUSTstop executingbe set to theTrickle algorithm. When a bufferedMPLmulticast packet does not haveDomain Address corresponding to the MPL Domain. o A MPL Data Message MUST contain anactive Trickle timer,MPL Option in its IPv6 Header to identify the MPLforwarder MAY freeSeed that generated thebuffered packet by advancing WindowMinmessage and the ordering relative to1 greater thanother MPL Data Messages generated by thepacket's sequence number. Each interface that supportsMPL Seed. When the source address isconfigured with exactly onein the AddressList of an MPLmulticast scope. TheInterface corresponding to the MPLmulticast scope MUST be site-local or smallerDomain Address anddefaults to link-local. A scope larger than link-local MAY be used only when that scope corresponds exactly tothe destination address is the MPLdomain. AnDomain Address, the application message and the MPLdomain may thereforeData Message MAY becomposed of one or more MPL multicast scopes. For example,identical. In other words, the MPLdomainData Message maybe composed ofcontain a singleMPL multicast scope when using a site-local scope. Alternatively,IPv6 header that includes the MPLdomain may be composed of multiple MPL multicast scopes when using a link-local scope.Option. Otherwise, IPv6-in-IPv6 encapsulation MUST be usedwhen using MPL to forward an original multicast packet whose source or destination address is outside the MPL multicast scope. IPv6-in-IPv6 encapsulation is necessarytosupport Path MTU discovery whensatisfy the MPLforwarder is not the source of the original multicast packet. IPv6-in-IPv6 encapsulation also allowsData Message requirements listed above [RFC2473]. The complete IPv6- in-IPv6 message forms an MPLforwarderData Message. The outer IPv6 header conforms toremovethe MPLOption when forwarding the original multicast packet over a link that does not support MPL.Data Message requirements listed above. Thedestination address scope for the outerencapsulated IPv6header MUST bedatagram encodes theMPLmulticastscope. When an MPL domaindata message that iscomposed of multiple MPL multicast scopes (e.g. whencommunicated beyond the MPLmulticast scope is link-local), an MPL forwarder MUST decapsulate and encapsulate the original multicast packet when crossing between differentDomain. 10.2. MPLmulticast scopes. In doing so, theData Message Transmission An MPLforwarder MUST duplicate theForwarder manages transmission of MPLOption, unmodified,Data Messages in thenew outer IPv6 header. The IPv6 destination address ofBuffered Message set using the Trickle algorithm [RFC6206]. An MPLmulticast packetForwarder MUST use a separate Trickle timer for each MPL Data Message that it isthe all- MPL-forwarders multicast address (TBD). The scopeactively forwarding. In accordance with Section 5 of RFC 6206 [RFC6206], this document defines theIPv6 destination address is set to the MPL multicast scope. 5.4. Reception of MPL Multicast Packets Uponfollowing: o This document defines a "consistent" transmission as receiving an MPLmulticast packet, the MPL forwarder first determines whether or not to accept and bufferData Message that has theMPL multicast packet based on its MPL seedsame seed-id and sequencevalue,value asspecified in Section 5.2. If the MPL forwarder acceptsthe MPLmulticast packet,Data Message managed by the Trickle timer. o This document defines an "inconsistent" transmission as receiving an MPLforwarder determines whether or not to deliver the original multicast packet to the next higher layer. For example, ifData Message that has theMPL multicast packet uses IPv6-in-IPv6 encapsulation,same seed-id value and the M flag set, but has a sequence value less than MPLforwarder removesData Message managed by theouter IPv6 header, which also removes MPL Option. 5.5. Transmission of ICMPv6Trickle timer. o This document does not define any external "events". o This document defines MPL Data Messages as Trickle messages. o TheMPL forwarder generatesactions outside the Trickle algorithm that the protocol takes involve managing Seed Set andtransmitsBuffered Message Set As specified in [RFC6206], anew ICMPv6 MPL message wheneverTricklerequeststimer has three variables: the current interval size I, atransmission. Thetime within the current interval t, and a counter c. MPLforwarder includes an encodingdefines a fourth variable, e, which counts the number ofeach sliding window inTrickle timer expiration events since theICMPv6 MPL message. Each sliding window is encoded using an MPL Window entry, defined in Section 5.2. The MPL forwarder setsTrickle timer was last reset. After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPLWindow fields as follows: S IfForwarder MUST disable the Trickle timer. When a buffered MPLseed identifier is 0, set S to 0. IfData Message does not have an associated Trickle timer, the MPLseed identifier is withinForwarder MAY delete therange [1, 65535], set S to 2. Otherwise, set S to 3. w-min Set tomessage from thelower boundBuffered Message Set by advancing MinSequence of thesliding window (i.e. WindowMin). w-len Set tocorresponding MPL Seed in thelength ofSeed Set. When thewindow (i.e. WindowMax - WindowMin). seed-id If S is non-zero, set toMPL Forwarder no longer buffers any messages for an MPL Seed, the MPLseed identifier. buffered-mpl-packets Set each bitForwarder MUST NOT increment MinSequence for thatrepresents a sequence number of a packet in BufferedPacketsMPL Seed. When transmitting an MPL Data Message, the MPL Forwarder MUST either set the M flag to1. Set all other bitszero or set it to0. The i'th bit in buffered-mpl-packets representsa level that indicates whether or not the message's sequence numberof w-min + i. 5.6. Reception of ICMPv6is the largest value that has been received from the MPLMessages AnSeed. 10.3. MPLforwarder processes each ICMPv6Data Message Processing Upon receiving an MPLmessage that it receives to determine if it has any new MPL multicast packets to receive or offer. AnData Message, the MPLforwarder determines if a newForwarder first processes the MPLmulticast packet has not been received from a neighboring node if any ofOption and updates the Trickle timer associated with thefollowing conditions hold true: 1. The ICMPv6MPLmessage includesData Message if one exists. Upon receiving an MPLWindow forData Message, an MPLseed that does not have a corresponding sliding window entry onForwarder MUST perform one of the following actions: o Accept the message and enter the MPLforwarder. 2. The neighbor has a packet in its BufferedPackets that has sequence value greater than or equal to WindowMax (i.e. w-min + w-len >= WindowMax). 3. The neighbor has a packetData Message inits BufferedPackets that has sequence number within range ofthesliding window but is not included in BufferedPackets (i.e.Buffered Message Set. o Accept thei'th bitmessage and update the corresponding MinSequence inbuffered-mpl- packets is setthe Seed Set to1, where1 greater than the message's sequencenumber is w-min + i). When annumber. o Discard the message without any change to the MPLforwarder determines that it has not yet receivedInformation Base. If anewSeed Set entry exists for the MPLmulticast packet buffered by a neighboring device,Seed, the MPLforwarder resetsForwarder MUST discard theTrickle timer associated with reactive propagation. AnMPLforwarder determinesData Message ifan entryits sequence number is less than MinSequence or exists inBufferedPackets has not been received by a neighboring MPL forwarder if any ofthefollowing conditions hold true: 1. The ICMPv6 MPL messageBuffered Message Set. If a Seed Set entry does notinclude an MPL Windowexist for thepacket'sMPLseed. 2. The packet's sequence number is greater than or equal toSeed, theneighbor's WindowMax value (i.e.MPL Forwarder MUST create a new entry for thepacket's sequence number is greater than or equal to w-min + w-len). 3. The packet's sequence number is withinMPL Seed before accepting therange ofMPL Data Message. If memory is limited, an MPL Forwarder SHOULD reclaim memory resources by: o Incrementing MinSequence entries in theneighbor's sliding window [WindowMin, WindowMax), but not includedSeed Set and deleting MPL Data Messages in theneighbor's BufferedPacket (i.e.Buffered Message Set that fall below thepacket's sequence number is greater than or equal to w-min, strictly less than w-min + w-len,corresponding MinSequence value. o Deleting other Seed Set entries that have expired and the correspondingbit in buffered-mpl- packets is set to 0. When an MPL forwarder determines that it has at least one bufferedMPLmulticast packet that has not yet been received by a neighbor,Data Messages in the Buffered Message Set. If the MPLforwarder resetsForwarder accepts theTrickle timer associated with reactive propagation. Additionally, for each bufferedMPLmulticast packet that should be transferred,Data Message, the MPLforwarderForwarder MUSTresetperform the following actions: o If PROACTIVE_PROPAGATION is true, the MPL Forwarder MUST initialize and start a Trickle timerand reset e to 0forproactive propagation.the MPL Data Message. o If the MPL Control Message Trickle timerfor proactive propagation has already stopped execution,is not running and CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero, the MPLforwarderForwarder MUST initializea new Trickle timerand startexecution oftheTrickle algorithm. 6. MPL Parameters AnMPLforwarder maintains two sets ofControl Message Trickleparameters fortimer. o If theproactive and reactive methods. The Trickle parameters are listed below: PROACTIVE_IMIN The minimum Trickle timer interval, as defined in [RFC6206] for proactive propagation. PROACTIVE_IMAX The maximum Trickle timer interval, as defined in [RFC6206] for proactive propagation. PROACTIVE_K The redundancy constant, as defined in [RFC6206] for proactive propagation. PROACTIVE_TIMER_EXPIRATIONS The number ofMPL Control Message Trickle timerexpirations that occur before terminatingis running, theTrickle algorithm.MPL Forwarder MUSTbe set to a value greater than 0. REACTIVE_IMIN The minimumreset the MPL Control Message Trickletimer interval, as defined in [RFC6206]timer. 11. MPL Control Messages 11.1. MPL Control Message Generation An MPL Forwarder generates MPL Control Messages to communicate its 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 for each entry in 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 MinSequence 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. 11.2. MPL Control Message Transmission An MPL Forwarder transmits MPL Control Messages using the Trickle algorithm. A 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], this document defines the following: o This document defines a "consistent" transmission as receiving an MPL Control Message that indicates neither the receiving nor transmitting node has new MPL Data Message. o This document defines an "inconsistent" transmission as receiving an MPL Control Message that indicates either the receiving or transmitting node has at least one new MPL Data Message to offer. o This document defines an "event" as increasing MinSequence of any entry in the Seed Set or adding a message to the 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. 11.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 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 Forwarder'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. 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 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 Buffered Message Set that has not yet been received by a neighbor, the MPL Forwarder MUST reset the MPL Control Message Trickle timer. Additionally, forreactive propagation. REACTIVE_IMAX The maximumeach of those entries in the Buffered Message Set, the MPL Forwarder MUST reset the Trickle timerinterval,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. 12. Acknowledgements The authors would like to acknowledge the helpful comments of Robert Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Ulrich Herberg, Owen Kirby, Joseph Reddy, Don Sturek, Dario Tedeschi, and Peter van der Stok, which greatly improved the document. 13. IANA Considerations This document defines one IPv6 Option, a type that must be allocated from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780]. This document defines one ICMPv6 Message, a type that must be allocated from the "ICMPv6 "type" Numbers" registry of [RFC4443]. This document registers two well-known multicast addresses from the IPv6 multicast address space. 13.1. MPL Option Type IANA is requested to allocate an IPv6 Option Type from the IPv6 "Destination Options and Hop-by-Hop Options" registry of [RFC2780], asdefinedspecified in[RFC6206] for reactive propagation. REACTIVE_K The redundancy constant,Table 1 below: +--------------+-----+-----+--------------+-------------+-----------+ | Mnemonic | act | chg | rest | Description | Reference | +--------------+-----+-----+--------------+-------------+-----------+ | MPL_OPT_TYPE | 01 | 1 | TBD | MPL Option | This | | | | | (suggested | | Document | | | | | value 01101) | | | +--------------+-----+-----+--------------+-------------+-----------+ Table 1: IPv6 Option Type Allocation 13.2. MPL ICMPv6 Type IANA is requested to allocate an ICMPv6 Type from the "ICMPv6 "type" Numbers" registry of [RFC4443], asdefinedspecified in[RFC6206] for reactive propagation. REACTIVE_TIMER_EXPIRATIONSTable 2 below: +---------------+------+---------------------+---------------+ | Mnemonic | Type | Name | Reference | +---------------+------+---------------------+---------------+ | MPL_ICMP_TYPE | TBD | MPL Control Message | This Document | +---------------+------+---------------------+---------------+ Table 2: IPv6 Option Type Allocation 13.3. Well-known Multicast Addresses IANA is requested to allocate an IPv6 multicast address "ALL_MPL_FORWARDERS" from the "Variable Scope Multicast Addresses" sub-registry of the "INTERNET PROTOCOL VERSION 6 MULTICAST ADDRESSES" registry. 14. Security Considerations MPL uses sequence numbers to maintain a total ordering of MPL Data Messages from an MPL Seed. Thenumberuse ofTrickle timer expirations that occur before terminatingsequence 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 theTrickle algorithm. MAY be set to 0, which disables reactive propagation. WINDOW_HOLD_TIME The minimum lifetimeBuffered Message List and (ii) increase the MinSequence value forsliding window state. 7. Acknowledgementsan MPL Seed in the Seed Set. Theauthors would likeformer side effect allows an attacker toacknowledgehalt thehelpful commentsforwarding process ofRobert Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Owen Kirby, Joseph Reddy, Dario Tedeschi, and Peter van der Stok, which greatly improved the document. 8. IANA Considerationsany MPL Data Messages being disseminated. TheTrickle Multicast option requireslatter side effect allows anIPv6 Option Number. HEX act chg rest --- --- --- ----- C 01 0 TBD The first two bits indicateattacker to prevent MPL Forwarders from accepting new MPL Data Messages that an MPL Seed generates while theIPv6 node MUST discard the packet if it doesn't recognizesequence number is less than MinSequence. More generally, theoption type,basic ability to inject messages into a Low-power and Lossy Network can be used as a denial-of-service attack regardless of what forwarding protocol is used. For these reasons, Low-power and Lossy Networks typically employ link-layer security mechanisms to disable an attacker's ability to inject messages. To prevent attackers from injecting packets through an MPL Forwarder, thethird bit indicates that the Option DataMPL Forwarder MUST NOTchange en-route. 9. Security Considerations TODO. 10. References 10.1.accept or forward MPL Data Messages from a communication interface that does not subscribe to the MPL Domain Address identified in message's destination address. MPL uses the Trickle algorithm to manage message transmissions and the security considerations described in [RFC6206] apply. 15. Normative References [RFC1982] Elz, R. and R. Bush, "Serial Number Arithmetic", RFC 1982, August 1996. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, April 1998.[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", RFC 2460, December 1998. [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in IPv6 Specification", RFC 2473, December 1998. [RFC2780] Bradner, S. and V. Paxson, "IANA Allocation Guidelines For Values In the Internet Protocol and Related Headers", BCP 37, RFC 2780, March 2000. [RFC4007] Deering, S., Haberman, B., Jinmei, T., Nordmark, E., and B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, March 2005. [RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", RFC 4443, March 2006. [RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, "The Trickle Algorithm", RFC 6206, March 2011. [RFC6550] Winter, T., Thubert, P., 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, March 2012.10.2. Informative References [I-D.ietf-roll-terminology] Vasseur, J., "Terminology in Low power And Lossy Networks", draft-ietf-roll-terminology-06 (work in progress), September 2011.Authors' Addresses Jonathan W. Hui Cisco 170 West Tasman Drive San Jose, California 95134 USA Phone: +408 424 1547 Email: jonhui@cisco.com Richard Kelsey Silicon Labs 25 Thomson Place Boston, Massachusetts 02210 USA Phone: +617 951 1225 Email: richard.kelsey@silabs.com