ROLL J. Hui Internet-Draft Cisco Intended status: Standards Track R. Kelsey Expires:January 14,April 22, 2013 Silicon LabsJuly 13,October 19, 2012 MulticastForwarding Using Trickle draft-ietf-roll-trickle-mcast-01Protocol for Low power and Lossy Networks (MPL) draft-ietf-roll-trickle-mcast-02 Abstract This document specifies the Multicast Protocol for Low power and Lossy Networks(LLNs) are typically composed of resource constrained nodes communicating over links(MPL) thathave dynamic characteristics. Memory constraints coupled with temporal variations in link connectivity makes the use of topology maintenance to supportprovides IPv6 multicastchallenging. This document describesforwarding in constrained networks. MPL avoids theuse of Trickleneed toefficiently forwardconstruct or maintain any multicast forwarding topology, disseminating messageswithoutto all MPL forwarders in an MPL domain. MPL uses theneedTrickle algorithm to drive packet transmissions fortopology maintenance.both control and data-plane packets. Specific 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 onJanuary 14,April 22, 2013. Copyright Notice Copyright (c) 2012 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 . . . . . . . . . . . . . . . . . . . . . . . . . 31.1. Requirements Language2. Terminology . . . . . . . . . . . . . . . . . . . .3 2. Terminology. . . . . 4 3. Overview . . . . . . . . . . . . . . . . . . . . . .4 3. Overview. . . . . 5 4. Message Formats . . . . . . . . . . . . . . . . . . . . . .5 4. Trickle Multicast Parameters. 7 4.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . . 75.4.2. ICMPv6 MPL MessageFormats. . . . . . . . . . . . . . . . . . . . 8 4.2.1. MPL Window . . . . .9 5.1. Trickle Multicast Option. . . . . . . . . . . . . . . . . 95.2. Trickle ICMPv6 Message5. MPL Forwarder Behavior . . . . . . . . . . . . . . . . . .10 5.2.1. Sequence List. . 11 5.1. Multicast Packet Dissemination . . . . . . . . . . . . . . 11 5.1.1. Trickle Parameters and Variables . . . . . . . .11 6. Trickle Multicast Forwarder Behavior. . . 12 5.1.2. Proactive Propagation . . . . . . . . . . . . . . . . 126.1. Managing5.1.3. Reactive Propagation . . . . . . . . . . . . . . . . . 13 5.2. Sliding Windows . . . . . . . . . . . . . . . . .12 6.2. Trickle Timers. . . . 13 5.3. Transmission of MPL Multicast Packets . . . . . . . . . . 15 5.4. Reception of MPL Multicast Packets . . . . . . . . .12 6.3. Trickle Multicast Option Processing. . . 16 5.5. Transmission of ICMPv6 MPL Messages . . . . . . . . .13 6.4. Trickle ICMP Processing. . 16 5.6. Reception of ICMPv6 MPL Messages . . . . . . . . . . . . . 17 6. MPL Parameters . .13. . . . . . . . . . . . . . . . . . . . . . 19 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . .1520 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . .1621 9. Security Considerations . . . . . . . . . . . . . . . . . . .1722 10. References . . . . . . . . . . . . . . . . . . . . . . . . . .1823 10.1. Normative References . . . . . . . . . . . . . . . . . . .1823 10.2. Informative References . . . . . . . . . . . . . . . . . .1823 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .1924 1. IntroductionThe resource constraints ofLow 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 topology and forwarding mechanisms.Such networks are typically constrained in resources (limited channel capacity, processing power, energy capacity, memory). In particular memory constraints may limit nodes to maintaining state for only a small subset of neighbors. Limited channel and energy capacity require protocols to remain efficient and robust even in dense topologies.Traditional IP multicast forwarding typically relies on topology maintenance mechanisms toefficientlyforward multicast messages tothe intended destinations. In some cases, topology maintenance involves maintaining multicast trees to reachall subscribers of a multicast group.MaintainingHowever, maintaining such topologies in LLNs isdifficult especially when memorycostly and may not be feasible given the available resources. Memory constraintsare such that nodes can onlymay 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 defaultroute. Dynamicroutes towards a LLN Border Router (LBR) and use source routing to forward packets away from the LBR. For the same reasons, a LLN device may not be able to maintain a multicast forwarding topology when operating with limited memory. Furthermore, the dynamic properties of wireless networks can makecontrol trafficthe cost of maintaining a multicast forwarding 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 topologyinformation, which is more state than a LLN node may be able to handle.information and the cost of maintaining such information grows polynomially with network density. This documentdescribesspecifies theuse of TrickleMulticast Protocol for Low power and Lossy Networks (MPL), which provides IPv6 multicast forwarding inLLNs. Trickle provides a mechanism for controlled, density-aware flooding withoutconstrained networks. MPL avoids the need to construct or maintainaany multicast forwardingtopology [RFC6206]. 1.1. Requirements Languagetopology, 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", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].2. Terminology Trickle Multicast Message A IPv6 multicast datagram that includes a Trickle Multicast option in the IPv6 Hop-by-Hop Options header. Trickle Multicast Forwarder AThe following terms are used throughout this document: MPL forwarder An IPv6 router thatcan process a Trickle Multicast option and followssubscribes to theforwarding rules specifiedMPL multicast group and participates inthis document. Trickle Multicast Domain An administrative domaindisseminating MPL multicast packets. MPL multicast scope The multicast scope thatdefinesMPL uses when forwarding MPL multicast packets. In other words, the multicast scope ofTrickle dissemination. All routers within a Trickle Multicast Domain participate inthesame dissemination process. SeedIPv6 Destination Address of an MPL multicast packet. MPL domain A connected set of MPL forwarders that define the extent of the MPL dissemination process. As a form of flood, all MPL forwarders in an MPL domain will receive MPL multicast packets. TherouterMPL domain MUST be composed of at least one MPL multicast scope and MAY be composed of multiple MPL multicast scopes. MPL seed A MPL forwarder thatstartsbegins the dissemination process fora Tricklean MPL multicastmessage.packet. TheSeedMPL seed may be different than thenode identified by the IPv6 Source addresssource of the original multicastmessage. 3. Overview Tricklepacket. MPL seed identifier An identifier that uniquely identifies an MPL forwarder within its MPL domain. original multicastforwarding implements a controlled, density-aware flood to disseminate apacket An IPv6 multicastmessage to all nodes within a Trickle Multicast Domain. The basic processpacket that issimilar to traditional flooding - nodes forward newly received multicast messagesdisseminated usinglink-layer broadcasts. Nodes maintain state of recently receivedMPL. MPL multicastmessages to detect duplicates and ensurepacket An IPv6 multicast packet thateach node receives at most one copy of eachcontains an MPL Hop-by-Hop Option. When either source or destinations are beyond the MPL multicastmessage. Each Tricklescope, the MPL multicastmessage carries a Trickle Multicast optionpacket is an IPv6-in-IPv6 packet thatincludes a SeedIDcontains an MPL Hop-by-Hop Option in the outer IPv6 header andSequence value. The SeedID uniquely identifiesencapsulates an original multicast packet. When both source and destinations are within theSeed that initiatedMPL multicast scope, themessage's dissemination processMPL Hop-by-Hop Option may be included directly within theTrickle Multicast Domain. Note that the Seed does not haveoriginal multicast packet. 3. Overview MPL delivers IPv6 multicast packets by disseminating them tobeall MPL forwarders within an MPL domain. MPL dissemination is a form of flood. An MPL forwarder may broadcast/multicast an MPL multicast packet out of the samenode as the message's source. It is possiblephysical interface on which it was received. Using link-layer broadcast/multicast allows MPL totunnel aforward multicastmessagepackets without explicitly identifying next-hop destinations. An MPL forwarder may also broadcast/multicast MPL multicast packets out other interfaces toa Seed node and startdisseminate thedissemination process from amessage across differentnode within the Trickle Multicast Domain. The Sequence value establisheslinks. MPL does not build or maintain atotal ordering ofmulticastmessages disseminated by SeedID. Nodes maintain a sliding window of recently receivedforwarding topology to forward multicastmessagespackets. Any MPL forwarder may initiate the dissemination process by serving as an MPL seed foreach SeedID.an original multicast packet. Thesliding window establishes what messages canMPL seed may or may not bereceived and ensure at most one copythe same device as the source ofeachthe original multicastmessagepacket. When the original multicast packet's source isreceived. Messagesoutside the LLN, the MPL seed may be the ingress router. Even if an original multicast packet source is within the LLN, the source may first forward the multicast packet to the MPL seed using IPv6-in-IPv6 tunneling. Because MPL state requirements grows withsequence values lower thanthelower boundnumber of active MPL seeds, limiting thewindow MUST be ignored. Messagesnumber of MPL seeds reduces the amount of state that MPL forwarders must maintain. Because MPL typically broadcasts/multicasts MPL packets out of the same interface on which they were received, MPL forwarders are likely to receive an MPL multicast packet more than once. The MPL seed tags each original multicast packet with an MPL seed identifier and a sequencevalues stored withinnumber. The sequence number provides a total ordering of MPL multicast packets disseminated by thesliding window MUST be ignored. All other messages MUSTMPL seed. MPL defines a new IPv6 Hop-by-Hop Option, the MPL Option, to include MPL-specific information along with the original multicast packet. Each IPv6 multicast packet that MPL disseminates includes the MPL Option. Because the original multicast packet's source and the MPL seed may not bereceived, advancingthesliding window if necessary. Larger sequence values always take precedence. The sliding window cansame device, the MPL Option may beof variable size, trading memory requirementsadded to the original multicast packet en-route. To allow Path MTU discovery to work properly, MPL encapsulates the original multicast packet in another IPv6 header that includes the MPL Option. Upon receiving a new MPL multicast packet forreliabilityforwarding, the MPL forwarder may proactively transmit the MPL multicast packet packet a limited number ofdisseminating multiple messages simultaneously. Trickle's density-aware properties come from its suppression mechanism. When suppression is enabled, nodes periodically advertisetimes and then falls back into an optional reactive mode. In maintenance mode, an MPL forwarder buffers recently received MPL multicast packets and advertises a summary of recently received MPL multicastmessages. These advertisements allow nodespackets from time to time, allowing neighboring MPL forwarders to determine if they have anyadditional multicastsnew multicast packets to offerto neighboring nodes. A multicast message is only retransmitted upon receiving positive indication that a neighbor has not yet received that multicast message. Nodes suppress advertisement transmissionsor receive. MPL forwarders schedule their packet (control andmulticast retransmissions after recently receiving "consistent" advertisements. A node determines that a neighbor's advertisement is "consistent"data) transmissions using the Trickle algorithm [RFC6206]. Trickle's adaptive transmission interval allows MPL to quickly disseminate messages whenneither node hasthere are new MPL multicastmessages to offer to the other. The suppressionpackets, but reduces transmission overhead as thenumber of redundant transmissionsdissemination process completes. Trickle's suppression mechanism andis what allows Trickletransmission time selection allow MPL's communication rate tomaintain low channel utilizationscale logarithmically with density. 4. Message Formats 4.1. MPL Option The MPL Option is carried indense environments. However, suppression trades low control overhead for longer propagation times. When using suppression, Trickle's propagation times often have a long-tail distribution. Trickle providesanadaptive timer, calledIPv6 Hop-by-Hop Options header, immediately following theTrickle timer. When receiving an "inconsistent" advertisement, nodes resetIPv6 header. The MPL Option has theTrickle timer periodfollowing 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| rsv | sequence | seed-id (optional) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Option Type XX (to be confirmed by IANA). Opt Data Len Length of the Option Data field in octets. MUST be set toa small period so that dissemination happens quickly. The Trickle timer period doubles wheneither 2 or 4. S 2-bit unsigned integer. Identifies theperiod expires and no "inconsistent" advertisements have been received, reducing control overhead whenlength of seed-id. 0 indicates that thenetworkseed-id is 0 and not included ina consistent state. This document does allow configurationsthe MPL Option. 1 indicates thatdisablethesuppression mechanism, reducing Trickle Multicast Forwarding to simple flooding. This can be done by settingseed-id is a 16-bit unsigned integer. 2 indicates that thesuppression threshold forseed-id is a 64-bit unsigned integer. 3 indicates that the seed-id is a 128- bit unsigned integer. M 1-bit flag. 0 indicates that the value in sequence is not the greatest sequence number that was received"consistent" advertisementsfrom the MPL seed. rsv 5-bit reserved field. MUST be set toinfinity. In this mode, Trickle advertisements are not sent since consistency checks are not performed. Instead, nodes simply retransmitzero and incoming MPL multicastmessagespackets in which they aretrying to forward. 4. Trickle Multicast Parameters All Trickle multicast forwarders within a Trickle multicast domainnot zero MUST beconfigured with two setsdropped. sequence 8-bit unsigned integer. Identifies relative ordering ofconfigurations (one for each valueMPL multicast packets from the source identified by seed-id. seed-id Uniquely identifies the MPL seed that initiated dissemination of theM flag). Each configuration has five parameters: IminMPL multicast packet. Theminimum Trickle timer interval as defined in [RFC6206]. Imaxsize of seed-id is indicated by the S field. ThemaximumOption Data of the Trickletimer interval as defined in [RFC6206]. k The redundancy constantMulticast option MUST NOT change asdefined in [RFC6206]. Tactive The duration that a multicast forwarder can attempt to forward athe MPL multicastmessage. Specified in units of Imax. Tdwell The durationpacket is forwarded. Nodes thata multicast forwarder must maintain sliding window state for SeedID after receivingdo not understand thelast multicast message from SeedID. Specified in units of Imax. Tactive specifiesTrickle Multicast option MUST discard thetime duration that a node may retransmit a multicast message in attempt to forward itpacket. Thus, according toneighboring nodes. Larger values of Tactive increases[RFC2460] thenumberthree high order bits ofretransmissions and overall dissemination reliability. Tdwell specifiesthetime duration for maintaining sliding window stateOption Type must be set toensure that a multicast message from SeedID'010'. The Option Data length isreceived at most once. Larger values of Tdwell decreasesvariable. The seed-id uniquely identifies an MPL seed within the MPL domain. When seed-id is 128 bits (S=3), thelikelihoodMPL seed MAY use an IPv6 address assigned to one of its interfaces thata node will receive a multicast message more than once. The specific values are left out ofis unique within the MPL domain. Managing MPL seed identifiers is not within scope of thisdocument as they are dependent on link-specific properties. How those parameters are configured are also left out of scope.document. TheTrickle multicast parameters allow both aggressive and conservative multicast forwarding strategies. For example, an aggressive strategy may specify each multicast forwarder to retransmit any newly received message 3 times on a short fixed period and maintain state for 12 retransmission periods to avoid receiving duplicate messages. This aggressive policy can be specified usingsequence field establishes aTrickle parameter settotal ordering ofImin = Imax = 100ms, k = infinity, Tactive = 3, and Tdwell = 12. Setting k to infinity disablesMPL multicast packets from theTrickle suppression mechanism. A conservativesame MPL seed. The MPL seed MUST increment the sequence field's value on each new MPL multicastforwarding strategy utilizes Trickle suppression andpacket that it disseminates. Implementations MUST follow the Serial Number Arithmetic as defined in [RFC1982] when incrementing alarger Imaxsequence value or comparing two sequence values. Future updates tominimize redundant transmissions. One such conservative policy is a Trickle parameter set of Imin = 100ms, Imax = 30min, k = 1, Tactive = 3, and Tdwell = 12. 5. Message Formats 5.1. Trickle Multicast Option The Trickle Multicast option is carried in an IPv6 Hop-by-Hop Options header, immediatelythis specification may define additional fields following theIPv6 header.seed-id field. 4.2. ICMPv6 MPL Message TheTrickle Multicast optionMPL forwarder uses ICMPv6 MPL messages to advertise information about recently received MPL multicast packets. The ICMPv6 MPL 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+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |OptionType |Opt Data LenCode | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |SeedID (optional) |M| Sequence| . MPL Window[1..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+OptionIP Fields: Source Address A link-local address assigned to the sending interface. Destination Address The link-local all-nodes MPL forwarders multicast address (FF02::TBD). Hop Limit 255 ICMPv6 Fields: Type XX (to be confirmed by IANA).Opt Data Len LengthCode 0 Checksum The ICMP checksum. See [RFC4443]. MPL Window[1..n] List ofthe Option Data fieldone or more MPL Windows (defined inoctets. MUST be setSection 4.2.1). An MPL forwarder transmits an ICMPv6 MPL message toeither 2 or 4. SeedID Uniquely identifies a Trickleadvertise information about buffered MPL multicastseedpackets. More explicitly, the ICMPv6 MPL message encodes the sliding window state (described in Section 5.2) thatinitiatedthedissemination process.MPL forwarder maintains for each MPL seed. TheSeedID field is optional and only appears when Opt Data Len is setadvertisement serves to4. When Opt Data Len is setindicate to2,neighboring MPL forwarders regarding newer messages that it may send or theSeedID is equivalentneighboring MPL forwarders have yet to receive. 4.2.1. MPL Window An MPL Window encodes theIPv6 Source address. M Mode flag. Identifies one of two Trickle parameterssliding window state (described in Section 5.2 that the MPL forwarder maintains for an MPL seed. Each MPL Window 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | w-min | w-len | S | seed-id (0, 2 or 16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . buffered-mpl-packets (0 touse when forwarding this multicast message. Sequence Identifies relative ordering8 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 size ofmulticast messages fromthesource identified by SeedID.sliding window and the number of valid bits in buffered-mpl-packets. TheOption Datasliding window's upper bound is the sum of w-min and w-len. S 2-bit unsigned integer. Identifies theTrickle Multicast option MUST NOT change en- route. Nodeslength of seed-id. 0 indicates thatdo not understandtheTrickle Multicast option MUST skip over this optionseed-id value is 0 andcontinue processing the header. Thus, according to [RFC2460]not included in thethree high order bits ofMPL Option. 1 indicates that theOption Type must be equal set to zero. The Option Data lengthseed-id value isvariable. The SeedID uniquely identifiesaTrickle multicast seed within16-bit unsigned integer. 2 indicates that theTrickle multicast domain. The SeedID field may either be an IPv6 address assigned to the seed node orseed-id value is amanaged 16-bit value. In either case,128-bit unsigned integer. 3 is reserved. seed-id Indicates theSeedID MUST be unique withinMPL seed associated with this sliding window. buffered-mpl-packets Variable-length bit vector. Identifies theTricklesequence numbers of MPL multicastdomain. Managingpackets that theSeedID namespaceMPL forwarder has buffered. The sequence number isleft out of scope.determined by w-min + i, where i is the offset within buffered-mpl-packets. TheM flag identifies one of two Trickle parametersMPL Window does not have any octet alignment requirement. 5. MPL Forwarder Behavior An MPL forwarder implementation needs touse when forwarding the message. This capabilitymanage sliding windows for each active MPL seed. The sliding window allowsa Tricklethe MPL forwarder to determine what multicast packets to accept and what multicast packets are buffered. An MPL forwarder must also manage MPL packet transmissions. 5.1. MulticastDomainPacket Dissemination MPL uses the Trickle algorithm tosupportcontrol packet transmissions when disseminating MPL multicast packets [RFC6206]. MPL provides twodifferentpropagation mechanisms for disseminating MPL multicast packets. 1. With proactive propagation, an MPL forwarder transmits buffered MPL multicast packets using the Trickleparameter sets that make differentalgorithm. This method is called proactive propagationtime vs. control overhead trade-offs. Sequence establishes a relative ordering ofsince an MPL forwarder actively transmits MPL multicast packets without discovering that a neighboring MPL forwarder has yet to receive the message. 2. With reactive propagation, an MPL forwarder transmits ICMPv6 MPL messagesfromusing thesame SeedID. The source MUST incrementTrickle algorithm. An MPL forwarder only transmits buffered MPL multicast packets upon discovering that neighboring devices have not yet to receive theSequence value when sourcingcorresponding MPL multicast packets. When receiving a newTricklemulticastmessage. Implementations MUST follow the Serial Number Arithmetic as defined in [RFC1982]. 5.2. Trickle ICMPv6 Message The Trickle ICMP message is usedpacket, an MPL forwarder first utilizes proactive propagation toadvertise metadataforward the MPL multicast packet. Proactive propagation reduces dissemination latency since it does not require discovering that neighboring devices have not yet received the MPL multicast packet. MPL forwarders utilize proactive propagation forrecentlynewly receivedTrickleMPL multicastmessages. The Trickle ICMP 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Sequence List[1..n] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ IP Fields: Source Address A link-local address assignedpackets since they can assume that some neighboring MPL forwarders have yet to receive thesending interface. Destination Address The link-local all-nodes (FF02::1) or link-local all-routers (FF02::2)MPL multicastaddress. Hop Limit 255 ICMP Fields: Type XX (topacket. After a limited number of MPL multicast packet transmissions, the MPL forwarder may terminate proactive propagation for the MPL multicast packet. An MPL forwarder may optionally use reactive propagation to continue the dissemination process with lower communication overhead. With reactive propagation, neighboring MPL forwarders use ICMPv6 MPL messages to discover new MPL multicast messages that have not yet been received. When discovering that a neighboring MPL forwarder has not yet received a new MPL multicast packet, the MPL forwarder 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: the minimum interval size Imin, the maximum interval size Imax, and a redundancy constant k. MPL defines a fourth 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 the proactive and reactive propagation methods. TimerExpirations MUST beconfirmed by IANA). Codegreater than 0Checksum The ICMP checksum. See [RFC4443]. Sequence List[1..n] List of zero, one, or more Sequence Lists (definedfor proactive propagation. TimerExpirations MAY be set to 0 for reactive propagation, which effectively disables reactive propagation. As specified inSection 5.2.1). TheRFC 6206 [RFC6206], a TrickleICMP message advertises sliding windows maintained bytimer 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. 5.1.2. Proactive Propagation With proactive propagation, the MPL forwarder transmits buffered MPL multicast packets using the Trickle algorithm. Each buffered MPL multicastforwarder. The advertisement servespacket that is proactively being disseminated with proactive propagation has an associated Trickle timer. Adhering tonotify neighborsSection 5 ofnewer messagesRFC 6206 [RFC6206], this document defines the following: o This document defines a "consistent" transmission for proactive propagation as receiving an MPL multicast packet thatit can propagate orhasyet to receive. Only entriesthe same MPL seed identifier and sequence number as a buffered MPL packet. o This document defines an "inconsistent" transmission formessages where Tactiveproactive propagation as receiving an MPL multicast packet that has the same MPL seed identifier, the M flag set, and has a sequence number less than the buffered MPL multicast packet's sequence number. o This document does notexpireddefine any external "events". o This document defines both MPL multicast packets and ICMPv6 MPL multicast packets as Trickle messages. These messages areincludeddefined in theICMP message.sections below. o The actions outside the Trickle algorithm that the protocol takes involve managing slidingwindows are encoded using a Sequence List, definedwindow state, and is specified in Section5.2.1. 5.2.1. Sequence List5.2. 5.1.3. Reactive Propagation With reactive propagation, the MPL forwarder transmits ICMPv6 MPL messages using the Trickle algorithm. ASequence List containsMPL forwarder maintains alist of Sequence valuessingle Trickle timer fora SeedID. Each Sequence List 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S|M| rsv | SeqLen | SeedID (2 or 16 octets) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | . Sequence[1..SeqLen] . . . +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ S Indicates length of SeedID. When set to 0, SeedID is 16 octets.reactive propagation with each MPL domain. Whenset to 1, SeedIDREACTIVE_TIMER_EXPIRATIONS is2 octets. M Indicates one of two0, the MPL forwarder does not execute the Trickleparameter sets usedalgorithm fordisseminating multicast messages. SeqLen Numberreactive propagation and reactive propagation is disabled. Adhering to Section 5 of2-octet Sequence entries. SeedID Copied fromRFC 6206 [RFC6206], this document defines the following: o This document defines arecently received Trickle Multicast option. Sequence[1..SeqLen] List of recently received Sequence values from SeedID. Note"consistent" transmission for reactive propagation as receiving an ICMPv6 MPL message that indicates neither theSequence value is only 15 bits and the highest order bit MUST be setreceiving nor transmitting node has new MPL multicast packets to0. 6. Trickle Multicast Forwarder Behavior A Trickle Multicast Forwarder implementation needsoffer. 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 tomanageoffer. o This document defines an "event" for reactive propagation as updating any slidingwindowswindow (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 Trickletimers.messages. Thesemechanisms are used to determine when received messages should be accepted, when ICMPmessages aretransmitted,defined in the sections below. o The actions outside the Trickle algorithm that the protocol takes involve managing sliding window state, andwhen multicast messages are retransmitted. 6.1. Managingis specified in Section 5.2. 5.2. Sliding Windows EveryTrickle multicastMPL forwarder MUST maintain a sliding window ofSequence valuessequence numbers for eachSeedID that generatedMPL seed of recently received MPL packets. The sliding window performs two functions: 1. Indicate what MPL multicastmessages.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 represents the sequence number of the oldest MPL multicast packet the MPL forwarder is willing to receive or has buffered. An MPL forwarder MUST ignore any MPL multicast packet that has sequence value less than than WindowMin. 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, that indicates the minimum lifetime of the sliding window. The MPL forwarder MUST NOT free a sliding window before HoldTimer expires. When receivinga Tricklean MPL multicastmessage,packet, if no existing sliding window exists for theSeedID,MPL seed, the MPL forwarder MUST create a new sliding windowMUST be createdbefore accepting themessage. IfMPL multicast packet. The MPL forwarder may reclaim memoryconstraints are such thatresources by freeing anewsliding window for another MPL seed if its HoldTimer has expired. If, for any reason, the MPL forwarder cannotbe created, thencreate a new sliding window, it MUST discard themessage must be ignored.packet. If a sliding window exists for theSeedID,MPL seed, themessage must be ignoredMPL forwarder MUST ignore the MPL multicast packet if themessage's Sequence value falls belowpacket's sequence number is less than WindowMin or appears in BufferedPackets. Otherwise, the MPL forwarder MUST accept the packet and determine whether or not to forward thelower bound ofpacket and/or pass thewindow or appears inpacket to thelist of stored Sequence values withinnext higher layer. When accepting an MPL multicast packet, thewindow. All other messagesMPL forwarder MUSTbe received. When receiving a message,update the sliding windowMUST be updated withbased on themessage's Sequence value.packet's sequence number. If theSequence valuesequence number islargernot less than WindowMax, theupper bound ofMPL forwarder MUST set WindowMax to 1 greater than thewindow,packet's sequence number. If WindowMax - WindowMin > MPL_MAX_WINDOW_SIZE, thenew message establishesMPL forwarder MUST increment WindowMin such that WindowMax - WindowMin <= MPL_MAX_WINDOW_SIZE. At thenew upper bound. Memory constraints may limitsame time, thetotal number of Sequence valuesMPL forwarder MUST free any entries in BufferedPackets thatcan be stored. An entry may be reclaimed beforehave a sequence number less than WindowMin. If thedwell time expires ifMPL forwarder has available memory resources, itserves asMUST buffer thelower bound ofMPL multicast packet for proactive propagation. If not enough memory resources are available to buffer thewindow andpacket, thewindow has moreMPL forwarder MUST increment WindowMin and free entries in BufferedPackets that have a sequence number less thanone entry. NoteWindowMin until enough memory resources are available. Incrementing WindowMin will ensure thatentries can be reclaimedthe MPL forwarder does not accept previously received packets. An MPL forwarder MAY reclaim memory resources from sliding windows for otherSeedIDs. When onlyMPL seeds. If a sliding window for another MPL seed is actively disseminating messages and has more than one entry in its BufferedPackets, the MPL forwarder may free entries for that MPL seed by incrementing WindowMin as described above. If the MPL forwarder cannot free enough memory resources to buffer the MPL multicast packet, the MPL forwarder MUST set WindowMin to 1 greater than the packet's sequence number. When memory resources are available, an MPL forwarder SHOULD buffer a MPL multicast packet until the proactive propagation completes (i.e. the Trickle algorithm stops execution) and MAY buffer for longer. After proactive propagation completes, the MPL forwarder may advance WindowMin to the packet's sequence number to reclaim memory resources. When the MPL forwarder no longer buffers any packets, it MAY set WindowMin equal to WindowMax. When setting WindowMin equal to WindowMax, the MPL forwarder MUST initialize HoldTimer to WINDOW_HOLD_TIME and start HoldTimer. After HoldTimer expires, the MPL forwarder MAY free the sliding windowremains, that entryto reclaim memory resources. 5.3. Transmission of MPL Multicast Packets The MPL forwarder manages buffered MPL multicast packet transmissions using the Trickle algorithm. When adding a packet to BufferedPackets, the MPL forwarder MUSTNOT be reclaimed until its dwellcreate a Trickle timerexpires. Maintainingfor the packet and start execution of thelargest sequence value received from a SeedID ensures that earlier messages are received at most once. 6.2.TrickleTimers Aalgorithm. After PROACTIVE_TIMER_EXPIRATIONS Tricklemulticasttimer events, the MPL forwardermaintains two Trickle timers parameterized onMUST stop executing theS flag. TheTrickletimer is maintained as described in [RFC6206].algorithm. Whensuppression is enabled (i.e. k is finite), a Trickle transmission event consists of transmittingaTrickle ICMP message. Ifbuffered MPL multicast packet does not have an"inconsistent" advertisement was received duringactive Trickle timer, the MPL forwarder MAY free the buffered packet by advancing WindowMin to 1 greater than the packet's sequence number. Each interface thatperiod,supports MPL is configured with exactly one MPL multicastmessagesscope. The MPL multicast scope MUST be site-local or smaller and defaults to link-local. A scope larger than link-local MAY be used only when thatcausedscope corresponds exactly to theinconsistency are also retransmitted. When suppression is disabled (i.e. k is infinite), a Trickle transmission event consistsMPL domain. An MPL domain may therefore be composed oftransmittingone or more MPL multicastmessages that have been received withinscopes. For example, theTactive time window. This document defines receivingMPL domain may be composed of a"consistent" transmission as receivingsingle MPL multicast scope when using aTrickle ICMP message that indicates neithersite-local scope. Alternatively, thereceiving nor transmitting node has newMPL domain may be composed of multiple MPL multicastmessagesscopes when using a link-local scope. IPv6-in-IPv6 encapsulation MUST be used when using MPL tooffer. This document defines receivingforward an"inconsistent" transmission as receiving a Trickle ICMP message that indicates either receivingoriginal multicast packet whose source ortransmitting node hasdestination address is outside the MPL multicast scope. IPv6-in-IPv6 encapsulation is necessary to support Path MTU discovery when the MPL forwarder is not the source of the original multicast packet. IPv6-in-IPv6 encapsulation also allows an MPL forwarder to remove the MPL Option when forwarding the original multicast packet over anewlink that does not support MPL. The destination address scope for the outer IPv6 header MUST be the MPL multicast scope. When an MPL domain is composed of multiple MPL multicastmessage to offer. An "inconsistent" transmission also includes receiving a newscopes (e.g. when the MPL multicastmessage. 6.3. Trickle Multicast Option Processing All IPv6 datagrams containing a Trickle Multicast optionscope is link-local), an MPL forwarder MUSThave adecapsulate and encapsulate the original multicast packet when crossing between different MPL multicast scopes. In doing so, the MPL forwarder MUST duplicate the MPL Option, unmodified, in the new outer IPv6Destination address. Ifheader. The IPv6 destination address of the MPL multicast packet is the all- MPL-forwarders multicast address (TBD). The scope of the IPv6Destinationdestination address isnot aset to the MPL multicast scope. 5.4. Reception of MPL Multicast Packets Upon receiving an MPL multicastaddress,packet, the MPL forwarder first determines whether or not to accept and buffer the MPL multicast packet based on its MPL seed and sequence value, as specified in Section 5.2. If the MPL forwarderMUST dropaccepts thedatagram. AMPL multicast packet, the MPL forwarderMUST dropdetermines whether or not to deliver the original multicastmessagepacket to the next higher layer. For example, ifit cannot ensure thatthe MPL multicast packet uses IPv6-in-IPv6 encapsulation, the MPL forwarder removes the outer IPv6 header, which also removes MPL Option. 5.5. Transmission of ICMPv6 MPL Messages The MPL forwarder generates and transmits a new ICMPv6 MPL messagehas never been received before. This occurs whenwhenever Trickle requests a transmission. The MPL forwarder includes an encoding of each sliding window in theSequence valueICMPv6 MPL message. Each sliding window is encoded using an MPL Window entry, defined in Section 5.2. The MPL forwarder sets the MPL Window fields as follows: S If the MPL seed identifier is 0, set S to 0. If the MPL seed identifier isbelowwithin the range [1, 65535], set S to 2. Otherwise, set S to 3. w-min Set to the lower bound of the sliding windowfor SeedID or when an entry already exists for(i.e. WindowMin). w-len Set to the length of theSequence value. If no slidingwindowstate for SeedID exists,(i.e. WindowMax - WindowMin). seed-id If S is non-zero, set to the MPL seed identifier. buffered-mpl-packets Set each bit that represents a sequence number of a packet in BufferedPackets to 1. Set all other bits to 0. The i'th bit in buffered-mpl-packets represents a sequence number of w-min + i. 5.6. Reception of ICMPv6 MPL Messages An MPL forwarder processes each ICMPv6 MPL message that it receives to determine if it has any new MPL multicast packets to receive or offer. An MPL forwarderMUST allocatedetermines if a newsliding window for the SeedID before acceptingMPL multicast packet has not been received from a neighboring node if any of themessage. Iffollowing conditions hold true: 1. The ICMPv6 MPL message includes an MPL Window for an MPL seed that does not have a corresponding sliding windowcannot be allocated, the forwarder MUST drop the message. Upon accepting the message, the forwarder MUST enterentry on the MPL forwarder. 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 packet in its BufferedPackets that has sequence number within range of the sliding windowand decrement the IPv6 Hop Limit. Ifbut is not included in BufferedPackets (i.e. theIPv6 Hop Limiti'th bit in buffered-mpl- packets isnon-zero,set to 1, where the sequence number is w-min + i). When an MPL forwarderMUST buffer the message for retransmission for the duration specifieddetermines that it has not yet received a new MPL multicast packet buffered byTactive. 6.4. Trickle ICMP Processing Processinga neighboring device, the MPL forwarder resets the TrickleICMP message involves determiningtimer associated with reactive propagation. An MPL forwarder determines ifeither the receiver or transmitter has new multicast messages to offer. The transmitteran entry in BufferedPackets hasnew multicast messages to offernot been received by a neighboring MPL forwarder if any(SeedID, Sequence) pair falls within an existing sliding window for SeedID butof the following conditions hold true: 1. The ICMPv6 MPL message does nothaveinclude anassociated entry.MPL Window for the packet's MPL seed. 2. Thetransmitter has new multicast messagespacket's sequence number is greater than or equal tooffer ifthe(SeedID, Sequence) pairneighbor's WindowMax value (i.e. the packet's sequence number isgreatgreater than or equal to w-min + w-len). 3. The packet's sequence number is within theupper boundrange ofan existingthe neighbor's sliding windowfor SeedID. The receiver has new multicast messages[WindowMin, WindowMax), but not included in the neighbor's BufferedPacket (i.e. the packet's sequence number is greater than or equal to w-min, strictly less than w-min + w-len, and the corresponding bit in buffered-mpl- packets is set tooffer if any0. When an MPL forwarder determines that it has at least one bufferedmessages areMPL multicast packet that has notlisted inyet been received by a neighbor, theTrickle ICMP message andMPL forwarder resets the TrickleICMP message contains a (SeedID, Sequence) pairtimer associated with reactive propagation. Additionally, fora prior multicast message. The receiver has a new multicast message to offer if anyeach bufferedmessages does not have an associated SeedID entry inMPL multicast packet that should be transferred, the MPL forwarder MUST reset the TrickleICMP message.timer and reset e to 0 for proactive propagation. Ifneither receiver nor transmitterthe Trickle timer for proactive propagation hasnew multicast messages to offer,already stopped execution, themulticastMPL forwarderlogsMUST initialize aconsistent event by incrementing c, as described in [RFC6206]. If either receiver or transmitter hasnewmulticast messages to offer,Trickle timer and start execution of themulticastTrickle algorithm. 6. MPL Parameters An MPL forwarderlogs an inconsistent event by resettingmaintains two sets of Trickle parameters for the proactive and reactive methods. The Trickle parameters are listed below: PROACTIVE_IMIN The minimum Trickle timerT[M],interval, asdescribeddefined in[RFC6206]. All new messages[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 of Trickle timer expirations that occur before terminating thereceiver can offerTrickle algorithm. MUST bescheduledset to a value greater than 0. REACTIVE_IMIN The minimum Trickle timer interval, as defined in [RFC6206] fortransmission at the next transmission event. Notereactive propagation. REACTIVE_IMAX The maximum Trickle timer interval, as defined in [RFC6206] for reactive propagation. REACTIVE_K The redundancy constant, as defined in [RFC6206] for reactive propagation. REACTIVE_TIMER_EXPIRATIONS The number of Trickle timer expirations thatthese transmissions may be suppressed ifoccur before terminating thetransmission event is suppressed.Trickle algorithm. MAY be set to 0, which disables reactive propagation. WINDOW_HOLD_TIME The minimum lifetime for sliding window state. 7. AcknowledgementsTODO.The authors would like to acknowledge the helpful comments of Robert 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 Considerations The Trickle Multicast option requires an IPv6 Option Number. HEX act chg rest --- --- --- ----- C0001 001100TBD The first two bits indicate that the IPv6 nodemay skip over this option and continue processingMUST discard theheaderpacket if it doesn't recognize the option type, and the third bit indicates that the Option Data MUST NOT change en-route. 9. Security Considerations TODO. 10. References 10.1. 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. [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