draft-ietf-roll-efficient-npdao-07.txt | draft-ietf-roll-efficient-npdao-08.txt | |||
---|---|---|---|---|
ROLL R. Jadhav, Ed. | ROLL R. Jadhav, Ed. | |||
Internet-Draft Huawei | Internet-Draft Huawei | |||
Intended status: Standards Track P. Thubert | Intended status: Standards Track P. Thubert | |||
Expires: March 31, 2019 Cisco | Expires: April 3, 2019 Cisco | |||
R. Sahoo | R. Sahoo | |||
Z. Cao | Z. Cao | |||
Huawei | Huawei | |||
September 27, 2018 | September 30, 2018 | |||
Efficient Route Invalidation | Efficient Route Invalidation | |||
draft-ietf-roll-efficient-npdao-07 | draft-ietf-roll-efficient-npdao-08 | |||
Abstract | Abstract | |||
This document describes the problems associated with the use of NPDAO | This document describes the problems associated with NPDAO messaging | |||
messaging in RPL and signaling changes to improve route invalidation | used in RPL for route invalidation and signaling changes to improve | |||
efficiency. | route invalidation efficiency. | |||
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 March 31, 2019. | This Internet-Draft will expire on April 3, 2019. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
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 . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Requirements Language and Terminology . . . . . . . . . . 3 | 1.1. Requirements Language and Terminology . . . . . . . . . . 3 | |||
1.2. Current NPDAO messaging . . . . . . . . . . . . . . . . . 4 | 1.2. Current NPDAO messaging . . . . . . . . . . . . . . . . . 4 | |||
1.3. Why NPDAO is important? . . . . . . . . . . . . . . . . . 4 | 1.3. Why NPDAO is important? . . . . . . . . . . . . . . . . . 5 | |||
2. Problems with current NPDAO messaging . . . . . . . . 5 | 2. Problems with current NPDAO messaging . . . . . . . . 6 | |||
2.1. Lost NPDAO due to link break to the previous parent . . . 5 | 2.1. Lost NPDAO due to link break to the previous parent . . . 6 | |||
2.2. Invalidate routes to dependent nodes . . . . . . . . . . 5 | 2.2. Invalidate routes of dependent nodes . . . . . . . . . . 6 | |||
2.3. Possible route downtime caused by async operation of | 2.3. Possible route downtime caused by async operation of | |||
NPDAO and DAO . . . . . . . . . . . . . . . . . . . . . . 5 | NPDAO and DAO . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Requirements for the NPDAO Optimization . . . . . . . . . . . 5 | 3. Requirements for the NPDAO Optimization . . . . . . . . . . . 6 | |||
3.1. Req#1: Tolerant to link failures to the previous | 3.1. Req#1: Remove messaging dependency on link to the | |||
parents . . . . . . . . . . . . . . . . . . . . . . . . . 5 | previous parent . . . . . . . . . . . . . . . 6 | |||
3.2. Req#2: Dependent nodes route invalidation on parent | 3.2. Req#2: Dependent nodes route invalidation on parent | |||
switching . . . . . . . . . . . . . . . . . . . . . . . . 6 | switching . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
3.3. Req#3: Route invalidation should not impact data traffic 6 | 3.3. Req#3: Route invalidation should not impact data traffic 7 | |||
4. Proposed changes to RPL signaling . . . . . . . . . . . . . . 6 | 4. Proposed changes to RPL signaling . . . . . . . . . . . . . . 7 | |||
4.1. Change in RPL route invalidation semantics . . . . . . . 6 | 4.1. Change in RPL route invalidation semantics . . . . . . . 7 | |||
4.2. Transit Information Option changes . . . . . . . . . . . 7 | 4.2. Transit Information Option changes . . . . . . . . . . . 7 | |||
4.3. Destination Cleanup Object (DCO) . . . . . . . . . . . . 8 | 4.3. Destination Cleanup Object (DCO) . . . . . . . . . . . . 8 | |||
4.3.1. Secure DCO . . . . . . . . . . . . . . . . . . . . . 9 | 4.3.1. Secure DCO . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.3.2. DCO Options . . . . . . . . . . . . . . . . . . . . . 9 | 4.3.2. DCO Options . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.3.3. Path Sequence number in the DCO . . . . . . . . . . . 9 | 4.3.3. Path Sequence number in the DCO . . . . . . . . . . . 10 | |||
4.3.4. Destination Cleanup Option Acknowledgement (DCO-ACK) 9 | 4.3.4. Destination Cleanup Option Acknowledgement (DCO-ACK) 10 | |||
4.3.5. Secure DCO-ACK . . . . . . . . . . . . . . . . . . . 10 | 4.3.5. Secure DCO-ACK . . . . . . . . . . . . . . . . . . . 11 | |||
4.4. Other considerations . . . . . . . . . . . . . . . . . . 11 | 4.4. Other considerations . . . . . . . . . . . . . . . . . . 12 | |||
4.4.1. Dependent Nodes invalidation . . . . . . . . . . . . 11 | 4.4.1. Dependent Nodes invalidation . . . . . . . . . . . . 12 | |||
4.4.2. NPDAO and DCO in the same network . . . . . . . . . . 11 | 4.4.2. NPDAO and DCO in the same network . . . . . . . . . . 12 | |||
4.4.3. DCO with multiple preferred parents . . . . . . . . . 11 | 4.4.3. DCO with multiple preferred parents . . . . . . . . . 12 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 11 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 12 | 8.2. Informative References . . . . . . . . . . . . . . . . . 14 | |||
Appendix A. Example DCO Messaging . . . . . . . . . . . . . . . 13 | Appendix A. Example Messaging . . . . . . . . . . . . . . . . . 14 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | A.1. Example DCO Messaging . . . . . . . . . . . . . . . . . . 14 | |||
A.2. Example DCO Messaging with multiple preferred parents . . 15 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 16 | ||||
1. Introduction | 1. Introduction | |||
RPL [RFC6550] specifies a proactive distance-vector based routing | RPL [RFC6550] (Routing Protocol for Low power and lossy networks) | |||
scheme. RPL has an optional messaging in the form of DAO | specifies a proactive distance-vector based routing scheme. RPL has | |||
(Destination Advertisement Object) messages using which the 6LBR can | an optional messaging in the form of DAO (Destination Advertisement | |||
learn route towards the nodes. In storing mode, DAO messages would | Object) messages using which the 6LBR (6Lo Border Router) and 6LR | |||
result in routing entries been created on all intermediate hops from | (6Lo Router) can learn route towards the downstream nodes. In | |||
the node's parent all the way towards the 6LBR. | storing mode, DAO messages would result in routing entries been | |||
created on all intermediate 6LRs from the node's parent all the way | ||||
towards the 6LBR. | ||||
RPL allows use of No-Path DAO (NPDAO) messaging to invalidate a | RPL allows use of No-Path DAO (NPDAO) messaging to invalidate a | |||
routing path corresponding to the given target, thus releasing | routing path corresponding to the given target, thus releasing | |||
resources utilized on that path. A NPDAO is a DAO message with route | resources utilized on that path. A NPDAO is a DAO message with route | |||
lifetime of zero, originates at the target node and always flows | lifetime of zero, originates at the target node and always flows | |||
upstream towards the 6LBR. This document explains the problems | upstream towards the 6LBR. This document explains the problems | |||
associated with the current use of NPDAO messaging and also discusses | associated with the current use of NPDAO messaging and also discusses | |||
the requirements for an optimized route invalidation messaging | the requirements for an optimized route invalidation messaging | |||
scheme. Further a new pro-active route invalidation message called | scheme. Further a new pro-active route invalidation message called | |||
as "Destination Cleanup Object (DCO)" is specified which fulfills | as "Destination Cleanup Object (DCO)" is specified which fulfills | |||
skipping to change at page 3, line 28 ¶ | skipping to change at page 3, line 37 ¶ | |||
The document only caters to the RPL's storing mode of operation | The document only caters to the RPL's storing mode of operation | |||
(MOP). The non-storing MOP does not require use of NPDAO for route | (MOP). The non-storing MOP does not require use of NPDAO for route | |||
invalidation since routing entries are not maintained on 6LRs. | invalidation since routing entries are not maintained on 6LRs. | |||
1.1. Requirements Language and Terminology | 1.1. Requirements Language and 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
DAO: Destination Advertisement Object | 6LR: 6LoWPAN Router. This is an intermediate 6lowpan router which | |||
allows traffic routing through itself in a multihop 6lo network. | ||||
DIO: DODAG Information Object | DAG: Directed Acyclic Graph. A directed graph having the property | |||
that all edges are oriented in such a way that no cycles exist. | ||||
Common Ancestor node: 6LR node which is the first common node on the | DODAG: Destination-oriented DAG. A DAG rooted at a single | |||
old and new path for the child node. | destination, i.e., at a single DAG root with no outgoing edges. | |||
6LBR: 6LoWPAN Border Router. A border router which is a DODAG root | ||||
and is the edge node for traffic flowing in and out of the 6lo | ||||
network. | ||||
DAO: Destination Advertisement Object. DAO messaging allows | ||||
downstream routes to the nodes to be established. | ||||
DIO: DODAG Information Object. DIO messaging allows upstream routes | ||||
to the 6LBR to be established. DIO messaging is initiated at the DAO | ||||
root. | ||||
Common Ancestor node: 6LR/6LBR node which is the first common node | ||||
between two paths of a target node. | ||||
NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. | NPDAO: No-Path DAO. A DAO message which has target with lifetime 0. | |||
DCO: Destination Cleanup Object, A new RPL control message type | DCO: Destination Cleanup Object, A new RPL control message type | |||
defined by this draft. | defined by this draft. DCO messaging improves proactive route | |||
invalidation in RPL. | ||||
Regular DAO: A DAO message with non-zero lifetime. | Regular DAO: A DAO message with non-zero lifetime. | |||
LLN: Low Power and Lossy Networks. | LLN: Low Power and Lossy Networks. | |||
Target Node: The node switching its parent whose routing adjacencies | Target Node: The node switching its parent whose routing adjacencies | |||
are updated (created/removed). | are updated (created/removed). | |||
This document also uses terminology described in [RFC6550]. | This document also uses terminology described in [RFC6550]. | |||
skipping to change at page 4, line 40 ¶ | skipping to change at page 5, line 30 ¶ | |||
\ ; | \ ; | |||
(D) | (D) | |||
/ \ | / \ | |||
/ \ | / \ | |||
/ \ | / \ | |||
(E) (F) | (E) (F) | |||
Figure 1: Sample topology | Figure 1: Sample topology | |||
Node (D) is connected via preferred parent (B). (D) has an alternate | Node (D) is connected via preferred parent (B). (D) has an alternate | |||
path via (C) towards the BR. Node (A) is the common ancestor for (D) | path via (C) towards the 6LBR. Node (A) is the common ancestor for | |||
for paths through (B)-(G) and (C)-(H). When (D) switches from (B) to | (D) for paths through (B)-(G) and (C)-(H). When (D) switches from | |||
(C), RPL allows sending NPDAO to (B) and regular DAO to (C). | (B) to (C), RPL allows sending NPDAO to (B) and regular DAO to (C). | |||
1.3. Why NPDAO is important? | 1.3. Why NPDAO is important? | |||
Nodes in LLNs may be resource constrained. There is limited memory | Nodes in LLNs may be resource constrained. There is limited memory | |||
available and routing entry records are one of the primary elements | available and routing entry records are one of the primary elements | |||
occupying dynamic memory in the nodes. Route invalidation helps 6LR | occupying dynamic memory in the nodes. Route invalidation helps 6LR | |||
nodes to decide which entries could be discarded to better achieve | nodes to decide which entries could be discarded to better achieve | |||
resource utilization. Thus it becomes necessary to have efficient | resource utilization. Thus it becomes necessary to have efficient | |||
route invalidation mechanism. Also note that a single parent switch | route invalidation mechanism. Also note that a single parent switch | |||
may result in a "sub-tree" switching from one parent to another. | may result in a "sub-tree" switching from one parent to another. | |||
skipping to change at page 5, line 4 ¶ | skipping to change at page 5, line 43 ¶ | |||
1.3. Why NPDAO is important? | 1.3. Why NPDAO is important? | |||
Nodes in LLNs may be resource constrained. There is limited memory | Nodes in LLNs may be resource constrained. There is limited memory | |||
available and routing entry records are one of the primary elements | available and routing entry records are one of the primary elements | |||
occupying dynamic memory in the nodes. Route invalidation helps 6LR | occupying dynamic memory in the nodes. Route invalidation helps 6LR | |||
nodes to decide which entries could be discarded to better achieve | nodes to decide which entries could be discarded to better achieve | |||
resource utilization. Thus it becomes necessary to have efficient | resource utilization. Thus it becomes necessary to have efficient | |||
route invalidation mechanism. Also note that a single parent switch | route invalidation mechanism. Also note that a single parent switch | |||
may result in a "sub-tree" switching from one parent to another. | may result in a "sub-tree" switching from one parent to another. | |||
Thus the route invalidation needs to be done on behalf of the sub- | Thus the route invalidation needs to be done on behalf of the sub- | |||
tree and not the switching node alone. In the above example, when | tree and not the switching node alone. In the above example, when | |||
Node (D) switches parent, the route invalidation needs to be done for | Node (D) switches parent, the route updates needs to be done for the | |||
(D), (E) and (F). Thus without efficient route invalidation, a 6LR | routing tables entries of (C),(H),(A),(G), and (B) with destination | |||
may have to hold a lot of stale route entries. | (D),(E) and (F). Without efficient route invalidation, a 6LR may | |||
have to hold a lot of stale route entries. | ||||
2. Problems with current NPDAO messaging | 2. Problems with current NPDAO messaging | |||
2.1. Lost NPDAO due to link break to the previous parent | 2.1. Lost NPDAO due to link break to the previous parent | |||
When a node switches its parent, the NPDAO is to be sent to its | When a node switches its parent, the NPDAO is to be sent to its | |||
previous parent and a regular DAO to its new parent. In cases where | previous parent and a regular DAO to its new parent. In cases where | |||
the node switches its parent because of transient or permanent parent | the node switches its parent because of transient or permanent parent | |||
link/node failure then the NPDAO message is bound to fail. | link/node failure then the NPDAO message is bound to fail. | |||
2.2. Invalidate routes to dependent nodes | 2.2. Invalidate routes of dependent nodes | |||
RPL does not specify how route invalidation will work for dependent | RPL does not specify how route invalidation will work for dependent | |||
nodes rooted at switching node, resulting in stale routing entries of | nodes rooted at switching node, resulting in stale routing entries of | |||
the dependent nodes. The only way for 6LR to invalidate the route | the dependent nodes. The only way for 6LR to invalidate the route | |||
entries for dependent nodes would be to use route lifetime expiry | entries for dependent nodes would be to use route lifetime expiry | |||
which could be substantially high for LLNs. | which could be substantially high for LLNs. | |||
In the example topology, when Node (D) switches its parent, Node (D) | In the example topology, when Node (D) switches its parent, Node (D) | |||
generates an NPDAO on its behalf. There is no NPDAO generated by | generates an NPDAO on its behalf. There is no NPDAO generated by the | |||
these child nodes through the previous path resulting in stale | dependent child nodes (E) and (F), through the previous path via (D) | |||
entries on nodes (B) and (G) for nodes (E) and (F). | to (B) and (G), resulting in stale entries on nodes (B) and (G) for | |||
nodes (E) and (F). | ||||
2.3. Possible route downtime caused by async operation of NPDAO and DAO | 2.3. Possible route downtime caused by async operation of NPDAO and DAO | |||
A switching node may generate both an NPDAO and DAO via two different | A switching node may generate both an NPDAO and DAO via two different | |||
paths at almost the same time. There is a possibility that an NPDAO | paths at almost the same time. There is a possibility that an NPDAO | |||
generated may invalidate the previous route and the regular DAO sent | generated may invalidate the previous route and the regular DAO sent | |||
via the new path gets lost on the way. This may result in route | via the new path gets lost on the way. This may result in route | |||
downtime impacting downward traffic for the switching node. | downtime impacting downward traffic for the switching node. | |||
In the example topology, consider Node (D) switches from parent (B) | In the example topology, consider Node (D) switches from parent (B) | |||
to (C). An NPDAO sent from previous route may invalidate the | to (C). An NPDAO sent via previous route may invalidate the previous | |||
existing route whereas there is no way to determine whether the new | route whereas there is no way to determine whether the new DAO has | |||
DAO has successfully updated the route entries on the new path. | successfully updated the route entries on the new path. | |||
3. Requirements for the NPDAO Optimization | 3. Requirements for the NPDAO Optimization | |||
3.1. Req#1: Tolerant to link failures to the previous parents | 3.1. Req#1: Remove messaging dependency on link to the previous parent | |||
When the switching node sends the NPDAO message to the previous | When the switching node sends the NPDAO message to the previous | |||
parent, it is normal that the link to the previous parent is prone to | parent, it is normal that the link to the previous parent is prone to | |||
failure. Therefore, it is required that the route invalidation does | failure (thats why the node decided to switch). Therefore, it is | |||
not depend on the previous link which is prone to failure. The | required that the route invalidation does not depend on the previous | |||
previous link referred here represents the link between the node and | link which is prone to failure. The previous link referred here | |||
its previous parent (from whom the node is now disassociating). | represents the link between the node and its previous parent (from | |||
whom the node is now disassociating). | ||||
3.2. Req#2: Dependent nodes route invalidation on parent switching | 3.2. Req#2: Dependent nodes route invalidation on parent switching | |||
It should be possible to do route invalidation for dependent nodes | It should be possible to do route invalidation for dependent nodes | |||
rooted at the switching node. | rooted at the switching node. | |||
3.3. Req#3: Route invalidation should not impact data traffic | 3.3. Req#3: Route invalidation should not impact data traffic | |||
While sending the NPDAO and DAO messages, it is possible that the | While sending the NPDAO and DAO messages, it is possible that the | |||
NPDAO successfully invalidates the previous path, while the newly | NPDAO successfully invalidates the previous path, while the newly | |||
skipping to change at page 6, line 33 ¶ | skipping to change at page 7, line 30 ¶ | |||
4.1. Change in RPL route invalidation semantics | 4.1. Change in RPL route invalidation semantics | |||
As described in Section 1.2, the NPDAO originates at the node | As described in Section 1.2, the NPDAO originates at the node | |||
switching the parent and traverses upstream towards the root. In | switching the parent and traverses upstream towards the root. In | |||
order to solve the problems as mentioned in Section 2, the draft adds | order to solve the problems as mentioned in Section 2, the draft adds | |||
new pro-active route invalidation message called as "Destination | new pro-active route invalidation message called as "Destination | |||
Cleanup Object" (DCO) that originates at a common ancestor node | Cleanup Object" (DCO) that originates at a common ancestor node | |||
between the new and old path. The common ancestor node generates a | between the new and old path. The common ancestor node generates a | |||
DCO in response to the change in the next-hop on receiving a regular | DCO in response to the change in the next-hop on receiving a regular | |||
DAO for the target. | DAO with updated path sequence for the target. | |||
In Figure 1, when node D decides to switch the path from B to C, it | In Figure 1, when node D decides to switch the path from B to C, it | |||
sends a regular DAO to node C with reachability information | sends a regular DAO to node C with reachability information | |||
containing target as address of D and a incremented path sequence | containing target as address of D and a incremented path sequence | |||
number. Node C will update the routing table based on the | number. Node C will update the routing table based on the | |||
reachability information in DAO and in turn generate another DAO with | reachability information in DAO and in turn generate another DAO with | |||
the same reachability information and forward it to H. Node H also | the same reachability information and forward it to H. Node H also | |||
follows the same procedure as Node C and forwards it to node A. When | follows the same procedure as Node C and forwards it to node A. When | |||
node A receives the regular DAO, it finds that it already has a | node A receives the regular DAO, it finds that it already has a | |||
routing table entry on behalf of the target address of node D. It | routing table entry on behalf of the target address of node D. It | |||
finds however that the next hop information for reaching node D has | finds however that the next hop information for reaching node D has | |||
changed i.e. the node D has decided to change the paths. In this | changed i.e. the node D has decided to change the paths. In this | |||
case, Node A which is the common ancestor node for node D along the | case, Node A which is the common ancestor node for node D along the | |||
two paths (previous and new), may generate a DCO which traverses | two paths (previous and new), should generate a DCO which traverses | |||
downwards in the network. The document in the subsequent section | downwards in the network. | |||
will explain the message format changes to handle this downward flow | ||||
of NPDAO. | ||||
4.2. Transit Information Option changes | 4.2. Transit Information Option changes | |||
Every RPL message is divided into base message fields and additional | Every RPL message is divided into base message fields and additional | |||
Options. The base fields apply to the message as a whole and options | Options. The base fields apply to the message as a whole and options | |||
are appended to add message/use-case specific attributes. As an | are appended to add message/use-case specific attributes. As an | |||
example, a DAO message may be attributed by one or more "RPL Target" | example, a DAO message may be attributed by one or more "RPL Target" | |||
options which specifies the reachability information for the given | options which specify the reachability information for the given | |||
targets. Similarly, a Transit Information option may be associated | targets. Similarly, a Transit Information option may be associated | |||
with a set of RPL Target options. | with a set of RPL Target options. | |||
The draft proposes a change in Transit Information option to contain | The draft proposes a change in Transit Information option to contain | |||
"Invalidate previous route" (I) bit. This I-bit signals the common | "Invalidate previous route" (I) bit. This I-bit signals the common | |||
ancestor node to generate a DCO on behalf of the target node. The | ancestor node to generate a DCO on behalf of the target node. The | |||
I-bit is carried in the transit information option which augments the | I-bit is carried in the transit information option which augments the | |||
reachability information for a given set of RPL Target(s). Transit | reachability information for a given set of RPL Target(s). Transit | |||
information option should be carried in the DAO message with I-bit | information option should be carried in the DAO message with I-bit | |||
set in case route invalidation is sought for the correspondig | set in case route invalidation is sought for the correspondig | |||
skipping to change at page 8, line 36 ¶ | skipping to change at page 9, line 29 ¶ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Option(s)... | | Option(s)... | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 3: DCO base object | Figure 3: DCO base object | |||
RPLInstanceID: 8-bit field indicating the topology instance | RPLInstanceID: 8-bit field indicating the topology instance | |||
associated with the DODAG, as learned from the DIO. | associated with the DODAG, as learned from the DIO. | |||
K: The 'K' flag indicates that the recipient is expected to send a | K: The 'K' flag indicates that the recipient is expected to send a | |||
DCO-ACK back. | DCO-ACK back. If the DCO-ACK is not received even after setting the | |||
'K', an implementation may choose to retry the DCO at a later time. | ||||
The number of retries are implementation and deployment dependent. | ||||
This document recommends using retries similar to what will be set | ||||
for DAO-ACK handling. | ||||
D: The 'D' flag indicates that the DODAGID field is present. This | D: The 'D' flag indicates that the DODAGID field is present. This | |||
flag MUST be set when a local RPLInstanceID is used. | flag MUST be set when a local RPLInstanceID is used. | |||
Flags: The 6 bits remaining unused in the Flags field are reserved | Flags: The 6 bits remaining unused in the Flags field are reserved | |||
for future use. These bits MUST be initialized to zero by the sender | for future use. These bits MUST be initialized to zero by the sender | |||
and MUST be ignored by the receiver. | and MUST be ignored by the receiver. | |||
Reserved: 8-bit unused field. The field MUST be initialized to zero | Reserved: 8-bit unused field. The field MUST be initialized to zero | |||
by the sender and MUST be ignored by the receiver. | by the sender and MUST be ignored by the receiver. | |||
DCOSequence: Incremented at each unique DCO message from a node and | DCOSequence: Incremented at each unique DCO message from a node and | |||
echoed in the DCO-ACK message. | echoed in the DCO-ACK message. The initial DCOSequence can be chosen | |||
randomly by the node. | ||||
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | |||
uniquely identifies a DODAG. This field is only present when the 'D' | uniquely identifies a DODAG. This field is only present when the 'D' | |||
flag is set. This field is typically only present when a local | flag is set. This field is typically only present when a local | |||
RPLInstanceID is in use, in order to identify the DODAGID that is | RPLInstanceID is in use, in order to identify the DODAGID that is | |||
associated with the RPLInstanceID. When a global RPLInstanceID is in | associated with the RPLInstanceID. When a global RPLInstanceID is in | |||
use, this field need not be present. Unassigned bits of the DCO Base | use, this field need not be present. Unassigned bits of the DCO Base | |||
are reserved. They MUST be set to zero on transmission and MUST be | are reserved. They MUST be set to zero on transmission and MUST be | |||
ignored on reception. | ignored on reception. | |||
skipping to change at page 10, line 30 ¶ | skipping to change at page 11, line 30 ¶ | |||
RPLInstanceID: 8-bit field indicating the topology instance | RPLInstanceID: 8-bit field indicating the topology instance | |||
associated with the DODAG, as learned from the DIO. | associated with the DODAG, as learned from the DIO. | |||
D: The 'D' flag indicates that the DODAGID field is present. This | D: The 'D' flag indicates that the DODAGID field is present. This | |||
flag MUST be set when a local RPLInstanceID is used. | flag MUST be set when a local RPLInstanceID is used. | |||
Reserved: 7-bit unused field. The field MUST be initialized to zero | Reserved: 7-bit unused field. The field MUST be initialized to zero | |||
by the sender and MUST be ignored by the receiver. | by the sender and MUST be ignored by the receiver. | |||
DCOSequence: Incremented at each unique DCO message from a node and | DCOSequence: The DCOSequence in DCO-ACK is copied from the | |||
echoed in the DCO-ACK message. | DCOSequence received in the DCO message. | |||
Status: Indicates the completion. Status 0 is defined as unqualified | Status: Indicates the completion. Status 0 is defined as unqualified | |||
acceptance in this specification. The remaining status values are | acceptance in this specification. The remaining status values are | |||
reserved as rejection codes. | reserved as rejection codes. | |||
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | |||
uniquely identifies a DODAG. This field is only present when the 'D' | uniquely identifies a DODAG. This field is only present when the 'D' | |||
flag is set. This field is typically only present when a local | flag is set. This field is typically only present when a local | |||
RPLInstanceID is in use, in order to identify the DODAGID that is | RPLInstanceID is in use, in order to identify the DODAGID that is | |||
associated with the RPLInstanceID. When a global RPLInstanceID is in | associated with the RPLInstanceID. When a global RPLInstanceID is in | |||
skipping to change at page 11, line 30 ¶ | skipping to change at page 12, line 30 ¶ | |||
Even with the changed semantics, the current NPDAO mechanism in | Even with the changed semantics, the current NPDAO mechanism in | |||
[RFC6550] can still be used, for example, when the route lifetime | [RFC6550] can still be used, for example, when the route lifetime | |||
expiry of the target happens or when the node simply decides to | expiry of the target happens or when the node simply decides to | |||
gracefully terminate the RPL session on graceful node shutdown. | gracefully terminate the RPL session on graceful node shutdown. | |||
Moreover a deployment can have a mix of nodes supporting the proposed | Moreover a deployment can have a mix of nodes supporting the proposed | |||
DCO and the existing NPDAO mechanism. | DCO and the existing NPDAO mechanism. | |||
4.4.3. DCO with multiple preferred parents | 4.4.3. DCO with multiple preferred parents | |||
[RFC6550] allows a node to select multiple preferred parents for | [RFC6550] allows a node to select multiple preferred parents for | |||
route establishment. DCO can be used for route invalidation in such | route establishment. Section 9.2.1 of [RFC6550] specifies, "All DAOs | |||
cases as well. There are no changes required in the DCO messaging to | generated at the same time for the same Target MUST be sent with the | |||
support multiple preferred parents and DCO should work seemlessly in | same Path Sequence in the Transit Information". Thus a DAO message | |||
such scenarios. | with the same path sequence MUST be sent to all the parents. | |||
Subsequently when route invalidation has to be initiated, RPL | ||||
mentions that an NPDAO must be initiated with updated path sequence | ||||
to all the routes to be invalidated. | ||||
With DCO, the Target node itself does not initiate the route | ||||
invalidation and it is left to the common ancestor node. A common | ||||
ancestor node when it discovers an updated DAO from a new next-hop, | ||||
it initiates a DCO. With multiple preferred parents, this handling | ||||
does not change. But in this case it is recommended that an | ||||
implementation initiates a DCO after a time period such that the | ||||
common ancestor node may receive updated DAOs from all possible next- | ||||
hops. This will help to reduce DCO control overhead i.e., the common | ||||
ancestor can wait for updated DAOs from all possible directions | ||||
before initiating a DCO for route invalidation. The time period for | ||||
initiating a DCO could be based on the depth of the network. After | ||||
timeout, the DCO needs to be generated for all the next-hops for whom | ||||
the route invalidation needs to be done. | ||||
5. Acknowledgements | 5. Acknowledgements | |||
Many thanks to Cenk Gundogan, Simon Duquennoy, Georgios | Many thanks to Cenk Gundogan, Simon Duquennoy, Georgios | |||
Papadopoulous, Peter Van Der Stok for their review and comments. | Papadopoulous, Peter Van Der Stok for their review and comments. | |||
6. IANA Considerations | 6. IANA Considerations | |||
IANA is requested to allocate new ICMPv6 RPL control codes in RPL | IANA is requested to allocate new ICMPv6 RPL control codes in RPL | |||
[RFC6550] for DCO and DCO-ACK messages. | [RFC6550] for DCO and DCO-ACK messages. | |||
skipping to change at page 12, line 24 ¶ | skipping to change at page 13, line 34 ¶ | |||
| 0x85 | Secure Destination Cleanup Object | This | | | 0x85 | Secure Destination Cleanup Object | This | | |||
| | Acknowledgement | document | | | | Acknowledgement | document | | |||
+------+---------------------------------------------+--------------+ | +------+---------------------------------------------+--------------+ | |||
IANA is requested to allocate bit 18 in the Transit Information | IANA is requested to allocate bit 18 in the Transit Information | |||
Option defined in RPL [RFC6550] section 6.7.8 for Invalidate route | Option defined in RPL [RFC6550] section 6.7.8 for Invalidate route | |||
'I' flag. | 'I' flag. | |||
7. Security Considerations | 7. Security Considerations | |||
The document adds new messages (DCO, DCO-ACK) which are similar to | All RPL messages support a secure version of messages which allows | |||
existing RPL messages such as DAO, DAO-ACK. Secure versions of DCO | integrity protection using either a MAC or a signature. Optionally, | |||
and DCO-ACK are added similar to other RPL messages (such as DAO, | secured RPL messages also have encryption protection for | |||
DAO-ACK). For general RPL security considerations, see [RFC6550]. | confidentiality. | |||
The document adds new messages (DCO, DCO-ACK) which are syntactically | ||||
similar to existing RPL messages such as DAO, DAO-ACK. Secure | ||||
versions of DCO and DCO-ACK are added similar to other RPL messages | ||||
(such as DAO, DAO-ACK). | ||||
RPL supports three security modes as mentioned in Section 10.1 of | ||||
[RFC6550]: | ||||
1. Unsecured: In this mode, it is expected that the RPL control | ||||
messages are secured by other security mechanisms, such as link- | ||||
layer security. In this mode, the RPL control messages, | ||||
including DCO, DCO-ACK, do not have Security sections. | ||||
2. Preinstalled: In this mode, RPL uses secure messages. Thus | ||||
secure versions of DCO, DCO-ACK MUST be used in this mode. | ||||
3. Authenticated: In this mode, RPL uses secure messages. Thus | ||||
secure versions of DCO, DCO-ACK MUST be used in this mode. | ||||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative References | |||
[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>. | |||
skipping to change at page 13, line 5 ¶ | skipping to change at page 14, line 31 ¶ | |||
DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
<https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
8.2. Informative References | 8.2. Informative References | |||
[I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
of IEEE 802.15.4", draft-ietf-6tisch-architecture-14 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-14 (work | |||
in progress), April 2018. | in progress), April 2018. | |||
Appendix A. Example DCO Messaging | Appendix A. Example Messaging | |||
A.1. Example DCO Messaging | ||||
In Figure 1, node (D) switches its parent from (B) to (C). The | In Figure 1, node (D) switches its parent from (B) to (C). The | |||
sequence of actions is as follows: | sequence of actions is as follows: | |||
1. Node D switches its parent from node B to node C | 1. Node D switches its parent from node B to node C | |||
2. D sends a regular DAO(tgt=D,pathseq=x+1,I_flag=1) in the updated | 2. D sends a regular DAO(tgt=D,pathseq=x+1,I_flag=1) in the updated | |||
path to C | path to C | |||
3. C checks for routing entry on behalf of D, since it cannot find | 3. C checks for routing entry on behalf of D, since it cannot find | |||
an entry on behalf of D it creates a new routing entry and | an entry on behalf of D it creates a new routing entry and | |||
forwards the reachability information of the target D to H in a | forwards the reachability information of the target D to H in a | |||
skipping to change at page 13, line 40 ¶ | skipping to change at page 15, line 19 ¶ | |||
and forwards the (un)reachability information downstream to B. | and forwards the (un)reachability information downstream to B. | |||
7. Similarly, B processes the DCO by invalidating the routing entry | 7. Similarly, B processes the DCO by invalidating the routing entry | |||
of target D and forwards the (un)reachability information | of target D and forwards the (un)reachability information | |||
downstream to D. | downstream to D. | |||
8. D ignores the DCO since the target is itself. | 8. D ignores the DCO since the target is itself. | |||
9. The propagation of the DCO will stop at any node where the node | 9. The propagation of the DCO will stop at any node where the node | |||
does not have an routing information associated with the target. | does not have an routing information associated with the target. | |||
If the routing information is present and the pathseq associated | If the routing information is present and the pathseq associated | |||
is not older, then still the DCO is dropped. | is not older, then still the DCO is dropped. | |||
A.2. Example DCO Messaging with multiple preferred parents | ||||
(6LBR) | ||||
| | ||||
| | ||||
| | ||||
(N11) | ||||
/ \ | ||||
/ \ | ||||
/ \ | ||||
(N21) (N22) | ||||
/ / \ | ||||
/ / \ | ||||
/ / \ | ||||
(N31) (N32) (N33) | ||||
: | / | ||||
: | / | ||||
: | / | ||||
(N41) | ||||
Figure 5: Sample topology 2 | ||||
In Figure 5, node (N41) selects multiple preferred parents (N32) and | ||||
(N33). The sequence of actions is as follows: | ||||
1. (N41) sends DAO(tgt=N41,PS=x,I_flag=1) to (N32) and (N33). Here | ||||
I_flag refers to the Invalidation flag and PS refers to Path | ||||
Sequence in Transit Information option. | ||||
2. (N32) sends DAO(tgt=N41,PS=x,I_flag=1) to (N22). (N33) also | ||||
sends DAO(tgt=N41,PS=x,I_flag=1) to (N22). (N22) learns multiple | ||||
routes for the same destination (N41) through multiple next-hops. | ||||
The route table at N22 should contain (Dst,NextHop,PS): { | ||||
(N41,N32,x), (N41,N33,x) }. | ||||
3. (N22) sends DAO(tgt=N41,PS=x,I_flag=1) to (N11). | ||||
4. (N11) sends DAO(tgt=N41,PS=x,I_flag=1) to (6LBR). Thus the | ||||
complete path is established. | ||||
5. (N41) decides to change preferred parent set from { N32, N33 } to | ||||
{ N31, N32 }. | ||||
6. (N41) sends DAO(tgt=N41,PS=x+1,I_flag=1) to (N32). (N41) sends | ||||
DAO(tgt=N41,PS=x+1,I_flag=1) to (N31). | ||||
7. (N32) sends DAO(tgt=N41,PS=x+1,I_flag=1) to (N22). (N22) has | ||||
multiple routes to destination (N41). It sees that a new path | ||||
sequence for Target=N41 is received and thus it waits for pre- | ||||
determined time period to invalidate another route | ||||
{(N41),(N33),x}. After time period, (N22) sends | ||||
DCO(tgt=N41,PS=x+1) to (N33). | ||||
Authors' Addresses | Authors' Addresses | |||
Rahul Arvind Jadhav (editor) | Rahul Arvind Jadhav (editor) | |||
Huawei | Huawei | |||
Kundalahalli Village, Whitefield, | Kundalahalli Village, Whitefield, | |||
Bangalore, Karnataka 560037 | Bangalore, Karnataka 560037 | |||
India | India | |||
Phone: +91-080-49160700 | Phone: +91-080-49160700 | |||
Email: rahul.ietf@gmail.com | Email: rahul.ietf@gmail.com | |||
End of changes. 33 change blocks. | ||||
86 lines changed or deleted | 197 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |