| < draft-ietf-roll-enrollment-priority-01.txt | draft-ietf-roll-enrollment-priority-02.txt > | |||
|---|---|---|---|---|
| ROLL Working Group M. Richardson | ROLL Working Group M. Richardson | |||
| Internet-Draft Sandelman Software Works | Internet-Draft Sandelman Software Works | |||
| Intended status: Informational March 19, 2020 | Intended status: Informational April 25, 2020 | |||
| Expires: September 20, 2020 | Expires: October 27, 2020 | |||
| Enabling secure network enrollment in RPL networks | Enabling secure network enrollment in RPL networks | |||
| draft-ietf-roll-enrollment-priority-01 | draft-ietf-roll-enrollment-priority-02 | |||
| Abstract | Abstract | |||
| [I-D.ietf-6tisch-enrollment-enhanced-beacon] defines a method by | [I-D.ietf-6tisch-enrollment-enhanced-beacon] defines a method by | |||
| which a potential [I-D.ietf-6tisch-minimal-security] join proxy can | which a potential [I-D.ietf-6tisch-minimal-security] join proxy can | |||
| announce itself as a available for new Pledges to Join a network. | announce itself as a available for new Pledges to enroll on a | |||
| The announcement includes a priority for join. This document | network. The announcement includes a priority for enrollment. This | |||
| provides a mechanism by which a RPL DODAG root can disable join | document provides a mechanism by which a RPL DODAG root can disable | |||
| announcements, or adjust the base priority for join operation. | enrollment announcements, or adjust the base priority for enrollment | |||
| operation. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on September 20, 2020. | This Internet-Draft will expire on October 27, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Protocol Definition . . . . . . . . . . . . . . . . . . . . . 3 | 2. Protocol Definition . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Security Considerations . . . . . . . . . . . . . . . . . . . 4 | 2.1. Upwards compatibility . . . . . . . . . . . . . . . . . . 4 | |||
| 4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 4 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 4 | 4. Privacy Considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 4 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 4 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 5 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 6 | |||
| Appendix A. Change history . . . . . . . . . . . . . . . . . . . 6 | 7.2. Informative References . . . . . . . . . . . . . . . . . 7 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 6 | Appendix A. Change history . . . . . . . . . . . . . . . . . . . 8 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 8 | ||||
| 1. Introduction | 1. Introduction | |||
| [RFC7554] describes the use of the time-slotted channel hopping | [RFC7554] describes the use of the time-slotted channel hopping | |||
| (TSCH) mode of [ieee802154]. [I-D.ietf-6tisch-minimal-security] and | (TSCH) mode of [ieee802154]. [I-D.ietf-6tisch-minimal-security] and | |||
| [I-D.ietf-6tisch-dtsecurity-secure-join] describe mechanisms by which | [I-D.ietf-6tisch-dtsecurity-secure-join] describe mechanisms by which | |||
| a new node (the "pledge)" can use a friendly router as a Join Proxy. | a new node (the "pledge)" can use a friendly router as a Join Proxy. | |||
| [I-D.ietf-6tisch-enrollment-enhanced-beacon] describes an extension | [I-D.ietf-6tisch-enrollment-enhanced-beacon] describes an extension | |||
| to the 802.15.4 Enhanced Beacon that is used by a Join Proxy to | to the 802.15.4 Enhanced Beacon that is used by a Join Proxy to | |||
| announce its existence such that Pledges can find them. | announce its existence such that Pledges can find them. | |||
| The term (1)"Join" has been used in documents like | ||||
| [I-D.ietf-6tisch-minimal-security] to denote the activity of a new | ||||
| node authenticating itself to the network in order to obtain | ||||
| authorization to become a member of the network. This typically | ||||
| involves a cryptographic authentication protocol in which a network | ||||
| credential is provided. | ||||
| In the context of the [RFC6550] RPL protocol, the term (2)"Join" has | ||||
| an alternate meaning: that of a node (already authenticating to the | ||||
| network, and already authorized to be a member of the network), | ||||
| deciding which part of the RPL DODAG to attach to. The term "Join" | ||||
| has to do with parent selection processes. | ||||
| In order to avoid the ambiguity of this term, this document refers to | ||||
| the process (1)"Join" as enrollment, leaving the term "Join" to mean | ||||
| (2)"Join". The term "onboarding" (or IoT Onboarding) is sometimes | ||||
| used to describe this process. The term Join Proxy is retained with | ||||
| it's meaning from [I-D.ietf-6tisch-minimal-security]. | ||||
| It has become clear that not every routing member of the mesh ought | It has become clear that not every routing member of the mesh ought | |||
| to announce itself as a Join Proxy. There are a variety of local | to announce itself as a Join Proxy. There are a variety of local | |||
| reasons by which a 6LR might not want to provide the Join Proxy | reasons by which a 6LR might not want to provide the Join Proxy | |||
| function. They include available battery power, already committed | function. They include available battery power, already committed | |||
| network bandwidth, and also total available memory available for Join | network bandwidth, and also total available memory available for Join | |||
| proxy neighbor cache slots. | proxy neighbor cache slots. | |||
| There are other situations where the operator of the network would | There are other situations where the operator of the network would | |||
| like to selective enable or disable the join process in a particular | like to selective enable or disable the enrollment process in a | |||
| DODAG. | particular DODAG. | |||
| As the join process involves permitting unencrypted traffic into the | As the enrollment process involves permitting unencrypted traffic | |||
| best effort part of a (TSCH) network, it would be better to have the | into the best effort part of a (TSCH) network, it would be better to | |||
| join process off when no new nodes are expected. | have the enrollment process off when no new nodes are expected. | |||
| A network operator might also be able to recognize when certain parts | A network operator might also be able to recognize when certain parts | |||
| of the network are overloaded and can not accomodate additional join | of the network are overloaded and can not accomodate additional | |||
| traffic, and it would like to adjust the join priority among all | enrollment traffic, and it would like to adjust the enrollment | |||
| nodes in the subtree of a congested link. | priority (the proxy priority field of | |||
| [I-D.ietf-6tisch-enrollment-enhanced-beacon]) among all nodes in the | ||||
| subtree of a congested link. | ||||
| This document describes an RPL DIO option that can be used to | This document describes an RPL DIO option that can be used to | |||
| announce a minimum join priority. Each potential Join Proxy would | announce a minimum enrollment priority. Each potential Join Proxy | |||
| this value as a base on which to add (decreasing likely hood of | would this value as a base on which to add values relating to local | |||
| attracting traffic) values relating to local conditions. | conditions. As explained in | |||
| [I-D.ietf-6tisch-enrollment-enhanced-beacon], higher values decrease | ||||
| the likelyhood of an unenrolled node sending enrollment traffic via | ||||
| this path. | ||||
| A network operator can set this value to the maximum value allowed, | A network operator can set this value to the maximum value allowed, | |||
| effectively disable all new join traffic. | effectively disable all new enrollment traffic. | |||
| 1.1. Terminology | 1.1. Terminology | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 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. | |||
| 2. Protocol Definition | 2. Protocol Definition | |||
| The following option is defined to transmission in the DIO issued by | The following option is defined to transmission in the DIO issued by | |||
| the DODAG root. It may also be added by a router on part of the sub- | the DODAG root. It may also be added by a router on part of the sub- | |||
| tree as a result of some (out of scope for this document) management | tree as a result of some (out of scope for this document) management | |||
| function. | function. | |||
| 6LRs that see this DIO Option SHOULD increment the minimum priority | 6LRs that see this DIO Option SHOULD increment their minimum | |||
| if they observe congestion on the channel used for join traffic. | enrollment priority if they observe congestion on the channel used | |||
| (TODO: how much? Do we need to standardize this?) | for join traffic. The exact mechanism is a local decision, and may | |||
| be the subject for future work. | ||||
| A 6LR which would otherwise be willing to act as a Join Proxy, will | A 6LR which would otherwise be willing to act as a Join Proxy, will | |||
| examine the minimum priority field, and to that number, add any | examine the minimum priority field, and to that number, add any | |||
| additional local consideration (such as upstream congestion). The | additional local consideration (such as upstream congestion). | |||
| resulting priority, if less than 0x7f should enable the Join Proxy | ||||
| function. | The Join Priority can only be increased by each each 6LR in value, to | |||
| the maximum value of 0x7f. | ||||
| The resulting priority, if less than 0x7f should enable the Join | ||||
| Proxy function. | ||||
| 0 1 2 | 0 1 2 | |||
| 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type = TBD01|Opt Length = 1|R| min. priority | | | Type = TBD01|Opt Length = 1|R| min. priority | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| min.priority a 7 bit field which provides a base value for the | min.priority a 7 bit field which provides a base value for the | |||
| Enhanced Beacon Join priority. A value of 0x7f (127) disables the | Enhanced Beacon Join priority. A value of 0x7f (127) disables the | |||
| Join Proxy function entirely. | Join Proxy function entirely. | |||
| R a reserved bit that SHOULD be set to 0 by senders, and MUST be | R a reserved bit that SHOULD be set to 0 by senders, and MUST be | |||
| ignored by receivers. The reserved bit SHOULD be copied to | ignored by receivers. This reserved bit SHOULD be copied to | |||
| options created. | options created. | |||
| This document uses the extensions mechanism designed into [RFC6550]. | ||||
| It does not need any mechanism to enable it. | ||||
| Future work like [I-D.ietf-roll-capabilities] will enable collection | ||||
| of capabilities such as this one in reports to the DODAG root. | ||||
| 2.1. Upwards compatibility | ||||
| A 6LR which did not support this option would not act on it, or copy | ||||
| it into it's DIO messages. Children and grandchildren nodes would | ||||
| therefore not receive any telemetry via that path, and need to assume | ||||
| a default value. | ||||
| 6LRs that support this option, but whose parent does not send it | ||||
| SHOULD assume a value of 0x40 as their base value. The nodes then | ||||
| adjust this base value based upon their observed congestion, emitting | ||||
| their adjusted DIO value to their children. | ||||
| A 6LR downstream of a 6LR where there was an interruption in the | ||||
| telemetry could err in two directions: * if the value implied by the | ||||
| base value of 0x40 was too low, then a 6LR might continue to attract | ||||
| enrollment traffic when none should have been collected. This is a | ||||
| stressor for the network, but this would also be what would occur | ||||
| without this option at all. * if the value implied by the base value | ||||
| of 0x40 was too high, then a 6LR might deflect enrollment traffic to | ||||
| other parts of the DODAG tree, possibly refusing any enrollment | ||||
| traffic at all. In order for this to happen, some significant | ||||
| congestion must be seen in the sub-tree where the implied 0x40 was | ||||
| introduced. The 0x40 is only the half-way point, so if such an | ||||
| amount of congestion was present, then this sub-tree of the DODAG | ||||
| simply winds up being more cautious than it needed to be. | ||||
| It is possible that the temporal alternation of the above two | ||||
| situations might introduce cycles of accepting and then rejecting | ||||
| enrollment traffic. This is something an operator should consider if | ||||
| when they incrementally deploy this option to an existing LLN. In | ||||
| addition, an operator would be unable to turn off enrollment traffic | ||||
| by sending a maximum value enrollment priority to the sub-tree. This | ||||
| situation is unfortunately, but would be exactly the situation | ||||
| without this option. | ||||
| 3. Security Considerations | 3. Security Considerations | |||
| As per [RFC7416], RPL control frames either run over a secured layer | As per [RFC7416], RPL control frames either run over a secured layer | |||
| 2, or use the [RFC6550] Secure DIO methods. This option can be | 2, or use the [RFC6550] Secure DIO methods. This option can be | |||
| placed into either a "clear" (layer-2 secured) DIO, or a layer-3 | placed into either a "clear" (layer-2 secured) DIO, or a layer-3 | |||
| Secure DIO. As such this option will have both integrity and | Secure DIO. As such this option will have both integrity and | |||
| confidentiality mechanisms applied to it. | confidentiality mechanisms applied to it. | |||
| A malicious node (that was part of the RPL control plane) could see | A malicious node (that was part of the RPL control plane) could see | |||
| these options and could, based upon the observed minimal join | these options and could, based upon the observed minimal enrollment | |||
| priority signal a confederate that it was a good time to send | priority signal a confederate that it was a good time to send | |||
| malicious join traffic. | malicious join traffic. | |||
| A malicious node (that was part of the RPL control plane) could also | A malicious node (that was part of the RPL control plane) could also | |||
| send DIOs with a different minimal join priority which would cause | send DIOs with a different minimal enrollment priority which would | |||
| downstream mesh routers to change their Join Proxy behaviour. Lower | cause downstream mesh routers to change their Join Proxy behaviour. | |||
| minimal priorities would cause downstream nodes to accept more | Lower minimal priorities would cause downstream nodes to accept more | |||
| pledges than the network was expecting, and higher minimal priorities | pledges than the network was expecting, and higher minimal priorities | |||
| cause the join process to stall. | cause the join process to stall. | |||
| The use of layer-2 or layer-3 security for RPL control messages | The use of layer-2 or layer-3 security for RPL control messages | |||
| prevents the above two attacks. | prevents the above two attacks, by preventing malicious nodes from | |||
| becoming part of the control plane. A node that is attacked and has | ||||
| malware placed on it creates vulnerabilities in the same way such an | ||||
| attack on any node involved in Internet routing protocol does. The | ||||
| rekeying provisions of [I-D.ietf-6tisch-minimal-security] exist to | ||||
| permit an operator to remove such nodes from the network. | ||||
| 4. Privacy Considerations | 4. Privacy Considerations | |||
| There are no new privacy issues caused by this extension. | There are no new privacy issues caused by this extension. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| Allocate a new number TBD01 from Registry RPL Control Message | Allocate a new number TBD01 from Registry RPL Control Message | |||
| Options. This entry should be called Minimum Join Priority. | Options. This entry should be called Minimum Enrollment Priority. | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| This has been reviewed by Pascal Thubert and Thomas Wattenye. | This has been reviewed by Pascal Thubert and Thomas Wattenye. | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-6tisch-enrollment-enhanced-beacon] | [I-D.ietf-6tisch-enrollment-enhanced-beacon] | |||
| skipping to change at page 6, line 16 ¶ | skipping to change at page 7, line 46 ¶ | |||
| Richardson, M., "6tisch Secure Join protocol", draft-ietf- | Richardson, M., "6tisch Secure Join protocol", draft-ietf- | |||
| 6tisch-dtsecurity-secure-join-01 (work in progress), | 6tisch-dtsecurity-secure-join-01 (work in progress), | |||
| February 2017. | February 2017. | |||
| [I-D.ietf-6tisch-terminology] | [I-D.ietf-6tisch-terminology] | |||
| Palattella, M., Thubert, P., Watteyne, T., and Q. Wang, | Palattella, M., Thubert, P., Watteyne, T., and Q. Wang, | |||
| "Terms Used in IPv6 over the TSCH mode of IEEE 802.15.4e", | "Terms Used in IPv6 over the TSCH mode of IEEE 802.15.4e", | |||
| draft-ietf-6tisch-terminology-10 (work in progress), March | draft-ietf-6tisch-terminology-10 (work in progress), March | |||
| 2018. | 2018. | |||
| [I-D.ietf-roll-capabilities] | ||||
| Jadhav, R., Thubert, P., Richardson, M., and R. Sahoo, | ||||
| "RPL Capabilities", draft-ietf-roll-capabilities-02 (work | ||||
| in progress), March 2020. | ||||
| [RFC8137] Kivinen, T. and P. Kinney, "IEEE 802.15.4 Information | [RFC8137] Kivinen, T. and P. Kinney, "IEEE 802.15.4 Information | |||
| Element for the IETF", RFC 8137, DOI 10.17487/RFC8137, May | Element for the IETF", RFC 8137, DOI 10.17487/RFC8137, May | |||
| 2017, <https://www.rfc-editor.org/info/rfc8137>. | 2017, <https://www.rfc-editor.org/info/rfc8137>. | |||
| [RFC8366] Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | [RFC8366] Watsen, K., Richardson, M., Pritikin, M., and T. Eckert, | |||
| "A Voucher Artifact for Bootstrapping Protocols", | "A Voucher Artifact for Bootstrapping Protocols", | |||
| RFC 8366, DOI 10.17487/RFC8366, May 2018, | RFC 8366, DOI 10.17487/RFC8366, May 2018, | |||
| <https://www.rfc-editor.org/info/rfc8366>. | <https://www.rfc-editor.org/info/rfc8366>. | |||
| Appendix A. Change history | Appendix A. Change history | |||
| End of changes. 20 change blocks. | ||||
| 42 lines changed or deleted | 124 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||