idnits 2.17.00 (12 Aug 2021) /tmp/idnits24245/draft-ietf-roll-capabilities-04.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** There is 1 instance of too long lines in the document, the longest one being 13 characters in excess of 72. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == Using lowercase 'not' together with uppercase 'MUST', 'SHALL', 'SHOULD', or 'RECOMMENDED' is not an accepted usage according to RFC 2119. Please use uppercase 'NOT' together with RFC 2119 keywords (if that is what you mean). Found 'MUST not' in this paragraph: Routing resource capabablity sent in DIO message has link local scope and it MUST not be forwarded. The 'C' bit of this capability MUST be set to 0. -- The document date (May 16, 2020) is 735 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'TODO' is mentioned on line 418, but not defined == Unused Reference: 'I-D.ietf-roll-dao-projection' is defined on line 424, but no explicit reference was found in the text == Unused Reference: 'I-D.thubert-roll-turnon-rfc8138' is defined on line 429, but no explicit reference was found in the text == Unused Reference: 'I-D.ietf-lwig-nbr-mgmt-policy' is defined on line 453, but no explicit reference was found in the text == Outdated reference: A later version (-25) exists of draft-ietf-roll-dao-projection-10 == Outdated reference: A later version (-04) exists of draft-ietf-roll-mopex-00 Summary: 1 error (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 ROLL R. Jadhav, Ed. 3 Internet-Draft Huawei 4 Intended status: Standards Track P. Thubert 5 Expires: November 17, 2020 Cisco 6 M. Richardson 7 Sandelman Software Works 8 R. Sahoo 9 Juniper 10 May 16, 2020 12 RPL Capabilities 13 draft-ietf-roll-capabilities-04 15 Abstract 17 This draft enables the discovery, advertisement and query of 18 capabilities for RPL nodes. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at https://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on November 17, 2020. 37 Copyright Notice 39 Copyright (c) 2020 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (https://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Requirements Language and Terminology . . . . . . . . . . 3 56 1.2. What are Capabilities? . . . . . . . . . . . . . . . . . 3 57 2. Requirements for this document . . . . . . . . . . . . . . . 4 58 2.1. How are Capabilities different from MOP or DIO 59 Configuration Option? . . . . . . . . . . . . . . . . . . 4 60 3. Capabilities . . . . . . . . . . . . . . . . . . . . . . . . 4 61 3.1. Capability Control Message Option . . . . . . . . . . . . 5 62 3.2. Capabilities Handshake . . . . . . . . . . . . . . . . . 5 63 4. Guidelines for defining new capabilities . . . . . . . . . . 6 64 4.1. Handling Capability flags . . . . . . . . . . . . . . . . 6 65 4.1.1. Rules to handle capabilities flag . . . . . . . . . . 6 66 5. Node Capabilities . . . . . . . . . . . . . . . . . . . . . . 6 67 5.1. Capability Indicators . . . . . . . . . . . . . . . . . . 7 68 5.1.1. Format of Capability Indicators . . . . . . . . . . . 7 69 5.2. Routing Resource Capability . . . . . . . . . . . . . . . 7 70 5.2.1. Format of Routing Resource Capability . . . . . . . . 8 71 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 8 72 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 73 7.1. New option: Capabilities . . . . . . . . . . . . . . . . 8 74 7.2. New Registry for Capabilities Flags . . . . . . . . . . . 9 75 7.3. New Registry for Capabilities Indicators . . . . . . . . 9 76 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 77 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 78 9.1. Normative References . . . . . . . . . . . . . . . . . . 10 79 9.2. Informative References . . . . . . . . . . . . . . . . . 10 80 Appendix A. Capability Handshake Example . . . . . . . . . . . . 11 81 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 83 1. Introduction 85 RPL [RFC6550] specifies a proactive distance-vector based routing 86 scheme. The protocol creates a DAG-like structure which operates 87 with a given "Mode of Operation" (MOP) determining the minimal and 88 mandatory set of primitives to be supported by all the participating 89 nodes. 91 This document adds a notion of capabilities using which the nodes in 92 the network could inform its peers about its additional capabilities/ 93 features. This document highlights the differences of capabilities 94 from that of Mode of operation and explains the necessity of it. 96 1.1. Requirements Language and Terminology 98 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 99 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 100 document are to be interpreted as described in RFC 2119 [RFC2119]. 102 MOP: Mode of Operation. Identifies the mode of operation of the RPL 103 Instance as administratively provisioned at and distributed by the 104 DODAG root. 106 MOPex: Extended MOP: As defined in [I-D.ietf-roll-mopex]. 108 Capabilities: Additional features or capabilities which might 109 possibly be optional that are supported by the node. 111 DAO: DODAG Advertisement Object. An RPL message used to advertise 112 the target information in order to establish routing adjacencies. 114 DIO: DODAG Information Object. An RPL message initiated by the root 115 and is used to advertise the network configuration information. 117 Current parent: Parent 6LR node before switching to the new path. 119 NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. 121 MOPex: MOP extension as defined in this document. 123 Upstream path/direction: Path or direction from the node to the Root 124 in a DAG. 126 Downstream path/direction: Path or direction to the node from the 127 Root in a DAG. 129 This document uses terminology described in [RFC6550]. For the sake 130 of readability all the known relevant terms are repeated in this 131 section. 133 1.2. What are Capabilities? 135 Currently RPL specification does not have a mechanism whereby a node 136 can signal the set of features that are available on its end. Such a 137 mechanism could help the root to advertise its capabilities and in 138 response also determine some advanced information about the 139 capabilities of the joining nodes. This document defines 140 Capabilities which could be supported by the nodes and handshaked as 141 part of RPL signaling. Capabilities are embedded as RPL control 142 message option as defined Section 6.7 of [RFC6550] in the base 143 messages of DIO, DAO and DAO-ACK signaling. 145 2. Requirements for this document 147 Following are the requirements considered for this documents: 149 REQ1: Backwards compatibility. The new options and new fields in 150 the DIO message should be backward compatible i.e. if there 151 are nodes which support old MOPs they could still operate in 152 their own instances. 154 REQ2: Optional capabilities handshake. Capabilities are features, 155 possibly optional, which could be handshaked between the nodes 156 and the root within an RPL Instance. 158 REQ3: Capabilities handshake could be optionally added with existing 159 MOPs. Capabilities been optional in nature could be put to 160 use with existing MOPs. Capabilities and MOP-extension is 161 mutually independent i.e. a DIO can have a capabilities 162 option, MOP-extension option or both in the same message. 164 REQ4: Capabilities could be explicitly queried. 166 2.1. How are Capabilities different from MOP or DIO Configuration 167 Option? 169 The Mode of Operation (MOP) field in RPL mandates the operational 170 requirement for the nodes joining as routers. MOP and DIO 171 Configuration Option is strictly controlled by the Root node in RPL. 172 Intermediate 6LRs could not modify the values. Also, the MOP never 173 changes for the lifetime of the RPL Instance. Changes in DIO 174 Configuration Option are possible but are very rare. Capabilities, 175 on the other hand, might change more dynamically. 177 RPL DIO message also carries routing metrics and constraints as 178 specified in [RFC6551]. Metrics and constraints are used as part of 179 objective function which aids in node's rank calculation. A router 180 may use capabilities carried in DIO message as additional metrics/ 181 constraints. However, capabilities have a larger scope and may be 182 carried in other messages other than DIO and can flow in both the 183 directions (upstream and downstream). 185 3. Capabilities 187 Handling of Capabilities MUST be supported if the network uses MOPex 188 [I-D.ietf-roll-mopex]. 190 Note that capabilities and MOPex are mutually exclusive and it is 191 possible for an implementation to support either or both of the 192 options. 194 3.1. Capability Control Message Option 196 0 1 2 3 197 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 198 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 199 | Type = TODO | Option Length | Capabilities TLVs 200 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 202 Figure 1: Capabilities Option 204 Multiple capabilities could be sent in the same message. The length 205 field allows the message parser to skip the capability TLV parsing. 207 0 1 2 3 208 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 209 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 210 | CapType | Len |J|I|C| Flags | ... 211 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 213 Figure 2: Capabilities TLV 215 Every capability is identified by its type and it may have an 216 optional Capability Info. Note that a given capability may or may 217 not be diseminated with additional information depending on the scope 218 of the capability indicated by the I bit. 220 Len: 8-bit unsigned integer, representing the length in octets of the 221 TLV, not including the CapType, Length and Flags fields. 223 J = Join only as leaf if capability not understood. 225 I = Ignore the message if this capability is not understood. 227 C = Flag indicating that the capability MUST be copied in the 228 downstream message. 230 3.2. Capabilities Handshake 232 The root node could advertise the set of capabilities it supports in 233 the DIO message. A node could take advantage of the knowledge that 234 the root supports a particular capability. Similarly a node could 235 advertise its capabilities in the DAO message using the capability 236 control message option defined in this document. Capabilities 237 advertised by non-root nodes are strictly a subset of the 238 capabilities advertised by the root. 240 In storing MOP, the DAO message from the 6LR could contain multiple 241 target options because of the DAO-Aggregation. The targets of the 242 capabilities option are indicated by one or more Target options that 243 precede the Capabilities Option. This handling is similar to the 244 Transit Information Option as supported in Section 6.7.8. of 245 [RFC6550]. 247 4. Guidelines for defining new capabilities 249 This section provides guidelines/recommendations towards defining new 250 capabilities. Note that the capabilities might be carried as part of 251 the multicast messaging such as DIO and hence the set should be used 252 in restrictive manner as far as possible. 254 4.1. Handling Capability flags 256 A node MUST drop or discard the message silently having an unknown 257 capability with 'D' (discard) flag set. 259 The 'I' (information) flag is set only when there is additional 260 information to be set in context to the capability. 262 The 'J' (join) flag can be set in context to a capability either by a 263 6LR or the root. The 'J' flag indicates that if the capability is 264 not supported by a node then it can join the instance only as a 6LN 265 (or do not join as 6LR). 267 The 'C' (copy) flag is set by the node indicating that the 268 capabilities MUST be copied downstream by the node. 270 4.1.1. Rules to handle capabilities flag 271 On receiving a capability it does not support, the node MUST check 272 the 'J' flag of the capability before joining the Instance. If the 273 'J' flag is set then it can only join as a 6LN. 274 If the node is operating as 6LR and subsequently it receives a 275 capability which it doesn't understand with 'J' flag set, then the 276 node has to switch itself to 6LN mode. During switching the node 277 needs to inform its downstream peers of its changed status by sending 278 a DIO with infinite rank as mentioned in [RFC6550]. 279 Capabilities are used to indicate a feature that is supported by the 280 node. Capabilities are not meant for configuration management for 281 e.g., setting a threshold./>. 283 5. Node Capabilities 284 5.1. Capability Indicators 286 Capability Indicators indicates the capabilities supported by the 287 node in the form of simple flags. Capabilities who do not have 288 additional information to be specified could make use of these flags 289 to indicate their support. 291 5.1.1. Format of Capability Indicators 293 0 1 2 3 294 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 295 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 296 | CapType=0x01 | Len |J|I|C| Flags |T|..Indicators.. 297 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 299 Figure 3: Capability Indicators TLV 301 Flags: LRs MUST set it to 0. I bit will always be set to 0. 303 T flag (Bit 1): Indicates whether the node supports 6LoRH [RFC8138]. 305 5.2. Routing Resource Capability 307 Storing mode of operation requires each intermediate router in the 308 LLN to maintain routing states' information in the routing table. 309 LLN routers typically operate with constraints on processing power, 310 memory, and energy (battery power). Memory limits the number of 311 routing states an LR and BR can maintain. When the routing table of 312 an LR or BR is full, it will either reject the new DAO messages 313 received or will use some replacement policy to remove a routing 314 entry and add the new one. Rejection of DAO messages will lead to an 315 increase in DAO message transmission that impacts the energy and 316 network convergence time. Routing state replacement leads to 317 downward path downtime. 319 One possible way to solve problems due to routing table size 320 constraint is to use this information to add neighbors to the DAO 321 parent set. Routing resource capability can be used by LR and BR to 322 advertise their current routing table usage details in the network. 323 LR or LNs in LLN can use this information in the selection of the DAO 324 parent set. PCE can use this information to select intermediate 325 routers for the projected routes. Routing Resource is an optional 326 capability. 328 Routing resource capabablity sent in DIO message has link local scope 329 and it MUST not be forwarded. The 'C' bit of this capability MUST be 330 set to 0. 332 5.2.1. Format of Routing Resource Capability 334 0 1 2 3 335 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 336 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 337 | CapType=0x02 | Len=3 |J|I|C| Flags | Reserved | 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 339 | Total Capacity | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 342 Figure 4: Routing Resource Capability TLV 344 Type: 0x02. 346 Flags: I bit MUST be set to 0. C bit MUST be set to 0. 348 Len: 8-bit unsigned integer, representing the length in octets of the 349 option, not including the Option Type and Length/flags fields. 351 Resvd: 8-bit unused field. It MUST be initialized to zero by the 352 sender and MUST be ignored by the receiver. 354 Total Capacity: 16 bit unsigned integer representing the routing 355 table size. 357 6. Acknowledgements 359 Thanks to Georgios Papadopoulos, Li Zhao for early review and 360 feedback. 362 7. IANA Considerations 364 7.1. New option: Capabilities 366 New entry is required for supporting new Capabilities option in the 367 "RPL Control Message Options" space [RFC6550]. 369 +-------+-----------------------------+---------------+ 370 | Value | Meaning | Reference | 371 +-------+-----------------------------+---------------+ 372 | 0x01 | Capability Indicators | This document | 373 | 0x02 | Routing Resource Capability | This document | 374 +-------+-----------------------------+---------------+ 376 New options 378 7.2. New Registry for Capabilities Flags 380 IANA is requested to create a registry for the Capabilities flags as 381 described in Section 2.1 of this document. This registry should be 382 located in TODO. New Capabilities flags may be allocated only by an 383 IETF review. Currently no flags are defined by this document. Each 384 value is tracked with the following qualities: 386 o Flag 388 o Description 390 o Defining RFC 392 7.3. New Registry for Capabilities Indicators 394 IANA is requested to create a registry for the Capabilities 395 Indicators as described in Section 5.1 of this document. This 396 registry should be located in TODO. New Capabilities indicators may 397 be allocated only by an IETF review. Each value is tracked with the 398 following qualities: 400 o Flag 402 o Description 404 o Defining RFC 406 8. Security Considerations 408 The options defined in this document are carried in the base message 409 objects as defined in [RFC6550]. The RPL control message options are 410 protected by the same security mechanisms that protect the base 411 messages. 413 Capabilities flag can reveal that the node has been upgraded or is 414 running a old feature set. This document assumes that the base 415 messages that carry these options are protected by RPL security 416 mechanisms and thus are not visible to a malicious node. 418 [TODO] implications of malicious attack involving setting the 419 capability flags. 421 9. References 422 9.1. Normative References 424 [I-D.ietf-roll-dao-projection] 425 Thubert, P., Jadhav, R., and M. Gillmore, "Root initiated 426 routing state in RPL", draft-ietf-roll-dao-projection-10 427 (work in progress), May 2020. 429 [I-D.thubert-roll-turnon-rfc8138] 430 Thubert, P. and L. Zhao, "Configuration option for RFC 431 8138", draft-thubert-roll-turnon-rfc8138-03 (work in 432 progress), July 2019. 434 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 435 Requirement Levels", BCP 14, RFC 2119, 436 DOI 10.17487/RFC2119, March 1997, 437 . 439 [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., 440 Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, 441 JP., and R. Alexander, "RPL: IPv6 Routing Protocol for 442 Low-Power and Lossy Networks", RFC 6550, 443 DOI 10.17487/RFC6550, March 2012, 444 . 446 [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, 447 "IPv6 over Low-Power Wireless Personal Area Network 448 (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, 449 April 2017, . 451 9.2. Informative References 453 [I-D.ietf-lwig-nbr-mgmt-policy] 454 Jadhav, R., Sahoo, R., Duquennoy, S., and J. Eriksson, 455 "Neighbor Management Policy for 6LoWPAN", draft-ietf-lwig- 456 nbr-mgmt-policy-03 (work in progress), February 2019. 458 [I-D.ietf-roll-mopex] 459 Jadhav, R., Thubert, P., and M. Richardson, "Mode of 460 Operation extension", draft-ietf-roll-mopex-00 (work in 461 progress), April 2020. 463 [RFC6551] Vasseur, JP., Ed., Kim, M., Ed., Pister, K., Dejean, N., 464 and D. Barthel, "Routing Metrics Used for Path Calculation 465 in Low-Power and Lossy Networks", RFC 6551, 466 DOI 10.17487/RFC6551, March 2012, 467 . 469 Appendix A. Capability Handshake Example 471 Root 6LR 6LN 472 | | | 473 | DIO(CS1) | | 474 |------------>| DIO(CS1) | 475 | |----------->| 476 | | | 477 | | DAO(CS2) | 478 | |<-----------| 479 | DAO(CS2) | | 480 |<------------| | 481 | | | 482 CS: Capabilities Set 483 CS1: Capabilities set advertised by root 484 CS2: Capabilities set advertised by node. CS2 is a subset of CS1. 486 Figure 5: Capabilities Option 488 Authors' Addresses 490 Rahul Arvind Jadhav (editor) 491 Huawei 492 Kundalahalli Village, Whitefield, 493 Bangalore, Karnataka 560037 494 India 496 Phone: +91-080-49160700 497 Email: rahul.ietf@gmail.com 499 Pascal Thubert 500 Cisco Systems, Inc 501 Building D 502 45 Allee des Ormes - BP1200 503 MOUGINS - Sophia Antipolis 06254 504 France 506 Phone: +33 497 23 26 34 507 Email: pthubert@cisco.com 509 Michael Richardson 510 Sandelman Software Works 512 Email: mcr+ietf@sandelman.ca 513 Rabi Narayan Sahoo 514 Juniper 516 Email: rabinarayans0828@gmail.com