idnits 2.17.1 draft-ietf-roll-efficient-npdao-00.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (June 26, 2017) is 2493 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) == Unused Reference: 'CONTIKI' is defined on line 509, but no explicit reference was found in the text == Unused Reference: 'RFC3552' is defined on line 512, but no explicit reference was found in the text == Outdated reference: A later version (-30) exists of draft-ietf-6tisch-architecture-11 ** Downref: Normative reference to an Informational draft: draft-ietf-6tisch-architecture (ref. 'I-D.ietf-6tisch-architecture') Summary: 1 error (**), 0 flaws (~~), 4 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 R. Sahoo 4 Intended status: Standards Track Z. Cao 5 Expires: December 28, 2017 Huawei Tech 6 June 26, 2017 8 No-Path DAO modifications 9 draft-ietf-roll-efficient-npdao-00 11 Abstract 13 This document describes the problems associated with the use of No- 14 Path DAO messaging in RPL and a signaling changes to improve route 15 invalidation efficiency. 17 Status of This Memo 19 This Internet-Draft is submitted in full conformance with the 20 provisions of BCP 78 and BCP 79. 22 Internet-Drafts are working documents of the Internet Engineering 23 Task Force (IETF). Note that other groups may also distribute 24 working documents as Internet-Drafts. The list of current Internet- 25 Drafts is at http://datatracker.ietf.org/drafts/current/. 27 Internet-Drafts are draft documents valid for a maximum of six months 28 and may be updated, replaced, or obsoleted by other documents at any 29 time. It is inappropriate to use Internet-Drafts as reference 30 material or to cite them other than as "work in progress." 32 This Internet-Draft will expire on December 28, 2017. 34 Copyright Notice 36 Copyright (c) 2017 IETF Trust and the persons identified as the 37 document authors. All rights reserved. 39 This document is subject to BCP 78 and the IETF Trust's Legal 40 Provisions Relating to IETF Documents 41 (http://trustee.ietf.org/license-info) in effect on the date of 42 publication of this document. Please review these documents 43 carefully, as they describe your rights and restrictions with respect 44 to this document. Code Components extracted from this document must 45 include Simplified BSD License text as described in Section 4.e of 46 the Trust Legal Provisions and are provided without warranty as 47 described in the Simplified BSD License. 49 Table of Contents 51 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 52 1.1. Requirements Language and Terminology . . . . . . . . . . 3 53 1.2. Current No-Path DAO messaging . . . . . . . . . . . . . . 3 54 1.3. Cases when No-Path DAO may be used . . . . . . . . . . . 4 55 1.4. Why No-Path DAO is important? . . . . . . . . . . . . . . 5 56 2. Problems with current No-Path DAO messaging . . . . . . . . 5 57 2.1. Lost NP-DAO due to link break to the previous parent . . 5 58 2.2. Invalidate routes to dependent nodes of the switching 59 node . . . . . . . . . . . . . . . . . . . . . . . . . . 5 60 2.3. Route downtime caused by asynchronous operation of 61 NPDAO and DAO . . . . . . . . . . . . . . . . . . . . . . 6 62 3. Requirements for the No-Path DAO Optimization . . . . . . . . 6 63 3.1. Req#1: Tolerant to the link failures to the previous 64 parents . . . . . . . . . . . . . . . . . . . . . . . . . 6 65 3.2. Req#2: Dependent nodes route invalidation on parent 66 switching . . . . . . . . . . . . . . . . . . . . . . . . 6 67 3.3. Req#3: No impact on traffic while NP-DAO operation in 68 progress . . . . . . . . . . . . . . . . . . . . . . . . 6 69 4. Proposed changes to NPDAO signaling . . . . . . . . . . . . . 7 70 4.1. Change in NPDAO semantics . . . . . . . . . . . . . . . . 7 71 4.2. DAO message format changes . . . . . . . . . . . . . . . 7 72 4.2.1. Path Sequence number in the reverse NPDAO . . . . . . 9 73 4.3. Example messaging . . . . . . . . . . . . . . . . . . . . 9 74 4.4. Other considerations . . . . . . . . . . . . . . . . . . 10 75 4.4.1. Dependent Nodes invalidation . . . . . . . . . . . . 10 76 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 77 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 78 7. Security Considerations . . . . . . . . . . . . . . . . . . . 11 79 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 80 8.1. Normative References . . . . . . . . . . . . . . . . . . 11 81 8.2. Informative References . . . . . . . . . . . . . . . . . 11 82 Appendix A. Additional Stuff . . . . . . . . . . . . . . . . . . 11 83 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 85 1. Introduction 87 RPL [RFC6550] specifies a proactive distance-vector based routing 88 scheme. The specification has an optional messaging in the form of 89 DAO messages using which the 6LBR can learn route towards any of the 90 nodes. In storing mode, DAO messages would result in routing entries 91 been created on all intermediate hops from the node's parent all the 92 way towards the 6LBR. 94 RPL allows use of No-Path DAO (NPDAO) messaging to invalidate a 95 routing path corresponding to the given target, thus releasing 96 resources utilized on that path. A No-Path DAO is a DAO message with 97 route lifetime of zero, signaling route invalidation for the given 98 target. This document explains the problems associated with the 99 current use of NPDAO messaging and also discusses the requirements 100 for an optimized No-Path DAO messaging scheme. The signalling change 101 specified fulfills all mentioned requirements of an optimized NPDAO 102 messaging. 104 6TiSCH architecture [I-D.ietf-6tisch-architecture] leverages RPL and 105 specifies use of non-storing and storing MOP for its routing 106 operation. Thus an improvement in NPDAO messaging will help optimize 107 6TiSCH based networks. 109 1.1. Requirements Language and Terminology 111 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 112 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 113 document are to be interpreted as described in RFC 2119 [RFC2119]. 115 The document only caters to the RPL's storing mode of operation 116 (MOP). The non-storing MOP does not require use of NPDAO for route 117 invalidation since routing entries are not maintained on 6LRs. 119 Common Ancestor node: 6LR node which is the first common node on the 120 old and new path for the child node. 122 NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. 124 Reverse NPDAO: A No-Path DAO message which traverses downstream in 125 the network. 127 Regular DAO: A DAO message with non-zero lifetime. 129 This document also uses terminology described in [RFC6550]. 131 1.2. Current No-Path DAO messaging 133 RPL introduced No-Path DAO messaging in the storing mode so that the 134 node switching its current parent can inform its parents and 135 ancestors to invalidate the existing route. Subsequently parents or 136 ancestors would release any resources (such as the routing entry) it 137 maintains on behalf of target node. The NPDAO message always 138 traverses the RPL tree in upward direction, originating at the target 139 node itself. 141 For the rest of this document consider the following topology: 143 (6LBR) 144 | 145 | 146 | 147 (A) 148 / \ 149 / \ 150 / \ 151 (G) (H) 152 | | 153 | | 154 | | 155 (B) (C) 156 \ ; 157 \ ; 158 \ ; 159 (D) 160 / \ 161 / \ 162 / \ 163 (E) (F) 165 Figure 1: Sample topology 167 Node (D) is connected via preferred parent (B). (D) has an alternate 168 path via (C) towards the BR. Node (A) is the common ancestor for (D) 169 for paths through (B)-(G) and (C)-(H). When (D) switches from (B) to 170 (C), [RFC6550] suggests sending No-Path DAO to (B) and regular DAO to 171 (C). 173 1.3. Cases when No-Path DAO may be used 175 There are following cases in which a node switches its parent and may 176 employ No-Path DAO messaging: 178 Case I: Current parent becomes unavailable because of transient or 179 permanent link or parent node failure. 181 Case II: The node finds a better parent node i.e. the metrics of 182 another parent is better than its current parent. 184 Case III: The node switches to a new parent whom it "thinks" has a 185 better metric but does not in reality. 187 The usual steps of operation when the node switches the parent is 188 that the node sends a No-Path DAO message via its current parent to 189 invalidate its current route and subsequently it tries to establish a 190 new routing path by sending a new DAO via its new parent. 192 1.4. Why No-Path DAO is important? 194 Nodes in LLNs may be resource constrained. There is limited memory 195 available and routing entry records are the one of the primary 196 elements occupying dynamic memory in the nodes. Route invalidation 197 helps 6LR nodes to decide which entries could be discarded to better 198 achieve resource utilization in case of contention. Thus it becomes 199 necessary to have efficient route invalidation mechanism. Also note 200 that a single parent switch may result in a "sub-tree" switching from 201 one parent to another. Thus the route invalidation needs to be done 202 on behalf of the sub-tree and not the switching node alone. In the 203 above example, when Node (D) switches parent, the route invalidation 204 needs to be done for (D), (E) and (F). Thus without efficient route 205 invalidation, a 6LR may have to hold a lot of unwanted route entries. 207 2. Problems with current No-Path DAO messaging 209 2.1. Lost NP-DAO due to link break to the previous parent 211 When a node switches its parent, the NPDAO is to be sent via its 212 previous parent and a regular DAO via its new parent. In cases where 213 the node switches its parent because of transient or permanent parent 214 link/node failure then the NPDAO message is bound to fail. RPL 215 assumes communication link with the previous parent for No-Path DAO 216 messaging. 218 RPL allows use of route lifetime to remove unwanted routes in case 219 the routes could not be refreshed. But route lifetimes in case of 220 LLNs could be substantially high and thus the route entries would be 221 stuck for long. 223 2.2. Invalidate routes to dependent nodes of the switching node 225 No-path DAO is sent by the node who has switched the parent but it 226 does not work for the dependent child nodes below it. The 227 specification does not specify how route invalidation will work for 228 sub-childs, resulting in stale routing entries on behalf of the sub- 229 childs on the previous route. The only way for 6LR to invalidate the 230 route entries for dependent nodes would be to use route lifetime 231 expiry which could be substantially high for LLNs. 233 In the example topology, when Node (D) switches its parent, Node (D) 234 generates an NPDAO on its behalf. Post switching, Node (D) transmits 235 a DIO with incremented DTSN so that child nodes, node (E) and (F), 236 generate DAOs to trigger route update on the new path for themselves. 237 There is no NPDAO generated by these child nodes through the previous 238 path resulting in stale entries on nodes (B) and (G) for nodes (E) 239 and (F). 241 2.3. Route downtime caused by asynchronous operation of NPDAO and DAO 243 A switching node may generate both an NPDAO and DAO via two different 244 paths at almost the same time. There is a possibility that an NPDAO 245 generated may invalidate the previous route and the regular DAO sent 246 via the new path gets lost on the way. This may result in route 247 downtime thus impacting downward traffic for the switching node. In 248 the example topology, consider Node (D) switches from parent (B) to 249 (C) because the metrics of the path via (C) are better. Note that 250 the previous path via (B) may still be available (albeit at 251 relatively bad metrics). An NPDAO sent from previous route may 252 invalidate the existing route whereas there is no way to determine 253 whether the new DAO has successfully updated the route entries on the 254 new path. 256 An implementation technique to avoid this problem is to further delay 257 the route invalidation by a fixed time interval after receiving an 258 NPDAO, considering the time taken for the new path to be established. 259 Coming up with such a time interval is tricky since the new route may 260 also not be available and it may subsequently require more parent 261 switches to establish a new path. 263 3. Requirements for the No-Path DAO Optimization 265 3.1. Req#1: Tolerant to the link failures to the previous parents 267 When the switching node send the NP-DAO message to the previous 268 parent, it is normal that the link to the previous parent is prone to 269 failure. Therefore, it is required that the NP-DAO message MUST be 270 tolerant to the link failure during the switching. 272 3.2. Req#2: Dependent nodes route invalidation on parent switching 274 While switching the parent node and sending NP-DAO message, it is 275 required that the routing entries to the dependent nodes of the 276 switching node will be updated accordingly on the previous parents 277 and other relevant upstream nodes. 279 3.3. Req#3: No impact on traffic while NP-DAO operation in progress 281 While sending the NP-DAO and DAO messages, it is possible that the 282 NP-DAO successfully invalidates the previous path, while the newly 283 sent DAO gets lost (new path not set up successfully). This will 284 result into downstream unreachability to the current switching node. 285 Therefore, it is desirable that the NP-DAO is synchronized with the 286 DAO to avoid the risk of route downtime. 288 4. Proposed changes to NPDAO signaling 290 4.1. Change in NPDAO semantics 292 As described in Section 1.2, currently the NPDAO originates at the 293 node switching the parent and traverses upstream towards the root. 294 In order to solve the problems as mentioned in Section 2, the draft 295 proposes to change the way NPDAO originates and traverses the 296 network. The proposed NPDAO originates at a common ancestor node 297 between the new and old path. The trigger for the common ancestor 298 node to generate this NPDAO is the change in the next hop for the 299 node on reception of an update message in the form of regular DAO for 300 the target. 302 In the Figure 1, when node D decides to switch the path from B to C, 303 it sends a regular DAO to node C with reachability information 304 containing target as address of D and a incremented path sequence 305 number. Node C will update the routing table based on the 306 reachability information in DAO and in turn generate another DAO with 307 the same reachability information and forward it to H. Node H also 308 follows the same procedure as Node C and forwards it to node A. When 309 node A receives the regular DAO, it finds that it already has a 310 routing table entry on behalf of the target address of node D. It 311 finds however that the next hop information for reaching node D has 312 changed i.e. the node D has decided to change the paths. In this 313 case, Node A which is the common ancestor node for node D along the 314 two paths (previous and new), may generate an NPDAO which traverses 315 downwards in the network. The document in the subsequent section 316 will explain the message format changes to handle this downward flow 317 of NPDAO. 319 4.2. DAO message format changes 321 Every RPL message is divided into base message fields and additional 322 Options. The base fields apply to the message as a whole and options 323 are appended to add message/use-case specific attributes. As an 324 example, a DAO message may be attributed by one or more "RPL Target" 325 options which specifies the reachability information for the given 326 targets. Similarly, a Transit Information option may be associated 327 with a set of RPL Target options. 329 The draft proposes a change in DAO message to contain "Invalidate 330 previous route" (I) bit. This I-bit which is carried in regular DAO 331 message, signals the common ancestor node to generate a downstream 332 NPDAO on behalf of the target node. The I-bit is carried in the 333 transit container option which augments the reachability information 334 for a given set of RPL Target(s). 336 0 1 2 3 337 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 338 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 339 | Type = 0x06 | Option Length |E|I| Flags | Path Control | 340 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 341 | Path Sequence | Path Lifetime | | 342 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 343 | | 344 + + 345 | | 346 + Parent Address* + 347 | | 348 + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 349 | | 350 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 352 Figure 2: Updated Transit Information Option (New I flag added) 354 I (Invalidate previous route) bit: 1 bit flag. The 'I' flag is set 355 by the target node to indicate that it wishes to invalidate the 356 previous route by a common ancestor node between the two paths. 358 The NPDAO thus generated by the common ancestor node needs to 359 traverse downstream. An additional flag called as "Reverse NPDAO" 360 (R) is added in the base DAO object to signal this change. 362 0 1 2 3 363 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 364 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 365 | RPLInstanceID |K|D|R| Flags | Reserved | DAOSequence | 366 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 367 | | 368 + + 369 | | 370 + DODAGID* + 371 | | 372 + + 373 | | 374 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 375 | Option(s)... 376 +-+-+-+-+-+-+-+-+ 378 Figure 3: Updated DAO base object (New R flag added) 380 R (Reverse DAO) bit: 1 bit flag. The 'R' flag is used to signal that 381 the DAO traverses downwards. 383 4.2.1. Path Sequence number in the reverse NPDAO 385 Every DAO message may contain a Path Sequence in the transit 386 information option to identify the freshness of the DAO message. The 387 Path Sequence in the downward NPDAO generated by common ancestor 388 should use the same Path Sequence number present in the regular DAO 389 message. 391 4.3. Example messaging 393 In Figure 1, node (D) switches its parent from (B) to (C). The 394 sequence of actions is as follows: 396 1. Node D switches its parent from node B to node C 398 2. D sends a regular DAO(tgt=D,pathseq=x+1,I_flag=1) in the updated 399 path to C 401 3. C checks for routing entry on behalf of D, since it cannot find 402 an entry on behalf of D it creates a new routing entry and 403 forwards the reachability information of the target D to H in a 404 DAO. 406 4. Similar to C, node H checks for routing entry on behalf of D, 407 cannot find an entry and hence creates a new routing entry and 408 forwards the reachability information of the target D to H in a 409 DAO. 411 5. Node A receives the DAO, and checks for routing entry on behalf 412 of D. It finds a routing entry but checks that the next hop for 413 target D is now changed. Node A checks the I_flag and generates 414 downstream NPDAO(tgt=D,pathseq=x+1,R_flag=1) to previous next hop 415 for target D which is G. Subsequently, A updates the routing 416 entry and forwards the reachability information of target D 417 upstream DAO(tgt=D,pathseq=x+1,I_flag=x) (the I_flag carries no 418 significance henceforth). 420 6. Node G receives the downstream NPDAO and invalidates routing 421 entry of target D and then checks the reverse (R) flag and 422 forwards the (un)reachability information downstream to B. 424 7. Similarly, B processes the downstream NPDAO by invalidating the 425 routing entry of target D and then checks the reverse (R) flag 426 and forwards the (un)reachability information downstream to D. 428 8. D ignores the downstream NPDAO since the target is itself. 430 4.4. Other considerations 432 4.4.1. Dependent Nodes invalidation 434 Current RPL [RFC6550] does not provide a mechanism for route 435 invalidation for dependent nodes. 437 This section describes approaches for invalidating routes of 438 dependent nodes if the implementation chooses to solve this problem. 439 The common ancestor node realizes that the paths for dependent nodes 440 have changed (based on next hop change) when it receives a regular 441 DAO on behalf of the dependent nodes. Thus dependent nodes route 442 invalidation can be handled in the same way as the switching node. 443 Note that there is no way that dependent nodes can set the I_flag in 444 the DAO message selectively since they are unaware that their parent/ 445 grand parent node is switching paths. There are two ways to handle 446 dependent node route invalidation: 448 1. One way to resolve is that the common ancestor does not depend 449 upon the I_flag to generate the reverse NPDAO. The only factor 450 it makes the decision will be based on next_hop change for an 451 existing target to generate the NPDAO. Thus when the switching 452 nodes and all the below dependent nodes advertise a regular DAO, 453 the common ancestor node will detect a change in next hop and 454 generate NPDAO for the same target as in the regular DAO. 456 2. Another way is that the nodes always set the I_flag whenever they 457 send regular DAO. Thus common ancestor will first check whether 458 I_flag is set and then check whether the next_hop has changed and 459 subsequently trigger NPDAO if required. 461 This document recommends the approach in point 2. The advantage with 462 I_flag is that the generation of downstream NPDAO is still controlled 463 by the target node and thus is still in control of its own routing 464 state. 466 5. Acknowledgements 468 We would like to thank Cenk Gundogan, Simon Duquennoy and Pascal 469 Thubert for their review and insightful comments. 471 6. IANA Considerations 473 IANA is requested to allocate bit 11 in the DAO base object defined 474 in RPL [RFC6550] section 6.4 for reverse 'R' NPDAO flag. 476 IANA is requested to allocate bit 18 in the Transit Information 477 Option defined in RPL [RFC6550] section 6.7.8 for Invalidate route 478 'I' flag. 480 7. Security Considerations 482 This draft does not add any new messages but extends existing 483 messaging. The seucrity considerations applicable to DAO messaging 484 in RPL is also applicable here. 486 8. References 488 8.1. Normative References 490 [I-D.ietf-6tisch-architecture] 491 Thubert, P., "An Architecture for IPv6 over the TSCH mode 492 of IEEE 802.15.4", draft-ietf-6tisch-architecture-11 (work 493 in progress), January 2017. 495 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 496 Requirement Levels", BCP 14, RFC 2119, 497 DOI 10.17487/RFC2119, March 1997, 498 . 500 [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., 501 Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, 502 JP., and R. Alexander, "RPL: IPv6 Routing Protocol for 503 Low-Power and Lossy Networks", RFC 6550, 504 DOI 10.17487/RFC6550, March 2012, 505 . 507 8.2. Informative References 509 [CONTIKI] Thingsquare, "Contiki: The Open Source OS for IoT", 2012, 510 . 512 [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC 513 Text on Security Considerations", BCP 72, RFC 3552, 514 DOI 10.17487/RFC3552, July 2003, 515 . 517 Appendix A. Additional Stuff 519 This becomes an Appendix. 521 Authors' Addresses 523 Rahul Arvind Jadhav (editor) 524 Huawei Tech 525 Kundalahalli Village, Whitefield, 526 Bangalore, Karnataka 560037 527 India 529 Phone: +91-080-49160700 530 Email: rahul.ietf@gmail.com 532 Rabi Narayan Sahoo 533 Huawei Tech 534 Kundalahalli Village, Whitefield, 535 Bangalore, Karnataka 560037 536 India 538 Phone: +91-080-49160700 539 Email: rabinarayans@huawei.com 541 Zhen Cao 542 Huawei Tech 543 W Chang'an Ave 544 Beijing 560037 545 China 547 Email: zhencao.ietf@gmail.com