| 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 | Listener Subscription for IPv6 Neighbor Discovery Multicast and Anycast | |||
| Subscription | Addresses | |||
| 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. Terminology from Relevant RFCs | |||
| 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. Amending RFC 4861 | |||
| 5. Updating RFC 7400 . . . . . . . . . . . . . . . . . . . . . . 13 | 5. Extending RFC 7400 | |||
| 6. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Amending 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. Extending 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. Extending 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. | which may be a fuzzy concept anyway in a radio LLN. | |||
| This trades the quality of peer-to-peer (P2P) paths for a vastly | This stretches the routes between RPL nodes inside the DODAG for a | |||
| reduced amount of control traffic and routing state that would be | vastly reduced amount of control traffic and routing state that would | |||
| required to operate an any-to-any shortest path protocol. | be 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 data plane 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 (ND) protocol [RFC4861] [RFC4862] | |||
| [RFC4862] was defined for serial links and shared transit media such | was defined for serial links and shared transit media such as | |||
| as Ethernet at a time when broadcast was cheap on those media while | 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 ND, "Neighbor Discovery | |||
| 6LoWPAN networks" [RFC6775], was introduced to avoid the excessive | Optimization for IPv6 over Low-Power Wireless Personal Area Networks | |||
| use of multicast messages and enable IPv6 ND for operations over | (6LoWPANs)" [RFC6775], was introduced to avoid the excessive use of | |||
| energy-constrained nodes. [RFC6775] changes the classical IPv6 ND | multicast messages and enable IPv6 ND for operations over energy- | |||
| model to proactively establish the Neighbor Cache Entry (NCE) | constrained nodes. [RFC6775] changes the classical IPv6 ND model to | |||
| associated to the unicast address of a 6LoWPAN Node (6LN) in the | proactively establish the Neighbor Cache Entry (NCE) associated to | |||
| 6LoWPAN Router(s) (6LR) that serve(s) it. To that effect, [RFC6775] | the unicast address of a 6LoWPAN Node (6LN) in one or more 6LoWPAN | |||
| defines a new Address Registration Option (ARO) that is placed in | Routers (6LRs) that serve it. To that effect, [RFC6775] defines a | |||
| unicast Neighbor Solicitation (NS) and Neighbor Advertisement (NA) | new Address Registration Option (ARO) that is placed in unicast | |||
| messages between the 6LN and the 6LR. | 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. Terminology from Relevant RFCs | |||
| 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 | 6CIO: Capability Indication Option | |||
| 6CIO Capability Indication Option | ||||
| 6LBR 6LoWPAN Border Router | ||||
| 6LN 6LoWPAN Node | ||||
| 6LR 6LoWPAN Router | ||||
| AMC Address Mapping Confirmation | ||||
| AMR Address Mapping Request | ||||
| ARO Address Registration Option | ||||
| DAC Duplicate Address Confirmation | ||||
| DAD Duplicate Address Detection | ||||
| DAO Destination Advertisement Object | ||||
| DAR Duplicate Address Request | ||||
| DIO DODAG Information Object | ||||
| DMB Direct MAC Broadcast | ||||
| DODAG Destination-Oriented Directed Acyclic Graph | ||||
| EARO Extended Address Registration Option | ||||
| EDAC Extended Duplicate Address Confirmation | ||||
| EDAR Extended Duplicate Address Request | ||||
| IR Ingress Replication | ||||
| LLN Low-Power and Lossy Network | ||||
| MOP Mode of Operation | ||||
| NA Neighbor Advertisement | ||||
| NCE Neighbor Cache Entry | ||||
| ND Neighbor Discovery | ||||
| NS Neighbor Solicitation | ||||
| RA Router Advertisement | ||||
| ROVR Registration Ownership Verifier, pronounced "rover" | ||||
| RPL Routing Protocol for Low-Power and Lossy Networks, pronounced | ||||
| "ripple" | ||||
| RS Router Solicitation | ||||
| RTO RPL Target Option | ||||
| TID Transaction ID | ||||
| TIO Transit Information Option | ||||
| 2.4. New terms | 6LBR: 6LoWPAN Border Router | |||
| 6LN: 6LoWPAN Node | ||||
| 6LR: 6LoWPAN Router | ||||
| ARO: Address Registration Option | ||||
| DAC: Duplicate Address Confirmation | ||||
| DAD: Duplicate Address Detection | ||||
| DAO: Destination Advertisement Object | ||||
| DAR: Duplicate Address Request | ||||
| DIO: DODAG Information Object | ||||
| DMB: Direct MAC Broadcast | ||||
| DODAG: Destination-Oriented Directed Acyclic Graph | ||||
| EARO: Extended Address Registration Option | ||||
| EDAC: Extended Duplicate Address Confirmation | ||||
| EDAR: Extended Duplicate Address Request | ||||
| IR: Ingress Replication | ||||
| LLN: Low-Power and Lossy Network | ||||
| MLD: Multicast Listener Discovery | ||||
| MOP: Mode of Operation | ||||
| NA: Neighbor Advertisement | ||||
| NCE: Neighbor Cache Entry | ||||
| ND: Neighbor Discovery | ||||
| NS: Neighbor Solicitation | ||||
| RA: Router Advertisement | ||||
| RAN: RPL-Aware Node | ||||
| ROVR: Registration Ownership Verifier (pronounced "rover") | ||||
| RPL: Routing Protocol for Low-Power and Lossy Networks (pronounced | ||||
| "ripple") | ||||
| RS: Router Solicitation | ||||
| RTO: RPL Target Option | ||||
| RUL: RPL-Unaware Leaf | ||||
| TID: Transaction ID | ||||
| TIO: Transit Information Option | ||||
| 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) | in the form of either an NS(EARO) or a DAO(TIO, RTO) message. | |||
| 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) message, or as a DAO(TIO, RTO) message, and | |||
| DAO(TIO, RTO). The RPL router maintains a state per origin | generating a single DAO(TIO, RTO). The RPL router maintains a | |||
| for each advertised address, and merges the advertisements for | state per origin for each advertised address and merges the | |||
| all subscriptions for the same address in a single | advertisements for all subscriptions for the same address in a | |||
| advertisement. A RPL router that merges multicast | single 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 | ||||
| leverages NS(EARO) to register (subscribe to) a multicast or | Subscribe/subscription: The special form of registration that | |||
| an anycast address. | leverages NS(EARO) to register (or subscribe to) a multicast | |||
| or an anycast address. | ||||
| 3. Overview | 3. Overview | |||
| This specification Extends [RFC8505] and inherits from [RFC8928] to | This specification Extends [RFC8505] to provide a registration method | |||
| provide a registration method - called subscription in this case - | (called "subscription" in this case) for anycast and multicast | |||
| for anycast and multicast address. [RFC8505] is agnostic to the | addresses. The specification inherits the proof of ownership defined | |||
| routing protocol in which the address may be redistributed. | in [RFC8928] that already protects the address registration in | |||
| [RFC8505] to also protect the new subscription mechanism. [RFC8505] | ||||
| is agnostic to the 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 for each multicast or anycast | |||
| but injects the route into the routing protocol only once for each | address but injects the route into the routing protocol only once for | |||
| address, asynchronously to the registration. On the other hand, the | each address. The injection happens asynchronously to the | |||
| validation exchange with the registrar (6LBR) is still needed if the | registration. On the other hand, the validation exchange with the | |||
| router checks the right for the host to listen to the anycast or | registrar (6LBR) is still needed if the router checks the right for | |||
| multicast address. | the host to listen to the anycast or 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 is the same as it is for unicast for the 6LBR that acts as | |||
| routers down the RPL graph, of the 6LR that act as access routers and | RPL Root, the intermediate routers Down the RPL graph, the 6LRs that | |||
| of the 6LNs that are the RPL-unaware destinations, is the same as for | act as access routers, and the 6LNs that are the RPL-unaware | |||
| unicast. In particular, forwarding a packet happens as specified in | destinations. In particular, forwarding a packet happens as | |||
| section 11 of [RFC6550], including loop avoidance and detection, | specified in Section 11 of [RFC6550], including loop avoidance and | |||
| though in the case of multicast multiple copies might be generated. | detection, 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 registration of a unicast address, 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) from the | |||
| routing protocol in which this information may be redistributed or | routing protocol in which this information may be redistributed or | |||
| aggregated by the router to other routers, though protocol extensions | aggregated by the router to other routers. However, 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 (IR) in Non-Storing mode and anycast | |||
| to add multicast ingress replication in Non-Storing Mode and anycast | support in both Storing and Non-Storing modes in the case of a route- | |||
| support in both Storing and Non-Storing modes. A 6LR that implements | over 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 typical scenario of an LLN as a single IPv6 | |||
| IPv6 Subnet, with a 6LoWPAN Border Router (6LBR) that acts as Root | 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 488 ¶ | |||
| 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 and then an EDAC exchange with the 6LBR to notify | |||
| the presence of the listeners. | the 6LBR of 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 ingress replication | |||
| that is introduced here, the DAO messages announce the multicast | multicast support that is introduced here, the DAO messages announce | |||
| addresses as Targets though never as Transit. The multicast | the multicast addresses as Targets, and never as Transits. The | |||
| distribution is an ingress replication whereby the Root encapsulates | multicast distribution is an IR whereby the Root encapsulates the | |||
| the multicast packets to all the 6LRs that are transit for the | multicast packets to all the 6LRs that are transit for the multicast | |||
| multicast address, using the same source-routing header as for | address, using the same source-routing header as for unicast targets | |||
| unicast targets attached to the respective 6LRs. | 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 messages from multiple children for the same anycast | |||
| only forwards a packet to one of the children. In Non-Storing Mode, | address, but it only forwards a packet to one of the children. In | |||
| the Root maintains the list of all the RPL nodes that announced the | Non-Storing mode, the Root maintains the list of all the RPL nodes | |||
| anycast address as Target, but forwards a given packet to only one of | that announced the anycast address as Target, but it forwards a given | |||
| them. | packet to only 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 its peer routers is not | |||
| necessarily RPL. In that case, the distribution of packets between | necessarily RPL. In that case, the distribution of packets between | |||
| the 6LR and the 6LNs may effectively rely on a broadcast or multicast | the 6LR and the 6LNs may effectively rely on a broadcast or multicast | |||
| support at the lower layer, e.g., using this specification as a | support at the lower layer (e.g., using this specification as a | |||
| replacement to MLD in an Ethernet bridged domain and still using | replacement to MLD in an Ethernet-bridged domain and still using | |||
| either plain MAC-layer broadcast or snooping this protocol to control | either a plain MAC-layer broadcast or snooping of this protocol to | |||
| the flooding. It may also rely on overlay services to optimize the | control the flooding). It may also rely on overlay services to | |||
| impact of Broadcast, Unknown, and Multicast (BUM) over a fabric, e.g. | optimize the impact of Broadcast, Unknown, and Multicast (BUM) | |||
| registering with [I-D.thubert-bess-secure-evpn-mac-signaling] and | traffic over a fabric, e.g., registering with [MAC-SIGNALING] and | |||
| forwarding with [I-D.ietf-bess-evpn-optimized-ir]. | forwarding with [RFC9574]. | |||
| 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 ingress replication multicast | |||
| possibly signaling a MOP of 1) and use "Multicast Protocol for | support (while possibly signaling a MOP of 1) and use "Multicast | |||
| Low-Power and Lossy Networks (MPL)" [RFC7731] for the multicast | Protocol for Low-Power and Lossy Networks (MPL)" [RFC7731] for the | |||
| operation. MPL floods the DODAG with the multicast messages | multicast operation. MPL floods the DODAG with the multicast | |||
| independently of the RPL DODAG topologies. Two variations are | messages independently of the RPL DODAG topologies. Two variations | |||
| possible: | are 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 a listener | |||
| exists. | ||||
| * 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 | a configuration mechanism, it is also possible to control the | |||
| 6LR to ignore the R flag and either always or never send the DAO | behavior of the 6LR to ignore the R flag. It can be configured to | |||
| message, and/or to control the Root and specify which groups it | either always or never send the DAO message and/or to control the | |||
| should flood or not flood. | Root and specify which groups 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 | message, then MPL can be used in conjunction with the RPL Storing | |||
| well. | mode as well. | |||
| 4. Updating RFC 4861 | 4. Amending 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. Extending 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. Amending 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 message (i.e., the lifetime is 0) using the same value for the | |||
| for the previous advertisements, that is either self or the single | ROVR value as for the previous advertisements. This value refers to | |||
| descendant that advertised the Target. | either the single descendant that advertised the Target if there is | |||
| only one or the router itself if there is more than one. | ||||
| 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. | |||
| 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 | |||
| is the norm. Though it is preferred to build separate RPL Instances, | 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 RTO as specified in [RFC9010] for both MOP 3 | |||
| for both MOP 3 and MOP 5 as it is for unicast advertisements. | 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 occurs in the case of | |||
| multiple subscriptions of a multicast or unicast address. 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 message | |||
| receives for a multicast target, and sends its own DAO for that | that it receives for a multicast target and sends its own DAO message | |||
| target with the longest remaining lifetime across its listening | for that target with the longest remaining lifetime across its | |||
| children. If the router has only one descendant listening, it | listening children. If the router has only one descendant listening, | |||
| propagates the TID and ROVR as received. Conversely, if the router | it propagates the TID and ROVR as received. Conversely, if the | |||
| merges multiple advertisements (including possibly one for itself as | router merges multiple advertisements (possibly including one for | |||
| a listener), the router uses its own ROVR and TID values. This | itself as a listener), the router uses its own ROVR and TID values. | |||
| implies a possible transition of ROVR and TID values when the number | This implies a possible transition of ROVR and TID values when the | |||
| of listening children changes from one to more or back to one, which | number of listening children changes from one to more or back to one, | |||
| should not be considered as an error or a change of ownership by the | which should not be considered as an error or a change of ownership | |||
| parents above. | by the 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 IR operation on the multicast | |||
| operation on the multicast packets, meaning that it transmits one | packets. This means that it transmits one copy of each multicast | |||
| copy of each multicast packet to each 6LR that is a transit for the | packet to each 6LR that is a transit for the multicast target, using | |||
| multicast target, using the same source routing header and | the same source-routing header and encapsulation as it would for a | |||
| encapsulation as it would for a unicast packet for a RPL Unaware Leaf | 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 a 6LR generates the DAO message for multicast | |||
| with the longest remaining lifetime across its registered 6LNs, using | addresses with the longest remaining lifetime across its registered | |||
| its own ROVR and TID when multiple 6LNs subscribed, or if this 6LR is | 6LNs, using its own ROVR and TID when multiple 6LNs have subscribed | |||
| one of the subscribers. | or when the 6LR is a subscriber. | |||
| 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 data plane 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 herein | |||
| 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 (such as an address or prefix) | |||
| injected as a RPL target from multiple border routers should be | that may be injected as a RPL Target from multiple border routers | |||
| injected as anycast in RPL to enable load balancing. A mobile target | should be injected as anycast in RPL to enable load balancing. In | |||
| that is multihomed should in contrast be advertised as unicast over | contrast, a mobile target that is multihomed should be advertised as | |||
| the multiple interfaces to favor the TID comparison and vs. the | unicast over the multiple interfaces to favor the TID comparison | |||
| multipath load balancing. | instead of 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 each multicast or | |||
| address, but injects the route into RPL only once for each address, | anycast 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 RTO, the EARO, and the header of EDAR messages. The RATInd | |||
| RATInd indicates whether an address is unicast, multicast, or | indicates whether an address is unicast, multicast, or anycast. The | |||
| anycast. The new 2-bit P-Field is defined to transport the RATInd in | new 2-bit P-Field is defined to transport the RATInd in different | |||
| different protocols. | protocols. | |||
| The P-Field can take the following values: | ||||
| +---------------+----------------------------------------------+ | ||||
| | P-Field Value | Registered Address Type | | ||||
| +---------------+----------------------------------------------+ | ||||
| | 0 | Registration for a Unicast Address or prefix | | ||||
| +---------------+----------------------------------------------+ | ||||
| | 1 | Registration for a Multicast Address | | ||||
| +---------------+----------------------------------------------+ | ||||
| | 2 | Registration for an Anycast Address | | ||||
| +---------------+----------------------------------------------+ | ||||
| | 3 | Reserved, MUST NOT be used by the sender. | | ||||
| +---------------+----------------------------------------------+ | ||||
| Table 1: P-Field Values | The P-Field can take the values shown in Table 2. | |||
| 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. Extending 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 in the EDAR and EDAC | |||
| signal the type of registration. | messages to signal 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 | defined in [RFC6775]. This specification adds a new P-Field that is | |||
| placed in the EARO flags that is set as follows: | 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 (ROVR) ... | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| 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 0 in DAR messages. [RFC8505] extends the DAC message as an | |||
| an EDAC but does not change the status field in the EDAR. | 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 1006 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| | | | | | | |||
| + 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) | |||
| message. | ||||
| * 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 the above behaviors and Extends them with | |||
| following behavior: | the following behaviors: | |||
| * 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 registration of a | |||
| registration. The respective operations are similar from the | unicast address. 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 8). | |||
| 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 or, respectively, subscribed to | |||
| radio broadcast domain. The latter is generic to any error in the | this router (e.g., a radio broadcast domain). The latter is | |||
| EARO, and is used e.g., to report that the P-Field is not | generic to any error in the EARO and is used, for example, to | |||
| consistent with the Registered Address in NS(EARO) and EDAR | report that the P-Field is not consistent with the Registered | |||
| messages. | Address in NS(EARO) and EDAR 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) message is the one | |||
| the Target and follows the same rules as the TID in the NS(EARO) | associated to the Target and follows the same rules as the TID in | |||
| for the same Target, see section 5.2 of [RFC8505], which points at | the NS(EARO) message for the same Target; see Section 5.2 of | |||
| section 7.2 of [RFC6550] for the lollipop mechanism used in the | [RFC8505], which points to Section 7.2 of [RFC6550] for the | |||
| TID operation. It is incremented by the sender each time it sends | lollipop mechanism used in the TID operation. It is incremented | |||
| a new series of NS and/or NA with the EARO about the Target. The | by the sender each time it sends a new series of NS and/or NA | |||
| TID indicates a reboot when it is in the "straight" part of the | messages with the EARO about the Target. The TID indicates a | |||
| lollipop, between the initial value and 255. After that the TID | reboot when it is in the "straight" part of the lollipop, between | |||
| remains below 128 as long as the device is alive. An asynchronous | the initial value and 255. After that, the TID remains below 128 | |||
| multicast NA(EARO) with a TID below 128 MUST NOT be considered as | as long as the device is alive. An asynchronous multicast | |||
| indicating a reboot. | NA(EARO) with a TID below 128 MUST NOT be considered as 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 ff02::1 [RFC4291] to the all-nodes link- | |||
| ff02::1 [RFC4291]. | scope multicast address. | |||
| * 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. Extending 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 flag set to 1 and the P-Field set | |||
| in the EARO, the 6LR injects the address in the new RPL anycast | to 2 in the EARO, the 6LR injects the address in the new RPL | |||
| support and sets the P-Field to 2 in the RTO. | anycast 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 9. | |||
| 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 flags that are reserved and that MUST be set to 0 by | |||
| by the receiver. | the sender and ignored 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 indicates that the sender has | |||
| that it has lost all state from this node. If the U flag is set, | lost all state from this node. If the U flag is set, then the Peer | |||
| then the Peer NSSI field can be used to assess which changes the | NSSI field can be used to assess which changes the sender missed. | |||
| sender missed. The other way around, any state that was installed in | For the other way around, any state that was installed in the | |||
| the receiver from information by the sender before it rebooted MUST | receiver from information by the sender before it rebooted MUST be | |||
| be removed and may or may not be reinstalled later. | 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 1: 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 MOP (typically MOP 1) for unicast that | |||
| for unicast that legacy nodes can join, and a separate RPL Instance | legacy nodes can join and a separate RPL Instance dedicated to | |||
| dedicated to multicast and anycast operations using a multicast MOP. | 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 unicast traffic on the one hand and | |||
| in the other hand anycast and multicast traffic allows to use | for anycast and multicast traffic on the other hand allows for the | |||
| different objective function, one favoring the link quality up for | use of different objective functions; one favors the link quality Up | |||
| unicast collection and one favoring downwards link quality for | for unicast collection and the other favors Downwards link quality | |||
| multicast distribution. | for 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 by injecting the | |||
| injects the multicast address participates to RPL as a RPL aware node | multicast address participates as a RPL-Aware Node (RAN) in the RPL. | |||
| (RAN). Using an extension of RFC 8505 as opposed to RPL to subscribe | Using an extension of [RFC8505] as opposed to RPL to subscribe the | |||
| the address allows a RPL unaware leaf (RUL) to subscribe as well. As | address allows a RPL-Unaware Leaf (RUL) to subscribe as well. As | |||
| noted in [RFC9010], this provides a better security posture for the | noted in [RFC9010], this provides a better security posture for the | |||
| RPL network, since the nodes that do not really need to speak RPL, or | RPL network, since the nodes that do not really need to speak RPL, or | |||
| are not trusted enough to inject RPL messages, can be forbidden from | are not trusted enough to inject RPL messages, can be forbidden from | |||
| doing so, which bars a number of attacks vectors from within RPL. | doing so, which bars a number of attack vectors from within RPL. | |||
| Acting as RUL, those nodes may still leverage the RPL network through | Acting as an RUL, those nodes may still leverage the RPL network | |||
| the capabilities that are opened via ND operations. With this draft, | through the capabilities that are opened via ND operations. With | |||
| a node that needs multicast delivery can now obtain the service in a | 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 RATInd 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 2: | |||
| +-------+--------------------------------------+-----------+ | +-------+--------------------------------------+-----------+ | |||
| | 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 2: 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 3: | |||
| +------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| | 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 3: 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 4: | |||
| +------------------+------------------------------------+-----------+ | +------------+------------------+------------------------+ | |||
| | 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 4: 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 5: | |||
| +------------------+------------------------------------+-----------+ | +------------+------------------------+------------------------+ | |||
| | 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 5: 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 6: | |||
| +---------------+---------------------------------------+-----------+ | +-------+---------------------------------------+-----------+ | |||
| | 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 6: 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 7: | |||
| 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 7: 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 8: | |||
| +----------------+------------------------------+-----------+ | +-------+------------------------------+-----------+ | |||
| | 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 8: 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 9: | ||||
| +----------------+--------------------------+-----------+ | +------+--------------------------+-----------+ | |||
| | 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 9: 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 1787 ¶ | |||
| [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-06, 9 November 2024, | ||||
| <https://datatracker.ietf.org/doc/html/draft-ietf-6lo- | ||||
| prefix-registration-06>. | ||||
| [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, A., Ed., Head, J., Ed., Sharma, A., 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. 289 change blocks. | ||||
| 951 lines changed or deleted | 973 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||