| < draft-ietf-roll-trickle-mcast-03.txt | draft-ietf-roll-trickle-mcast-04.txt > | |||
|---|---|---|---|---|
| ROLL J. Hui | ROLL J. Hui | |||
| Internet-Draft Cisco | Internet-Draft Cisco | |||
| Intended status: Standards Track R. Kelsey | Intended status: Standards Track R. Kelsey | |||
| Expires: July 28, 2013 Silicon Labs | Expires: August 29, 2013 Silicon Labs | |||
| January 24, 2013 | February 25, 2013 | |||
| Multicast Protocol for Low power and Lossy Networks (MPL) | Multicast Protocol for Low power and Lossy Networks (MPL) | |||
| draft-ietf-roll-trickle-mcast-03 | draft-ietf-roll-trickle-mcast-04 | |||
| Abstract | Abstract | |||
| This document specifies the Multicast Protocol for Low power and | This document specifies the Multicast Protocol for Low power and | |||
| Lossy Networks (MPL) that provides IPv6 multicast forwarding in | Lossy Networks (MPL) that provides IPv6 multicast forwarding in | |||
| constrained networks. MPL avoids the need to construct or maintain | constrained networks. MPL avoids the need to construct or maintain | |||
| any multicast forwarding topology, disseminating messages to all MPL | any multicast forwarding topology, disseminating messages to all MPL | |||
| forwarders in an MPL domain. MPL uses the Trickle algorithm to | Forwarders in an MPL Domain. MPL uses the Trickle algorithm to | |||
| manage message transmissions for both control and data-plane | manage message transmissions for both control and data-plane | |||
| messages. Different Trickle parameter configurations allow MPL to | messages. Different Trickle parameter configurations allow MPL to | |||
| trade between dissemination latency and transmission efficiency. | trade between dissemination latency and transmission efficiency. | |||
| Status of this Memo | Status of this Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on July 28, 2013. | This Internet-Draft will expire on August 29, 2013. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 5 | 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.1. Information Base Overview . . . . . . . . . . . . . . . . 6 | 4.1. Information Base Overview . . . . . . . . . . . . . . . . 7 | |||
| 4.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 4.3. Signaling Overview . . . . . . . . . . . . . . . . . . . . 7 | 4.3. Signaling Overview . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. MPL Constants . . . . . . . . . . . . . . . . . . . . . . . . 9 | 5. MPL Parameters and Constants . . . . . . . . . . . . . . . . . 10 | |||
| 5.1. Multicast Addresses . . . . . . . . . . . . . . . . . . . 9 | 5.1. MPL Multicast Addresses . . . . . . . . . . . . . . . . . 10 | |||
| 5.2. Message Types . . . . . . . . . . . . . . . . . . . . . . 9 | 5.2. MPL Message Types . . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.3. MPL Forwarder Parameters . . . . . . . . . . . . . . . . . 9 | 5.3. MPL Seed Identifiers . . . . . . . . . . . . . . . . . . . 10 | |||
| 5.4. Trickle Parameters . . . . . . . . . . . . . . . . . . . . 9 | 5.4. MPL Forwarder Parameters . . . . . . . . . . . . . . . . . 10 | |||
| 6. Protocol Message Formats . . . . . . . . . . . . . . . . . . . 11 | 5.5. MPL Trickle Parameters . . . . . . . . . . . . . . . . . . 11 | |||
| 6.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Protocol Message Formats . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 12 | 6.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 13 | 6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 14 | |||
| 7. Information Base . . . . . . . . . . . . . . . . . . . . . . . 15 | 6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 15 | 7. Information Base . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 7.2. Domain Set . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 17 | |||
| 7.3. Seed Set . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.2. Domain Set . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 7.4. Buffered Message Set . . . . . . . . . . . . . . . . . . . 15 | 7.3. Seed Set . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 8. MPL Domains . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 7.4. Buffered Message Set . . . . . . . . . . . . . . . . . . . 17 | |||
| 9. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . . . 18 | 8. MPL Domains . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 10. MPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 19 | 9. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . . . 20 | |||
| 10.1. MPL Data Message Generation . . . . . . . . . . . . . . . 19 | 10. MPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 10.2. MPL Data Message Transmission . . . . . . . . . . . . . . 19 | 10.1. MPL Data Message Generation . . . . . . . . . . . . . . . 21 | |||
| 10.3. MPL Data Message Processing . . . . . . . . . . . . . . . 20 | 10.2. MPL Data Message Transmission . . . . . . . . . . . . . . 21 | |||
| 11. MPL Control Messages . . . . . . . . . . . . . . . . . . . . . 22 | 10.3. MPL Data Message Processing . . . . . . . . . . . . . . . 22 | |||
| 11.1. MPL Control Message Generation . . . . . . . . . . . . . . 22 | 11. MPL Control Messages . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 11.2. MPL Control Message Transmission . . . . . . . . . . . . . 22 | 11.1. MPL Control Message Generation . . . . . . . . . . . . . . 24 | |||
| 11.3. MPL Control Message Processing . . . . . . . . . . . . . . 23 | 11.2. MPL Control Message Transmission . . . . . . . . . . . . . 24 | |||
| 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 | 11.3. MPL Control Message Processing . . . . . . . . . . . . . . 25 | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 13.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . . 26 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 13.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . . 26 | 13.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 13.3. Well-known Multicast Addresses . . . . . . . . . . . . . . 26 | 13.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 14. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | 13.3. Well-known Multicast Addresses . . . . . . . . . . . . . . 28 | |||
| 15. Normative References . . . . . . . . . . . . . . . . . . . . . 28 | 14. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 29 | 15. Normative References . . . . . . . . . . . . . . . . . . . . . 30 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 1. Introduction | 1. Introduction | |||
| Low power and Lossy Networks typically operate with strict resource | Low power and Lossy Networks typically operate with strict resource | |||
| constraints in communication, computation, memory, and energy. Such | constraints in communication, computation, memory, and energy. Such | |||
| resource constraints may preclude the use of existing IPv6 multicast | resource constraints may preclude the use of existing IPv6 multicast | |||
| routing and forwarding mechanisms. Traditional IP multicast delivery | routing and forwarding mechanisms. Traditional IP multicast delivery | |||
| typically relies on topology maintenance mechanisms to discover and | typically relies on topology maintenance mechanisms to discover and | |||
| maintain routes to all subscribers of a multicast group. However, | maintain routes to all subscribers of a multicast group. However, | |||
| maintaining such topologies in LLNs is costly and may not be feasible | maintaining such topologies in LLNs is costly and may not be feasible | |||
| skipping to change at page 3, line 38 ¶ | skipping to change at page 3, line 38 ¶ | |||
| involve selecting a connected dominating set used to forward | involve selecting a connected dominating set used to forward | |||
| multicast messages to all nodes in an administrative domain. | multicast messages to all nodes in an administrative domain. | |||
| However, existing mechanisms often require two-hop topology | However, existing mechanisms often require two-hop topology | |||
| information and the cost of maintaining such information grows | information and the cost of maintaining such information grows | |||
| polynomially with network density. | polynomially with network density. | |||
| This document specifies the Multicast Protocol for Low power and | This document specifies the Multicast Protocol for Low power and | |||
| Lossy Networks (MPL), which provides IPv6 multicast forwarding in | Lossy Networks (MPL), which provides IPv6 multicast forwarding in | |||
| constrained networks. MPL avoids the need to construct or maintain | constrained networks. MPL avoids the need to construct or maintain | |||
| any multicast routing topology, disseminating multicast messages to | any multicast routing topology, disseminating multicast messages to | |||
| all MPL forwarders in an MPL domain. By using the Trickle algorithm | all MPL Forwarders in an MPL Domain. By using the Trickle algorithm | |||
| [RFC6206], MPL requires only small, constant state for each MPL | [RFC6206], MPL requires only small, constant state for each MPL | |||
| device that initiates disseminations. The Trickle algorithm also | device that initiates disseminations. The Trickle algorithm also | |||
| allows MPL to be density-aware, allowing the communication rate to | allows MPL to be density-aware, allowing the communication rate to | |||
| scale logarithmically with density. | scale logarithmically with density. | |||
| 2. Terminology | 2. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| [RFC2119]. | [RFC2119]. | |||
| The following terms are used throughout this document: | The following terms are used throughout this document: | |||
| MPL Forwarder - A router that implements this protocol. A MPL | MPL Forwarder - A router that implements this protocol. An MPL | |||
| Forwarder is equipped with at least one MPL | Forwarder is equipped with at least one MPL | |||
| Interface. | Interface. | |||
| MPL Interface - An MPL Forwarder's attachment to a | MPL Interface - An MPL Forwarder's attachment to a | |||
| communications medium, over which it transmits | communications medium, over which it transmits | |||
| and receives MPL Data Messages and MPL Control | and receives MPL Data Messages and MPL Control | |||
| Messages according to this specification. An MPL | Messages according to this specification. An MPL | |||
| Interface is assigned one or more unicast | Interface is assigned one or more unicast | |||
| addresses and is subscribed to one or more MPL | addresses and is subscribed to one or more MPL | |||
| Domain Addresses. | Domain Addresses. | |||
| skipping to change at page 4, line 38 ¶ | skipping to change at page 4, line 38 ¶ | |||
| Messages disseminated in an MPL Domain have the | Messages disseminated in an MPL Domain have the | |||
| associated MPL Domain Address as their | associated MPL Domain Address as their | |||
| destination address. | destination address. | |||
| MPL Domain - A scope zone, as defined in [RFC4007], in which | MPL Domain - A scope zone, as defined in [RFC4007], in which | |||
| MPL Interfaces subscribe to the same MPL Domain | MPL Interfaces subscribe to the same MPL Domain | |||
| Address and participate in disseminating MPL Data | Address and participate in disseminating MPL Data | |||
| Messages. | Messages. | |||
| MPL Data Message - A multicast message that is used to communicate | MPL Data Message - A multicast message that is used to communicate | |||
| a multicast payload between MPL Forwarders and | a multicast payload between MPL Forwarders within | |||
| contains an MPL Option in the IPv6 header. A MPL | an MPL domain. An MPL Data Message contains an | |||
| Data Message has its destination address set to | MPL Option in the IPv6 header and has as its | |||
| the MPL Domain Address. | destination address the MPL Domain Address | |||
| corresponding to the MPL Domain. | ||||
| MPL Control Message - A link-local multicast message that is used to | MPL Control Message - A link-local multicast message that is used to | |||
| communicate information about recently received | communicate information about recently received | |||
| MPL Data Messages to neighboring MPL Forwarders. | MPL Data Messages to neighboring MPL Forwarders. | |||
| MPL Seed - An MPL Forwarder that generates MPL Data | MPL Seed - An MPL Forwarder that generates MPL Data | |||
| Messages and serves as an entry point into an MPL | Messages and serves as an entry point into an MPL | |||
| Domain. | Domain. | |||
| MPL Seed Identifier - An unsigned integer that uniquely identifies an | ||||
| MPL Seed within an MPL Domain. | ||||
| 3. Applicability Statement | 3. Applicability Statement | |||
| This protocol is an IPv6 multicast forwarding protocol for Low-Power | This protocol is an IPv6 multicast forwarding protocol for Low-Power | |||
| and Lossy Networks. By implementing a controlled dissemination using | and Lossy Networks. By implementing a controlled dissemination using | |||
| the Trickle algorithm, this protocol is designed for networks that | the Trickle algorithm, this protocol is designed for networks that | |||
| communicate using low-power and lossy links with widely varying | communicate using low-power and lossy links with widely varying | |||
| topologies in both the space and time dimensions. | topologies in both the space and time dimensions. | |||
| 4. Protocol Overview | 4. Protocol Overview | |||
| skipping to change at page 6, line 22 ¶ | skipping to change at page 7, line 22 ¶ | |||
| A node records necessary protocol state in the following information | A node records necessary protocol state in the following information | |||
| sets: | sets: | |||
| o The Local Interface Set records the set of local MPL Interfaces | o The Local Interface Set records the set of local MPL Interfaces | |||
| and the unicast addresses assigned to those MPL Interfaces. | and the unicast addresses assigned to those MPL Interfaces. | |||
| o The Domain Set records the set of MPL Domain Addresses and the | o The Domain Set records the set of MPL Domain Addresses and the | |||
| local MPL Interfaces that subscribe to those addresses. | local MPL Interfaces that subscribe to those addresses. | |||
| o The Seed Set records information about received MPL Data Messages | o A Seed Set records information about received MPL Data Messages | |||
| received from an MPL Seed. The Seed Set maintains the minimum | received from an MPL Seed within an MPL Domain. Each MPL Domain | |||
| sequence number that the MPL Forwarder is willing to receive or | has an associated Seed Set. A Seed Set maintains the minimum | |||
| has buffered in its Buffered Message Set. MPL uses the Seed Set | sequence number for MPL Data Messages that the MPL Forwarder is | |||
| and Buffered Message Set to determine when to accept an MPL Data | willing to receive or has buffered in its Buffered Message Set | |||
| Message, process its payload, and retransmit it. | from an MPL Seed. MPL uses Seed Sets and Buffered Message Sets to | |||
| determine when to accept an MPL Data Message, process its payload, | ||||
| and retransmit it. | ||||
| o The Buffered Message Set records recently received MPL Data | o A Buffered Message Set records recently received MPL Data Messages | |||
| Messages from an MPL Seed. MPL Data Messages resident in the | from an MPL Seed within an MPL Domain. Each MPL Domain has an | |||
| associated Buffered Message Set. MPL Data Messages resident in a | ||||
| Buffered Message Set have sequence numbers that are greater than | Buffered Message Set have sequence numbers that are greater than | |||
| or equal to the minimum threshold maintained in the Seed Set. MPL | or equal to the minimum threshold maintained in the corresponding | |||
| uses the Buffered Message Set to store MPL Data Messages that may | Seed Set. MPL uses Buffered Message Sets to store MPL Data | |||
| be transmitted by the MPL Forwarder for forwarding. | Messages that may be transmitted by the MPL Forwarder for | |||
| forwarding. | ||||
| 4.2. Overview | 4.2. Overview | |||
| MPL achieves its goal by implementing a controlled flood that | MPL achieves its goal by implementing a controlled flood that | |||
| attempts to disseminate the multicast data message to all interfaces | attempts to disseminate the multicast data message to all interfaces | |||
| within an MPL Domain. MPL performs the following tasks to | within an MPL Domain. MPL performs the following tasks to | |||
| disseminate a multicast message: | disseminate a multicast message: | |||
| o When having a multicast message to forward into an MPL Domain, the | o When having a multicast message to forward into an MPL Domain, the | |||
| MPL Seed generates an MPL Data Message that includes the MPL Seed | MPL Seed generates an MPL Data Message that includes the MPL | |||
| Domain Address as the IPv6 Destination Address, the MPL Seed | ||||
| Identifier, a newly generated sequence number, and the multicast | Identifier, a newly generated sequence number, and the multicast | |||
| message. If the multicast destination address is not the MPL | message. If the multicast destination address is not the MPL | |||
| Domain Address, IP-in-IP [RFC2473] is used to encapsulate the | Domain Address, IP-in-IP [RFC2473] is used to encapsulate the | |||
| multicast message in the MPL Data Message. | multicast message in an MPL Data Message, preserving the original | |||
| IPv6 Destination Address. | ||||
| o Upon receiving an MPL Data Message, the MPL Forwarder extracts the | o Upon receiving an MPL Data Message, the MPL Forwarder extracts the | |||
| MPL Seed and sequence number and determines whether or not the MPL | MPL Seed and sequence number and determines whether or not the MPL | |||
| Data Message was previously received using the Seed Set and | Data Message was previously received using the MPL Domain's Seed | |||
| Buffered Message Set. | Set and Buffered Message Set. | |||
| * If the sequence number is less than the lower-bound sequence | * If the sequence number is less than the lower-bound sequence | |||
| number maintained in the Seed Set or a message with the same | number maintained in the Seed Set or a message with the same | |||
| sequence number exists within the Buffered Message Set, the MPL | sequence number exists within the Buffered Message Set, the MPL | |||
| Forwarder marks the MPL Data Message as old. | Forwarder marks the MPL Data Message as old. | |||
| * Otherwise, the MPL Forwarder marks the MPL Data Message as new. | * Otherwise, the MPL Forwarder marks the MPL Data Message as new. | |||
| o For each newly received MPL Data Message, an MPL Forwarder updates | o For each newly received MPL Data Message, an MPL Forwarder updates | |||
| the Seed Set, adds the MPL Data Message into the Buffered Message | the Seed Set, adds the MPL Data Message into the Buffered Message | |||
| Set, processes its payload, and multicasts the MPL Data Message a | Set, processes its payload, and multicasts the MPL Data Message a | |||
| number of times on all MPL Interfaces participating in the same | number of times on all MPL Interfaces participating in the same | |||
| MPL Domain to forward the message. | MPL Domain to forward the message. | |||
| o Each MPL Forwarder may periodically link-local multicast MPL | o Each MPL Forwarder may periodically link-local multicast MPL | |||
| Control Messages on MPL Interfaces to communicate information | Control Messages on MPL Interfaces to communicate information | |||
| contained in the MPL Forwarder's Seed Set and Buffered Message | contained in an MPL Domain's Seed Set and Buffered Message Set. | |||
| Sets. | ||||
| o Upon receiving an MPL Control Message, an MPL Forwarder determines | o Upon receiving an MPL Control Message, an MPL Forwarder determines | |||
| whether there are any new MPL Data Messages that have yet to be | whether there are any new MPL Data Messages that have yet to be | |||
| received by the MPL Control Message's source and multicasts those | received by the MPL Control Message's source and multicasts those | |||
| MPL Data Messages. | MPL Data Messages. | |||
| MPL's configuration parameters allow two forwarding strategies for | MPL's configuration parameters allow two forwarding strategies for | |||
| disseminating MPL Data Messages. | disseminating MPL Data Messages. | |||
| Proactive Forwarding - With proactive forwarding, an MPL Forwarder | Proactive Forwarding - With proactive forwarding, an MPL Forwarder | |||
| schedules transmissions of MPL Data Messages using the Trickle | schedules transmissions of MPL Data Messages using the Trickle | |||
| algorithm, without any prior indication that neighboring nodes | algorithm, without any prior indication that neighboring nodes | |||
| have yet to receive the message. After transmitting the MPL Data | have yet to receive the message. After transmitting the MPL Data | |||
| Message a limited number of times, the MPL forwarder may terminate | Message a limited number of times, the MPL Forwarder may terminate | |||
| proactive forwarding for the MPL Data Message message. | proactive forwarding for the MPL Data Message message. | |||
| Reactive Forwarding - With reactive forwarding, an MPL Forwarder | Reactive Forwarding - With reactive forwarding, an MPL Forwarder | |||
| link-local multicasts MPL Control Messages using the Trickle | link-local multicasts MPL Control Messages using the Trickle | |||
| algorithm [RFC6206]. MPL Forwarders use MPL Control Messages to | algorithm [RFC6206]. MPL Forwarders use MPL Control Messages to | |||
| discover new MPL Data Messages that have not yet been received. | discover new MPL Data Messages that have not yet been received. | |||
| When discovering that a neighboring MPL Forwarder has not yet | When discovering that a neighboring MPL Forwarder has not yet | |||
| received a new MPL Data Message, the MPL Forwarder schedules those | received an MPL Data Message, the MPL Forwarder schedules those | |||
| MPL Data Messages for transmission using the Trickle algorithm. | MPL Data Messages for transmission using the Trickle algorithm. | |||
| 4.3. Signaling Overview | 4.3. Signaling Overview | |||
| This protocol generates and processes the following messages: | This protocol generates and processes the following messages: | |||
| MPL Data Message - Generated by an MPL Seed to deliver a multicast | MPL Data Message - Generated by an MPL Seed to deliver a multicast | |||
| message across an MPL Domain. The MPL Data Message's source is an | message across an MPL Domain. The MPL Data Message's source is an | |||
| address in the Local Interface Set of the MPL Seed that generated | address in the Local Interface Set of the MPL Seed that generated | |||
| the message and is valid within the MPL Domain. The MPL Data | the message and is valid within the MPL Domain. The MPL Data | |||
| skipping to change at page 8, line 21 ¶ | skipping to change at page 9, line 25 ¶ | |||
| * The Seed Identifier of the MPL Seed that generated the MPL Data | * The Seed Identifier of the MPL Seed that generated the MPL Data | |||
| Message. | Message. | |||
| * The sequence number of the MPL Seed that generated the MPL Data | * The sequence number of the MPL Seed that generated the MPL Data | |||
| Message. | Message. | |||
| * The original multicast message. | * The original multicast message. | |||
| MPL Control Message - Generated by an MPL Forwarder to communicate | MPL Control Message - Generated by an MPL Forwarder to communicate | |||
| information contained in the Seed Set and Buffered Message Set to | information contained in an MPL Domain's Seed Set and Buffered | |||
| neighboring MPL Forwarders. An MPL Control Message contains a | Message Set to neighboring MPL Forwarders. An MPL Control Message | |||
| list of tuples for each entry in the Seed Set. Each tuple | contains a list of tuples for each entry in the Seed Set. Each | |||
| contains: | tuple contains: | |||
| * The minimum sequence number maintained in the Seed Set for the | * The minimum sequence number maintained in the Seed Set for the | |||
| MPL Seed. | MPL Seed. | |||
| * A bit-vector indicating the sequence numbers of MPL Data | * A bit-vector indicating the sequence numbers of MPL Data | |||
| Messages resident in the Buffered Message Set for the MPL Seed, | Messages resident in the Buffered Message Set for the MPL Seed, | |||
| where the first bit represents a sequence number equal to the | where the first bit represents a sequence number equal to the | |||
| minimum threshold maintained in the Seed Set. | minimum threshold maintained in the Seed Set. | |||
| * The length of the bit-vector. | * The length of the bit-vector. | |||
| 5. MPL Constants | 5. MPL Parameters and Constants | |||
| This section describes various program and networking constants used | This section describes various program and networking parameters and | |||
| by MPL. | constants used by MPL. | |||
| 5.1. Multicast Addresses | 5.1. MPL Multicast Addresses | |||
| MPL makes use of MPL Domain Addresses to identify MPL Interfaces of | MPL makes use of MPL Domain Addresses to identify MPL Interfaces of | |||
| an MPL Domain. By default, MPL Forwarders subscribe to the | an MPL Domain. By default, MPL Forwarders subscribe to the | |||
| ALL_MPL_FORWARDERS multicast address with a scope value of 3 (subnet- | ALL_MPL_FORWARDERS multicast address with a scope value of 3 (subnet- | |||
| local). | local). | |||
| For each MPL Domain Address that an MPL Interface subscribes to, the | For each MPL Domain Address that an MPL Interface subscribes to, the | |||
| MPL Interface MUST also subscribe to the MPL Domain Address with a | MPL Interface MUST also subscribe to the MPL Domain Address with a | |||
| scope value of 2 (link-local) when reactive forwarding is in use. | scope value of 2 (link-local) when reactive forwarding is in use. | |||
| MPL Forwarders use the link-scoped MPL Domain Address to communicate | MPL Forwarders use the link-scoped MPL Domain Address to communicate | |||
| MPL Control Messages to neighboring (i.e. on-link) MPL Forwarders. | MPL Control Messages to neighboring (i.e. on-link) MPL Forwarders. | |||
| 5.2. Message Types | 5.2. MPL Message Types | |||
| MPL defines an IPv6 Option for carrying an MPL Seed Identifier and a | MPL defines an IPv6 Option for carrying an MPL Seed Identifier and a | |||
| sequence number within an MPL Data Message. The IPv6 Option Type has | sequence number within an MPL Data Message. The IPv6 Option Type has | |||
| value MPL_OPT_TYPE. | value MPL_OPT_TYPE. | |||
| MPL defines an ICMPv6 Message (MPL Control Message) for communicating | MPL defines an ICMPv6 Message (MPL Control Message) for communicating | |||
| information contained in its Seed Set and Buffered Message Set to | information contained in an MPL Domain's Seed Set and Buffered | |||
| neighboring MPL Forwarders. The MPL Control Message has ICMPv6 Type | Message Set to neighboring MPL Forwarders. The MPL Control Message | |||
| MPL_ICMP_TYPE. | has ICMPv6 Type MPL_ICMP_TYPE. | |||
| 5.3. MPL Forwarder Parameters | 5.3. MPL Seed Identifiers | |||
| MPL uses MPL Seed Identifiers to uniquely identify MPL Seeds within | ||||
| an MPL Domain. For each MPL Domain that the MPL Forwarder serves as | ||||
| an MPL Seed, the MPL Forwarder MUST have an associated MPL Seed | ||||
| Identifier. An MPL Forwarder MAY use the same MPL Seed Identifier | ||||
| across multiple MPL Domains, but the MPL Seed Identifier MUST be | ||||
| unique within each MPL Domain. The mechanism for assigning and | ||||
| verifying uniqueness of MPL Seed Identifiers is not specified in this | ||||
| document. | ||||
| 5.4. MPL Forwarder Parameters | ||||
| PROACTIVE_FORWARDING A boolean value that indicates whether the MPL | PROACTIVE_FORWARDING A boolean value that indicates whether the MPL | |||
| Forwarder should schedule MPL Data Message transmissions after | Forwarder should schedule MPL Data Message transmissions after | |||
| receiving them for the first time. | receiving them for the first time. PROACTIVE_FORWARDING has a | |||
| default value of TRUE. | ||||
| SEED_SET_LIFETIME The minimum lifetime for an entry in the Seed Set. | SEED_SET_ENTRY_LIFETIME The minimum lifetime for an entry in the | |||
| Seed Set. SEED_SET_ENTRY_LIFETIME has a default value of 30 | ||||
| minutes. | ||||
| 5.4. Trickle Parameters | It is RECOMMENDED that all MPL Forwarders use the same values for the | |||
| MPL Forwarder Parameters above for a given MPL Domain. The mechanism | ||||
| for setting the MPL Forwarder Parameters is not specified within this | ||||
| document. | ||||
| 5.5. MPL Trickle Parameters | ||||
| As specified in [RFC6206], a Trickle timer runs for a defined | As specified in [RFC6206], a Trickle timer runs for a defined | |||
| interval and has three configuration parameters: the minimum interval | interval and has three configuration parameters: the minimum interval | |||
| size Imin, the maximum interval size Imax, and a redundancy constant | size Imin, the maximum interval size Imax, and a redundancy constant | |||
| k. | k. | |||
| This specification defines a fourth Trickle configuration parameter, | This specification defines a fourth Trickle configuration parameter, | |||
| TimerExpirations, which indicates the number of Trickle timer | TimerExpirations, which indicates the number of Trickle timer | |||
| expiration events that occur before terminating the Trickle | expiration events that occur before terminating the Trickle | |||
| algorithm. | algorithm. | |||
| Each MPL forwarder maintains a separate Trickle parameter set for MPL | Each MPL Forwarder uses the following Trickle parameters for MPL Data | |||
| Data Message and MPL Control Message transmissions. The Trickle | Message and MPL Control Message transmissions. | |||
| parameters are listed below: | ||||
| DATA_MESSAGE_IMIN The minimum Trickle timer interval, as defined in | DATA_MESSAGE_IMIN The minimum Trickle timer interval, as defined in | |||
| [RFC6206], for MPL Data Message transmissions. | [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_IMIN | |||
| has a default value of 10 times the worst-case link-layer latency. | ||||
| DATA MESSAGE_IMAX The maximum Trickle timer interval, as defined in | DATA MESSAGE_IMAX The maximum Trickle timer interval, as defined in | |||
| [RFC6206], for MPL Data Message transmissions. | [RFC6206], for MPL Data Message transmissions. DATA_MESSAGE_IMAX | |||
| has a default value equal to DATA_MESSAGE_IMIN. | ||||
| DATA_MESSAGE_K The redundancy constant, as defined in [RFC6206], for | DATA_MESSAGE_K The redundancy constant, as defined in [RFC6206], for | |||
| MPL Data Message transmissions. | MPL Data Message transmissions. DATA_MESSAGE_K has a default | |||
| value of 5. | ||||
| DATA_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer | DATA_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer | |||
| expirations that occur before terminating the Trickle algorithm | expirations that occur before terminating the Trickle algorithm | |||
| for MPL Data Message transmissions. | for MPL Data Message transmissions. | |||
| DATA_MESSAGE_TIMER_EXPIRATIONS has a default value of 3. | ||||
| CONTROL_MESSAGE_IMIN The minimum Trickle timer interval, as defined | CONTROL_MESSAGE_IMIN The minimum Trickle timer interval, as defined | |||
| in [RFC6206], for MPL Control Message transmissions. | in [RFC6206], for MPL Control Message transmissions. | |||
| CONTROL_MESSAGE_IMIN has a default value of 10 times the worst- | ||||
| case link-layer latency. | ||||
| CONTROL_MESSAGE_IMAX The maximum Trickle timer interval, as defined | CONTROL_MESSAGE_IMAX The maximum Trickle timer interval, as defined | |||
| in [RFC6206], for MPL Control Message transmissions. | in [RFC6206], for MPL Control Message transmissions. | |||
| CONTROL_MESSAGE_IMAX has a default value of 5 minutes. | ||||
| CONTROL_MESSAGE_K The redundancy constant, as defined in [RFC6206], | CONTROL_MESSAGE_K The redundancy constant, as defined in [RFC6206], | |||
| for MPL Control Message transmissions. | for MPL Control Message transmissions. CONTROL_MESSAGE_K has a | |||
| default value of 1. | ||||
| CONTROL_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer | CONTROL_MESSAGE_TIMER_EXPIRATIONS The number of Trickle timer | |||
| expirations that occur before terminating the Trickle algorithm | expirations that occur before terminating the Trickle algorithm | |||
| for MPL Control Message transmissions. | for MPL Control Message transmissions. | |||
| CONTROL_MESSAGE_TIMER_EXPIRATIONS has a default value of 10. | ||||
| It is RECOMMENDED that all MPL Forwarder within an MPL Domain use the | Following [RFC6206], it is RECOMMENDED that all MPL Forwarders use | |||
| same values for the Trickle Parameters above, as specified in | the same values for the Trickle Parameters above for a given MPL | |||
| [RFC6206]. | Domain. The mechanism for setting the Trickle Parameters is not | |||
| specified within this document. | ||||
| 6. Protocol Message Formats | 6. Protocol Message Formats | |||
| The protocol messages generated and processed by an MPL Forwarder are | The protocol messages generated and processed by an MPL Forwarder are | |||
| described in this section. | described in this section. | |||
| 6.1. MPL Option | 6.1. MPL Option | |||
| The MPL Option is carried in MPL Data Messages in an IPv6 Hop-by-Hop | The MPL Option is carried in MPL Data Messages in an IPv6 Hop-by-Hop | |||
| Options header, immediately following the IPv6 header. The MPL | Options header, immediately following the IPv6 header. The MPL | |||
| skipping to change at page 11, line 41 ¶ | skipping to change at page 13, line 41 ¶ | |||
| Option. 1 indicates that the seed-id is a 16-bit | Option. 1 indicates that the seed-id is a 16-bit | |||
| unsigned integer. 2 indicates that the seed-id is | unsigned integer. 2 indicates that the seed-id is | |||
| a 64-bit unsigned integer. 3 indicates that the | a 64-bit unsigned integer. 3 indicates that the | |||
| seed-id is a 128-bit unsigned integer. | seed-id is a 128-bit unsigned integer. | |||
| M 1-bit flag. 1 indicates that the value in | M 1-bit flag. 1 indicates that the value in | |||
| sequence is known to be the largest sequence | sequence is known to be the largest sequence | |||
| number that was received from the MPL Seed. | number that was received from the MPL Seed. | |||
| V 1-bit flag. 0 indicates that the MPL Option | V 1-bit flag. 0 indicates that the MPL Option | |||
| conforms to this specification. MPL Options | conforms to this specification. MPL Data | |||
| received in which this flag is 1 MUST be dropped. | Messages with an MPL Option in which this flag is | |||
| 1 MUST be dropped. | ||||
| rsv 4-bit reserved field. MUST be set to 0 on | rsv 4-bit reserved field. MUST be set to 0 on | |||
| transmission and ignored on reception. | transmission and ignored on reception. | |||
| sequence 8-bit unsigned integer. Identifies relative | sequence 8-bit unsigned integer. Identifies relative | |||
| ordering of MPL Data Messages from the MPL Seed | ordering of MPL Data Messages from the MPL Seed | |||
| identified by seed-id. | identified by seed-id. | |||
| seed-id Uniquely identifies the MPL Seed that initiated | seed-id Uniquely identifies the MPL Seed that initiated | |||
| dissemination of the MPL Data Message. The size | dissemination of the MPL Data Message. The size | |||
| skipping to change at page 12, line 18 ¶ | skipping to change at page 14, line 18 ¶ | |||
| The Option Data (in particular the M flag) of the MPL Option is | The Option Data (in particular the M flag) of the MPL Option is | |||
| updated by MPL Forwarders as the MPL Data Message is forwarded. | updated by MPL Forwarders as the MPL Data Message is forwarded. | |||
| Nodes that do not understand the MPL Option MUST discard the MPL Data | Nodes that do not understand the MPL Option MUST discard the MPL Data | |||
| Message. Thus, according to [RFC2460] the three high order bits of | Message. Thus, according to [RFC2460] the three high order bits of | |||
| the Option Type are set to '011'. The Option Data length is | the Option Type are set to '011'. The Option Data length is | |||
| variable. | variable. | |||
| The seed-id uniquely identifies an MPL Seed. When seed-id is 128 | The seed-id uniquely identifies an MPL Seed. When seed-id is 128 | |||
| bits (S=3), the MPL seed MAY use an IPv6 address assigned to one of | bits (S=3), the MPL seed MAY use an IPv6 address assigned to one of | |||
| its interfaces that is unique within the MPL domain. Managing MPL | its interfaces that is unique within the MPL Domain. Managing MPL | |||
| Seed Identifiers is not within scope of this document. | Seed Identifiers is not within scope of this document. | |||
| The sequence field establishes a total ordering of MPL Data Messages | The sequence field establishes a total ordering of MPL Data Messages | |||
| generated by an MPL Seed for an MPL Domain. The MPL Seed MUST | generated by an MPL Seed for an MPL Domain. The MPL Seed MUST | |||
| increment the sequence field's value on each new MPL Data Message | increment the sequence field's value on each new MPL Data Message | |||
| that it generates for an MPL Domain. Implementations MUST follow the | that it generates for an MPL Domain. Implementations MUST follow the | |||
| Serial Number Arithmetic as defined in [RFC1982] when incrementing a | Serial Number Arithmetic as defined in [RFC1982] when incrementing a | |||
| sequence value or comparing two sequence values. | sequence value or comparing two sequence values. | |||
| Future updates to this specification may define additional fields | Future updates to this specification may define additional fields | |||
| following the seed-id field. | following the seed-id field. | |||
| 6.2. MPL Control Message | 6.2. MPL Control Message | |||
| An MPL Forwarder uses ICMPv6 messages to communicate information | An MPL Forwarder uses ICMPv6 messages to communicate information | |||
| contained in its Seed Set and Buffered Message Set to neighboring MPL | contained in an MPL Domain's Seed Set and Buffered Message Set to | |||
| Forwarders. The MPL Control Message has the following format: | neighboring MPL Forwarders. The MPL Control Message has the | |||
| following format: | ||||
| 0 1 2 3 | 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 | 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 | | | Type | Code | Checksum | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . MPL Seed Info[1..n] . | . MPL Seed Info[1..n] . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| IP Fields: | IP Fields: | |||
| Source Address A link-local address assigned to the sending | Source Address An IPv6 address in the AddressSet of the | |||
| interface. | corresponding MPL Interface and MUST be valid | |||
| within the MPL Domain. | ||||
| Destination Address The link-scoped MPL Domain Address corresponding | Destination Address The link-scoped MPL Domain Address corresponding | |||
| to the MPL Domain. | to the MPL Domain. | |||
| Hop Limit 255 | Hop Limit 255 | |||
| ICMPv6 Fields: | ICMPv6 Fields: | |||
| Type MPL_ICMP_TYPE | Type MPL_ICMP_TYPE | |||
| Code 0 | Code 0 | |||
| Checksum The ICMP checksum. See [RFC4443]. | Checksum The ICMP checksum. See [RFC4443]. | |||
| MPL Seed Info[1..n] List of one or more MPL Seed Info entries. | MPL Seed Info[0..n] List of zero or more MPL Seed Info entries. | |||
| The MPL Control Message indicates the sequence numbers of MPL Data | The MPL Control Message indicates the sequence numbers of MPL Data | |||
| Messages that are within the Buffered Message Set. The MPL Control | Messages that are within the MPL Domain's Buffered Message Set. The | |||
| Message also indicates the sequence numbers of MPL Data Messages that | MPL Control Message also indicates the sequence numbers of MPL Data | |||
| an MPL Forwarder is willing to receive. The MPL Control Message | Messages that an MPL Forwarder is willing to receive. The MPL | |||
| allows neighboring MPL Forwarders to determine whether there are any | Control Message allows neighboring MPL Forwarders to determine | |||
| new MPL Data Messages to exchange. | whether there are any new MPL Data Messages to exchange. | |||
| 6.3. MPL Seed Info | 6.3. MPL Seed Info | |||
| An MPL Seed Info encodes the minimum sequence number for the MPL Seed | An MPL Seed Info encodes the minimum sequence number for an MPL Seed | |||
| maintained in the Seed Set. The MPL Seed Info also indicates the | maintained in the MPL Domain's Seed Set. The MPL Seed Info also | |||
| sequence numbers of MPL Data Messages generated by the MPL Seed | indicates the sequence numbers of MPL Data Messages generated by the | |||
| within the Buffered Message Set. The MPL Seed Info has the following | MPL Seed that are stored within the MPL Domain's Buffered Message | |||
| format: | Set. The MPL Seed Info has the following format: | |||
| 0 1 2 3 | 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 | 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) | | | min-seqno | bm-len | S | seed-id (0/2/8/16 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| . buffered-mpl-messages (variable length) . | . buffered-mpl-messages (variable length) . | |||
| . . | . . | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 14, line 25 ¶ | skipping to change at page 16, line 25 ¶ | |||
| is a 16-bit unsigned integer. 2 indicates that | is a 16-bit unsigned integer. 2 indicates that | |||
| the seed-id value is a 64-bit unsigned integer. 3 | the seed-id value is a 64-bit unsigned integer. 3 | |||
| indicates that the seed-id is a 128-bit unsigned | indicates that the seed-id is a 128-bit unsigned | |||
| integer. | integer. | |||
| seed-id Variable-length unsigned integer. Indicates the | seed-id Variable-length unsigned integer. Indicates the | |||
| MPL Seed associated with this MPL Seed Info. | MPL Seed associated with this MPL Seed Info. | |||
| buffered-mpl-messages Variable-length bit vector. Identifies the | buffered-mpl-messages Variable-length bit vector. Identifies the | |||
| sequence numbers of MPL Data Messages maintained | sequence numbers of MPL Data Messages maintained | |||
| in the Buffered Message Set for the MPL Seed. | in the corresponding Buffered Message Set for the | |||
| The sequence number is determined by min-seqno + | MPL Seed. The i'th bit represents a sequence | |||
| i, where i is the bit offset within buffered-mpl- | number of min-seqno + i. '0' indicates that the | |||
| messages. | corresponding MPL Data Message does not exist in | |||
| the Buffered Message Set. '1' indicates that the | ||||
| corresponding MPL Data Message does exist in the | ||||
| Buffered Message Set. | ||||
| The MPL Seed Info does not have any octet alignment requirement. | The MPL Seed Info does not have any octet alignment requirement. | |||
| 7. Information Base | 7. Information Base | |||
| 7.1. Local Interface Set | 7.1. Local Interface Set | |||
| The Local Interface Set records the local MPL Interfaces of an MPL | The Local Interface Set records the local MPL Interfaces of an MPL | |||
| Forwarder. The Local Interface Set consists of Local Interface | Forwarder. The Local Interface Set consists of Local Interface | |||
| Tuples, one per MPL Interface: (AddressSet). | Tuples, one per MPL Interface: (AddressSet). | |||
| skipping to change at page 15, line 27 ¶ | skipping to change at page 17, line 27 ¶ | |||
| The Domain Set records the MPL Interfaces that subscribe to each MPL | The Domain Set records the MPL Interfaces that subscribe to each MPL | |||
| Domain Address. The Domain Set consists of MPL Domain Tuples, one | Domain Address. The Domain Set consists of MPL Domain Tuples, one | |||
| per MPL Domain: (MPLInterfaceSet). | per MPL Domain: (MPLInterfaceSet). | |||
| MPLInterfaceSet - a set of MPL Interfaces that subscribe to the MPL | MPLInterfaceSet - a set of MPL Interfaces that subscribe to the MPL | |||
| Domain Address that identifies the MPL Domain. | Domain Address that identifies the MPL Domain. | |||
| 7.3. Seed Set | 7.3. Seed Set | |||
| The Seed Set records a sliding window used to determine the sequence | A Seed Set records a sliding window used to determine the sequence | |||
| numbers of MPL Data Messages that an MPL Forwarder is willing to | numbers of MPL Data Messages that an MPL Forwarder is willing to | |||
| accept generated by the MPL Seed. It consists of MPL Seed Tuples: | accept generated by the MPL Seed. An MPL Forwarder maintains a Seed | |||
| (SeedID, MinSequence, Lifetime). | Set for each MPL Domain that it participates in. A Seed Set consists | |||
| of MPL Seed Tuples: (SeedID, MinSequence, Lifetime). | ||||
| SeedID - the identifier for the MPL Seed. | SeedID - the identifier for the MPL Seed. | |||
| MinSequence - a lower-bound sequence number that represents the | MinSequence - a lower-bound sequence number that represents the | |||
| sequence number of the oldest MPL Data Message the MPL Forwarder | sequence number of the oldest MPL Data Message the MPL Forwarder | |||
| is willing to receive or transmit. An MPL Forwarder MUST ignore | is willing to receive or transmit. An MPL Forwarder MUST ignore | |||
| any MPL Data Message that has sequence value less than than | any MPL Data Message that has sequence value less than than | |||
| MinSequence. | MinSequence. | |||
| Lifetime - indicates the minimum lifetime of the Seed Set entry. An | Lifetime - indicates the minimum remaining lifetime of the Seed Set | |||
| MPL Forwarder MUST NOT free a Seed Set entry before its expires. | entry. An MPL Forwarder MUST NOT free a Seed Set entry before the | |||
| remaining lifetime expires. | ||||
| 7.4. Buffered Message Set | 7.4. Buffered Message Set | |||
| The Buffered Message Set records recently received MPL Data Messages | A Buffered Message Set records recently received MPL Data Messages | |||
| from an MPL Seed. An MPL Forwarder uses the Buffered Message Set to | from an MPL Seed within an MPL Domain. An MPL Forwarder uses a | |||
| buffer MPL Data Messages while the MPL Forwarder is forwarding the | Buffered Message Set to buffer MPL Data Messages while the MPL | |||
| MPL Data Messages. The Buffered Message Set consists of Buffered | Forwarder is forwarding the MPL Data Messages. An MPL Forwarder | |||
| Message Tuples: (SeedID, SequenceNumber, DataMessage). | maintains a Buffered Message Set for each MPL Domain that it | |||
| participates in. A Buffered Message Set consists of Buffered Message | ||||
| Tuples: (SeedID, SequenceNumber, DataMessage). | ||||
| SeedID - the identifier for the MPL Seed that generated the MPL Data | SeedID - the identifier for the MPL Seed that generated the MPL Data | |||
| Message. | Message. | |||
| SequenceNumber - the sequence number for the MPL Data Message. | SequenceNumber - the sequence number for the MPL Data Message. | |||
| DataMessage - the MPL Data Message. | DataMessage - the MPL Data Message. | |||
| All MPL Data Messages within the Buffered Message Set MUST have a | All MPL Data Messages within a Buffered Message Set MUST have a | |||
| sequence number greater than or equal to MinSequence for the | sequence number greater than or equal to MinSequence for the | |||
| corresponding SeedID. When increasing MinSequence for an MPL Seed, | corresponding SeedID. When increasing MinSequence for an MPL Seed, | |||
| the MPL Forwarder MUST delete any MPL Data Messages from the Buffered | the MPL Forwarder MUST delete any MPL Data Messages from the | |||
| Message Set that have sequence numbers less than MinSequence. | corresponding Buffered Message Set that have sequence numbers less | |||
| than MinSequence. | ||||
| 8. MPL Domains | 8. MPL Domains | |||
| An MPL Domain is a scope zone, as defined in [RFC4007], in which MPL | An MPL Domain is a scope zone, as defined in [RFC4007], in which MPL | |||
| Interfaces subscribe to the same MPL Domain Address and participate | Interfaces subscribe to the same MPL Domain Address and participate | |||
| in disseminating MPL Data Messages. | in disseminating MPL Data Messages. | |||
| By default, an MPL Forwarder MUST participate in an MPL Domain | By default, an MPL Forwarder SHOULD participate in an MPL Domain | |||
| identified by the ALL_MPL_FORWARDERS multicast address with a scope | identified by the ALL_MPL_FORWARDERS multicast address with a scope | |||
| value of 3 (subnet-local). | value of 3 (subnet-local). | |||
| An MPL Forwarder MAY participate in additional MPL Domains identified | An MPL Forwarder MAY participate in additional MPL Domains identified | |||
| by other multicast addresses. An MPL Interface MUST subscribe to the | by other multicast addresses. An MPL Interface MUST subscribe to the | |||
| MPL Domain Addresses for the MPL Domains that it participates in. | MPL Domain Addresses for the MPL Domains that it participates in. | |||
| The allocation of other multicast addresses is out of scope. | The assignment of other multicast addresses is out of scope. | |||
| For each MPL Domain Address that an MPL Interface subscribes to, the | For each MPL Domain Address that an MPL Interface subscribes to, the | |||
| MPL Interface MUST also subscribe to the same MPL Domain Address with | MPL Interface MUST also subscribe to the same MPL Domain Address with | |||
| a scope value of 2 (link-local) when reactive forwarding is in use | a scope value of 2 (link-local) when reactive forwarding is in use | |||
| (i.e. when communicating MPL Control Messages). | (i.e. when communicating MPL Control Messages). | |||
| 9. MPL Seed Sequence Numbers | 9. MPL Seed Sequence Numbers | |||
| Each MPL Seed maintains a sequence number for each MPL Domain that it | Each MPL Seed maintains a sequence number for each MPL Domain that it | |||
| serves. The sequence numbers are included in MPL Data Messages | serves. The sequence numbers are included in MPL Data Messages | |||
| skipping to change at page 19, line 9 ¶ | skipping to change at page 21, line 9 ¶ | |||
| Implementations MUST follow the Serial Number Arithmetic as defined | Implementations MUST follow the Serial Number Arithmetic as defined | |||
| in [RFC1982] when incrementing a sequence value or comparing two | in [RFC1982] when incrementing a sequence value or comparing two | |||
| sequence values. This sequence number is used to establish a total | sequence values. This sequence number is used to establish a total | |||
| ordering of MPL Data Messages generated by an MPL Seed for an MPL | ordering of MPL Data Messages generated by an MPL Seed for an MPL | |||
| Domain. | Domain. | |||
| 10. MPL Data Messages | 10. MPL Data Messages | |||
| 10.1. MPL Data Message Generation | 10.1. MPL Data Message Generation | |||
| MPL Data Messages are generated by MPL Seeds when they enter the MPL | MPL Data Messages are generated by MPL Seeds when these messages | |||
| Domain. All MPL Data messages have the following properties: | enter the MPL Domain. All MPL Data messages have the following | |||
| properties: | ||||
| o The IPv6 Source Address MUST be an address in the AddressSet of a | o The IPv6 Source Address MUST be an address in the AddressSet of a | |||
| corresponding MPL Interface and MUST be valid within the MPL | corresponding MPL Interface and MUST be valid within the MPL | |||
| Domain. | Domain. | |||
| o The IPv6 Destination Address MUST be set to the MPL Domain Address | o The IPv6 Destination Address MUST be set to the MPL Domain Address | |||
| corresponding to the MPL Domain. | corresponding to the MPL Domain. | |||
| o A MPL Data Message MUST contain an MPL Option in its IPv6 Header | o An MPL Data Message MUST contain an MPL Option in its IPv6 Header | |||
| to identify the MPL Seed that generated the message and the | to identify the MPL Seed that generated the message and the | |||
| ordering relative to other MPL Data Messages generated by the MPL | ordering relative to other MPL Data Messages generated by the MPL | |||
| Seed. | Seed. | |||
| When the source address is in the AddressList of an MPL Interface | When the source address is in the AddressList of an MPL Interface | |||
| corresponding to the MPL Domain Address and the destination address | corresponding to the MPL Domain Address and the destination address | |||
| is the MPL Domain Address, the application message and the MPL Data | is the MPL Domain Address, the application message and the MPL Data | |||
| Message MAY be identical. In other words, the MPL Data Message may | Message MAY be identical. In other words, the MPL Data Message may | |||
| contain a single IPv6 header that includes the MPL Option. | contain a single IPv6 header that includes the MPL Option. | |||
| Otherwise, IPv6-in-IPv6 encapsulation MUST be used to satisfy the MPL | Otherwise, IPv6-in-IPv6 encapsulation MUST be used to satisfy the MPL | |||
| Data Message requirements listed above [RFC2473]. The complete IPv6- | Data Message requirements listed above [RFC2473]. The complete IPv6- | |||
| in-IPv6 message forms an MPL Data Message. The outer IPv6 header | in-IPv6 message forms an MPL Data Message. The outer IPv6 header | |||
| conforms to the MPL Data Message requirements listed above. The | conforms to the MPL Data Message requirements listed above. The | |||
| encapsulated IPv6 datagram encodes the multicast data message that is | encapsulated IPv6 datagram encodes the multicast data message that is | |||
| communicated beyond the MPL Domain. | communicated beyond the MPL Domain. | |||
| 10.2. MPL Data Message Transmission | 10.2. MPL Data Message Transmission | |||
| An MPL Forwarder manages transmission of MPL Data Messages in the | An MPL Forwarder manages transmission of MPL Data Messages in its | |||
| Buffered Message set using the Trickle algorithm [RFC6206]. An MPL | Buffered Message Sets using the Trickle algorithm [RFC6206]. An MPL | |||
| Forwarder MUST use a separate Trickle timer for each MPL Data Message | Forwarder MUST use a separate Trickle timer for each MPL Data Message | |||
| that it is actively forwarding. In accordance with Section 5 of RFC | that it is actively forwarding. In accordance with Section 5 of RFC | |||
| 6206 [RFC6206], this document defines the following: | 6206 [RFC6206], this document defines the following: | |||
| o This document defines a "consistent" transmission as receiving an | o This document defines a "consistent" transmission as receiving an | |||
| MPL Data Message that has the same seed-id and sequence value as | MPL Data Message that has the same MPL Domain Address, seed-id, | |||
| the MPL Data Message managed by the Trickle timer. | and sequence value as the MPL Data Message managed by the Trickle | |||
| timer. | ||||
| o This document defines an "inconsistent" transmission as receiving | o This document defines an "inconsistent" transmission as receiving | |||
| an MPL Data Message that has the same seed-id value and the M flag | an MPL Data Message that has the same MPL Domain Address, seed-id | |||
| set, but has a sequence value less than MPL Data Message managed | value, and the M flag set, but has a sequence value less than MPL | |||
| by the Trickle timer. | Data Message managed by the Trickle timer. | |||
| o This document does not define any external "events". | o This document does not define any external "events". | |||
| o This document defines MPL Data Messages as Trickle messages. | o This document defines MPL Data Messages as Trickle messages. | |||
| o The actions outside the Trickle algorithm that the protocol takes | o The actions outside the Trickle algorithm that the protocol takes | |||
| involve managing Seed Set and Buffered Message Set | involve managing the MPL Domain's Seed Set and Buffered Message | |||
| Set. | ||||
| As specified in [RFC6206], a Trickle timer has three variables: the | As specified in [RFC6206], a Trickle timer has three variables: the | |||
| current interval size I, a time within the current interval t, and a | 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 | counter c. MPL defines a fourth variable, e, which counts the number | |||
| of Trickle timer expiration events since the Trickle timer was last | of Trickle timer expiration events since the Trickle timer was last | |||
| reset. | reset. | |||
| After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPL | After DATA_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, the MPL | |||
| Forwarder MUST disable the Trickle timer. When a buffered MPL Data | Forwarder MUST disable the Trickle timer. When a buffered MPL Data | |||
| Message does not have an associated Trickle timer, the MPL Forwarder | Message does not have an associated Trickle timer, the MPL Forwarder | |||
| skipping to change at page 20, line 40 ¶ | skipping to change at page 22, line 43 ¶ | |||
| 10.3. MPL Data Message Processing | 10.3. MPL Data Message Processing | |||
| Upon receiving an MPL Data Message, the MPL Forwarder first processes | Upon receiving an MPL Data Message, the MPL Forwarder first processes | |||
| the MPL Option and updates the Trickle timer associated with the MPL | the MPL Option and updates the Trickle timer associated with the MPL | |||
| Data Message if one exists. | Data Message if one exists. | |||
| Upon receiving an MPL Data Message, an MPL Forwarder MUST perform one | Upon receiving an MPL Data Message, an MPL Forwarder MUST perform one | |||
| of the following actions: | of the following actions: | |||
| o Accept the message and enter the MPL Data Message in the Buffered | o Accept the message and enter the MPL Data Message in the MPL | |||
| Message Set. | Domain's Buffered Message Set. | |||
| o Accept the message and update the corresponding MinSequence in the | o Accept the message and update the corresponding MinSequence in the | |||
| Seed Set to 1 greater than the message's sequence number. | MPL Domain's Seed Set to 1 greater than the message's sequence | |||
| number. | ||||
| o Discard the message without any change to the MPL Information | o Discard the message without any change to the MPL Information | |||
| Base. | Base. | |||
| If a Seed Set entry exists for the MPL Seed, the MPL Forwarder MUST | If a Seed Set entry exists for the MPL Seed, the MPL Forwarder MUST | |||
| discard the MPL Data Message if its sequence number is less than | discard the MPL Data Message if its sequence number is less than | |||
| MinSequence or exists in the Buffered Message Set. | MinSequence or exists in the Buffered Message Set. | |||
| If a Seed Set entry does not exist for the MPL Seed, the MPL | If a Seed Set entry does not exist for the MPL Seed, the MPL | |||
| Forwarder MUST create a new entry for the MPL Seed before accepting | Forwarder MUST create a new entry for the MPL Seed before accepting | |||
| the MPL Data Message. | the MPL Data Message. | |||
| If memory is limited, an MPL Forwarder SHOULD reclaim memory | If memory is limited, an MPL Forwarder SHOULD reclaim memory | |||
| resources by: | resources by: | |||
| o Incrementing MinSequence entries in the Seed Set and deleting MPL | o Incrementing MinSequence entries in a Seed Set and deleting MPL | |||
| Data Messages in the Buffered Message Set that fall below the | Data Messages in the corresponding Buffered Message Set that fall | |||
| corresponding MinSequence value. | below the MinSequence value. | |||
| o Deleting other Seed Set entries that have expired and the | o Deleting other Seed Set entries that have expired and the | |||
| corresponding MPL Data Messages in the Buffered Message Set. | corresponding MPL Data Messages in the Buffered Message Set. | |||
| If the MPL Forwarder accepts the MPL Data Message, the MPL Forwarder | If the MPL Forwarder accepts the MPL Data Message, the MPL Forwarder | |||
| MUST perform the following actions: | MUST perform the following actions: | |||
| o If PROACTIVE_PROPAGATION is true, the MPL Forwarder MUST | o Reset the Lifetime of the corresponding Seed Set entry to | |||
| initialize and start a Trickle timer for the MPL Data Message. | SEED_SET_ENTRY_LIFETIME. | |||
| o If PROACTIVE_FORWARDING is true, the MPL Forwarder MUST initialize | ||||
| and start a Trickle timer for the MPL Data Message. | ||||
| o If the MPL Control Message Trickle timer is not running and | o If the MPL Control Message Trickle timer is not running and | |||
| CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero, the MPL Forwarder | CONTROL_MESSAGE_TIMER_EXPIRATIONS is non-zero, the MPL Forwarder | |||
| MUST initialize and start the MPL Control Message Trickle timer. | MUST initialize and start the MPL Control Message Trickle timer. | |||
| o If the MPL Control Message Trickle timer is running, the MPL | o If the MPL Control Message Trickle timer is running, the MPL | |||
| Forwarder MUST reset the MPL Control Message Trickle timer. | Forwarder MUST reset the MPL Control Message Trickle timer. | |||
| 11. MPL Control Messages | 11. MPL Control Messages | |||
| 11.1. MPL Control Message Generation | 11.1. MPL Control Message Generation | |||
| An MPL Forwarder generates MPL Control Messages to communicate its | An MPL Forwarder generates MPL Control Messages to communicate an MPL | |||
| Seed Set and Buffered Message Set to neighboring MPL Forwarders. | Domain's Seed Set and Buffered Message Set to neighboring MPL | |||
| Each MPL Control Message is generated according to Section 6.2, with | Forwarders. Each MPL Control Message is generated according to | |||
| an MPL Seed Info for each entry in Seed Set. Each MPL Seed Info entry | Section 6.2, with an MPL Seed Info for each entry in the MPL Domain's | |||
| has the following content: | 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 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 min-seqno set to MinSequence of the MPL Seed. | |||
| o bm-len set to the size of buffered-mpl-messages in octets. | o bm-len set to the size of buffered-mpl-messages in octets. | |||
| o seed-id set to the MPL seed identifier. | o seed-id set to the MPL seed identifier. | |||
| o buffered-mpl-messages with each bit representing whether or not an | o buffered-mpl-messages with each bit representing whether or not an | |||
| MPL Data Message with the corresponding sequence number exists in | MPL Data Message with the corresponding sequence number exists in | |||
| the Buffered Message Set. The i'th bit represents a sequence | the Buffered Message Set. The i'th bit represents a sequence | |||
| number of min-seqno + i. '0' indicates that the corresponding MPL | number of min-seqno + i. '0' indicates that the corresponding MPL | |||
| Data Message does not exist in the Buffered Message Set. '1' | Data Message does not exist in the Buffered Message Set. '1' | |||
| indicates that the corresponding MPL Data Message does exist in | indicates that the corresponding MPL Data Message does exist in | |||
| the Buffered Message Set. | the Buffered Message Set. | |||
| 11.2. MPL Control Message Transmission | 11.2. MPL Control Message Transmission | |||
| An MPL Forwarder transmits MPL Control Messages using the Trickle | An MPL Forwarder transmits MPL Control Messages using the Trickle | |||
| algorithm. A MPL forwarder maintains a single Trickle timer for each | algorithm. An MPL Forwarder maintains a single Trickle timer for | |||
| MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the MPL | each MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the | |||
| Forwarder does not execute the Trickle algorithm and does not | MPL Forwarder does not execute the Trickle algorithm and does not | |||
| transmit MPL Control Messages. In accordance with Section 5 of RFC | transmit MPL Control Messages. In accordance with Section 5 of RFC | |||
| 6206 [RFC6206], this document defines the following: | 6206 [RFC6206], this document defines the following: | |||
| o This document defines a "consistent" transmission as receiving an | o This document defines a "consistent" transmission as receiving an | |||
| MPL Control Message that indicates neither the receiving nor | MPL Control Message that indicates neither the receiving nor | |||
| transmitting node has new MPL Data Message. | transmitting node has any new MPL Data Messages to offer. | |||
| o This document defines an "inconsistent" transmission as receiving | o This document defines an "inconsistent" transmission as receiving | |||
| an MPL Control Message that indicates either the receiving or | an MPL Control Message that indicates either the receiving or | |||
| transmitting node has at least one new MPL Data Message to offer. | transmitting node has at least one new MPL Data Message to offer. | |||
| o This document defines an "event" as increasing MinSequence of any | o This document defines an "event" as increasing MinSequence of any | |||
| entry in the Seed Set or adding a message to the Buffered Message | entry in the corresponding Seed Set or adding a message to the | |||
| Set. | corresponding Buffered Message Set. | |||
| o This document defines an MPL Control Message as a Trickle message. | o This document defines an MPL Control Message as a Trickle message. | |||
| As specified in [RFC6206], a Trickle timer has three variables: the | As specified in [RFC6206], a Trickle timer has three variables: the | |||
| current interval size I, a time within the current interval t, and a | 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 | counter c. MPL defines a fourth variable, e, which counts the number | |||
| of Trickle timer expiration events since the Trickle timer was last | of Trickle timer expiration events since the Trickle timer was last | |||
| reset. After CONTROL_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, | reset. After CONTROL_MESSAGE_TIMER_EXPIRATIONS Trickle timer events, | |||
| the MPL Forwarder MUST disable the Trickle timer. | the MPL Forwarder MUST disable the Trickle timer. | |||
| 11.3. MPL Control Message Processing | 11.3. MPL Control Message Processing | |||
| An MPL Forwarder processes each MPL Control Message that it receives | 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. | 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 | An MPL Forwarder determines if a new MPL Data Message has not been | |||
| received from a neighboring node if any of the following conditions | received from a neighboring node if any of the following conditions | |||
| hold true: | hold true: | |||
| o The MPL Control Message includes an MPL Seed that does not exist | o The MPL Control Message includes an MPL Seed that does not exist | |||
| in the Seed Set. | in the MPL Domain's Seed Set. | |||
| o The MPL Control Message indicates that the neighbor has an MPL | o The MPL Control Message indicates that the neighbor has an MPL | |||
| Data Message in its Buffered Message Set with sequence number | 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- | 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 | seqno + i > MinSequence) and is not included in the MPL Domain's | |||
| Forwarder's Buffered Message Set. | Buffered Message Set. | |||
| When an MPL Forwarder determines that it has not yet received an MPL | When an MPL Forwarder determines that it has not yet received an MPL | |||
| Data Message buffered by a neighboring device, the MPL Forwarder MUST | Data Message buffered by a neighboring device, the MPL Forwarder MUST | |||
| reset its Trickle timer associated with MPL Control Message | reset its Trickle timer associated with MPL Control Message | |||
| transmissions. If an MPL Control Message Trickle timer is not | transmissions. If an MPL Control Message Trickle timer is not | |||
| running, the MPL Forwarder MUST initialize and start a new Trickle | running, the MPL Forwarder MUST initialize and start a new Trickle | |||
| timer. | timer. | |||
| An MPL Forwarder determines if an MPL Data Message in the Buffered | An MPL Forwarder determines if an MPL Data Message in the Buffered | |||
| Message Set has not yet been received by a neighboring MPL Forwarder | Message Set has not yet been received by a neighboring MPL Forwarder | |||
| if any of the following conditions hold true: | if any of the following conditions hold true: | |||
| o The MPL Control Message does not include an MPL Seed for the MPL | o The MPL Control Message does not include an MPL Seed for the MPL | |||
| Data Message. | Data Message. | |||
| o The MPL Data Message's sequence number is greater than or equal to | 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 | min-seqno and not included in the neighbor's corresponding | |||
| (i.e. the MPL Data Message's sequence number does not have a | Buffered Message Set (i.e. the MPL Data Message's sequence number | |||
| corresponding bit in buffered-mpl-messages set to 1). | 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 | 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 | Message in its corresponding Buffered Message Set that has not yet | |||
| a neighbor, the MPL Forwarder MUST reset the MPL Control Message | been received by a neighbor, the MPL Forwarder MUST reset the MPL | |||
| Trickle timer. Additionally, for each of those entries in the | Control Message Trickle timer. Additionally, for each of those | |||
| Buffered Message Set, the MPL Forwarder MUST reset the Trickle timer | entries in the Buffered Message Set, the MPL Forwarder MUST reset the | |||
| and reset e to 0. If a Trickle timer is not associated with the MPL | Trickle timer and reset e to 0. If a Trickle timer is not associated | |||
| Data Message, the MPL Forwarder MUST initialize and start a new | with the MPL Data Message, the MPL Forwarder MUST initialize and | |||
| Trickle timer. | start a new Trickle timer. | |||
| 12. Acknowledgements | 12. Acknowledgements | |||
| The authors would like to acknowledge the helpful comments of Robert | The authors would like to acknowledge the helpful comments of Robert | |||
| Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Ulrich Herberg, Owen | Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Ulrich Herberg, Owen | |||
| Kirby, Joseph Reddy, Don Sturek, Dario Tedeschi, and Peter van der | Kirby, Joseph Reddy, Don Sturek, Dario Tedeschi, and Peter van der | |||
| Stok, which greatly improved the document. | Stok, which greatly improved the document. | |||
| 13. IANA Considerations | 13. IANA Considerations | |||
| skipping to change at page 26, line 48 ¶ | skipping to change at page 28, line 48 ¶ | |||
| +---------------+------+---------------------+---------------+ | +---------------+------+---------------------+---------------+ | |||
| | Mnemonic | Type | Name | Reference | | | Mnemonic | Type | Name | Reference | | |||
| +---------------+------+---------------------+---------------+ | +---------------+------+---------------------+---------------+ | |||
| | MPL_ICMP_TYPE | TBD | MPL Control Message | This Document | | | MPL_ICMP_TYPE | TBD | MPL Control Message | This Document | | |||
| +---------------+------+---------------------+---------------+ | +---------------+------+---------------------+---------------+ | |||
| Table 2: IPv6 Option Type Allocation | Table 2: IPv6 Option Type Allocation | |||
| 13.3. Well-known Multicast Addresses | 13.3. Well-known Multicast Addresses | |||
| IANA is requested to allocate an IPv6 multicast address | IANA is requested to allocate an IPv6 multicast address, with Group | |||
| ID in the range [0x01,0xFF] for 6LoWPAN compression [RFC6282], | ||||
| "ALL_MPL_FORWARDERS" from the "Variable Scope Multicast Addresses" | "ALL_MPL_FORWARDERS" from the "Variable Scope Multicast Addresses" | |||
| sub-registry of the "INTERNET PROTOCOL VERSION 6 MULTICAST ADDRESSES" | sub-registry of the "INTERNET PROTOCOL VERSION 6 MULTICAST ADDRESSES" | |||
| registry. | registry. | |||
| 14. Security Considerations | 14. Security Considerations | |||
| MPL uses sequence numbers to maintain a total ordering of MPL Data | MPL uses sequence numbers to maintain a total ordering of MPL Data | |||
| Messages from an MPL Seed. The use of sequence numbers allows a | Messages from an MPL Seed. The use of sequence numbers allows a | |||
| denial-of-service attack where an attacker can spoof a message with a | denial-of-service attack where an attacker can spoof a message with a | |||
| sufficiently large sequence number to: (i) flush messages from the | sufficiently large sequence number to: (i) flush messages from the | |||
| Buffered Message List and (ii) increase the MinSequence value for an | Buffered Message List and (ii) increase the MinSequence value for an | |||
| MPL Seed in the Seed Set. The former side effect allows an attacker | MPL Seed in the corresponding Seed Set. The former side effect allows | |||
| to halt the forwarding process of any MPL Data Messages being | an attacker to halt the forwarding process of any MPL Data Messages | |||
| disseminated. The latter side effect allows an attacker to prevent | being disseminated. The latter side effect allows an attacker to | |||
| MPL Forwarders from accepting new MPL Data Messages that an MPL Seed | prevent MPL Forwarders from accepting new MPL Data Messages that an | |||
| generates while the sequence number is less than MinSequence. | MPL Seed generates while the sequence number is less than | |||
| MinSequence. | ||||
| More generally, the basic ability to inject messages into a Low-power | More generally, the basic ability to inject messages into a Low-power | |||
| and Lossy Network can be used as a denial-of-service attack | and Lossy Network can be used as a denial-of-service attack | |||
| regardless of what forwarding protocol is used. For these reasons, | regardless of what forwarding protocol is used. For these reasons, | |||
| Low-power and Lossy Networks typically employ link-layer security | Low-power and Lossy Networks typically employ link-layer security | |||
| mechanisms to disable an attacker's ability to inject messages. | mechanisms to disable an attacker's ability to inject messages. | |||
| To prevent attackers from injecting packets through an MPL Forwarder, | To prevent attackers from injecting packets through an MPL Forwarder, | |||
| the MPL Forwarder MUST NOT accept or forward MPL Data Messages from a | the MPL Forwarder MUST NOT accept or forward MPL Data Messages from a | |||
| communication interface that does not subscribe to the MPL Domain | communication interface that does not subscribe to the MPL Domain | |||
| skipping to change at page 28, line 34 ¶ | skipping to change at page 30, line 34 ¶ | |||
| B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | B. Zill, "IPv6 Scoped Address Architecture", RFC 4007, | |||
| March 2005. | March 2005. | |||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control | [RFC4443] Conta, A., Deering, S., and M. Gupta, "Internet Control | |||
| Message Protocol (ICMPv6) for the Internet Protocol | Message Protocol (ICMPv6) for the Internet Protocol | |||
| Version 6 (IPv6) Specification", RFC 4443, March 2006. | Version 6 (IPv6) Specification", RFC 4443, March 2006. | |||
| [RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, | [RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, | |||
| "The Trickle Algorithm", RFC 6206, March 2011. | "The Trickle Algorithm", RFC 6206, March 2011. | |||
| [RFC6282] Hui, J. and P. Thubert, "Compression Format for IPv6 | ||||
| Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | ||||
| September 2011. | ||||
| [RFC6550] Winter, T., Thubert, P., Brandt, A., Hui, J., Kelsey, R., | [RFC6550] Winter, T., Thubert, P., Brandt, A., Hui, J., Kelsey, R., | |||
| Levis, P., Pister, K., Struik, R., Vasseur, JP., and R. | Levis, P., Pister, K., Struik, R., Vasseur, JP., and R. | |||
| Alexander, "RPL: IPv6 Routing Protocol for Low-Power and | Alexander, "RPL: IPv6 Routing Protocol for Low-Power and | |||
| Lossy Networks", RFC 6550, March 2012. | Lossy Networks", RFC 6550, March 2012. | |||
| Authors' Addresses | Authors' Addresses | |||
| Jonathan W. Hui | Jonathan W. Hui | |||
| Cisco | Cisco | |||
| 170 West Tasman Drive | 170 West Tasman Drive | |||
| End of changes. 75 change blocks. | ||||
| 179 lines changed or deleted | 242 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||