rfc9009-rahul-updates3-pascal.txt   rfc9009.txt 
skipping to change at line 232 skipping to change at line 232
Figure 1: Sample Topology Figure 1: Sample Topology
Node D is connected via preferred parent B. D has an alternate path Node D is connected via preferred parent B. D has an alternate path
via C towards the 6LBR. Node A is the common ancestor for D for via C towards the 6LBR. Node A is the common ancestor for D for
paths through B-G and C-H. When D switches from B to C, RPL allows paths through B-G and C-H. When D switches from B to C, RPL allows
sending an NPDAO to B and a regular DAO to C. sending an NPDAO to B and a regular DAO to C.
1.3. Why Is NPDAO Messaging Important? 1.3. Why Is NPDAO Messaging Important?
Resources in LLN Nodes are typically constrained. There is limited Resources in LLN nodes are typically constrained. There is limited
memory available, and routing entry records are one of the primary memory available, and routing entry records are one of the primary
elements occupying dynamic memory in the nodes. Route invalidation elements occupying dynamic memory in the nodes. Route invalidation
helps 6LR nodes to decide which routing entries can be discarded for helps 6LR nodes to decide which routing entries can be discarded for
a better use of the limited resources. Thus, it becomes necessary to better use of the limited resources. Thus, it becomes necessary to
have an efficient route invalidation mechanism. Also note that a have an efficient route invalidation mechanism. Also note that a
single parent switch may result in a "subtree" switching from one single parent switch may result in a "subtree" switching from one
parent to another. Thus, the route invalidation needs to be done on parent to another. Thus, the route invalidation needs to be done on
behalf of the subtree and not the switching node alone. In the above behalf of the subtree and not the switching node alone. In the above
example, when Node D switches its parent, route updates need to be example, when Node D switches its parent, route updates need to be
done for the routing table entries of C, H, A, G, and B with done for the routing table entries of C, H, A, G, and B with
destinations D, E, and F. Without efficient route invalidation, a destinations D, E, and F. Without efficient route invalidation, a
6LR may have to hold a lot of stale route entries. 6LR may have to hold a lot of stale route entries.
2. Problems with the RPL NPDAO Messaging 2. Problems with the RPL NPDAO Messaging
skipping to change at line 322 skipping to change at line 322
4. Changes to RPL Signaling 4. Changes to RPL Signaling
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
changing to a new parent and traverses upstream towards the root. In changing to a new parent and traverses upstream towards the root. In
order to solve the problems discussed in Section 2, this document order to solve the problems discussed in Section 2, this document
adds a new proactive route invalidation message called the adds a new proactive route invalidation message called the
"Destination Cleanup Object" (DCO), which originates at a common "Destination Cleanup Object" (DCO), which originates at a common
ancestor node and flows downstream the old path. The common ancestor ancestor node and flows downstream the old path. The common ancestor
node generates a DCO when removing a next hop to a target, for node generates a DCO when removing a next hop to a target -- for
instance as a delayed response to receiving a regular DAO from instance, as a delayed response to receiving a regular DAO from
another child node with a newer Path Sequence for the target. another child node with a newer Path Sequence for the target.
The 6LRs in the path for the DCO take such action as route The 6LRs in the path for the DCO take such action as route
invalidation based on the DCO information and subsequently send invalidation based on the DCO information and subsequently send
another DCO with the same information downstream to the next hop(s). another DCO with the same information downstream to the next hop(s).
This operation is similar to how the DAOs are handled on intermediate This operation is similar to how the DAOs are handled on intermediate
6LRs in the Storing MOP [RFC6550]. Just like the DAO in the Storing 6LRs in the Storing MOP [RFC6550]. Just like the DAO in the Storing
MOP, the DCO is sent using link-local unicast source and destination MOP, the DCO is sent using link-local unicast source and destination
IPv6 addresses. Unlike the DAO, which always travels upstream, the IPv6 addresses. Unlike the DAO, which always travels upstream, the
DCO always travels downstream. DCO always travels downstream.
In Figure 1, when child Node D decides to switch the path from parent In Figure 1, when child Node D decides to switch the path from parent
B to parent C, it sends a regular DAO to node C with reachability B to parent C, it sends a regular DAO to Node C with reachability
information containing the address of D as the target and an information containing the address of D as the target and an
incremented Path Sequence. Node C will update the routing table incremented Path Sequence. Node C will update the routing table
based on the reachability information in the DAO and will in turn based on the reachability information in the DAO and will in turn
generate another DAO with the same reachability information and generate another DAO with the same reachability information and
forward it to H. Node H recursively follows the same procedure as forward it to H. Node H recursively follows the same procedure as
Node C and forwards it to Node A. When Node A receives the regular Node C and forwards it to Node A. When Node A receives the regular
DAO, it finds that it already has a routing table entry on behalf of DAO, it finds that it already has a routing table entry on behalf of
the Target Address of Node D. It finds, however, that the next-hop the Target Address of Node D. It finds, however, that the next-hop
information for reaching Node D has changed, i.e., Node D has decided information for reaching Node D has changed, i.e., Node D has decided
to change the paths. In this case, Node A, which is the common to change the paths. In this case, Node A, which is the common
ancestor node for Node D along the two paths (previous and new), can ancestor node for Node D along the two paths (previous and new), can
generate a DCO that traverses the network downwards over the old path generate a DCO that traverses the network downwards over the old path
ot the target. Node A handles normal DAO forwarding to the 6LBR as of the target. Node A handles normal DAO forwarding to the 6LBR as
required by [RFC6550]. required by [RFC6550].
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, as described in Section 6 of [RFC6550]. The base fields options, as described in Section 6 of [RFC6550]. The base fields
apply to the message as a whole, and options are appended to add apply to the message as a whole, and options are appended to add
message-specific / use-case-specific attributes. As an example, a message-specific / use-case-specific attributes. As an example, a
DAO message may be attributed by one or more "RPL Target" options DAO message may be attributed by one or more "RPL Target" options
that specify that the reachability information is for the given that specify that the reachability information is for the given
skipping to change at line 397 skipping to change at line 397
I (Invalidate previous route) flag: The 'I' flag is set by the I (Invalidate previous route) flag: The 'I' flag is set by the
target node to indicate to the common ancestor node that it wishes target node to indicate to the common ancestor node that it wishes
to invalidate any previous route between the two paths. to invalidate any previous route between the two paths.
[RFC6550] allows the parent address to be sent in the Transit [RFC6550] allows the parent address to be sent in the Transit
Information option, depending on the MOP. In the case of the Storing Information option, depending on the MOP. In the case of the Storing
MOP, the field is usually not needed. In the case of a DCO, the MOP, the field is usually not needed. In the case of a DCO, the
Parent Address field MUST NOT be included. Parent Address field MUST NOT be included.
Upon receiving a DAO message with a TIO that has the 'I' flag set, Upon receiving a DAO message with a Transit Information option that
and as a delayed response removing a routing adjacency to the target has the 'I' flag set, and as a delayed response removing a routing
indicated in the TIO, the common ancestor node SHOULD generate a DCO adjacency to the target indicated in the Transit Information option,
message to the next-hop associated to that adjacency. The 'I' flag the common ancestor node SHOULD generate a DCO message to the next
is intended to give the target node control over its own route hop associated to that adjacency. The 'I' flag is intended to give
invalidation, serving as a signal to request DCO generation. the target node control over its own route invalidation, serving as a
signal to request DCO generation.
4.3. Destination Cleanup Object (DCO) 4.3. Destination Cleanup Object (DCO)
A new ICMPv6 RPL control message code is defined by this A new ICMPv6 RPL control message code is defined by this
specification and is referred to as the "Destination Cleanup Object" specification and is referred to as the "Destination Cleanup Object"
(DCO), which is used for proactive cleanup of state and routing (DCO), which is used for proactive cleanup of state and routing
information held on behalf of the target node by 6LRs. The DCO information held on behalf of the target node by 6LRs. The DCO
message always traverses downstream and cleans up route information message always traverses downstream and cleans up route information
and other state information associated with the given target. The and other state information associated with the given target. The
format of the DCO message is shown in Figure 3. format of the DCO message is shown in Figure 3.
skipping to change at line 500 skipping to change at line 501
0x06 Transit Information 0x06 Transit Information
0x09 RPL Target Descriptor 0x09 RPL Target Descriptor
Section 6.7 of [RFC6550] defines all the above-mentioned options. Section 6.7 of [RFC6550] defines all the above-mentioned options.
The DCO carries a RPL Target option and an associated Transit The DCO carries a RPL Target option and an associated Transit
Information option with a lifetime of 0x00000000 to indicate a loss Information option with a lifetime of 0x00000000 to indicate a loss
of reachability to that target. of reachability to that target.
4.3.3. Path Sequence in the DCO 4.3.3. Path Sequence in the DCO
A DCO message includes Transit Information option for each A DCO message includes a Transit Information option for each
invalidated path. The value of the Path Sequence counter in the TIO invalidated path. The value of the Path Sequence counter in the
allows to identify the freshness of the DCO message vs. the newest Transit Information option allows identification of the freshness of
known to the 6LRs along the path being removed. If the DCO is the DCO message versus the newest known to the 6LRs along the path
generated by a common parent in response to a DAO message, then the being removed. If the DCO is generated by a common parent in
TIO in the DCO MUST use the value of the Path Sequence as found in response to a DAO message, then the Transit Information option in the
the newest TIO that was received for that target by the common DCO MUST use the value of the Path Sequence as found in the newest
parent. If a 6LR down the path receives a DCO with a Path Sequence Transit Information option that was received for that target by the
that is not newer than the Path Sequence as known from a TIO in a DAO common parent. If a 6LR down the path receives a DCO with a Path
message, then the 6LR MUST NOT remove its newer routing state, and it Sequence that is not newer than the Path Sequence as known from a
MUST NOT forward the DCO down a path where it is not newer. If the Transit Information option in a DAO message, then the 6LR MUST NOT
DCO is newer, the 6LR may retain a temporary state to ensure that a remove its newer routing state, and it MUST NOT forward the DCO down
DAO that is received later with a TIO with an older sequence number a path where it is not newer. If the DCO is newer, the 6LR may
is ignored. A TIO in a DAO message that is as new or newer than that retain a temporary state to ensure that a DAO that is received later
in a DCO wins, meaning that the path indicated with in the DAO is with a Transit Information option with an older sequence number is
installed and the DAO is propagated. When the DCO is propagated upon ignored. A Transit Information option in a DAO message that is as
a DCO from an upstream parent, the Path Sequence MUST be copied from new or newer than that in a DCO wins, meaning that the path indicated
the received DCO. with in the DAO is installed and the DAO is propagated. When the DCO
is propagated upon a DCO from an upstream parent, the Path Sequence
MUST be copied from the received DCO.
4.3.4. Destination Cleanup Option Acknowledgment (DCO-ACK) 4.3.4. Destination Cleanup Option Acknowledgment (DCO-ACK)
The DCO-ACK message SHOULD be sent as a unicast packet by a DCO The DCO-ACK message SHOULD be sent as a unicast packet by a DCO
recipient in response to a unicast DCO message with the 'K' flag set. recipient in response to a unicast DCO message with the 'K' flag set.
If the 'K' flag is not set, then the receiver of the DCO message MAY If the 'K' flag is not set, then the receiver of the DCO message MAY
send a DCO-ACK, especially to report an error condition. The format send a DCO-ACK, especially to report an error condition. The format
of the DCO-ACK message is shown in Figure 4. of the DCO-ACK message is shown in Figure 4.
0 1 2 3 0 1 2 3
skipping to change at line 560 skipping to change at line 563
the sender and MUST be ignored by the receiver. the sender and MUST be ignored by the receiver.
DCOSequence: 8-bit field. The DCOSequence in the DCO-ACK is copied DCOSequence: 8-bit field. The DCOSequence in the DCO-ACK is copied
from the DCOSequence received in the DCO message. from the DCOSequence received in the DCO message.
DCO-ACK Status: Indicates completion status. The DCO-ACK Status DCO-ACK Status: Indicates completion status. The DCO-ACK Status
field is defined based on Figure 6 of [RFC9010] defining the RPL field is defined based on Figure 6 of [RFC9010] defining the RPL
Status Format. A StatusValue of 0 along with the 'U' bit set to 0 Status Format. A StatusValue of 0 along with the 'U' bit set to 0
indicates Success / Unqualified acceptance as per Figure 6 of indicates Success / Unqualified acceptance as per Figure 6 of
[RFC9010]. A StatusValue of 1 with the 'U' bit set to 1 indicates [RFC9010]. A StatusValue of 1 with the 'U' bit set to 1 indicates
'No routing entry' as defined in Section 5.3 this document. 'No routing entry' as defined in Section 5.3 of this document.
DODAGID (optional): 128-bit unsigned integer set by a DODAG root DODAGID (optional): 128-bit unsigned integer set by a DODAG root
that uniquely identifies a DODAG. This field MUST be present when that uniquely identifies a DODAG. This field MUST be present when
the 'D' flag is set and MUST NOT be present when the 'D' flag is the 'D' flag is set and MUST NOT be present when the 'D' flag is
not set. The DODAGID is used when a local RPLInstanceID is in not set. The DODAGID is used when a local RPLInstanceID is in
use, in order to identify the DODAGID that is associated with the use, in order to identify the DODAGID that is associated with the
RPLInstanceID. RPLInstanceID.
4.3.5. Secure DCO-ACK 4.3.5. Secure DCO-ACK
skipping to change at line 613 skipping to change at line 616
not receive a DCO-ACK in response MAY reschedule the DCO message not receive a DCO-ACK in response MAY reschedule the DCO message
transmission for another attempt, up until an implementation- transmission for another attempt, up until an implementation-
specific number of retries. specific number of retries.
7. A node receiving a unicast DCO message with its own address in 7. A node receiving a unicast DCO message with its own address in
the RPL Target option MUST strip off that Target option. If this the RPL Target option MUST strip off that Target option. If this
Target option is the only one in the DCO message, then the DCO Target option is the only one in the DCO message, then the DCO
message MUST be dropped. message MUST be dropped.
The scope of DCOSequence values is unique to the node that generates The scope of DCOSequence values is unique to the node that generates
it. them.
4.5. Unsolicited DCO 4.5. Unsolicited DCO
A 6LR may generate an unsolicited DCO to unilaterally clean up the A 6LR may generate an unsolicited DCO to unilaterally clean up the
path on behalf of the target entry. The 6LR has all the state path on behalf of the target entry. The 6LR has all the state
information, namely, the Target Address and the Path Sequence, information, namely, the Target Address and the Path Sequence,
required for generating a DCO in its routing table. The conditions required for generating a DCO in its routing table. The conditions
under which a 6LR may generate an unsolicited DCO are beyond the under which a 6LR may generate an unsolicited DCO are beyond the
scope of this document, but possible reasons could be as follows: scope of this document, but possible reasons could be as follows:
skipping to change at line 694 skipping to change at line 697
2. Send a regular DAO on the new path with the 'I' flag set in the 2. Send a regular DAO on the new path with the 'I' flag set in the
Transit Information option such that the common ancestor node Transit Information option such that the common ancestor node
initiates the DCO message downstream to invalidate the previous initiates the DCO message downstream to invalidate the previous
route. route.
This document recommends using option 2, for the reasons specified in This document recommends using option 2, for the reasons specified in
Section 3 of this document. Section 3 of this document.
This document assumes that all the 6LRs in the network support this This document assumes that all the 6LRs in the network support this
specification. If there are 6LRs en-route DCO message path that does specification. If there are 6LR nodes that do not support this
not support this document, then the route invalidation for document that are in the path of the DCO message transmission, then
corresponding targets may not work or may work partially, i.e., only the route invalidation for the corresponding targets (targets that
part of the path supporting the DCO may be invalidated. are in the DCO message) may not work or may work partially.
Alternatively, a node could generate an NPDAO if it does not receive Alternatively, a node could generate an NPDAO if it does not receive
a DCO with itself as the target within a specified time limit. The a DCO with itself as the target within a specified time limit. The
specified time limit is deployment specific and depends upon the specified time limit is deployment specific and depends upon the
maximum depth of the network and per-hop average latency. Note that maximum depth of the network and per-hop average latency. Note that
sending an NPDAO and a DCO for the same operation would not result in sending an NPDAO and a DCO for the same operation would not result in
unwanted side effects because the acceptability of an NPDAO or a DCO unwanted side effects because the acceptability of an NPDAO or a DCO
depends upon the Path Sequence freshness. depends upon the Path Sequence freshness.
4.6.3. Considerations for DCO Retries 4.6.3. Considerations for DCO Retries
skipping to change at line 851 skipping to change at line 854
+============+==============================+===============+ +============+==============================+===============+
| Bit number | Description | Reference | | Bit number | Description | Reference |
+============+==============================+===============+ +============+==============================+===============+
| 0 | DODAGID field is present (D) | This document | | 0 | DODAGID field is present (D) | This document |
+------------+------------------------------+---------------+ +------------+------------------------------+---------------+
Table 3: DCO-ACK Base Flag Table 3: DCO-ACK Base Flag
5.3. RPL Rejection Status Values 5.3. RPL Rejection Status Values
This document adds a new status value to the "RPL Rejection Status This document adds a new status value to the "RPL Rejection Status"
Values" subregistry initially created per Section 12.6 of [RFC9010]. subregistry initially created per Section 12.6 of [RFC9010].
+=======+==================+===============+ +=======+==================+===============+
| Value | Meaning | Reference | | Value | Meaning | Reference |
+=======+==================+===============+ +=======+==================+===============+
| 1 | No routing entry | This document | | 1 | No routing entry | This document |
+-------+------------------+---------------+ +-------+------------------+---------------+
Table 4: Rejection Value of the RPL Status Table 4: Rejection Value of the RPL Status
6. Security Considerations 6. Security Considerations
 End of changes. 11 change blocks. 
38 lines changed or deleted 41 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/