summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9009.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc9009.txt')
-rw-r--r--doc/rfc/rfc9009.txt1158
1 files changed, 1158 insertions, 0 deletions
diff --git a/doc/rfc/rfc9009.txt b/doc/rfc/rfc9009.txt
new file mode 100644
index 0000000..a6121b5
--- /dev/null
+++ b/doc/rfc/rfc9009.txt
@@ -0,0 +1,1158 @@
+
+
+
+
+Internet Engineering Task Force (IETF) R.A. Jadhav, Ed.
+Request for Comments: 9009 Huawei
+Category: Standards Track P. Thubert
+ISSN: 2070-1721 Cisco
+ R.N. Sahoo
+ Z. Cao
+ Huawei
+ April 2021
+
+
+ Efficient Route Invalidation
+
+Abstract
+
+ This document explains the problems associated with the use of No-
+ Path Destination Advertisement Object (NPDAO) messaging in RFC 6550
+ and also discusses the requirements for an optimized route
+ invalidation messaging scheme. Further, this document specifies a
+ new proactive route invalidation message called the "Destination
+ Cleanup Object" (DCO), which fulfills requirements for optimized
+ route invalidation messaging.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9009.
+
+Copyright Notice
+
+ Copyright (c) 2021 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 1.1. Requirements Language and Terminology
+ 1.2. RPL NPDAO Messaging
+ 1.3. Why Is NPDAO Messaging Important?
+ 2. Problems with the RPL NPDAO Messaging
+ 2.1. Lost NPDAO Due to Link Break to the Previous Parent
+ 2.2. Invalidating Routes of Dependent Nodes
+ 2.3. Possible Route Downtime Caused by Asynchronous Operation of
+ the NPDAO and DAO
+ 3. Requirements for NPDAO Optimization
+ 3.1. Req. #1: Remove Messaging Dependency on the Link to the
+ Previous Parent
+ 3.2. Req. #2: Route Invalidation for Dependent Nodes at the
+ Parent Switching Node
+ 3.3. Req. #3: Route Invalidation Should Not Impact Data Traffic
+ 4. Changes to RPL Signaling
+ 4.1. Change in RPL Route Invalidation Semantics
+ 4.2. Transit Information Option Changes
+ 4.3. Destination Cleanup Object (DCO)
+ 4.3.1. Secure DCO
+ 4.3.2. DCO Options
+ 4.3.3. Path Sequence in the DCO
+ 4.3.4. Destination Cleanup Option Acknowledgment (DCO-ACK)
+ 4.3.5. Secure DCO-ACK
+ 4.4. DCO Base Rules
+ 4.5. Unsolicited DCO
+ 4.6. Other Considerations
+ 4.6.1. Invalidation of Dependent Nodes
+ 4.6.2. NPDAO and DCO in the Same Network
+ 4.6.3. Considerations for DCO Retries
+ 4.6.4. DCO with Multiple Preferred Parents
+ 5. IANA Considerations
+ 5.1. New Registry for the Destination Cleanup Object (DCO) Flags
+ 5.2. New Registry for the Destination Cleanup Object (DCO)
+ Acknowledgment Flags
+ 5.3. RPL Rejection Status Values
+ 6. Security Considerations
+ 7. Normative References
+ Appendix A. Example Messaging
+ A.1. Example DCO Messaging
+ A.2. Example DCO Messaging with Multiple Preferred Parents
+ Acknowledgments
+ Authors' Addresses
+
+1. Introduction
+
+ RPL (the Routing Protocol for Low-Power and Lossy Networks) as
+ defined in [RFC6550] specifies a proactive distance-vector-based
+ routing scheme. RPL has optional messaging in the form of DAO
+ (Destination Advertisement Object) messages, which the 6LBR (6LoWPAN
+ Border Router) and 6LR (6LoWPAN Router) can use to learn a route
+ towards the downstream nodes. ("6LoWPAN" stands for "IPv6 over Low-
+ Power Wireless Personal Area Network".) In Storing mode, DAO
+ messages would result in routing entries being created on all
+ intermediate 6LRs from a node's parent all the way towards the 6LBR.
+
+ RPL allows the use of No-Path DAO (NPDAO) messaging to invalidate a
+ routing path corresponding to the given target, thus releasing
+ resources utilized on that path. An NPDAO is a DAO message with a
+ route lifetime of zero. It originates at the target node and always
+ flows upstream towards the 6LBR. This document explains the problems
+ associated with the use of NPDAO messaging in [RFC6550] and also
+ discusses the requirements for an optimized route invalidation
+ messaging scheme. Further, this document specifies a new proactive
+ route invalidation message called the "Destination Cleanup Object"
+ (DCO), which fulfills requirements for optimized route invalidation
+ messaging.
+
+ This document only caters to RPL's Storing Mode of Operation (MOP).
+ The Non-Storing MOP does not require the use of an NPDAO for route
+ invalidation, since routing entries are not maintained on 6LRs.
+
+1.1. Requirements Language and Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ This specification requires readers to be familiar with all the terms
+ and concepts that are discussed in "RPL: IPv6 Routing Protocol for
+ Low-Power and Lossy Networks" [RFC6550].
+
+ Low-Power and Lossy Network (LLN):
+ A network in which both the routers and their interconnects are
+ constrained. LLN routers typically operate with constraints on
+ processing power, memory, and energy (battery power). Their
+ interconnects are characterized by high loss rates, low data
+ rates, and instability.
+
+ 6LoWPAN Router (6LR):
+ An intermediate router that is able to send and receive Router
+ Advertisements (RAs) and Router Solicitations (RSs) as well as
+ forward and route IPv6 packets.
+
+ Directed Acyclic Graph (DAG):
+ A directed graph having the property that all edges are oriented
+ in such a way that no cycles exist.
+
+ Destination-Oriented DAG (DODAG):
+ A DAG rooted at a single destination, i.e., at a single DAG root
+ with no outgoing edges.
+
+ 6LoWPAN Border Router (6LBR):
+ A border router that is a DODAG root and is the edge node for
+ traffic flowing in and out of the 6LoWPAN.
+
+ Destination Advertisement Object (DAO):
+ DAO messaging allows downstream routes to the nodes to be
+ established.
+
+ DODAG Information Object (DIO):
+ DIO messaging allows upstream routes to the 6LBR to be
+ established. DIO messaging is initiated at the DAO root.
+
+ Common ancestor node:
+ A 6LR/6LBR node that is the first common node between two paths of
+ a target node.
+
+ No-Path DAO (NPDAO):
+ A DAO message that has a target with a lifetime of 0. Used for
+ the purpose of route invalidation.
+
+ Destination Cleanup Object (DCO):
+ A new RPL control message code defined by this document. DCO
+ messaging improves proactive route invalidation in RPL.
+
+ Regular DAO:
+ A DAO message with a non-zero lifetime. Routing adjacencies are
+ created or updated based on this message.
+
+ Target node:
+ The node switching its parent whose routing adjacencies are
+ updated (created/removed).
+
+1.2. RPL NPDAO Messaging
+
+ RPL uses NPDAO messaging in Storing mode so that the node changing
+ its routing adjacencies can invalidate the previous route. This is
+ needed so that nodes along the previous path can release any
+ resources (such as the routing entry) they maintain on behalf of the
+ target node.
+
+ Throughout this document, we will refer to the topology shown in
+ Figure 1:
+
+ (6LBR)
+ |
+ |
+ |
+ (A)
+ / \
+ / \
+ / \
+ (G) (H)
+ | |
+ | |
+ | |
+ (B) (C)
+ \ ;
+ \ ;
+ \ ;
+ (D)
+ / \
+ / \
+ / \
+ (E) (F)
+
+ Figure 1: Sample Topology
+
+ 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
+ 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.
+
+1.3. Why Is NPDAO Messaging Important?
+
+ Resources in LLN nodes are typically constrained. There is limited
+ memory available, and routing entry records are one of the primary
+ elements occupying dynamic memory in the nodes. Route invalidation
+ helps 6LR nodes to decide which routing entries can be discarded for
+ better use of the limited resources. Thus, it becomes necessary to
+ have an efficient route invalidation mechanism. Also note that a
+ single parent switch may result in a "subtree" switching from one
+ 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
+ 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
+ destinations D, E, and F. Without efficient route invalidation, a
+ 6LR may have to hold a lot of stale route entries.
+
+2. Problems with the RPL NPDAO Messaging
+
+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
+ previous parent and a regular DAO to its new parent. In cases where
+ the node switches its parent because of transient or permanent parent
+ link/node failure, the NPDAO message may not be received by the
+ parent.
+
+2.2. Invalidating Routes of Dependent Nodes
+
+ RPL does not specify how route invalidation will work for dependent
+ nodes in the switching node subDAG, resulting in stale routing
+ entries of the dependent nodes. The only way for a 6LR to invalidate
+ the route entries for dependent nodes would be to use route lifetime
+ expiry, which could be substantially high for LLNs.
+
+ In the example topology, when Node D switches its parent, Node D
+ generates an NPDAO on its own behalf. There is no NPDAO generated by
+ the dependent child Nodes E and F, through the previous path via D 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 Asynchronous Operation of the
+ NPDAO and DAO
+
+ A switching node may generate both an NPDAO and a DAO via two
+ different paths at almost the same time. It is possible that the
+ NPDAO may invalidate the previous route and the regular DAO sent via
+ the new path gets lost on the way. This may result in route
+ downtime, impacting downward traffic for the switching node.
+
+ In the example topology, say that Node D switches from parent B to C.
+ An NPDAO sent via the previous route may invalidate the previous
+ route, whereas there is no way to determine whether the new DAO has
+ successfully updated the route entries on the new path.
+
+3. Requirements for NPDAO Optimization
+
+3.1. Req. #1: Remove Messaging Dependency on the Link to the Previous
+ Parent
+
+ 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
+ failure (that's why the node decided to switch). Therefore, it is
+ required that the route invalidation does not depend on the previous
+ link, which is prone to failure. The previous link referred to here
+ represents the link between the node and its previous parent (from
+ which the node is now disassociating).
+
+3.2. Req. #2: Route Invalidation for Dependent Nodes at the Parent
+ Switching Node
+
+ It should be possible to do route invalidation for dependent nodes
+ rooted at the switching node.
+
+3.3. Req. #3: Route Invalidation Should Not Impact Data Traffic
+
+ While sending the NPDAO and DAO messages, it is possible that the
+ NPDAO successfully invalidates the previous path, while the newly
+ sent DAO gets lost (new path not set up successfully). This will
+ result in downstream unreachability to the node switching paths.
+ Therefore, it is desirable that the route invalidation is
+ synchronized with the DAO to avoid the risk of route downtime.
+
+4. Changes to RPL Signaling
+
+4.1. Change in RPL Route Invalidation Semantics
+
+ As described in Section 1.2, the NPDAO originates at the node
+ changing to a new parent and traverses upstream towards the root. In
+ order to solve the problems discussed in Section 2, this document
+ adds a new proactive route invalidation message called the
+ "Destination Cleanup Object" (DCO), which originates at a common
+ ancestor node and flows downstream the old path. The common ancestor
+ node generates a DCO when removing a next hop to a target -- for
+ instance, as a delayed response to receiving a regular DAO from
+ another child node with a Path Sequence for the target that is the
+ same or newer, in which case the DCO transmission is canceled.
+
+ The 6LRs in the path for the DCO take such action as route
+ invalidation based on the DCO information and subsequently send
+ another DCO with the same information downstream to the next hop(s).
+ 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
+ MOP, the DCO is sent using link-local unicast source and destination
+ IPv6 addresses. Unlike the DAO, which always travels upstream, the
+ DCO always travels downstream.
+
+ 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
+ information containing the address of D as the target and an
+ incremented Path Sequence. Node C will update the routing table
+ based on the reachability information in the DAO and will in turn
+ generate another DAO with the same reachability information and
+ 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
+ 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
+ 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
+ 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
+ to the target. Node A handles normal DAO forwarding to the 6LBR as
+ required by [RFC6550].
+
+4.2. Transit Information Option Changes
+
+ Every RPL message is divided into base message fields and additional
+ options, as described in Section 6 of [RFC6550]. The base fields
+ apply to the message as a whole, and options are appended to add
+ message-specific / use-case-specific attributes. As an example, a
+ DAO message may be attributed by one or more "RPL Target" options
+ that specify that the reachability information is for the given
+ targets. Similarly, a Transit Information option may be associated
+ with a set of RPL Target options.
+
+ This document specifies a change in the Transit Information option to
+ contain the "Invalidate previous route" (I) flag. This 'I' flag
+ signals the common ancestor node to generate a DCO on behalf of the
+ target node with a RPL Status of 195, indicating that the address has
+ moved. The 'I' flag is carried in the Transit Information option,
+ which augments the reachability information for a given set of one or
+ more RPL Targets. A Transit Information option with the 'I' flag set
+ should be carried in the DAO message when route invalidation is
+ sought for the corresponding target or targets.
+
+ Value 195 represents the 'U' and 'A' bits in RPL Status, to be set as
+ per Figure 6 of [RFC9010], with the lower 6 bits set to the 6LoWPAN
+ Neighbor Discovery (ND) Extended Address Registration Option (EARO)
+ Status value of 3 indicating 'Moved' as per Table 1 of [RFC8505].
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Type = 0x06 | Option Length |E|I| Flags | Path Control |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Path Sequence | Path Lifetime |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 2: Updated Transit Information Option (New 'I' Flag Added)
+
+ I (Invalidate previous route) flag: The 'I' flag is set by the
+ target node to indicate to the common ancestor node that it wishes
+ to invalidate any previous route between the two paths.
+
+ [RFC6550] allows the parent address to be sent in the Transit
+ 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
+ Parent Address field MUST NOT be included.
+
+ Upon receiving a DAO message with a Transit Information option that
+ has the 'I' flag set, and as a delayed response removing a routing
+ adjacency to the target indicated in the Transit Information option,
+ the common ancestor node SHOULD generate a DCO message to the next
+ hop associated to that adjacency. The 'I' flag is intended to give
+ the target node control over its own route invalidation, serving as a
+ signal to request DCO generation.
+
+4.3. Destination Cleanup Object (DCO)
+
+ A new ICMPv6 RPL control message code is defined by this
+ specification and is referred to as the "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. The
+ format of the DCO message is shown in Figure 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | RPLInstanceID |K|D| Flags | RPL Status | DCOSequence |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | |
+ + +
+ | |
+ + DODAGID (optional) +
+ | |
+ + +
+ | |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Option(s)...
+ +-+-+-+-+-+-+-+-+
+
+ Figure 3: DCO Base Object
+
+ RPLInstanceID: 8-bit field indicating the topology instance
+ associated with the DODAG, as learned from the DIO.
+
+ K: The 'K' flag indicates that the recipient of a DCO message is
+ expected to send a DCO-ACK back. If the DCO-ACK is not received
+ even after setting the 'K' flag, an implementation may retry the
+ DCO at a later time. The number of retries is implementation and
+ deployment dependent and is expected to be kept similar to the
+ number of DAO retries [RFC6550]. Section 4.6.3 specifies the
+ considerations for DCO retries. A node receiving a DCO message
+ without the 'K' flag set MAY respond with a DCO-ACK, especially to
+ report an error condition. An example error condition could be
+ that the node sending the DCO-ACK does not find the routing entry
+ for the indicated target. When the sender does not set the 'K'
+ flag, it is an indication that the sender does not expect a
+ response, and the sender SHOULD NOT retry the DCO.
+
+ D: The 'D' flag indicates that the DODAGID field is present. This
+ flag MUST be set when a local RPLInstanceID is used.
+
+ 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 and MUST be ignored by the receiver.
+
+ RPL Status: As defined in [RFC6550] and updated in [RFC9010]. The
+ root or common parent that generates a DCO is authoritative for
+ setting the status information, and the information is unchanged
+ as propagated down the DODAG. This document does not specify a
+ differentiated action based on the RPL Status.
+
+ DCOSequence: 8-bit field incremented at each unique DCO message from
+ a node and echoed in the DCO-ACK message. The initial DCOSequence
+ can be chosen randomly by the node. Section 4.4 explains the
+ handling of the DCOSequence.
+
+ DODAGID (optional): 128-bit unsigned integer set by a DODAG root
+ that uniquely identifies a DODAG. This field MUST be present when
+ the 'D' flag is set and MUST NOT be present if the 'D' flag is not
+ set. The DODAGID is used when a local RPLInstanceID is in use, in
+ order to identify the DODAGID that is associated with the
+ RPLInstanceID.
+
+4.3.1. Secure DCO
+
+ A Secure DCO message follows the format shown in [RFC6550], Figure 7,
+ where the base message format is the DCO message shown in Figure 3 of
+ this document.
+
+4.3.2. DCO Options
+
+ The DCO message MUST carry at least one RPL Target and the Transit
+ Information option and MAY carry other 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
+
+ Section 6.7 of [RFC6550] defines all the above-mentioned options.
+ The DCO carries a RPL Target option and an associated Transit
+ Information option with a lifetime of 0x00000000 to indicate a loss
+ of reachability to that target.
+
+4.3.3. Path Sequence in the DCO
+
+ A DCO message includes a Transit Information option for each
+ invalidated path. The value of the Path Sequence counter in the
+ Transit Information option allows identification of the freshness of
+ the DCO message versus the newest known to the 6LRs along the path
+ being removed. If the DCO is generated by a common parent in
+ response to a DAO message, then the Transit Information option in the
+ DCO MUST use the value of the Path Sequence as found in the newest
+ Transit Information option that was received for that target by the
+ common parent. If a 6LR down the path receives a DCO with a Path
+ Sequence that is not newer than the Path Sequence as known from a
+ Transit Information option in a DAO message, then the 6LR MUST NOT
+ remove its current routing state, and it MUST NOT forward the DCO
+ down a path where it is not newer. If the DCO is newer, the 6LR may
+ retain a temporary state to ensure that a DAO that is received later
+ with a Transit Information option with an older sequence number is
+ ignored. A Transit Information option in a DAO message that is as
+ new as or newer than that in a DCO wins, meaning that the path
+ indicated 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)
+
+ 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.
+ 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
+ of the DCO-ACK message is shown in Figure 4.
+
+ 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| Flags | DCOSequence | DCO-ACK 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.
+
+ Flags: 7-bit unused field. The field MUST be initialized to zero by
+ the sender and MUST be ignored by the receiver.
+
+ DCOSequence: 8-bit field. The DCOSequence in the DCO-ACK is copied
+ from the DCOSequence received in the DCO message.
+
+ DCO-ACK Status: Indicates completion status. The DCO-ACK Status
+ 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
+ indicates Success / Unqualified acceptance as per Figure 6 of
+ [RFC9010]. A StatusValue of 1 with the 'U' bit set to 1 indicates
+ 'No routing entry' as defined in Section 5.3 of this document.
+
+ DODAGID (optional): 128-bit unsigned integer set by a DODAG root
+ 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
+ not set. The DODAGID is used when a local RPLInstanceID is in
+ use, in order to identify the DODAGID that is associated with the
+ RPLInstanceID.
+
+4.3.5. Secure DCO-ACK
+
+ A Secure DCO-ACK message follows the format shown in [RFC6550],
+ Figure 7, where the base message format is the DCO-ACK message shown
+ in Figure 4 of this document.
+
+4.4. DCO Base Rules
+
+ 1. If a node sends a DCO message with newer or different information
+ than the prior DCO message transmission, it MUST increment the
+ DCOSequence field by at least one. A DCO message transmission
+ that is identical to the prior DCO message transmission MAY
+ increment the DCOSequence field. The DCOSequence counter follows
+ the sequence counter operation as defined in Section 7.2 of
+ [RFC6550].
+
+ 2. The RPLInstanceID and DODAGID fields of a DCO message MUST have
+ the same values as those contained in the DAO message in response
+ to which the DCO is generated on the common ancestor node.
+
+ 3. A node MAY set the 'K' flag in a unicast DCO message to solicit a
+ unicast DCO-ACK in response, in order to confirm the attempt.
+
+ 4. A node receiving a unicast DCO message with the 'K' flag set
+ SHOULD respond with a DCO-ACK. A node receiving a DCO message
+ without the 'K' flag set MAY respond with a DCO-ACK, especially
+ to report an error condition.
+
+ 5. A node receiving a unicast DCO message MUST verify the stored
+ Path Sequence in context to the given target. If the stored Path
+ Sequence is as new as or newer than the Path Sequence received in
+ the DCO, then the DCO MUST be dropped.
+
+ 6. A node that sets the 'K' flag in a unicast DCO message but does
+ not receive a DCO-ACK in response MAY reschedule the DCO message
+ transmission for another attempt, up until an implementation-
+ specific number of retries.
+
+ 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
+ Target option is the only one in the DCO message, then the DCO
+ message MUST be dropped.
+
+ The scope of DCOSequence values is unique to the node that generates
+ them.
+
+4.5. Unsolicited DCO
+
+ 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
+ information, namely, the Target Address and the Path Sequence,
+ required for generating a DCO in its routing table. The conditions
+ under which a 6LR may generate an unsolicited DCO are beyond the
+ scope of this document, but possible reasons could be as follows:
+
+ 1. On route expiry of an entry, a 6LR may decide to graciously clean
+ up the entry by initiating a DCO.
+
+ 2. A 6LR needs to entertain higher-priority entries in case the
+ routing table is full, thus resulting in eviction of an existing
+ routing entry. In this case, the eviction can be handled
+ graciously by using a DCO.
+
+ A DCO that is generated asynchronously to a DAO message and is meant
+ to discard all state along the path regardless of the Path Sequence
+ MUST use a Path Sequence value of 240 (see Section 7.2 of [RFC6550]).
+ This value allows the DCO to win against any established DAO path but
+ to lose against a DAO path that is being installed. Note that if an
+ ancestor initiates a unilateral path cleanup on an established path
+ using a DCO with a Path Sequence value of 240, the DCO will
+ eventually reach the target node, which will thus be informed of the
+ path invalidation.
+
+4.6. Other Considerations
+
+4.6.1. Invalidation of Dependent Nodes
+
+ The RPL specification [RFC6550] does not provide a mechanism for
+ route invalidation for dependent nodes. This document allows the
+ invalidation of dependent nodes. Dependent nodes will generate their
+ respective DAOs to update their paths, and the previous route
+ invalidation for those nodes should work in a manner similar to what
+ is described for a switching node. The dependent node may set the
+ 'I' flag in the Transit Information option as part of a regular DAO
+ so as to request invalidation of the previous route from the common
+ ancestor node.
+
+ Dependent nodes do not have any indication regarding whether any of
+ their parents have in turn decided to switch their parent. Thus, for
+ route invalidation, the dependent nodes may choose to always set the
+ 'I' flag in all their DAO messages' Transit Information options.
+ Note that setting the 'I' flag is not counterproductive even if there
+ is no previous route to be invalidated.
+
+4.6.2. NPDAO and DCO in the Same Network
+
+ The NPDAO mechanism provided in [RFC6550] can still be used in the
+ same network where a DCO is used. NPDAO messaging can be used, for
+ example, on route lifetime expiry of the target or when the node
+ simply decides to gracefully terminate the RPL session on graceful
+ node shutdown. Moreover, a deployment can have a mix of nodes
+ supporting the DCO and the existing NPDAO mechanism. It is also
+ possible that the same node supports both NPDAO and DCO signaling for
+ route invalidation.
+
+ Section 9.8 of [RFC6550] states, "When a node removes a node from its
+ DAO parent set, it SHOULD send a No-Path DAO message (Section 6.4.3)
+ to that removed DAO parent to invalidate the existing route." This
+ document introduces an alternative and more optimized way to perform
+ route invalidation, but it also allows existing NPDAO messaging to
+ work. Thus, an implementation has two choices to make when a route
+ invalidation is to be initiated:
+
+ 1. Use an NPDAO to invalidate the previous route, and send a regular
+ DAO on the new path.
+
+ 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
+ initiates the DCO message downstream to invalidate the previous
+ route.
+
+ This document recommends using option 2, for the reasons specified in
+ Section 3 of this document.
+
+ This document assumes that all the 6LRs in the network support this
+ specification. If there are 6LR nodes that do not support this
+ document that are in the path of the DCO message transmission, then
+ the route invalidation for the corresponding targets (targets that
+ are in the DCO message) may not work or may work partially.
+ 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
+ specified time limit is deployment specific and depends upon the
+ 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
+ unwanted side effects because the acceptability of an NPDAO or a DCO
+ depends upon the Path Sequence freshness.
+
+4.6.3. Considerations for DCO Retries
+
+ A DCO message could be retried by a sender if it sets the 'K' flag
+ and does not receive a DCO-ACK. The DCO retry time could be
+ dependent on the maximum depth of the network and average per-hop
+ latency. This could range from 2 seconds to 120 seconds, depending
+ on the deployment. If the latency limits are not known, an
+ implementation MUST NOT retry more than once in 3 seconds and MUST
+ NOT retry more than three times.
+
+ The number of retries could also be set depending on how critical the
+ route invalidation could be for the deployment and the link-layer
+ retry configuration. For networks supporting only Multi-Point to
+ Point (MP2P) and Point-to-Multipoint (P2MP) flows, such as in
+ Advanced Metering Infrastructure (AMI) and telemetry applications,
+ the 6LRs may not be very keen to invalidate routes, unless they are
+ highly memory constrained. For home and building automation networks
+ that may have substantial P2P traffic, the 6LRs might be keen to
+ invalidate efficiently because it may additionally impact forwarding
+ efficiency.
+
+4.6.4. DCO with Multiple Preferred Parents
+
+ [RFC6550] allows a node to select multiple preferred parents for
+ route establishment. Section 9.2.1 of [RFC6550] specifies, "All DAOs
+ generated at the same time for the same target MUST be sent with the
+ same Path Sequence in the Transit Information." Subsequently, when
+ route invalidation has to be initiated, an NPDAO, which can be
+ initiated with an updated Path Sequence to all the parent nodes
+ through which the route is to be invalidated, can be used; see
+ [RFC6550].
+
+ With a DCO, the target node itself does not initiate the route
+ invalidation; this 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. It is recommended that an implementation
+ initiate a DCO after a time period (DelayDCO) 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. After timeout, the
+ DCO needs to be generated for all the next hops for which the route
+ invalidation needs to be done.
+
+ This document recommends using a DelayDCO timer value of 1 second.
+ This value is inspired by the default DelayDAO timer value of 1
+ second [RFC6550]. Here, the hypothesis is that the DAOs from all
+ possible parent sets would be received on the common ancestor within
+ this time period.
+
+ It is still possible that a DCO is generated before all the updated
+ DAOs from all the paths are received. In this case, the ancestor
+ node would start the invalidation procedure for paths from which the
+ updated DAO is not received. The DCO generated in this case would
+ start invalidating the segments along these paths on which the
+ updated DAOs are not received. But once the DAO reaches these
+ segments, the routing state would be updated along these segments;
+ this should not lead to any inconsistent routing states.
+
+ Note that there is no requirement for synchronization between a DCO
+ and DAOs. The DelayDCO timer simply ensures that DCO control
+ overhead can be reduced and is only needed when the network contains
+ nodes using multiple preferred parents.
+
+5. IANA Considerations
+
+ IANA has allocated codes for the DCO and DCO-ACK messages from the
+ "RPL Control Codes" registry.
+
+ +======+===========================================+===============+
+ | Code | Description | Reference |
+ +======+===========================================+===============+
+ | 0x07 | Destination Cleanup Object | This document |
+ +------+-------------------------------------------+---------------+
+ | 0x08 | Destination Cleanup Object Acknowledgment | This document |
+ +------+-------------------------------------------+---------------+
+ | 0x87 | Secure Destination Cleanup Object | This document |
+ +------+-------------------------------------------+---------------+
+ | 0x88 | Secure Destination Cleanup Object | This document |
+ | | Acknowledgment | |
+ +------+-------------------------------------------+---------------+
+
+ Table 1: New Codes for DCO and DCO-ACK Messages
+
+ IANA has allocated bit 1 from the "Transit Information Option Flags"
+ registry for the 'I' flag (Invalidate previous route; see
+ Section 4.2).
+
+5.1. New Registry for the Destination Cleanup Object (DCO) Flags
+
+ IANA has created a registry for the 8-bit Destination Cleanup Object
+ (DCO) Flags field. The "Destination Cleanup Object (DCO) Flags"
+ registry is located in the "Routing Protocol for Low Power and Lossy
+ Networks (RPL)" registry.
+
+ New bit numbers may be allocated only by IETF Review [RFC8126]. Each
+ bit is tracked with the following qualities:
+
+ * Bit number (counting from bit 0 as the most significant bit)
+
+ * Capability description
+
+ * Defining RFC
+
+ The following bits are currently defined:
+
+ +============+==============================+===============+
+ | Bit number | Description | Reference |
+ +============+==============================+===============+
+ | 0 | DCO-ACK request (K) | This document |
+ +------------+------------------------------+---------------+
+ | 1 | DODAGID field is present (D) | This document |
+ +------------+------------------------------+---------------+
+
+ Table 2: DCO Base Flags
+
+5.2. New Registry for the Destination Cleanup Object (DCO)
+ Acknowledgment Flags
+
+ IANA has created a registry for the 8-bit Destination Cleanup Object
+ (DCO) Acknowledgment Flags field. The "Destination Cleanup Object
+ (DCO) Acknowledgment Flags" registry is located in the "Routing
+ Protocol for Low Power and Lossy Networks (RPL)" registry.
+
+ New bit numbers may be allocated only by IETF Review [RFC8126]. Each
+ bit is tracked with the following qualities:
+
+ * Bit number (counting from bit 0 as the most significant bit)
+
+ * Capability description
+
+ * Defining RFC
+
+ The following bit is currently defined:
+
+ +============+==============================+===============+
+ | Bit number | Description | Reference |
+ +============+==============================+===============+
+ | 0 | DODAGID field is present (D) | This document |
+ +------------+------------------------------+---------------+
+
+ Table 3: DCO-ACK Base Flag
+
+5.3. RPL Rejection Status Values
+
+ This document adds a new status value to the "RPL Rejection Status"
+ subregistry initially created per Section 12.6 of [RFC9010].
+
+ +=======+==================+===============+
+ | Value | Meaning | Reference |
+ +=======+==================+===============+
+ | 1 | No routing entry | This document |
+ +-------+------------------+---------------+
+
+ Table 4: Rejection Value of the RPL Status
+
+6. Security Considerations
+
+ This document introduces the ability for a common ancestor node to
+ invalidate a route on behalf of the target node. The common ancestor
+ node could be directed to do so by the target node, using the 'I'
+ flag in a DCO's Transit Information option. However, the common
+ ancestor node is in a position to unilaterally initiate the route
+ invalidation, since it possesses all the required state information,
+ namely, the Target Address and the corresponding Path Sequence.
+ Thus, a rogue common ancestor node could initiate such an
+ invalidation and impact the traffic to the target node.
+
+ The DCO carries a RPL Status value, which is informative. New Status
+ values may be created over time, and a node will ignore an unknown
+ Status value. This enables the RPL Status field to be used as a
+ cover channel. But the channel only works once, since the message
+ destroys its own medium, i.e., the existing route that it is
+ removing.
+
+ This document also introduces an 'I' flag, which is set by the target
+ node and used by the ancestor node to initiate a DCO if the ancestor
+ sees an update in the routing adjacency. However, this flag could be
+ spoofed by a malicious 6LR in the path and can cause invalidation of
+ an existing active path. Note that invalidation will work only if
+ the Path Sequence condition is also met for the target for which the
+ invalidation is attempted. Having said that, such a malicious 6LR
+ may spoof a DAO on behalf of the (sub) child with the 'I' flag set
+ and can cause route invalidation on behalf of the (sub) child node.
+ Note that by using existing mechanisms offered by [RFC6550], a
+ malicious 6LR might also spoof a DAO with a lifetime of zero or
+ otherwise cause denial of service by dropping traffic entirely, so
+ the new mechanism described in this document does not present a
+ substantially increased risk of disruption.
+
+ This document assumes that the security mechanisms as defined in
+ [RFC6550] are followed, which means that the common ancestor node and
+ all the 6LRs are part of the RPL network because they have the
+ required credentials. A non-secure RPL network needs to take into
+ consideration the risks highlighted in this section as well as those
+ highlighted in [RFC6550].
+
+ All RPL messages support a secure version of messages; this allows
+ integrity protection using either a Message Authentication Code (MAC)
+ or a signature. Optionally, secured RPL messages also have
+ encryption protection for confidentiality.
+
+ This document adds new messages (DCO and DCO-ACK) that are
+ syntactically similar to existing RPL messages such as DAO and DAO-
+ ACK. Secure versions of DCO and DCO-ACK messages are added in a way
+ that is similar to the technique used for other RPL messages (such as
+ DAO and DAO-ACK).
+
+ RPL supports three security modes, as mentioned in Section 10.1 of
+ [RFC6550]:
+
+ 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 and DCO-ACK messages, do not have Security sections. Also
+ note that unsecured mode does not imply that all messages are sent
+ without any protection.
+
+ Preinstalled: In this mode, RPL uses secure messages. Thus, secure
+ versions of DCO and DCO-ACK messages MUST be used in this mode.
+
+ Authenticated: In this mode, RPL uses secure messages. Thus, secure
+ versions of DCO and DCO-ACK messages MUST be used in this mode.
+
+7. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
+ Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
+ JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
+ Low-Power and Lossy Networks", RFC 6550,
+ DOI 10.17487/RFC6550, March 2012,
+ <https://www.rfc-editor.org/info/rfc6550>.
+
+ [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
+ Writing an IANA Considerations Section in RFCs", BCP 26,
+ RFC 8126, DOI 10.17487/RFC8126, June 2017,
+ <https://www.rfc-editor.org/info/rfc8126>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
+ Perkins, "Registration Extensions for IPv6 over Low-Power
+ Wireless Personal Area Network (6LoWPAN) Neighbor
+ Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
+ <https://www.rfc-editor.org/info/rfc8505>.
+
+ [RFC9010] Thubert, P., Ed. and M. Richardson, "Routing for RPL
+ (Routing Protocol for Low-Power and Lossy Networks)
+ Leaves", RFC 9010, DOI 10.17487/RFC9010, April 2021,
+ <https://www.rfc-editor.org/info/rfc9010>.
+
+Appendix A. Example Messaging
+
+A.1. Example DCO Messaging
+
+ In this example, Node D (Figure 1) switches its parent from B to C.
+ This example assumes that Node D has already established its own
+ route via Node B-G-A-6LBR using pathseq=x. The example uses DAO and
+ DCO messaging conventions and specifies only the required parameters
+ to explain the example, namely, the parameter 'tgt', which stands for
+ "Target option"; the value of this parameter specifies the address of
+ the target node. The parameter 'pathseq' specifies the Path Sequence
+ value carried in the Transit Information option, and the parameter
+ 'I_flag' specifies the 'I' flag in the Transit Information option.
+ The sequence of actions is as follows:
+
+ 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
+ path to C.
+
+ 3. C checks for a routing entry on behalf of D; since it cannot find
+ 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
+ DAO(tgt=D,pathseq=x+1,I_flag=1).
+
+ 4. Similar to C, Node H checks for a routing entry on behalf of D,
+ cannot find an entry, and hence creates a new routing entry and
+ forwards the reachability information of the target D to A in a
+ DAO(tgt=D,pathseq=x+1,I_flag=1).
+
+ 5. Node A receives the DAO(tgt=D,pathseq=x+1,I_flag=1) and checks
+ for a routing entry on behalf of D. It finds a routing entry but
+ checks that the next hop for target D is different (i.e., Node
+ G). Node A checks the I_flag and generates the
+ DCO(tgt=D,pathseq=x+1) to the previous next hop for target D,
+ which is G. Subsequently, Node A updates the routing entry and
+ forwards the reachability information of target D upstream using
+ the DAO(tgt=D,pathseq=x+1,I_flag=1).
+
+ 6. Node G receives the DCO(tgt=D,pathseq=x+1). It checks to see if
+ the received Path Sequence is later than the stored Path
+ Sequence. If it is later, Node G invalidates the routing entry
+ of target D and forwards the (un)reachability information
+ downstream to B in the DCO(tgt=D,pathseq=x+1).
+
+ 7. Similarly, B processes the DCO(tgt=D,pathseq=x+1) by invalidating
+ the routing entry of target D and forwards the (un)reachability
+ information downstream to D.
+
+ 8. D ignores the DCO(tgt=D,pathseq=x+1), since the target is itself.
+
+ 9. The propagation of the DCO will stop at any node where the node
+ does not have routing information associated with the target. If
+ cached routing information is present and the cached Path
+ Sequence is higher than the value in the DCO, then the DCO is
+ dropped.
+
+A.2. Example DCO Messaging with Multiple Preferred Parents
+
+ As shown in Figure 5, node (N41) selects multiple preferred parents
+ (N32) and (N33). The sequence of actions is listed below the figure.
+
+ (6LBR)
+ |
+ |
+ |
+ (N11)
+ / \
+ / \
+ / \
+ (N21) (N22)
+ / / \
+ / / \
+ / / \
+ (N31) (N32) (N33)
+ : | /
+ : | /
+ : | /
+ (N41)
+
+ Figure 5: Sample Topology 2
+
+ 1. (N41) sends a DAO(tgt=N41,PS=x,I_flag=1) to (N32) and (N33).
+ Here, 'I_flag' refers to the Invalidation flag, and 'PS' refers
+ to the Path Sequence in the Transit Information option.
+
+ 2. (N32) sends the DAO(tgt=N41,PS=x,I_flag=1) to (N22). (N33) also
+ sends the DAO(tgt=N41,PS=x,I_flag=1) to (N22). (N22) learns
+ multiple routes for the same destination (N41) through multiple
+ next hops. (N22) may receive the DAOs from (N32) and (N33) in
+ any order with the I_flag set. The implementation should use
+ the DelayDCO timer to wait to initiate the DCO. If (N22)
+ receives an updated DAO from all the paths, then the DCO need
+ not be initiated in this case. Thus, the routing table at N22
+ should contain (Dst,NextHop,PS): { (N41,N32,x), (N41,N33,x) }.
+
+ 3. (N22) sends the DAO(tgt=N41,PS=x,I_flag=1) to (N11).
+
+ 4. (N11) sends the DAO(tgt=N41,PS=x,I_flag=1) to (6LBR). Thus, the
+ complete path is established.
+
+ 5. (N41) decides to change the preferred parent set from
+ { N32, N33 } to { N31, N32 }.
+
+ 6. (N41) sends the DAO(tgt=N41,PS=x+1,I_flag=1) to (N32). (N41)
+ sends the DAO(tgt=N41,PS=x+1,I_flag=1) to (N31).
+
+ 7. (N32) sends the 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 waits for a
+ predetermined time period (the DelayDCO time period) to
+ invalidate another route { (N41),(N33),x }. After the time
+ period, (N22) sends the DCO(tgt=N41,PS=x+1) to (N33). Also
+ (N22) sends the regular DAO(tgt=N41,PS=x+1,I_flag=1) to (N11).
+
+ 8. (N33) receives the DCO(tgt=N41,PS=x+1). The received Path
+ Sequence is the latest and thus invalidates the entry associated
+ with the target (N41). (N33) then sends the DCO(tgt=N41,PS=x+1)
+ to (N41). (N41) sees itself as the target and drops the DCO.
+
+ 9. From Step 6 above, (N31) receives the
+ DAO(tgt=N41,PS=x+1,I_flag=1). It creates a routing entry and
+ sends the DAO(tgt=N41,PS=x+1,I_flag=1) to (N21). Similarly,
+ (N21) receives the DAO and subsequently sends the
+ DAO(tgt=N41,PS=x+1,I_flag=1) to (N11).
+
+ 10. (N11) receives the DAO(tgt=N41,PS=x+1,I_flag=1) from (N21). It
+ waits for the DelayDCO timer, since it has multiple routes to
+ (N41). (N41) will receive the DAO(tgt=N41,PS=x+1,I_flag=1) from
+ (N22) from Step 7 above. Thus, (N11) has received the regular
+ DAO(tgt=N41,PS=x+1,I_flag=1) from all paths and thus does not
+ initiate the DCO.
+
+ 11. (N11) forwards the DAO(tgt=N41,PS=x+1,I_flag=1) to (6LBR), and
+ the full path is established.
+
+Acknowledgments
+
+ Many thanks to Alvaro Retana, Cenk Gundogan, Simon Duquennoy,
+ Georgios Papadopoulos, and Peter van der Stok for their review and
+ comments. Alvaro Retana helped shape this document's final version
+ with critical review comments.
+
+Authors' Addresses
+
+ Rahul Arvind Jadhav (editor)
+ Huawei
+ Whitefield
+ Kundalahalli Village
+ Bangalore 560037
+ Karnataka
+ India
+
+ Phone: +91-080-49160700
+ Email: rahul.ietf@gmail.com
+
+
+ Pascal Thubert
+ Cisco Systems, Inc.
+ Building D
+ 45 Allee des Ormes - BP1200
+ 06254 MOUGINS - Sophia Antipolis
+ France
+
+ Phone: +33-497-23-26-34
+ Email: pthubert@cisco.com
+
+
+ Rabi Narayan Sahoo
+ Huawei
+ Whitefield
+ Kundalahalli Village
+ Bangalore 560037
+ Karnataka
+ India
+
+ Phone: +91-080-49160700
+ Email: rabinarayans0828@gmail.com
+
+
+ Zhen Cao
+ Huawei
+ W Chang'an Ave
+ Beijing
+ China
+
+ Email: zhencao.ietf@gmail.com