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.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |