draft-ietf-roll-trickle-mcast-11.txt | draft-ietf-roll-trickle-mcast-12.txt | |||
---|---|---|---|---|
ROLL J. Hui | ROLL J. Hui | |||
Internet-Draft Cisco | Internet-Draft Nest Labs | |||
Intended status: Standards Track R. Kelsey | Intended status: Standards Track R. Kelsey | |||
Expires: May 28, 2015 Silicon Labs | Expires: December 4, 2015 Silicon Labs | |||
November 24, 2014 | June 2, 2015 | |||
Multicast Protocol for Low power and Lossy Networks (MPL) | Multicast Protocol for Low power and Lossy Networks (MPL) | |||
draft-ietf-roll-trickle-mcast-11 | draft-ietf-roll-trickle-mcast-12 | |||
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 a MPL Domain. | |||
manage message transmissions for both control and data-plane | ||||
messages. Different Trickle parameter configurations allow MPL to | MPL has two modes of operation. One mode uses the Trickle algorithm | |||
trade between dissemination latency and transmission efficiency. | to manage control- and data-plane message transmissions, and is | |||
applicable for deployments with few multicast sources. The other | ||||
mode uses classic flooding. By providing both modes and | ||||
parameterization of the Trickle algorithm, a MPL implementation can | ||||
be used in a variety of multicast deployments and can 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 May 28, 2015. | This Internet-Draft will expire on December 4, 2015. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2015 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 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3. Applicability Statement . . . . . . . . . . . . . . . . . . . 4 | 3. Applicability Statement . . . . . . . . . . . . . . . . . . . 5 | |||
4. Protocol Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 4. MPL Protocol Overview . . . . . . . . . . . . . . . . . . . . 6 | |||
4.1. MPL Domains . . . . . . . . . . . . . . . . . . . . . . . 5 | 4.1. MPL Domains . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.2. Information Base Overview . . . . . . . . . . . . . . . . 6 | 4.2. Information Base Overview . . . . . . . . . . . . . . . . 7 | |||
4.3. Protocol Overview . . . . . . . . . . . . . . . . . . . . 6 | 4.3. Protocol Overview . . . . . . . . . . . . . . . . . . . . 7 | |||
4.4. Signaling Overview . . . . . . . . . . . . . . . . . . . 8 | 4.4. Signaling Overview . . . . . . . . . . . . . . . . . . . 9 | |||
5. MPL Parameters and Constants . . . . . . . . . . . . . . . . 9 | 5. MPL Parameters and Constants . . . . . . . . . . . . . . . . 9 | |||
5.1. MPL Multicast Addresses . . . . . . . . . . . . . . . . . 9 | 5.1. MPL Multicast Addresses . . . . . . . . . . . . . . . . . 9 | |||
5.2. MPL Message Types . . . . . . . . . . . . . . . . . . . . 9 | 5.2. MPL Message Types . . . . . . . . . . . . . . . . . . . . 10 | |||
5.3. MPL Seed Identifiers . . . . . . . . . . . . . . . . . . 9 | 5.3. MPL Seed Identifiers . . . . . . . . . . . . . . . . . . 10 | |||
5.4. MPL Parameters . . . . . . . . . . . . . . . . . . . . . 9 | 5.4. MPL Parameters . . . . . . . . . . . . . . . . . . . . . 10 | |||
6. Protocol Message Formats . . . . . . . . . . . . . . . . . . 11 | 6. Protocol Message Formats . . . . . . . . . . . . . . . . . . 12 | |||
6.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . 11 | 6.1. MPL Option . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 13 | 6.2. MPL Control Message . . . . . . . . . . . . . . . . . . . 14 | |||
6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 14 | 6.3. MPL Seed Info . . . . . . . . . . . . . . . . . . . . . . 15 | |||
7. Information Base . . . . . . . . . . . . . . . . . . . . . . 15 | 7. Information Base . . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 15 | 7.1. Local Interface Set . . . . . . . . . . . . . . . . . . . 16 | |||
7.2. Domain Set . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.2. Domain Set . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.3. Seed Set . . . . . . . . . . . . . . . . . . . . . . . . 15 | 7.3. Seed Set . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
7.4. Buffered Message Set . . . . . . . . . . . . . . . . . . 16 | 7.4. Buffered Message Set . . . . . . . . . . . . . . . . . . 16 | |||
8. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . . . 16 | 8. MPL Seed Sequence Numbers . . . . . . . . . . . . . . . . . . 17 | |||
9. MPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 16 | 9. MPL Data Messages . . . . . . . . . . . . . . . . . . . . . . 17 | |||
9.1. MPL Data Message Generation . . . . . . . . . . . . . . . 17 | 9.1. MPL Data Message Generation . . . . . . . . . . . . . . . 17 | |||
9.2. MPL Data Message Transmission . . . . . . . . . . . . . . 17 | 9.2. MPL Data Message Transmission . . . . . . . . . . . . . . 18 | |||
9.3. MPL Data Message Processing . . . . . . . . . . . . . . . 18 | 9.3. MPL Data Message Processing . . . . . . . . . . . . . . . 19 | |||
10. MPL Control Messages . . . . . . . . . . . . . . . . . . . . 19 | 10. MPL Control Messages . . . . . . . . . . . . . . . . . . . . 20 | |||
10.1. MPL Control Message Generation . . . . . . . . . . . . . 19 | 10.1. MPL Control Message Generation . . . . . . . . . . . . . 20 | |||
10.2. MPL Control Message Transmission . . . . . . . . . . . . 20 | 10.2. MPL Control Message Transmission . . . . . . . . . . . . 20 | |||
10.3. MPL Control Message Processing . . . . . . . . . . . . . 21 | 10.3. MPL Control Message Processing . . . . . . . . . . . . . 21 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
12.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . 22 | 12.1. MPL Option Type . . . . . . . . . . . . . . . . . . . . 22 | |||
12.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . 22 | 12.2. MPL ICMPv6 Type . . . . . . . . . . . . . . . . . . . . 23 | |||
12.3. Well-known Multicast Addresses . . . . . . . . . . . . . 23 | 12.3. Well-known Multicast Addresses . . . . . . . . . . . . . 23 | |||
13. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | 13. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
14.1. Normative References . . . . . . . . . . . . . . . . . . 24 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 24 | |||
14.2. Informative References . . . . . . . . . . . . . . . . . 25 | 14.2. Informative References . . . . . . . . . . . . . . . . . 25 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 25 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
1. Introduction | 1. Introduction | |||
Low power and Lossy Networks typically operate with strict resource | Low power and Lossy Networks (LLNs) typically operate with strict | |||
constraints in communication, computation, memory, and energy. Such | resource constraints in communication, computation, memory, and | |||
resource constraints may preclude the use of existing IPv6 multicast | energy. Such resource constraints may preclude the use of existing | |||
routing and forwarding mechanisms. Traditional IP multicast delivery | IPv6 multicast routing and forwarding mechanisms. Traditional IP | |||
typically relies on topology maintenance mechanisms to discover and | multicast delivery typically relies on topology maintenance | |||
maintain routes to all subscribers of a multicast group (e.g. | mechanisms to discover and maintain routes to all subscribers of a | |||
[RFC3973] [RFC4601]). However, maintaining such topologies in Low | multicast group (e.g. [RFC3973] [RFC4601]). However, maintaining | |||
power and Lossy Networks (LLNs) is costly and may not be feasible | such topologies in Low power and Lossy Networks is costly and may not | |||
given the available resources. | be feasible given the available resources. | |||
Memory constraints may limit devices to maintaining links/routes to | Memory constraints may limit devices to maintaining links/routes to | |||
one or a few neighbors. For this reason, the Routing Protocol for | one or a few neighbors. For this reason, the Routing Protocol for | |||
LLNs (RPL) specifies both storing and non-storing modes [RFC6550]. | LLNs (RPL) specifies both storing and non-storing modes [RFC6550]. | |||
The latter allows RPL routers to maintain only one or a few default | The latter allows RPL routers to maintain only one or a few default | |||
routes towards a LLN Border Router (LBR) and use source routing to | routes towards a LLN Border Router (LBR) and use source routing to | |||
forward messages away from the LBR. For the same reasons, a LLN | forward messages away from the LBR. For the same reasons, a LLN | |||
device may not be able to maintain a multicast routing topology when | device may not be able to maintain a multicast routing topology when | |||
operating with limited memory. | operating with limited memory. | |||
skipping to change at page 3, line 39 | skipping to change at page 3, line 45 | |||
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 a 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 MPL. An MPL Forwarder | MPL Forwarder - A router that implements MPL. A MPL Forwarder | |||
is equipped with at least one MPL Interface. | is equipped with at least one MPL Interface. | |||
MPL Interface - An MPL Forwarder's attachment to a | MPL Interface - A 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. A 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. | |||
MPL Domain Address - A multicast address that identifies the set of | MPL Domain Address - A multicast address that identifies the set of | |||
MPL Interfaces within an MPL Domain. MPL Data | MPL Interfaces within a MPL Domain. MPL Data | |||
Messages disseminated in an MPL Domain have the | Messages disseminated in a 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 within | a multicast payload between MPL Forwarders within | |||
an MPL domain. An MPL Data Message contains an | a MPL domain. A MPL Data Message contains a MPL | |||
MPL Option in the IPv6 header and has as its | Option in the IPv6 header and has as its | |||
destination address the MPL Domain Address | destination address the MPL Domain Address | |||
corresponding to the MPL Domain. | 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 - A MPL Forwarder that generates MPL Data | |||
Messages and serves as an entry point into an MPL | Messages and serves as an entry point into a MPL | |||
Domain. | Domain. | |||
MPL Seed Identifier - An unsigned integer that uniquely identifies an | MPL Seed Identifier - An unsigned integer that uniquely identifies a | |||
MPL Seed within an MPL Domain. | MPL Seed within a MPL Domain. | |||
Node - The term "node" is used within this document to | ||||
refer to a MPL Forwarder. | ||||
3. Applicability Statement | 3. Applicability Statement | |||
MPL is an IPv6 multicast forwarding protocol designed for the | MPL is an IPv6 multicast forwarding protocol designed for the | |||
communication characteristics and resource constraints of Low-Power | communication characteristics and resource constraints of Low-Power | |||
and Lossy Networks. By implementing controlled disseminations of | and Lossy Networks. By implementing controlled disseminations of | |||
multicast messages using the Trickle algorithm, MPL is designed for | multicast messages using the Trickle algorithm, MPL is designed for | |||
networks that communicate using low-power and lossy links with widely | networks that communicate using low-power and lossy links with widely | |||
varying topologies in both the space and time dimensions. | varying topologies in both the space and time dimensions. | |||
skipping to change at page 5, line 23 | skipping to change at page 5, line 35 | |||
MPL Domain and the host. However, a host may choose to implement MPL | MPL Domain and the host. However, a host may choose to implement MPL | |||
so that it can take advantage of the broadcast medium inherent in | so that it can take advantage of the broadcast medium inherent in | |||
many Low-Power and Lossy Networks and receive multicast messages | many Low-Power and Lossy Networks and receive multicast messages | |||
carried by MPL directly. | carried by MPL directly. | |||
MPL is parameterized to support different dissemination techniques. | MPL is parameterized to support different dissemination techniques. | |||
In one parameterization, MPL may utilize the classic flooding method | In one parameterization, MPL may utilize the classic flooding method | |||
that involves having each device receiving a message rebroadcast the | that involves having each device receiving a message rebroadcast the | |||
message. In another parameterization, MPL may utilize Trickle's | message. In another parameterization, MPL may utilize Trickle's | |||
[RFC6206] "polite gossip" method that involves transmission | [RFC6206] "polite gossip" method that involves transmission | |||
suppression and adaptive timing techniques. By supporting both | suppression and adaptive timing techniques. [Clausen2013] questions | |||
simple flooding and Trickle methods, MPL can be configured to operate | the efficiency of Trickle's "polite gossip" mechanism in some | |||
well in a variety of situations [Clausen2013]. | multicast scenarios, so by also including a classic flooding mode of | |||
operation MPL aims to be able to perform satisfactorily in a variety | ||||
of situations. | ||||
To support effecient message delievery in networks that have many | To support efficient message delivery in networks that have many poor | |||
poor links, MPL supports a reactive forwarding mode that utilizes MPL | links, MPL supports a reactive forwarding mode that utilizes MPL | |||
Control Messages to summarize the current multicast state. The MPL | Control Messages to summarize the current multicast state. The MPL | |||
Control Message size grows linearly with the number of simultaneous | Control Message size grows linearly with the number of simultaneous | |||
MPL Seeds in the MPL Domain - 4 octets per MPL Seed. When reactive | MPL Seeds in the MPL Domain - 4 octets per MPL Seed. When reactive | |||
forwarding is not enabled, MPL Control Messages are not transmitted | forwarding is not enabled, MPL Control Messages are not transmitted | |||
and the associated overhead is not incurred. | and the associated overhead is not incurred. | |||
4. Protocol Overview | This document does not specify a cryptographic security mechanism for | |||
MPL to ensure that MPL messages are not spoofed by anyone with access | ||||
to the LLN. In general, the basic ability to inject messages into a | ||||
Low-power and Lossy Network may be used as a denial-of-service attack | ||||
regardless of what forwarding protocol is used. For these reasons, | ||||
Low-power and Lossy Networks typically employ link-layer security | ||||
mechanisms to mitigate an attacker's ability to inject messages. For | ||||
example, the IEEE 802.15.4 [IEEE802154] standard specifies frame | ||||
security mechanisms using AES-128 to support access control, message | ||||
integrity, message confidentiality, and replay protection. However, | ||||
if the attack vector includes attackers that have access to the LLN, | ||||
then MPL SHOULD NOT be used. | ||||
4. MPL Protocol Overview | ||||
The goal of MPL is to deliver multicast messages to all interfaces | The goal of MPL is to deliver multicast messages to all interfaces | |||
that subscribe to the multicast messages' destination address within | that subscribe to the multicast messages' destination address within | |||
an MPL Domain. | a MPL Domain. | |||
4.1. MPL Domains | 4.1. MPL Domains | |||
An MPL Domain is a scope zone, as defined in [RFC4007], in which MPL | A 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 SHOULD participate in an MPL Domain | When participating in only one MPL Domain, the MPL Domain Address is | |||
identified by the ALL_MPL_FORWARDERS multicast address with a scope | the ALL_MPL_FORWARDERS multicast address with Realm-Local scope (scop | |||
value of 3 (Realm-Local) [RFC7346]. | value 3) [RFC7346]. | |||
When a MPL Forwarder participates in multiple MPL Domains | ||||
simultaneously, at most one MPL Domain may be assigned a MPL Domain | ||||
Address equal to the ALL_MPL_FORWARDERS multicast address. All other | ||||
MPL Domains MUST be assigned a unique MPL Domain Address that allows | ||||
the MPL Forwarder to identify each MPL Domain. The MPL Domains | ||||
SHOULD be configured automatically based on some underlying topology. | ||||
For example, when using RPL [RFC6550], MPL Domains may be configured | ||||
based on RPL Instances. | ||||
When MPL is used in deployments that use administratively defined | When MPL is used in deployments that use administratively defined | |||
scopes that cover, for example, multiple subnets based on different | scopes that cover, for example, multiple subnets based on different | |||
underlying network technologies, Admin-Local scope (scop value 4) or | underlying network technologies, Admin-Local scope (scop value 4) or | |||
Site-Local scope (scop value 5) SHOULD be used. | Site-Local scope (scop value 5) SHOULD be used. | |||
An MPL Forwarder MAY participate in additional MPL Domains identified | A MPL Forwarder MAY participate in additional MPL Domains identified | |||
by other multicast addresses. An MPL Interface MUST subscribe to the | by other multicast addresses. A 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 assignment 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 a 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 | Link-Local scope (scop value 2) when reactive forwarding is in use | |||
(i.e. when communicating MPL Control Messages). | (i.e. when communicating MPL Control Messages). | |||
4.2. Information Base Overview | 4.2. Information Base Overview | |||
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 A 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 within an MPL Domain. Each MPL Domain | received from a MPL Seed within a MPL Domain. Each MPL Domain has | |||
has an associated Seed Set. A Seed Set maintains the minimum | an associated Seed Set. A Seed Set maintains the minimum sequence | |||
sequence number for MPL Data Messages that the MPL Forwarder is | number for MPL Data Messages that the MPL Forwarder is willing to | |||
willing to receive or has buffered in its Buffered Message Set | receive or has buffered in its Buffered Message Set from a MPL | |||
from an MPL Seed. MPL uses Seed Sets and Buffered Message Sets to | Seed. MPL uses Seed Sets and Buffered Message Sets to determine | |||
determine when to accept an MPL Data Message, process its payload, | when to accept a MPL Data Message, process its payload, and | |||
and retransmit it. | retransmit it. | |||
o A Buffered Message Set records recently received MPL Data Messages | o A Buffered Message Set records recently received MPL Data Messages | |||
from an MPL Seed within an MPL Domain. Each MPL Domain has an | from a MPL Seed within a MPL Domain. Each MPL Domain has an | |||
associated Buffered Message Set. MPL Data Messages resident in a | 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 corresponding | or equal to the minimum threshold maintained in the corresponding | |||
Seed Set. MPL uses Buffered Message Sets to store MPL Data | Seed Set. MPL uses Buffered Message Sets to store MPL Data | |||
Messages that may be transmitted by the MPL Forwarder for | Messages that may be transmitted by the MPL Forwarder for | |||
forwarding. | forwarding. | |||
4.3. Protocol Overview | 4.3. Protocol 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 a MPL Domain. MPL performs the following tasks to disseminate | |||
disseminate a multicast message: | 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 a MPL Domain, the | |||
MPL Seed generates an MPL Data Message that includes the MPL | MPL Seed generates a MPL Data Message that includes the MPL Domain | |||
Domain Address as the IPv6 Destination Address, the MPL Seed | Address as the IPv6 Destination Address, the MPL Seed Identifier, | |||
Identifier, a newly generated sequence number, and the multicast | a newly generated sequence number, and the multicast message. If | |||
message. If the multicast destination address is not the MPL | the multicast destination address is not the MPL Domain Address, | |||
Domain Address, IP-in-IP [RFC2473] is used to encapsulate the | IP-in-IP [RFC2473] is used to encapsulate the multicast message in | |||
multicast message in an MPL Data Message, preserving the original | a MPL Data Message, preserving the original IPv6 Destination | |||
IPv6 Destination Address. | Address. | |||
o Upon receiving an MPL Data Message, the MPL Forwarder extracts the | o Upon receiving a 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 MPL Domain's Seed | Data Message was previously received using the MPL Domain's Seed | |||
Set and 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, a 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 an MPL Domain's Seed Set and Buffered Message Set. | contained in a MPL Domain's Seed Set and Buffered Message Set. | |||
o Upon receiving an MPL Control Message, an MPL Forwarder determines | o Upon receiving a MPL Control Message, a 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 via MPL Interfaces. | disseminating MPL Data Messages via MPL Interfaces. | |||
Proactive Forwarding - With proactive forwarding, an MPL Forwarder | Proactive Forwarding - With proactive forwarding, a 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. | proactive forwarding for the MPL Data Message. | |||
Reactive Forwarding - With reactive forwarding, an MPL Forwarder | Reactive Forwarding - With reactive forwarding, a 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 an MPL Data Message, the MPL Forwarder schedules those | received a MPL Data Message, the MPL Forwarder schedules those MPL | |||
MPL Data Messages for transmission using the Trickle algorithm. | Data Messages for transmission using the Trickle algorithm. | |||
Note that the use of proactive and reactive forwarding strategies | Note that the use of proactive and reactive forwarding strategies | |||
within the same MPL Domain are not mutually exclusive and may be used | within the same MPL Domain are not mutually exclusive and may be used | |||
simultaneously. For example, upon receiving a new MPL Data Message | simultaneously. For example, upon receiving a new MPL Data Message | |||
when both proactive and reactive forwarding techniques are enabled, | when both proactive and reactive forwarding techniques are enabled, a | |||
an MPL Forwarder will proactively retransmit the MPL Data Message a | MPL Forwarder will proactively retransmit the MPL Data Message a | |||
limited number of times and schedule further transmissions upon | limited number of times and schedule further transmissions upon | |||
receiving MPL Control Messages. | receiving MPL Control Messages. | |||
4.4. Signaling Overview | 4.4. Signaling Overview | |||
MPL generates and processes the following messages: | MPL generates and processes the following messages: | |||
MPL Data Message - Generated by an MPL Seed to deliver a multicast | MPL Data Message - Generated by a MPL Seed to deliver a multicast | |||
message across an MPL Domain. The MPL Data Message's source is an | message across a 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 | |||
Message's destination is the MPL Domain Address corresponding to | Message's destination is the MPL Domain Address corresponding to | |||
the MPL Domain. An MPL Data Message contains: | the MPL Domain. A MPL Data Message contains: | |||
* 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 a MPL Forwarder to communicate | |||
information contained in an MPL Domain's Seed Set and Buffered | information contained in a MPL Domain's Seed Set and Buffered | |||
Message Set to neighboring MPL Forwarders. An MPL Control Message | Message Set to neighboring MPL Forwarders. A MPL Control Message | |||
contains a list of tuples for each entry in the Seed Set. Each | contains a list of tuples for each entry in the Seed Set. Each | |||
tuple 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 Parameters and Constants | 5. MPL Parameters and Constants | |||
This section describes various program and networking parameters and | This section describes various program and networking parameters and | |||
constants used by MPL. | constants used by MPL. | |||
5.1. MPL 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 a | |||
an MPL Domain. By default, MPL Forwarders subscribe to the | MPL Domain. By default, MPL Forwarders subscribe to the | |||
ALL_MPL_FORWARDERS multicast address with a scope value of 3 | ALL_MPL_FORWARDERS multicast address with Realm-Local scope (scop | |||
[RFC7346]. | value 3) [RFC7346]. | |||
For each MPL Domain Address that an MPL Interface subscribes to, the | For each MPL Domain Address that a 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 | |||
scope value of 2 (link-local) when reactive forwarding is in use. | Link-Local scope (scop value 2) 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. MPL 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 a MPL Seed Identifier and a | |||
sequence number within an MPL Data Message. The IPv6 Option Type has | sequence number within a MPL Data Message. The IPv6 Option Type has | |||
value 0x6D. | value 0x6D. | |||
MPL defines an ICMPv6 Message (MPL Control Message) for communicating | MPL defines an ICMPv6 Message (MPL Control Message) for communicating | |||
information contained in an MPL Domain's Seed Set and Buffered | information contained in a MPL Domain's Seed Set and Buffered Message | |||
Message Set to neighboring MPL Forwarders. The MPL Control Message | Set to neighboring MPL Forwarders. The MPL Control Message has | |||
has ICMPv6 Type MPL_ICMP_TYPE. | ICMPv6 Type MPL_ICMP_TYPE. | |||
5.3. MPL Seed Identifiers | 5.3. MPL Seed Identifiers | |||
MPL uses MPL Seed Identifiers to uniquely identify MPL Seeds within | MPL uses MPL Seed Identifiers to uniquely identify MPL Seeds within a | |||
an MPL Domain. For each MPL Domain that the MPL Forwarder serves as | MPL Domain. For each MPL Domain that the MPL Forwarder serves as a | |||
an MPL Seed, the MPL Forwarder MUST have an associated MPL Seed | MPL Seed, the MPL Forwarder MUST have an associated MPL Seed | |||
Identifier. An MPL Forwarder MAY use the same MPL Seed Identifier | Identifier. A MPL Forwarder MAY use the same MPL Seed Identifier | |||
across multiple MPL Domains, but the MPL Seed Identifier MUST be | across multiple MPL Domains, but the MPL Seed Identifier MUST be | |||
unique within each MPL Domain. The mechanism for assigning and | unique within each MPL Domain. The mechanism for assigning and | |||
verifying uniqueness of MPL Seed Identifiers is not specified in this | verifying uniqueness of MPL Seed Identifiers is not specified in this | |||
document. | document. | |||
5.4. MPL Parameters | 5.4. MPL Parameters | |||
PROACTIVE_FORWARDING A boolean value that indicates whether the MPL | PROACTIVE_FORWARDING A boolean value that indicates whether the MPL | |||
Forwarder schedules MPL Data Message transmissions after receiving | Forwarder schedules MPL Data Message transmissions after receiving | |||
them for the first time. PROACTIVE_FORWARDING has a default value | them for the first time. PROACTIVE_FORWARDING has a default value | |||
of TRUE. The mechanism for setting PROACTIVE_FORWARDING is not | of TRUE. All MPL interfaces on the same link SHOULD be configured | |||
specified within this document. | with the same value of PROACTIVE_FORWARDING. An implementation | |||
MAY choose to vary the value of PROACTIVE_FORWARDING across | ||||
interfaces on the same link if reactive forwarding is also in use. | ||||
The mechanism for setting PROACTIVE_FORWARDING is not specified | ||||
within this document. | ||||
SEED_SET_ENTRY_LIFETIME The minimum lifetime for an entry in the | SEED_SET_ENTRY_LIFETIME The minimum lifetime for an entry in the | |||
Seed Set. SEED_SET_ENTRY_LIFETIME has a default value of 30 | Seed Set. SEED_SET_ENTRY_LIFETIME has a default value of 30 | |||
minutes. It is RECOMMENDED that all MPL Forwarders use the same | minutes. It is RECOMMENDED that all MPL Forwarders use the same | |||
value for SEED_SET_ENTRY_LIFETIME for a given MPL Domain and use a | value for SEED_SET_ENTRY_LIFETIME for a given MPL Domain and use a | |||
default value of 30 minutes. Using a value of | default value of 30 minutes. Using a value of | |||
SEED_SET_ENTRY_LIFETIME that is too small can cause the duplicate | SEED_SET_ENTRY_LIFETIME that is too small can cause the duplicate | |||
detection mechanism to fail, resulting in a MPL Forwarder to | detection mechanism to fail, resulting in a MPL Forwarder to | |||
receive a given MPL Data Message more than once. The mechanism | receive a given MPL Data Message more than once. The mechanism | |||
for setting SEED_SET_ENTRY_LIFETIME is not specified within this | for setting SEED_SET_ENTRY_LIFETIME is not specified within this | |||
skipping to change at page 11, line 27 | skipping to change at page 12, line 19 | |||
As described in [RFC6206], if different nodes have different | As described in [RFC6206], if different nodes have different | |||
configuration parameters, Trickle may have unintended behaviors. | configuration parameters, Trickle may have unintended behaviors. | |||
Therefore, it is RECOMMENDED that all MPL Interfaces attached to the | Therefore, it is RECOMMENDED that all MPL Interfaces attached to the | |||
same link of a given MPL Domain use the same values for the Trickle | same link of a given MPL Domain use the same values for the Trickle | |||
Parameters above for a given MPL Domain. The mechanism for setting | Parameters above for a given MPL Domain. The mechanism for setting | |||
the Trickle Parameters is not specified within this document. | the Trickle Parameters is not specified within this document. | |||
The default MPL parameters specify a forwarding strategy that | The default MPL parameters specify a forwarding strategy that | |||
utilizes both proactive and reactive techniques. Using these default | utilizes both proactive and reactive techniques. Using these default | |||
values, an MPL Forwarder proactively transmits any new MPL Data | values, a MPL Forwarder proactively transmits any new MPL Data | |||
Messages it receives then uses MPL Control Messages to trigger | Messages it receives then uses MPL Control Messages to trigger | |||
additional MPL Data Message retransmissions where message drops are | additional MPL Data Message retransmissions where message drops are | |||
detected. Setting DATA_MESSAGE_IMAX to the same as DATA_MESSAGE_IMIN | detected. Setting DATA_MESSAGE_IMAX to the same as DATA_MESSAGE_IMIN | |||
in this case is acceptable since subsequent MPL Data Message | in this case is acceptable since subsequent MPL Data Message | |||
retransmissions are triggered by MPL Control Messages, where | retransmissions are triggered by MPL Control Messages, where | |||
CONTROL_MESSAGE_IMAX is greater than CONTROL_MESSAGE_IMIN. | CONTROL_MESSAGE_IMAX is greater than CONTROL_MESSAGE_IMIN. | |||
6. Protocol Message Formats | 6. Protocol Message Formats | |||
The protocol messages generated and processed by an MPL Forwarder are | Messages generated and processed by a MPL Forwarder are described in | |||
described in this section. | 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 | |||
Option has the following format: | Option 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 12, line 31 | skipping to change at page 13, line 16 | |||
unsigned integer. 2 indicates that the seed-id | unsigned integer. 2 indicates that the seed-id | |||
is a 64-bit unsigned integer. 3 indicates that | is a 64-bit unsigned integer. 3 indicates that | |||
the seed-id is a 128-bit unsigned integer. | the 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 Data | conforms to this specification. MPL Data | |||
Messages with an MPL Option in which this flag is | Messages with a MPL Option in which this flag is | |||
1 MUST be dropped. | 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 | |||
of seed-id is indicated by the S field. | of seed-id is indicated by the S field. | |||
The Option Data (in particular the M flag) of the MPL Option is | The Option Data (specifically 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 a MPL Seed. When seed-id is 128 bits | |||
bits (S=3), the MPL Seed MAY use an IPv6 address assigned to one of | (S=3), the MPL Seed MAY use an IPv6 address assigned to one of its | |||
its interfaces that is unique within the MPL Domain. Managing MPL | interfaces that is unique within the MPL Domain. Managing MPL Seed | |||
Seed Identifiers is not within scope of this document. | 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 a MPL Seed for a 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 a 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 | A MPL Forwarder uses ICMPv6 messages to communicate information | |||
contained in an MPL Domain's Seed Set and Buffered Message Set to | contained in a MPL Domain's Seed Set and Buffered Message Set to | |||
neighboring MPL Forwarders. The MPL Control Message has the | neighboring MPL Forwarders. The MPL Control Message has the | |||
following format: | 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[0..n] . | . MPL Seed Info[0..n] . | |||
skipping to change at page 14, line 4 | skipping to change at page 14, line 36 | |||
within the MPL Domain. | 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[0..n] List of zero 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 MPL Domain's Buffered Message Set. The | Messages that are within the MPL Domain's Buffered Message Set. The | |||
MPL Control Message also indicates the sequence numbers of MPL Data | MPL Control Message also indicates the sequence numbers of MPL Data | |||
Messages that an MPL Forwarder is willing to receive. The MPL | Messages that a MPL Forwarder is willing to receive. The MPL Control | |||
Control Message allows neighboring MPL Forwarders to determine | Message allows neighboring MPL Forwarders to determine whether there | |||
whether there are any new MPL Data Messages to exchange. | 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 an MPL Seed | A MPL Seed Info encodes the minimum sequence number for an MPL Seed | |||
maintained in the MPL Domain's Seed Set. The MPL Seed Info also | maintained in the MPL Domain's Seed Set. The MPL Seed Info also | |||
indicates the sequence numbers of MPL Data Messages generated by the | indicates the sequence numbers of MPL Data Messages generated by the | |||
MPL Seed that are stored within the MPL Domain's Buffered Message | MPL Seed that are stored within the MPL Domain's Buffered Message | |||
Set. The MPL Seed Info has the following 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) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
skipping to change at page 15, line 24 | skipping to change at page 16, line 9 | |||
the Buffered Message Set. '1' indicates that the | the Buffered Message Set. '1' indicates that the | |||
corresponding MPL Data Message does exist in the | corresponding MPL Data Message does exist in the | |||
Buffered Message Set. | 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 a 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). | |||
AddressSet - a set of unicast addresses assigned to the MPL | AddressSet - a set of unicast addresses assigned to the MPL | |||
Interface. | Interface. | |||
7.2. Domain Set | 7.2. Domain Set | |||
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 | |||
A 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 a MPL Forwarder is willing to | |||
accept generated by the MPL Seed. An MPL Forwarder maintains a Seed | accept generated by the MPL Seed. A MPL Forwarder maintains a Seed | |||
Set for each MPL Domain that it participates in. A Seed Set consists | Set for each MPL Domain that it participates in. A Seed Set consists | |||
of MPL Seed Tuples: (SeedID, MinSequence, Lifetime). | 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. A 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 remaining lifetime of the Seed Set | Lifetime - indicates the minimum remaining lifetime of the Seed Set | |||
entry. An MPL Forwarder MUST NOT free a Seed Set entry before the | entry. A MPL Forwarder MUST NOT free a Seed Set entry before the | |||
remaining lifetime expires. | remaining lifetime expires. | |||
7.4. Buffered Message Set | 7.4. Buffered Message Set | |||
A Buffered Message Set records recently received MPL Data Messages | A Buffered Message Set records recently received MPL Data Messages | |||
from an MPL Seed within an MPL Domain. An MPL Forwarder uses a | from a MPL Seed within a MPL Domain. A MPL Forwarder uses a Buffered | |||
Buffered Message Set to buffer MPL Data Messages while the MPL | Message Set to buffer MPL Data Messages while the MPL Forwarder is | |||
Forwarder is forwarding the MPL Data Messages. An MPL Forwarder | forwarding the MPL Data Messages. A MPL Forwarder maintains a | |||
maintains a Buffered Message Set for each MPL Domain that it | Buffered Message Set for each MPL Domain that it participates in. A | |||
participates in. A Buffered Message Set consists of Buffered Message | Buffered Message Set consists of Buffered Message Tuples: (SeedID, | |||
Tuples: (SeedID, SequenceNumber, DataMessage). | 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 a 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 a MPL Seed, | |||
the MPL Forwarder MUST delete any MPL Data Messages from the | the MPL Forwarder MUST delete any MPL Data Messages from the | |||
corresponding Buffered Message Set that have sequence numbers less | corresponding Buffered Message Set that have sequence numbers less | |||
than MinSequence. | than MinSequence. | |||
8. MPL Seed Sequence Numbers | 8. 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 | |||
generated by the MPL Seed. The MPL Seed MUST increment the sequence | generated by the MPL Seed. The MPL Seed MUST increment the sequence | |||
number for each MPL Data Message that it generates for an MPL Domain. | number for each MPL Data Message that it generates for a MPL Domain. | |||
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 a MPL Seed for a MPL | |||
Domain. | Domain. | |||
9. MPL Data Messages | 9. MPL Data Messages | |||
9.1. MPL Data Message Generation | 9.1. MPL Data Message Generation | |||
MPL Data Messages are generated by MPL Seeds when these messages | MPL Data Messages are generated by MPL Seeds when these messages | |||
enter the MPL Domain. All MPL Data messages have the following | enter the MPL Domain. All MPL Data messages have the following | |||
properties: | 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. | |||
skipping to change at page 17, line 17 | skipping to change at page 17, line 48 | |||
enter the MPL Domain. All MPL Data messages have the following | enter the MPL Domain. All MPL Data messages have the following | |||
properties: | 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 An MPL Data Message MUST contain an MPL Option in its IPv6 Header | o A MPL Data Message MUST contain a MPL Option in its IPv6 Header to | |||
to identify the MPL Seed that generated the message and the | identify the MPL Seed that generated the message and the ordering | |||
ordering relative to other MPL Data Messages generated by the MPL | relative to other MPL Data Messages generated by the MPL Seed. | |||
Seed. | ||||
When the destination address is an MPL Domain Address and the source | When the destination address is a MPL Domain Address and the source | |||
address is in the AddressLIst of an MPL Interface that belongs to | address is in the AddressLIst of a MPL Interface that belongs to that | |||
that MPL Domain Address, the application message and the MPL Data | MPL Domain Address, the application message and the MPL Data Message | |||
Message MAY be identical. In other words, the MPL Data Message may | MAY be identical. In other words, the MPL Data Message may contain a | |||
contain a single IPv6 header that includes the MPL Option. | 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 a 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. | |||
9.2. MPL Data Message Transmission | 9.2. MPL Data Message Transmission | |||
An MPL Forwarder manages transmission of MPL Data Messages in its | A MPL Forwarder manages transmission of MPL Data Messages in its | |||
Buffered Message Sets using the Trickle algorithm [RFC6206]. An MPL | Buffered Message Sets using the Trickle algorithm [RFC6206]. A 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 a | |||
MPL Data Message that has the same MPL Domain Address, seed-id, | MPL Data Message that has the same MPL Domain Address, seed-id, | |||
and sequence value as the MPL Data Message managed by the Trickle | and sequence value as the MPL Data Message managed by the Trickle | |||
timer. | 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 MPL Domain Address, seed-id | a MPL Data Message that has the same MPL Domain Address, seed-id | |||
value, and the M flag set, but has a sequence value less than MPL | value, and the M flag set, but has a sequence value less than MPL | |||
Data Message managed 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 MPL takes involve | |||
involve managing the MPL Domain's Seed Set and Buffered Message | managing the MPL Domain's Seed Set and Buffered Message Set. | |||
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 | |||
MAY delete the message from the Buffered Message Set by advancing | MAY delete the message from the Buffered Message Set by advancing | |||
MinSequence of the corresponding MPL Seed in the Seed Set. When the | MinSequence of the corresponding MPL Seed in the Seed Set. When the | |||
MPL Forwarder no longer buffers any messages for an MPL Seed, the MPL | MPL Forwarder no longer buffers any messages for a MPL Seed, the MPL | |||
Forwarder MUST NOT increment MinSequence for that MPL Seed. | Forwarder MUST NOT increment MinSequence for that MPL Seed. | |||
When transmitting an MPL Data Message, the MPL Forwarder MUST either | When transmitting a MPL Data Message, the MPL Forwarder MUST either | |||
set the M flag to zero or set it to a level that indicates whether or | set the M flag to zero or set it to a level that indicates whether or | |||
not the message's sequence number is the largest value that has been | not the message's sequence number is the largest value that has been | |||
received from the MPL Seed. | received from the MPL Seed. | |||
9.3. MPL Data Message Processing | 9.3. MPL Data Message Processing | |||
Upon receiving an MPL Data Message, the MPL Forwarder first processes | Upon receiving a 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 a MPL Data Message, a 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 MPL | o Accept the message and enter the MPL Data Message in the MPL | |||
Domain's Buffered 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 | |||
MPL Domain's Seed Set to 1 greater than the message's sequence | MPL Domain's Seed Set to 1 greater than the message's sequence | |||
number. | 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, a MPL Forwarder SHOULD reclaim memory resources | |||
resources by: | by: | |||
o Incrementing MinSequence entries in a Seed Set and deleting MPL | o Incrementing MinSequence entries in a Seed Set and deleting MPL | |||
Data Messages in the corresponding Buffered Message Set that fall | Data Messages in the corresponding Buffered Message Set that fall | |||
below the 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: | |||
skipping to change at page 19, line 43 | skipping to change at page 20, line 22 | |||
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. | |||
10. MPL Control Messages | 10. MPL Control Messages | |||
10.1. MPL Control Message Generation | 10.1. MPL Control Message Generation | |||
An MPL Forwarder generates MPL Control Messages to communicate an MPL | A MPL Forwarder generates MPL Control Messages to communicate a MPL | |||
Domain's Seed Set and Buffered Message Set to neighboring MPL | Domain's Seed Set and Buffered Message Set to neighboring MPL | |||
Forwarders. Each MPL Control Message is generated according to | Forwarders. Each MPL Control Message is generated according to | |||
Section 6.2, with an MPL Seed Info for each entry in the MPL Domain's | Section 6.2, with a MPL Seed Info for each entry in the MPL Domain's | |||
Seed Set. Each MPL Seed Info entry 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 a | |||
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. | |||
10.2. MPL Control Message Transmission | 10.2. MPL Control Message Transmission | |||
An MPL Forwarder transmits MPL Control Messages using the Trickle | A MPL Forwarder transmits MPL Control Messages using the Trickle | |||
algorithm. An MPL Forwarder maintains a single Trickle timer for | algorithm. A MPL Forwarder maintains a single Trickle timer for each | |||
each MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the | MPL Domain. When CONTROL_MESSAGE_TIMER_EXPIRATIONS is 0, the MPL | |||
MPL Forwarder does not execute the Trickle algorithm and does not | 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 a | |||
MPL Control Message that results in a determination that neither | MPL Control Message that results in a determination that neither | |||
the receiving nor transmitting node has any new MPL Data Messages | the receiving nor transmitting node has any new MPL Data Messages | |||
to offer. | 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 results in a determination that either | a MPL Control Message that results in a determination that either | |||
the receiving or transmitting node has at least one new MPL Data | the receiving or transmitting node has at least one new MPL Data | |||
Message to offer. | Message to offer. | |||
o The Trickle timer is reset in response to external "events." This | o The Trickle timer is reset in response to external "events." This | |||
document defines an "event" as increasing MinSequence of any entry | document defines an "event" as increasing MinSequence of any entry | |||
in the corresponding Seed Set or adding a message to the | in the corresponding Seed Set or adding a message to the | |||
corresponding Buffered Message Set. | corresponding Buffered Message Set. | |||
o This document defines an MPL Control Message as a Trickle message. | o This document defines a 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. | |||
10.3. MPL Control Message Processing | 10.3. MPL Control Message Processing | |||
An MPL Forwarder processes each MPL Control Message that it receives | A 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 | A 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 a MPL Seed that does not exist in | |||
in the MPL Domain's Seed Set. | 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 a MPL Data | |||
Data Message in its Buffered Message Set with sequence number | Message in its Buffered Message Set with sequence number greater | |||
greater than MinSequence (i.e. the i-th bit is set to 1 and min- | than MinSequence (i.e. the i-th bit is set to 1 and min-seqno + i | |||
seqno + i > MinSequence) and is not included in the MPL Domain's | > MinSequence) and is not included in the MPL Domain's Buffered | |||
Buffered Message Set. | Message Set. | |||
When an MPL Forwarder determines that it has not yet received an MPL | When a MPL Forwarder determines that it has not yet received a 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 a 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 | A MPL Forwarder determines if a 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 a 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 corresponding | min-seqno and not included in the neighbor's corresponding | |||
Buffered Message Set (i.e. the MPL Data Message's sequence number | Buffered Message Set (i.e. the MPL Data Message's sequence number | |||
does not have a corresponding bit in buffered-mpl-messages set to | does not have a corresponding bit in buffered-mpl-messages set to | |||
1). | 1). | |||
When an MPL Forwarder determines that it has at least one MPL Data | When a MPL Forwarder determines that it has at least one MPL Data | |||
Message in its corresponding Buffered Message Set that has not yet | Message in its corresponding Buffered Message Set that has not yet | |||
been received by a neighbor, the MPL Forwarder MUST reset the MPL | been received by a neighbor, the MPL Forwarder MUST reset the MPL | |||
Control Message Trickle timer. Additionally, for each of those | Control Message Trickle timer. Additionally, for each of those | |||
entries in the Buffered Message Set, the MPL Forwarder MUST reset the | entries in the Buffered Message Set, the MPL Forwarder MUST reset the | |||
Trickle timer and reset e to 0. If a Trickle timer is not associated | Trickle timer and reset e to 0. If a Trickle timer is not associated | |||
with the MPL Data Message, the MPL Forwarder MUST initialize and | with the MPL Data Message, the MPL Forwarder MUST initialize and | |||
start a new Trickle timer. | start a new Trickle timer. | |||
11. Acknowledgements | 11. Acknowledgements | |||
skipping to change at page 23, line 29 | skipping to change at page 23, line 50 | |||
+---------------------+--------------------+-----------+------------+ | +---------------------+--------------------+-----------+------------+ | |||
| FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | This | 2013-04-10 | | | FF0X:0:0:0:0:0:0:FC | ALL_MPL_FORWARDERS | This | 2013-04-10 | | |||
| | | Document | | | | | | Document | | | |||
+---------------------+--------------------+-----------+------------+ | +---------------------+--------------------+-----------+------------+ | |||
Table 3: Variable Scope Multicast Address Allocation | Table 3: Variable Scope Multicast Address Allocation | |||
13. Security Considerations | 13. 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 a 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 a | |||
MPL Seed in the corresponding Seed Set. The former side effect | MPL Seed in the corresponding Seed Set. In both cases, the side | |||
allows an attacker to halt the forwarding process of any MPL Data | effect allows an attacker to halt the forwarding process of any MPL | |||
Messages being disseminated. The latter side effect allows an | Data Messages being disseminated and prevents MPL Forwarders from | |||
attacker to prevent MPL Forwarders from accepting new MPL Data | accepting new MPL Data Messages that a MPL Seed generates while the | |||
Messages that an MPL Seed generates while the sequence number is less | sequence number is less than MinSequence or until the corresponding | |||
than MinSequence. | Seed Set Entry expires. The net effect applies to both proactive and | |||
reactive forwarding modes. | ||||
More generally, the basic ability to inject messages into a Low-power | In general, the basic ability to inject messages into a Low-power and | |||
and Lossy Network can be used as a denial-of-service attack | Lossy Network may be used as a denial-of-service attack regardless of | |||
regardless of what forwarding protocol is used. For these reasons, | what forwarding protocol is used. Because MPL is a dissemination | |||
Low-power and Lossy Networks typically employ link-layer security | protocol, the ability to spoof MPL messages allows an attacker to | |||
mechanisms to disable an attacker's ability to inject messages. | affect an entire MPL Domain. For these reasons, Low-power and Lossy | |||
Networks typically employ link-layer security mechanisms to mitigate | ||||
an attacker's ability to inject messages. For example, the IEEE | ||||
802.15.4 [IEEE802154] standard specifies frame security mechanisms | ||||
using AES-128 to support access control, message integrity, message | ||||
confidentiality, and replay protection. However, if the attack | ||||
vector includes attackers that have access to the LLN, then MPL | ||||
SHOULD NOT be used. | ||||
To prevent attackers from injecting packets through an MPL Forwarder, | To prevent attackers from injecting packets through a 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 | |||
Address identified in message's destination address. | Address identified in message's destination address. | |||
MPL uses the Trickle algorithm to manage message transmissions and | MPL uses the Trickle algorithm to manage message transmissions and | |||
the security considerations described in [RFC6206] apply. | the security considerations described in [RFC6206] apply. | |||
14. References | 14. References | |||
14.1. Normative References | 14.1. Normative References | |||
skipping to change at page 25, line 10 | skipping to change at page 25, line 40 | |||
Lossy Networks", RFC 6550, March 2012. | Lossy Networks", RFC 6550, March 2012. | |||
[RFC7346] Droms, R., "IPv6 Multicast Address Scopes", RFC 7346, | [RFC7346] Droms, R., "IPv6 Multicast Address Scopes", RFC 7346, | |||
August 2014. | August 2014. | |||
14.2. Informative References | 14.2. Informative References | |||
[Clausen2013] | [Clausen2013] | |||
Clausen, T., Colin de Verdiere, A., and J. Yi, | Clausen, T., Colin de Verdiere, A., and J. Yi, | |||
"Performance Analysis of Trickle as a Flooding Mechanism", | "Performance Analysis of Trickle as a Flooding Mechanism", | |||
November 2013. | The 5th IEEE International Conference on Communication | |||
Technology (ICCT2013), November 2013. | ||||
[IEEE802154] | ||||
"IEEE Std. 802.15.4-2006", October 2006. | ||||
[RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | [RFC3973] Adams, A., Nicholas, J., and W. Siadak, "Protocol | |||
Independent Multicast - Dense Mode (PIM-DM): Protocol | Independent Multicast - Dense Mode (PIM-DM): Protocol | |||
Specification (Revised)", RFC 3973, January 2005. | Specification (Revised)", RFC 3973, January 2005. | |||
[RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, | [RFC4601] Fenner, B., Handley, M., Holbrook, H., and I. Kouvelas, | |||
"Protocol Independent Multicast - Sparse Mode (PIM-SM): | "Protocol Independent Multicast - Sparse Mode (PIM-SM): | |||
Protocol Specification (Revised)", RFC 4601, August 2006. | Protocol Specification (Revised)", RFC 4601, August 2006. | |||
Authors' Addresses | Authors' Addresses | |||
Jonathan W. Hui | Jonathan W. Hui | |||
Cisco | Nest Labs | |||
170 West Tasman Drive | 3400 Hillview Ave | |||
San Jose, California 95134 | Palo Alto, California 94304 | |||
USA | USA | |||
Phone: +408 424 1547 | Phone: +650 253 2770 | |||
Email: jonhui@cisco.com | Email: jonhui@nestlabs.com | |||
Richard Kelsey | Richard Kelsey | |||
Silicon Labs | Silicon Labs | |||
25 Thomson Place | 25 Thomson Place | |||
Boston, Massachusetts 02210 | Boston, Massachusetts 02210 | |||
USA | USA | |||
Phone: +617 951 1225 | Phone: +617 951 1225 | |||
Email: richard.kelsey@silabs.com | Email: richard.kelsey@silabs.com | |||
End of changes. 107 change blocks. | ||||
222 lines changed or deleted | 271 lines changed or added | |||
This html diff was produced by rfcdiff 1.42. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |