| < draft-ietf-roll-dao-projection-04.txt | draft-ietf-roll-dao-projection-05.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
| Internet-Draft Cisco | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track R. Jadhav | Intended status: Standards Track R. Jadhav | |||
| Expires: December 21, 2018 Huawei Tech | Expires: June 24, 2019 Huawei Tech | |||
| M. Gillmore | ||||
| Itron | ||||
| J. Pylakutty | J. Pylakutty | |||
| Cisco | Cisco | |||
| June 19, 2018 | December 21, 2018 | |||
| Root initiated routing state in RPL | Root initiated routing state in RPL | |||
| draft-ietf-roll-dao-projection-04 | draft-ietf-roll-dao-projection-05 | |||
| Abstract | Abstract | |||
| This document proposes a protocol extension to RPL that enables to | This document proposes a protocol extension to RPL that enables to | |||
| install a limited amount of centrally-computed routes in a RPL graph, | install a limited amount of centrally-computed routes in a RPL graph, | |||
| enabling loose source routing down a non-storing mode DODAG, or | enabling loose source routing down a non-storing mode DODAG, or | |||
| transversal routes inside the DODAG. As opposed to the classical | transversal routes inside the DODAG. As opposed to the classical | |||
| route injection in RPL that are injected by the end devices, this | route injection in RPL that are injected by the end devices, this | |||
| draft enables the root of the DODAG to projects the routes that are | draft enables the root of the DODAG to projects the routes that are | |||
| needed on the nodes where they should be installed. | needed on the nodes where they should be installed. | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 41 ¶ | |||
| 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 December 21, 2018. | This Internet-Draft will expire on June 24, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 15 ¶ | skipping to change at page 2, line 17 ¶ | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. References . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.2. Subset of a 6LoWPAN Glossary . . . . . . . . . . . . . . 4 | |||
| 2.3. Subset of a 6LoWPAN Glossary . . . . . . . . . . . . . . 4 | 2.3. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.4. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 5 | 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. New RPL Control Message Options . . . . . . . . . . . . . . . 5 | 3.1. RPL Instances . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3.2. New RPL Control Message Options . . . . . . . . . . . . . 6 | |||
| 5.1. Non-storing Mode Projected Route . . . . . . . . . . . . 8 | 3.3. Projected DAO . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 5.2. Storing-Mode Projected Route . . . . . . . . . . . . . . 9 | 3.3.1. Non-Storing Mode P-Route . . . . . . . . . . . . . . 8 | |||
| 6. Applications . . . . . . . . . . . . . . . . . . . . . . . . 11 | 3.3.2. Storing-Mode P-Route . . . . . . . . . . . . . . . . 10 | |||
| 6.1. Loose Source Routing in Non-storing Mode . . . . . . . . 11 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | |||
| 6.2. Transversal Routes in storing and non-storing modes . . . 13 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 7. RPL Instances . . . . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 12 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 15 | 5.2. Error in Projected Route ICMPv6 Code . . . . . . . . . . 13 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 | 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 14 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . 16 | 7.2. Informative References . . . . . . . . . . . . . . . . . 15 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . 17 | Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 15 | |||
| Appendix A. Examples . . . . . . . . . . . . . . . . . . . . . . 18 | A.1. Loose Source Routing in Non-storing Mode . . . . . . . . 15 | |||
| A.1. Using storing mode P-DAO in non-storing mode MOP . . . . 18 | A.2. Transversal Routes in storing and non-storing modes . . . 17 | |||
| A.2. Projecting a storing-mode transversal route . . . . . . . 19 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 20 | B.1. Using storing mode P-DAO in non-storing mode MOP . . . . 19 | |||
| B.2. Projecting a storing-mode transversal route . . . . . . . 20 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
| 1. Introduction | 1. Introduction | |||
| The "Routing Protocol for Low Power and Lossy Networks" [RFC6550] | The "Routing Protocol for Low Power and Lossy Networks" [RFC6550] | |||
| (LLN)(RPL) is a generic Distance Vector protocol that is well suited | (LLN)(RPL) is a generic Distance Vector protocol that is well suited | |||
| for application in a variety of low energy Internet of Things (IoT) | low energy Internet of Things (IoT) networks. RPL forms Destination | |||
| networks. RPL forms Destination Oriented Directed Acyclic Graphs | Oriented Directed Acyclic Graphs (DODAGs) in which the root often | |||
| (DODAGs) in which the root often acts as the Border Router to connect | acts as the Border Router to connect the RPL domain to the Internet. | |||
| the RPL domain to the Internet. The root is responsible to select | The root is responsible to select the RPL Instance that is used to | |||
| the RPL Instance that is used to forward a packet coming from the | forward a packet coming from the Internet into the RPL domain and set | |||
| Internet into the RPL domain and set the related RPL information in | the related RPL information in the packets. | |||
| the packets. | ||||
| The 6TiSCH architecture [I-D.ietf-6tisch-architecture] leverages RPL | The 6TiSCH architecture [I-D.ietf-6tisch-architecture] leverages RPL | |||
| for its routing operation and considers the Deterministic Networking | for its routing operation and considers the Deterministic Networking | |||
| Architecture [I-D.ietf-detnet-architecture] as one possible model | Architecture [I-D.ietf-detnet-architecture] as one possible model | |||
| whereby the device resources and capabilities are exposed to an | whereby the device resources and capabilities are exposed to an | |||
| external controller which installs routing states into the network | external controller which installs routing states into the network | |||
| based on some objective functions that reside in that external | based on some objective functions that reside in that external | |||
| entity. | entity. | |||
| 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 Path Computation Element ([PCE]) with a global | |||
| visibility on the system could install additional P2P routes that are | visibility on the system could install additional P2P routes that are | |||
| more optimized for the current needs as expressed by the objective | more optimized for the current needs as expressed by the objective | |||
| function. | function. | |||
| This draft enables a RPL root to install and maintain projected | This draft enables a RPL root to install and maintain projected | |||
| routes (P-routes) within its DODAG, along a selected set of nodes | routes (P-Routes) within its DODAG, along a selected set of nodes | |||
| that may or may not include self, for a chosen duration. This | that may or may not include self, for a chosen duration. This | |||
| potentially enables routes that are more optimized than those | potentially enables routes that are more optimized than those | |||
| obtained with the distributed operation of RPL, either in terms of | obtained with the distributed operation of RPL, either in terms of | |||
| the size of a source-route header or in terms of path length, which | the size of a source-route header or in terms of path length, which | |||
| impacts both the latency and the packet delivery ratio. P-routes may | impacts both the latency and the packet delivery ratio. P-routes may | |||
| be installed in either Storing and Non-Storing Modes Instances of the | be installed in either Storing and Non-Storing Modes Instances of the | |||
| classical RPL operation, resulting in potentially hybrid situations | classical RPL operation, resulting in potentially hybrid situations | |||
| where the mode of some P-routes is different from that of the other | where the mode of some P-routes is different from that of the other | |||
| routes in the RPL Instance. | routes in the RPL Instance. | |||
| Projected routes must be used with the parsimony to limit the amount | P-Routes must be used with the parsimony to limit the amount of state | |||
| of state that is installed in each device to fit within its | that is installed in each device to fit within its resources, and to | |||
| resources, and to limit the amount of rerouted traffic to fit within | limit the amount of rerouted traffic to fit within the capabilities | |||
| the capabilities of the transmission links. The algorithm used to | of the transmission links. The algorithm used to compute the paths | |||
| compute the paths and the protocol used to learn the topology of the | and the protocol used to learn the topology of the network and the | |||
| network and the resources that are available in devices and in the | resources that are available in devices and in the network are out of | |||
| network are out of scope for this document. Possibly with the | scope for this document. Possibly with the assistance of a Path | |||
| assistance of a Path Computation Element ([PCE]) that could have a | Computation Element ([PCE]) that could have a better visibility on | |||
| better visibility on the larger system, the root computes which | the larger system, the root computes which segment could be optimized | |||
| segment could be optimized and uses this draft to install the | and uses this draft to install the corresponding P-Routes. | |||
| corresponding projected routes. | ||||
| 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. References | 2.2. Subset of a 6LoWPAN Glossary | |||
| In this document, readers will encounter terms and concepts that are | ||||
| discussed in the following documents: | ||||
| o "Routing Protocol for Low Power and Lossy Networks" [RFC6550], and | ||||
| o "Terminology in Low power And Lossy Networks" [RFC7102]. | ||||
| 2.3. Subset of a 6LoWPAN Glossary | ||||
| This document often uses the following acronyms: | This document often uses the following acronyms: | |||
| 6BBR: 6LoWPAN Backbone Router | 6BBR: 6LoWPAN Backbone Router | |||
| 6LBR: 6LoWPAN Border Router | 6LBR: 6LoWPAN Border Router | |||
| 6LN: 6LoWPAN Node | 6LN: 6LoWPAN Node | |||
| 6LR: 6LoWPAN Router | 6LR: 6LoWPAN Router | |||
| skipping to change at page 5, line 4 ¶ | skipping to change at page 4, line 44 ¶ | |||
| ND: Neighbor Discovery | ND: Neighbor Discovery | |||
| NDP: Neighbor Discovery Protocol | NDP: Neighbor Discovery Protocol | |||
| NS: Neighbor Solicitation | NS: Neighbor Solicitation | |||
| RPL: IPv6 Routing Protocol for LLNs (pronounced ripple) [RFC6550] | RPL: IPv6 Routing Protocol for LLNs (pronounced ripple) [RFC6550] | |||
| RA: Router Advertisement | RA: Router Advertisement | |||
| RS: Router Solicitation | RS: Router Solicitation | |||
| 2.4. New Terms | 2.3. New Terms | |||
| Projected Route: A route that is installed remotely by a RPL root. | P-Route: A route that is installed remotely by a RPL root. | |||
| 2.4. References | ||||
| In this document, readers will encounter terms and concepts that are | ||||
| discussed in the following documents: | ||||
| o "Routing Protocol for Low Power and Lossy Networks" [RFC6550], and | ||||
| o "Terminology in Low power And Lossy Networks" [RFC7102]. | ||||
| 3. Extending RFC 6550 | 3. Extending RFC 6550 | |||
| Section 6.7 of RPL [RFC6550] specifies Control Message Options (CMO) | Section 6.7 of RPL [RFC6550] specifies Control Message Options (CMO) | |||
| to 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 and the Transit | Object (DAO) message. The RPL Target Option and the Transit | |||
| Information Option (TIO) are such options; the former indicates a | Information Option (TIO) are such options. In Non-Storing Mode, the | |||
| node to be reached and the latter specifies a parent that can be used | TIO option is used in the DAO message to indicate the immediate | |||
| to reach that node. Options may be factorized; one or more | parent of a given path. The TIO applies to the Target options that | |||
| contiguous TIOs apply to the one or more contiguous Target options | immedially preceed it. Options may be factorized; multiple TIOs may | |||
| that immediately precede the TIOs in the RPL message. | be present to indicate multiple routes to the one or more contiguous | |||
| addressed indicated in the Target Options that immediately precede | ||||
| the TIOs in the RPL message. | ||||
| This specification introduces 2 new Control Message Options referred | This specification introduces two new Control Message Options | |||
| to as Route Projection Options (RPO). One RPO is the Information | referred to as Route Projection Options (RPO). One RPO is the | |||
| option (VIO) and the other is the Source-Routed VIO (SRVIO). The VIO | Information option (VIO) and the other is the Source-Routed VIO | |||
| installs a route on each hop along a projected route (in a fashion | (SRVIO). The VIO installs a route on each hop along a P-Route (in a | |||
| analogous to RPL Storing Mode) whereas the SRVIO installs a source- | fashion analogous to RPL Storing Mode) whereas the SRVIO installs a | |||
| routing state at the ingress node, which uses it to insert a routing | source-routing state at the ingress node, which uses it to insert a | |||
| header in a fashion similar to Non-Storing Mode. | routing header in a fashion similar to Non-Storing Mode. | |||
| Like the TIO, the RPOs MUST be preceded by one or more RPL Target | Like the TIO, the RPOs MUST be preceded by one or more RPL Target | |||
| Options to which they apply, and they can be factorized: multiple | Options to which they apply, and they can be factorized: multiple | |||
| contiguous RPOs indicate alternate paths to the target(s). | contiguous RPOs indicate alternate paths to the target(s). | |||
| 4. New RPL Control Message Options | 3.1. RPL Instances | |||
| It must be noted that RPL has a concept of instance but does not have | ||||
| a concept of an administrative distance, which exists in certain | ||||
| proprietary implementations to sort out conflicts between multiple | ||||
| sources of routing information. This draft conforms the instance | ||||
| model as follows: | ||||
| o If the PCE needs to influence a particular instance to add better | ||||
| routes in conformance with the routing objectives in that | ||||
| instance, it may do so. When the PCE modifies an existing | ||||
| instance then the added routes must not create a loop in that | ||||
| instance. This is achieved by always preferring a route obtained | ||||
| from the PCE over a route that is learned via RPL. | ||||
| o If the PCE installs a more specific (say, Traffic Engineered) | ||||
| route between a particular pair of nodes then it SHOULD use a | ||||
| Local Instance from the ingress node of that path. A packet | ||||
| associated with that instance will be routed along that path and | ||||
| MUST NOT be placed over a Global Instance again. A packet that is | ||||
| placed on a Global Instance may be injected in the Local Instance | ||||
| based on node policy and the Local Instance paramenters. | ||||
| In all cases, the path is indicated by a new Via Information option, | ||||
| and the flow is similar to the flow used to obtain loose source | ||||
| routing. | ||||
| 3.2. New RPL Control Message Options | ||||
| The format of RPOs is as follows: | The format of RPOs is as follows: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Option Length | Path Sequence | Path Lifetime | | | Type | Option Length | Path Sequence | Path Lifetime | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| skipping to change at page 6, line 34 ¶ | skipping to change at page 7, line 4 ¶ | |||
| . . | . . | |||
| . Via Address n . | . Via Address n . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: Via Information option format | Figure 1: 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. | |||
| Path Sequence: 8-bit unsigned integer. When a RPL Target option is | Path Sequence: 8-bit unsigned integer. When a RPL Target option is | |||
| issued by the root of the DODAG (i.e. in a DAO message), that | issued by the root of the DODAG (i.e. in a DAO message), that | |||
| root sets the Path Sequence and increments the Path Sequence | root sets the Path Sequence and increments the Path Sequence | |||
| each time it issues a RPL Target option with updated | each time it issues a RPL Target option with updated | |||
| information. The indicated sequence deprecates any state for a | information. The indicated sequence deprecates any state for a | |||
| given Target that was learned from a previous sequence and adds | given Target that was learned from a previous sequence and adds | |||
| to any state that was learned for that sequence. | to any state that was learned for that sequence. | |||
| 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 | Lifetime Units (obtained from the Configuration option) that | |||
| the prefix is valid for route determination. The period starts | the prefix is valid for route determination. The period starts | |||
| when a new Path Sequence is seen. A value of all one bits | when a new Path Sequence is seen. A value of 255 (0xFF) | |||
| (0xFF) represents infinity. A value of all zero bits (0x00) | represents infinity. A value of zero (0x00) indicates a loss | |||
| indicates a loss of reachability. A DAO message that contains | of reachability. A DAO message that contains a Via Information | |||
| a Via Information option with a Path Lifetime of 0x00 for a | option with a Path Lifetime of zero for a Target is referred as | |||
| Target is referred as a No-Path (for that Target) in this | a No-Path (for that Target) in this document. | |||
| document. | ||||
| Via Address: 16 bytes. IPv6 Address of the next hop towards the | Via Address: 16 bytes. IPv6 Address of the next hop towards the | |||
| destination(s) indicated in the target option that immediately | destination(s) indicated in the target option that immediately | |||
| precede the RPO. Via Addresses are indicated in the order of | precede the RPO. Via Addresses are indicated in the order of | |||
| the data path from the ingress to the egress nodes. TBD: See | the data path from the ingress to the egress nodes. | |||
| how the /64 prefix can be elided if it is the same as that of | ||||
| (all of) the target(s). In that case, the Next-Hop Address | ||||
| could be expressed as the 8-bytes suffix only. | ||||
| An RPO MUST contain at least one Via Address, and a Via Address MUST | An RPO MUST contain at least one Via Address, and a Via Address MUST | |||
| NOT be present more than once, otherwise the RPO MUST be ignored. | NOT be present more than once, otherwise the RPO MUST be ignored. | |||
| 5. Projected DAO | 3.3. 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 | |||
| one or more sequence(s) of routers inside the DODAG via which the | one or more sequence(s) of routers inside the DODAG via which the | |||
| target(s) indicated in the Target Information Option(s) (TIO) can be | target(s) indicated in the Target Information Option(s) (TIO) can be | |||
| reached. | reached. | |||
| A P-DAO is sent from a global address of the root to a global address | A P-DAO is sent from a global address of the root to a global address | |||
| of the recipient, and MUST be confirmed by a DAO-ACK, which is sent | of the recipient, and MUST be confirmed by a DAO-ACK, which is sent | |||
| skipping to change at page 7, line 42 ¶ | skipping to change at page 8, line 7 ¶ | |||
| A P-DAO message MUST contain at least one TIO and at least one RPO | A P-DAO message MUST contain at least one TIO and at least one RPO | |||
| following it. There can be at most one such sequence of TIOs and | following it. There can be at most one such sequence of TIOs and | |||
| then RPOs. | then RPOs. | |||
| Like a classical DAO message, a P-DAO is processed only if it is | Like a classical DAO message, a P-DAO is processed only if it is | |||
| "new" per section 9.2.2. "Generation of DAO Messages" of the RPL | "new" per section 9.2.2. "Generation of DAO Messages" of the RPL | |||
| specification [RFC6550]; this is determined using the Path Sequence | specification [RFC6550]; this is determined using the Path Sequence | |||
| information from the RPO as opposed to a TIO. Also, a Path Lifetime | information from the RPO as opposed to a TIO. Also, a Path Lifetime | |||
| of 0 in an RPO indicates that a route is to be removed. | of 0 in an RPO indicates that a route is to be removed. | |||
| There are two kinds of operation for the projected routes, the | There are two kinds of operation for the P-Routes, the Storing Mode | |||
| Storing Mode and the Non-Storing Mode. | and the Non-Storing Mode. | |||
| The Non-Storing Mode is discussed in section Section 5.1. It uses | o The Non-Storing Mode is discussed in Section 3.3.1. It uses an | |||
| an SRVIO that carries a list of Via Addresses to be used as a | SRVIO that carries a list of Via Addresses to be used as a source- | |||
| source-routed path to the target. The recipient of the P-DAO is | routed path to the target. The recipient of the P-DAO is the | |||
| the ingress router of the source-routed path. Upon a Non-Storing | ingress router of the source-routed path. Upon a Non-Storing Mode | |||
| Mode P-DAO, the ingress router installs a source-routed state to | P-DAO, the ingress router installs a source-routed state to the | |||
| the target and replies to the root directly with a DAO-ACK | target and replies to the root directly with a DAO-ACK message. | |||
| message. | ||||
| The Storing Mode is discussed in section Section 5.2. It uses a | o The Storing Mode is discussed in Section 3.3.2. It uses a VIO | |||
| VIO with one Via Address per consecutive hop, from the ingress to | with one Via Address per consecutive hop, from the ingress to the | |||
| the egress of the path, including the list of all intermediate | egress of the path, including the list of all intermediate routers | |||
| routers in the data path order. The Via Addresses indicate the | in the data path order. The Via Addresses indicate the routers in | |||
| routers in which the routing state to the target have to be | which the routing state to the target have to be installed via the | |||
| installed via the next Via Address in the VIO. In normal | next Via Address in the VIO. In normal operations, the P-DAO is | |||
| operations, the P-DAO is propagated along the chain of Via Routers | propagated along the chain of Via Routers from the egress router | |||
| from the egress router of the path till the ingress one, which | of the path till the ingress one, which confirms the installation | |||
| confirms the installation to the root with a DAO-ACK message. | to the root with a DAO-ACK message. Note that the root may be the | |||
| Note that the root may be the ingress and it may be the egress of | ingress and it may be the egress of the path, that it can also be | |||
| the path, that it can also be neither but it cannot be both. | neither but it cannot be both. | |||
| 5.1. Non-storing Mode Projected Route | In case of a forwarding error along a P-Route, an ICMP error is sent | |||
| to the root with a new Code "Error in Projected Route" (See | ||||
| Section 5.2). The root can then modify or remove the P-Route. The | ||||
| "Error in Projected Route" message has the same format as the | ||||
| "Destination Unreachable Message", as specified in RFC 4443 | ||||
| [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 | ||||
| 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 | ||||
| this node could not reach. if a 6LoWPAN Routing Header (6LoRH) | ||||
| [RFC8138] is used to carry the IPv6 routing information in the outter | ||||
| header then that whole 6LoRH information SHOULD be present in the | ||||
| ICMP message. The sender and exact operation depend on the Mode and | ||||
| is described in Section 3.3.1 and Section 3.3.2 respectively. | ||||
| 3.3.1. Non-Storing Mode P-Route | ||||
| As illustrated in Figure 2, a P-DAO that carries an SRVIO enables the | As illustrated in Figure 2, 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 P-route to any packet for which | source routed header reflecting the P-route to any packet for which | |||
| the current destination either is the said target or can be reached | the current destination either is the said target or can be reached | |||
| via the target. | via the target. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| skipping to change at page 9, line 6 ¶ | skipping to change at page 9, line 34 ¶ | |||
| Figure 2: Projecting a Non-Storing Route | Figure 2: 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 P-route | order to avoid those loops, if the router that installs a P-route | |||
| does not have a connected route (a direct adjacency) to the next | 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 neighbor | 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 projected | of a neighbor, then it MUST ensure that it has another P-Route to the | |||
| route to the next loose hop under the control of the same route | next loose hop under the control of the same route computation | |||
| computation system, otherwise the P-DAO is rejected. | system, otherwise the P-DAO is rejected. | |||
| When forwarding a packet to a destination for which the router | When forwarding a packet to a destination for which the router | |||
| determines that routing happens via the target, the router inserts | determines that routing happens via the target, the router inserts | |||
| the source routing header in the packet to reach the target. In the | the source routing header in the packet to reach the target. In the | |||
| case of a loose source-routed path, there MUST be either a neighbor | case of a loose source-routed path, there MUST be either a neighbor | |||
| that is adjacent to the loose next hop, on which case the packet s | that is adjacent to the loose next hop, on which case the packet s | |||
| forwarded to that neighbor, or a source-routed path to the loose next | forwarded to that neighbor, or a source-routed path to the loose next | |||
| hop; in the latter case, another encapsulation takes place and the | hop; in the latter case, another encapsulation takes place and the | |||
| process possibly recurses; otherwise the packet is dropped. | process possibly recurses; otherwise the packet is dropped. | |||
| In order to add a source-routing header, the router encapsulates the | In order to add a source-routing header, the router encapsulates the | |||
| packet with an IP-in-IP header and a non-storing mode source routing | packet with an IP-in-IP header and a non-storing mode source routing | |||
| header (SRH) [RFC6554]. | header (SRH) [RFC6554]. In the uncompressed form the source of the | |||
| packet would be self, the destination would be the first Via Address | ||||
| In the uncompressed form the source of the packet would be self, the | in the SRVIO, and the SRH would contain the list of the remaining Via | |||
| destination would be the first Via Address in the SRVIO, and the SRH | Addresses and then the target. | |||
| would contain the list of the remaining Via Addresses and then the | ||||
| target. | ||||
| In practice, the router will normally use the "IPv6 over Low-Power | In practice, the router will normally use the "IPv6 over Low-Power | |||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch" [RFC8025] | Wireless Personal Area Network (6LoWPAN) Paging Dispatch" [RFC8025] | |||
| to compress the RPL artifacts as indicated in the "6LoWPAN Routing | to compress the RPL artifacts as indicated in the "6LoWPAN Routing | |||
| Header" [RFC8138] specification. In that case, the router indicates | Header" [RFC8138] specification. In that case, the router indicates | |||
| self as encapsulator in an IP-in-IP 6LoRH Header, and places the list | self as encapsulator in an IP-in-IP 6LoRH Header, and places the list | |||
| of Via Addresses in the order of the VIO and then the target in the | of Via Addresses in the order of the VIO and then the target in the | |||
| SRH 6LoRH Header. | SRH 6LoRH Header. | |||
| 5.2. Storing-Mode Projected Route | In case of a forwarding error along a Source Route path, the node | |||
| that fails to forward SHOULD send an ICMP error with a code "Error in | ||||
| Source Routing Header" back to the source of the packet, as described | ||||
| in section 11.2.2.3. of [RFC6550]. Upon this message, the | ||||
| 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 | ||||
| in Projected Route" to the root. Failure to follow these steps may | ||||
| result in packet loss and wasted resources along the source route | ||||
| path that is broken. | ||||
| 3.3.2. Storing-Mode P-Route | ||||
| As illustrated in Figure 3, the Storing Mode projected iq used by the | As illustrated in Figure 3, the Storing Mode projected iq used by the | |||
| root to install a routing state towards a target in the routers along | root to install a routing state towards a target in the routers along | |||
| a segment between an ingress and an egress router; this enables the | a segment between an ingress and an egress router; this enables the | |||
| routers to forward along that segment any packet for which the next | routers to forward along that segment any packet for which the next | |||
| loose hop is the said target, for instance a loose source routed | loose hop is the said target, for instance a loose source routed | |||
| packet for which the next loose hop is the target, or a packet for | packet for which the next loose hop is the target, or a packet for | |||
| which the router has a routing state to the final destination via the | which the router has a routing state to the final destination via the | |||
| target. | target. | |||
| skipping to change at page 10, line 43 ¶ | skipping to change at page 11, line 24 ¶ | |||
| The root sends the P-DAO directly to the egress node of the segment. | The root sends the P-DAO directly to the egress node of the segment. | |||
| In that P-DAO, the destination IP address matches the Via Address in | In that P-DAO, the destination IP address matches the Via Address in | |||
| the last VIO. This is how the egress recognizes its role. In a | the last VIO. This is how the egress recognizes its role. In a | |||
| similar fashion, the ingress node recognizes its role as it matches | similar fashion, the ingress node recognizes its role as it matches | |||
| Via Address in the first VIO. | Via Address in the first VIO. | |||
| The egress node of the segment is the only node in the path that does | The egress node of the segment is the only node in the path that does | |||
| not install a route in response to the P-DAO; it is expected to be | not install a route in response to the P-DAO; it is expected to be | |||
| already able to route to the target(s) on its own. It may either be | already able to route to the target(s) on its own. It may either be | |||
| the target, or may have some existing information to reach the | the target, or may have some existing information to reach the | |||
| target(s), such as a connected route or an already installed | target(s), such as a connected route or an already installed P-Route. | |||
| projected route. If one of the targets cannot be located, the node | If one of the targets cannot be located, the node MUST answer to the | |||
| MUST answer to the root with a negative DAO-ACK listing the target(s) | root with a negative DAO-ACK listing the target(s) that could not be | |||
| that could not be located (suggested status 10 to be confirmed by | located (suggested status 10 to be confirmed by IANA). | |||
| IANA). | ||||
| If the egress node can reach all the targets, then it forwards the | If the egress node can reach all the targets, then it forwards the | |||
| P-DAO with unchanged content to its loose predecessor in the segment | P-DAO with unchanged content to its loose predecessor in the segment | |||
| as indicated in the list of Via Information options, and recursively | as indicated in the list of Via Information options, and recursively | |||
| the message is propagated unchanged along the sequence of routers | the message is propagated unchanged along the sequence of routers | |||
| indicated in the P-DAO, but in the reverse order, from egress to | indicated in the P-DAO, but in the reverse order, from egress to | |||
| ingress. | ingress. | |||
| The address of the predecessor to be used as destination of the | The address of the predecessor to be used as destination of the | |||
| propagated DAO message is found in the Via Information option the | propagated DAO message is found in the Via Information option the | |||
| skipping to change at page 11, line 43 ¶ | skipping to change at page 12, line 23 ¶ | |||
| router in the P-DAO, the router MUST answer to the root with a | router in the P-DAO, the router MUST answer to the root with a | |||
| negative DAO-ACK indicating the successor that is unreachable | negative DAO-ACK indicating the successor that is unreachable | |||
| (suggested status 11 to be confirmed by IANA). | (suggested status 11 to be confirmed by IANA). | |||
| A Path Lifetime of 0 in a Via Information option is used to clean up | A Path Lifetime of 0 in a Via Information option is used to clean up | |||
| the state. The P-DAO is forwarded as described above, but the DAO is | the state. The P-DAO is forwarded as described above, but the DAO is | |||
| interpreted as a No-Path DAO and results in cleaning up existing | interpreted as a No-Path DAO and results in cleaning up existing | |||
| state as opposed to refreshing an existing one or installing a new | state as opposed to refreshing an existing one or installing a new | |||
| one. | one. | |||
| 6. Applications | In case of a forwarding error along a Storing Mode P-Route, the node | |||
| that fails to forward SHOULD send an ICMP error with a code "Error in | ||||
| Projected Route" to the root. Failure to do so may result in packet | ||||
| loss and wasted resources along the P-Route that is broken. | ||||
| 6.1. Loose Source Routing in Non-storing Mode | 4. Security Considerations | |||
| This draft uses messages that are already present in RPL [RFC6550] | ||||
| with optional secured versions. The same secured versions may be | ||||
| used with this draft, and whatever security is deployed for a given | ||||
| network also applies to the flows in this draft. | ||||
| 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 | ||||
| could in fact deal with any threats? | ||||
| 5. IANA Considerations | ||||
| 5.1. New RPL Control Codes | ||||
| This document extends the IANA registry created by RFC 6550 for RPL | ||||
| Control Codes as follows: | ||||
| +------+-------------------+---------------+ | ||||
| | Code | Description | Reference | | ||||
| +------+-------------------+---------------+ | ||||
| | 0x0A | Via | This document | | ||||
| | | | | | ||||
| | 0x0B | Source-Routed Via | This document | | ||||
| +------+-------------------+---------------+ | ||||
| RPL Control Codes | ||||
| This document is updating the registry created by RFC 6550 for the | ||||
| RPL 3-bit Mode of Operation (MOP) as follows: | ||||
| +-----------+----------------------------------------+--------------+ | ||||
| | MOP value | Description | Reference | | ||||
| +-----------+----------------------------------------+--------------+ | ||||
| | 5 | Non-Storing mode of operation with | This | | ||||
| | | P-Routes | document | | ||||
| | | | | | ||||
| | 6 | Storing mode of operation with | This | | ||||
| | | P-Routes | document | | ||||
| +-----------+----------------------------------------+--------------+ | ||||
| DIO Mode of operation | ||||
| 5.2. Error in Projected Route ICMPv6 Code | ||||
| In some cases RPL will return an ICMPv6 error message when a message | ||||
| cannot be forwarded along a P-Route. This ICMPv6 error message is | ||||
| "Error in Projected Route". | ||||
| IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message | ||||
| Types. ICMPv6 Message Type 1 describes "Destination Unreachable" | ||||
| codes. This specification requires that a new code is allocated from | ||||
| the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error | ||||
| in Projected Route", with a suggested code value of 8, to be | ||||
| confirmed by IANA. | ||||
| 6. Acknowledgments | ||||
| The authors wish to acknowledge JP Vasseur and Patrick Wetterwald for | ||||
| their contributions to the ideas developed here. | ||||
| 7. References | ||||
| 7.1. 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>. | ||||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | ||||
| Control Message Protocol (ICMPv6) for the Internet | ||||
| Protocol Version 6 (IPv6) Specification", STD 89, | ||||
| RFC 4443, DOI 10.17487/RFC4443, March 2006, | ||||
| <https://www.rfc-editor.org/info/rfc4443>. | ||||
| [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>. | ||||
| [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | ||||
| Power and Lossy Networks (RPL) Option for Carrying RPL | ||||
| Information in Data-Plane Datagrams", RFC 6553, | ||||
| DOI 10.17487/RFC6553, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6553>. | ||||
| [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | ||||
| Routing Header for Source Routes with the Routing Protocol | ||||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | ||||
| DOI 10.17487/RFC6554, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6554>. | ||||
| [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | ||||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | ||||
| RFC 8025, DOI 10.17487/RFC8025, November 2016, | ||||
| <https://www.rfc-editor.org/info/rfc8025>. | ||||
| [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "IPv6 over Low-Power Wireless Personal Area Network | ||||
| (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | ||||
| April 2017, <https://www.rfc-editor.org/info/rfc8138>. | ||||
| [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>. | ||||
| 7.2. Informative References | ||||
| [I-D.ietf-6tisch-architecture] | ||||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | ||||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-19 (work | ||||
| in progress), December 2018. | ||||
| [I-D.ietf-detnet-architecture] | ||||
| Finn, N., Thubert, P., Varga, B., and J. Farkas, | ||||
| "Deterministic Networking Architecture", draft-ietf- | ||||
| detnet-architecture-10 (work in progress), December 2018. | ||||
| [PCE] IETF, "Path Computation Element", | ||||
| <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | ||||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | ||||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | ||||
| in Low-Power and Lossy Networks", RFC 6997, | ||||
| DOI 10.17487/RFC6997, August 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6997>. | ||||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | ||||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | ||||
| 2014, <https://www.rfc-editor.org/info/rfc7102>. | ||||
| Appendix A. Applications | ||||
| 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 4. | uses the Non-Storing Mode of Operation as represented in Figure 4. | |||
| 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. | |||
| ------+--------- | ------+--------- | |||
| skipping to change at page 13, line 18 ¶ | skipping to change at page 17, line 16 ¶ | |||
| 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 excursion | state in intermediate routers, which enables to limit the excursion | |||
| of the source route headers in deep networks. Once a P-DAO exchange | of the source route headers in deep networks. Once a P-DAO exchange | |||
| has taken place for a given target, if the root operates in non | has taken place for a given target, if the root operates in non | |||
| storing mode, then it may elide the sequence of routers that is | storing mode, then it may elide the sequence of routers that is | |||
| installed in the network from its source route headers to destination | installed in the network from its source route headers to destination | |||
| that are reachable via that target, and the source route headers | that are reachable via that target, and the source route headers | |||
| effectively become loose. | effectively become loose. | |||
| 6.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), root to leaves and | RPL is optimized for Point-to-Multipoint (P2MP) and Multipoint-to- | |||
| Multipoint-to-Point (MP2P) leaves to root operations, whereby routes | Point (MP2P), whereby routes are always installed along the RPL DODAG | |||
| are always installed along the RPL DODAG. Transversal Peer to Peer | respectively from and towards the DODAG Root. Transversal Peer to | |||
| (P2P) routes in a RPL network will generally suffer from some stretch | Peer (P2P) routes in a RPL network will generally suffer from some | |||
| since routing between 2 peers always happens via a common parent, as | elongated (stretched) path versus the best possible path, since | |||
| routing between 2 nodes always happens via a common parent, as | ||||
| illustrated in Figure 5: | illustrated in Figure 5: | |||
| o in non-storing mode, all packets routed within the DODAG flow all | o 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. | |||
| skipping to change at page 15, line 10 ¶ | skipping to change at page 19, line 10 ¶ | |||
| 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. | |||
| 7. RPL Instances | Appendix B. Examples | |||
| It must be noted that RPL has a concept of instance but does not have | ||||
| a concept of an administrative distance, which exists in certain | ||||
| proprietary implementations to sort out conflicts between multiple | ||||
| sources of routing information. This draft conforms the instance | ||||
| model as follows: | ||||
| o If the PCE needs to influence a particular instance to add better | ||||
| routes in conformance with the routing objectives in that | ||||
| instance, it may do so. When the PCE modifies an existing | ||||
| instance then the added routes must not create a loop in that | ||||
| instance. This is achieved by always preferring a route obtained | ||||
| from the PCE over a route that is learned via RPL. | ||||
| o If the PCE installs a more specific (say, Traffic Engineered) | ||||
| route between a particular pair of nodes then it SHOULD use a | ||||
| Local Instance from the ingress node of that path. A packet | ||||
| associated with that instance will be routed along that path and | ||||
| MUST NOT be placed over a Global Instance again. A packet that is | ||||
| placed on a Global Instance may be injected in the Local Instance | ||||
| based on node policy and the Local Instance paramenters. | ||||
| In all cases, the path is indicated by a new Via Information option, | ||||
| and the flow is similar to the flow used to obtain loose source | ||||
| routing. | ||||
| 8. Security Considerations | ||||
| This draft uses messages that are already present in RPL [RFC6550] | ||||
| with optional secured versions. The same secured versions may be | ||||
| used with this draft, and whatever security is deployed for a given | ||||
| network also applies to the flows in this draft. | ||||
| 9. IANA Considerations | ||||
| This document extends the IANA registry created by RFC 6550 for RPL | ||||
| Control Codes as follows: | ||||
| +------+-------------------+---------------+ | ||||
| | Code | Description | Reference | | ||||
| +------+-------------------+---------------+ | ||||
| | 0x0A | Via | This document | | ||||
| | | | | | ||||
| | 0x0B | Source-Routed Via | This document | | ||||
| +------+-------------------+---------------+ | ||||
| RPL Control Codes | ||||
| This document is updating the registry created by RFC 6550 for the | ||||
| RPL 3-bit Mode of Operation (MOP) as follows: | ||||
| +----------+------------------------------------------+-------------+ | ||||
| | MOP | Description | Reference | | ||||
| | value | | | | ||||
| +----------+------------------------------------------+-------------+ | ||||
| | 5 | Non-Storing mode of operation with | This | | ||||
| | | Projected routes | document | | ||||
| | | | | | ||||
| | 6 | Storing mode of operation with Projected | This | | ||||
| | | routes | document | | ||||
| +----------+------------------------------------------+-------------+ | ||||
| DIO Mode of operation | ||||
| 10. Acknowledgments | ||||
| The authors wish to acknowledge JP Vasseur and Patrick Wetterwald for | ||||
| their contributions to the ideas developed here. | ||||
| 11. References | ||||
| 11.1. 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>. | ||||
| [RFC6551] Vasseur, JP., Ed., Kim, M., Ed., Pister, K., Dejean, N., | ||||
| and D. Barthel, "Routing Metrics Used for Path Calculation | ||||
| in Low-Power and Lossy Networks", RFC 6551, | ||||
| DOI 10.17487/RFC6551, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6551>. | ||||
| [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | ||||
| Routing Header for Source Routes with the Routing Protocol | ||||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | ||||
| DOI 10.17487/RFC6554, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6554>. | ||||
| [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | ||||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | ||||
| RFC 8025, DOI 10.17487/RFC8025, November 2016, | ||||
| <https://www.rfc-editor.org/info/rfc8025>. | ||||
| [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "IPv6 over Low-Power Wireless Personal Area Network | ||||
| (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | ||||
| April 2017, <https://www.rfc-editor.org/info/rfc8138>. | ||||
| [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>. | ||||
| 11.2. Informative References | ||||
| [I-D.ietf-6tisch-architecture] | ||||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | ||||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-14 (work | ||||
| in progress), April 2018. | ||||
| [I-D.ietf-detnet-architecture] | ||||
| Finn, N., Thubert, P., Varga, B., and J. Farkas, | ||||
| "Deterministic Networking Architecture", draft-ietf- | ||||
| detnet-architecture-05 (work in progress), May 2018. | ||||
| [PCE] IETF, "Path Computation Element", | ||||
| <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | ||||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | ||||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | ||||
| in Low-Power and Lossy Networks", RFC 6997, | ||||
| DOI 10.17487/RFC6997, August 2013, | ||||
| <https://www.rfc-editor.org/info/rfc6997>. | ||||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | ||||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | ||||
| 2014, <https://www.rfc-editor.org/info/rfc7102>. | ||||
| Appendix A. Examples | ||||
| A.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 7, if the source is node 41 | instance in the diagram shown in Figure 7, 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. | |||
| ------+--------- | ------+--------- | |||
| skipping to change at page 19, line 15 ¶ | skipping to change at page 20, line 19 ¶ | |||
| DAO to node 46 indicating target 56 and a Via segment (35, 46). This | DAO to node 46 indicating target 56 and a Via segment (35, 46). This | |||
| will save one entry in the routing header on both sides. The root | will save one entry in the routing header on both sides. The root | |||
| may then send a DAO to node 35 indicating targets 55 and 56 a Via | may then send a DAO to node 35 indicating targets 55 and 56 a Via | |||
| segment (13, 24, 35) to fully optimize that path. | segment (13, 24, 35) to fully optimize that path. | |||
| Alternatively, the root may send a DAO to node 45 indicating target | Alternatively, the root may send a DAO to node 45 indicating target | |||
| 55 and a Via segment (13, 24, 35, 45) and then a DAO to node 46 | 55 and a Via segment (13, 24, 35, 45) and then a DAO to node 46 | |||
| indicating target 56 and a Via segment (13, 24, 35, 46), indicating | indicating target 56 and a Via segment (13, 24, 35, 46), indicating | |||
| the same DAO Sequence. | the same DAO Sequence. | |||
| A.2. Projecting a storing-mode transversal route | B.2. Projecting a storing-mode transversal route | |||
| In this example, say that a PCE determines that a path must be | In this example, say that a PCE determines that a path must be | |||
| installed between node S and node D via routers A, B and C, in order | installed between node S and node D via routers A, B and C, in order | |||
| to serve the needs of a particular application. | to serve the needs of a particular application. | |||
| The root sends a P-DAO with a target option indicating the | The root sends a P-DAO with a target option indicating the | |||
| destination D and a sequence Via Information option, one for S, which | destination D and a sequence Via Information option, one for S, which | |||
| is the ingress router of the segment, one for A and then for B, which | is the ingress router of the segment, one for A and then for B, which | |||
| are an intermediate routers, and one for C, which is the egress | are an intermediate routers, and one for C, which is the egress | |||
| router. | router. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | Projected 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 8: Projected DAO from root | Figure 8: 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 | |||
| root. | root. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| ^ Projected 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 9: Projected DAO-ACK to root | Figure 9: 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) | |||
| skipping to change at page 21, line 4 ¶ | skipping to change at page 22, line 6 ¶ | |||
| 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 10: Projected Transversal Route | Figure 10: Projected Transversal Route | |||
| Authors' Addresses | Authors' Addresses | |||
| Pascal Thubert (editor) | Pascal Thubert (editor) | |||
| Cisco Systems | Cisco Systems | |||
| Village d'Entreprises Green Side | Village d'Entreprises Green Side | |||
| 400, Avenue de Roumanille | 400, Avenue de Roumanille | |||
| Batiment T3 | Batiment T3 | |||
| Biot - Sophia Antipolis 06410 | Biot - Sophia Antipolis 06410 | |||
| FRANCE | FRANCE | |||
| Phone: +33 4 97 23 26 34 | Phone: +33 4 97 23 26 34 | |||
| Email: pthubert@cisco.com | Email: pthubert@cisco.com | |||
| Rahul Arvind Jadhav | Rahul Arvind Jadhav | |||
| Huawei Tech | Huawei Tech | |||
| Kundalahalli Village, Whitefield, | Kundalahalli Village, Whitefield, | |||
| Bangalore, Karnataka 560037 | Bangalore, Karnataka 560037 | |||
| India | India | |||
| Phone: +91-080-49160700 | Phone: +91-080-49160700 | |||
| Email: rahul.ietf@gmail.com | Email: rahul.ietf@gmail.com | |||
| Matthew Gillmore | ||||
| Itron, Inc | ||||
| Building D | ||||
| 2111 N Molter Road | ||||
| Liberty Lake 99019 | ||||
| United States | ||||
| Phone: +1.800.635.5461 | ||||
| Email: matthew.gillmore@itron.com | ||||
| James Pylakutty | James Pylakutty | |||
| Cisco Systems | Cisco Systems | |||
| Cessna Business Park | Cessna Business Park | |||
| Kadubeesanahalli | Kadubeesanahalli | |||
| Marathalli ORR | Marathalli ORR | |||
| Bangalore, Karnataka 560087 | Bangalore, Karnataka 560087 | |||
| INDIA | INDIA | |||
| Phone: +91 80 4426 4140 | Phone: +91 80 4426 4140 | |||
| Email: mundenma@cisco.com | Email: mundenma@cisco.com | |||
| End of changes. 42 change blocks. | ||||
| 270 lines changed or deleted | 331 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/ | ||||