| < draft-ietf-roll-dao-projection-05.txt | draft-ietf-roll-dao-projection-06.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track R. Jadhav | Updates: 6550, 6553, 8138 (if approved) R. Jadhav | |||
| Expires: June 24, 2019 Huawei Tech | Intended status: Standards Track Huawei Tech | |||
| M. Gillmore | Expires: November 25, 2019 M. Gillmore | |||
| Itron | Itron | |||
| J. Pylakutty | J. Pylakutty | |||
| Cisco | Cisco | |||
| December 21, 2018 | May 24, 2019 | |||
| Root initiated routing state in RPL | Root initiated routing state in RPL | |||
| draft-ietf-roll-dao-projection-05 | draft-ietf-roll-dao-projection-06 | |||
| Abstract | Abstract | |||
| This document proposes a protocol extension to RPL that enables to | This document extends RFC 6550, RFC 6553 and RFC 8138 and enable 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. In constrast with classical | |||
| route injection in RPL that are injected by the end devices, this | routes in RPL that are injected by the end devices, this draft | |||
| draft enables the root of the DODAG to projects the routes that are | enables the root of the DODAG to projects the routes that are needed | |||
| needed on the nodes where they should be installed. | on the nodes where they should be installed. | |||
| 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 June 24, 2019. | This Internet-Draft will expire on November 25, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 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 | 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 | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.2. Subset of a 6LoWPAN Glossary . . . . . . . . . . . . . . 4 | 2.2. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.3. New Terms . . . . . . . . . . . . . . . . . . . . . . . . 4 | 2.3. References . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 5 | ||||
| 3.1. RPL Instances . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. RPL Instances . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.2. New RPL Control Message Options . . . . . . . . . . . . . 6 | 3.2. New RPL Control Message Options . . . . . . . . . . . . . 5 | |||
| 3.3. Projected DAO . . . . . . . . . . . . . . . . . . . . . . 7 | 3.3. RPI for Projected Routes . . . . . . . . . . . . . . . . 7 | |||
| 3.3.1. Non-Storing Mode P-Route . . . . . . . . . . . . . . 8 | 3.4. Projected DAO . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.3.2. Storing-Mode P-Route . . . . . . . . . . . . . . . . 10 | 3.4.1. Non-Storing Mode P-Route . . . . . . . . . . . . . . 9 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 12 | 3.4.2. Storing-Mode P-Route . . . . . . . . . . . . . . . . 10 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 4. Extending RFC 8138 . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 12 | 4.1. Elective RPI 6LoRH . . . . . . . . . . . . . . . . . . . 13 | |||
| 5.2. Error in Projected Route ICMPv6 Code . . . . . . . . . . 13 | 5. Extending RFC 6553 . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | 5.1. Uncompressed RPL Option . . . . . . . . . . . . . . . . . 13 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 14 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 14 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 15 | 7.1. New Elective 6LoWPAN Routing Header Type . . . . . . . . 14 | |||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 15 | 7.2. New RPL Control Codes . . . . . . . . . . . . . . . . . . 15 | |||
| A.1. Loose Source Routing in Non-storing Mode . . . . . . . . 15 | 7.3. Error in Projected Route ICMPv6 Code . . . . . . . . . . 15 | |||
| A.2. Transversal Routes in storing and non-storing modes . . . 17 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 19 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| B.1. Using storing mode P-DAO in non-storing mode MOP . . . . 19 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 16 | |||
| B.2. Projecting a storing-mode transversal route . . . . . . . 20 | 9.2. Informative References . . . . . . . . . . . . . . . . . 17 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 18 | |||
| A.1. Loose Source Routing in Non-storing Mode . . . . . . . . 18 | ||||
| A.2. Transversal Routes in storing and non-storing modes . . . 19 | ||||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 21 | ||||
| B.1. Using storing mode P-DAO in non-storing mode MOP . . . . 21 | ||||
| B.2. Projecting a storing-mode transversal route . . . . . . . 22 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | ||||
| 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 | |||
| low energy Internet of Things (IoT) networks. RPL forms Destination | low energy Internet of Things (IoT) networks. RPL forms Destination | |||
| Oriented Directed Acyclic Graphs (DODAGs) in which the root often | Oriented Directed Acyclic Graphs (DODAGs) in which the root often | |||
| acts as the Border Router to connect the RPL domain to the Internet. | acts as the Border Router to connect the RPL domain to the Internet. | |||
| The root is responsible to select the RPL Instance that is used to | The root is responsible to select the RPL Instance that is used to | |||
| forward a packet coming from the Internet into the RPL domain and set | forward a packet coming from the Internet into the RPL domain and set | |||
| skipping to change at page 4, line 5 ¶ | skipping to change at page 4, line 15 ¶ | |||
| 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. New Terms | |||
| This document often uses the following acronyms: | ||||
| 6BBR: 6LoWPAN Backbone Router | ||||
| 6LBR: 6LoWPAN Border Router | ||||
| 6LN: 6LoWPAN Node | ||||
| 6LR: 6LoWPAN Router | ||||
| 6CIO: Capability Indication Option | ||||
| EARO: (Extended) Address Registration Option -- (E)ARO | ||||
| EDAR: (Extended) Duplicate Address Request -- (E)DAR | ||||
| EDAC: (Extended) Duplicate Address Confirmation -- (E)DAC | ||||
| DAD: Duplicate Address Detection | ||||
| DODAG: Destination-Oriented Directed Acyclic Graph | ||||
| LLN: Low-Power and Lossy Network | ||||
| NA: Neighbor Advertisement | ||||
| NCE: Neighbor Cache Entry | ||||
| ND: Neighbor Discovery | ||||
| NDP: Neighbor Discovery Protocol | ||||
| NS: Neighbor Solicitation | ||||
| RPL: IPv6 Routing Protocol for LLNs (pronounced ripple) [RFC6550] | ||||
| RA: Router Advertisement | ||||
| RS: Router Solicitation | ||||
| 2.3. New Terms | ||||
| P-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 | 2.3. References | |||
| In this document, readers will encounter terms and concepts that are | In this document, readers will encounter terms and concepts that are | |||
| discussed in the following documents: | discussed in the following documents: | |||
| o "Routing Protocol for Low Power and Lossy Networks" [RFC6550], and | o "Routing Protocol for Low Power and Lossy Networks" [RFC6550], and | |||
| o "Terminology in Low power And Lossy Networks" [RFC7102]. | o "Terminology in Low power And Lossy Networks" [RFC7102]. | |||
| 3. Extending RFC 6550 | 3. Extending RFC 6550 | |||
| skipping to change at page 7, line 32 ¶ | skipping to change at page 7, line 15 ¶ | |||
| a No-Path (for that Target) in this document. | a No-Path (for that Target) in this 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. | the data path from the ingress to the egress nodes. | |||
| 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. | |||
| 3.3. Projected DAO | 3.3. RPI for Projected Routes | |||
| RPL [RFC6550], Section 11.2, specifies the RPL Packet Information | ||||
| (RPI) as a set of fields that are placed by RPL routers in IP packets | ||||
| to identify the RPL Instance, detect anomalies and trigger corrective | ||||
| actions. | ||||
| In particular, the SenderRank, which is the scalar metric computed by | ||||
| a specialized Objective Function such as described in [RFC6552], | ||||
| indicates the Rank of the sender and is modified at each hop. The | ||||
| SenderRank field is used to validate that the packet progresses in | ||||
| the expected direction, either upwards or downwards, along the DODAG. | ||||
| RPL defines the "RPL Option for Carrying RPL Information in Data- | ||||
| Plane Datagrams" [RFC6553] to transport the RPI, which is carried in | ||||
| an IPv6 Hop-by-Hop Options Header [RFC8200], typically consuming | ||||
| eight bytes per packet. | ||||
| This specification updates [RFC6550] as follows. When using | ||||
| projected routes, the Rank is useless and SHOULD be set to 0 in the | ||||
| non-compressed form, and can be elided in the compressed form (see | ||||
| Section 4.1). In a same fashion, the O, R, and F flags that are | ||||
| defined in Section 11.2 of [RFC6550] are not used for packets that | ||||
| follow a projected route and they MUST be reset. A new flag is | ||||
| added, the P flag that indicates that the packet is injected along a | ||||
| projected route. | ||||
| 3.4. 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 8, line 10 ¶ | skipping to change at page 8, line 22 ¶ | |||
| 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 P-Routes, the Storing Mode | There are two kinds of operation for the P-Routes, the Storing Mode | |||
| and the Non-Storing Mode. | and the Non-Storing Mode. | |||
| o The Non-Storing Mode is discussed in Section 3.3.1. It uses an | o The Non-Storing Mode is discussed in Section 3.4.1. It uses an | |||
| SRVIO that carries a list of Via Addresses to be used as a source- | SRVIO that carries a list of Via Addresses to be used as a source- | |||
| routed path to the target. The recipient of the P-DAO is the | routed path to the target. The recipient of the P-DAO is the | |||
| ingress router of the source-routed path. Upon a Non-Storing Mode | ingress router of the source-routed path. Upon a Non-Storing Mode | |||
| P-DAO, the ingress router installs a source-routed state to the | P-DAO, the ingress router installs a source-routed state to the | |||
| target and replies to the root directly with a DAO-ACK message. | target and replies to the root directly with a DAO-ACK message. | |||
| o The Storing Mode is discussed in Section 3.3.2. It uses a VIO | o The Storing Mode is discussed in Section 3.4.2. It uses a VIO | |||
| with one Via Address per consecutive hop, from the ingress to the | with one Via Address per consecutive hop, from the ingress to the | |||
| egress of the path, including the list of all intermediate routers | egress of the path, including the list of all intermediate routers | |||
| in the data path order. The Via Addresses indicate the routers in | in the data path order. The Via Addresses indicate the routers in | |||
| 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 P-Route, an ICMP error is sent | 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 | 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 | Section 7.3). The root can then modify or remove the P-Route. The | |||
| "Error in Projected Route" message has the same format as the | "Error in Projected Route" message has the same format as the | |||
| "Destination Unreachable Message", as specified in RFC 4443 | "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 3.3.1 and Section 3.3.2 respectively. | is described in Section 3.4.1 and Section 3.4.2 respectively. | |||
| 3.3.1. Non-Storing Mode P-Route | 3.4.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 10, line 13 ¶ | skipping to change at page 10, line 25 ¶ | |||
| Addresses and then the target. | 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. | |||
| +-+ ... -+-+ ... +-+- ... -+-+- ... -+-+-+- ... -+-+ ... | ||||
| |11110001|SRH-6LoRH| ERPI- | IP-in-IP Encap | NH=1 |11110CPP| | ||||
| |Page 1 |Type1 S=2| 6LoRH | 6LoRH sulator |LOWPAN_IPHC| UDP | | ||||
| +-+ ... -+-+ ... +-+- ... -+-+- ... -+-+-+- ... -+-+ ... | ||||
| <-RFC8138-><-This-><----RFC 8138----><-----RFC 6282-------> | ||||
| RFC 5 to 19 bytes No RPL artifact | ||||
| Figure 3: Example Compressed Packet with SRH. | ||||
| In case of a forwarding error along a Source Route path, the node | 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 | 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 | 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. | |||
| 3.3.2. Storing-Mode P-Route | 3.4.2. Storing-Mode P-Route | |||
| As illustrated in Figure 3, the Storing Mode projected iq used by the | As illustrated in Figure 4, 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. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| skipping to change at page 10, line 51 ¶ | skipping to change at page 11, line 24 ¶ | |||
| | | 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 3: Projecting a route | Figure 4: 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 12, line 28 ¶ | skipping to change at page 13, line 5 ¶ | |||
| 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. | |||
| In case of a forwarding error along a Storing Mode P-Route, the node | 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 | 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 | Projected Route" to the root. Failure to do so may result in packet | |||
| loss and wasted resources along the P-Route that is broken. | loss and wasted resources along the P-Route that is broken. | |||
| 4. Security Considerations | 4. Extending RFC 8138 | |||
| 4.1. Elective RPI 6LoRH | ||||
| [RFC8138] defines a Critical 6LoRH to compress the RPL RPI found in | ||||
| normal packets inside a RPL domain, the RPI-6LoRH. | ||||
| this specification introduces the ERPI-6LoRH header that MUST be used | ||||
| to compress the RPI in packets that follow a projected route. As | ||||
| discussed in Section 3.3, the Rank and the O, R, anf F flags are | ||||
| always set to 0 and can be elided. The new P flag is always set and | ||||
| can also be elided. It results that in general only the RPL | ||||
| InstanceID is necessary in the compressed form. | ||||
| This specification adds an optimization whereby the local | ||||
| RPLInstanceID 0 for the source of the packet (the encapsulator when | ||||
| using IP in IP) can be elided. This is the case where the | ||||
| RPLInstanceID is encoded as binary b10000000, decimal 128, in the | ||||
| non-compressed form. | ||||
| The ERPI-6LoRH header is Elective since it does not contain | ||||
| information that is critical to the routing and it can be ignored | ||||
| when not understood. The resulting format is illustrated in Figure 5 | ||||
| below: | ||||
| 0 1 2 | ||||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |1|0|1| Length | 6LoRH Type 5 | RPLInstanceID | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 5: A ERPI-6LoRH carrying a RPLInstanceID | ||||
| The ERPI-6LoRH header is identifies by a 6LoRH Type of 5 (to be | ||||
| confirmed by IANA), which is the same value as the RPI-6LoRH but in | ||||
| the Elective namespace.If the RPLInstanceID is a local RPLInstanceID | ||||
| 0 for the source of the packet then it MUST be elided and the length | ||||
| MUST be set to 0. Else the length MUST be set to 1 to indicate that | ||||
| the ERPI-6LoRH carries a RPLinstanceID. | ||||
| 5. Extending RFC 6553 | ||||
| 5.1. Uncompressed RPL Option | ||||
| [RFC6553] defines a format for the RPI that is suitable for | ||||
| transporting in the IPv6 Hop-by-Hop Header [RFC8200]. This | ||||
| specification introduces a new flag in the RPI that must be encoded | ||||
| in any format includeing uncompressed. | ||||
| The updated format for the RPL Option is presented in Figure 6. | ||||
| 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 | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Option Type | Opt Data Len | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| |O|R|F|P|0|0|0|0| RPLInstanceID | SenderRank | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | (sub-TLVs) | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Figure 6: RPL Option | ||||
| New fields: | ||||
| P: 1-bit flag; indicates that the packet is routed along | ||||
| a projected route. | ||||
| 6. Security Considerations | ||||
| This draft uses messages that are already present in RPL [RFC6550] | This draft uses messages that are already present in RPL [RFC6550] | |||
| with optional secured versions. The same secured versions may be | with optional secured versions. The same secured versions may be | |||
| used with this draft, and whatever security is deployed for a given | used with this draft, and whatever security is deployed for a given | |||
| 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? | |||
| 5. IANA Considerations | 7. IANA Considerations | |||
| 5.1. New RPL Control Codes | 7.1. New Elective 6LoWPAN Routing Header Type | |||
| This specification assigns a new value (to be confirmed by IANA) in | ||||
| the Elective 6LoWPAN Routing Header Type Registry created for RFC | ||||
| 8138 as below: | ||||
| +---------------+-------------+----------------+ | ||||
| | Value | Meaning | Defining Spec | | ||||
| +---------------+-------------+----------------+ | ||||
| | 5 (suggested) | ERPI-6LoRH | This document | | ||||
| +---------------+-------------+----------------+ | ||||
| Table 1: New Elective 6LoWPAN Routing Header Type | ||||
| 7.2. New RPL Control Codes | ||||
| This document extends the IANA registry created by RFC 6550 for RPL | This document extends the IANA registry created by RFC 6550 for RPL | |||
| Control Codes as follows: | Control Codes as follows: | |||
| +------+-------------------+---------------+ | +------+-------------------+---------------+ | |||
| | Code | Description | Reference | | | Code | Description | Reference | | |||
| +------+-------------------+---------------+ | +------+-------------------+---------------+ | |||
| | 0x0A | Via | This document | | | 0x0A | Via | This document | | |||
| | | | | | | | | | | |||
| | 0x0B | Source-Routed Via | This document | | | 0x0B | Source-Routed Via | This document | | |||
| skipping to change at page 13, line 30 ¶ | skipping to change at page 15, line 43 ¶ | |||
| +-----------+----------------------------------------+--------------+ | +-----------+----------------------------------------+--------------+ | |||
| | 5 | Non-Storing mode of operation with | This | | | 5 | Non-Storing mode of operation with | This | | |||
| | | P-Routes | document | | | | P-Routes | document | | |||
| | | | | | | | | | | |||
| | 6 | Storing mode of operation with | This | | | 6 | Storing mode of operation with | This | | |||
| | | P-Routes | document | | | | P-Routes | document | | |||
| +-----------+----------------------------------------+--------------+ | +-----------+----------------------------------------+--------------+ | |||
| DIO Mode of operation | DIO Mode of operation | |||
| 5.2. Error in Projected Route ICMPv6 Code | 7.3. 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 P-Route. This ICMPv6 error message is | cannot be forwarded along a P-Route. This ICMPv6 error message is | |||
| "Error in Projected Route". | "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 | |||
| confirmed by IANA. | confirmed by IANA. | |||
| 6. Acknowledgments | 8. Acknowledgments | |||
| The authors wish to acknowledge JP Vasseur and Patrick Wetterwald for | The authors wish to acknowledge JP Vasseur and Patrick Wetterwald for | |||
| their contributions to the ideas developed here. | their contributions to the ideas developed here. | |||
| 7. References | 9. References | |||
| 7.1. Normative References | ||||
| 9.1. Normative References | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet | |||
| Control Message Protocol (ICMPv6) for the Internet | Control Message Protocol (ICMPv6) for the Internet | |||
| Protocol Version 6 (IPv6) Specification", STD 89, | Protocol Version 6 (IPv6) Specification", STD 89, | |||
| RFC 4443, DOI 10.17487/RFC4443, March 2006, | RFC 4443, DOI 10.17487/RFC4443, March 2006, | |||
| <https://www.rfc-editor.org/info/rfc4443>. | <https://www.rfc-editor.org/info/rfc4443>. | |||
| [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | |||
| Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | |||
| JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
| Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
| DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
| [RFC6552] Thubert, P., Ed., "Objective Function Zero for the Routing | ||||
| Protocol for Low-Power and Lossy Networks (RPL)", | ||||
| RFC 6552, DOI 10.17487/RFC6552, March 2012, | ||||
| <https://www.rfc-editor.org/info/rfc6552>. | ||||
| [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | |||
| Power and Lossy Networks (RPL) Option for Carrying RPL | Power and Lossy Networks (RPL) Option for Carrying RPL | |||
| Information in Data-Plane Datagrams", RFC 6553, | Information in Data-Plane Datagrams", RFC 6553, | |||
| DOI 10.17487/RFC6553, March 2012, | DOI 10.17487/RFC6553, March 2012, | |||
| <https://www.rfc-editor.org/info/rfc6553>. | <https://www.rfc-editor.org/info/rfc6553>. | |||
| [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | |||
| Routing Header for Source Routes with the Routing Protocol | Routing Header for Source Routes with the Routing Protocol | |||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | for Low-Power and Lossy Networks (RPL)", RFC 6554, | |||
| DOI 10.17487/RFC6554, March 2012, | DOI 10.17487/RFC6554, March 2012, | |||
| skipping to change at page 15, line 5 ¶ | skipping to change at page 17, line 19 ¶ | |||
| [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>. | |||
| 7.2. Informative References | [RFC8200] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | |||
| (IPv6) Specification", STD 86, RFC 8200, | ||||
| DOI 10.17487/RFC8200, July 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8200>. | ||||
| 9.2. Informative References | ||||
| [I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-19 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-20 (work | |||
| in progress), December 2018. | in progress), March 2019. | |||
| [I-D.ietf-detnet-architecture] | [I-D.ietf-detnet-architecture] | |||
| Finn, N., Thubert, P., Varga, B., and J. Farkas, | Finn, N., Thubert, P., Varga, B., and J. Farkas, | |||
| "Deterministic Networking Architecture", draft-ietf- | "Deterministic Networking Architecture", draft-ietf- | |||
| detnet-architecture-10 (work in progress), December 2018. | detnet-architecture-13 (work in progress), May 2019. | |||
| [PCE] IETF, "Path Computation Element", | [PCE] IETF, "Path Computation Element", | |||
| <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | <https://datatracker.ietf.org/doc/charter-ietf-pce/>. | |||
| [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>. | |||
| [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>. | |||
| 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 4. | uses the Non-Storing Mode of Operation as represented in Figure 7. | |||
| 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 16, line 21 ¶ | skipping to change at page 18, line 33 ¶ | |||
| +-----+ ^ | | | +-----+ ^ | | | |||
| | | 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 4: RPL non-storing mode of operation | Figure 7: 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 17, line 24 ¶ | skipping to change at page 19, line 36 ¶ | |||
| 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 5: | illustrated in Figure 8: | |||
| 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. | |||
| o In storing mode, unless the destination is a child of the source, | o In storing mode, unless the destination is a child of the source, | |||
| skipping to change at page 18, line 21 ¶ | skipping to change at page 20, line 23 ¶ | |||
| +-----+ | +-----+ | |||
| 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 5: Routing Stretch between S and D via common parent X | Figure 8: 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 18, line 48 ¶ | skipping to change at page 20, line 50 ¶ | |||
| +-----+ | +-----+ | |||
| | | | | |||
| 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 6: Projected Transversal Route | Figure 9: 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 7, if the source is node 41 | instance in the diagram shown in Figure 10, 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 19, line 43 ¶ | skipping to change at page 21, line 47 ¶ | |||
| 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 7: Example DODAG forming a logical tree topology | Figure 10: 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 20, line 47 ¶ | skipping to change at page 22, line 49 ¶ | |||
| +-----+ | +-----+ | |||
| | 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 8: P-DAO from root | Figure 11: 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 21, line 28 ¶ | skipping to change at page 23, line 32 ¶ | |||
| +-----+ | +-----+ | |||
| ^ 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 9: P-DAO-ACK to root | Figure 12: 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 10: Projected Transversal Route | Figure 13: 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 | |||
| End of changes. 41 change blocks. | ||||
| 111 lines changed or deleted | 203 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/ | ||||