| < draft-ietf-roll-dao-projection-07.txt | draft-ietf-roll-dao-projection-08.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Updates: 6550 (if approved) R.A. Jadhav | Updates: 6550 (if approved) R.A. Jadhav | |||
| Intended status: Standards Track Huawei Tech | Intended status: Standards Track Huawei Tech | |||
| Expires: 6 May 2020 M. Gillmore | Expires: 7 May 2020 M. Gillmore | |||
| Itron | Itron | |||
| 3 November 2019 | 4 November 2019 | |||
| Root initiated routing state in RPL | Root initiated routing state in RPL | |||
| draft-ietf-roll-dao-projection-07 | draft-ietf-roll-dao-projection-08 | |||
| Abstract | Abstract | |||
| This document proposes a protocol extension to RPL that enables to | This document enables a RPL Root to install and maintain Projected | |||
| install a limited amount of centrally-computed routes in a RPL graph, | Routes within its DODAG, along a selected set of nodes that may or | |||
| enabling loose source routing down a non-storing mode DODAG, or | may not include self, for a chosen duration. This potentially | |||
| transversal routes inside the DODAG. As opposed to the classical | enables routes that are more optimized or resilient than those | |||
| route injection in RPL that are injected by the end devices, this | obtained with the classical distributed operation of RPL, either in | |||
| draft enables the Root of the DODAG to projects the routes that are | terms of the size of a source-route header or in terms of path | |||
| needed on the nodes where they should be installed. | length, which impacts both the latency and the packet delivery ratio. | |||
| Projected Routes may be installed in either Storing and Non-Storing | ||||
| Modes Instances of the classical RPL operation, resulting in | ||||
| potentially hybrid situations where the mode of some Projected Routes | ||||
| is different from that of the other routes in the RPL Instance. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 6 May 2020. | This Internet-Draft will expire on 7 May 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Subset of a 6LoWPAN Glossary . . . . . . . . . . . . . . 4 | 2.2. Subset of a 6LoWPAN Glossary . . . . . . . . . . . . . . 4 | |||
| 2.3. Other Terms . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. Other Terms . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 5 | 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Identifying a Path . . . . . . . . . . . . . . . . . . . . . 6 | 4. Identifying a Path . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5. New RPL Control Messages and Options . . . . . . . . . . . . 7 | 5. New RPL Control Messages and Options . . . . . . . . . . . . 7 | |||
| 5.1. New P-DAO Request Control Message . . . . . . . . . . . . 7 | 5.1. New P-DAO Request Control Message . . . . . . . . . . . . 7 | |||
| 5.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 8 | 5.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 8 | |||
| 5.3. Route Projection Options . . . . . . . . . . . . . . . . 8 | 5.3. Route Projection Options . . . . . . . . . . . . . . . . 10 | |||
| 5.4. Sibling Information Option . . . . . . . . . . . . . . . 10 | 5.4. Sibling Information Option . . . . . . . . . . . . . . . 11 | |||
| 6. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 12 | 6. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6.1. Non-Storing Mode Projected Route . . . . . . . . . . . . 13 | 6.1. Non-Storing Mode Projected Route . . . . . . . . . . . . 14 | |||
| 6.2. Storing-Mode Projected Route . . . . . . . . . . . . . . 15 | 6.2. Storing-Mode Projected Route . . . . . . . . . . . . . . 16 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 17 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 8.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 17 | 8.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 18 | |||
| 8.2. Error in Projected Route ICMPv6 Code . . . . . . . . . . 18 | 8.2. New RPL Control Message Options . . . . . . . . . . . . . 18 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 18 | 8.3. New SubRegistry for the Projected DAO Request (PDR) | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 18 | Flags . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 11. Informative References . . . . . . . . . . . . . . . . . . . 19 | 8.4. New SubRegistry for the PDR-ACK Flags . . . . . . . . . . 19 | |||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 20 | 8.5. New Subregistry for the PDR-ACK Acceptance Status | |||
| A.1. Loose Source Routing in Non-storing Mode . . . . . . . . 20 | values . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 8.6. New Subregistry for the PDR-ACK Rejection Status | ||||
| values . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 8.7. New SubRegistry for the Route Projection Options (RPO) | ||||
| Flags . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | ||||
| 8.8. New SubRegistry for the Sibling Information Option | ||||
| (SIO) Flags . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 8.9. Error in Projected Route ICMPv6 Code . . . . . . . . . . 21 | ||||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 22 | ||||
| 11. Informative References . . . . . . . . . . . . . . . . . . . 22 | ||||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 23 | ||||
| A.1. Loose Source Routing in Non-storing Mode . . . . . . . . 23 | ||||
| A.2. Transversal Routes in storing and non-storing | A.2. Transversal Routes in storing and non-storing | |||
| modes . . . . . . . . . . . . . . . . . . . . . . . . . . 22 | modes . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 23 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| B.1. Using storing mode P-DAO in non-storing mode MOP . . . . 23 | B.1. Using storing mode P-DAO in non-storing mode MOP . . . . 27 | |||
| B.2. Projecting a storing-mode transversal route . . . . . . . 24 | B.2. Projecting a storing-mode transversal route . . . . . . . 28 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 1. Introduction | 1. Introduction | |||
| The "Routing Protocol for Low Power and Lossy Networks" [RFC6550] | RPL, the "Routing Protocol for Low Power and Lossy Networks" | |||
| (LLN)(RPL) is a generic Distance Vector protocol that is well suited | [RFC6550] (LLNs), is a generic Distance Vector protocol that is well | |||
| for application in a variety of low energy Internet of Things (IoT) | suited for application in a variety of low energy Internet of Things | |||
| networks. RPL forms Destination Oriented Directed Acyclic Graphs | (IoT) networks. RPL forms Destination Oriented Directed Acyclic | |||
| (DODAGs) in which the Root often acts as the Border Router to connect | Graphs (DODAGs) in which the Root often acts as the Border Router to | |||
| the RPL domain to the Internet. The Root is responsible to select | connect the RPL domain to the Internet. The Root is responsible to | |||
| the RPL Instance that is used to forward a packet coming from the | select the RPL Instance that is used to forward a packet coming from | |||
| Internet into the RPL domain and set the related RPL information in | the Internet into the RPL domain and set the related RPL information | |||
| the packets. | in the packets. | |||
| The 6TiSCH architecture [6TiSCH-ARCHI] leverages RPL for its routing | The 6TiSCH architecture [6TiSCH-ARCHI] leverages RPL for its routing | |||
| operation and considers the Deterministic Networking Architecture | operations and considers the Deterministic Networking Architecture | |||
| [RFC8655] as one possible model whereby the device resources and | [RFC8655] as one possible model whereby the device resources and | |||
| capabilities are exposed to an external controller which installs | capabilities are exposed to an external controller which installs | |||
| routing states into the network based on some objective functions | routing states into the network based on some objective functions | |||
| that reside in that external entity. | that reside in that external entity. With DetNet and 6TiSCH, the | |||
| component of the controller that is responsible of computing routes | ||||
| is called a Path Computation Element ([PCE]). | ||||
| Based on heuristics of usage, path length, and knowledge of device | Based on heuristics of usage, path length, and knowledge of device | |||
| capacity and available resources such as battery levels and | capacity and available resources such as battery levels and | |||
| reservable buffers, a Path Computation Element ([PCE]) with a global | reservable buffers, a PCE with a global visibility on the system can | |||
| visibility on the system could install additional P2P routes that are | compute P2P routes that are more optimized for the current needs as | |||
| more optimized for the current needs as expressed by the objective | expressed by the objective function. | |||
| function. | ||||
| This draft enables a RPL Root to install and maintain Projected | This draft proposes a protocol extension to RPL that enables the Root | |||
| Routes within its DODAG, along a selected set of nodes that may or | to install a limited amount of centrally-computed routes in a RPL | |||
| may not include self, for a chosen duration. This potentially | graph, on behalf of a PCE that may be collocated or separated from | |||
| enables routes that are more optimized than those obtained with the | the Root. Those extensions enable loose source routing down in RPL | |||
| distributed operation of RPL, either in terms of the size of a | Non-Storing Mode and transversal routes inside the DODAG regardless | |||
| source-route header or in terms of path length, which impacts both | of the RPL Mode of Operation (MOP). | |||
| the latency and the packet delivery ratio. Projected Routes may be | ||||
| installed in either Storing and Non-Storing Modes Instances of the | As opposed to the classical RPL operations where routes are injected | |||
| classical RPL operation, resulting in potentially hybrid situations | by the Target nodes, the protocol extension enables the Root of a | |||
| where the mode of some Projected Routes is different from that of the | DODAG to project the routes that are needed onto the nodes where they | |||
| other routes in the RPL Instance. | should be installed. This specification uses the term Projected | |||
| Route to refer to those routes. A Projected Route may be a stand- | ||||
| alone path to a Target or a segment in a complex Track [6TiSCH-ARCHI] | ||||
| that provides redundant forwarding solutions to a destination to | ||||
| improve reliability and availability of the wireless transmissions | ||||
| [RAW-PS]. | ||||
| Projected Routes must be used with the parsimony to limit the amount | Projected Routes must be used with the parsimony to limit the amount | |||
| of state that is installed in each device to fit within its | of state that is installed in each device to fit within its | |||
| resources, and to limit the amount of rerouted traffic to fit within | resources, and to limit the amount of rerouted traffic to fit within | |||
| the capabilities of the transmission links. The algorithm used to | the capabilities of the transmission links. The method to learn the | |||
| compute the paths and the protocol used to learn the topology of the | node capabilities and the resources that are available in the devices | |||
| network and the resources that are available in devices and in the | and in the network are out of scope for this document. | |||
| network are out of scope for this document. Possibly with the | ||||
| assistance of a Path Computation Element ([PCE]) that could have a | ||||
| better visibility on the larger system, the Root computes which | ||||
| segment could be optimized and uses this draft to install the | ||||
| corresponding Projected Routes. | ||||
| A Projected Route may be a stand-alone path to a Target or a segment | In RPL Non-Storing Mode, the Root has enough information to build a | |||
| in a complex Track [6TiSCH-ARCHI] that provides redundant forwarding | basic DODAG topology. This document adds the capability for nodes to | |||
| solutions to a destination to improve reliability and availability of | advertise sibling information in order to improve the topological | |||
| the wireless transmissions [RAW-PS]. | awareness of the Root. This specification uses the RPL Root as a | |||
| proxy to the PCE. The algorithm to compute the paths and the | ||||
| protocol used by an external PCE to obtain the topology of the | ||||
| network from the Root are out of scope for this document. | ||||
| 2. Terminology | 2. Terminology | |||
| 2.1. BCP 14 | 2.1. BCP 14 | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119][RFC8174] when, and only when, they appear in all | 14 [RFC2119][RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2.2. Subset of a 6LoWPAN Glossary | 2.2. Subset of a 6LoWPAN Glossary | |||
| skipping to change at page 5, line 45 ¶ | skipping to change at page 6, line 19 ¶ | |||
| 3. Extending RFC 6550 | 3. Extending RFC 6550 | |||
| This specification introduces two new RPL Control Messages to enable | This specification introduces two new RPL Control Messages to enable | |||
| a RPL Aware Node (RAN) to request the establisment of a path from | a RPL Aware Node (RAN) to request the establisment of a path from | |||
| self to a Target. A RAN may request the installation of a path by | self to a Target. A RAN may request the installation of a path by | |||
| sending a new P-DAO Request PDR) Message to the Root. The Root | sending a new P-DAO Request PDR) Message to the Root. The Root | |||
| confirms with a new PDR-ACK message back to the requester RAN with a | confirms with a new PDR-ACK message back to the requester RAN with a | |||
| completion status once it is done installing the path. See | completion status once it is done installing the path. See | |||
| Section 5.1 for more. | Section 5.1 for more. | |||
| Section 6.7 of [RFC6550] specifies Control Message Options (CMO) to | Section 6.7 of [RFC6550] specifies RPL Control Message Options (CMO) | |||
| be placed in RPL messages such as the Destination Advertisement | to be placed in RPL messages such as the Destination Advertisement | |||
| Object (DAO) message. The RPL Target Option (RTO) and the Transit | Object (DAO) message. The RPL Target Option (RTO) and the Transit | |||
| Information Option (TIO) are such options. In Non-Storing Mode, the | Information Option (TIO) are such options. In Non-Storing Mode, the | |||
| TIO option is used in the DAO message to indicate a parent within a | TIO option is used in the DAO message to indicate a parent within a | |||
| DODAG. The TIO applies to the RTOs that immedially preceed it in the | DODAG. The TIO applies to the RTOs that immedially preceed it in the | |||
| message. Options may be factorized; multiple TIOs may be present to | message. Options may be factorized; multiple TIOs may be present to | |||
| indicate multiple routes to the one or more contiguous addresses | indicate multiple routes to the one or more contiguous addresses | |||
| indicated in the RTOs that immediately precede the TIOs in the RPL | indicated in the RTOs that immediately precede the TIOs in the RPL | |||
| message. | message. | |||
| This specification introduces two new CMOs referred to as Route | This specification introduces two new CMOs referred to as Route | |||
| Projection Options (RPO) to install Projected Routes. One RPO is the | Projection Options (RPO) to install Projected Routes. One RPO is the | |||
| Via Information Option (VIO) and the other is the Source-Routed VIO | Via Information Option (VIO) and the other is the Source-Routed VIO | |||
| (SRVIO). The VIO installs a route on each hop along a Projected | (SRVIO). The VIO installs a route on each hop along a Projected | |||
| Route (in a fashion analogous to RPL Storing Mode) whereas the SRVIO | Route (in a fashion analogous to RPL Storing Mode) whereas the SRVIO | |||
| installs a source-routing state at the ingress node, which uses that | installs a source-routing state at the ingress node, which uses that | |||
| state to insert a routing header in a fashion similar to Non-Storing | state to encapsulate a packet with an IPv6 Routing Header in a | |||
| Mode. Like the TIO, the RPOs MUST be preceded by one or more RTOs to | fashion similar to RPL Non-Storing Mode. Like the TIO, the RPOs MUST | |||
| which they apply, and they can be factorized: multiple contiguous | be preceded by exactly one RTO to which they apply, and they can be | |||
| RPOs indicate alternate paths to the Target(s), more in Section 5.3. | factorized: multiple contiguous RPOs indicate alternate paths to the | |||
| Target, more in Section 5.3. | ||||
| This specification also introduces a new CMO to enable a RPL Router | This specification also introduces a new CMO to enable a RAN to | |||
| to indicate its siblings to the Root, more in Figure 4. | advertise (some of) its siblings to the Root, using a new Sibling | |||
| Information Option (SIO) as specified in Section 5.4. | ||||
| 4. Identifying a Path | 4. Identifying a Path | |||
| It must be noted that RPL has a concept of Instance to represent | It must be noted that RPL has a concept of Instance to represent | |||
| different routing topologies but does not have a concept of an | different routing topologies but does not have a concept of an | |||
| administrative distance, which exists in certain proprietary | administrative distance, which exists in certain proprietary | |||
| implementations to sort out conflicts between multiple sources of | implementations to sort out conflicts between multiple sources of | |||
| routing information within one routing topology. This draft conforms | routing information within one routing topology. This draft conforms | |||
| the Instance model as follows: | the Instance model as follows: | |||
| * If the PCE needs to influence a particular Instance to add better | * If the PCE needs to influence a particular Instance to add better | |||
| routes in conformance with the routing objectives in that | routes in conformance with the routing objectives in that | |||
| Instance, it may do so as long as it does not create a loop. A | Instance, it may do so as long as it does not create a loop. A | |||
| Projected Route is always preferred over a route that is learned | Projected Route is always preferred over a route that is learned | |||
| via RPL. This specification uses the RPL Root as a proxy to the | via RPL. | |||
| PCE. If the actual PCE is a separate entity, then a protocol that | ||||
| is out of scope for this specification is needed to relay the | ||||
| control elements between the RPL Root and the PCE. | ||||
| * A PCE that installs a more specific (say, Traffic Engineered) and | * A PCE that installs a more specific (say, Traffic Engineered) and | |||
| possibly complex path (aka a Track) towards a particular Target | possibly complex path (aka a Track) towards a particular Target | |||
| MUST use a Local RPL Instance (see section 5 of [RFC6550]) | MUST use a Local RPL Instance (see section 5 of [RFC6550]) | |||
| associated to that Target to identify the path. We refer to that | associated to that Target to identify the path. We refer to that | |||
| Local RPLInstanceID as TrackID. A projected path is uniquely | Local RPLInstanceID as TrackID. A projected path is uniquely | |||
| identified within the RPL domain by the tuple (Target address, | identified within the RPL domain by the tuple (Target address, | |||
| TrackID). When packet is placed on a Track, a RPL Packet | TrackID). When packet is placed on a Track, a RPL Packet | |||
| Information (RPI) is added with the TrackID as RPLInstanceID. The | Information (RPI) is added with the TrackID as RPLInstanceID. The | |||
| RPLInstanceID has the 'D' flag set, indicating that the | RPLInstanceID has the 'D' flag set, indicating that the | |||
| skipping to change at page 8, line 37 ¶ | skipping to change at page 9, line 20 ¶ | |||
| | PDRSequence | Reserved | | | PDRSequence | Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Option(s)... | | Option(s)... | |||
| +-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+ | |||
| Figure 2: New PDR-ACK Control Message Format | Figure 2: New PDR-ACK Control Message Format | |||
| TrackID: The RPLInstanceID of the Track that was created. Set to 0 | TrackID: The RPLInstanceID of the Track that was created. Set to 0 | |||
| when no Track is created. | when no Track is created. | |||
| PDR-ACK Status: Indicates the completion. A value up to 127 means | PDR-ACK Status: Indicates the completion. Substructured as | |||
| acceptance Values of 128 and above are used for rejection codes; | indicated in Figure 3. | |||
| Track Lifetime: Indicates that remaining Lifetime for the Track, 0 | Track Lifetime: Indicates that remaining Lifetime for the Track, 0 | |||
| if the Track was destroyed or not created. | if the Track was destroyed or not created. | |||
| PDRSequence: 8-bit wrapping sequence number. It is incremented at | PDRSequence: 8-bit wrapping sequence number. It is incremented at | |||
| each PDR message and echoed in the PDR-ACK. | each PDR message and echoed in the PDR-ACK. | |||
| The PDR-ACK Status is further substructured as follows: | ||||
| 0 | ||||
| 0 1 2 3 4 5 6 7 | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| |E|R| Value | | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| Figure 3: PDR-ACK status Format | ||||
| The PDR-ACK Status subfields are: | ||||
| E: 1-bit flag. Set to indicate a rejection. When not set, a value | ||||
| of 0 indicates Success/Unqualified acceptance and other values | ||||
| indicate "not an outright rejection". | ||||
| R: 1-bit flag. Reserved, MUST be set to 0 by the sender and ignored | ||||
| by the receiver. | ||||
| Status Value: 6-bit unsigned integer. Values depedning on the | ||||
| setting of the 'E' flag as indicated respectively in Table 4 and | ||||
| Table 5. | ||||
| 5.3. Route Projection Options | 5.3. Route Projection Options | |||
| The RPOs indicate a series of IPv6 addresses that can be compressed | The RPOs indicate a series of IPv6 addresses that can be compressed | |||
| using the method defined in the "6LoWPAN Routing Header" [RFC8138] | using the method defined in the "6LoWPAN Routing Header" [RFC8138] | |||
| specification using the address of the Root found in the DODAGID | specification using the address of the Root found in the DODAGID | |||
| field of DIO messages as Compression Reference. | field of DIO messages as Compression Reference. | |||
| An RPO indicates a Projected Route that can be a serial Track in full | An RPO indicates a Projected Route that can be a serial Track in full | |||
| or a segment of a more complex Track. The Track is identified by a | or a segment of a more complex Track. The Track is identified by a | |||
| RPLInstanceID that is either Global or local to the Target of the | RPLInstanceID that is either Global or local to the Target of the | |||
| skipping to change at page 9, line 40 ¶ | skipping to change at page 10, line 47 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Via Address n . | . Via Address n . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 3: Via Information option format | Figure 4: Via Information option format | |||
| Option Type: 0x0A for VIO, 0x0B for SRVIO (to be confirmed by IANA) | Option Type: 0x0A for VIO, 0x0B for SRVIO (to be confirmed by IANA) | |||
| Option Length: In bytes; variable, depending on the number of Via | Option Length: In bytes; variable, depending on the number of Via | |||
| Addresses. | Addresses. | |||
| Compression Type: 16-bit unsigned integer. This is the SRH-6LoRH | Compression Type: 3-bit unsigned integer. This is the SRH-6LoRH | |||
| Type as defined in figure 7 in section 5.1 of [RFC8138] that | Type as defined in figure 7 in section 5.1 of [RFC8138] that | |||
| corresponds to the compression used for all the Via Addresses. | corresponds to the compression used for all the Via Addresses. | |||
| TrackID: 8-bit field indicating the topology Instance associated | TrackID: 8-bit field indicating the topology Instance associated | |||
| with the Track. | with the Track. | |||
| Path Lifetime: 8-bit unsigned integer. The length of time in | Path Lifetime: 8-bit unsigned integer. The length of time in | |||
| Lifetime Units (obtained from the Configuration option) that the | Lifetime Units (obtained from the Configuration option) that the | |||
| prefix is valid for route determination. The period starts when a | prefix is valid for route determination. The period starts when a | |||
| new Path Sequence is seen. A value of 255 (0xFF) represents | new Path Sequence is seen. A value of 255 (0xFF) represents | |||
| skipping to change at page 11, line 21 ¶ | skipping to change at page 12, line 21 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Sibling Address . | . Sibling Address . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: Sibling Information Option Format | Figure 5: Sibling Information Option Format | |||
| Option Type: 0x0C (to be confirmed by IANA) | Option Type: 0x0C (to be confirmed by IANA) | |||
| Option Length: In bytes; variable, depending on the number of Via | Option Length: In bytes; variable, depending on the number of Via | |||
| Addresses. | Addresses. | |||
| Compression Type: 16-bit unsigned integer. This is the SRH-6LoRH | Compression Type: 3-bit unsigned integer. This is the SRH-6LoRH | |||
| Type as defined in figure 7 in section 5.1 of [RFC8138] that | Type as defined in figure 7 in section 5.1 of [RFC8138] that | |||
| corresponds to the compression used for the Sibling Address. | corresponds to the compression used for the Sibling Address. | |||
| B: 1-bit flag that is set to indicate that the connectivity to the | B: 1-bit flag that is set to indicate that the connectivity to the | |||
| sibling is bidirectional and roughly symmetrical. In that case, | sibling is bidirectional and roughly symmetrical. In that case, | |||
| only one of the siblings may report the SIO for the hop. If 'B' | only one of the siblings may report the SIO for the hop. If 'B' | |||
| is not set then the SIO only indicates connectivity from the | is not set then the SIO only indicates connectivity from the | |||
| sibling to this node, and does not provide information on the hop | sibling to this node, and does not provide information on the hop | |||
| from this node to the sibling. | from this node to the sibling. | |||
| skipping to change at page 12, line 5 ¶ | skipping to change at page 13, line 5 ¶ | |||
| uses RPL for a particular use / environment MAY redefine the use | uses RPL for a particular use / environment MAY redefine the use | |||
| of this field to fit its needs. | of this field to fit its needs. | |||
| Step of Rank: 16-bit unsigned integer. This is the Step of Rank | Step of Rank: 16-bit unsigned integer. This is the Step of Rank | |||
| [RFC6550] as computed by the Objective Function between this node | [RFC6550] as computed by the Objective Function between this node | |||
| and the sibling. | and the sibling. | |||
| Reserved: MUST be set to zero by the sender and MUST be ignored by | Reserved: MUST be set to zero by the sender and MUST be ignored by | |||
| the receiver. | the receiver. | |||
| Sibling Address: 2 to 16 bytes, a compressed IPv6 Address. a Via | Sibling Address: 2 to 16 bytes, the IPv6 Address of the sibling in a | |||
| Address indicates the next hop towards the destination(s) that is | [RFC8138] compressed form as indicated by the Compression Type | |||
| indicated in the Target option that immediately precede the RPO in | field. | |||
| the DAO message. Via Addresses are indicated in the order of the | ||||
| data path from the ingress to the egress nodes. All Via addresses | ||||
| are expressed in the same size as indicated by the Compression | ||||
| Type | ||||
| An SIO MAY be immediately followed by a DAG Metric Container. In | An SIO MAY be immediately followed by a DAG Metric Container. In | |||
| that case the DAG Metric Container provides additional metrics for | that case the DAG Metric Container provides additional metrics for | |||
| the hop from the Sibling to this node. | the hop from the Sibling to this node. | |||
| 6. Projected DAO | 6. Projected DAO | |||
| This draft adds a capability to RPL whereby the Root of a DODAG | This draft adds a capability to RPL whereby the Root of a DODAG | |||
| projects a route by sending an extended DAO message called a | projects a route by sending an extended DAO message called a | |||
| Projected-DAO (P-DAO) to an arbitrary router in the DODAG, indicating | Projected-DAO (P-DAO) to an arbitrary router in the DODAG, indicating | |||
| skipping to change at page 13, line 14 ¶ | skipping to change at page 14, line 10 ¶ | |||
| which the routing state to the Target have to be installed via the | which the routing state to the Target have to be installed via the | |||
| next Via Address in the VIO. In normal operations, the P-DAO is | next Via Address in the VIO. In normal operations, the P-DAO is | |||
| propagated along the chain of Via Routers from the egress router | propagated along the chain of Via Routers from the egress router | |||
| of the path till the ingress one, which confirms the installation | of the path till the ingress one, which confirms the installation | |||
| to the Root with a DAO-ACK message. Note that the Root may be the | to the Root with a DAO-ACK message. Note that the Root may be the | |||
| ingress and it may be the egress of the path, that it can also be | ingress and it may be the egress of the path, that it can also be | |||
| neither but it cannot be both. | neither but it cannot be both. | |||
| In case of a forwarding error along a Projected Route, an ICMP error | In case of a forwarding error along a Projected Route, an ICMP error | |||
| is sent to the Root with a new Code "Error in Projected Route" (See | is sent to the Root with a new Code "Error in Projected Route" (See | |||
| Section 8.2). The Root can then modify or remove the Projected | Section 8.9). The Root can then modify or remove the Projected | |||
| Route. The "Error in Projected Route" message has the same format as | Route. The "Error in Projected Route" message has the same format as | |||
| the "Destination Unreachable Message", as specified in RFC 4443 | the "Destination Unreachable Message", as specified in RFC 4443 | |||
| [RFC4443]. The portion of the invoking packet that is sent back in | [RFC4443]. The portion of the invoking packet that is sent back in | |||
| the ICMP message SHOULD record at least up to the routing header if | the ICMP message SHOULD record at least up to the routing header if | |||
| one is present, and the routing header SHOULD be consumed by this | one is present, and the routing header SHOULD be consumed by this | |||
| node so that the destination in the IPv6 header is the next hop that | node so that the destination in the IPv6 header is the next hop that | |||
| this node could not reach. if a 6LoWPAN Routing Header (6LoRH) | this node could not reach. if a 6LoWPAN Routing Header (6LoRH) | |||
| [RFC8138] is used to carry the IPv6 routing information in the outter | [RFC8138] is used to carry the IPv6 routing information in the outter | |||
| header then that whole 6LoRH information SHOULD be present in the | header then that whole 6LoRH information SHOULD be present in the | |||
| ICMP message. The sender and exact operation depend on the Mode and | ICMP message. The sender and exact operation depend on the Mode and | |||
| is described in Section 6.1 and Section 6.2 respectively. | is described in Section 6.1 and Section 6.2 respectively. | |||
| 6.1. Non-Storing Mode Projected Route | 6.1. Non-Storing Mode Projected Route | |||
| As illustrated in Figure 5, a P-DAO that carries an SRVIO enables the | As illustrated in Figure 6, a P-DAO that carries an SRVIO enables the | |||
| Root to install a source-routed path towards a Target in any | Root to install a source-routed path towards a Target in any | |||
| particular router; with this path information the router can add a | particular router; with this path information the router can add a | |||
| source routed header reflecting the Projected Route to any packet for | source routed header reflecting the Projected Route to any packet for | |||
| which the current destination either is the said Target or can be | which the current destination either is the said Target or can be | |||
| reached via the Target. | reached via the Target. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| skipping to change at page 14, line 25 ¶ | skipping to change at page 15, line 5 ¶ | |||
| o o o o o o o o o o | Source . Path | o o o o o o o o o o | Source . Path | |||
| o o o o o o o o o | Route . From | o o o o o o o o o | Route . From | |||
| o o o o o o o o | Path . Root | o o o o o o o o | Path . Root | |||
| o o o o o Target V . To | o o o o o Target V . To | |||
| o o o o | Desti- | o o o o | Desti- | |||
| o o o o | nation | o o o o | nation | |||
| destination V | destination V | |||
| LLN | LLN | |||
| Figure 5: Projecting a Non-Storing Route | Figure 6: Projecting a Non-Storing Route | |||
| A route indicated by an SRVIO may be loose, meaning that the node | A route indicated by an SRVIO may be loose, meaning that the node | |||
| that owns the next listed Via Address is not necessarily a neighbor. | that owns the next listed Via Address is not necessarily a neighbor. | |||
| Without proper loop avoidance mechanisms, the interaction of loose | Without proper loop avoidance mechanisms, the interaction of loose | |||
| source routing and other mechanisms may effectively cause loops. In | source routing and other mechanisms may effectively cause loops. In | |||
| order to avoid those loops, if the router that installs a Projected | order to avoid those loops, if the router that installs a Projected | |||
| Route does not have a connected route (a direct adjacency) to the | Route does not have a connected route (a direct adjacency) to the | |||
| next soure routed hop and fails to locate it as a neighbor or a | next soure routed hop and fails to locate it as a neighbor or a | |||
| neighbor of a neighbor, then it MUST ensure that it has another | neighbor of a neighbor, then it MUST ensure that it has another | |||
| Projected Route to the next loose hop under the control of the same | Projected Route to the next loose hop under the control of the same | |||
| skipping to change at page 15, line 24 ¶ | skipping to change at page 16, line 7 ¶ | |||
| Source Routing Header" back to the source of the packet, as described | Source Routing Header" back to the source of the packet, as described | |||
| in section 11.2.2.3. of [RFC6550]. Upon this message, the | in section 11.2.2.3. of [RFC6550]. Upon this message, the | |||
| encapsulating node SHOULD stop using the source route path for a | encapsulating node SHOULD stop using the source route path for a | |||
| period of time and it SHOULD send an ICMP message with a Code "Error | period of time and it SHOULD send an ICMP message with a Code "Error | |||
| in Projected Route" to the Root. Failure to follow these steps may | in Projected Route" to the Root. Failure to follow these steps may | |||
| result in packet loss and wasted resources along the source route | result in packet loss and wasted resources along the source route | |||
| path that is broken. | path that is broken. | |||
| 6.2. Storing-Mode Projected Route | 6.2. Storing-Mode Projected Route | |||
| As illustrated in Figure 6, the Storing Mode route projection is used | As illustrated in Figure 7, the Storing Mode route projection is used | |||
| by the Root to install a routing state towards a Target in the | by the Root to install a routing state towards a Target in the | |||
| routers along a segment between an ingress and an egress router; this | routers along a segment between an ingress and an egress router; this | |||
| enables the routers to forward along that segment any packet for | enables the routers to forward along that segment any packet for | |||
| which the next loose hop is the said Target, for Instance a loose | which the next loose hop is the said Target, for Instance a loose | |||
| source routed packet for which the next loose hop is the Target, or a | source routed packet for which the next loose hop is the Target, or a | |||
| packet for which the router has a routing state to the final | packet for which the router has a routing state to the final | |||
| destination via the Target. | destination via the Target. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| skipping to change at page 15, line 50 ¶ | skipping to change at page 16, line 33 ¶ | |||
| | | DAO | ACK | | | | DAO | ACK | | |||
| o o o o | | | | o o o o | | | | |||
| o o o o o o o o o | ^ | Projected . | o o o o o o o o o | ^ | Projected . | |||
| o o o o o o o o o o | | DAO | Route . | o o o o o o o o o o | | DAO | Route . | |||
| o o o o o o o o o | ^ | . | o o o o o o o o o | ^ | . | |||
| o o o o o o o o v | DAO v . | o o o o o o o o v | DAO v . | |||
| o o LLN o o o | | o o LLN o o o | | |||
| o o o o o Loose Source Route Path | | o o o o o Loose Source Route Path | | |||
| o o o o From Root To Destination v | o o o o From Root To Destination v | |||
| Figure 6: Projecting a route | Figure 7: Projecting a route | |||
| In order to install the relevant routing state along the segment | In order to install the relevant routing state along the segment | |||
| between an ingress and an egress routers, the Root sends a unicast | between an ingress and an egress routers, the Root sends a unicast | |||
| P-DAO message to the egress router of the routing segment that must | P-DAO message to the egress router of the routing segment that must | |||
| be installed. The P-DAO message contains the ordered list of hops | be installed. The P-DAO message contains the ordered list of hops | |||
| along the segment as a direct sequence of Via Information options | along the segment as a direct sequence of Via Information options | |||
| that are preceded by one or more RPL Target options to which they | that are preceded by one or more RPL Target options to which they | |||
| relate. Each Via Information option contains a Path Lifetime for | relate. Each Via Information option contains a Path Lifetime for | |||
| which the state is to be maintained. | which the state is to be maintained. | |||
| skipping to change at page 17, line 44 ¶ | skipping to change at page 18, line 28 ¶ | |||
| network also applies to the flows in this draft. | network also applies to the flows in this draft. | |||
| TODO: should probably consider how P-DAO messages could be abused by | TODO: should probably consider how P-DAO messages could be abused by | |||
| a) rogue nodes b) via replay of messages c) if use of P-DAO messages | a) rogue nodes b) via replay of messages c) if use of P-DAO messages | |||
| could in fact deal with any threats? | could in fact deal with any threats? | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| 8.1. New RPL Control Codes | 8.1. New RPL Control Codes | |||
| This document extends the IANA registry created by RFC 6550 for RPL | This document extends the IANA Subregistry created by RFC 6550 for | |||
| Control Codes as follows: | RPL Control Codes as indicated in Table 1: | |||
| +------+--------------------------------------+---------------+ | +------+-----------------------------+---------------+ | |||
| | Code | Description | Reference | | | Code | Description | Reference | | |||
| +======+======================================+===============+ | +======+=============================+===============+ | |||
| | 0x0A | Via Information option | This document | | | 0x09 | Projected DAO Request (PDR) | This document | | |||
| +------+--------------------------------------+---------------+ | +------+-----------------------------+---------------+ | |||
| | 0x0B | Source-Routed Via Information option | This document | | | 0x0A | PDR-ACK | This document | | |||
| +------+--------------------------------------+---------------+ | +------+-----------------------------+---------------+ | |||
| Table 1: RPL Control Codes | Table 1: New RPL Control Codes | |||
| This document is updating the registry created by RFC 6550 for the | 8.2. New RPL Control Message Options | |||
| RPL 3-bit Mode of Operation (MOP) as follows: | ||||
| +-----------+-------------------------------+-----------+ | This document extends the IANA Subregistry created by RFC 6550 for | |||
| | MOP value | Description | Reference | | RPL Control Message Options as indicated in Table 2: | |||
| +===========+===============================+===========+ | ||||
| | 5 | Non-Storing mode of operation | This | | ||||
| | | with Projected Routes | document | | ||||
| +-----------+-------------------------------+-----------+ | ||||
| | 6 | Storing mode of operation | This | | ||||
| | | with Projected Routes | document | | ||||
| +-----------+-------------------------------+-----------+ | ||||
| Table 2: DIO Mode of operation | +-------+--------------------------------------+---------------+ | |||
| | Value | Meaning | Reference | | ||||
| +=======+======================================+===============+ | ||||
| | 0x0B | Via Information option | This document | | ||||
| +-------+--------------------------------------+---------------+ | ||||
| | 0x0C | Source-Routed Via Information option | This document | | ||||
| +-------+--------------------------------------+---------------+ | ||||
| | 0x0D | Sibling Information option | This document | | ||||
| +-------+--------------------------------------+---------------+ | ||||
| 8.2. Error in Projected Route ICMPv6 Code | Table 2: RPL Control Message Options | |||
| 8.3. New SubRegistry for the Projected DAO Request (PDR) Flags | ||||
| IANA is required to create a registry for the 8-bit Projected DAO | ||||
| Request (PDR) Flags field. Each bit is tracked with the following | ||||
| qualities: | ||||
| * Bit number (counting from bit 0 as the most significant bit) | ||||
| * Capability description | ||||
| * Reference | ||||
| Registration procedure is "Standards Action" [RFC8126]. The initial | ||||
| allocation is as indicated in Table 3: | ||||
| +------------+------------------------+---------------+ | ||||
| | Bit number | Capability description | Reference | | ||||
| +============+========================+===============+ | ||||
| | 0 | PDR-ACK request (K) | This document | | ||||
| +------------+------------------------+---------------+ | ||||
| | 1 | Requested path should | This document | | ||||
| | | be redundant (R) | | | ||||
| +------------+------------------------+---------------+ | ||||
| Table 3: Initial PDR Flags | ||||
| 8.4. New SubRegistry for the PDR-ACK Flags | ||||
| IANA is required to create an subregistry for the 8-bit PDR-ACK Flags | ||||
| field. Each bit is tracked with the following qualities: | ||||
| * Bit number (counting from bit 0 as the most significant bit) | ||||
| * Capability description | ||||
| * Reference | ||||
| Registration procedure is "Standards Action" [RFC8126]. No bit is | ||||
| currently defined for the PDR-ACK Flags. | ||||
| 8.5. New Subregistry for the PDR-ACK Acceptance Status values | ||||
| IANA is requested to create a new subregistry for the PDR-ACK | ||||
| Acceptance Status values. | ||||
| * Possible values are 6-bit unsigned integers (0..63). | ||||
| * Registration procedure is "Standards Action" [RFC8126]. | ||||
| * Initial allocation is as indicated in Table 4: | ||||
| +-------+------------------------+---------------+ | ||||
| | Value | Meaning | Reference | | ||||
| +=======+========================+===============+ | ||||
| | 0 | Unqualified acceptance | This document | | ||||
| +-------+------------------------+---------------+ | ||||
| Table 4: Acceptance values of the PDR-ACK Status | ||||
| 8.6. New Subregistry for the PDR-ACK Rejection Status values | ||||
| IANA is requested to create a new subregistry for the PDR-ACK | ||||
| Rejection Status values. | ||||
| * Possible values are 6-bit unsigned integers (0..63). | ||||
| * Registration procedure is "Standards Action" [RFC8126]. | ||||
| * Initial allocation is as indicated in Table 5: | ||||
| +-------+-----------------------+---------------+ | ||||
| | Value | Meaning | Reference | | ||||
| +=======+=======================+===============+ | ||||
| | 0 | Unqualified rejection | This document | | ||||
| +-------+-----------------------+---------------+ | ||||
| Table 5: Rejection values of the PDR-ACK Status | ||||
| 8.7. New SubRegistry for the Route Projection Options (RPO) Flags | ||||
| IANA is requested to create a new subregistry for the 5-bit Route | ||||
| Projection Options (RPO) Flags field. Each bit is tracked with the | ||||
| following qualities: | ||||
| * Bit number (counting from bit 0 as the most significant bit) | ||||
| * Capability description | ||||
| * Reference | ||||
| Registration procedure is "Standards Action" [RFC8126]. No bit is | ||||
| currently defined for the Route Projection Options (RPO) Flags. | ||||
| 8.8. New SubRegistry for the Sibling Information Option (SIO) Flags | ||||
| IANA is required to create a registry for the 5-bit Sibling | ||||
| Information Option (SIO) Flags field. Each bit is tracked with the | ||||
| following qualities: | ||||
| * Bit number (counting from bit 0 as the most significant bit) | ||||
| * Capability description | ||||
| * Reference | ||||
| Registration procedure is "Standards Action" [RFC8126]. The initial | ||||
| allocation is as indicated in Table 6: | ||||
| +------------+-----------------------------------+---------------+ | ||||
| | Bit number | Capability description | Reference | | ||||
| +============+===================================+===============+ | ||||
| | 0 | Connectivity is bidirectional (B) | This document | | ||||
| +------------+-----------------------------------+---------------+ | ||||
| Table 6: Initial SIO Flags | ||||
| 8.9. Error in Projected Route ICMPv6 Code | ||||
| In some cases RPL will return an ICMPv6 error message when a message | In some cases RPL will return an ICMPv6 error message when a message | |||
| cannot be forwarded along a Projected Route. This ICMPv6 error | cannot be forwarded along a Projected Route. This ICMPv6 error | |||
| message is "Error in Projected Route". | message is "Error in Projected Route". | |||
| IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message | IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message | |||
| Types. ICMPv6 Message Type 1 describes "Destination Unreachable" | Types. ICMPv6 Message Type 1 describes "Destination Unreachable" | |||
| codes. This specification requires that a new code is allocated from | codes. This specification requires that a new code is allocated from | |||
| the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error | the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error | |||
| in Projected Route", with a suggested code value of 8, to be | in Projected Route", with a suggested code value of 8, to be | |||
| skipping to change at page 19, line 40 ¶ | skipping to change at page 22, line 45 ¶ | |||
| [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | |||
| "IPv6 over Low-Power Wireless Personal Area Network | "IPv6 over Low-Power Wireless Personal Area Network | |||
| (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | |||
| April 2017, <https://www.rfc-editor.org/info/rfc8138>. | April 2017, <https://www.rfc-editor.org/info/rfc8138>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [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>. | ||||
| 11. Informative References | 11. Informative References | |||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | |||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | |||
| 2014, <https://www.rfc-editor.org/info/rfc7102>. | 2014, <https://www.rfc-editor.org/info/rfc7102>. | |||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | |||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | J. Martocci, "Reactive Discovery of Point-to-Point Routes | |||
| in Low-Power and Lossy Networks", RFC 6997, | in Low-Power and Lossy Networks", RFC 6997, | |||
| DOI 10.17487/RFC6997, August 2013, | DOI 10.17487/RFC6997, August 2013, | |||
| <https://www.rfc-editor.org/info/rfc6997>. | <https://www.rfc-editor.org/info/rfc6997>. | |||
| [6TiSCH-ARCHI] | [6TiSCH-ARCHI] | |||
| 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", Work in Progress, Internet-Draft, | of IEEE 802.15.4", Work in Progress, Internet-Draft, | |||
| draft-ietf-6tisch-architecture-27, 18 October 2019, | draft-ietf-6tisch-architecture-28, 29 October 2019, | |||
| <https://tools.ietf.org/html/draft-ietf-6tisch- | <https://tools.ietf.org/html/draft-ietf-6tisch- | |||
| architecture-27>. | architecture-28>. | |||
| [RAW-PS] Thubert, P. and G. Papadopoulos, "Reliable and Available | [RAW-PS] Thubert, P. and G. Papadopoulos, "Reliable and Available | |||
| Wireless Problem Statement", Work in Progress, Internet- | Wireless Problem Statement", Work in Progress, Internet- | |||
| Draft, draft-pthubert-raw-problem-statement-04, 23 October | Draft, draft-pthubert-raw-problem-statement-04, 23 October | |||
| 2019, <https://tools.ietf.org/html/draft-pthubert-raw- | 2019, <https://tools.ietf.org/html/draft-pthubert-raw- | |||
| problem-statement-04>. | problem-statement-04>. | |||
| [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | |||
| "Deterministic Networking Architecture", RFC 8655, | "Deterministic Networking Architecture", RFC 8655, | |||
| DOI 10.17487/RFC8655, October 2019, | DOI 10.17487/RFC8655, October 2019, | |||
| <https://www.rfc-editor.org/info/rfc8655>. | <https://www.rfc-editor.org/info/rfc8655>. | |||
| [PCE] IETF, "Path Computation Element", November 2019, | [PCE] IETF, "Path Computation Element", November 2019, | |||
| <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | |||
| Appendix A. Applications | Appendix A. Applications | |||
| A.1. Loose Source Routing in Non-storing Mode | A.1. Loose Source Routing in Non-storing Mode | |||
| A RPL implementation operating in a very constrained LLN typically | A RPL implementation operating in a very constrained LLN typically | |||
| uses the Non-Storing Mode of Operation as represented in Figure 7. | uses the Non-Storing Mode of Operation as represented in Figure 8. | |||
| In that mode, a RPL node indicates a parent-child relationship to the | In that mode, a RPL node indicates a parent-child relationship to the | |||
| Root, using a Destination Advertisement Object (DAO) that is unicast | Root, using a Destination Advertisement Object (DAO) that is unicast | |||
| from the node directly to the Root, and the Root typically builds a | from the node directly to the Root, and the Root typically builds a | |||
| source routed path to a destination down the DODAG by recursively | source routed path to a destination down the DODAG by recursively | |||
| concatenating this information. | concatenating this information. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| skipping to change at page 21, line 5 ¶ | skipping to change at page 24, line 21 ¶ | |||
| +-----+ ^ | | | +-----+ ^ | | | |||
| | | DAO | ACK | | | | DAO | ACK | | |||
| o o o o | | | Strict | o o o o | | | Strict | |||
| o o o o o o o o o | | | Source | o o o o o o o o o | | | Source | |||
| o o o o o o o o o o | | | Route | o o o o o o o o o o | | | Route | |||
| o o o o o o o o o | | | | o o o o o o o o o | | | | |||
| o o o o o o o o | v v | o o o o o o o o | v v | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 7: RPL non-storing mode of operation | Figure 8: RPL non-storing mode of operation | |||
| Based on the parent-children relationships expressed in the non- | Based on the parent-children relationships expressed in the non- | |||
| storing DAO messages,the Root possesses topological information about | storing DAO messages,the Root possesses topological information about | |||
| the whole network, though this information is limited to the | the whole network, though this information is limited to the | |||
| structure of the DODAG for which it is the destination. A packet | structure of the DODAG for which it is the destination. A packet | |||
| that is generated within the domain will always reach the Root, which | that is generated within the domain will always reach the Root, which | |||
| can then apply a source routing information to reach the destination | can then apply a source routing information to reach the destination | |||
| if the destination is also in the DODAG. Similarly, a packet coming | if the destination is also in the DODAG. Similarly, a packet coming | |||
| from the outside of the domain for a destination that is expected to | from the outside of the domain for a destination that is expected to | |||
| be in a RPL domain reaches the Root. | be in a RPL domain reaches the Root. | |||
| skipping to change at page 22, line 13 ¶ | skipping to change at page 25, line 24 ¶ | |||
| effectively become loose. | effectively become loose. | |||
| A.2. Transversal Routes in storing and non-storing modes | A.2. Transversal Routes in storing and non-storing modes | |||
| RPL is optimized for Point-to-Multipoint (P2MP) and Multipoint-to- | RPL is optimized for Point-to-Multipoint (P2MP) and Multipoint-to- | |||
| Point (MP2P), whereby routes are always installed along the RPL DODAG | Point (MP2P), whereby routes are always installed along the RPL DODAG | |||
| respectively from and towards the DODAG Root. Transversal Peer to | respectively from and towards the DODAG Root. Transversal Peer to | |||
| Peer (P2P) routes in a RPL network will generally suffer from some | Peer (P2P) routes in a RPL network will generally suffer from some | |||
| elongated (stretched) path versus the best possible path, since | elongated (stretched) path versus the best possible path, since | |||
| routing between 2 nodes always happens via a common parent, as | routing between 2 nodes always happens via a common parent, as | |||
| illustrated in Figure 8: | illustrated in Figure 9: | |||
| * in non-storing mode, all packets routed within the DODAG flow all | * in non-storing mode, all packets routed within the DODAG flow all | |||
| the way up to the Root of the DODAG. If the destination is in the | the way up to the Root of the DODAG. If the destination is in the | |||
| same DODAG, the Root must encapsulate the packet to place a | same DODAG, the Root must encapsulate the packet to place a | |||
| Routing Header that has the strict source route information down | Routing Header that has the strict source route information down | |||
| the DODAG to the destination. This will be the case even if the | the DODAG to the destination. This will be the case even if the | |||
| destination is relatively close to the source and the Root is | destination is relatively close to the source and the Root is | |||
| relatively far off. | relatively far off. | |||
| * In storing mode, unless the destination is a child of the source, | * In storing mode, unless the destination is a child of the source, | |||
| skipping to change at page 22, line 48 ¶ | skipping to change at page 26, line 21 ¶ | |||
| +-----+ | +-----+ | |||
| X | X | |||
| ^ v o o | ^ v o o | |||
| ^ o o v o o o o o | ^ o o v o o o o o | |||
| ^ o o o v o o o o o | ^ o o o v o o o o o | |||
| ^ o o v o o o o o | ^ o o v o o o o o | |||
| S o o o D o o o | S o o o D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 8: Routing Stretch between S and D via common parent X | Figure 9: Routing Stretch between S and D via common parent X | |||
| It results that it is often beneficial to enable transversal P2P | It results that it is often beneficial to enable transversal P2P | |||
| routes, either if the RPL route presents a stretch from shortest | routes, either if the RPL route presents a stretch from shortest | |||
| path, or if the new route is engineered with a different objective. | path, or if the new route is engineered with a different objective. | |||
| For that reason, earlier work at the IETF introduced the "Reactive | For that reason, earlier work at the IETF introduced the "Reactive | |||
| Discovery of Point-to-Point Routes in Low Power and Lossy Networks" | Discovery of Point-to-Point Routes in Low Power and Lossy Networks" | |||
| [RFC6997], which specifies a distributed method for establishing | [RFC6997], which specifies a distributed method for establishing | |||
| optimized P2P routes. This draft proposes an alternate based on a | optimized P2P routes. This draft proposes an alternate based on a | |||
| centralized route computation. | centralized route computation. | |||
| skipping to change at page 23, line 27 ¶ | skipping to change at page 26, line 48 ¶ | |||
| +-----+ | +-----+ | |||
| | | | | |||
| o o o o | o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| o o o o o o o o o o | o o o o o o o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| S>>A>>>B>>C>>>D o o o | S>>A>>>B>>C>>>D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 9: Projected Transversal Route | Figure 10: Projected Transversal Route | |||
| This specification enables to store source-routed or storing mode | This specification enables to store source-routed or storing mode | |||
| state in intermediate routers, which enables to limit the stretch of | state in intermediate routers, which enables to limit the stretch of | |||
| a P2P route and maintain the characteristics within a given SLA. An | a P2P route and maintain the characteristics within a given SLA. An | |||
| example of service using this mechanism oculd be a control loop that | example of service using this mechanism oculd be a control loop that | |||
| would be installed in a network that uses classical RPL for | would be installed in a network that uses classical RPL for | |||
| asynchronous data collection. In that case, the P2P path may be | asynchronous data collection. In that case, the P2P path may be | |||
| installed in a different RPL Instance, with a different objective | installed in a different RPL Instance, with a different objective | |||
| function. | function. | |||
| Appendix B. Examples | Appendix B. Examples | |||
| B.1. Using storing mode P-DAO in non-storing mode MOP | B.1. Using storing mode P-DAO in non-storing mode MOP | |||
| In non-storing mode, the DAG Root maintains the knowledge of the | In non-storing mode, the DAG Root maintains the knowledge of the | |||
| whole DODAG topology, so when both the source and the destination of | whole DODAG topology, so when both the source and the destination of | |||
| a packet are in the DODAG, the Root can determine the common parent | a packet are in the DODAG, the Root can determine the common parent | |||
| that would have been used in storing mode, and thus the list of nodes | that would have been used in storing mode, and thus the list of nodes | |||
| in the path between the common parent and the destination. For | in the path between the common parent and the destination. For | |||
| Instance in the diagram shown in Figure 10, if the source is node 41 | Instance in the diagram shown in Figure 11, if the source is node 41 | |||
| and the destination is node 52, then the common parent is node 22. | and the destination is node 52, then the common parent is node 22. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | \ \____ | | \ \____ | |||
| skipping to change at page 24, line 26 ¶ | skipping to change at page 27, line 43 ¶ | |||
| o 22 o 23 o 24 o 25 | o 22 o 23 o 24 o 25 | |||
| / \ | \ \ | / \ | \ \ | |||
| o 31 o 32 o o o 35 | o 31 o 32 o o o 35 | |||
| / / | \ | \ | / / | \ | \ | |||
| o 41 o 42 o o o 45 o 46 | o 41 o 42 o o o 45 o 46 | |||
| | | | | \ | | | | | | \ | | |||
| o 51 o 52 o 53 o o 55 o 56 | o 51 o 52 o 53 o o 55 o 56 | |||
| LLN | LLN | |||
| Figure 10: Example DODAG forming a logical tree topology | Figure 11: Example DODAG forming a logical tree topology | |||
| With this draft, the Root can install a storing mode routing states | With this draft, the Root can install a storing mode routing states | |||
| along a segment that is either from itself to the destination, or | along a segment that is either from itself to the destination, or | |||
| from one or more common parents for a particular source/destination | from one or more common parents for a particular source/destination | |||
| pair towards that destination (in this particular example, this would | pair towards that destination (in this particular example, this would | |||
| be the segment made of nodes 22, 32, 42). | be the segment made of nodes 22, 32, 42). | |||
| In the example below, say that there is a lot of traffic to nodes 55 | In the example below, say that there is a lot of traffic to nodes 55 | |||
| and 56 and the Root decides to reduce the size of routing headers to | and 56 and the Root decides to reduce the size of routing headers to | |||
| those destinations. The Root can first send a DAO to node 45 | those destinations. The Root can first send a DAO to node 45 | |||
| skipping to change at page 25, line 27 ¶ | skipping to change at page 28, line 47 ¶ | |||
| +-----+ | +-----+ | |||
| | P-DAO message to C | | P-DAO message to C | |||
| o | o o | o | o o | |||
| o o o | o o o o o | o o o | o o o o o | |||
| o o o | o o o o o o | o o o | o o o o o o | |||
| o o V o o o o o o | o o V o o o o o o | |||
| S A B C D o o o | S A B C D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 11: P-DAO from Root | Figure 12: P-DAO from Root | |||
| Upon reception of the P-DAO, C validates that it can reach D, e.g. | Upon reception of the P-DAO, C validates that it can reach D, e.g. | |||
| using IPv6 Neighbor Discovery, and if so, propagates the P-DAO | using IPv6 Neighbor Discovery, and if so, propagates the P-DAO | |||
| unchanged to B. | unchanged to B. | |||
| B checks that it can reach C and of so, installs a route towards D | B checks that it can reach C and of so, installs a route towards D | |||
| via C. Then it propagates the P-DAO to A. | via C. Then it propagates the P-DAO to A. | |||
| The process recurses till the P-DAO reaches S, the ingress of the | The process recurses till the P-DAO reaches S, the ingress of the | |||
| segment, which installs a route to D via A and sends a DAO-ACK to the | segment, which installs a route to D via A and sends a DAO-ACK to the | |||
| skipping to change at page 26, line 21 ¶ | skipping to change at page 29, line 28 ¶ | |||
| +-----+ | +-----+ | |||
| ^ P-DAO-ACK from S | ^ P-DAO-ACK from S | |||
| / o o o | / o o o | |||
| / o o o o o o o | / o o o o o o o | |||
| | o o o o o o o o o | | o o o o o o o o o | |||
| | o o o o o o o o | | o o o o o o o o | |||
| S A B C D o o o | S A B C D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 12: P-DAO-ACK to Root | Figure 13: P-DAO-ACK to Root | |||
| As a result, a transversal route is installed that does not need to | As a result, a transversal route is installed that does not need to | |||
| follow the DODAG structure. | follow the DODAG structure. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | | | | |||
| o o o o | o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| o o o o o o o o o o | o o o o o o o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| S>>A>>>B>>C>>>D o o o | S>>A>>>B>>C>>>D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 13: Projected Transversal Route | Figure 14: Projected Transversal Route | |||
| Authors' Addresses | Authors' Addresses | |||
| Pascal Thubert (editor) | Pascal Thubert (editor) | |||
| Cisco Systems, Inc | Cisco Systems, Inc | |||
| Building D, 45 Allee des Ormes - BP1200 | Building D, 45 Allee des Ormes - BP1200 | |||
| 06254 Mougins - Sophia Antipolis | 06254 Mougins - Sophia Antipolis | |||
| France | France | |||
| Phone: +33 497 23 26 34 | Phone: +33 497 23 26 34 | |||
| Email: pthubert@cisco.com | Email: pthubert@cisco.com | |||
| Rahul Arvind Jadhav | Rahul Arvind Jadhav | |||
| End of changes. 55 change blocks. | ||||
| 139 lines changed or deleted | 297 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/ | ||||