draft-ietf-roll-efficient-npdao-00.txt | draft-ietf-roll-efficient-npdao-01.txt | |||
---|---|---|---|---|
ROLL R. Jadhav, Ed. | ROLL R. Jadhav, Ed. | |||
Internet-Draft R. Sahoo | Internet-Draft R. Sahoo | |||
Intended status: Standards Track Z. Cao | Intended status: Standards Track Z. Cao | |||
Expires: December 28, 2017 Huawei Tech | Expires: April 20, 2018 Huawei Tech | |||
June 26, 2017 | October 17, 2017 | |||
No-Path DAO modifications | No-Path DAO modifications | |||
draft-ietf-roll-efficient-npdao-00 | draft-ietf-roll-efficient-npdao-01 | |||
Abstract | Abstract | |||
This document describes the problems associated with the use of No- | This document describes the problems associated with the use of No- | |||
Path DAO messaging in RPL and a signaling changes to improve route | Path DAO messaging in RPL and a signaling changes to improve route | |||
invalidation efficiency. | 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 http://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 December 28, 2017. | This Internet-Draft will expire on April 20, 2018. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2017 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 | |||
(http://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 . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
skipping to change at page 2, line 25 ¶ | skipping to change at page 2, line 25 ¶ | |||
node . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | node . . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2.3. Route downtime caused by asynchronous operation of | 2.3. Route downtime caused by asynchronous operation of | |||
NPDAO and DAO . . . . . . . . . . . . . . . . . . . . . . 6 | NPDAO and DAO . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. Requirements for the No-Path DAO Optimization . . . . . . . . 6 | 3. Requirements for the No-Path DAO Optimization . . . . . . . . 6 | |||
3.1. Req#1: Tolerant to the link failures to the previous | 3.1. Req#1: Tolerant to the link failures to the previous | |||
parents . . . . . . . . . . . . . . . . . . . . . . . . . 6 | parents . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.2. Req#2: Dependent nodes route invalidation on parent | 3.2. Req#2: Dependent nodes route invalidation on parent | |||
switching . . . . . . . . . . . . . . . . . . . . . . . . 6 | switching . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3.3. Req#3: No impact on traffic while NP-DAO operation in | 3.3. Req#3: No impact on traffic while NP-DAO operation in | |||
progress . . . . . . . . . . . . . . . . . . . . . . . . 6 | progress . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4. Proposed changes to NPDAO signaling . . . . . . . . . . . . . 7 | 4. Proposed changes to RPL signaling . . . . . . . . . . . . . . 7 | |||
4.1. Change in NPDAO semantics . . . . . . . . . . . . . . . . 7 | 4.1. Change in NPDAO semantics . . . . . . . . . . . . . . . . 7 | |||
4.2. DAO message format changes . . . . . . . . . . . . . . . 7 | 4.2. DAO message format changes . . . . . . . . . . . . . . . 7 | |||
4.2.1. Path Sequence number in the reverse NPDAO . . . . . . 9 | 4.3. Destination Cleanup Object (DCO) . . . . . . . . . . . . 8 | |||
4.3. Example messaging . . . . . . . . . . . . . . . . . . . . 9 | 4.3.1. DCO Options . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.4. Other considerations . . . . . . . . . . . . . . . . . . 10 | 4.3.2. Path Sequence number in the DCO . . . . . . . . . . . 10 | |||
4.4.1. Dependent Nodes invalidation . . . . . . . . . . . . 10 | 4.3.3. Destination Cleanup Option Acknowledgement (DCO-ACK) 10 | |||
5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 4.4. Example messaging . . . . . . . . . . . . . . . . . . . . 11 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 4.5. Other considerations . . . . . . . . . . . . . . . . . . 12 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 4.5.1. Dependent Nodes invalidation . . . . . . . . . . . . 12 | |||
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 13 | |||
8.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 11 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 13 | |||
Appendix A. Additional Stuff . . . . . . . . . . . . . . . . . . 11 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 13 | |||
8.2. Informative References . . . . . . . . . . . . . . . . . 14 | ||||
Appendix A. Additional Stuff . . . . . . . . . . . . . . . . . . 14 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 14 | ||||
1. Introduction | 1. Introduction | |||
RPL [RFC6550] specifies a proactive distance-vector based routing | RPL [RFC6550] specifies a proactive distance-vector based routing | |||
scheme. The specification has an optional messaging in the form of | scheme. The specification has an optional messaging in the form of | |||
DAO messages using which the 6LBR can learn route towards any of the | DAO messages using which the 6LBR can learn route towards any of the | |||
nodes. In storing mode, DAO messages would result in routing entries | nodes. In storing mode, DAO messages would result in routing entries | |||
been created on all intermediate hops from the node's parent all the | been created on all intermediate hops from the node's parent all the | |||
way towards the 6LBR. | 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 No-Path DAO is a DAO message with | resources utilized on that path. A No-Path DAO is a DAO message with | |||
route lifetime of zero, signaling route invalidation for the given | route lifetime of zero, originates at the target node and always | |||
target. This document explains the problems associated with the | flows upstream towards the 6LBR, signaling route invalidation for the | |||
current use of NPDAO messaging and also discusses the requirements | given target. This document explains the problems associated with | |||
for an optimized No-Path DAO messaging scheme. The signalling change | the current use of NPDAO messaging and also discusses the | |||
specified fulfills all mentioned requirements of an optimized NPDAO | requirements for an optimized No-Path DAO messaging scheme. Further | |||
messaging. | a new pro-active route invalidation message called as "Destination | |||
Cleanup Object (DCO)" is specified which fulfills all mentioned | ||||
requirements of an optimized route invalidation messaging. | ||||
6TiSCH architecture [I-D.ietf-6tisch-architecture] leverages RPL and | 6TiSCH architecture [I-D.ietf-6tisch-architecture] leverages RPL and | |||
specifies use of non-storing and storing MOP for its routing | specifies use of non-storing and storing MOP for its routing | |||
operation. Thus an improvement in NPDAO messaging will help optimize | operation. Thus an improvement in route invalidation will help | |||
6TiSCH based networks. | optimize 6TiSCH based networks. | |||
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]. | |||
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. | |||
Common Ancestor node: 6LR node which is the first common node on the | Common Ancestor node: 6LR node which is the first common node on the | |||
old and new path for the child node. | old and new path for the child 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. | |||
Reverse NPDAO: A No-Path DAO message which traverses downstream in | DCO: A new RPL control message type defined by this specification and | |||
the network. | stands for Destination Cleanup Object. | |||
Regular DAO: A DAO message with non-zero lifetime. | Regular DAO: A DAO message with non-zero lifetime. | |||
This document also uses terminology described in [RFC6550]. | This document also uses terminology described in [RFC6550]. | |||
1.2. Current No-Path DAO messaging | 1.2. Current No-Path DAO messaging | |||
RPL introduced No-Path DAO messaging in the storing mode so that the | RPL introduced No-Path DAO messaging in the storing mode so that the | |||
node switching its current parent can inform its parents and | node switching its current parent can inform its parents and | |||
ancestors to invalidate the existing route. Subsequently parents or | ancestors to invalidate the existing route. Subsequently parents or | |||
skipping to change at page 6, line 49 ¶ | skipping to change at page 7, line 4 ¶ | |||
required that the routing entries to the dependent nodes of the | required that the routing entries to the dependent nodes of the | |||
switching node will be updated accordingly on the previous parents | switching node will be updated accordingly on the previous parents | |||
and other relevant upstream nodes. | and other relevant upstream nodes. | |||
3.3. Req#3: No impact on traffic while NP-DAO operation in progress | 3.3. Req#3: No impact on traffic while NP-DAO operation in progress | |||
While sending the NP-DAO and DAO messages, it is possible that the | While sending the NP-DAO and DAO messages, it is possible that the | |||
NP-DAO successfully invalidates the previous path, while the newly | NP-DAO successfully invalidates the previous path, while the newly | |||
sent DAO gets lost (new path not set up successfully). This will | sent DAO gets lost (new path not set up successfully). This will | |||
result into downstream unreachability to the current switching node. | result into downstream unreachability to the current switching node. | |||
Therefore, it is desirable that the NP-DAO is synchronized with the | Therefore, it is desirable that the NP-DAO is synchronized with the | |||
DAO to avoid the risk of route downtime. | DAO to avoid the risk of route downtime. | |||
4. Proposed changes to NPDAO signaling | 4. Proposed changes to RPL signaling | |||
4.1. Change in NPDAO semantics | 4.1. Change in NPDAO semantics | |||
As described in Section 1.2, currently the NPDAO originates at the | As described in Section 1.2, the NPDAO originates at the node | |||
node switching the parent and traverses upstream towards the root. | switching the parent and traverses upstream towards the root. In | |||
In order to solve the problems as mentioned in Section 2, the draft | order to solve the problems as mentioned in Section 2, the draft | |||
proposes to change the way NPDAO originates and traverses the | proposes to add new pro-active route invalidation message called as | |||
network. The proposed NPDAO originates at a common ancestor node | "Destination Cleanup Object" (DCO) that originates at a common | |||
between the new and old path. The trigger for the common ancestor | ancestor node between the new and old path. The trigger for the | |||
node to generate this NPDAO is the change in the next hop for the | common ancestor node to generate this DCO is the change in the next | |||
node on reception of an update message in the form of regular DAO for | hop for the target on reception of an update message in the form of | |||
the target. | regular DAO for the target. | |||
In the Figure 1, when node D decides to switch the path from B to C, | In the 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 | it 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 an NPDAO which traverses | two paths (previous and new), may generate a DCO which traverses | |||
downwards in the network. The document in the subsequent section | downwards in the network. The document in the subsequent section | |||
will explain the message format changes to handle this downward flow | will explain the message format changes to handle this downward flow | |||
of NPDAO. | of NPDAO. | |||
4.2. DAO message format changes | 4.2. DAO message format 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 specifies 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 DAO message to contain "Invalidate | The draft proposes a change in DAO message to contain "Invalidate | |||
previous route" (I) bit. This I-bit which is carried in regular DAO | previous route" (I) bit. This I-bit which is carried in regular DAO | |||
message, signals the common ancestor node to generate a downstream | message, signals the common ancestor node to generate a DCO on behalf | |||
NPDAO on behalf of the target node. The I-bit is carried in the | of the target node. The I-bit is carried in the transit container | |||
transit container option which augments the reachability information | option which augments the reachability information for a given set of | |||
for a given set of RPL Target(s). | RPL Target(s). | |||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type = 0x06 | Option Length |E|I| Flags | Path Control | | | Type = 0x06 | Option Length |E|I| Flags | Path Control | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Path Sequence | Path Lifetime | | | | Path Sequence | Path Lifetime | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
+ + | + + | |||
skipping to change at page 8, line 27 ¶ | skipping to change at page 8, line 29 ¶ | |||
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Updated Transit Information Option (New I flag added) | Figure 2: Updated Transit Information Option (New I flag added) | |||
I (Invalidate previous route) bit: 1 bit flag. The 'I' flag is set | I (Invalidate previous route) bit: 1 bit flag. The 'I' flag is set | |||
by the target node to indicate that it wishes to invalidate the | by the target node to indicate that it wishes to invalidate the | |||
previous route by a common ancestor node between the two paths. | previous route by a common ancestor node between the two paths. | |||
The NPDAO thus generated by the common ancestor node needs to | 4.3. Destination Cleanup Object (DCO) | |||
traverse downstream. An additional flag called as "Reverse NPDAO" | ||||
(R) is added in the base DAO object to signal this change. | A new ICMPv6 RPL control message type is defined by this | |||
specification called as "Destination Cleanup Object" (DCO), which is | ||||
used for proactive cleanup of state and routing information held on | ||||
behalf of the target node by 6LRs. The DCO message always traverses | ||||
downstream and cleans up route information and other state | ||||
information associated with the given target. | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| RPLInstanceID |K|D|R| Flags | Reserved | DAOSequence | | | RPLInstanceID |K|D| Flags | Reserved | DCOSequence | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+ DODAGID* + | + DODAGID(optional) + | |||
| | | | | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Option(s)... | | Option(s)... | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
Figure 3: Updated DAO base object (New R flag added) | Figure 3: DCO base object | |||
R (Reverse DAO) bit: 1 bit flag. The 'R' flag is used to signal that | RPLInstanceID: 8-bit field indicating the topology instance | |||
the DAO traverses downwards. | associated with the DODAG, as learned from the DIO. | |||
4.2.1. Path Sequence number in the reverse NPDAO | K: The 'K' flag indicates that the recipient is expected to send a | |||
DCO-ACK back. | ||||
Every DAO message may contain a Path Sequence in the transit | D: The 'D' flag indicates that the DODAGID field is present. This | |||
information option to identify the freshness of the DAO message. The | flag MUST be set when a local RPLInstanceID is used. | |||
Path Sequence in the downward NPDAO generated by common ancestor | ||||
should use the same Path Sequence number present in the regular DAO | ||||
message. | ||||
4.3. Example messaging | Flags: The 6 bits remaining unused in the Flags field are reserved | |||
for flags. The field MUST be initialized to zero by the sender and | ||||
MUST be ignored by the receiver. | ||||
Reserved: 8-bit unused field. The field MUST be initialized to zero | ||||
by the sender and MUST be ignored by the receiver. | ||||
DCOSequence: Incremented at each unique DCO message from a node and | ||||
echoed in the DCO-ACK message. | ||||
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | ||||
uniquely identifies a DODAG. This field is only present when the 'D' | ||||
flag is set. This field is typically only present when a local | ||||
RPLInstanceID is in use, in order to identify the DODAGID that is | ||||
associated with the RPLInstanceID. When a global RPLInstanceID is in | ||||
use, this field need not be present. Unassigned bits of the DAO Base | ||||
are reserved. They MUST be set to zero on transmission and MUST be | ||||
ignored on reception. | ||||
4.3.1. DCO Options | ||||
The DCO message MAY carry valid options. This specification allows | ||||
for the DCO message to carry the following options: | ||||
0x00 Pad1 | ||||
0x01 PadN | ||||
0x05 RPL Target | ||||
0x06 Transit Information | ||||
0x09 RPL Target Descriptor | ||||
The DCO carries a Target option and an associated Transit Information | ||||
option with a lifetime of 0x00000000 to indicate a loss of | ||||
reachability to that Target. | ||||
4.3.2. Path Sequence number in the DCO | ||||
A DCO message may contain a Path Sequence in the transit information | ||||
option to identify the freshness of the DCO message. The Path | ||||
Sequence in the DCO and should use the same Path Sequence number | ||||
present in the regular DAO message when the DCO is generated in | ||||
response to DAO message. | ||||
4.3.3. Destination Cleanup Option Acknowledgement (DCO-ACK) | ||||
The DCO-ACK message is sent as a unicast packet by a DCO recipient in | ||||
response to a unicast DCO message. | ||||
0 1 2 3 | ||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| RPLInstanceID |D| Reserved | DCOSequence | Status | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | | ||||
+ + | ||||
| | | ||||
+ DODAGID(optional) + | ||||
| | | ||||
+ + | ||||
| | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
Figure 4: DCO-ACK base object | ||||
RPLInstanceID: 8-bit field indicating the topology instance | ||||
associated with the DODAG, as learned from the DIO. | ||||
D: The 'D' flag indicates that the DODAGID field is present. This | ||||
flag MUST be set when a local RPLInstanceID is used. | ||||
Reserved: 7-bit unused field. The field MUST be initialized to zero | ||||
by the sender and MUST be ignored by the receiver. | ||||
DCOSequence: Incremented at each unique DCO message from a node and | ||||
echoed in the DCO-ACK message. | ||||
Status: Indicates the completion. Status 0 is defined as unqualified | ||||
acceptance in this specification. The remaining status values are | ||||
reserved as rejection codes. | ||||
DODAGID (optional): 128-bit unsigned integer set by a DODAG root that | ||||
uniquely identifies a DODAG. This field is only present when the 'D' | ||||
flag is set. This field is typically only present when a local | ||||
RPLInstanceID is in use, in order to identify the DODAGID that is | ||||
associated with the RPLInstanceID. When a global RPLInstanceID is in | ||||
use, this field need not be present. Unassigned bits of the DAO Base | ||||
are reserved. They MUST be set to zero on transmission and MUST be | ||||
ignored on reception. | ||||
4.4. Example 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 | |||
DAO. | DAO. | |||
4. Similar to C, node H checks for routing entry on behalf of D, | 4. Similar to C, node H checks for routing entry on behalf of D, | |||
cannot find an entry and hence creates a new routing entry and | cannot find an entry and hence 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 | |||
DAO. | DAO. | |||
5. Node A receives the DAO, and checks for routing entry on behalf | 5. Node A receives the DAO, and checks for routing entry on behalf | |||
of D. It finds a routing entry but checks that the next hop for | of D. It finds a routing entry but checks that the next hop for | |||
target D is now changed. Node A checks the I_flag and generates | target D is now changed. Node A checks the I_flag and generates | |||
downstream NPDAO(tgt=D,pathseq=x+1,R_flag=1) to previous next hop | DCO(tgt=D,pathseq=pathseq(DAO)) to previous next hop for target D | |||
for target D which is G. Subsequently, A updates the routing | which is G. Subsequently, A updates the routing entry and | |||
entry and forwards the reachability information of target D | forwards the reachability information of target D upstream | |||
upstream DAO(tgt=D,pathseq=x+1,I_flag=x) (the I_flag carries no | DAO(tgt=D,pathseq=x+1,I_flag=x) (the I_flag carries no | |||
significance henceforth). | significance henceforth). | |||
6. Node G receives the DCO and invalidates routing entry of target D | ||||
and forwards the (un)reachability information downstream to B. | ||||
6. Node G receives the downstream NPDAO and invalidates routing | 7. Similarly, B processes the DCO by invalidating the routing entry | |||
entry of target D and then checks the reverse (R) flag and | of target D and forwards the (un)reachability information | |||
forwards the (un)reachability information downstream to B. | downstream to D. | |||
8. D ignores the DCO since the target is itself. | ||||
7. Similarly, B processes the downstream NPDAO by invalidating the | 9. The propagation of the DCO will stop at any node where the node | |||
routing entry of target D and then checks the reverse (R) flag | does not have an routing information associated with the target. | |||
and forwards the (un)reachability information downstream to D. | If the routing information is present and the pathseq associated | |||
is not older, then still the DCO is dropped. | ||||
8. D ignores the downstream NPDAO since the target is itself. | ||||
4.4. Other considerations | 4.5. Other considerations | |||
4.4.1. Dependent Nodes invalidation | 4.5.1. Dependent Nodes invalidation | |||
Current RPL [RFC6550] does not provide a mechanism for route | Current RPL [RFC6550] does not provide a mechanism for route | |||
invalidation for dependent nodes. | invalidation for dependent nodes. | |||
This section describes approaches for invalidating routes of | This section describes approaches for invalidating routes of | |||
dependent nodes if the implementation chooses to solve this problem. | dependent nodes if the implementation chooses to solve this problem. | |||
The common ancestor node realizes that the paths for dependent nodes | The common ancestor node realizes that the paths for dependent nodes | |||
have changed (based on next hop change) when it receives a regular | have changed (based on next hop change) when it receives a regular | |||
DAO on behalf of the dependent nodes. Thus dependent nodes route | DAO on behalf of the dependent nodes. Thus dependent nodes route | |||
invalidation can be handled in the same way as the switching node. | invalidation can be handled in the same way as the switching node. | |||
skipping to change at page 10, line 30 ¶ | skipping to change at page 12, line 39 ¶ | |||
grand parent node is switching paths. There are two ways to handle | grand parent node is switching paths. There are two ways to handle | |||
dependent node route invalidation: | dependent node route invalidation: | |||
1. One way to resolve is that the common ancestor does not depend | 1. One way to resolve is that the common ancestor does not depend | |||
upon the I_flag to generate the reverse NPDAO. The only factor | upon the I_flag to generate the reverse NPDAO. The only factor | |||
it makes the decision will be based on next_hop change for an | it makes the decision will be based on next_hop change for an | |||
existing target to generate the NPDAO. Thus when the switching | existing target to generate the NPDAO. Thus when the switching | |||
nodes and all the below dependent nodes advertise a regular DAO, | nodes and all the below dependent nodes advertise a regular DAO, | |||
the common ancestor node will detect a change in next hop and | the common ancestor node will detect a change in next hop and | |||
generate NPDAO for the same target as in the regular DAO. | generate NPDAO for the same target as in the regular DAO. | |||
2. Another way is that the nodes always set the I_flag whenever they | 2. Another way is that the nodes always set the I_flag whenever they | |||
send regular DAO. Thus common ancestor will first check whether | send regular DAO. Thus common ancestor will first check whether | |||
I_flag is set and then check whether the next_hop has changed and | I_flag is set and then check whether the next_hop has changed and | |||
subsequently trigger NPDAO if required. | subsequently trigger DCO if required. | |||
This document recommends the approach in point 2. The advantage with | This document recommends the approach in point 2. The advantage with | |||
I_flag is that the generation of downstream NPDAO is still controlled | I_flag is that the generation of downstream NPDAO is still controlled | |||
by the target node and thus is still in control of its own routing | by the target node and thus is still in control of its own routing | |||
state. | state. | |||
5. Acknowledgements | 5. Acknowledgements | |||
We would like to thank Cenk Gundogan, Simon Duquennoy and Pascal | We would like to thank Cenk Gundogan, Simon Duquennoy and Pascal | |||
Thubert for their review and insightful comments. | Thubert for their review and comments. | |||
6. IANA Considerations | 6. IANA Considerations | |||
IANA is requested to allocate bit 11 in the DAO base object defined | IANA is requested to allocate new ICMPv6 RPL control codes in RPL | |||
in RPL [RFC6550] section 6.4 for reverse 'R' NPDAO flag. | [RFC6550] for DCO and DCO-ACK messages. | |||
+------+--------------------------------------------+---------------+ | ||||
| Code | Description | Reference | | ||||
+------+--------------------------------------------+---------------+ | ||||
| 0x85 | Destination Cleanup Object | This document | | ||||
| 0x86 | Destination Cleanup Object Acknowledgement | This 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 | |||
This draft does not add any new messages but extends existing | The secure versions of DCO and DCO-ACK also have to be considered in | |||
messaging. The seucrity considerations applicable to DAO messaging | the future. The seucrity considerations applicable to DAO, DAO-ACK | |||
in RPL is also applicable here. | messaging in RPL is also applicable here. | |||
8. References | 8. References | |||
8.1. Normative References | 8.1. Normative 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-11 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-12 (work | |||
in progress), January 2017. | in progress), August 2017. | |||
[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, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | |||
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | |||
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
<http://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
8.2. Informative References | 8.2. Informative References | |||
[CONTIKI] Thingsquare, "Contiki: The Open Source OS for IoT", 2012, | [CONTIKI] Thingsquare, "Contiki: The Open Source OS for IoT", 2012, | |||
<http://www.contiki-os.org>. | <http://www.contiki-os.org>. | |||
[RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC | [RFC3552] Rescorla, E. and B. Korver, "Guidelines for Writing RFC | |||
Text on Security Considerations", BCP 72, RFC 3552, | Text on Security Considerations", BCP 72, RFC 3552, | |||
DOI 10.17487/RFC3552, July 2003, | DOI 10.17487/RFC3552, July 2003, | |||
<http://www.rfc-editor.org/info/rfc3552>. | <https://www.rfc-editor.org/info/rfc3552>. | |||
Appendix A. Additional Stuff | Appendix A. Additional Stuff | |||
This becomes an Appendix. | This becomes an Appendix. | |||
Authors' Addresses | Authors' Addresses | |||
Rahul Arvind Jadhav (editor) | Rahul Arvind Jadhav (editor) | |||
Huawei Tech | Huawei Tech | |||
Kundalahalli Village, Whitefield, | Kundalahalli Village, Whitefield, | |||
End of changes. 41 change blocks. | ||||
91 lines changed or deleted | 191 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |