rfc9685.original | rfc9685.txt | |||
---|---|---|---|---|
6lo P. Thubert, Ed. | Internet Engineering Task Force (IETF) P. Thubert, Ed. | |||
Internet-Draft 16 May 2024 | Request for Comments: 9685 November 2024 | |||
Updates: 4861, 6550, 6553, 8505, 9010 (if | Updates: 4861, 6550, 6553, 8505, 9010 | |||
approved) | Category: Standards Track | |||
Intended status: Standards Track | ISSN: 2070-1721 | |||
Expires: 17 November 2024 | ||||
IPv6 Neighbor Discovery Multicast and Anycast Address Listener | IPv6 Neighbor Discovery Multicast and Anycast Address Listener | |||
Subscription | Subscription | |||
draft-ietf-6lo-multicast-registration-19 | ||||
Abstract | Abstract | |||
This document updates the 6LoWPAN extensions to IPv6 Neighbor | This document updates the 6LoWPAN extensions to IPv6 Neighbor | |||
Discovery (RFC 4861, RFC 8505) to enable a listener to subscribe to | Discovery (specified in RFCs 4861 and 8505) to enable a listener to | |||
an IPv6 anycast or multicast address; the document updates the | subscribe to an IPv6 anycast or multicast address. This document | |||
Routing Protocol for Low-Power and Lossy Networks (RFC 6550, RFC | also updates the Routing Protocol for Low-Power and Lossy Networks | |||
6553) to add a new Non-Storing Multicast Mode and a new support for | (RPL) (specified in RFCs 6550 and 6553) to add a new Non-Storing | |||
anycast addresses in Storing and Non-Storing Modes. This document | multicast mode and new support for anycast addresses in Storing and | |||
extends RFC 9010 to enable a 6LoWPAN Router to inject the anycast and | Non-Storing modes. This document extends RFC 9010 to enable a | |||
multicast addresses in RPL. | 6LoWPAN Router (6LR) to inject the anycast and multicast addresses in | |||
RPL. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 17 November 2024. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9685. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2024 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | ||||
Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
extracted from this document must include Revised BSD License text as | include Revised BSD License text as described in Section 4.e of the | |||
described in Section 4.e of the Trust Legal Provisions and are | Trust Legal Provisions and are provided without warranty as described | |||
provided without warranty as described in the Revised BSD License. | in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology | |||
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | 2.1. Requirements Language | |||
2.2. References . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. References | |||
2.3. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Abbreviations | |||
2.4. New terms . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.4. New Terms | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Overview | |||
4. Updating RFC 4861 . . . . . . . . . . . . . . . . . . . . . . 13 | 4. Updating RFC 4861 | |||
5. Updating RFC 7400 . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Updating RFC 7400 | |||
6. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Updating RFC 6550 | |||
6.1. Mandating the ROVR field . . . . . . . . . . . . . . . . 14 | 6.1. Mandating the ROVR Field | |||
6.2. Updating MOP 3 . . . . . . . . . . . . . . . . . . . . . 15 | 6.2. Updating MOP 3 | |||
6.3. New Non-Storing Multicast MOP . . . . . . . . . . . . . . 16 | 6.3. New Non-Storing Multicast MOP | |||
6.4. RPL Anycast Operation . . . . . . . . . . . . . . . . . . 17 | 6.4. RPL Anycast Operation | |||
6.5. New Registered Address Type Indicator P-Field . . . . . . 18 | 6.5. New Registered Address Type Indicator P-Field | |||
6.6. New RPL Target Option P-Field . . . . . . . . . . . . . . 19 | 6.6. New RPL Target Option P-Field | |||
7. Updating RFC 8505 . . . . . . . . . . . . . . . . . . . . . . 20 | 7. Updating RFC 8505 | |||
7.1. Placing the New P-Field in the EARO . . . . . . . . . . . 20 | 7.1. Placing the New P-Field in the EARO | |||
7.2. Placing the New P-Field in the EDAR Message . . . . . . . 21 | 7.2. Placing the New P-Field in the EDAR Message | |||
7.3. Registration Extensions . . . . . . . . . . . . . . . . . 22 | 7.3. Registration Extensions | |||
8. Updating RFC 9010 . . . . . . . . . . . . . . . . . . . . . . 25 | 8. Updating RFC 9010 | |||
9. Leveraging RFC 8928 . . . . . . . . . . . . . . . . . . . . . 26 | 9. Leveraging RFC 8928 | |||
10. Consistent Uptime Option . . . . . . . . . . . . . . . . . . 27 | 10. Consistent Uptime Option | |||
11. Operational considerations . . . . . . . . . . . . . . . . . 29 | 11. Operational Considerations | |||
12. Security Considerations . . . . . . . . . . . . . . . . . . . 31 | 12. Security Considerations | |||
13. Backward Compatibility . . . . . . . . . . . . . . . . . . . 32 | 13. Backward Compatibility | |||
14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 14. IANA Considerations | |||
14.1. New P-Field values Registry . . . . . . . . . . . . . . 33 | 14.1. New P-Field Values Registry | |||
14.2. New EDAR Message Flags Registry . . . . . . . . . . . . 33 | 14.2. New EDAR Message Flags Registry | |||
14.3. New EARO flags . . . . . . . . . . . . . . . . . . . . . 34 | 14.3. New Address Registration Option Flags | |||
14.4. New RTO flags . . . . . . . . . . . . . . . . . . . . . 34 | 14.4. New RPL Target Option Flags | |||
14.5. New RPL Mode of Operation . . . . . . . . . . . . . . . 34 | 14.5. New RPL Mode of Operation | |||
14.6. New 6LoWPAN Capability Bits . . . . . . . . . . . . . . 35 | 14.6. New 6LoWPAN Capability Bit | |||
14.7. New Address Registration Option Status Values . . . . . 35 | 14.7. New Address Registration Option Status Values | |||
14.8. New IPv6 Neighbor Discovery Option . . . . . . . . . . . 35 | 14.8. New IPv6 Neighbor Discovery Option Format | |||
15. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 36 | 15. References | |||
16. Normative References . . . . . . . . . . . . . . . . . . . . 36 | 15.1. Normative References | |||
17. Informative References . . . . . . . . . . . . . . . . . . . 38 | 15.2. Informative References | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 41 | Acknowledgments | |||
Author's Address | ||||
1. Introduction | 1. Introduction | |||
The design of Low Power and Lossy Networks (LLNs) is generally | The design of Low-Power and Lossy Networks (LLNs) is generally | |||
focused on saving energy, which is the most constrained resource of | focused on saving energy, which is the most constrained resource of | |||
all. Other design constraints, such as a limited memory capacity, | all. Other design constraints, such as a limited memory capacity, | |||
duty cycling of the LLN devices and low-power lossy transmissions, | duty cycling of the LLN devices and low-power lossy transmissions, | |||
derive from that primary concern. The radio (both transmitting or | derive from that primary concern. The radio (when both transmitting | |||
simply listening) is a major energy drain and the LLN protocols must | or simply listening) is a major energy drain, and the LLN protocols | |||
be adapted to allow the nodes to remain sleeping with the radio | must be adapted to allow the nodes to remain sleeping with the radio | |||
turned off at most times. | turned off at most times. | |||
The "Routing Protocol for Low Power and Lossy Networks" [RFC6550] | "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks" | |||
(RPL) provides IPv6 [RFC8200] routing services within such | [RFC6550] provides IPv6 [RFC8200] routing services within such | |||
constraints. To save signaling and routing state in constrained | constraints. To save signaling and routing state in constrained | |||
networks, the RPL routing is only performed along a Destination- | networks, the RPL routing is only performed along a Destination- | |||
Oriented Directed Acyclic Graph (DODAG) that is optimized to reach a | Oriented Directed Acyclic Graph (DODAG) that is optimized to reach a | |||
Root node, as opposed to along the shortest path between 2 peers, | Root node, as opposed to along the shortest path between two peers, | |||
whatever that would mean in each LLN. | whatever that would mean in each LLN. | |||
This trades the quality of peer-to-peer (P2P) paths for a vastly | This trades the quality of peer-to-peer (P2P) paths for a vastly | |||
reduced amount of control traffic and routing state that would be | reduced amount of control traffic and routing state that would be | |||
required to operate an any-to-any shortest path protocol. | required to operate an any-to-any shortest path protocol. | |||
Additionally, broken routes may be fixed lazily and on-demand, based | Additionally, broken routes may be fixed lazily and on-demand based | |||
on dataplane inconsistency discovery, which avoids wasting energy in | on dataplane inconsistency discovery, which avoids wasting energy in | |||
the proactive repair of unused paths. | the proactive repair of unused paths. | |||
RPL uses Destination Advertisement Object (DAO) messages to establish | RPL uses Destination Advertisement Object (DAO) messages to establish | |||
Downward routes. DAO messages are an optional feature for | Downward routes. DAO messages are an optional feature for | |||
applications that require point-to-multipoint (P2MP) or point-to- | applications that require point-to-multipoint (P2MP) or point-to- | |||
point (P2P) traffic. RPL supports two modes of Downward traffic: | point (P2P) traffic. RPL supports two modes of Downward traffic: | |||
Storing (fully stateful) or Non-Storing (fully source routed); see | Storing (fully stateful) or Non-Storing (fully source routed); see | |||
Section 9 of [RFC6550]. The mode is signaled in the Mode of | Section 9 of [RFC6550]. The mode is signaled in the Mode of | |||
Operation (MOP) field in the DODAG Information Object (DIO) messages | Operation (MOP) field in the DODAG Information Object (DIO) messages | |||
and applies to the whole RPL Instance. | and applies to the whole RPL Instance. | |||
Any given RPL Instance is either storing or non-storing. In both | Any given RPL Instance is either Storing or Non-Storing. In both | |||
cases, P2P packets travel Up toward a DODAG root then Down to the | cases, P2P packets travel Up toward a DODAG root then Down to the | |||
final destination (unless the destination is on the Upward route). | final destination (unless the destination is on the Upward route). | |||
In the Non-Storing case, the packet will travel all the way to a | In the Non-Storing case, the packet will travel all the way to a | |||
DODAG root before traveling Down. In the Storing case, the packet | DODAG root before traveling Down. In the Storing case, the packet | |||
may be directed Down towards the destination by a common ancestor of | may be directed Down towards the destination by a common ancestor of | |||
the source and the destination prior to reaching a DODAG root. | the source and the destination prior to reaching a DODAG root. | |||
Section 12 of [RFC6550] details the "Storing Mode of Operation with | Section 12 of [RFC6550] details the "Storing Mode of Operation with | |||
multicast support" with source-independent multicast routing in RPL. | multicast support" with source-independent multicast routing in RPL. | |||
The classical "IPv6 Neighbor Discovery (IPv6 ND) Protocol" [RFC4861] | The classical "Neighbor Discovery for IP version 6 (IPv6)" [RFC4861] | |||
[RFC4862] was defined for serial links and shared transit media such | [RFC4862] was defined for serial links and shared transit media such | |||
as Ethernet at a time when broadcast was cheap on those media while | as Ethernet at a time when broadcast on those media types was cheap, | |||
memory for neighbor cache was expensive. It was thus designed as a | while memory for neighbor cache was expensive. It was thus designed | |||
reactive protocol that relies on caching and multicast operations for | as a reactive protocol that relies on caching and multicast | |||
the Address Discovery (aka Lookup) and Duplicate Address Detection | operations for the Address Discovery (aka lookup) and Duplicate | |||
(DAD) of IPv6 unicast addresses. Those multicast operations | Address Detection (DAD) of IPv6 unicast addresses. Those multicast | |||
typically impact every node on-link when at most one is really | operations typically impact every node on-link when at most one is | |||
targeted, which is a waste of energy, and imply that all nodes are | really targeted. This is a waste of energy and implies that all | |||
awake to hear the request, which is inconsistent with power saving | nodes are awake to hear the request, which is inconsistent with | |||
(sleeping) modes. | power-saving (sleeping) modes. | |||
The original 6LoWPAN ND, "Neighbor Discovery Optimizations for | The original specification for 6LoWPAN Neighbor Discovery (ND), | |||
6LoWPAN networks" [RFC6775], was introduced to avoid the excessive | "Neighbor Discovery Optimization for IPv6 over Low-Power Wireless | |||
use of multicast messages and enable IPv6 ND for operations over | Personal Area Networks (6LoWPANs)" [RFC6775], was introduced to avoid | |||
energy-constrained nodes. [RFC6775] changes the classical IPv6 ND | the excessive use of multicast messages and enable IPv6 ND for | |||
model to proactively establish the Neighbor Cache Entry (NCE) | operations over energy-constrained nodes. [RFC6775] changes the | |||
associated to the unicast address of a 6LoWPAN Node (6LN) in the | classical IPv6 ND model to proactively establish the Neighbor Cache | |||
6LoWPAN Router(s) (6LR) that serve(s) it. To that effect, [RFC6775] | Entry (NCE) associated to the unicast address of a 6LoWPAN Node (6LN) | |||
defines a new Address Registration Option (ARO) that is placed in | in one or more 6LoWPAN Routers (6LRs) that serve it. To that effect, | |||
unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) | [RFC6775] defines a new Address Registration Option (ARO) that is | |||
messages between the 6LN and the 6LR. | placed in unicast Neighbor Solicitation (NS) and Neighbor | |||
Advertisement (NA) messages between the 6LN and the 6LR. | ||||
"Registration Extensions for 6LoWPAN Neighbor Discovery" [RFC8505] | "Registration Extensions for IPv6 over Low-Power Wireless Personal | |||
updates [RFC6775] into a generic Address Registration mechanism that | Area Network (6LoWPAN) Neighbor Discovery" [RFC8505] updates | |||
can be used to access services such as routing and ND proxy and | [RFC6775] so that a generic Address Registration mechanism can be | |||
introduces the Extended Address Registration Option (EARO) for that | used to access services such as routing and ND proxy and introduces | |||
purpose. This provides a routing-agnostic interface for a host to | the Extended Address Registration Option (EARO) for that purpose. | |||
request that the router injects a unicast IPv6 address in the local | This provides a routing-agnostic interface for a host to request that | |||
routing protocol and provide return reachability for that address. | the router injects a unicast IPv6 address in the local routing | |||
protocol and provides return reachability for that address. | ||||
"Routing for RPL Leaves" [RFC9010] provides the router counterpart of | "Routing for RPL (Routing Protocol for Low-Power and Lossy Networks) | |||
the mechanism for a host that implements [RFC8505] to inject its | Leaves" [RFC9010] provides the router counterpart of the mechanism | |||
unicast Unique Local Addresses (ULAs) and Global Unicast Addresses | for a host that implements [RFC8505] to inject its unicast Unique | |||
(GUAs) in RPL. But though RPL also provides multicast routing, | Local Addresses (ULAs) and Global Unicast Addresses (GUAs) in RPL. | |||
6LoWPAN ND supports only the registration of unicast addresses and | Although RPL also provides multicast routing, 6LoWPAN ND supports | |||
there is no equivalent of [RFC9010] to specify the 6LR behavior upon | only the registration of unicast addresses, and there is no | |||
the subscription of one or more multicast address(es). | equivalent of [RFC9010] to specify the 6LR behavior upon the | |||
subscription of one or more multicast addresses. | ||||
The "Multicast Listener Discovery Version 2 (MLDv2) for IPv6" | "Multicast Listener Discovery Version 2 (MLDv2) for IPv6" [RFC3810] | |||
[RFC3810] enables the router to learn which node listens to which | enables the router to learn which node listens to which multicast | |||
multicast address, but as the classical IPv6 ND protocol, MLD relies | address, but as the classical IPv6 ND protocol, MLD relies on | |||
on multicasting Queries to all nodes, which is unfit for low power | multicasting queries to all nodes, which is unfit for low-power | |||
operations. As for IPv6 ND, it makes sense to let the 6LNs control | operations. As for IPv6 ND, it makes sense to let the 6LNs control | |||
when and how they maintain the state associated to their multicast | when and how they maintain the state associated to their multicast | |||
addresses in the 6LR, e.g., during their own wake time. In the case | addresses in the 6LR, e.g., during their own wake time. In the case | |||
of a constrained node that already implements [RFC8505] for unicast | of a constrained node that already implements [RFC8505] for unicast | |||
reachability, it makes sense to extend to that support to subscribe | reachability, it makes sense to extend that support to subscribe the | |||
the multicast addresses they listen to. | multicast addresses they listen to. | |||
This specification Extends [RFC8505] and [RFC9010] to add the | This specification Extends [RFC8505] and [RFC9010] by adding the | |||
capability for the 6LN to subscribe anycast and multicast addresses | capability for the 6LN to subscribe anycast and multicast addresses | |||
and for the 6LR to inject them in RPL when appropriate. Note that | and for the 6LR to inject them in RPL when appropriate. Note that | |||
due to the unreliable propagation of packets in the LLN, it cannot be | due to the unreliable propagation of packets in the LLN, it cannot be | |||
guaranteed that any given packet is delivered once and only once. If | guaranteed that any given packet is delivered once and only once. If | |||
a breakage happens along the preferred parent tree that is normally | a breakage happens along the preferred parent tree that is normally | |||
used for multicast forwarding, the packet going up may be rerouted to | used for multicast forwarding, the packet going up may be rerouted to | |||
an alternate parent, leading to potential failures and duplications, | an alternate parent, leading to potential failures and duplications, | |||
whereas a packet going down will not be delivered in the subtree. It | whereas a packet going down will not be delivered in the subtree. It | |||
is up to the Upper Layer Protocols to cope with both situations. | is up to the Upper Layer Protocols (ULPs) to cope with both | |||
situations. | ||||
2. Terminology | 2. Terminology | |||
2.1. Requirements Language | 2.1. Requirements Language | |||
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 BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
In addition, the terms "Extends" and "Amends" are used as a more | In addition, "Extends" and "Amends" are used as more specific terms | |||
specific term for "Updates" per [I-D.kuehlewind-update-tag] section 3 | for "Updates" per Section 3 of [UPDATES-TAG] as follows: | |||
as follows: | ||||
Amends/Amended by: This tag pair is used with an amending RFC that | Amends/Amended by: This tag pair is used with an amending RFC that | |||
changes the amended RFC. This could include bug fixes, | changes the amended RFC. This could include bug fixes, | |||
behavior changes etc. This is intended to specify mandatory | behavior changes, etc. This is intended to specify mandatory | |||
changes to the protocol. The goal of this tag pair is to | changes to the protocol. The goal of this tag pair is to | |||
signal to anyone looking to implement the amended RFC that | signal to anyone looking to implement the amended RFC that | |||
they MUST also implement the amending RFC. | they MUST also implement the amending RFC. | |||
Extends/Extended by: This tag pair is used with an extending RFC | Extends/Extended by: This tag pair is used with an extending RFC | |||
that defines an optional addition to the extended RFC. This | that defines an optional addition to the extended RFC. This | |||
can be used by documents that use existing extension points or | can be used by documents that use existing extension points or | |||
clarifications that do not change existing protocol behavior. | clarifications that do not change existing protocol behavior. | |||
This signals to implementers and protocol designers that there | This signals to implementers and protocol designers that there | |||
are changes to the extended RFC that they need to consider but | are changes to the extended RFC that they need to consider but | |||
not necessarily implement. | not necessarily implement. | |||
2.2. References | 2.2. References | |||
This document uses terms and concepts that are discussed in: | This document uses terms and concepts that are discussed in: | |||
* "Neighbor Discovery for IP version 6" [RFC4861] and "IPv6 | * "Neighbor Discovery for IP version 6 (IPv6)" [RFC4861], | |||
Stateless address Autoconfiguration" [RFC4862], | ||||
* Routing Protocol for Low-Power and Lossy Networks [RFC6550], | * "IPv6 Stateless Address Autoconfiguration" [RFC4862], | |||
* Neighbor Discovery Optimization for Low-Power and Lossy Networks | ||||
[RFC6775], as well as | ||||
* "Registration Extensions for 6LoWPAN Neighbor Discovery" [RFC8505] | * "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks" | |||
and | [RFC6550], | |||
* "Neighbor Discovery Optimization for IPv6 over Low-Power Wireless | ||||
Personal Area Networks (6LoWPANs)" [RFC6775], | ||||
* "Registration Extensions for IPv6 over Low-Power Wireless Personal | ||||
Area Network (6LoWPAN) Neighbor Discovery" [RFC8505], and | ||||
* "Using RPI Option Type, Routing Header for Source Routes, and | * "Using RPI Option Type, Routing Header for Source Routes, and | |||
IPv6-in-IPv6 Encapsulation in the RPL Data Plane" [RFC9008]. | IPv6-in-IPv6 Encapsulation in the RPL Data Plane" [RFC9008]. | |||
2.3. Glossary | 2.3. Abbreviations | |||
This document uses the following acronyms: | This document uses the following abbreviations: | |||
6BBR 6LoWPAN Backbone Router | 6BBR 6LoWPAN Backbone Router | |||
6CIO Capability Indication Option | 6CIO Capability Indication Option | |||
6LBR 6LoWPAN Border Router | 6LBR 6LoWPAN Border Router | |||
6LN 6LoWPAN Node | 6LN 6LoWPAN Node | |||
6LR 6LoWPAN Router | 6LR 6LoWPAN Router | |||
AMC Address Mapping Confirmation | AMC Address Mapping Confirmation | |||
AMR Address Mapping Request | AMR Address Mapping Request | |||
ARO Address Registration Option | ARO Address Registration Option | |||
DAC Duplicate Address Confirmation | DAC Duplicate Address Confirmation | |||
DAD Duplicate Address Detection | DAD Duplicate Address Detection | |||
DAO Destination Advertisement Object | DAO Destination Advertisement Object | |||
DAR Duplicate Address Request | DAR Duplicate Address Request | |||
DIO DODAG Information Object | DIO DODAG Information Object | |||
DMB Direct MAC Broadcast | DMB Direct MAC Broadcast | |||
DODAG Destination-Oriented Directed Acyclic Graph | DODAG Destination-Oriented Directed Acyclic Graph | |||
EARO Extended Address Registration Option | EARO Extended Address Registration Option | |||
EDAC Extended Duplicate Address Confirmation | EDAC Extended Duplicate Address Confirmation | |||
EDAR Extended Duplicate Address Request | EDAR Extended Duplicate Address Request | |||
IR Ingress Replication | IR Ingress Replication | |||
LLN Low-Power and Lossy Network | LLN Low-Power and Lossy Network | |||
MOP Mode of Operation | MOP Mode of Operation | |||
NA Neighbor Advertisement | NA Neighbor Advertisement | |||
NCE Neighbor Cache Entry | NCE Neighbor Cache Entry | |||
ND Neighbor Discovery | ND Neighbor Discovery | |||
NS Neighbor Solicitation | NS Neighbor Solicitation | |||
RA Router Advertisement | RA Router Advertisement | |||
ROVR Registration Ownership Verifier, pronounced "rover" | ||||
RPL Routing Protocol for Low-Power and Lossy Networks, pronounced | ROVR Registration Ownership Verifier (pronounced "rover") | |||
"ripple" | ||||
RPL Routing Protocol for Low-Power and Lossy Networks (pronounced | ||||
"ripple") | ||||
RS Router Solicitation | RS Router Solicitation | |||
RTO RPL Target Option | RTO RPL Target Option | |||
TID Transaction ID | TID Transaction ID | |||
TIO Transit Information Option | TIO Transit Information Option | |||
2.4. New terms | 2.4. New Terms | |||
This document introduces the following terms: | This document introduces the following terms: | |||
Origin The node that issued an anycast or multicast advertisement, | Origin The node that issued an anycast or multicast advertisement, | |||
either in the form of an NS(EARO) or as a DAO(TIO, RTO) | either in the form of an NS(EARO) or as a DAO(TIO, RTO). | |||
Merge/merging The action of receiving multiple anycast or multicast | Merge/merging The action of receiving multiple anycast or multicast | |||
advertisements, either internally from self, in the form of an | advertisements, either internally from self, in the form of an | |||
NS(EARO), or as a DAO(TIO, RTO), and generating a single | NS(EARO), or as a DAO(TIO, RTO), and generating a single | |||
DAO(TIO, RTO). The RPL router maintains a state per origin | DAO(TIO, RTO). The RPL router maintains a state per origin | |||
for each advertised address, and merges the advertisements for | for each advertised address and merges the advertisements for | |||
all subscriptions for the same address in a single | all subscriptions for the same address in a single | |||
advertisement. A RPL router that merges multicast | advertisement. A RPL router that merges multicast | |||
advertisements from different origins becomes the origin of | advertisements from different origins becomes the origin of | |||
the merged advertisement and uses its own values for the Path | the merged advertisement and uses its own values for the Path | |||
Sequence and Registration Ownership Verifier (ROVR) fields. | Sequence and Registration Ownership Verifier (ROVR) fields. | |||
Subscribe/subscription The special form of registration that | Subscribe/subscription The special form of registration that | |||
leverages NS(EARO) to register (subscribe to) a multicast or | leverages NS(EARO) to register (or subscribe to) a multicast | |||
an anycast address. | or an anycast address. | |||
3. Overview | 3. Overview | |||
This specification Extends [RFC8505] and inherits from [RFC8928] to | This specification Extends [RFC8505] and inherits from [RFC8928] to | |||
provide a registration method - called subscription in this case - | provide a registration method (called "subscription" in this case) | |||
for anycast and multicast address. [RFC8505] is agnostic to the | for anycast and multicast addresses. [RFC8505] is agnostic to the | |||
routing protocol in which the address may be redistributed. | routing protocol in which the address may be redistributed. | |||
As opposed to unicast addresses, there might be multiple | As opposed to unicast addresses, there might be multiple | |||
registrations from multiple parties for the same address. The router | registrations from multiple parties for the same address. The router | |||
retains one registration per party per multicast or anycast address, | retains one registration per party per multicast or anycast address, | |||
but injects the route into the routing protocol only once for each | but injects the route into the routing protocol only once for each | |||
address, asynchronously to the registration. On the other hand, the | address, asynchronously to the registration. On the other hand, the | |||
validation exchange with the registrar (6LBR) is still needed if the | validation exchange with the registrar (6LBR) is still needed if the | |||
router checks the right for the host to listen to the anycast or | router checks the right for the host to listen to the anycast or | |||
multicast address. | multicast address. | |||
Figure 1 depicts the registration of an anycast or a multicast | Figure 1 depicts the registration of an anycast or a multicast | |||
address. As shown, the 6LBR receives and accepts multiple Extended | address. As shown, the 6LBR receives and accepts multiple EDAR | |||
DAR messages for the same address, and the address being registered | messages for the same address, and the address being registered by | |||
by multiple nodes is not treated as a duplication. | multiple nodes is not treated as a duplication. | |||
6LoWPAN Node 6LR 6LBR | 6LoWPAN Node 6LR 6LBR | |||
(host1) (router) (registrar) | (host1) (router) (registrar) | |||
| | | | | | | | |||
| DMB link | | | | DMB link | | | |||
| | | | | | | | |||
| ND-Classic RS | | | | ND-Classic RS | | | |||
|----------------->| | | |----------------->| | | |||
|------------> | | | |------------> | | | |||
|------------------------> | | |------------------------> | | |||
| ND-Classic RA | | | | ND-Classic RA | | | |||
|<-----------------| | | |<-----------------| | | |||
| | | | | | | | |||
| NS(EARO) | | | | NS(EARO) | | | |||
|----------------->| | | |----------------->| | | |||
| | Extended DAR | | | | EDAR | | |||
| |-------------->| | | |-------------->| | |||
| | | | | | | | |||
| | Extended DAC | | | | EDAC | | |||
| |<--------------| | | |<--------------| | |||
| NA(EARO) | | | NA(EARO) | | |||
|<-----------------|<inject route> -> | |<-----------------|<inject route> -> | |||
| | | | | | |||
... | ... | |||
(host2) (router) 6LBR | (host2) (router) 6LBR | |||
| NS(EARO) | | | | NS(EARO) | | | |||
|----------------->| | | |----------------->| | | |||
| | | | | | | | |||
| | Extended DAR | | | | EDAR | | |||
| |-------------->| | | |-------------->| | |||
| | | | | | | | |||
| | Extended DAC | | | | EDAC | | |||
| |<--------------| | | |<--------------| | |||
| NA(EARO) | | | | NA(EARO) | | | |||
|<-----------------| | | |<-----------------| | | |||
... | ... | |||
(host1) (router) | (host1) (router) | |||
| NS(EARO) | | | | NS(EARO) | | | |||
|----------------->| | | |----------------->| | | |||
| | | | | | | | |||
| NA(EARO) | | | | NA(EARO) | | | |||
|<-----------------| | | |<-----------------| | | |||
... | ... | |||
| |<maintain route> -> | | |<maintain route> -> | |||
... | ... | |||
Figure 1: Registration Flow for an anycast or multicast Address | Figure 1: Registration Flow for an Anycast or Multicast Address | |||
In classical networks, [RFC8505] may be used for an ND proxy | In classical networks, [RFC8505] may be used for an ND proxy | |||
operation as specified in [RFC8929], or redistributed in a full- | operation as specified in [RFC8929] or redistributed in a full- | |||
fledged routing protocol such as might be done in BGP for Ethernet | fledged routing protocol such as what might be done in BGP for | |||
VPN [I-D.thubert-bess-secure-evpn-mac-signaling] or in the Routing In | Ethernet VPN [MAC-SIGNALING] or in the Routing in Fat Trees (RIFT) | |||
Fat Trees (RIFT) protocol [I-D.ietf-rift-rift]. The device mobility | protocol [RIFT]. The device mobility can be gracefully supported as | |||
can be gracefully supported as long as the routers can exchange and | long as the routers can exchange and make sense of the sequence | |||
make sense of the sequence counter in the TID field of the EARO. | counter in the TID field of the EARO. | |||
In the case of LLNs, RPL [RFC6550] is the routing protocol of choice | In the case of LLNs, RPL [RFC6550] is the routing protocol of choice | |||
and [RFC9010] specifies how the unicast address advertised with | and [RFC9010] specifies how the unicast address advertised with | |||
[RFC8505] is redistributed in RPL. This specification also provides | [RFC8505] is redistributed in RPL. This specification also provides | |||
RPL extensions for anycast and multicast address operation and | RPL extensions for anycast and multicast address operation and | |||
redistribution. In the RPL case and unless specified otherwise, the | redistribution. In the RPL case, and unless specified otherwise, the | |||
behavior of the 6LBR that acts as RPL Root, of the intermediate | behavior of the 6LBR that acts as RPL Root, of the intermediate | |||
routers down the RPL graph, of the 6LR that act as access routers and | routers down the RPL graph, of the 6LRs that act as access routers | |||
of the 6LNs that are the RPL-unaware destinations, is the same as for | and of the 6LNs that are the RPL-unaware destinations, is the same as | |||
unicast. In particular, forwarding a packet happens as specified in | for unicast. In particular, forwarding a packet happens as specified | |||
section 11 of [RFC6550], including loop avoidance and detection, | in Section 11 of [RFC6550], including loop avoidance and detection, | |||
though in the case of multicast multiple copies might be generated. | though in the multicast case, multiple copies might be generated. | |||
[RFC8505] is a pre-requisite to this specification. A node that | [RFC8505] is a prerequisite to this specification. A node that | |||
implements this MUST also implement [RFC8505]. This specification | implements this MUST also implement [RFC8505]. This specification | |||
modifies existing options and updates the associated behaviors to | modifies existing options and updates the associated behaviors to | |||
enable the Registration for Multicast Addresses as an extension to | enable the Registration for Multicast Addresses as an extension to | |||
[RFC8505]. As with the unicast address registration, the | [RFC8505]. As with the unicast address registration, the | |||
subscription to anycast and multicast addresses between a node and | subscription to anycast and multicast addresses between a node and | |||
its router(s) is agnostic (meaning, independent, unaware of) to the | its router(s) is agnostic (meaning it is independent or unaware) of | |||
routing protocol in which this information may be redistributed or | the routing protocol in which this information may be redistributed | |||
aggregated by the router to other routers, though protocol extensions | or aggregated by the router to other routers, though protocol | |||
would be needed in the protocol when multicast services are not | extensions would be needed in the protocol when multicast services | |||
available. | are not available. | |||
This specification also Extends [RFC6550] and [RFC9010] in the case | This specification also Extends [RFC6550] and [RFC9010] to add | |||
of a route-over multilink subnet based on the RPL routing protocol, | multicast ingress replication in Non-Storing mode and anycast support | |||
to add multicast ingress replication in Non-Storing Mode and anycast | in both Storing and Non-Storing modes in the case of a route-over | |||
support in both Storing and Non-Storing modes. A 6LR that implements | multilink subnet based on the RPL routing protocol. A 6LR that | |||
the RPL extensions specified herein MUST also implement [RFC9010]. | implements the RPL extensions specified herein MUST also implement | |||
[RFC9010]. | ||||
Figure 2 illustrates the classical situation of an LLN as a single | Figure 2 illustrates the classical situation of an LLN as a single | |||
IPv6 Subnet, with a 6LoWPAN Border Router (6LBR) that acts as Root | IPv6 subnet, with a 6LBR that acts as Root for RPL operations and | |||
for RPL operations and maintains a registry of the active | maintains a registry of the active registrations as an abstract data | |||
registrations as an abstract data structure called an Address | structure called an "Address Registrar" for 6LoWPAN ND. | |||
Registrar for 6LoWPAN ND. | ||||
The LLN may be a hub-and-spoke access link such as (Low-Power) Wi-Fi | The LLN may be a hub-and-spoke access link such as (Low-Power) Wi-Fi | |||
[IEEE Std 802.11] and Bluetooth (Low Energy) [IEEE Std 802.15.1], or | [IEEE-802.11] and (Low-Energy) Bluetooth [IEEE-802.15.1] or a Route- | |||
a Route-Over LLN such as the Wi-SUN [Wi-SUN] and 6TiSCH [RFC9030] | Over LLN such as the Wi-SUN [Wi-SUN] and IPv6 over the TSCH mode of | |||
meshes that leverages 6LoWPAN [RFC4919] [RFC6282] and RPL [RFC6550] | IEEE 802.15.4 (6TiSCH) [RFC9030] meshes that leverage 6LoWPAN | |||
over [IEEE Std 802.15.4]. | [RFC4919] [RFC6282] and RPL [RFC6550] over IEEE 802.15.4 | |||
[IEEE-802.15.4]. | ||||
| | | | |||
----+-------+------------ | ----+-------+------------ | |||
| Wire side | | Wire side | |||
+------+ | +------+ | |||
| 6LBR | | | 6LBR | | |||
|(Root)| | |(Root)| | |||
+------+ | +------+ | |||
o o o Wireless side | o o o Wireless side | |||
o o o o o o | o o o o o o | |||
skipping to change at page 10, line 32 ¶ | skipping to change at line 484 ¶ | |||
o o o o o |6LR| | o o o o o |6LR| | |||
o o o o o +---+ | o o o o o +---+ | |||
o o o o o o z | o o o o o o z | |||
o o oo o o +---+ | o o oo o o +---+ | |||
o |6LN| | o |6LN| | |||
+---+ | +---+ | |||
Figure 2: Wireless Mesh | Figure 2: Wireless Mesh | |||
A leaf acting as a 6LN registers its unicast addresses to a RPL | A leaf acting as a 6LN registers its unicast addresses to a RPL | |||
router acting as a 6LR, using a layer-2 unicast NS message with an | router acting as a 6LR using a Layer 2 unicast NS message with an | |||
EARO as specified in [RFC8505]. The registration state is | EARO as specified in [RFC8505]. The registration state is | |||
periodically renewed by the Registering Node, before the lifetime | periodically renewed by the Registering Node before the lifetime | |||
indicated in the EARO expires. As for unicast IPv6 addresses, the | indicated in the EARO expires. As for unicast IPv6 addresses, the | |||
6LR uses an EDAR/EDAC exchange with the 6LBR to notify the 6LBR of | 6LR uses an EDAR/EDAC exchange with the 6LBR to notify the 6LBR of | |||
the presence of the listeners. | the presence of the listeners. | |||
This specification updates the EARO with a new two-bit field, the | This specification updates the EARO with a new 2-bit field, the | |||
P-Field, as detailed in Section 7.1. The existing R flag that | P-Field, as detailed in Section 7.1. The existing R flag that | |||
requests reachability for the registered address gets new behavior. | requests reachability for the Registered Address gets new behavior. | |||
With this extension the 6LNs can now subscribe to the anycast and | With this extension, the 6LNs can now subscribe to the anycast and | |||
multicast addresses they listen to, using a new P-Field in the EARO | multicast addresses they listen to, using a new P-Field in the EARO | |||
to signal that the registration is for a multicast address. Multiple | to signal that the registration is for a multicast address. Multiple | |||
6LNs may subscribe the same multicast address to the same 6LR. Note | 6LNs may subscribe the same multicast address to the same 6LR. Note | |||
the use of the term "subscribe": using the EARO registration | the use of the term "subscribe": this means that when using the EARO | |||
mechanism, a node registers the unicast addresses that it owns, but | registration mechanism, a node registers the unicast addresses that | |||
subscribes to the multicast addresses that it listens to. | it owns but subscribes to the multicast addresses that it listens to. | |||
With this specification, the 6LNs can also subscribe the anycast | With this specification, the 6LNs can also subscribe the anycast | |||
addresses they accept, using a new P-Field in the EARO to signal that | addresses they accept using a new P-Field in the EARO to signal that | |||
the registration is for an anycast address. As for multicast, | the registration is for an anycast address. For multicast addresses, | |||
multiple 6LNs may subscribe the same anycast address to the same 6LR. | multiple 6LNs may subscribe the same anycast address to the same 6LR. | |||
If the R flag is set in the subscription of one or more 6LNs for the | If the R flag is set in the subscription of one or more 6LNs for the | |||
same address, the 6LR injects the anycast addresses and multicast | same address, the 6LR injects the anycast addresses and multicast | |||
addresses of a scope larger than link-scope in RPL, based on the | addresses of a scope larger than the link-scope in RPL, based on the | |||
longest subscription lifetime across the active subscriptions for the | longest subscription lifetime across the active subscriptions for the | |||
address. | address. | |||
In the RPL "Storing Mode of Operation with multicast support", the | In the RPL "Storing Mode of Operation with multicast support" | |||
DAO messages for the multicast address percolate along the RPL | (Section 12 of [RFC6550]), the DAO messages for the multicast address | |||
preferred parent tree and mark a subtree that becomes the multicast | percolate along the RPL-preferred parent tree and mark a subtree that | |||
tree for that multicast address, with 6LNs that subscribed to the | becomes the multicast tree for that multicast address, with 6LNs that | |||
address as the leaves. As prescribed in section 12 of [RFC6550], the | subscribed to the address as the leaves. As prescribed in Section 12 | |||
6LR forwards a multicast packet as an individual unicast MAC frame to | of [RFC6550], the 6LR forwards a multicast packet as an individual | |||
each peer along the multicast tree, except to the node it received | unicast Medium Access Control (MAC) frame to each peer along the | |||
the packet from. | multicast tree, except to the node it received the packet from. | |||
In the new RPL "Non-Storing Mode of Operation with multicast support" | In the new RPL "Non-Storing Mode of Operation with multicast support" | |||
that is introduced here, the DAO messages announce the multicast | that is introduced here, the DAO messages announce the multicast | |||
addresses as Targets though never as Transit. The multicast | addresses as Targets, and never as Transits. The multicast | |||
distribution is an ingress replication whereby the Root encapsulates | distribution is an ingress replication whereby the Root encapsulates | |||
the multicast packets to all the 6LRs that are transit for the | the multicast packets to all the 6LRs that are transit for the | |||
multicast address, using the same source-routing header as for | multicast address, using the same source-routing header as for | |||
unicast targets attached to the respective 6LRs. | unicast targets attached to the respective 6LRs. | |||
LLN links are typically Direct MAC Broadcast (DMB) (more in | LLN links are typically Direct MAC Broadcast (DMB) (see more in | |||
[I-D.ietf-6man-ipv6-over-wireless]) with no emulation to increase | [IPv6-OVER-WIRELESS]) with no emulation to increase range (over | |||
range (over multiple radio hops) or reliability. In such links, | multiple radio hops) or reliability. In such links, broadcasting is | |||
broadcasting is unreliable and asynchronous transmissions force a | unreliable and asynchronous transmissions force a listener to remain | |||
listener to remain awake, so asynchronous broadcasting is generally | awake, so asynchronous broadcasting is generally inefficient. Thus, | |||
inefficient. The expectation is thus that whenever possible, the | the expectation is that whenever possible, the 6LRs deliver the | |||
6LRs deliver the multicast packets as individual unicast MAC frames | multicast packets as individual unicast MAC frames to each of the | |||
to each of the 6LNs that subscribed to the multicast address. On the | 6LNs that subscribed to the multicast address. On the other hand, in | |||
other hand, in a network where nodes do not sleep, asynchronous | a network where nodes do not sleep, asynchronous broadcasting may | |||
broadcasting may still help recovering faster when state is lost. | still help recovering faster when state is lost. | |||
With this specification, anycast addresses can be injected in RPL in | With this specification, anycast addresses can be injected in RPL in | |||
both Storing and Non-Storing modes. In Storing Mode the RPL router | both Storing and Non-Storing modes. In Storing mode, the RPL router | |||
accepts DAO from multiple children for the same anycast address, but | accepts DAO from multiple children for the same anycast address, but | |||
only forwards a packet to one of the children. In Non-Storing Mode, | it only forwards a packet to one of the children. In Non-Storing | |||
the Root maintains the list of all the RPL nodes that announced the | mode, the Root maintains the list of all the RPL nodes that announced | |||
anycast address as Target, but forwards a given packet to only one of | the anycast address as Target, but it forwards a given packet to only | |||
them. | one of them. | |||
Operationally speaking, deploying a new MOP means that one cannot | Operationally speaking, deploying a new MOP means that one cannot | |||
update a live network. The network administrator must create a new | update a live network. The network administrator must create a new | |||
instance with MOP 5 and migrate nodes to that instance by allowing | instance with MOP 5 and migrate nodes to that instance by allowing | |||
them to join it. | them to join it. | |||
For backward compatibility, this specification allows to build a | For backward compatibility, this specification allows building a | |||
single DODAG signaled as MOP 1, that conveys anycast, unicast, and | single DODAG signaled as MOP 1 that conveys anycast, unicast, and | |||
multicast packets using the same source routing mechanism; more in | multicast packets using the same source-routing mechanism; see more | |||
Section 11. | in Section 11. | |||
It is also possible to leverage this specification between the 6LN | It is also possible to leverage this specification between the 6LN | |||
and the 6LR for the registration of unicast, anycast and multicast | and the 6LR for the registration of unicast, anycast, and multicast | |||
IPv6 addresses in networks that are not necessarily LLNs, and/or | IPv6 addresses in networks that are not necessarily LLNs and/or where | |||
where the routing protocol between the 6LR and above is not | the routing protocol between the 6LR and above is not necessarily | |||
necessarily RPL. In that case, the distribution of packets between | RPL. In that case, the distribution of packets between the 6LR and | |||
the 6LR and the 6LNs may effectively rely on a broadcast or multicast | the 6LNs may effectively rely on a broadcast or multicast support at | |||
support at the lower layer, e.g., using this specification as a | the lower layer (e.g., using this specification as a replacement to | |||
replacement to MLD in an Ethernet bridged domain and still using | MLD in an Ethernet-bridged domain and still using either a plain MAC- | |||
either plain MAC-layer broadcast or snooping this protocol to control | layer broadcast or snooping of this protocol to control the | |||
the flooding. It may also rely on overlay services to optimize the | flooding). It may also rely on overlay services to optimize the | |||
impact of Broadcast, Unknown, and Multicast (BUM) over a fabric, e.g. | impact of Broadcast, Unknown, and Multicast (BUM) over a fabric, | |||
registering with [I-D.thubert-bess-secure-evpn-mac-signaling] and | e.g., registering with [MAC-SIGNALING] and forwarding with [RFC9574]. | |||
forwarding with [I-D.ietf-bess-evpn-optimized-ir]. | ||||
For instance, it is possible to operate a RPL Instance in the new | For instance, it is possible to operate a RPL Instance in the new | |||
"Non-Storing Mode of Operation with multicast support" (while | "Non-Storing Mode of Operation with multicast support" (while | |||
possibly signaling a MOP of 1) and use "Multicast Protocol for | possibly signaling a MOP of 1) and use "Multicast Protocol for Low- | |||
Low-Power and Lossy Networks (MPL)" [RFC7731] for the multicast | Power and Lossy Networks (MPL)" [RFC7731] for the multicast | |||
operation. MPL floods the DODAG with the multicast messages | operation. MPL floods the DODAG with the multicast messages | |||
independently of the RPL DODAG topologies. Two variations are | independently of the RPL DODAG topologies. Two variations are | |||
possible: | possible: | |||
* In one possible variation, all the 6LNs set the R flag in the EARO | * In one possible variation, all the 6LNs set the R flag in the EARO | |||
for a multicast target, upon which the 6LRs send a unicast DAO | for a multicast target, upon which the 6LRs send a unicast DAO | |||
message to the Root; the Root filters out the multicast messages | message to the Root; the Root filters out the multicast messages | |||
for which there is no listener and only floods when there is. | for which there is no listener and only floods when there is. | |||
* In a simpler variation, the 6LNs do not set the R flag and the | * In a simpler variation, the 6LNs do not set the R flag and the | |||
Root floods all the multicast packets over the whole DODAG. Using | Root floods all the multicast packets over the whole DODAG. Using | |||
configuration, it is also possible to control the behavior of the | this configuration, it is also possible to control the behavior of | |||
6LR to ignore the R flag and either always or never send the DAO | the 6LR to ignore the R flag and either always or never send the | |||
message, and/or to control the Root and specify which groups it | DAO message, and/or to control the Root and specify which groups | |||
should flood or not flood. | it should flood or not flood. | |||
Note that if the configuration instructs the 6LR not to send the DAO, | Note that if the configuration instructs the 6LR not to send the DAO, | |||
then MPL can really by used in conjunction with RPL Storing Mode as | then MPL can be used in conjunction with the RPL Storing mode as | |||
well. | well. | |||
4. Updating RFC 4861 | 4. Updating RFC 4861 | |||
Section 7.1 of [RFC4861] requires to silently discard NS and NA | Section 7.1 of [RFC4861] requires silently discarding NS and NA | |||
packets when the Target Address is a multicast address. This | packets when the Target Address is a multicast address. This | |||
specification Amends [RFC4861] by allowing to advertise multicast and | specification Amends [RFC4861] by allowing the advertisement of | |||
anycast addresses in the Target Address field when the NS message is | multicast and anycast addresses in the Target Address field when the | |||
used for a registration, per section 5.5 of [RFC8505]. | NS message is used for a registration, per Section 5.5 of [RFC8505]. | |||
5. Updating RFC 7400 | 5. Updating RFC 7400 | |||
This specification Extends "6LoWPAN-GHC: Generic Header Compression | This specification Extends "6LoWPAN-GHC: Generic Header Compression | |||
for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)" | for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)" | |||
[RFC7400] by defining a new capability bit for use in the 6CIO. | [RFC7400] by defining a new capability bit for use in the 6CIO. | |||
[RFC7400] was already extended by [RFC8505] for use in IPv6 ND | [RFC7400] was already extended by [RFC8505] for use in IPv6 ND | |||
messages. | messages. | |||
The new "Registration for xcast Address Supported" (X) flag indicates | The new "Registration for Unicast, Multicast, and Anycast Addresses | |||
to the 6LN that the 6LR accepts unicast, multicast, and anycast | Supported" X flag indicates to the 6LN that the 6LR accepts unicast, | |||
address registrations as specified in this document and will ensure | multicast, and anycast address registrations as specified in this | |||
that packets for the Registered Address will be routed to the 6LNs | document and will ensure that packets for the Registered Address will | |||
that registered with the R flag set appropriately. | be routed to the 6LNs that registered with the R flag set | |||
appropriately. | ||||
Figure 3 illustrates the X flag in its suggested position (8, | Figure 3 illustrates the X flag in its position (8, counting 0 to 15 | |||
counting 0 to 15 in network order in the 16-bit array), to be | in network order in the 16-bit array); see Section 14.6 for the IANA | |||
confirmed by IANA. | registration of capability bits. | |||
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 | Length = 1 | Reserved |X|A|D|L|B|P|E|G| | | Type | Length = 1 | Reserved |X|A|D|L|B|P|E|G| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Reserved | | | Reserved | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 3: New Capability Bits in the 6CIO | Figure 3: New Capability Bits in the 6CIO | |||
New Option Field: | New Option Field: | |||
X 1-bit flag: "Registration for Unicast, Multicast, and Anycast | X: This is a 1-bit flag for "Registration for Unicast, Multicast, | |||
Addresses Supported" | and Anycast Addresses Supported". | |||
6. Updating RFC 6550 | 6. Updating RFC 6550 | |||
This specification Amends [RFC6550] to mandate the use of the ROVR | This specification Amends [RFC6550] to mandate the use of the ROVR | |||
field as the indication of the origin of a Target advertisement in | field as the indication of the origin of a Target advertisement in | |||
the RPL DAO messages, as specified as an option in section 6.1 of | RPL DAO messages, as specified as an option in Section 6.1 of | |||
[RFC9010]. | [RFC9010]. | |||
This specification Extends [RFC6550] with a new P-Field in the RPL | This specification Extends [RFC6550] with a new P-Field in the RPL | |||
Target Option. | Target Option (RTO). | |||
The specification also Amends the behaviors of the Modes of Operation | The specification also Amends the behaviors of the Modes of Operation | |||
MOP 1 and MOP 3, and Extends [RFC6550] with a new MOP 5. | MOP 1 and MOP 3 and Extends [RFC6550] with a new MOP 5. | |||
6.1. Mandating the ROVR field | 6.1. Mandating the ROVR Field | |||
For anycast and multicast advertisements (in NS or DAO messages), | For anycast and multicast advertisements (in NS or DAO messages), | |||
multiple origins may subscribe to the same address, in which case the | multiple origins may subscribe to the same address, in which case the | |||
multiple advertisements from the different or unknown origins are | multiple advertisements from the different or unknown origins are | |||
merged by the common parent; in that case, the common parent becomes | merged by the common parent; in that case, the common parent becomes | |||
the origin of the merged advertisements and uses its own ROVR value. | the origin of the merged advertisements and uses its own ROVR value. | |||
On the other hand, a parent that propagates an advertisement from a | On the other hand, a parent that propagates an advertisement from a | |||
single origin uses the original ROVR in the propagated RTO, as it | single origin uses the original ROVR in the propagated RTO, as it | |||
does for unicast address advertisements, so the origin is recognised | does for unicast address advertisements, so the origin is recognized | |||
across multiple hops. | across multiple hops. | |||
[RFC6550] uses the Path Sequence in the Transit Information Option | [RFC6550] uses the Path Sequence in the Transit Information Option | |||
(TIO) to retain only the freshest unicast route and remove stale | (TIO) to retain only the freshest unicast route and remove the stale | |||
ones, e.g., in the case of mobility. [RFC9010] copies the TID from | ones, e.g., in the case of mobility. [RFC9010] copies the | |||
the EARO into the Path Sequence, and the ROVR field into the | Transaction ID (TID) from the EARO into the Path Sequence and the | |||
associated RPL Target Option (RTO). This way, it is possible to | ROVR field into the associated RTO. This way, it is possible to | |||
identify both the registering node and the order of registration in | identify both the Registering Node and the order of registration in | |||
RPL for each individual advertisement, so the most recent path and | RPL for each individual advertisement, so the most recent path and | |||
lifetime values are used. | lifetime values are used. | |||
This specification Extends [RFC6550] to require that, for anycast and | This specification Extends [RFC6550] for anycast and multicast | |||
multicast advertisements, the Path Sequence is used between and only | advertisements to require that the Path Sequence be used between, and | |||
between advertisements for the same Target and from the same origin | only between, advertisements for the same Target and from the same | |||
(i.e, with the same ROVR value); in that case, only the freshest | origin (i.e., with the same ROVR value). In that case, only the | |||
advertisement is retained. But the freshness comparison cannot apply | freshest advertisement is retained, but the freshness comparison | |||
if the origin is not determined (i.e., the origin did not support | cannot apply if the origin is not determined (i.e., the origin did | |||
this specification). | not support this specification). | |||
[RFC6550] uses the Path Lifetime in the TIO to indicate the remaining | [RFC6550] uses the Path Lifetime in the TIO to indicate the remaining | |||
time for which the advertisement is valid for unicast route | time for which the advertisement is valid for unicast route | |||
determination, and a Path Lifetime value of 0 invalidates that route. | determination, and a Path Lifetime value of 0 invalidates that route. | |||
[RFC9010] maps the Address Registration lifetime in the EARO and the | [RFC9010] maps the Address Registration lifetime in the EARO and the | |||
Path Lifetime in the TIO so they are comparable when both forms of | Path Lifetime in the TIO so they are comparable when both forms of | |||
advertisements are received. | advertisements are received. | |||
The RPL router that merges multiple advertisements for the same | The RPL router that merges multiple advertisements for the same | |||
anycast or multicast addresses MUST use and advertise the longest | anycast or multicast addresses MUST use and advertise the longest | |||
remaining lifetime across all the origins of the advertisements for | remaining lifetime across all the origins of the advertisements for | |||
that address. When the lifetime expires, the router sends a no-path | that address. When the lifetime expires, the router sends a no-path | |||
DAO (i.e., the lifetime is 0) using the same value for ROVR value as | DAO (i.e., the lifetime is 0) using the same value for the ROVR value | |||
for the previous advertisements, that is either self or the single | as for the previous advertisements, that is either self or the single | |||
descendant that advertised the Target. | descendant that advertised the Target. | |||
Note that the Registration Lifetime, TID and ROVR fields are also | Note that the Registration Lifetime, TID, and ROVR fields are also | |||
placed in the EDAR message so the state created by EDAR is also | placed in the EDAR message so the state created by the EDAR is also | |||
comparable with that created upon an NS(EARO) or a DAO message. For | comparable with that created upon an NS(EARO) or a DAO message. For | |||
simplicity the text below mentions only NS(EARO) but applies also to | simplicity, the text below mentions only NS(EARO) but it also applies | |||
EDAR. | to EDAR. | |||
6.2. Updating MOP 3 | 6.2. Updating MOP 3 | |||
RPL supports multicast operations in the "Storing Mode of Operation | RPL supports multicast operations in the "Storing Mode of Operation | |||
with multicast support" (MOP 3) which provides source-independent | with multicast support" (MOP 3), which provides source-independent | |||
multicast routing in RPL, as prescribed in section 12 of [RFC6550]. | multicast routing in RPL, as prescribed in Section 12 of [RFC6550]. | |||
MOP 3 is a storing Mode of Operation. This operation builds a | MOP 3 is a Storing Mode of Operation. This operation builds a | |||
multicast tree within the RPL DODAG for each multicast address. This | multicast tree within the RPL DODAG for each multicast address. This | |||
specification provides additional details for the MOP 3 operation. | specification provides additional details for the MOP 3 operation. | |||
The expectation in MOP 3 is that the unicast traffic also follows the | The expectation in MOP 3 is that the unicast traffic also follows the | |||
Storing Mode of Operation. But this is rarely the case in LLN | Storing Mode of Operation. However, this is rarely the case in LLN | |||
deployments of RPL where the "Non-Storing Mode of Operation" (MOP 1) | deployments of RPL where the "Non-Storing Mode of Operation" (MOP 1) | |||
is the norm. Though it is preferred to build separate RPL Instances, | is the norm. Though it is preferred to build separate RPL Instances, | |||
one in MOP 1 and one in MOP 3, this specification allows hybrid use | one in MOP 1 and one in MOP 3, this specification allows hybrid use | |||
of the Storing Mode for multicast and Non-Storing Mode for unicast in | of the Storing mode for multicast and the Non-Storing mode for | |||
the same RPL Instance, as is elaborated in more detail in Section 11. | unicast in the same RPL Instance, as is elaborated in more detail in | |||
Section 11. | ||||
For anycast and multicast advertisements, including MOP 3, the ROVR | For anycast and multicast advertisements, including MOP 3, the ROVR | |||
field is placed in the RPL Target Option as specified in [RFC9010] | field is placed in the RPL Target Option as specified in [RFC9010] | |||
for both MOP 3 and MOP 5 as it is for unicast advertisements. | for both MOP 3 and MOP 5 as it is for unicast advertisements. | |||
Though it was implicit with [RFC6550], this specification clarifies | Though it was implicit with [RFC6550], this specification clarifies | |||
that the freshness comparison based on the Path Sequence is not used | that the freshness comparison based on the Path Sequence is not used | |||
when the origin cannot be determined, which is the case there. The | when the origin cannot be determined, which is the case there. The | |||
comparison is to be used only between advertisements from the same | comparison is to be used only between advertisements from the same | |||
origin, which is either an individual subscriber, or a descendant | origin, which is either an individual subscriber or a descendant that | |||
that merged multiple advertisements. | merged multiple advertisements. | |||
A RPL router maintains a remaining Path Lifetime for each DAO that it | A RPL router maintains a remaining Path Lifetime for each DAO that it | |||
receives for a multicast target, and sends its own DAO for that | receives for a multicast target and sends its own DAO for that target | |||
target with the longest remaining lifetime across its listening | with the longest remaining lifetime across its listening children. | |||
children. If the router has only one descendant listening, it | If the router has only one descendant listening, it propagates the | |||
propagates the TID and ROVR as received. Conversely, if the router | TID and ROVR as received. Conversely, if the router merges multiple | |||
merges multiple advertisements (including possibly one for itself as | advertisements (possibly including one for itself as a listener), the | |||
a listener), the router uses its own ROVR and TID values. This | router uses its own ROVR and TID values. This implies a possible | |||
implies a possible transition of ROVR and TID values when the number | transition of ROVR and TID values when the number of listening | |||
of listening children changes from one to more or back to one, which | children changes from one to more or back to one, which should not be | |||
should not be considered as an error or a change of ownership by the | considered as an error or a change of ownership by the parents above. | |||
parents above. | ||||
6.3. New Non-Storing Multicast MOP | 6.3. New Non-Storing Multicast MOP | |||
This specification adds a "Non-Storing Mode of Operation with ingress | This specification adds a "Non-Storing Mode of Operation with ingress | |||
replication multicast support" (MOP to be assigned by IANA) whereby | replication multicast support" RPL (as assigned by IANA; see | |||
the non-storing Mode DAO to the Root may advertise a multicast | Section 14.5) whereby the Non-Storing Mode DAO to the Root may | |||
address in the RPL Target Option (RTO), whereas the Transit | advertise a multicast address in the RTO, whereas the TIO cannot. | |||
Information Option (TIO) cannot. | ||||
In that mode, the RPL Root performs an ingress replication (IR) | In that mode, the RPL Root performs an Ingress Replication (IR) | |||
operation on the multicast packets, meaning that it transmits one | operation on the multicast packets. This means that it transmits one | |||
copy of each multicast packet to each 6LR that is a transit for the | copy of each multicast packet to each 6LR that is a transit for the | |||
multicast target, using the same source routing header and | multicast target, using the same source-routing header and | |||
encapsulation as it would for a unicast packet for a RPL Unaware Leaf | encapsulation as it would for a unicast packet for a RPL-Unaware Leaf | |||
(RUL) attached to that 6LR. | (RUL) attached to that 6LR. | |||
For the intermediate routers, the packet appears as any source routed | For the intermediate routers, the packet appears as any source-routed | |||
unicast packet. The difference shows only at the 6LR, that | unicast packet. The difference shows only at the 6LR, which | |||
terminates the source routed path and forwards the multicast packet | terminates the source-routed path and forwards the multicast packet | |||
to all 6LNs that registered for the multicast address. | to all 6LNs that registered for the multicast address. | |||
For a packet that is generated by the Root, this means that the Root | For a packet that is generated by the Root, the Root builds a source- | |||
builds a source routing header as shown in section 8.1.3 of | routing header as shown in Section 8.1.3 of [RFC9008], but for which | |||
[RFC9008], but for which the last and only the last address is | the last and only the last address is multicast. For a packet that | |||
multicast. For a packet that is not generated by the Root, the Root | is not generated by the Root, the Root encapsulates the multicast | |||
encapsulates the multicast packet as per section 8.2.4 of [RFC9008]. | packet as per Section 8.2.4 of [RFC9008]. In that case, the outer | |||
In that case, the outer header is purely unicast, and the | header is purely unicast, and the encapsulated packet is purely | |||
encapsulated packet is purely multicast. | multicast. | |||
For anycast and multicast advertisements in NA (at the 6LR) and DAO | For anycast and multicast advertisements in NA messages (at the 6LR) | |||
(at the Root) messages, as discussed in Section 6.2, the freshness | and DAO messages (at the Root), as discussed in Section 6.2, the | |||
comparison based on the TID field is applied only between messages | freshness comparison based on the TID field is applied only between | |||
from the same origin, as determined by the same value in the ROVR | messages from the same origin, as determined by the same value in the | |||
field. | ROVR field. | |||
The Root maintains a remaining Path Lifetime for each advertisement | The Root maintains a remaining Path Lifetime for each advertisement | |||
it receives, and the 6LRs generate the DAO for multicast addresses | it receives, and the 6LRs generate the DAO for multicast addresses | |||
with the longest remaining lifetime across its registered 6LNs, using | with the longest remaining lifetime across its registered 6LNs, using | |||
its own ROVR and TID when multiple 6LNs subscribed, or if this 6LR is | its own ROVR and TID when multiple 6LNs subscribed, or if this 6LR is | |||
one of the subscribers. | one of the subscribers. | |||
For this new mode as well, this specification allows to enable the | This specification allows enabling the operation in a MOP 1 brown | |||
operation in a MOP 1 brown field, more in Section 11. | field for this new mode as well; see more in Section 11. | |||
6.4. RPL Anycast Operation | 6.4. RPL Anycast Operation | |||
With multicast, the address has a recognizable format, and a | With multicast, the address has a recognizable format, and a | |||
multicast packet is to be delivered to all the active subscribers. | multicast packet is to be delivered to all the active subscribers. | |||
In contrast, the format of an anycast address is not distinguishable | In contrast, the format of an anycast address is not distinguishable | |||
from that of unicast. A legacy node may issue a DAO message without | from that of a unicast address. A legacy node may issue a DAO | |||
setting the P-Field to 2, the unicast behavior may apply to anycast | message without setting the P-Field to 2; the unicast behavior may | |||
traffic within a portion of the network, but the packets will still | apply to anycast traffic within a portion of the network, but the | |||
be delivered. That message will be undistinguishable from a unicast | packets will still be delivered. That message will be | |||
advertisement and the anycast behavior in the dataplane can only | undistinguishable from a unicast advertisement, and the anycast | |||
happen if all the nodes that advertise the same anycast address are | behavior in the dataplane can only happen if all the nodes that | |||
synchronized with the same TID. That way, the multiple paths can | advertise the same anycast address are synchronized with the same | |||
remain in the RPL DODAG. | TID. That way, the multiple paths can remain in the RPL DODAG. | |||
With the P-Field set to 2, this specification alleviates the issue of | With the P-Field set to 2, this specification alleviates the issue of | |||
synchronizing the TIDs and ROVR fields. As for multicast, the | synchronizing the TIDs and ROVR fields. As for multicast, the | |||
freshness comparison based on the TID (in EARO) and the Path Sequence | freshness comparison based on the TID (in the EARO) and the Path | |||
(in TIO) is ignored unless the messages have the same origin, as | Sequence (in the TIO) is ignored unless the messages have the same | |||
inferred by the same ROVR in RTO and/or EARO, and the latest value of | origin; this is inferred by the same ROVR in the RTO and/or the EARO, | |||
the lifetime is retained for each origin. | and the latest value of the lifetime is retained for each origin. | |||
A RPL router that propagates an advertisement from a single origin | A RPL router that propagates an advertisement from a single origin | |||
uses the ROVR and Path Sequence from that origin, whereas a router | uses the ROVR and Path Sequence from that origin, whereas a router | |||
that merges multiple subscriptions uses its own ROVR and Path | that merges multiple subscriptions uses its own ROVR and Path | |||
Sequence and the longest lifetime over the different advertisements. | Sequence and the longest lifetime over the different advertisements. | |||
A target is routed as anycast by a parent (or the Root) that received | A target is routed as anycast by a parent (or the Root) that received | |||
at least one DAO message for that target with the P-Field set to 2. | at least one DAO message for that target with the P-Field set to 2. | |||
As opposed to multicast, the anycast operation described therein | As opposed to multicast, the anycast operation described therein | |||
applies to both addresses and prefixes, and the P-Field can be set to | applies to both addresses and prefixes, and the P-Field can be set to | |||
2 for both. An external destination (address or prefix) that may be | 2 for both. An external destination (address or prefix) that may be | |||
injected as a RPL target from multiple border routers should be | injected as a RPL target from multiple border routers should be | |||
injected as anycast in RPL to enable load balancing. A mobile target | injected as anycast in RPL to enable load balancing. A mobile target | |||
that is multihomed should in contrast be advertised as unicast over | that is multihomed should in contrast be advertised as unicast over | |||
the multiple interfaces to favor the TID comparison and vs. the | the multiple interfaces to favor the TID comparison and vs. the | |||
multipath load balancing. | multipath load balancing. | |||
For either multicast and anycast, there can be multiple subscriptions | For either multicast or anycast, there can be multiple subscriptions | |||
from multiple origins, each using a different value of the ROVR field | from multiple origins, each using a different value of the ROVR field | |||
that identifies the individual subscription. The 6LR maintains a | that identifies the individual subscription. The 6LR maintains a | |||
subscription state per value of the ROVR per multicast or anycast | subscription state per value of the ROVR for a multicast or anycast | |||
address, but injects the route into RPL only once for each address, | address, but it injects the route into RPL only once for each | |||
and in the case of a multicast address, only if its scope is larger | address. In the case of a multicast address, this occurs only if its | |||
than link-scope (3 or more). Since the subscriptions are considered | scope is larger than the link-scope (three or more). Since the | |||
separate, the check on the TID that acts as subscription sequence | subscriptions are considered separate, the check on the TID that acts | |||
only applies to the subscription with the same ROVR. | as the subscription sequence only applies to the subscription with | |||
the same ROVR. | ||||
Like the 6LR, a RPL router in Storing Mode propagates the merged | Like the 6LR, a RPL router in Storing mode propagates the merged | |||
advertisement to its parent(s) in DAO messages once and only once for | advertisement to its parent(s) in DAO messages once and only once for | |||
each address, but it retains a routing table entry for each of the | each address, but it retains a routing table entry for each of the | |||
children that advertised the address. | children that advertised the address. | |||
When forwarding multicast packets down the DODAG, the RPL router | When forwarding multicast packets down the DODAG, the RPL router | |||
copies all the children that advertised the address in their DAO | copies all the children that advertised the address in their DAO | |||
messages. In contrast, when forwarding anycast packets down the | messages. In contrast, when forwarding anycast packets down the | |||
DODAG, the RPL router MUST copy one and only one of the children that | DODAG, the RPL router MUST copy one and only one of the children that | |||
advertised the address in their DAO messages, and forward to one | advertised the address in their DAO messages and forward it to one | |||
parent if there is no such child. | parent if there is no such child. | |||
6.5. New Registered Address Type Indicator P-Field | 6.5. New Registered Address Type Indicator P-Field | |||
The new Registered Address Type Indicator (RATInd) is created for use | The new Registered Address Type Indicator (RATInd) is created for use | |||
in RPL Target Option, the EARO, and the header of EDAR messages. The | in the RPL Target Option, the EARO, and the header of EDAR messages. | |||
RATInd indicates whether an address is unicast, multicast, or | The RATInd indicates whether an address is unicast, multicast, or | |||
anycast. The new 2-bit P-Field is defined to transport the RATInd in | anycast. The new 2-bit P-Field is defined to transport the RATInd in | |||
different protocols. | different protocols. | |||
The P-Field can take the following values: | The P-Field can take the following values: | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
| P-Field Value | Registered Address Type | | | Value | Registered Address Type Indicator | | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
| 0 | Registration for a Unicast Address or prefix | | | 0 | Registration for a Unicast Address | | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
| 1 | Registration for a Multicast Address | | | 1 | Registration for a Multicast Address | | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
| 2 | Registration for an Anycast Address | | | 2 | Registration for an Anycast Address | | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
| 3 | Reserved, MUST NOT be used by the sender. | | | 3 | Reserved; MUST NOT be used by the sender | | |||
+---------------+----------------------------------------------+ | +-------+------------------------------------------+ | |||
Table 1: P-Field Values | Table 1: P-Field Values | |||
The intent for the value of 3 is a prefix registration (see | The intent for the value of 3 is a prefix registration (see | |||
[I-D.ietf-6lo-prefix-registration], which is expected to be published | [REGISTRATION]), which is expected to be published after this | |||
soon after this specification. At the time of this writing, RPL | specification. At the time of this writing, RPL already advertises | |||
already advertises prefixes, and treated unicast addresses as | prefixes, and treats unicast addresses as prefixes with a length of | |||
prefgixes with a length of 128, so it does not really need that new | 128, so it does not need that new value. On the other hand, 6LoWPAN | |||
value. On the other hand, 6LoWPAN ND does not, and the value of 3 | ND does not, so the value of 3 (meaning prefix registration) will not | |||
meaning prefix registration will not be processed adequately. As a | be processed adequately. As a result: | |||
result: | ||||
* When the value of 3 is received in an RTO (see Section 6.6), this | * When the value of 3 is received in an RTO (see Section 6.6), this | |||
value MUST be ignored by the receiver, meaning, treated as a value | value MUST be ignored by the receiver (meaning it is treated as a | |||
of 0, but the message is processed normally (as per [RFC6550] and | value of 0) but the message is processed normally (as per | |||
[RFC9010]). | [RFC6550] and [RFC9010]). | |||
* In the case of an EARO (see Section 7.1) or an EDAR (see | * In the case of an EARO (see Section 7.1) or an EDAR (see | |||
Section 7.2), the message MUST be dropped, and the receiving node | Section 7.2), the message MUST be dropped, and the receiving node | |||
MAY either reply with a status of 12 "Invalid Registration" or | MAY either reply with a status of 12 "Invalid Registration" or | |||
remain silent. | remain silent. | |||
6.6. New RPL Target Option P-Field | 6.6. New RPL Target Option P-Field | |||
[RFC6550] recognizes a multicast address by its format (as specified | [RFC6550] recognizes a multicast address by its format (as specified | |||
in section 2.7 of [RFC4291]) and applies the specified multicast | in Section 2.7 of [RFC4291]) and applies the specified multicast | |||
operation if the address is recognized as multicast. This | operation if the address is recognized as multicast. This | |||
specification updates [RFC6550] to add the 2-bit P-Field (see | specification updates [RFC6550] to add the 2-bit P-Field (see | |||
Section 6.5) to the RTO to indicate that the target address is to be | Section 6.5) to the RTO to indicate that the Target Address is to be | |||
processed as unicast, multicast or anycast. | processed as unicast, multicast, or anycast. | |||
* An RTO that has the P-Field set to 0 is called a unicast RTO. | * An RTO that has the P-Field set to 0 is called a unicast RTO. | |||
* An RTO that has the P-Field set to 1 is called a multicast RTO. | * An RTO that has the P-Field set to 1 is called a multicast RTO. | |||
* An RTO that has the P-Field set to 2 is called an anycast RTO. | * An RTO that has the P-Field set to 2 is called an anycast RTO. | |||
The suggested position for the P-Field is 2 counting from 0 to 7 in | The suggested position for the P-Field is 2 counting from 0 to 7 in | |||
network order as shown in Figure 4, based on figure 4 of [RFC9010] | network order as shown in Figure 4, based on Figure 4 of [RFC9010], | |||
which defines the flags in position 0 and 1: | which defines the flags in positions 0 and 1: | |||
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 = 0x05 | Option Length |F|X| P |ROVRsz | Prefix Length | | | Type = 0x05 | Option Length |F|X| P |ROVRsz | Prefix Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Target Prefix (Variable Length) | | | Target Prefix (Variable Length) | | |||
. . | . . | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
... Registration Ownership Verifier (ROVR) ... | ... Registration Ownership Verifier (ROVR) ... | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 4: Format of the RPL Target Option | Figure 4: Format of the RPL Target Option (RTO) | |||
New and updated Option Fields: | New and updated Option Field: | |||
P: 2-bit field; see Section 6.5 | P: This is a 2-bit field; see Section 6.5. | |||
7. Updating RFC 8505 | 7. Updating RFC 8505 | |||
This specification Extends [RFC8505] by adding the concept of | This specification Extends [RFC8505] by adding the concept of a | |||
subscription for anycast and multicast addresses and creating a new | subscription for anycast and multicast addresses and creating a new | |||
field called the P-Field in the EARO and the EDAR/EDAC messages ti | field called the P-Field in the EARO and EDAR/EDAC messages to signal | |||
signal the type of registration. | the type of registration. | |||
7.1. Placing the New P-Field in the EARO | 7.1. Placing the New P-Field in the EARO | |||
Section 4.1 of [RFC8505] defines the EARO as an extension to the ARO | Section 4.1 of [RFC8505] defines the EARO as an extension to the ARO | |||
option defined in [RFC6775]. This specification adds a new P-Field | option defined in [RFC6775]. This specification adds a new P-Field | |||
placed in the EARO flags that is set as follows: | that is placed in the EARO flags and is set as follows: | |||
* The P-Field is set to 1 to signal that the Registered Address is a | * The P-Field is set to 1 to signal that the Registered Address is a | |||
multicast address. When the P-Field is 1 and the R flag is set to | multicast address. When the P-Field is 1 and the R flag is set to | |||
1 as well, the 6LR that conforms to this specification joins the | 1 as well, the 6LR that conforms to this specification joins the | |||
multicast stream, e.g., by injecting the address in the RPL | multicast stream (e.g., by injecting the address in the RPL | |||
multicast support that is extended in this specification for Non- | multicast support that is extended in this specification for the | |||
Storing Mode. | Non-Storing mode). | |||
* The P-Field is set to 2 to signal that the Registered Address is | * The P-Field is set to 2 to signal that the Registered Address is | |||
an anycast address. When the P-Field is 2 and the R flag is 1, | an anycast address. When the P-Field is 2 and the R flag is 1, | |||
the 6LR that conforms to this specification injects the anycast | the 6LR that conforms to this specification injects the anycast | |||
address in the routing protocol(s) that it participates to, e.g., | address in the routing protocol(s) that it participates in (e.g., | |||
in the RPL anycast support that is introduced in this | in the RPL anycast support that is introduced in this | |||
specification for both Storing and Non-Storing Modes. | specification for both the Storing and Non-Storing modes). | |||
Figure 5 illustrates the P-Field in its suggested positions (2, | Figure 5 illustrates the P-Field in its position (2, counting 0 to 7 | |||
counting 0 to 7 in network order in the 8-bit array), to be confirmed | in network order in the 8-bit array); see Section 14.1 for the IANA | |||
by IANA. | registration of P-Field values. | |||
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 | Length | Status | Opaque | | | Type | Length | Status | Opaque | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|Rsv| P | I |R|T| TID | Registration Lifetime | | |Rsv| P | I |R|T| TID | Registration Lifetime | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
... Registration Ownership Verifier ... | ... Registration Ownership Verifier ... | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 5: EARO Option Format | Figure 5: Extended Address Registration Option (EARO) Format | |||
New and updated Option Fields: | New and updated Option Fields: | |||
Rsv: 2-bit field; reserved, MUST be set to 0 and ignored by the | Rsv: This is a 2-bit field. It is reserved and MUST be set to 0 and | |||
receiver | ignored by the receiver. | |||
P: 2-bit P-Field; see Section 6.5 | P: This is a 2-bit P-Field; see Section 6.5. | |||
7.2. Placing the New P-Field in the EDAR Message | 7.2. Placing the New P-Field in the EDAR Message | |||
Section 4 of [RFC6775] provides the same format for DAR and DAC | Section 4 of [RFC6775] provides the same format for DAR and DAC | |||
messages but the status field is only used in DAC messages and has to | messages but the Status field is only used in DAC messages and has to | |||
be set to zero in DAR messages. [RFC8505] extends the DAC message as | be set to zero in DAR messages. [RFC8505] extends the DAC message as | |||
an EDAC but does not change the status field in the EDAR. | an EDAC but does not change the Status field in the EDAR. | |||
This specification repurposes the status field in the EDAR as a Flags | This specification repurposes the Status field in the EDAR as a Flags | |||
field. It adds a new P-Field to the EDAR flags field to match the | field. It adds a new P-Field to the EDAR flags field to match the | |||
P-Field in the EARO and signal the new types of registration. The | P-Field in the EARO and signal the new types of registration. The | |||
EDAC message is not modified. | EDAC message is not modified. | |||
Figure 6 illustrates the P-Field in its suggested position (0, | Figure 6 illustrates the P-Field in its position (0, counting 0 to 7 | |||
counting 0 to 7 in network order in the 8-bit array), to be confirmed | in network order in the 8-bit array); see Section 14.2 for the IANA | |||
by IANA. | registration of EDAR message flags. | |||
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 |CodePfx|CodeSfx| Checksum | | | Type |CodePfx|CodeSfx| Checksum | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| P | Reserved | TID | Registration Lifetime | | | P | Reserved | TID | Registration Lifetime | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
... Registration Ownership Verifier (ROVR) ... | ... Registration Ownership Verifier (ROVR) ... | |||
skipping to change at page 21, line 44 ¶ | skipping to change at line 1012 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+ Registered Address + | + Registered Address + | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 6: Extended Duplicate Address Request Message Format | Figure 6: Extended Duplicate Address Request (EDAR) Message Format | |||
New and updated Option Fields: | New and updated Option Fields: | |||
Reserved 6-bit field: reserved, MUST be set to 0 and ignored by the | Reserved: This is a 6-bit field. It is reserved and MUST be set to | |||
receiver | 0 and ignored by the receiver. | |||
P: 2-bit field; see Section 6.5 | P: This is a 2-bit field; see Section 6.5. | |||
7.3. Registration Extensions | 7.3. Registration Extensions | |||
[RFC8505] specifies the following behaviours: | [RFC8505] specifies the following behaviors: | |||
* A router that expects to reboot may send a final RA message, upon | * A router that expects to reboot may send a final RA message, upon | |||
which nodes should subscribe elsewhere or redo the subscription to | which nodes should subscribe elsewhere or redo the subscription to | |||
the same router upon reboot. In all other cases, a node reboot is | the same router upon reboot. In all other cases, a node reboot is | |||
silent. When the node comes back to life, existing registration | silent. When the node comes back to life, existing registration | |||
state might be lost if it was not persisted, e.g., in persistent | state might be lost if it was not persisted, e.g., in persistent | |||
memory. | memory. | |||
* The registration method is specified only for unicast addresses. | * The registration method is specified only for unicast addresses. | |||
* The 6LN must register all its ULA and GUA with an NS(EARO). | * The 6LN must register all its ULAs and GUAs with an NS(EARO). | |||
* The 6LN may set the R flag in the EARO to obtain return | * The 6LN may set the R flag in the EARO to obtain return | |||
reachability services by the 6LR, e.g., through ND proxy | reachability services by the 6LR, e.g., through ND proxy | |||
operations, or by injecting the route in a route-over subnet. | operations or by injecting the route in a route-over subnet. | |||
* the 6LR maintains a registration state per Registered Address, | * the 6LR maintains a registration state per Registered Address, | |||
including an NCE with the Link Layer Address (LLA) of the | including an NCE with the Link-Layer Address (LLA) of the | |||
Registered Node (the 6LN here). | Registered Node (the 6LN here). | |||
This specification Amends une above behavior and Extends it with the | This specification Amends une above behavior and Extends it with the | |||
following behavior: | following behavior: | |||
* The concept of subscription is introduced for anycast and | * The concept of subscription is introduced for anycast and | |||
multicast addresses as an extension to the unicast address | multicast addresses as an extension to the unicast address | |||
registration. The respective operations are similar from the | registration. The respective operations are similar from the | |||
perspective of the 6LN, but show important differences on the | perspective of the 6LN, but they show important differences on the | |||
router side, which maintains a separate state for each origin and | router side, which maintains a separate state for each origin and | |||
merges them in its own advertisements. | merges them in its own advertisements. | |||
* New ARO Statuses are introduced to indicate a "Registration | * New ARO Statuses are introduced to indicate a "Registration | |||
Refresh Request" and an "Invalid Registration" (see Table 9). | Refresh Request" and an "Invalid Registration" (see Table 9). | |||
The former status is used in asynchronous NA(EARO) messages to | The former status is used in asynchronous NA(EARO) messages to | |||
indicate to peer 6LNs that they are requested to reregister all | indicate to peer 6LNs that they are requested to reregister all | |||
addresses that were previously registered to the originating node. | addresses that were previously registered to the originating node. | |||
The NA message may be sent to a unicast or a multicast link-scope | The NA message may be sent to a unicast or a multicast link-scope | |||
address and should be contained within the L2 range where nodes | address and should be contained within the L2 range where nodes | |||
may effectively have registered/subscribed to this router, e.g., a | may have effectively registered/subscribed to this router (e.g., a | |||
radio broadcast domain. The latter is generic to any error in the | radio broadcast domain). The latter is generic to any error in | |||
EARO, and is used e.g., to report that the P-Field is not | the EARO and is used, for example, to report that the P-Field is | |||
consistent with the Registered Address in NS(EARO) and EDAR | not consistent with the Registered Address in NS(EARO) and EDAR | |||
messages. | messages. | |||
A router that wishes to refresh its state, e.g., upon reboot or in | A router that wishes to refresh its state (e.g., upon reboot or in | |||
any situation where it may have missed a registration or lost a | any situation where it may have missed a registration or lost a | |||
registration state, SHOULD send an asynchronous NA(EARO) with this | registration state) SHOULD send an asynchronous NA(EARO) with this | |||
new status value. Failure to do so will delay the recovery of the | new status value. Failure to do so will delay the recovery of the | |||
network till the next periodic registration by the attached 6LNs | network until the next periodic registration by the attached 6LNs | |||
and packets may be lost till then. That asynchronous multicast | and packets may be lost until then. That asynchronous multicast | |||
NA(EARO) MUST be sent to the all-nodes link scope multicast | NA(EARO) MUST be sent to the all-nodes link-scope multicast | |||
address (ff02::1) and Target MUST be set to the link local address | address (ff02::1), and the Target MUST be set to the link local | |||
that was exposed previously by this node to accept registrations. | address that was exposed previously by this node to accept | |||
registrations. | ||||
The TID field in the multicast NA(EARO) is the one associated to | The TID field in the multicast NA(EARO) is the one associated to | |||
the Target and follows the same rules as the TID in the NS(EARO) | the Target and follows the same rules as the TID in the NS(EARO) | |||
for the same Target, see section 5.2 of [RFC8505], which points at | for the same Target; see Section 5.2 of [RFC8505], which points to | |||
section 7.2 of [RFC6550] for the lollipop mechanism used in the | Section 7.2 of [RFC6550] for the lollipop mechanism used in the | |||
TID operation. It is incremented by the sender each time it sends | TID operation. It is incremented by the sender each time it sends | |||
a new series of NS and/or NA with the EARO about the Target. The | a new series of NS and/or NA with the EARO about the Target. The | |||
TID indicates a reboot when it is in the "straight" part of the | TID indicates a reboot when it is in the "straight" part of the | |||
lollipop, between the initial value and 255. After that the TID | lollipop, between the initial value and 255. After that, the TID | |||
remains below 128 as long as the device is alive. An asynchronous | remains below 128 as long as the device is alive. An asynchronous | |||
multicast NA(EARO) with a TID below 128 MUST NOT be considered as | multicast NA(EARO) with a TID below 128 MUST NOT be considered as | |||
indicating a reboot. | indicating a reboot. | |||
The asynchronous multicast NA(EARO) indicating a "Registration | The asynchronous multicast NA(EARO) indicating a "Registration | |||
Refresh Request" MAY be reissued a few times within a short | Refresh Request" MAY be reissued a few times within a short | |||
period, to increase the chances that the message is received by | period, to increase the chances that the message is received by | |||
all registered nodes despite the unreliable transmissions within | all registered nodes despite the unreliable transmissions within | |||
the LLN; the TID MUST be incremented each time. The receiver 6LN | the LLN; the TID MUST be incremented each time. The receiver 6LN | |||
MUST consider that multiple NA(EARO) messages indicating a | MUST consider that multiple NA(EARO) messages indicating a | |||
"Registration Refresh Request" from the same 6LR received within | "Registration Refresh Request" from the same 6LR received within | |||
that short period with comparable (their absolute difference is | that short period with comparable and increasing TID values (i.e., | |||
less than SEQUENCE_WINDOW, see section 7.2 of [RFC6550]) and | their absolute difference is less than the SEQUENCE_WINDOW; see | |||
increasing TID values are in fact indicative of the same request; | Section 7.2 of [RFC6550]) are in fact indicative of the same | |||
the 6LN MUST process one and only one of the series of messages. | request. The 6LN MUST process one and only one of the series of | |||
If the TIDs are desynchronized (not comparable), or decreased, | messages. If the TIDs are desynchronized (not comparable) or | |||
then the NA(EARO) is considered as a new request and it MUST be | decreased, then the NA(EARO) is considered as a new request and it | |||
processed. | MUST be processed. | |||
The multicast NA(EARO) SHOULD be resent enough times for the TID | The multicast NA(EARO) SHOULD be resent enough times for the TID | |||
to be issued with the value of 255 so the next NA(EARO) after the | to be issued with the value of 255 so the next NA(EARO) after the | |||
initial series is outside the lollipop and not confused with a | initial series is outside the lollipop and is not confused with a | |||
reboot. By default the TID initial setting after boot is 252, the | reboot. By default, the TID initial setting after boot is 252, | |||
SEQUENCE_WINDOW is 4, the duration of the short period is 10 | the SEQUENCE_WINDOW is 4, the duration of the short period is 10 | |||
seconds, the interval between retries is 1 second, and the number | seconds, the interval between retries is 1 second, and the number | |||
of retries is 3. To reach 255 at boot time, the sender MAY either | of retries is 3. To reach 255 at boot time, the sender MAY either | |||
issue at least 4 NA messages, skip a TID value, or start with a | issue at least 4 NA messages, skip a TID value, or start with a | |||
value that is more than 252. The best values for the short | value that is more than 252. The best values for the short | |||
period, the number of retries, and the TID initial setting depend | period, the number of retries, and the TID initial setting depend | |||
on the environment and SHOULD be configurable. | on the environment and SHOULD be configurable. | |||
* A new IPv6 ND Consistent Uptime option (CUO) is introduced to be | * A new IPv6 ND Consistent Uptime Option (CUO) is introduced to be | |||
placed in IPv6 ND messages. The CUO allows to figure the state | placed in IPv6 ND messages. The CUO allows figuring out the state | |||
consistency between the sender and the receiver. For instance, a | consistency between the sender and the receiver. For instance, a | |||
node that rebooted needs to reset its uptime to 0. A Router that | node that rebooted needs to reset its uptime to 0. A router that | |||
changed information like a prefix information option has to | changed information like a prefix information option has to | |||
advertise an incremented state sequence. To that effect, the CUO | advertise an incremented state sequence. To that effect, the CUO | |||
carries a Node State Sequence Information (NSSI) and a Consistent | carries a Node State Sequence Information (NSSI) and a Consistent | |||
Uptime. See Section 10 for the option details. | Uptime. See Section 10 for the option details. | |||
A node that receives the CUO checks whether it is indicative of a | A node that receives the CUO checks whether it is indicative of a | |||
desynchronization between peers. A peer that discovers that a | desynchronization between peers. A peer that discovers that a | |||
router has changed should reassess which addresses it formed based | router has changed should reassess which addresses it formed based | |||
on the new PIOs from that router, and resync the state that it | on the new PIOs from that router and resync the state that it | |||
installed in the router, e.g., the registration state for its | installed in the router (e.g., the registration state for its | |||
addresses. In the process, the peer may attempt to form new | addresses). In the process, the peer may attempt to: | |||
addresses and register them, deprecate old addresses and | ||||
deregister them using a Lifetime of 0, and reform any potentially | - form new addresses and register them, | |||
lost state, e.g., by registering again an existing address that it | ||||
will keep using. A loss of state is inferred if the Consistent | - deprecate old addresses and deregister them using a Lifetime of | |||
Uptime of the peer is less than the time since the state was | 0, and | |||
installed, or the NSSI is incremented for a consistent uptime. | ||||
- reform any potentially lost state (e.g., by registering again | ||||
an existing address that it will keep using). | ||||
A loss of state is inferred if the Consistent Uptime of the peer | ||||
is less than the time since the state was installed, or if the | ||||
NSSI is incremented for a Consistent Uptime. | ||||
* Registration for multicast and anycast addresses is now supported. | * Registration for multicast and anycast addresses is now supported. | |||
The P-Field is added to the EARO to signal when the registered | The P-Field is added to the EARO to signal when the Registered | |||
address is anycast or multicast. If the value of the P-Field is | Address is anycast or multicast. The value of the P-Field is not | |||
not consistent with the Registered Address, that is if | consistent with the Registered Address if: | |||
- the Registered Address is a multicast address (section 2.4 of | - the Registered Address is a multicast address (Section 2.4 of | |||
[RFC4291]) and the P-Field indicates a value that is not 1, or | [RFC4291]) and the P-Field indicates a value that is not 1, or | |||
- the Registered Address is not a multicast address and the | - the Registered Address is not a multicast address and the | |||
P-Field indicates a value that is 1. | P-Field indicates a value that is 1. | |||
then the message, NS(EARO) or EDAR, MUST be dropped, and the | If this occurs, then the message, NS(EARO) or EDAR, MUST be | |||
receiving node MAY either reply with a status of 12 "Invalid | dropped, and the receiving node MAY either reply with a status of | |||
Registration" or remain silent. | 12 "Invalid Registration" or remain silent. | |||
* The Status field in the EDAR message that was reserved and not | * The Status field in the EDAR message that was reserved and not | |||
used in RFC 8505 is repurposed to transport the flags to signal | used in [RFC8505] is repurposed to transport the flags to signal | |||
multicast and anycast. | multicast and anycast. | |||
* The 6LN MUST also subscribe all the IPv6 multicast addresses that | * The 6LN MUST also subscribe all the IPv6 multicast addresses that | |||
it listens to, and it MUST set the P-Field to 1 in the EARO for | it listens to, and it MUST set the P-Field to 1 in the EARO for | |||
those addresses. The one exception is the all-nodes link-scope | those addresses. The one exception is the all-nodes link-scope | |||
multicast address ff02::1 [RFC4291] which is implicitly registered | multicast address ff02::1 [RFC4291], which is implicitly | |||
by all nodes, meaning that all nodes are expected to accept | registered by all nodes, meaning that all nodes are expected to | |||
messages sent to ff02::1 but are not expected to register it. | accept messages sent to ff02::1 but are not expected to register | |||
it. | ||||
* The 6LN MAY set the R flag in the EARO to obtain the delivery of | * The 6LN MAY set the R flag in the EARO to obtain the delivery of | |||
the multicast packets by the 6LR, e.g., by MLD proxy operations, | the multicast packets by the 6LR (e.g., by MLD proxy operations, | |||
or by injecting the address in a route-over subnet or in the | or by injecting the address in a route-over subnet or in the | |||
Protocol Independent Multicast [RFC7761] protocol. | Protocol Independent Multicast [RFC7761] protocol). | |||
* The 6LN MUST also subscribe all the IPv6 anycast addresses that it | * The 6LN MUST also subscribe all the IPv6 anycast addresses that it | |||
supports and it MUST set the P-Field in the EARO to 2 for those | supports, and it MUST set the P-Field in the EARO to 2 for those | |||
addresses. | addresses. | |||
* The 6LR and the 6LBR are extended to accept more than one | * The 6LR and the 6LBR are extended to accept more than one | |||
subscription for the same address when it is anycast or multicast, | subscription for the same address when it is anycast or multicast, | |||
since multiple 6LNs may subscribe to the same address of these | since multiple 6LNs may subscribe to the same address of these | |||
types. In both cases, the Registration Ownership Verifier (ROVR) | types. In both cases, the ROVR in the EARO uniquely identifies a | |||
in the EARO identifies uniquely a registration within the | registration within the namespace of the Registered Address. | |||
namespace of the Registered Address. | ||||
* The 6LR MUST also consider that all the nodes that registered an | * The 6LR MUST also consider that all the nodes that registered an | |||
address to it (as known by the Source Link-Layer Address Option) | address to it (as known by the Source Link-Layer Address Option | |||
also registered to the all nodes link-scope multicast address | (SLLAO)) also registered to the all nodes link-scope multicast | |||
ff02::1 [RFC4291]. | address ff02::1 [RFC4291]. | |||
* The 6LR MUST maintain a subscription state per tuple (IPv6 | * The 6LR MUST maintain a subscription state per tuple (IPv6 | |||
address, ROVR) for both anycast and multicast types of address. | address, ROVR) for both anycast and multicast types of addresses. | |||
It SHOULD notify the 6LBR with an EDAR message, unless it | It SHOULD notify the 6LBR with an EDAR message, unless it | |||
determined that the 6LBR is legacy and does not support this | determined that the 6LBR is legacy and does not support this | |||
specification. In turn, the 6LBR MUST maintain a subscription | specification. In turn, the 6LBR MUST maintain a subscription | |||
state per tuple (IPv6 address, ROVR) for both anycast and | state per tuple (IPv6 address, ROVR) for both anycast and | |||
multicast types of address. | multicast types of address. | |||
8. Updating RFC 9010 | 8. Updating RFC 9010 | |||
[RFC9010] specifies the following behaviours: | [RFC9010] specifies the following behaviors: | |||
* The 6LR has no specified procedure to inject multicast and anycast | * The 6LR has no specified procedure to inject multicast and anycast | |||
routes in RPL though RPL supports multicast. | routes in RPL even though RPL supports multicast. | |||
* Upon a registration with the R flag set to 1 in the EARO, the 6LR | * Upon a registration with the R flag set to 1 in the EARO, the 6LR | |||
injects the address in the RPL unicast support. | injects the address in the RPL unicast support. | |||
* Upon receiving a packet directed to a unicast address for which it | * Upon receiving a packet directed to a unicast address for which it | |||
has an active registration, the 6LR delivers the packet as a | has an active registration, the 6LR delivers the packet as a | |||
unicast layer-2 frame to the LLA of the node that registered the | unicast Layer 2 frame to the LLA of the node that registered the | |||
unicast address. | unicast address. | |||
This specification Extends [RFC9010] by adding the following | This specification Extends [RFC9010] by adding the following | |||
behavior: | behavior: | |||
* Upon a subscription with the R flag and the P-Field both set to 1 | * Upon a subscription with the R flag and the P-Field both set to 1 | |||
in the EARO, if the scope of the multicast address is above link- | in the EARO, if the scope of the multicast address is above link- | |||
scope [RFC7346], then the 6LR injects the address in the RPL | scope [RFC7346], then the 6LR injects the address in the RPL | |||
multicast support and sets the P field in the RTO to 1 as well. | multicast support and sets the P-Field in the RTO to 1 as well. | |||
* Upon a subscription with the R set to 1 and the P-Field set to 2 | * Upon a subscription with the R set to 1 and the P-Field set to 2 | |||
in the EARO, the 6LR injects the address in the new RPL anycast | in the EARO, the 6LR injects the address in the new RPL anycast | |||
support and sets the P-Field to 2 in the RTO. | support and sets the P-Field to 2 in the RTO. | |||
* Upon receiving a packet directed to a multicast address for which | * Upon receiving a packet directed to a multicast address for which | |||
it has at least one subscription, the 6LR delivers a copy of the | it has at least one subscription, the 6LR delivers a copy of the | |||
packet as a unicast layer-2 frame to the LLA of each of the nodes | packet as a unicast Layer 2 frame to the LLA of each of the nodes | |||
that registered to that multicast address. | that registered to that multicast address. | |||
* Upon receiving a packet directed to an anycast address for which | * Upon receiving a packet directed to an anycast address for which | |||
it has at least one subscription, the 6LR delivers a copy of the | it has at least one subscription, the 6LR delivers a copy of the | |||
packet as a unicast layer-2 frame to the LLA of exactly one of the | packet as a unicast Layer 2 frame to the LLA of exactly one of the | |||
nodes that registered to that multicast address. | nodes that registered to that multicast address. | |||
9. Leveraging RFC 8928 | 9. Leveraging RFC 8928 | |||
Address-Protected Neighbor Discovery for Low-Power and Lossy Networks | "Address-Protected Neighbor Discovery for Low-Power and Lossy | |||
[RFC8928] was defined to protect the ownership of unicast IPv6 | Networks" [RFC8928] was defined to protect the ownership of unicast | |||
addresses that are registered with [RFC8505]. | IPv6 addresses that are registered with [RFC8505]. | |||
With [RFC8928], it is possible for a node to autoconfigure a pair of | With [RFC8928], it is possible for a node to autoconfigure a pair of | |||
public and private keys and use them to sign the registration of | public and private keys and use them to sign the registration of | |||
addresses that are either autoconfigured or obtained through other | addresses that are either autoconfigured or obtained through other | |||
methods. | methods. | |||
The first hop router (the 6LR) may then validate a registration and | The first hop router (the 6LR) may then validate a registration and | |||
perform source address validation on packets coming from the sender | perform source address validation on packets coming from the sender | |||
node (the 6LN). | node (the 6LN). | |||
Anycast and multicast addresses are not owned by one node. Multiple | Anycast and multicast addresses are not owned by one node. Multiple | |||
nodes may subscribe to the same address. In that context, the method | nodes may subscribe to the same address. In that context, the method | |||
specified in [RFC8928] cannot be used with autoconfigured keypairs to | specified in [RFC8928] cannot be used with autoconfigured key pairs | |||
protect a single ownership. | to protect a single ownership. | |||
For an anycast or a multicast address, it is still possible to | For an anycast or a multicast address, it is still possible to | |||
leverage [RFC8928] to enforce the right to subscribe. If [RFC8928] | leverage [RFC8928] to enforce the right to subscribe. If [RFC8928] | |||
is used, a keypair MUST be associated with the address before it is | is used, a key pair MUST be associated with the address before it is | |||
deployed, and a ROVR MUST be generated from that keypair as specified | deployed, and a ROVR MUST be generated from that key pair as | |||
in [RFC8928]. The address and the ROVR MUST then be installed in the | specified in [RFC8928]. The address and the ROVR MUST then be | |||
6LBR so it can recognize the address and compare the ROVR on the | installed in the 6LBR so it can recognize the address and compare the | |||
first subscription. | ROVR on the first subscription. | |||
The keypair MUST then be provisioned in each node that needs to | The key pair MUST then be provisioned in each node that needs to | |||
subscribe to the anycast or multicast address, so the node can follow | subscribe to the anycast or multicast address, so the node can follow | |||
the steps in [RFC8928] to subscribe to the address. | the steps in [RFC8928] to subscribe to the address. | |||
10. Consistent Uptime Option | 10. Consistent Uptime Option | |||
This specification introduces a new option that characterizes the | This specification introduces a new option that characterizes the | |||
uptime of the sender. The option may be used by routers in RA | uptime of the sender. The option may be used by routers in RA | |||
messages and by any node in NS, NA, and RS messages. It is used by | messages and by any node in NS, NA, and RS messages. It is used by | |||
the receiver to infer whether some state synchronization might be | the receiver to infer whether some state synchronization might be | |||
lost, e.g., due to reboot. | lost (e.g., due to reboot). | |||
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 | Length | Exponent | Uptime Mantissa | | | Type | Length | Exponent | Uptime Mantissa | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|S|U| flags | NSSI | Peer NSSI | | |S|U| flags | NSSI | Peer NSSI | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 7: Consistent Uptime Option Format | Figure 7: Consistent Uptime Option (CUO) Format | |||
Type: To be assigned by IANA, see Table 10 | Type: Assigned by IANA; see Table 10. | |||
Length: 1 | Length: 1 | |||
Uptime Exponent: 6-bit unsigned integer: The Exponent to the base 2 | Uptime Exponent: A 6-bit unsigned integer and the Exponent to the | |||
of the uptime unit | base 2 of the uptime unit. | |||
Uptime Mantissa: 10-bit unsigned integer: The mantissa of the uptime | Uptime Mantissa: A 10-bit unsigned integer and the mantissa of the | |||
value | uptime value. | |||
S: 1-bit flag, set to 1 to indicate that the sender is low-power and | S: A 1-bit flag set to 1 to indicate that the sender is low-power | |||
may sleep. | and may sleep. | |||
U: 1-bit flag, set to 1 to indicate that the Peer NSSI field is | U: A 1-bit flag set to 1 to indicate that the Peer NSSI field is | |||
valid; it MUST be set to 0 when the message is not unicast and | valid; it MUST be set to 0 when the message is not unicast and | |||
MUST be set to 1 when the message is unicast and the sender has an | MUST be set to 1 when the message is unicast and the sender has an | |||
NSSI state for the intended receiver. | NSSI state for the intended receiver. | |||
flags: 6-bit, reserved. MUST be set to 0 by the sender and ignored | flags: 6-bit, reserved. MUST be set to 0 by the sender and ignored | |||
by the receiver. | by the receiver. | |||
NSSI: 12-bit unsigned integer: The Node State Sequence Information, | NSSI: A 12-bit unsigned integer that represents the Node State | |||
MUST be stored by the receiver if it has a dependency on | Sequence Information (NSSI). It MUST be stored by the receiver if | |||
information advertised or stored at the sender. | it has a dependency on information advertised or stored at the | |||
sender. | ||||
Peer NSSI: 12-bit unsigned integer: Echoes the last known NSSI from | Peer NSSI: A 12-bit unsigned integer that echoes the last known NSSI | |||
the peer. | from the peer. | |||
The Consistent Uptime indicates how long the sender has been | The Consistent Uptime indicates how long the sender has been | |||
continuously up and running (though possibly sleeping) without loss | continuously up and running (though possibly sleeping) without loss | |||
of state. It is expressed by the Uptime Mantissa in units of 2 to | of state. It is expressed by the Uptime Mantissa in units of 2 to | |||
the power of the Uptime Exponent milliseconds. The receiver derives | the power of the Uptime Exponent in milliseconds. The receiver | |||
the boot time of the sender as the current time minus the sender's | derives the boot time of the sender as the current time minus the | |||
Consistent Uptime. | sender's Consistent Uptime. | |||
If the boot time of the sender is updated to a newer time, any state | If the boot time of the sender is updated to a newer time, any state | |||
that the receiver installed in the sender before the reboot is | that the receiver installed in the sender before the reboot is | |||
probably lost. The receiver MUST reassess all the state it installed | probably lost. The receiver MUST reassess all the state it installed | |||
in the server (e.g., any registration) and reinstall if it is still | in the server (e.g., any registration) and reinstall if it is still | |||
needed. | needed. | |||
The U flag not set in a unicast message from the sender indicates | The U flag not set in a unicast message from the sender indicates | |||
that it has lost all state from this node. If the U flag is set, | that it has lost all state from this node. If the U flag is set, | |||
then the Peer NSSI field can be used to assess which changes the | then the Peer NSSI field can be used to assess which changes the | |||
sender missed. The other way around, any state that was installed in | sender missed. For the other way around, any state that was | |||
the receiver from information by the sender before it rebooted MUST | installed in the receiver from information by the sender before it | |||
be removed and may or may not be reinstalled later. | rebooted MUST be removed and may or may not be reinstalled later. | |||
The value of the uptime is reset to 0 at some point of the sender's | The value of the uptime is reset to 0 at some point of the sender's | |||
reboot sequence, but may not be still 0 when the first message is | reboot sequence, but it may not still be 0 when the first message is | |||
sent, so the receiver must not expect a value of 0 as the signal of a | sent, so the receiver must not expect a value of 0 as the signal of a | |||
reboot. | reboot. | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
| Mantissa | Exponent | Resolution | Uptime | | | Mantissa | Exponent | Resolution | Uptime | | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
| 1 | 0 | 1ms | 1ms | | | 1 | 0 | 1 ms | 1 ms | | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
| 5 | 10 | 1s | 5 seconds | | | 5 | 10 | 1 s | 5 seconds | | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
| 2 | 15 | 30s | 1mn | | | 2 | 15 | 30 s | 1 mn | | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
| 2 | 21 | 33mn | 1 hour | | | 2 | 21 | 33 mn | 1 hour | | |||
+----------+----------+------------+-----------+ | +----------+----------+------------+-----------+ | |||
Table 2: Consistent Uptime Rough Values | Table 2: Consistent Uptime Rough Values | |||
The NSSI SHOULD be stored in persistent memory by the sender and | The NSSI SHOULD be stored in persistent memory by the sender and | |||
incremented when it may have missed or lost state about a peer, or | incremented when it may have missed or lost state about a peer, or | |||
has updated some state in a fashion that will impact a peer, e.g., a | when it has updated some state in a fashion that will impact a peer | |||
host formed a new address or a router advertises a new prefix. When | (e.g., a host formed a new address or a router advertises a new | |||
persisting is not possible, then the NSSI is randomly generated. | prefix). When persisting is not possible, then the NSSI is randomly | |||
generated. | ||||
As long as the NSSI remains constant, the cross-dependent state (such | As long as the NSSI remains constant, the cross-dependent state (such | |||
as addresses in a host that depend on a prefix in a router) can | as addresses in a host that depend on a prefix in a router) can | |||
remain stable, meaning less checks in the receiver. Any change in | remain stable, meaning less checks in the receiver. Any change in | |||
the value of the NSSI is an indication that the sender updated some | the value of the NSSI is an indication that the sender updated some | |||
state and that the dependent state in the receiver should be | state and that the dependent state in the receiver should be | |||
reassessed, e.g., addresses that were formed based on an RA with a | reassessed (e.g., addresses that were formed based on an RA with a | |||
previous NSSI should be checked, or new addresses may be formed and | previous NSSI should be checked, or new addresses may be formed and | |||
registered. | registered). | |||
11. Operational considerations | 11. Operational Considerations | |||
With this specification, a RPL DODAG forms a realm, and multiple RPL | With this specification, a RPL DODAG forms a realm, and multiple RPL | |||
DODAGs may be federated in a single RPL Instance administratively. | DODAGs may be federated in a single RPL Instance administratively. | |||
This means that a multicast address that needs to span a RPL DODAG | This means that a multicast address that needs to span a RPL DODAG | |||
MUST use a scope of Realm-Local whereas a multicast address that | MUST use a scope of Realm-Local whereas a multicast address that | |||
needs to span a RPL Instance MUST use a scope of Admin-Local as | needs to span a RPL Instance MUST use a scope of Admin-Local as | |||
discussed in section 3 of "IPv6 Multicast Address Scopes" [RFC7346]. | discussed in Section 3 of [RFC7346], "IPv6 Multicast Address Scopes". | |||
"IPv6 Addressing of IPv4/IPv6 Translators" [RFC6052] enables to embed | "IPv6 Addressing of IPv4/IPv6 Translators" [RFC6052] enables | |||
IPv4 addresses in IPv6 addresses. The Root of a DODAG may leverage | embedding IPv4 addresses in IPv6 addresses. The Root of a DODAG may | |||
that technique to translate IPv4 traffic in IPv6 and route along the | leverage that technique to translate IPv4 traffic in IPv6 and route | |||
RPL domain. When encapsulating a packet with an IPv4 multicast | along the RPL domain. When encapsulating a packet with an IPv4 | |||
Destination Address, it MUST use a multicast address with the | multicast Destination Address, it MUST use a multicast address with | |||
appropriate scope, Realm-Local or Admin-Local. | the appropriate scope, Realm-Local or Admin-Local. | |||
"Unicast-Prefix-based IPv6 Multicast Addresses" [RFC3306] enables to | "Unicast-Prefix-based IPv6 Multicast Addresses" [RFC3306] enables | |||
form 2^32 multicast addresses from a single /64 prefix. If an IPv6 | forming 2^32 multicast addresses from a single /64 prefix. If an | |||
prefix is associated to an Instance or a RPL DODAG, this provides a | IPv6 prefix is associated to an Instance or a RPL DODAG, this | |||
namespace that can be used in any desired fashion. It is for | provides a namespace that can be used in any desired fashion. For | |||
instance possible for a standard defining organization to form its | instance, it is possible for a standard defining organization to form | |||
own registry and allocate 32-bit values from that namespace to | its own registry and allocate 32-bit values from that namespace to | |||
network functions or device types. When used within a RPL deployment | network functions or device types. When used within a RPL deployment | |||
that is associated with a /64 prefix the IPv6 multicast addresses can | that is associated with a /64 prefix, the IPv6 multicast addresses | |||
be automatically derived from the prefix and the 32-bit value for | can be automatically derived from the prefix and the 32-bit value for | |||
either a Realm-Local or an Admin-Local multicast address as needed in | either a Realm-Local or an Admin-Local multicast address as needed in | |||
the configuration. | the configuration. | |||
This specification introduces the new RPL MOP 5. Operationally | This specification introduces the new RPL MOP 5. Operationally | |||
speaking, deploying a new RPL MOP means that one cannot update a live | speaking, deploying a new RPL MOP means that one cannot update a live | |||
network. The network administrator must create a new instance with | network. The network administrator must create a new instance with | |||
MOP 5 and migrate nodes to that instance by allowing them to join it. | MOP 5 and migrate nodes to that instance by allowing them to join it. | |||
In a "green field" deployment where all nodes support this | In a "green field" deployment where all nodes support this | |||
specification, it is possible to deploy a single RPL Instance using a | specification, it is possible to deploy a single RPL Instance using a | |||
multicast MOP for unicast, multicast, and anycast addresses. | multicast MOP for unicast, multicast, and anycast addresses. | |||
In a "brown field" where legacy devices that do not support this | In a "brown field" where legacy devices that do not support this | |||
specification co-exist with upgraded devices, it is RECOMMENDED to | specification coexist with upgraded devices, it is RECOMMENDED to | |||
deploy one RPL Instance in any Mode of Operation (typically MOP 1) | deploy one RPL Instance in any Mode of Operation (typically MOP 1) | |||
for unicast that legacy nodes can join, and a separate RPL Instance | for unicast that legacy nodes can join and a separate RPL Instance | |||
dedicated to multicast and anycast operations using a multicast MOP. | dedicated to multicast and anycast operations using a multicast MOP. | |||
To deploy a Storing Mode multicast operation using MOP 3 in a RPL | To deploy a Storing mode multicast operation using MOP 3 in a RPL | |||
domain, it is required that there is enough density of RPL routers | domain, it is required that the RPL routers that support MOP 3 have | |||
that support MOP 3 to build a DODAG that covers all the potential | enough density to build a DODAG that covers all the potential | |||
listeners and include the spanning multicast trees that are needed to | listeners and includes the spanning multicast trees that are needed | |||
distribute the multicast flows. This might not be the case when | to distribute the multicast flows. This might not be the case when | |||
extending the capabilities of an existing network. | extending the capabilities of an existing network. | |||
In the case of the new Non-Storing multicast MOP, arguably the new | In the case of the new Non-Storing multicast MOP, arguably the new | |||
support is only needed at the 6LRs that will accept multicast | support is only needed at the 6LRs that will accept multicast | |||
listeners. It is still required that each listener can reach at | listeners. It is still required that each listener be able to reach | |||
least one such 6LR, so the upgraded 6LRs must be deployed to cover | at least one such 6LR, so the upgraded 6LRs must be deployed to cover | |||
all the 6LN that need multicast services. | all the 6LNs that need multicast services. | |||
Using separate RPL Instances for in the one hand unicast traffic and | Using separate RPL Instances for in the one hand unicast traffic and | |||
in the other hand anycast and multicast traffic allows to use | in the other hand anycast and multicast traffic allows to use | |||
different objective function, one favoring the link quality up for | different objective function, one favoring the link quality up for | |||
unicast collection and one favoring downwards link quality for | unicast collection and one favoring downwards link quality for | |||
multicast distribution. | multicast distribution. | |||
But this might be impractical in some use cases where the signaling | However, this might be impractical in some use cases where the | |||
and the state to be installed in the devices are very constrained, | signaling and the state to be installed in the devices are very | |||
the upgraded devices are too sparse, or the devices do not support | constrained, the upgraded devices are too sparse, or the devices do | |||
more multiple instances. | not support more multiple instances. | |||
When using a single RPL Instance, MOP 3 expects the Storing Mode of | When using a single RPL Instance, MOP 3 expects the Storing Mode of | |||
Operation for both unicast and multicast, which is an issue in | Operation for both unicast and multicast, which is an issue in | |||
constrained networks that typically use MOP 1 for unicast. This | constrained networks that typically use MOP 1 for unicast. This | |||
specification allows a mixed mode that is signaled as MOP 1 in the | specification allows a mixed mode that is signaled as MOP 1 in the | |||
DIO messages for backward compatibility, where limited multicast and/ | DIO messages for backward compatibility, where limited multicast and/ | |||
or anycast is available, under the following conditions: | or anycast is available, under the following conditions: | |||
* There MUST be enough density of 6LRs that support the mixed mode | * There MUST be enough density of the 6LRs that support the mixed | |||
to cover all the 6LNs that require multicast or anycast services. | mode to cover all the 6LNs that require multicast or anycast | |||
In Storing Mode, there MUST be enough density of 6LRs that support | services. In Storing mode, there MUST be enough density of the | |||
the mixed mode to also form a DODAG to the Root. | 6LRs that support the mixed mode to also form a DODAG to the Root. | |||
* The RPL routers that support the mixed mode are configured to | * The RPL routers that support the mixed mode are configured to | |||
operate in accordance with the desired operation in the network. | operate in accordance with the desired operation in the network. | |||
* The MOP signaled in the RPL DIO messages is MOP 1 to enable the | * The MOP signaled in the RPL DIO messages is MOP 1 to enable the | |||
legacy nodes to operate as leaves. | legacy nodes to operate as leaves. | |||
* The support of multicast and/or anycast in the RPL Instance SHOULD | * The support of multicast and/or anycast in the RPL Instance SHOULD | |||
be signaled by the 6LRs to the 6LN using a 6CIO, see Section 5. | be signaled by the 6LRs to the 6LN using a 6CIO; see Section 5. | |||
* Alternatively, the support of multicast in the RPL domain can be | * Alternatively, the support of multicast in the RPL domain can be | |||
globally known by other means such as configuration or external | globally known by other means including configuration or external | |||
information such as support of a version of an industry standard | information such as support of a version of an industry standard | |||
that mandates it. In that case, all the routers MUST support the | that mandates it. In that case, all the routers MUST support the | |||
mixed mode. | mixed mode. | |||
12. Security Considerations | 12. Security Considerations | |||
This specification Extends [RFC8505] and [RFC9010], and leverages | This specification Extends [RFC8505] and [RFC9010] and leverages | |||
[RFC9008]. The security section in these documents also apply to | [RFC9008]. The security sections in these documents also apply to | |||
this document. In particular, the link layer SHOULD be sufficiently | this document. In particular, the link layer SHOULD be sufficiently | |||
protected to prevent rogue access. | protected to prevent rogue access. | |||
RPL [RFC6550] already supports routing on multicast addresses, | RPL [RFC6550] already supports routing on multicast addresses, | |||
whereby the endpoint that subscribes to the group and to do so | whereby the endpoint that subscribes to the group and to do so | |||
injects the multicast address participates to RPL as a RPL aware node | injects the multicast address participates to RPL as a RPL-Aware Node | |||
(RAN). Using an extension of RFC 8505 as opposed to RPL to subscribe | (RAN). Using an extension of [RFC8505] as opposed to RPL to | |||
the address allows a RPL unaware leaf (RUL) to subscribe as well. As | subscribe the address allows a RPL-Unaware Leaf (RUL) to subscribe as | |||
noted in [RFC9010], this provides a better security posture for the | well. As noted in [RFC9010], this provides a better security posture | |||
RPL network, since the nodes that do not really need to speak RPL, or | for the RPL network, since the nodes that do not really need to speak | |||
are not trusted enough to inject RPL messages, can be forbidden from | RPL, or are not trusted enough to inject RPL messages, can be | |||
doing so, which bars a number of attacks vectors from within RPL. | forbidden from doing so, which bars a number of attack vectors from | |||
Acting as RUL, those nodes may still leverage the RPL network through | within RPL. Acting as an RUL, those nodes may still leverage the RPL | |||
the capabilities that are opened via ND operations. With this draft, | network through the capabilities that are opened via ND operations. | |||
a node that needs multicast delivery can now obtain the service in a | With this specification, a node that needs multicast delivery can now | |||
RPL domain while not being allowed to inject RPL messages. | obtain the service in a RPL domain while not being allowed to inject | |||
RPL messages. | ||||
Compared to [RFC6550], this draft enables to track the origin of the | Compared to [RFC6550], this specification enables tracking the origin | |||
multicast subscription inside the RPL network. This is a first step | of the multicast subscription inside the RPL network. This is a | |||
to enable a form of Route Ownership Validation (ROV) (see [RFC6811]) | first step to enable a form of Route Ownership Validation (ROV) (see | |||
in RPL using the ROVR field in the EARO as proof of ownership. | [RFC6811]) in RPL using the ROVR field in the EARO as proof of | |||
ownership. | ||||
Section 9 leverages [RFC8928] to prevent a rogue node to register a | Section 9 leverages [RFC8928] to prevent a rogue node from | |||
unicast address that it does not own. The mechanism could be | registering a unicast address that it does not own. The mechanism | |||
extended to anycast and multicast addresses if the values of the ROVR | could be extended to anycast and multicast addresses if the values of | |||
they use is known in advance, but how this is done is not in scope | the ROVR they use are known in advance, but how this is done is not | |||
for this specification. One way would be to authorize in advance the | in scope for this specification. One way would be to authorize the | |||
ROVR of the valid users. A less preferred way could be to | ROVR of the valid users in advance. A less preferred way would be to | |||
synchronize the ROVR and TID values across the valid subscribers as a | synchronize the ROVR and TID values across the valid subscribers as | |||
preshared key material. | preshared key material. | |||
In the latter case, it could be possible to update the keys | In the latter case, it could be possible to update the keys | |||
associated to an address in all the 6LNs, but the flow is not clearly | associated to an address in all the 6LNs, but the flow is not clearly | |||
documented and may not complete in due time for all nodes in LLN use | documented and may not complete in due time for all nodes in LLN use | |||
cases. It may be simpler to install an all-new address with new keys | cases. It may be simpler to install an all-new address with new keys | |||
over a period of time, and switch the traffic to that address when | over a period of time, and switch the traffic to that address when | |||
the migration is complete. | the migration is complete. | |||
13. Backward Compatibility | 13. Backward Compatibility | |||
A legacy 6LN will not subscribe multicast addresses and the service | A legacy 6LN will not subscribe multicast addresses, and the service | |||
will be the same when the network is upgraded. A legacy 6LR will not | will be the same when the network is upgraded. A legacy 6LR will not | |||
set the X flag in the 6CIO and an upgraded 6LN will not subscribe | set the X flag in the 6CIO, and an upgraded 6LN will not subscribe | |||
multicast addresses. | multicast addresses. | |||
Upon an EDAR message, a legacy 6LBR may not realize that the address | Upon receiving an EDAR message, a legacy 6LBR may not realize that | |||
being registered is anycast or multicast, and return that it is | the address being registered is anycast or multicast and will return | |||
duplicate in the EDAC status. The 6LR MUST ignore a duplicate status | that it is a duplicate in the EDAC status. The 6LR MUST ignore a | |||
in the EDAC for anycast and multicast addresses. | duplicate status in the EDAC for anycast and multicast addresses. | |||
As detailed in Section 11, it is possible to add multicast on an | As detailed in Section 11, it is possible to add multicast on an | |||
existing MOP 1 deployment. | existing MOP 1 deployment. | |||
The combination of a multicast address and the P-Field set to 0 in an | The combination of a multicast address and the P-Field set to 0 in an | |||
RTO in a MOP 3 RPL Instance is understood by the receiver that | RTO in a MOP 3 RPL Instance is an indication to the receiver that | |||
supports this specification (the parent) as an indication that the | supports this specification (the parent) that the sender (child) does | |||
sender (child) does not support this specification, but the RTO is | not support this specification. However, the RTO is accepted and | |||
accepted and processed as if the P-Field was set to 1 for backward | processed as if the P-Field was set to 1 for backward compatibility. | |||
compatibility. | ||||
When the DODAG is operated in MOP 3, a legacy node will not set the | When the DODAG is operated in MOP 3, a legacy node will not set the | |||
P-Field and still expect multicast service as specified in section 12 | P-Field and still expect multicast service as specified in Section 12 | |||
of [RFC6550]. In MOP 3 an RTO that is received with a target that is | of [RFC6550]. In MOP 3, an RTO that is received with a target that | |||
multicast and the P-Field set to 0 MUST be considered as multicast | is multicast and the P-Field set to 0 MUST be considered as multicast | |||
and MUST be processed as if the P-Field is set to 1. | and MUST be processed as if the P-Field is set to 1. | |||
14. IANA Considerations | 14. IANA Considerations | |||
Note to RFC Editor, to be removed: please replace "This RFC" | IANA has made changes under the "Internet Control Message Protocol | |||
throughout this document by the RFC number for this specification | version 6 (ICMPv6) Parameters" [IANA.ICMP] and "Routing Protocol for | |||
once it is allocated; also, requests to IANA must be edited to | Low Power and Lossy Networks (RPL)" [IANA.RPL] registry groupings; | |||
reflect the IANA actions once performed. | see details in the subsections that follow. | |||
Note to IANA, to be removed: the I Field is defined in [RFC9010] but | ||||
is missing from the registry, so the bit positions must be added for | ||||
completeness in conformance with the RFC. | ||||
IANA is requested to make changes under the "Internet Control Message | ||||
Protocol version 6 (ICMPv6) Parameters" [IANA.ICMP] and the "Routing | ||||
Protocol for Low Power and Lossy Networks (RPL)" [IANA.RPL] registry | ||||
groupings, as follows: | ||||
14.1. New P-Field values Registry | 14.1. New P-Field Values Registry | |||
IANA is requested to create a new "P-Field values" registry under the | IANA has created a new "P-Field Values" registry under the "Internet | |||
heading "Internet Control Message Protocol version 6 (ICMPv6) | Control Message Protocol version 6 (ICMPv6) Parameters" registry | |||
Parameters" to store the expression of the Registered Address Type | group to store the expression of the Registered Address Type | |||
Indicator as a P-Field. | Indicator as a P-Field. | |||
Registration procedure is "Standards Action" [RFC8126]. The initial | The registration procedure is Standards Action [RFC8126]. The | |||
allocation is as indicated in Table 3: | initial allocations are as indicated in Table 3: | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| Value | Registered Address Type Indicator | Reference | | | Value | Registered Address Type Indicator | Reference | | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| 0 | Registration for a Unicast Address | This RFC | | | 0 | Registration for a Unicast Address | RFC 9685 | | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| 1 | Registration for a Multicast Address | This RFC | | | 1 | Registration for a Multicast Address | RFC 9685 | | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| 2 | Registration for an Anycast Address | This RFC | | | 2 | Registration for an Anycast Address | RFC 9685 | | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| 3 | Unassigned | This RFC | | | 3 | Unassigned | RFC 9685 | | |||
+-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
Table 3: P-Field values | Table 3: P-Field Values Registry | |||
14.2. New EDAR Message Flags Registry | 14.2. New EDAR Message Flags Registry | |||
IANA is requested to create a new "EDAR Message Flags" registry under | IANA has created a new "EDAR Message Flags" registry under the | |||
the heading "Internet Control Message Protocol version 6 (ICMPv6) | "Internet Control Message Protocol version 6 (ICMPv6) Parameters" | |||
Parameters". | registry group. | |||
Registration procedure is "IETF Review" or "IESG Approval" [RFC8126]. | The registration procedure is IETF Review or IESG Approval [RFC8126]. | |||
The initial allocation is as indicated in Table 4: | The initial allocations are as indicated in Table 4: | |||
+------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| Bit Number | Meaning | Reference | | | Bit Number | Meaning | Reference | | |||
+------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| 0..1 (suggested) | P-Field (2 bits), | This RFC | | | 0-1 | P-Field (2 bits) | RFC 9685, Section 14.1 | | |||
| | see Section 14.1 | | | +------------+------------------+------------------------+ | |||
+------------------+------------------------------------+-----------+ | | 2-7 | Unassigned | | | |||
| 2..7 | Unassigned | | | +------------+------------------+------------------------+ | |||
+------------------+------------------------------------+-----------+ | ||||
Table 4: EDAR Message flags | Table 4: EDAR Message Flags Registry | |||
14.3. New EARO flags | 14.3. New Address Registration Option Flags | |||
IANA is requested to make additions to the "Address Registration | IANA has made an addition to the "Address Registration Option Flags" | |||
Option Flags" [IANA.ICMP.ARO.FLG] registry under the heading | registry [IANA.ICMP.ARO.FLG] under the "Internet Control Message | |||
"Internet Control Message Protocol version 6 (ICMPv6) Parameters" as | Protocol version 6 (ICMPv6) Parameters" registry group as indicated | |||
indicated in Table 5: | in Table 5: | |||
+------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| ARO flag | Meaning | Reference | | | Bit Number | Description | Reference | | |||
+------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| 2..3 (suggested) | P-Field (2 bits), | This RFC | | | 2-3 | P-Field (2 bits) | RFC 9685, Section 14.1 | | |||
| | see Section 14.1 | | | +------------+------------------+------------------------+ | |||
+------------------+------------------------------------+-----------+ | ||||
Table 5: New ARO flags | Table 5: New Address Registration Option Flags | |||
14.4. New RTO flags | 14.4. New RPL Target Option Flags | |||
IANA is requested to make additions to the "RPL Target Option Flags" | IANA has made an addition to the "RPL Target Option Flags" registry | |||
[IANA.RPL.RTO.FLG] registry under the heading "Routing Protocol for | [IANA.RPL.RTO.FLG] under the "Routing Protocol for Low Power and | |||
Low Power and Lossy Networks (RPL)" as indicated in Table 6: | Lossy Networks (RPL)" registry group as indicated in Table 6: | |||
+------------------+------------------------------------+-----------+ | +------------+------------------------+------------------------+ | |||
| Bit Number | Meaning | Reference | | | Bit Number | Capability Description | Reference | | |||
+------------------+------------------------------------+-----------+ | +------------+------------------------+------------------------+ | |||
| 2..3 (suggested) | P-Field (2 bits), | This RFC | | | 2-3 | P-Field (2 bits) | RFC 9685, Section 14.1 | | |||
| | see Section 14.1 | | | +------------+------------------------+------------------------+ | |||
+------------------+------------------------------------+-----------+ | ||||
Table 6: New RTO flags | Table 6: New RPL Target Option Flags | |||
14.5. New RPL Mode of Operation | 14.5. New RPL Mode of Operation | |||
IANA is requested to make an addition to the "Mode of Operation" | IANA has made an addition to the "Mode of Operation" registry | |||
[IANA.RPL.MOP] registry under the heading "Routing Protocol for Low | [IANA.RPL.MOP] under the "Routing Protocol for Low Power and Lossy | |||
Power and Lossy Networks (RPL)" as indicated in Table 7: | Networks (RPL)" registry group as indicated in Table 7: | |||
+---------------+---------------------------------------+-----------+ | +-------+---------------------------------------+-----------+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+---------------+---------------------------------------+-----------+ | +-------+---------------------------------------+-----------+ | |||
| 5 | Non-Storing Mode of Operation with | This RFC | | | 5 | Non-Storing Mode of Operation with | RFC 9685 | | |||
| (suggested) | ingress replication multicast support | | | | | ingress replication multicast support | | | |||
+---------------+---------------------------------------+-----------+ | +-------+---------------------------------------+-----------+ | |||
Table 7: New RPL Mode of Operation | Table 7: New RPL Mode of Operation | |||
14.6. New 6LoWPAN Capability Bits | 14.6. New 6LoWPAN Capability Bit | |||
IANA is requested to make an addition to the "6LoWPAN Capability | IANA has made an addition to the "6LoWPAN Capability Bits" registry | |||
Bits" [IANA.ICMP.6CIO] registry under the heading "Internet Control | [IANA.ICMP.6CIO] under the "Internet Control Message Protocol version | |||
Message Protocol version 6 (ICMPv6) Parameters" as indicated in | 6 (ICMPv6) Parameters" registry group as indicated in Table 8: | |||
Table 8: | ||||
+-------------+-----------------------------+-----------+ | +-----+--------------------------------------------+-----------+ | |||
| Capability | Meaning | Reference | | | Bit | Description | Reference | | |||
| Bit | | | | +-----+--------------------------------------------+-----------+ | |||
+-------------+-----------------------------+-----------+ | | 8 | X flag: Registration for Unicast, | RFC 9685 | | |||
| 8 | X flag: Registration for | This RFC | | | | Multicast, and Anycast Addresses Supported | | | |||
| (suggested) | Unicast, Multicast, and | | | +-----+--------------------------------------------+-----------+ | |||
| | Anycast Addresses Supported | | | ||||
+-------------+-----------------------------+-----------+ | ||||
Table 8: New 6LoWPAN Capability Bits | Table 8: New 6LoWPAN Capability Bit | |||
14.7. New Address Registration Option Status Values | 14.7. New Address Registration Option Status Values | |||
IANA is requested to make additions to the "Address Registration | IANA has made additions to the "Address Registration Option Status | |||
Option Status Values" [IANA.ICMP.ARO.STAT] registry under the heading | Values" registry [IANA.ICMP.ARO.STAT] under the "Internet Control | |||
"Internet Control Message Protocol version 6 (ICMPv6) Parameters", as | Message Protocol version 6 (ICMPv6) Parameters" registry group as | |||
follows: | indicated in Table 9: | |||
+----------------+------------------------------+-----------+ | +-------+------------------------------+-----------+ | |||
| Value | Description | Reference | | | Value | Description | Reference | | |||
+----------------+------------------------------+-----------+ | +-------+------------------------------+-----------+ | |||
| 11 (suggested) | Registration Refresh Request | This RFC | | | 11 | Registration Refresh Request | RFC 9685 | | |||
+----------------+------------------------------+-----------+ | +-------+------------------------------+-----------+ | |||
| 12 (suggested) | Invalid Registration | This RFC | | | 12 | Invalid Registration | RFC 9685 | | |||
+----------------+------------------------------+-----------+ | +-------+------------------------------+-----------+ | |||
Table 9: New Address Registration Option Status Values" | Table 9: New Address Registration Option Status | |||
Values | ||||
14.8. New IPv6 Neighbor Discovery Option | 14.8. New IPv6 Neighbor Discovery Option Format | |||
IANA is requested to make additions to the "IPv6 Neighbor Discovery | IANA has made an addition to the "IPv6 Neighbor Discovery Option | |||
Option Formats" registry under the heading "Internet Control Message | Formats" registry under the "Internet Control Message Protocol | |||
Protocol version 6 (ICMPv6) Parameters", as follows: | version 6 (ICMPv6) Parameters" registry group as indicated in | |||
Table 10: | ||||
+----------------+--------------------------+-----------+ | +------+--------------------------+-----------+ | |||
| Value | Description | Reference | | | Type | Description | Reference | | |||
+----------------+--------------------------+-----------+ | +------+--------------------------+-----------+ | |||
| 42 (suggested) | Consistent Uptime Option | This RFC | | | 42 | Consistent Uptime Option | RFC 9685 | | |||
+----------------+--------------------------+-----------+ | +------+--------------------------+-----------+ | |||
Table 10: New IPv6 Neighbor Discovery Option" | Table 10: New IPv6 Neighbor Discovery | |||
Option Format | ||||
15. Acknowledgments | 15. References | |||
This work is a production of an effective collaboration between the | 15.1. Normative References | |||
IETF 6lo WG and the Wi-Sun FAN WG. Thanks to all in both WGs who | ||||
contributed reviews and productive suggestions, in particular Carsten | ||||
Bormann, Paul Duffy, Klaus Hueske, Adnan Rashid, Rahul Jadhav, Gene | ||||
Falendysz, Don Sturek, Dario Tedeschi, Saurabh Jain, and Chris Hett, | ||||
with special thanks to Esko Dijk for his useful WGLC reviews and | ||||
proposed changes. Also many thanks to Eric Vyncke, Sandy Ginoza, | ||||
Zaheduzzaman Sarker, Paul Wouters, Roman Danyliw, John Scudder, Dirk | ||||
Von Hugo, Murray Kucherawy, Kyle Rose, Scott Kelly, and Dan Romascanu | ||||
for their suggestions and comments during the IETF last call and IESG | ||||
review cycle. | ||||
16. Normative References | [IANA.ICMP] | |||
IANA, "Internet Control Message Protocol version 6 | ||||
(ICMPv6) Parameters", | ||||
<https://www.iana.org/assignments/icmpv6-parameters>. | ||||
[IANA.ICMP.6CIO] | ||||
IANA, "6LoWPAN Capability Bits", | ||||
<https://www.iana.org/assignments/icmpv6-parameters>. | ||||
[IANA.ICMP.ARO.FLG] | ||||
IANA, "Address Registration Option Flags", | ||||
<https://www.iana.org/assignments/icmpv6-parameters>. | ||||
[IANA.ICMP.ARO.STAT] | ||||
IANA, "Address Registration Option Status Values", | ||||
<https://www.iana.org/assignments/icmpv6-parameters>. | ||||
[IANA.RPL] IANA, "Routing Protocol for Low Power and Lossy Networks | ||||
(RPL)", <https://www.iana.org/assignments/rpl>. | ||||
[IANA.RPL.MOP] | ||||
IANA, "Mode of Operation", | ||||
<https://www.iana.org/assignments/rpl>. | ||||
[IANA.RPL.RTO.FLG] | ||||
IANA, "RPL Target Option Flags", | ||||
<https://www.iana.org/assignments/rpl>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3306] Haberman, B. and D. Thaler, "Unicast-Prefix-based IPv6 | [RFC3306] Haberman, B. and D. Thaler, "Unicast-Prefix-based IPv6 | |||
Multicast Addresses", RFC 3306, DOI 10.17487/RFC3306, | Multicast Addresses", RFC 3306, DOI 10.17487/RFC3306, | |||
August 2002, <https://www.rfc-editor.org/info/rfc3306>. | August 2002, <https://www.rfc-editor.org/info/rfc3306>. | |||
skipping to change at page 38, line 10 ¶ | skipping to change at line 1792 ¶ | |||
[RFC9010] Thubert, P., Ed. and M. Richardson, "Routing for RPL | [RFC9010] Thubert, P., Ed. and M. Richardson, "Routing for RPL | |||
(Routing Protocol for Low-Power and Lossy Networks) | (Routing Protocol for Low-Power and Lossy Networks) | |||
Leaves", RFC 9010, DOI 10.17487/RFC9010, April 2021, | Leaves", RFC 9010, DOI 10.17487/RFC9010, April 2021, | |||
<https://www.rfc-editor.org/info/rfc9010>. | <https://www.rfc-editor.org/info/rfc9010>. | |||
[RFC9030] Thubert, P., Ed., "An Architecture for IPv6 over the Time- | [RFC9030] Thubert, P., Ed., "An Architecture for IPv6 over the Time- | |||
Slotted Channel Hopping Mode of IEEE 802.15.4 (6TiSCH)", | Slotted Channel Hopping Mode of IEEE 802.15.4 (6TiSCH)", | |||
RFC 9030, DOI 10.17487/RFC9030, May 2021, | RFC 9030, DOI 10.17487/RFC9030, May 2021, | |||
<https://www.rfc-editor.org/info/rfc9030>. | <https://www.rfc-editor.org/info/rfc9030>. | |||
[IANA.ICMP] | 15.2. Informative References | |||
IANA, "IANA Registry for ICMPv6", IANA, | ||||
https://www.iana.org/assignments/icmpv6-parameters/ | ||||
icmpv6-parameters.xhtml. | ||||
[IANA.ICMP.ARO.FLG] | ||||
IANA, "IANA Registry for the Address Registration Option | ||||
Flags", IANA, https://www.iana.org/assignments/icmpv6- | ||||
parameters/icmpv6-parameters.xhtml#icmpv6-adress- | ||||
registration-option-flags. | ||||
[IANA.ICMP.ARO.STAT] | [IEEE-802.11] | |||
IANA, "IANA Registry for the Address Registration Option | IEEE, "IEEE Standard for Information Technology-- | |||
Status Value", IANA, https://www.iana.org/assignments/ | Telecommunications and Information Exchange between | |||
icmpv6-parameters/icmpv6-parameters.xhtml#address- | Systems - Local and Metropolitan Area Networks--Specific | |||
registration. | Requirements - Part 11: Wireless LAN Medium Access Control | |||
(MAC) and Physical Layer (PHY) Specifications", | ||||
DOI 10.1109/IEEESTD.2021.9363693, IEEE Std 802.11-2020, | ||||
<https://ieeexplore.ieee.org/document/9363693>. | ||||
[IANA.ICMP.6CIO] | [IEEE-802.15.1] | |||
IANA, "IANA Registry for the 6LoWPAN Capability Bits", | IEEE, "IEEE Standard for Information technology - Local | |||
IANA, https://www.iana.org/assignments/icmpv6-parameters/ | and metropolitan area networks - Specific requirements - | |||
icmpv6-parameters.xhtml#sixlowpan-capability-bits. | Part 15.1a: Wireless Medium Access Control (MAC) and | |||
Physical Layer (PHY) specifications for Wireless Personal | ||||
Area Networks (WPAN)", IEEE Std 802.15.1-2005, | ||||
DOI 10.1109/IEEESTD.2005.96290, | ||||
<https://ieeexplore.ieee.org/document/1490827>. | ||||
[IANA.RPL] IANA, "IANA Registry for the RPL", | [IEEE-802.15.4] | |||
IANA, https://www.iana.org/assignments/rpl/rpl.xhtml. | IEEE, "IEEE Standard for Low-Rate Wireless Networks", | |||
DOI 10.1109/IEEESTD.2020.9144691, IEEE Std 802.15.4-2020, | ||||
<https://ieeexplore.ieee.org/document/9144691>. | ||||
[IANA.RPL.RTO.FLG] | [IPv6-OVER-WIRELESS] | |||
IANA, "IANA Sub-Registry for the RTO Flags", IANA, | Thubert, P., Ed. and M. Richardson, "Architecture and | |||
https://www.iana.org/assignments/rpl/rpl.xhtml#rpl-target- | Framework for IPv6 over Non-Broadcast Access", Work in | |||
option-flags. | Progress, Internet-Draft, draft-ietf-6man-ipv6-over- | |||
wireless-06, 23 May 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-6man- | ||||
ipv6-over-wireless-06>. | ||||
[IANA.RPL.MOP] | [MAC-SIGNALING] | |||
IANA, "IANA Sub-Registry for the RPL Mode of Operation", | Thubert, P., Ed., Przygienda, T., and J. Tantsura, "Secure | |||
IANA, https://www.iana.org/assignments/rpl/rpl.xhtml#MOP. | EVPN MAC Signaling", Work in Progress, Internet-Draft, | |||
draft-thubert-bess-secure-evpn-mac-signaling-04, 13 | ||||
September 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-thubert-bess-secure-evpn-mac-signaling-04>. | ||||
17. Informative References | [REGISTRATION] | |||
Thubert, P., Ed., "IPv6 Neighbor Discovery Prefix | ||||
Registration", Work in Progress, Internet-Draft, draft- | ||||
ietf-6lo-prefix-registration-05, 5 November 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-6lo- | ||||
prefix-registration-05>. | ||||
[RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | [RFC3810] Vida, R., Ed. and L. Costa, Ed., "Multicast Listener | |||
Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | Discovery Version 2 (MLDv2) for IPv6", RFC 3810, | |||
DOI 10.17487/RFC3810, June 2004, | DOI 10.17487/RFC3810, June 2004, | |||
<https://www.rfc-editor.org/info/rfc3810>. | <https://www.rfc-editor.org/info/rfc3810>. | |||
[RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | [RFC4919] Kushalnagar, N., Montenegro, G., and C. Schumacher, "IPv6 | |||
over Low-Power Wireless Personal Area Networks (6LoWPANs): | over Low-Power Wireless Personal Area Networks (6LoWPANs): | |||
Overview, Assumptions, Problem Statement, and Goals", | Overview, Assumptions, Problem Statement, and Goals", | |||
RFC 4919, DOI 10.17487/RFC4919, August 2007, | RFC 4919, DOI 10.17487/RFC4919, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4919>. | <https://www.rfc-editor.org/info/rfc4919>. | |||
[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. | ||||
Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052, | ||||
DOI 10.17487/RFC6052, October 2010, | ||||
<https://www.rfc-editor.org/info/rfc6052>. | ||||
[RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6 | [RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6 | |||
Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | Datagrams over IEEE 802.15.4-Based Networks", RFC 6282, | |||
DOI 10.17487/RFC6282, September 2011, | DOI 10.17487/RFC6282, September 2011, | |||
<https://www.rfc-editor.org/info/rfc6282>. | <https://www.rfc-editor.org/info/rfc6282>. | |||
[RFC7731] Hui, J. and R. Kelsey, "Multicast Protocol for Low-Power | ||||
and Lossy Networks (MPL)", RFC 7731, DOI 10.17487/RFC7731, | ||||
February 2016, <https://www.rfc-editor.org/info/rfc7731>. | ||||
[RFC6811] Mohapatra, P., Scudder, J., Ward, D., Bush, R., and R. | [RFC6811] Mohapatra, P., Scudder, J., Ward, D., Bush, R., and R. | |||
Austein, "BGP Prefix Origin Validation", RFC 6811, | Austein, "BGP Prefix Origin Validation", RFC 6811, | |||
DOI 10.17487/RFC6811, January 2013, | DOI 10.17487/RFC6811, January 2013, | |||
<https://www.rfc-editor.org/info/rfc6811>. | <https://www.rfc-editor.org/info/rfc6811>. | |||
[RFC7731] Hui, J. and R. Kelsey, "Multicast Protocol for Low-Power | ||||
and Lossy Networks (MPL)", RFC 7731, DOI 10.17487/RFC7731, | ||||
February 2016, <https://www.rfc-editor.org/info/rfc7731>. | ||||
[RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | [RFC7761] Fenner, B., Handley, M., Holbrook, H., Kouvelas, I., | |||
Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | Parekh, R., Zhang, Z., and L. Zheng, "Protocol Independent | |||
Multicast - Sparse Mode (PIM-SM): Protocol Specification | Multicast - Sparse Mode (PIM-SM): Protocol Specification | |||
(Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | (Revised)", STD 83, RFC 7761, DOI 10.17487/RFC7761, March | |||
2016, <https://www.rfc-editor.org/info/rfc7761>. | 2016, <https://www.rfc-editor.org/info/rfc7761>. | |||
[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. | ||||
Li, "IPv6 Addressing of IPv4/IPv6 Translators", RFC 6052, | ||||
DOI 10.17487/RFC6052, October 2010, | ||||
<https://www.rfc-editor.org/info/rfc6052>. | ||||
[RFC8929] Thubert, P., Ed., Perkins, C.E., and E. Levy-Abegnoli, | [RFC8929] Thubert, P., Ed., Perkins, C.E., and E. Levy-Abegnoli, | |||
"IPv6 Backbone Router", RFC 8929, DOI 10.17487/RFC8929, | "IPv6 Backbone Router", RFC 8929, DOI 10.17487/RFC8929, | |||
November 2020, <https://www.rfc-editor.org/info/rfc8929>. | November 2020, <https://www.rfc-editor.org/info/rfc8929>. | |||
[RFC9008] Robles, M.I., Richardson, M., and P. Thubert, "Using RPI | [RFC9008] Robles, M.I., Richardson, M., and P. Thubert, "Using RPI | |||
Option Type, Routing Header for Source Routes, and IPv6- | Option Type, Routing Header for Source Routes, and IPv6- | |||
in-IPv6 Encapsulation in the RPL Data Plane", RFC 9008, | in-IPv6 Encapsulation in the RPL Data Plane", RFC 9008, | |||
DOI 10.17487/RFC9008, April 2021, | DOI 10.17487/RFC9008, April 2021, | |||
<https://www.rfc-editor.org/info/rfc9008>. | <https://www.rfc-editor.org/info/rfc9008>. | |||
[I-D.ietf-bess-evpn-optimized-ir] | [RFC9574] Rabadan, J., Ed., Sathappan, S., Lin, W., Katiyar, M., and | |||
Rabadan, J., Sathappan, S., Lin, W., Katiyar, M., and A. | A. Sajassi, "Optimized Ingress Replication Solution for | |||
Sajassi, "Optimized Ingress Replication Solution for | Ethernet VPNs (EVPNs)", RFC 9574, DOI 10.17487/RFC9574, | |||
Ethernet VPN (EVPN)", Work in Progress, Internet-Draft, | May 2024, <https://www.rfc-editor.org/info/rfc9574>. | |||
draft-ietf-bess-evpn-optimized-ir-12, 25 January 2022, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-bess- | ||||
evpn-optimized-ir-12>. | ||||
[I-D.ietf-rift-rift] | [RIFT] Przygienda, T., Head, J., Ed., Sharma, A., Ed., Thubert, | |||
Przygienda, T., Head, J., Sharma, A., Thubert, P., | P., Rijsman, B., and D. Afanasiev, "RIFT: Routing in Fat | |||
Rijsman, B., and D. Afanasiev, "RIFT: Routing in Fat | ||||
Trees", Work in Progress, Internet-Draft, draft-ietf-rift- | Trees", Work in Progress, Internet-Draft, draft-ietf-rift- | |||
rift-23, 1 May 2024, | rift-24, 23 May 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-rift- | <https://datatracker.ietf.org/doc/html/draft-ietf-rift- | |||
rift-23>. | rift-24>. | |||
[I-D.ietf-6lo-prefix-registration] | ||||
Thubert, P., "IPv6 Neighbor Discovery Prefix | ||||
Registration", Work in Progress, Internet-Draft, draft- | ||||
ietf-6lo-prefix-registration-02, 13 February 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-6lo- | ||||
prefix-registration-02>. | ||||
[I-D.ietf-6man-ipv6-over-wireless] | ||||
Thubert, P. and M. Richardson, "Architecture and Framework | ||||
for IPv6 over Non-Broadcast Access", Work in Progress, | ||||
Internet-Draft, draft-ietf-6man-ipv6-over-wireless-05, 20 | ||||
November 2023, <https://datatracker.ietf.org/doc/html/ | ||||
draft-ietf-6man-ipv6-over-wireless-05>. | ||||
[I-D.kuehlewind-update-tag] | [UPDATES-TAG] | |||
Kühlewind, M. and S. Krishnan, "Definition of new tags for | Kühlewind, M. and S. Krishnan, "Definition of new tags for | |||
relations between RFCs", Work in Progress, Internet-Draft, | relations between RFCs", Work in Progress, Internet-Draft, | |||
draft-kuehlewind-update-tag-04, 12 July 2021, | draft-kuehlewind-rswg-updates-tag-02, 8 July 2024, | |||
<https://datatracker.ietf.org/doc/html/draft-kuehlewind- | <https://datatracker.ietf.org/doc/html/draft-kuehlewind- | |||
update-tag-04>. | rswg-updates-tag-02>. | |||
[Wi-SUN] Robert, H., Liu, B. R., Zhang, M., and C. E. Perkins, "Wi- | [Wi-SUN] Robert, H., Liu, B., Zhang, M., and C. Perkins, "Wi-SUN | |||
SUN FAN Overview", Work in Progress, Internet-Draft, | FAN Overview", Work in Progress, Internet-Draft, draft- | |||
draft-heile-lpwan-wisun-overview-00, 3 July 2017, | heile-lpwan-wisun-overview-00, 3 July 2017, | |||
<https://datatracker.ietf.org/doc/html/draft-heile-lpwan- | <https://datatracker.ietf.org/doc/html/draft-heile-lpwan- | |||
wisun-overview-00>. | wisun-overview-00>. | |||
[I-D.thubert-bess-secure-evpn-mac-signaling] | Acknowledgments | |||
Thubert, P., Przygienda, T., and J. Tantsura, "Secure EVPN | ||||
MAC Signaling", Work in Progress, Internet-Draft, draft- | ||||
thubert-bess-secure-evpn-mac-signaling-04, 13 September | ||||
2023, <https://datatracker.ietf.org/doc/html/draft- | ||||
thubert-bess-secure-evpn-mac-signaling-04>. | ||||
[IEEE Std 802.15.4] | ||||
IEEE standard for Information Technology, "IEEE Std | ||||
802.15.4, Part. 15.4: Wireless Medium Access Control (MAC) | ||||
and Physical Layer (PHY) Specifications for Low-Rate | ||||
Wireless Personal Area Networks". | ||||
[IEEE Std 802.11] | ||||
IEEE standard for Information Technology, "IEEE Standard | ||||
802.11 - IEEE Standard for Information Technology - | ||||
Telecommunications and information exchange between | ||||
systems Local and metropolitan area networks - Specific | ||||
requirements - Part 11: Wireless LAN Medium Access Control | ||||
(MAC) and Physical Layer (PHY) Specifications.", | ||||
<https://ieeexplore.ieee.org/document/9363693>. | ||||
[IEEE Std 802.15.1] | This work is a production of an effective collaboration between the | |||
IEEE standard for Information Technology, "IEEE Standard | IETF 6lo WG and the Wi-Sun FAN WG. Thanks to all in both WGs who | |||
for Information Technology - Telecommunications and | contributed reviews and productive suggestions, in particular: | |||
Information Exchange Between Systems - Local and | Carsten Bormann, Paul Duffy, Klaus Hueske, Adnan Rashid, Rahul | |||
Metropolitan Area Networks - Specific Requirements. - Part | Jadhav, Gene Falendysz, Don Sturek, Dario Tedeschi, Saurabh Jain, and | |||
15.1: Wireless Medium Access Control (MAC) and Physical | Chris Hett, with special thanks to Esko Dijk for his useful WGLC | |||
Layer (PHY) Specifications for Wireless Personal Area | reviews and proposed changes. Also many thanks to Éric Vyncke, Sandy | |||
Networks (WPANs)". | Ginoza, Zaheduzzaman Sarker, Paul Wouters, Roman Danyliw, John | |||
Scudder, Dirk Von Hugo, Murray Kucherawy, Kyle Rose, Scott Kelly, and | ||||
Dan Romascanu for their suggestions and comments during the IETF last | ||||
call and IESG review cycle. | ||||
Author's Address | Author's Address | |||
Pascal Thubert (editor) | Pascal Thubert (editor) | |||
06330 Roquefort-les-Pins | 06330 Roquefort-les-Pins | |||
France | France | |||
Email: pascal.thubert@gmail.com | Email: pascal.thubert@gmail.com | |||
End of changes. 294 change blocks. | ||||
806 lines changed or deleted | 833 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |