| < draft-ietf-roll-dao-projection-15.txt | draft-ietf-roll-dao-projection-16.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track R.A. Jadhav | Updates: 6554 (if approved) R.A. Jadhav | |||
| Expires: 31 May 2021 Huawei Tech | Intended status: Standards Track Huawei Tech | |||
| M. Gillmore | Expires: 19 July 2021 M. Gillmore | |||
| Itron | Itron | |||
| 27 November 2020 | 15 January 2021 | |||
| Root initiated routing state in RPL | Root initiated routing state in RPL | |||
| draft-ietf-roll-dao-projection-15 | draft-ietf-roll-dao-projection-16 | |||
| Abstract | Abstract | |||
| This document extends RFC 6550 and RFC 6553 to enable a RPL Root to | This document extends RFC 6550 and RFC 6553 to enable a RPL Root to | |||
| install and maintain Projected Routes within its DODAG, along a | install and maintain Projected Routes within its DODAG, along a | |||
| selected set of nodes that may or may not include self, for a chosen | selected set of nodes that may or may not include self, for a chosen | |||
| duration. This potentially enables routes that are more optimized or | duration. This potentially enables routes that are more optimized or | |||
| resilient than those obtained with the classical distributed | resilient than those obtained with the classical distributed | |||
| operation of RPL, either in terms of the size of a Routing Header or | operation of RPL, either in terms of the size of a Routing Header or | |||
| in terms of path length, which impacts both the latency and the | in terms of path length, which impacts both the latency and the | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 31 May 2021. | This Internet-Draft will expire on 19 July 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2021 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| skipping to change at page 2, line 23 ¶ | skipping to change at page 2, line 23 ¶ | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Glossary . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.3. Other Terms . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.3. Other Terms . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 6 | 3. Extending RFC 6550 . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.1. Projected DAO . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Projected DAO . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. Sibling Information Option . . . . . . . . . . . . . . . 8 | 3.2. Sibling Information Option . . . . . . . . . . . . . . . 8 | |||
| 3.3. P-DAO Request . . . . . . . . . . . . . . . . . . . . . . 8 | 3.3. P-DAO Request . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Extending the RPI . . . . . . . . . . . . . . . . . . . . 8 | 3.4. Extending the RPI . . . . . . . . . . . . . . . . . . . . 9 | |||
| 4. Extending RFC 6553 . . . . . . . . . . . . . . . . . . . . . 8 | 4. Extending RFC 6553 . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 5. Extending RFC 8138 . . . . . . . . . . . . . . . . . . . . . 9 | 5. Extending RFC 8138 . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 6. New RPL Control Messages and Options . . . . . . . . . . . . 10 | 6. New RPL Control Messages and Options . . . . . . . . . . . . 10 | |||
| 6.1. New P-DAO Request Control Message . . . . . . . . . . . . 10 | 6.1. New P-DAO Request Control Message . . . . . . . . . . . . 10 | |||
| 6.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 11 | 6.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 11 | |||
| 6.3. Via Information Options . . . . . . . . . . . . . . . . . 12 | 6.3. Via Information Options . . . . . . . . . . . . . . . . . 13 | |||
| 6.4. Sibling Information Option . . . . . . . . . . . . . . . 15 | 6.4. Sibling Information Option . . . . . . . . . . . . . . . 15 | |||
| 7. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 16 | 7. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 7.1. Requesting a Track . . . . . . . . . . . . . . . . . . . 18 | 7.1. Requesting a Track . . . . . . . . . . . . . . . . . . . 18 | |||
| 7.2. Identifying a Track . . . . . . . . . . . . . . . . . . . 18 | 7.2. Identifying a Track . . . . . . . . . . . . . . . . . . . 19 | |||
| 7.3. Installing a Track . . . . . . . . . . . . . . . . . . . 19 | 7.3. Installing a Track . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.4. Forwarding Along a Track . . . . . . . . . . . . . . . . 20 | 7.3.1. Storing-Mode P-Route . . . . . . . . . . . . . . . . 21 | |||
| 7.5. Non-Storing Mode Projected Route . . . . . . . . . . . . 21 | 7.3.2. Non-Storing-Mode P-Route . . . . . . . . . . . . . . 23 | |||
| 7.6. Storing Mode Projected Route . . . . . . . . . . . . . . 23 | 7.4. Forwarding Along a Track . . . . . . . . . . . . . . . . 24 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 8. Profiles . . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25 | 9. Example Track Signaling . . . . . . . . . . . . . . . . . . . 26 | |||
| 9.1. New Elective 6LoWPAN Routing Header Type . . . . . . . . 25 | 9.1. Using Storing-Mode Segments . . . . . . . . . . . . . . . 27 | |||
| 9.2. New Critical 6LoWPAN Routing Header Type . . . . . . . . 25 | 9.1.1. Stitched Segments . . . . . . . . . . . . . . . . . . 27 | |||
| 9.3. New Subregistry For The RPL Option Flags . . . . . . . . 26 | 9.1.2. External routes . . . . . . . . . . . . . . . . . . . 29 | |||
| 9.4. New RPL Control Codes . . . . . . . . . . . . . . . . . . 26 | 9.1.3. Segment Routing . . . . . . . . . . . . . . . . . . . 30 | |||
| 9.5. New RPL Control Message Options . . . . . . . . . . . . . 27 | 9.2. Using Non-Storing-Mode joining Tracks . . . . . . . . . . 32 | |||
| 9.6. SubRegistry for the Projected DAO Request Flags . . . . . 27 | 9.2.1. Stitched Tracks . . . . . . . . . . . . . . . . . . . 32 | |||
| 9.7. SubRegistry for the PDR-ACK Flags . . . . . . . . . . . . 28 | 9.2.2. External routes . . . . . . . . . . . . . . . . . . . 34 | |||
| 9.8. Subregistry for the PDR-ACK Acceptance Status Values . . 28 | 9.2.3. Segment Routing . . . . . . . . . . . . . . . . . . . 36 | |||
| 9.9. Subregistry for the PDR-ACK Rejection Status Values . . . 28 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | |||
| 9.10. SubRegistry for the Via Information Options Flags . . . . 29 | 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 9.11. SubRegistry for the Sibling Information Option Flags . . 29 | 11.1. New Elective 6LoWPAN Routing Header Type . . . . . . . . 39 | |||
| 9.12. Error in Projected Route ICMPv6 Code . . . . . . . . . . 30 | 11.2. New Critical 6LoWPAN Routing Header Type . . . . . . . . 39 | |||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 30 | 11.3. New Subregistry For The RPL Option Flags . . . . . . . . 40 | |||
| 11. Normative References . . . . . . . . . . . . . . . . . . . . 30 | 11.4. New RPL Control Codes . . . . . . . . . . . . . . . . . 40 | |||
| 12. Informative References . . . . . . . . . . . . . . . . . . . 31 | 11.5. New RPL Control Message Options . . . . . . . . . . . . 41 | |||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 32 | 11.6. SubRegistry for the Projected DAO Request Flags . . . . 41 | |||
| A.1. Loose Source Routing . . . . . . . . . . . . . . . . . . 32 | 11.7. SubRegistry for the PDR-ACK Flags . . . . . . . . . . . 41 | |||
| A.2. Transversal Routes . . . . . . . . . . . . . . . . . . . 34 | 11.8. Subregistry for the PDR-ACK Acceptance Status Values . . 42 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 36 | 11.9. Subregistry for the PDR-ACK Rejection Status Values . . 42 | |||
| 11.10. SubRegistry for the Via Information Options Flags . . . 43 | ||||
| 11.11. SubRegistry for the Sibling Information Option Flags . . 43 | ||||
| 11.12. New Destination Advertisement Object Flag . . . . . . . 43 | ||||
| 11.13. Error in Projected Route ICMPv6 Code . . . . . . . . . . 44 | ||||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 44 | ||||
| 13. Normative References . . . . . . . . . . . . . . . . . . . . 44 | ||||
| 14. Informative References . . . . . . . . . . . . . . . . . . . 45 | ||||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 46 | ||||
| A.1. Loose Source Routing . . . . . . . . . . . . . . . . . . 47 | ||||
| A.2. Transversal Routes . . . . . . . . . . . . . . . . . . . 48 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | ||||
| 1. Introduction | 1. Introduction | |||
| RPL, the "Routing Protocol for Low Power and Lossy Networks" [RPL] | RPL, the "Routing Protocol for Low Power and Lossy Networks" [RPL] | |||
| (LLNs), is a generic Distance Vector protocol that is well suited for | (LLNs), is a generic Distance Vector protocol that is well suited for | |||
| application in a variety of low energy Internet of Things (IoT) | application in a variety of low energy Internet of Things (IoT) | |||
| networks. RPL forms Destination Oriented Directed Acyclic Graphs | networks. RPL forms Destination Oriented Directed Acyclic Graphs | |||
| (DODAGs) in which the Root often acts as the Border Router to connect | (DODAGs) in which the Root often acts as the Border Router to connect | |||
| the RPL domain to the Internet. The Root is responsible to select | the RPL domain to the Internet. The Root is responsible to select | |||
| the RPL Instance that is used to forward a packet coming from the | the RPL Instance that is used to forward a packet coming from the | |||
| skipping to change at page 5, line 35 ¶ | skipping to change at page 5, line 45 ¶ | |||
| 2.2. Glossary | 2.2. Glossary | |||
| This document often uses the following acronyms: | This document often uses the following acronyms: | |||
| CMO: Control Message Option | CMO: Control Message Option | |||
| DAO: Destination Advertisement Object | DAO: Destination Advertisement Object | |||
| DAG: Directed Acyclic Graph | DAG: Directed Acyclic Graph | |||
| DODAG: Destination-Oriented Directed Acyclic Graph; A DAG with only | DODAG: Destination-Oriented Directed Acyclic Graph; A DAG with only | |||
| one vertex (i.e., node) that has no outgoing edge (i.e., link) | one vertex (i.e., node) that has no outgoing edge (i.e., link) | |||
| LLN: Low-Power and Lossy Network | LLN: Low-Power and Lossy Network | |||
| NMPR: Non-Storing Mode Projected Route | ||||
| MOP: RPL Mode of Operation | MOP: RPL Mode of Operation | |||
| P-DAO: Projected DAO | P-DAO: Projected DAO | |||
| P-Route: Projected Route | ||||
| PDR: P-DAO Request | PDR: P-DAO Request | |||
| RAN: RPL-Aware Node (either a RPL Router or a RPL-Aware Leaf) | RAN: RPL-Aware Node (either a RPL Router or a RPL-Aware Leaf) | |||
| RAL: RPL-Aware Leaf | RAL: RPL-Aware Leaf | |||
| RH: Routing Header | RH: Routing Header | |||
| RPI: RPL Packet Information | RPI: RPL Packet Information | |||
| RTO: RPL Target Option | RTO: RPL Target Option | |||
| RUL: RPL-Unaware Leaf | RUL: RPL-Unaware Leaf | |||
| SIO: RPL Sibling Information Option | SIO: RPL Sibling Information Option | |||
| SR-VIO: A Source-Routed Via Information Option, used in Non-Storing | SR-VIO: A Source-Routed Via Information Option, used in Non-Storing- | |||
| Mode P-DAO messages. | Mode P-DAO messages. | |||
| SMPR: Storing Mode Projected Route | ||||
| TIO: RPL Transit Information Option | TIO: RPL Transit Information Option | |||
| SF-VIO: A Via Information Option, used in Storing Mode P-DAO | SF-VIO: A Via Information Option, used in Storing-Mode P-DAO | |||
| messages. | messages. | |||
| VIO: A Via Information Option; it can be a SF-VIO or an SR-VIO. | VIO: A Via Information Option; it can be a SF-VIO or an SR-VIO. | |||
| 2.3. Other Terms | 2.3. Other Terms | |||
| Projected Route: A RPL Projected Route is a RPL route that is | Projected Route: A RPL Projected Route is a RPL route that is | |||
| computed remotely by a PCE, and installed and maintained by a RPL | computed remotely by a PCE, and installed and maintained by a RPL | |||
| Root on behalf of the PCE. | Root on behalf of the PCE. | |||
| Projected DAO: A DAO message used to install a Projected Route. | Projected DAO: A DAO message used to install a Projected Route. | |||
| Track: A DODAG that provides a complex path from or to a Root that | Track: A DODAG that provides a complex path from or to a Root that | |||
| skipping to change at page 6, line 45 ¶ | skipping to change at page 7, line 11 ¶ | |||
| therein. This specification enables to combine one or more Projected | therein. This specification enables to combine one or more Projected | |||
| Routes into a DODAG called a Track, that is traversed to reach the | Routes into a DODAG called a Track, that is traversed to reach the | |||
| Targets. | Targets. | |||
| The Track is assimilated with the DODAG formed for a Local RPL | The Track is assimilated with the DODAG formed for a Local RPL | |||
| Instance. The local RPLInstanceID of the Track is called the | Instance. The local RPLInstanceID of the Track is called the | |||
| TrackID, more in Section 7.2. A P-DAO message for a Track signals | TrackID, more in Section 7.2. A P-DAO message for a Track signals | |||
| the TrackID in the RPLInstanceID field. The Track Ingress is | the TrackID in the RPLInstanceID field. The Track Ingress is | |||
| signaled in the DODAGID field of the Projected DAO Base Object; that | signaled in the DODAGID field of the Projected DAO Base Object; that | |||
| field is elided in the case of the main RPL Instance. The Track | field is elided in the case of the main RPL Instance. The Track | |||
| Ingress is the Root of the Track, as shown in Figure 1. . | Ingress is the Root of the Track, as shown in Figure 1. | |||
| This specification defines the new "Projected DAO" (P) flag. The 'P' | ||||
| flag is encoded in bit position 2 (to be confirmed by IANA) of the | ||||
| Flags field in the DAO Base Object. The Root MUST set it to 1 in a | ||||
| Projected DAO message. Otherwise it MUST be set to 0. It is set to | ||||
| 0 in legacy implementations as specified respectively in Sections | ||||
| 20.11 and 6.4 of [RPL]. . | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | TrackID |K|D| Flags | Reserved | DAOSequence | | | TrackID |K|D|P| Flags | Reserved | DAOSequence | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| | | | | | | |||
| + IPv6 Address of the Track Ingress + | + IPv6 Address of the Track Ingress + | |||
| | | | | | | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Option(s)... | | Option(s)... | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 1: Projected DAO Format for a Track | Figure 1: Projected DAO Base Object | |||
| New fields: | ||||
| TrackID: In the case of a P-DAO, the RPLInstanceID field is called | ||||
| TrackID. This is a naming convenience but does not change the | ||||
| semantics and format of the RPLInstanceID that is used as TrackID. | ||||
| P: 1-bit flag (position to be confirmed by IANA). | ||||
| The 'P' flag is set to 1 by the Root to signal a Projected DAO, | ||||
| and it is set to 0 otherwise. | ||||
| In RPL Non-Storing Mode, the TIO and RTO are combined in a DAO | In RPL Non-Storing Mode, the TIO and RTO are combined in a DAO | |||
| message to inform the DODAG Root of all the edges in the DODAG, which | message to inform the DODAG Root of all the edges in the DODAG, which | |||
| are formed by the directed parent-child relationships. Options may | are formed by the directed parent-child relationships. Options may | |||
| be factorized; multiple RTOs may be present to signal a collection of | be factorized; multiple RTOs may be present to signal a collection of | |||
| children that can be reached via the parent(s) indicated in the | children that can be reached via the parent(s) indicated in the | |||
| TIO(s) that follows the RTOs. This specification generalizes the | TIO(s) that follows the RTOs. This specification generalizes the | |||
| case of a parent that can be used to reach a child with that of a | case of a parent that can be used to reach a child with that of a | |||
| whole Track through which both children and siblings of the Track | whole Track through which both children and siblings of the Track | |||
| Egress are reachable. | Egress are reachable. | |||
| New CMOs called the Via Information Options (VIO) are introduced for | New CMOs called the Via Information Options (VIO) are introduced for | |||
| use in P-DAO messages as a multihop alternative to the TIO. One VIO | use in P-DAO messages as a multihop alternative to the TIO. One VIO | |||
| is the Stateful Via Information Option (SF-VIO); the SF-VIO installs | is the Stateful VIO(SF-VIO); the SF-VIO installs Storing-Mode | |||
| Storing Mode Projected Route (SMPR) along a strict segment. The | Projected Route along a strict segment. The other is the Source- | |||
| other is the Source-Routed SF-VIO (SR-VIO); the SR-VIO installs a | Routed VIO (SR-VIO); the SR-VIO installs a Non-Storing-Mode Projected | |||
| Non-Storing Mode Projected Route (NMPR) at the Track Ingress, which | Route at the Track Ingress, which uses that state to encapsulate a | |||
| uses that state to encapsulate a packet with a Routing Header (RH) to | packet with a Routing Header (RH) to the Track Egress. | |||
| the Track Egress. | ||||
| Like in a DAO message, the RTOs can be factorized in a P-DAO, but the | Like in a DAO message, the RTOs can be factorized in a P-DAO, but the | |||
| Via Options cannot. A P-DAO contains one or more RTOs that indicate | Via Information Options cannot. A P-DAO contains one or more RTOs | |||
| the destinations that can be reached via the Track, and exactly one | that indicate the destinations that can be reached via the Track, and | |||
| Via Option that signals a sequence of nodes. In Non-Storing Mode, | exactly one VIOthat signals a sequence of nodes. In Non-Storing | |||
| the Root sends the P-DAO to the Track Ingress where the source- | Mode, the Root sends the P-DAO to the Track Ingress where the source- | |||
| routing state is stored. In Storing Mode, the P-DAO is sent to the | routing state is stored. In Storing Mode, the P-DAO is sent to the | |||
| Track Egress and forwarded along the Segment in the reverse | Track Egress and forwarded along the Segment in the reverse | |||
| direction, installing a Storing Mode state to the Track Egress at | direction, installing a Storing Mode state to the Track Egress at | |||
| each hop. In both cases the Track Ingress is the owner of the Track, | each hop. In both cases the Track Ingress is the owner of the Track, | |||
| and it generates the P-DAO-ACK when the installation is successful. | and it generates the P-DAO-ACK when the installation is successful. | |||
| 3.2. Sibling Information Option | 3.2. Sibling Information Option | |||
| This specification adds another CMO called the Sibling Information | This specification adds another CMO called the Sibling Information | |||
| Option (SIO) that is used by a RPL Aware Node (RAN) to advertise a | Option (SIO) that is used by a RPL Aware Node (RAN) to advertise a | |||
| skipping to change at page 12, line 18 ¶ | skipping to change at page 12, line 46 ¶ | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 6: PDR-ACK status Format | Figure 6: PDR-ACK status Format | |||
| E: 1-bit flag. Set to indicate a rejection. When not set, the | E: 1-bit flag. Set to indicate a rejection. When not set, the | |||
| value of 0 indicates Success/Unqualified acceptance and other | value of 0 indicates Success/Unqualified acceptance and other | |||
| values indicate "not an outright rejection". | values indicate "not an outright rejection". | |||
| R: 1-bit flag. Reserved, MUST be set to 0 by the sender and | R: 1-bit flag. Reserved, MUST be set to 0 by the sender and | |||
| ignored by the receiver. | ignored by the receiver. | |||
| Status Value: 6-bit unsigned integer. Values depending on the | Status Value: 6-bit unsigned integer. Values depending on the | |||
| setting of the 'E' flag, see Table 7 and Table 8. | setting of the 'E' flag, see Table 27 and Table 28. | |||
| Reserved: The Reserved field MUST initialized to zero by the sender | Reserved: The Reserved field MUST initialized to zero by the sender | |||
| and MUST be ignored by the receiver | and MUST be ignored by the receiver | |||
| 6.3. Via Information Options | 6.3. Via Information Options | |||
| An Via Option signals the ordered list of IPv6 Via Addresses that | An VIOsignals the ordered list of IPv6 Via Addresses that constitutes | |||
| constitutes the hops of either a Serial Track or a Segment of a more | the hops of either a Serial Track or a Segment of a more Complex | |||
| Complex Track. An Via Option MUST contain at least one Via Address, | Track. An VIOMUST contain at least one Via Address, and a Via | |||
| and a Via Address MUST NOT be present more than once, otherwise the | Address MUST NOT be present more than once, otherwise the VIOMUST be | |||
| Via Option MUST be ignored. The format of the Via Options is as | ignored. The format of the Via Information Options is as follows: | |||
| 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 | Flags | SegmentID | | | Type | Option Length | Flags | SegmentID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |Segm. Sequence | Seg. Lifetime | SRH-6LoRH header | | |Segm. Sequence | Seg. Lifetime | SRH-6LoRH header | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| skipping to change at page 13, line 33 ¶ | skipping to change at page 13, line 41 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Via Address n . | . Via Address n . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 7: Via Information Option format (uncompressed form) | Figure 7: VIOformat (uncompressed form) | |||
| Option Type: 0x0B for SF-VIO, 0x0C for SR-VIO (to be confirmed by | Option Type: 0x0B for SF-VIO, 0x0C for SR-VIO (to be confirmed by | |||
| IANA) | IANA) | |||
| Option Length: In bytes; variable, depending on the number of Via | Option Length: In bytes; variable, depending on the number of Via | |||
| Addresses and the compression. | Addresses and the compression. | |||
| SegmentID: 8-bit field that identifies a Segment within a Track or | SegmentID: 8-bit field that identifies a Segment within a Track or | |||
| the main DODAG as indicated by the TrackID field. The value of 0 | the main DODAG as indicated by the TrackID field. The value of 0 | |||
| is used to signal a Serial Track, i.e., made of a single segment. | is used to signal a Serial Track, i.e., made of a single segment. | |||
| Segment Sequence: 8-bit unsigned integer. The Segment Sequence | Segment Sequence: 8-bit unsigned integer. The Segment Sequence | |||
| obeys the operation in section 7.2 of [RPL] and the lollipop | obeys the operation in section 7.2 of [RPL] and the lollipop | |||
| starts at 255. | starts at 255. | |||
| When the Root of the DODAG needs to refresh or update a Segment in | When the Root of the DODAG needs to refresh or update a Segment in | |||
| a Track, it increments the Segment Sequence individually for that | a Track, it increments the Segment Sequence individually for that | |||
| Segment. | Segment. | |||
| The Segment information indicated in the Via Option deprecates any | The Segment information indicated in the VIOdeprecates any state | |||
| state for the Segment indicated by the SegmentID within the | for the Segment indicated by the SegmentID within the indicated | |||
| indicated Track and sets up the new information. | Track and sets up the new information. | |||
| An Via Option with a Segment Sequence that is not as fresh as the | An VIOwith a Segment Sequence that is not as fresh as the current | |||
| current one is ignored. | one is ignored. | |||
| A VIO for a given DODAGID with the same (TrackID, SegmentID, | A VIO for a given DODAGID with the same (TrackID, SegmentID, | |||
| Segment Sequence) indicates a retry; it MUST NOT change the | Segment Sequence) indicates a retry; it MUST NOT change the | |||
| Segment and MUST be propagated or answered as the first copy. | Segment and MUST be propagated or answered as the first copy. | |||
| Segment Lifetime: 8-bit unsigned integer. The length of time in | Segment Lifetime: 8-bit unsigned integer. The length of time in | |||
| Lifetime Units (obtained from the Configuration option) that the | Lifetime Units (obtained from the Configuration option) that the | |||
| Segment is usable. | Segment is usable. | |||
| The period starts when a new Segment Sequence is seen. The value | The period starts when a new Segment Sequence is seen. The value | |||
| of 255 (0xFF) represents infinity. The value of zero (0x00) | of 255 (0xFF) represents infinity. The value of zero (0x00) | |||
| indicates a loss of reachability. | indicates a loss of reachability. | |||
| A P-DAO message that contains a Via Information option with a | A P-DAO message that contains a VIOwith a Segment Lifetime of zero | |||
| Segment Lifetime of zero is referred as a No-Path P-DAO in this | is referred as a No-Path P-DAO in this document. | |||
| document. | ||||
| SRH-6LoRH header: The first 2 bytes of the (first) SRH-6LoRH as | SRH-6LoRH header: The first 2 bytes of the (first) SRH-6LoRH as | |||
| shown in Figure 6 of [RFC8138]. A 6LoRH Type of 4 means that the | shown in Figure 6 of [RFC8138]. A 6LoRH Type of 4 means that the | |||
| VIA Addresses are provided in full with no compression. | VIA Addresses are provided in full with no compression. | |||
| Via Address: An IPv6 addresse along the Segment. | Via Address: An IPv6 addresse along the Segment. | |||
| In a SF-VIO, the list is a strict path between direct neighbors, | In a SF-VIO, the list is a strict path between direct neighbors, | |||
| from the segment ingress to egress, both included. In an SR-VIO, | from the segment ingress to egress, both included. In an SR-VIO, | |||
| the list starts at the first hop and ends at a Track Egress. The | the list starts at the first hop and ends at a Track Egress. The | |||
| list in an SR-VIO may be loose, provided that each listed node has | list in an SR-VIO may be loose, provided that each listed node has | |||
| a path to the next listed node, e.g., via a segment or another | a path to the next listed node, e.g., via a segment or another | |||
| Track. | Track. | |||
| In the case of a SF-VIO, or if [RFC8138] is not used in the data | In the case of a SF-VIO, or if [RFC8138] is not used in the data | |||
| packets, then the Root MUST use only one SRH-6LoRH per Via Option, | packets, then the Root MUST use only one SRH-6LoRH per Via | |||
| and the compression is the same for all the addresses, as shown in | Information Option, and the compression is the same for all the | |||
| Figure 7. | addresses, as shown in Figure 7. | |||
| In case of an SR-VIO, and if [RFC8138] is in use in the main | In case of an SR-VIO, and if [RFC8138] is in use in the main | |||
| DODAG, then the Root SHOULD optimize the size of the SR-VIO; more | DODAG, then the Root SHOULD optimize the size of the SR-VIO; more | |||
| than one SRH-6LoRH may be present, e.g., if the compression level | than one SRH-6LoRH may be present, e.g., if the compression level | |||
| changes inside the Segment and different SRH-6LoRH Types are | changes inside the Segment and different SRH-6LoRH Types are | |||
| required. The content of the SR-VIO starting at the first SRH- | required. The content of the SR-VIO starting at the first SRH- | |||
| 6LoRH header is thus verbatim the one that the Track Ingress | 6LoRH header is thus verbatim the one that the Track Ingress | |||
| places in the packet encapsulation to reach the Track Ingress. | places in the packet encapsulation to reach the Track Ingress. | |||
| 6.4. Sibling Information Option | 6.4. Sibling Information Option | |||
| skipping to change at page 16, line 51 ¶ | skipping to change at page 17, line 12 ¶ | |||
| that case the DAG Metric Container provides additional metrics for | that case the DAG Metric Container provides additional metrics for | |||
| the hop from the Sibling to this node. | the hop from the Sibling to this node. | |||
| 7. Projected DAO | 7. Projected DAO | |||
| This draft adds a capability to RPL whereby the Root of a main DODAG | This draft adds a capability to RPL whereby the Root of a main DODAG | |||
| installs a Track as a collection of Projected Routes, using a | installs a Track as a collection of Projected Routes, using a | |||
| Projected-DAO (P-DAO) message to maintain each individual route. The | Projected-DAO (P-DAO) message to maintain each individual route. The | |||
| P-DAO signals a collection of Targets in the RPL Target Option(s) | P-DAO signals a collection of Targets in the RPL Target Option(s) | |||
| (RTO). Those Targets can be reached via a sequence of routers | (RTO). Those Targets can be reached via a sequence of routers | |||
| indicated in a Via Information Option (VIO). A P-DAO message MUST | indicated in a VIO(VIO). A P-DAO message MUST contain exactly one | |||
| contain exactly one VIO, which is either a SF-VIO or an SR-VIO, and | VIO, which is either a SF-VIO or an SR-VIO, and MUST follow one or | |||
| MUST follow one or more RTOs. There can be at most one such sequence | more RTOs. There can be at most one such sequence of RTO(s) and an | |||
| of RTO(s) and an Via Option. A track is indentified by a tupple | Via Information Option. A track is indentified by a tupple DODAGID, | |||
| DODAGID, TrackID and each route within a Track is indexed by a | TrackID and each route within a Track is indexed by a SegmentID. | |||
| SegmentID. | ||||
| A P-DAO MUST be sent from the address of the Root that serves as | A P-DAO MUST be sent from the address of the Root that serves as | |||
| DODAGID for the main DODAG. It MUST be sent to a GUA or a ULA of | DODAGID for the main DODAG. It MUST be sent to a GUA or a ULA of | |||
| either the ingress or the egress of the Segment, more below. If the | either the ingress or the egress of the Segment, more below. If the | |||
| 'K' Flag is present in the P-DAO, and unless the P-DAO does not reach | 'K' Flag is present in the P-DAO, and unless the P-DAO does not reach | |||
| it, the ingress of the Segment is the node that acknowledges the | it, the ingress of the Segment is the node that acknowledges the | |||
| message, using a DAO-ACK that MUST be sent back to the address that | message, using a DAO-ACK that MUST be sent back to the address that | |||
| serves as DODAGID for the main DODAG. | serves as DODAGID for the main DODAG. | |||
| Like a classical DAO message, a P-DAO causes a change of state only | Like a classical DAO message, a P-DAO causes a change of state only | |||
| if it is "new" per section 9.2.2. "Generation of DAO Messages" of | if it is "new" per section 9.2.2. "Generation of DAO Messages" of | |||
| the RPL specification [RPL]; this is determined using the Segment | the RPL specification [RPL]; this is determined using the Segment | |||
| Sequence information from the Via Option as opposed to the Path | Sequence information from the VIOas opposed to the Path Sequence from | |||
| Sequence from a TIO. Also, a Segment Lifetime of 0 in an Via Option | a TIO. Also, a Segment Lifetime of 0 in an VIOindicates that the | |||
| indicates that the projected route associated to the Segment is to be | projected route associated to the Segment is to be removed. | |||
| removed. | ||||
| There are two kinds of operation for the Projected Routes, the | There are two kinds of operation for the Projected Routes, the | |||
| Storing Mode and the Non-Storing Mode. | Storing Mode and the Non-Storing Mode. | |||
| * The Non-Storing Mode is discussed in Section 7.5. A Non-Storing | * The Non-Storing Mode is discussed in Section 7.3.2. A Non-Storing | |||
| Mode P-DAO carries an SR-VIO with the loose list of Via Addresses | Mode P-DAO carries an SR-VIO with the loose list of Via Addresses | |||
| that forms a source-routed Segment to the Track Egress. The | that forms a source-routed Segment to the Track Egress. The | |||
| recipient of the P-DAO is the Track Ingress; it MUST install a | recipient of the P-DAO is the Track Ingress; it MUST install a | |||
| source-routed state to the Track Egress and reply to the Root | source-routed state to the Track Egress and reply to the Root | |||
| directly using a DAO-ACK message if requested to. | directly using a DAO-ACK message if requested to. | |||
| * The Storing Mode is discussed in Section 7.6. A Storing Mode | * The Storing Mode is discussed in Section 7.3.1. A Storing Mode | |||
| P-DAO carries a SF-VIO with the strict list of Via Addresses from | P-DAO carries a SF-VIO with the strict list of Via Addresses from | |||
| the ingress to the egress of the Segment in the data path order. | the ingress to the egress of the Segment in the data path order. | |||
| The routers listed in the Via Addresses, except the egress, MUST | The routers listed in the Via Addresses, except the egress, MUST | |||
| install a routing state to the Target(s) via the next Via Address | install a routing state to the Target(s) via the next Via Address | |||
| in the SF-VIO. In normal operations, the P-DAO is propagated | in the SF-VIO. In normal operations, the P-DAO is propagated | |||
| along the chain of Via Routers from the egress router of the path | along the chain of Via Routers from the egress router of the path | |||
| till the ingress one, which confirms the installation to the Root | till the ingress one, which confirms the installation to the Root | |||
| with a DAO-ACK message. | with a DAO-ACK message. | |||
| In case of a forwarding error along a Projected Route, an ICMP error | In case of a forwarding error along a Projected Route, an ICMP error | |||
| is sent to the Root with a new Code "Error in Projected Route" (See | is sent to the Root with a new Code "Error in Projected Route" (See | |||
| Section 9.12). The Root can then modify or remove the Projected | Section 11.13). The Root can then modify or remove the Projected | |||
| Route. The "Error in Projected Route" message has the same format as | Route. The "Error in Projected Route" message has the same format as | |||
| the "Destination Unreachable Message", as specified in RFC 4443 | the "Destination Unreachable Message", as specified in RFC 4443 | |||
| [RFC4443]. | [RFC4443]. | |||
| The portion of the invoking packet that is sent back in the ICMP | The portion of the invoking packet that is sent back in the ICMP | |||
| message SHOULD record at least up to the RH if one is present, and | message SHOULD record at least up to the RH if one is present, and | |||
| this hop of the RH SHOULD be consumed by this node so that the | this hop of the RH SHOULD be consumed by this node so that the | |||
| destination in the IPv6 header is the next hop that this node could | 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 | not reach. if a 6LoWPAN Routing Header (6LoRH) [RFC8138] is used to | |||
| carry the IPv6 routing information in the outer header then that | carry the IPv6 routing information in the outer header then that | |||
| whole 6LoRH information SHOULD be present in the ICMP message. | whole 6LoRH information SHOULD be present in the ICMP message. | |||
| The sender and exact operation depend on the Mode and is described in | The sender and exact operation depend on the Mode and is described in | |||
| Section 7.5 and Section 7.6 respectively. | Section 7.3.2 and Section 7.3.1 respectively. | |||
| 7.1. Requesting a Track | 7.1. Requesting a Track | |||
| A Node is free to ask the Root for a new Track at any time. This is | A Node is free to ask the Root for a new Track at any time. This is | |||
| done with a PDR message, that indicates in the Requested Lifetime | done with a PDR message, that indicates in the Requested Lifetime | |||
| field the duration for which the Track should be established. Upon a | field the duration for which the Track should be established. Upon a | |||
| PDR, the Root MAY install the necessary Segments, in which case it | PDR, the Root MAY install the necessary Segments, in which case it | |||
| answers with a PDR-ACK indicating the granted Track Lifetime. All | answers with a PDR-ACK indicating the granted Track Lifetime. All | |||
| the Segments MUST be of a same mode, either Storing or Non-Storing. | the Segments MUST be of a same mode, either Storing or Non-Storing. | |||
| All the Segments MUST be created with the same TrackID and the same | All the Segments MUST be created with the same TrackID and the same | |||
| skipping to change at page 19, line 9 ¶ | skipping to change at page 19, line 17 ¶ | |||
| RPL defines the concept of an Instance to signal an individual | RPL defines the concept of an Instance to signal an individual | |||
| routing topology but does not have a concept of an administrative | routing topology but does not have a concept of an administrative | |||
| distance, which exists in certain proprietary implementations to sort | distance, which exists in certain proprietary implementations to sort | |||
| out conflicts between multiple sources of routing information within | out conflicts between multiple sources of routing information within | |||
| one routing topology. | one routing topology. | |||
| This draft leverages the RPL Instance model as follows: | This draft leverages the RPL Instance model as follows: | |||
| * The Root MAY use P-DAO messages to add better routes in the main | * The Root MAY use P-DAO messages to add better routes in the main | |||
| (Global) Instance in conformance with the routing objectives in | (Global) Instance in conformance with the routing objectives in | |||
| that Instance. To achieve this, the Root MAY install an SMPR | that Instance. To achieve this, the Root MAY install an Storing- | |||
| along a path down the main Non-Storing Mode DODAG. This enables a | Mode P-Route along a path down the main Non-Storing Mode DODAG. | |||
| loose source routing and reduces the size of the Routing Header, | This enables a loose source routing and reduces the size of the | |||
| see Appendix A.1. | Routing Header, see Appendix A.1. | |||
| When adding an SMPR to the main RPL Instance, the Root MUST set | When adding an Storing-Mode P-Route to the main RPL Instance, the | |||
| the RPLInstanceID field of the P-DAO message (see section 6.4.1. | Root MUST set the RPLInstanceID field of the P-DAO message (see | |||
| of [RPL]) to the RPLInstanceID of the main DODAG, and MUST NOT use | section 6.4.1. of [RPL]) to the RPLInstanceID of the main DODAG, | |||
| the DODAGID field. A Projected Route provides a longer match to | and MUST NOT use the DODAGID field. A Projected Route provides a | |||
| the Target Address than the default route via the Root, so it is | longer match to the Target Address than the default route via the | |||
| preferred. | Root, so it is preferred. | |||
| Once the Projected Route is installed, the intermediate nodes | Once the Projected Route is installed, the intermediate nodes | |||
| listed in the SF-VIO after first one (i.e. The ingress) can be | listed in the SF-VIO after first one (i.e. The ingress) can be | |||
| elided from the RH in packets sent along the Segment signaled in | elided from the RH in packets sent along the Segment signaled in | |||
| the P-DAO. The resulting loose source routing header indicates | the P-DAO. The resulting loose source routing header indicates | |||
| (one of) the Target(s) as the next entry after the ingress. | (one of) the Target(s) as the next entry after the ingress. | |||
| * The Root MAY also use P-DAO messages to install a specific (say, | * The Root MAY also use P-DAO messages to install a specific (say, | |||
| Traffic Engineered) path as a Serial or as a Complex Track, to a | Traffic Engineered) path as a Serial or as a Complex Track, to a | |||
| particular endpoint that is the Track Egress. In that case, the | particular endpoint that is the Track Egress. In that case, the | |||
| skipping to change at page 19, line 43 ¶ | skipping to change at page 20, line 7 ¶ | |||
| IPv6 Address (GUA) or Unique-Local Address (ULA) of the Track | IPv6 Address (GUA) or Unique-Local Address (ULA) of the Track | |||
| Ingress that serves as DODAGID for the Track. This way, a Track | Ingress that serves as DODAGID for the Track. This way, a Track | |||
| is uniquely identified by the tuple (DODAGID, TrackID) where the | is uniquely identified by the tuple (DODAGID, TrackID) where the | |||
| TrackID is always represented with the 'D' flag set to 0. | TrackID is always represented with the 'D' flag set to 0. | |||
| The Track Egress Address and the TrackID MUST be signaled in the | The Track Egress Address and the TrackID MUST be signaled in the | |||
| P-DAO message as shown in Figure 1. | P-DAO message as shown in Figure 1. | |||
| 7.3. Installing a Track | 7.3. Installing a Track | |||
| A Storing Mode P-DAO contains an SF-VIO that signals the strict | A Storing-Mode P-DAO contains an SF-VIO that signals the strict | |||
| sequence of consecutive nodes to form a segment between a segment | sequence of consecutive nodes to form a segment between a segment | |||
| ingress and a segment egress (both included). It installs a route of | ingress and a segment egress (both included). It installs a route of | |||
| a higher precedence along the segment towards the Targets indicated | a higher precedence along the segment towards the Targets indicated | |||
| in the Target Options. The segment is included in a DODAG indicated | in the Target Options. The segment is included in a DODAG indicated | |||
| by the P-DAO Base Object, that may be the one formed by the main RPL | by the P-DAO Base Object, that may be the one formed by the main RPL | |||
| Instance, or a Track associated with a local RPL Instance. A Track | Instance, or a Track associated with a local RPL Instance. A Track | |||
| Egress is signaled as a Target in the P-DAO, and as the last entry is | Egress is signaled as a Target in the P-DAO, and as the last entry is | |||
| an SF-VIO of a last segment towards that Egress. | an SF-VIO of a last segment towards that Egress. | |||
| A Non-Storing Mode P-DAO signals a strict or loose sequence of nodes | A Non-Storing-Mode P-DAO signals a strict or loose sequence of nodes | |||
| between the Track Ingress (excluded) and a Track Egress (included). | between the Track Ingress (excluded) and a Track Egress (included). | |||
| It installs a source-routed path of a higher precedence within the | It installs a source-routed path of a higher precedence within the | |||
| Track indicated by the P-DAO Base Object, towards the Targets | Track indicated by the P-DAO Base Object, towards the Targets | |||
| indicated in the Target Options. The source-routed path requires a | indicated in the Target Options. The source-routed path requires a | |||
| Source-Routing header which implies an encapsulation to add the SRH | Source-Routing header which implies an encapsulation to add the SRH | |||
| to an existing packet. | to an existing packet. | |||
| The next entry in the sequence must be either a neighbor of the | The next entry in the sequence must be either a neighbor of the | |||
| previous entry, or reachable as a Target via another Projected Route, | previous entry, or reachable as a Target via another Projected Route, | |||
| either Storing or Non-Storing. If it is reachable over a Storing | either Storing or Non-Storing. If it is reachable over a Storing | |||
| skipping to change at page 20, line 39 ¶ | skipping to change at page 21, line 5 ¶ | |||
| A Complex Track can be installed as a collection of Projected Routes | A Complex Track can be installed as a collection of Projected Routes | |||
| with the same DODAGID and Track ID. The Ingress of a Non-Storing | with the same DODAGID and Track ID. The Ingress of a Non-Storing | |||
| Mode Projected Route must be the owner of the DODAGID. The Ingress | Mode Projected Route must be the owner of the DODAGID. The Ingress | |||
| of a Storing Mode Projected Route must be either the owner of the | of a Storing Mode Projected Route must be either the owner of the | |||
| DODAGID, or the egress of a preceding Storing Mode Projected Route in | DODAGID, or the egress of a preceding Storing Mode Projected Route in | |||
| the same Track. In the latter case, the Targets of the Projected | the same Track. In the latter case, the Targets of the Projected | |||
| Route must be Targets of the preceding Projected Route to ensure that | Route must be Targets of the preceding Projected Route to ensure that | |||
| they are visible from the track Ingress. | they are visible from the track Ingress. | |||
| 7.4. Forwarding Along a Track | 7.3.1. Storing-Mode P-Route | |||
| This draft leverages the RPL Forwarding model follows: | Profile 1 extends RPL opertation in a Non-Storing Mode network with | |||
| Storing-Mode Projected Routes that install segments along the main | ||||
| DODAG and enable to loose source routing between the Root and the | ||||
| targets. | ||||
| * In the data packets, the Track DODAGID and the TrackID MUST be | As illustrated in Figure 9, a P-DAO that carries a SF-VIO enables the | |||
| respectively signaled as the IPv6 Source Address and the | Root to install a stateful route towards a collection of Targets | |||
| RPLInstanceID field of the RPI that MUST be placed in the outer | along a Segment between a Track Ingress and a Track Egress. | |||
| chain of IPv6 Headers. | ||||
| The RPI carries a local RPLInstanceID called the TrackID, which, | ------+--------- | |||
| in association with the DODAGID, indicates the Track along which | | Internet | |||
| the packet is forwarded. | | | |||
| +-----+ | ||||
| | | Border Router | ||||
| | | (RPL Root) | ||||
| +-----+ | ^ | | ||||
| | | DAO | ACK | | ||||
| o o o o | | | | ||||
| 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 o o o o o o o v | DAO v . | ||||
| o o LLN o o o | | ||||
| o o o o o Loose Source Route Path | | ||||
| o o o o From Root To Destination v | ||||
| The 'D' flag in the RPLInstanceID MUST be set to 0 to indicate | Figure 9: Projecting a route | |||
| that the source address in the IPv6 header is set ot the DODAGID, | ||||
| more in Section 7.4. | ||||
| * This draft conforms the principles of [USEofRPLinfo] with regards | In order to install the relevant routing state along the Segment , | |||
| to packet forwarding and encapsulation along a Track. | the Root sends a unicast P-DAO message to the Track Egress router of | |||
| the routing Segment that is being installed. The P-DAO message | ||||
| contains a SF-VIO with the direct sequence of Via Addresses. The SF- | ||||
| VIO follows one or more RTOs indicating the Targets to which the | ||||
| Track leads. The SF-VIO contains a Segment Lifetime for which the | ||||
| state is to be maintained. | ||||
| - In that case, the Track is the DODAG, the Track Ingress is the | The Root sends the P-DAO directly to the egress node of the Segment. | |||
| Root, and the Track Egress is a RAL, and neighbors of the Track | In that P-DAO, the destination IP address matches the last Via | |||
| Egress that can be reached via the Track are RULs. The | Address in the SF-VIO. This is how the egress recognizes its role. | |||
| encapsulation rules in [USEofRPLinfo] apply. | In a similar fashion, the ingress node recognizes its role as it | |||
| matches first Via Address in the SF-VIO. | ||||
| - If the Track Ingress is the originator of the packet and the | The Egress node of the Segment is the only node in the path that does | |||
| Track Egress is the destination of the packet, there is no need | not install a route in response to the P-DAO; it is expected to be | |||
| for an encapsulation. | already able to route to the Target(s) on its own. If one of the | |||
| Targets is not known, the node MUST answer to the Root with a | ||||
| negative DAO-ACK listing the Target(s) that could not be located | ||||
| (suggested status 10 to be confirmed by IANA). | ||||
| - So the Track Ingress must encapsulate the traffic that it did | If the egress node can reach all the Targets, then it forwards the | |||
| not originate, and add an RPI in any fashion. | P-DAO with unchanged content to its loose predecessor in the Segment | |||
| as indicated in the list of Via Information options, and recursively | ||||
| the message is propagated unchanged along the sequence of routers | ||||
| indicated in the P-DAO, but in the reverse order, from egress to | ||||
| ingress. | ||||
| A packet that is being routed over the RPL Instance associated to | The address of the predecessor to be used as destination of the | |||
| a first Non-Storing Mode Track MAY be placed (encapsulated) in a | propagated DAO message is found in the Via Address the precedes the | |||
| second Track to cover one loose hop of the first Track. On the | one that contain the address of the propagating node, which is used | |||
| other hand, a Storing Mode Track must be strict and a packet that | as source of the message. | |||
| it placed in a Storing Mode Track MUST follow that Track till the | ||||
| Track Egress. | ||||
| When a Track Egress extracts a packet from a Track (decapsulates | Upon receiving a propagated DAO, all except the Egress Router MUST | |||
| the packet), the Destination of the inner packet MUST be either | install a route towards the DAO Target(s) via their successor in the | |||
| this node or a direct neighbor, or a Target of another Segment of | SF-VIO. The router MAY install additional routes towards the VIA | |||
| the same Track for which this node is ingress, otherwise the | Addresses that are the SF-VIO after the next one, if any, but in case | |||
| packet MUST be dropped. | of a conflict or a lack of resource, the route(s) to the Target(s) | |||
| have precedence. | ||||
| All properties of a Track operations are inherited form the main RPL | If a router cannot reach its predecessor in the SF-VIO, the router | |||
| Instance that is used to install the Track. For instance, the use of | MUST answer to the Root with a negative DAO-ACK indicating the | |||
| compression per [RFC8138] is determined by whether it is used in the | successor that is unreachable (suggested status 11 to be confirmed by | |||
| main instance, e.g., by setting the "T" flag [TURN-ON_RFC8138] in the | IANA). | |||
| RPL configuration option. | ||||
| 7.5. Non-Storing Mode Projected Route | The process continues till the P-DAO is propagated to ingress router | |||
| of the Segment, which answers with a DAO-ACK to the Root. | ||||
| As illustrated in Figure 9, a P-DAO that carries an SR-VIO enables | A Segment Lifetime of 0 in a VIOis used to clean up the state. The | |||
| the Root to install a source-routed path towards a Track Egress in | P-DAO is forwarded as described above, but the DAO is interpreted as | |||
| any particular router. | a No-Path DAO and results in cleaning up existing state as opposed to | |||
| refreshing an existing one or installing a new one. | ||||
| In case of a forwarding error along an 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 Projected Route that is broken. | ||||
| 7.3.2. Non-Storing-Mode P-Route | ||||
| As illustrated in Figure 10, a P-DAO that carries an SR-VIO enables | ||||
| the Root to install a source-routed path from a Track Ingress towards | ||||
| a Target along the main DODAG. | ||||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | P ^ ACK | +-----+ | P ^ ACK | |||
| | Track | DAO | | | Track | DAO | | |||
| o o o o Ingress X V | X | o o o o Ingress X V | X | |||
| skipping to change at page 22, line 26 ¶ | skipping to change at page 23, line 32 ¶ | |||
| o o ° o o o o X o X Segment | o o ° o o o o X o X Segment | |||
| o o o o o o o o X Track X | o o o o o o o o X Track X | |||
| o o o o o Egress | o o o o o Egress | |||
| o o o o | o o o o | |||
| o o o o | o o o o | |||
| destination | destination | |||
| LLN | LLN | |||
| Figure 9: Projecting a Non-Storing Route | Figure 10: Projecting a Non-Storing Route | |||
| A route indicated by an SR-VIO may be loose, meaning that the node | ||||
| that owns the next listed Via Address is not necessarily a neighbor. | ||||
| Without proper loop avoidance mechanisms, the interaction of loose | ||||
| source routing and other mechanisms may effectively cause loops. | ||||
| 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 Track Egress, the router | determines that routing happens via a Track Target, the router | |||
| inserts the source routing header in the packet with the destination | inserts the Source Routing Header in the packet with the final | |||
| set to the Track Egress. | destination at the Track Egress. | |||
| In order to signal the Segment, the router encapsulates the packet | In order to signal the Segment, the router encapsulates the packet | |||
| with an IP-in-IP header and a Routing Header as follows: | with an IP-in-IP header and a Routing Header as follows: | |||
| * In the uncompressed form the source of the packet is this router, | * In the uncompressed form the source of the packet is this router, | |||
| the destination is the first Via Address in the SR-VIO, and the RH | the destination is the first Via Address in the SR-VIO, and the RH | |||
| is a Source Routing Header (SRH) [RFC6554] that contains the list | is a Source Routing Header (SRH) [RFC6554] that contains the list | |||
| of the remaining Via Addresses terminating by the Track Egress. | of the remaining Via Addresses terminating by the Track Egress. | |||
| * The preferred alternate in a network where 6LoWPAN Header | * The preferred alternate in a network where 6LoWPAN Header | |||
| skipping to change at page 23, line 28 ¶ | skipping to change at page 24, line 28 ¶ | |||
| 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 [RPL]. Upon this message, the encapsulating | in section 11.2.2.3. of [RPL]. Upon this message, the encapsulating | |||
| node SHOULD stop using the source route path for a period of time and | 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" | 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 | to the Root. Failure to follow these steps may result in packet loss | |||
| and wasted resources along the source route path that is broken. | and wasted resources along the source route path that is broken. | |||
| 7.6. Storing Mode Projected Route | 7.4. Forwarding Along a Track | |||
| As illustrated in Figure 10, a P-DAO that carries a SF-VIO enables | This draft leverages the RPL Forwarding model follows: | |||
| the Root to install a stateful route towards a collection of Targets | ||||
| along a Segment between a Track Ingress and a Track Egress. | ||||
| ------+--------- | * In the data packets, the Track DODAGID and the TrackID MUST be | |||
| | Internet | respectively signaled as the IPv6 Source Address and the | |||
| | | RPLInstanceID field of the RPI that MUST be placed in the outer | |||
| +-----+ | chain of IPv6 Headers. | |||
| | | Border Router | ||||
| | | (RPL Root) | ||||
| +-----+ | ^ | | ||||
| | | DAO | ACK | | ||||
| o o o o | | | | ||||
| 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 o o o o o o o v | DAO v . | ||||
| o o LLN o o o | | ||||
| o o o o o Loose Source Route Path | | ||||
| o o o o From Root To Destination v | ||||
| Figure 10: Projecting a route | The RPI carries a local RPLInstanceID called the TrackID, which, | |||
| in association with the DODAGID, indicates the Track along which | ||||
| the packet is forwarded. | ||||
| In order to install the relevant routing state along the Segment , | The 'D' flag in the RPLInstanceID MUST be set to 0 to indicate | |||
| the Root sends a unicast P-DAO message to the Track Egress router of | that the source address in the IPv6 header is set ot the DODAGID, | |||
| the routing Segment that is being installed. The P-DAO message | more in Section 7.4. | |||
| contains a SF-VIO with the direct sequence of Via Addresses. The SF- | ||||
| VIO follows one or more RTOs indicating the Targets to which the | ||||
| Track leads. The SF-VIO contains a Segment Lifetime for which the | ||||
| state is to be maintained. | ||||
| The Root sends the P-DAO directly to the egress node of the Segment. | * This draft conforms the principles of [USEofRPLinfo] with regards | |||
| In that P-DAO, the destination IP address matches the last Via | to packet forwarding and encapsulation along a Track. | |||
| Address in the SF-VIO. This is how the egress recognizes its role. | ||||
| In a similar fashion, the ingress node recognizes its role as it | ||||
| matches first Via Address in the SF-VIO. | ||||
| The Egress node of the Segment is the only node in the path that does | - In that case, the Track is the DODAG, the Track Ingress is the | |||
| not install a route in response to the P-DAO; it is expected to be | Root, and the Track Egress is a RAL, and neighbors of the Track | |||
| already able to route to the Target(s) on its own. If one of the | Egress that can be reached via the Track are RULs. The | |||
| Targets is not known, the node MUST answer to the Root with a | encapsulation rules in [USEofRPLinfo] apply. | |||
| negative DAO-ACK listing the Target(s) that could not be located | ||||
| (suggested status 10 to be confirmed by IANA). | ||||
| If the egress node can reach all the Targets, then it forwards the | - If the Track Ingress is the originator of the packet and the | |||
| P-DAO with unchanged content to its loose predecessor in the Segment | Track Egress is the destination of the packet, there is no need | |||
| as indicated in the list of Via Information options, and recursively | for an encapsulation. | |||
| the message is propagated unchanged along the sequence of routers | ||||
| indicated in the P-DAO, but in the reverse order, from egress to | ||||
| ingress. | ||||
| The address of the predecessor to be used as destination of the | - So the Track Ingress must encapsulate the traffic that it did | |||
| propagated DAO message is found in the Via Address the precedes the | not originate, and add an RPI in any fashion. | |||
| one that contain the address of the propagating node, which is used | ||||
| as source of the message. | ||||
| Upon receiving a propagated DAO, all except the Egress Router MUST | A packet that is being routed over the RPL Instance associated to | |||
| install a route towards the DAO Target(s) via their successor in the | a first Non-Storing Mode Track MAY be placed (encapsulated) in a | |||
| SF-VIO. The router MAY install additional routes towards the VIA | second Track to cover one loose hop of the first Track. On the | |||
| Addresses that are the SF-VIO after the next one, if any, but in case | other hand, a Storing Mode Track must be strict and a packet that | |||
| of a conflict or a lack of resource, the route(s) to the Target(s) | it placed in a Storing Mode Track MUST follow that Track till the | |||
| have precedence. | Track Egress. | |||
| If a router cannot reach its predecessor in the SF-VIO, the router | When a Track Egress extracts a packet from a Track (decapsulates | |||
| MUST answer to the Root with a negative DAO-ACK indicating the | the packet), the Destination of the inner packet MUST be either | |||
| successor that is unreachable (suggested status 11 to be confirmed by | this node or a direct neighbor, or a Target of another Segment of | |||
| IANA). | the same Track for which this node is ingress, otherwise the | |||
| packet MUST be dropped. | ||||
| The process continues till the P-DAO is propagated to ingress router | All properties of a Track operations are inherited form the main RPL | |||
| of the Segment, which answers with a DAO-ACK to the Root. | Instance that is used to install the Track. For instance, the use of | |||
| compression per [RFC8138] is determined by whether it is used in the | ||||
| main instance, e.g., by setting the "T" flag [TURN-ON_RFC8138] in the | ||||
| RPL configuration option. | ||||
| A Segment Lifetime of 0 in a Via Information option is used to clean | 8. Profiles | |||
| up 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 | ||||
| state as opposed to refreshing an existing one or installing a new | ||||
| one. | ||||
| In case of a forwarding error along an SMPR, the node that fails to | This document provides a set of tools that may or may not be needed | |||
| forward SHOULD send an ICMP error with a code "Error in Projected | by an implementation depending on the type of application it serves. | |||
| Route" to the Root. Failure to do so may result in packet loss and | This sections described profiles that can be implemented separately | |||
| wasted resources along the Projected Route that is broken. | and can be used to discriminate what an implementation can and cannot | |||
| do. | ||||
| 8. Security Considerations | Profile 0 Profile 0 is the legacy support of [RPL] Non-Storing Mode. | |||
| It provides the minimal common functionality that must be | ||||
| implemented as a prerequisite to all the Track-supporting | ||||
| profiles. The other Profiles extend Profile 0 with selected | ||||
| capabilities that this specification introduces on top. | ||||
| Profile 1 (Storing-Mode P-Route Segments along the main DODAG) Profi | ||||
| le 1 does not create new paths; it combines Storing and Non- | ||||
| Storing Modes to balance the size of the routing header in the | ||||
| packet and the amount of state in the intermediate routers in a | ||||
| Non-Storing Mode RPL DODAG. | ||||
| Profile 2 (Non-Storing-Mode P-Route Segments along the main DODAG) P | ||||
| rofile 2 extends Profile 0 with Strict Source-Routing Non-Storing- | ||||
| Mode Projected Routes along the main DODAG. Profile 2 provides | ||||
| the same capability to compress the SRH in packets down the main | ||||
| DODAG as Profile 1, but it require an encapsulation, in order to | ||||
| insert an additional SRH between the loose source routing hops. | ||||
| Profile 3 Profile 3 and above build Tracks that do not necessarily | ||||
| follow the main DODAG. In order to form the best path possible, | ||||
| those Profiles require the support of Sibling Information Option | ||||
| to inform the Root of additional possible hops. Profile 3 extends | ||||
| Profile 1 with additional Storing-Mode Projected Routes that | ||||
| install segments that do not follow the main DODAG. Segments can | ||||
| be associated in a Track rooted at an Ingress node, but there is | ||||
| no explicit Egress node, and no source routing operation. | ||||
| Profile 4 Profile 4 extends Profile 2 with Strict Source-Routing | ||||
| Non-Storing-Mode Projected Routes to form Tracks inside the main | ||||
| DODAG. A Track is formed as one or more strict source source | ||||
| routed paths between the Root that is the Track Ingress, and the | ||||
| Track Egress that is the last node | ||||
| Profile 5 Profile 5 Combines Profile 4 with Profile 1 and enables to | ||||
| loose source routing between the Ingress and the Egress of the | ||||
| Track. As in Profile 1, Storing-Mode Projected Routes connect the | ||||
| dots in the loose source route. | ||||
| Profile 6 Profile 6 Combines Profile 4 with Profile 2 and also | ||||
| enables to loose source routing between the Ingress and the Egress | ||||
| of the Track. | ||||
| 9. Example Track Signaling | ||||
| The remainder of the section provides an example of how a Track can | ||||
| be signaled | ||||
| ===> F | ||||
| A ===> B ===> C ===> D===> E < | ||||
| ===> G | ||||
| Figure 11: Reference Track | ||||
| A is Track ingress, E is track Egress. C is stitching point. F and | ||||
| G are E's neighbors, "external" to the Track, and reachable from A | ||||
| over the Track A->E. | ||||
| In a general manner we want: | ||||
| * P-DAO 1 signals C==>B==>E | ||||
| * P-DAO 2 signals A==>B==>C | ||||
| * P-DAO 3 signals F and G via the A==>E Track | ||||
| P-DAO 3 being loose, it can only be non-storing. Note that since the | ||||
| Root is always the ingress of a Track, and all SR-VIOs are now Track, | ||||
| the Root being signaled in the DAO base object can now be elided in | ||||
| the VIA list in SR-VIO. This enables the construction by the main | ||||
| root of the RFC 8138 optimized SRH-6LoRH in the SR-VIO, to be placed | ||||
| as is in the packet by the Root. | ||||
| 9.1. Using Storing-Mode Segments | ||||
| A==>B==>C and C==>D==>E are segments of a same Track. Note that the | ||||
| storing mode signaling imposes strict continuity in a segment. One | ||||
| benefit of strict routing is that loops are avoided along the Track. | ||||
| 9.1.1. Stitched Segments | ||||
| Storing-Mode P-DAO 1 and 2 are sent to E and C, as follows: | ||||
| +===============+==============+==============+ | ||||
| | Field | P-DAO 1 to E | P-DAO 2 to C | | ||||
| +===============+==============+==============+ | ||||
| | Mode | Storing | Storing | | ||||
| +---------------+--------------+--------------+ | ||||
| | Track Ingress | A | A | | ||||
| +---------------+--------------+--------------+ | ||||
| | TrackID | (A, 129) | (A, 129) | | ||||
| +---------------+--------------+--------------+ | ||||
| | VIO | C, D, E | A, B, C | | ||||
| +---------------+--------------+--------------+ | ||||
| | Targets | E, F, G | E, F, G | | ||||
| +---------------+--------------+--------------+ | ||||
| Table 1: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | F, G | P-DAO 1 | E | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E, F, G | P-DAO 1 | D | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E, F, G | P-DAO 2 | C | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | E, F, G | P-DAO 2 | B | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 2: RIB setting | ||||
| E recognizes that it is the Track Egress because it is both a Target | ||||
| and a Segment Endpoint. | ||||
| Packets originated by A to E, F, or G, do not require an | ||||
| encapsulation. In any fashion, the outer headers of the packets that | ||||
| are forwarded along the Track have the following settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | A | E, F or G | (A, 129) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X != A | E, F or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 3: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 2: A forwards to B and B forwards to C. | ||||
| * From P-DAO 1: C forwards to D and D forwards to E. | ||||
| * From Neighbor Cache Entry: C delivers the packet to F. | ||||
| 9.1.2. External routes | ||||
| Storing-Mode P-DAO 1 and 2, and Non-Storing-Mode P-DAO 3, are sent to | ||||
| E, C and A, respectively, as follows: | ||||
| +===============+==============+==============+==============+ | ||||
| | | P-DAO 1 to E | P-DAO 2 to C | P-DAO 3 to A | | ||||
| +===============+==============+==============+==============+ | ||||
| | Mode | Storing | Storing | Non-Storing | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Track Ingress | A | A | A | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | TrackID | (A, 129) | (A, 129) | (A, 129) | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | VIO | C, D, E | A, B, C | E | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Targets | E | E | F, G | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| Table 4: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E | P-DAO 1 | D | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E | P-DAO 2 | C | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | E | P-DAO 2 | B | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | F, G | P-DAO 3 | E | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 5: RIB setting | ||||
| Packets from A to E do not require an encapsulation. In any fashion, | ||||
| the outer headers of the packets that are forwarded along the Track | ||||
| have the following settings: | ||||
| +========+===================+====================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+====================+================+ | ||||
| | Outer | A | E | (A, 129) | | ||||
| +--------+-------------------+--------------------+----------------+ | ||||
| | Inner | X | E (X != A), F or G | N/A | | ||||
| +--------+-------------------+--------------------+----------------+ | ||||
| Table 6: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 3: A encapsulates the packet the Track signaled by | ||||
| P-DAO 3, with the outer header above. Now the packet destination | ||||
| is E. | ||||
| * From P-DAO 2: A forwards to B and B forwards to C. | ||||
| * From P-DAO 1: C forwards to D and D forwards to E; E decapsulates | ||||
| the packet. | ||||
| * From Neighbor Cache Entry: C delivers packets to F or G. | ||||
| 9.1.3. Segment Routing | ||||
| Storing-Mode P-DAO 1 and 2, and Non-Storing-Mode P-DAO 3, are sent to | ||||
| E, B and A, respectively, as follows: | ||||
| +===============+==============+==============+==============+ | ||||
| | | P-DAO 1 to E | P-DAO 2 to B | P-DAO 3 to A | | ||||
| +===============+==============+==============+==============+ | ||||
| | Mode | Storing | Storing | Non-Storing | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Track Ingress | A | A | A | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | TrackID | (A, 129) | (A, 129) | (A, 129) | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | VIO | C, D, E | A, B | C, E | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Targets | E | B, C | F, G | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| Table 7: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | P-DAO 1 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E | P-DAO 1 | D | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | P-DAO 2 | Neighbor | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | C | P-DAO 2 | B | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E, F, G | P-DAO 3 | C, E | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 8: RIB setting | ||||
| Packets from A to E do not require an encapsulation, but carry a SRH | ||||
| via C. In any fashion, the outer headers of the packets that are | ||||
| forwarded along the Track have the following settings: | ||||
| +========+===================+====================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+====================+================+ | ||||
| | Outer | A | C till C then E | (A, 129) | | ||||
| +--------+-------------------+--------------------+----------------+ | ||||
| | Inner | X | E (X != A), F or G | N/A | | ||||
| +--------+-------------------+--------------------+----------------+ | ||||
| Table 9: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 3: A encapsulates the packet the Track signaled by | ||||
| P-DAO 3, with the outer header above. Now the destination in the | ||||
| IPv6 Header is C, and a SRH signals the final destination is E. | ||||
| * From P-DAO 2: A forwards to B and B forwards to C. | ||||
| * From P-DAO 3: C processes the SRH and sets the destination in the | ||||
| IPv6 Header to E. | ||||
| * From P-DAO 1: C forwards to D and D forwards to E; E decapsulates | ||||
| the packet. | ||||
| * From the Neighbor Cache Entry: C delivers packets to F or G. | ||||
| 9.2. Using Non-Storing-Mode joining Tracks | ||||
| A==>B==>C and C==>D==>E are Tracks expressed as non-storing P-DAOs. | ||||
| 9.2.1. Stitched Tracks | ||||
| Non-Storing Mode P-DAO 1 and 2 are sent to C and A respectively, as | ||||
| follows: | ||||
| +===============+==============+==============+ | ||||
| | | P-DAO 1 to C | P-DAO 2 to A | | ||||
| +===============+==============+==============+ | ||||
| | Mode | Non-Storing | Non-Storing | | ||||
| +---------------+--------------+--------------+ | ||||
| | Track Ingress | C | A | | ||||
| +---------------+--------------+--------------+ | ||||
| | TrackID | (C, 131) | (A, 129) | | ||||
| +---------------+--------------+--------------+ | ||||
| | VIO | D, E | B, C | | ||||
| +---------------+--------------+--------------+ | ||||
| | Targets | F, G | E, F, G | | ||||
| +---------------+--------------+--------------+ | ||||
| Table 10: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E, F, G | P-DAO 1 | D, E | (C, 131) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | C, E, F, G | P-DAO 2 | B, C | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 11: RIB setting | ||||
| Packets from A to E, F and G do not require an encapsulation, though | ||||
| it is preferred that A encapsulates and C decapsulates. Either way, | ||||
| they carry a SRH via B and C, and C needs to encapsulate to E, F, or | ||||
| G to add an SRH via D and E. The encapsulating headers of packets | ||||
| that are forwarded along the Track between C and E have the following | ||||
| settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | C | D till D then E | (C, 131) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X | E, F, or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 12: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 2: A encapsulates the packet with destination of F in | ||||
| the Track signaled by P-DAO 2. The outer header has source A, | ||||
| destination B, an SRH that indicates C as the next loose hop, and | ||||
| a RPI indicating a TrackId of 129 from A's namespace. | ||||
| * From the SRH: Packets forwarded by B have source A, destination C | ||||
| , a consumed SRH, and a RPI indicating a TrackId of 129 from A's | ||||
| namespace. C decapsulates. | ||||
| * From P-DAO 1: C encapsulates the packet with destination of F in | ||||
| the Track signaled by P-DAO 1. The outer header has source C, | ||||
| destination D, an SRH that indicates E as the next loose hop, and | ||||
| a RPI indicating a TrackId of 131 from C's namespace. E | ||||
| decapsulates. | ||||
| 9.2.2. External routes | ||||
| Non-Storing Mode P-DAO 1 is sent to C and Non-Storing Mode P-DAO 2 | ||||
| and 3 are sent A, as follows: | ||||
| +===============+==============+==============+==============+ | ||||
| | | P-DAO 1 to C | P-DAO 2 to A | P-DAO 3 to A | | ||||
| +===============+==============+==============+==============+ | ||||
| | Mode | Non-Storing | Non-Storing | Non-Storing | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Track Ingress | C | A | A | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | TrackID | (C, 131) | (A, 129) | (A, 141) | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | VIO | D, E | B, C | E | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Targets | E | E | F, G | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| Table 13: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E | P-DAO 1 | D, E | (C, 131) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | C, E | P-DAO 2 | B, C | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | F, G | P-DAO 3 | E | (A, 141) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 14: RIB setting | ||||
| The encapsulating headers of packets that are forwarded along the | ||||
| Track between C and E have the following settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | C | D till D then E | (C, 131) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Middle | A | E | (A, 141) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X | E, F or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 15: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 3: A encapsulates the packet with destination of F in | ||||
| the Track signaled by P-DAO 3. The outer header has source A, | ||||
| destination E, and a RPI indicating a TrackId of 141 from A's | ||||
| namespace. This recurses with: | ||||
| * From P-DAO 2: A encapsulates the packet with destination of E in | ||||
| the Track signaled by P-DAO 2. The outer header has source A, | ||||
| destination B, an SRH that indicates C as the next loose hop, and | ||||
| a RPI indicating a TrackId of 129 from A's namespace. | ||||
| * From the SRH: Packets forwarded by B have source A, destination C | ||||
| , a consumed SRH, and a RPI indicating a TrackId of 129 from A's | ||||
| namespace. C decapsulates. | ||||
| * From P-DAO 1: C encapsulates the packet with destination of E in | ||||
| the Track signaled by P-DAO 1. The outer header has source C, | ||||
| destination D, an SRH that indicates E as the next loose hop, and | ||||
| a RPI indicating a TrackId of 131 from C's namespace. E | ||||
| decapsulates. | ||||
| 9.2.3. Segment Routing | ||||
| Non-Storing Mode P-DAO 1 is sent to C and Non-Storing Mode P-DAO 2 | ||||
| and 3 are sent A, as follows: | ||||
| +===============+==============+==============+==============+ | ||||
| | | P-DAO 1 to C | P-DAO 2 to A | P-DAO 3 to A | | ||||
| +===============+==============+==============+==============+ | ||||
| | Mode | Non-Storing | Non-Storing | Non-Storing | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Track Ingress | C | A | A | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | TrackID | (C, 131) | (A, 129) | (A, 141) | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | VIO | D, E | B | C, E | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| | Targets | | C | F, G | | ||||
| +---------------+--------------+--------------+--------------+ | ||||
| Table 16: P-DAO Messages | ||||
| As a result the RIBs are set as follows: | ||||
| +======+=============+=========+=============+==========+ | ||||
| | Node | Destination | Origin | Next Hop(s) | TrackID | | ||||
| +======+=============+=========+=============+==========+ | ||||
| | E | F, G | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | D | E | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | C | D | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E | P-DAO 1 | D, E | (C, 131) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | B | C | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | A | B | ND | Neighbor | Any | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | C | P-DAO 2 | B, C | (A, 129) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| | " | E, F, G | P-DAO 3 | C, E | (A, 141) | | ||||
| +------+-------------+---------+-------------+----------+ | ||||
| Table 17: RIB setting | ||||
| The encapsulating headers of packets that are forwarded along the | ||||
| Track between A and B have the following settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | A | B till D then E | (A, 129) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Middle | A | C | (A, 141) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X | E, F or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 18: Packet header settings | ||||
| The encapsulating headers of packets that are forwarded along the | ||||
| Track between B and C have the following settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | A | C | (A, 141) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X | E, F or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 19: Packet header settings | ||||
| The encapsulating headers of packets that are forwarded along the | ||||
| Track between C and E have the following settings: | ||||
| +========+===================+===================+================+ | ||||
| | Header | IPv6 Source Addr. | IPv6 Dest. Addr. | TrackID in RPI | | ||||
| +========+===================+===================+================+ | ||||
| | Outer | C | D till D then E | (C, 131) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Middle | A | E | (A, 141) | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| | Inner | X | E, F or G | N/A | | ||||
| +--------+-------------------+-------------------+----------------+ | ||||
| Table 20: Packet header settings | ||||
| As an example, say that A has a packet for F. Using the RIB above: | ||||
| * From P-DAO 3: A encapsulates the packet with destination of F in | ||||
| the Track signaled by P-DAO 3. The outer header has source A, | ||||
| destination C, an SRH that indicates E as the next loose hop, and | ||||
| a RPI indicating a TrackId of 141 from A's namespace. This | ||||
| recurses with: | ||||
| * From P-DAO 2: A encapsulates the packet with destination of C in | ||||
| the Track signaled by P-DAO 2. The outer header has source A, | ||||
| destination B, and a RPI indicating a TrackId of 129 from A's | ||||
| namespace. B decapsulates forwards to C based on a sibling | ||||
| connected route. | ||||
| * From the SRH: C consumes the SRH and makes the destination E. | ||||
| * From P-DAO 1: C encapsulates the packet with destination of E in | ||||
| the Track signaled by P-DAO 1. The outer header has source C, | ||||
| destination D, an SRH that indicates E as the next loose hop, and | ||||
| a RPI indicating a TrackId of 131 from C's namespace. E | ||||
| decapsulates. | ||||
| 10. Security Considerations | ||||
| This draft uses messages that are already present in RPL [RPL] with | This draft uses messages that are already present in RPL [RPL] with | |||
| optional secured versions. The same secured versions may be used | optional secured versions. The same secured versions may be used | |||
| with this draft, and whatever security is deployed for a given | 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? | |||
| 9. IANA Considerations | 11. IANA Considerations | |||
| 9.1. New Elective 6LoWPAN Routing Header Type | 11.1. New Elective 6LoWPAN Routing Header Type | |||
| This document updates the IANA registry titled "Elective 6LoWPAN | This document updates the IANA registry titled "Elective 6LoWPAN | |||
| Routing Header Type" that was created for [RFC8138] and assigns the | Routing Header Type" that was created for [RFC8138] and assigns the | |||
| following value: | following value: | |||
| +=======+=============+===============+ | +=======+=============+===============+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +=======+=============+===============+ | +=======+=============+===============+ | |||
| | 7 | P-RPI-6LoRH | This document | | | 7 | P-RPI-6LoRH | This document | | |||
| +-------+-------------+---------------+ | +-------+-------------+---------------+ | |||
| Table 1: New Elective 6LoWPAN | Table 21: New Elective 6LoWPAN | |||
| Routing Header Type | Routing Header Type | |||
| 9.2. New Critical 6LoWPAN Routing Header Type | 11.2. New Critical 6LoWPAN Routing Header Type | |||
| This document updates the IANA registry titled "Critical 6LoWPAN | This document updates the IANA registry titled "Critical 6LoWPAN | |||
| Routing Header Type" that was created for [RFC8138] and assigns the | Routing Header Type" that was created for [RFC8138] and assigns the | |||
| following value: | following value: | |||
| +=======+=============+===============+ | +=======+=============+===============+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +=======+=============+===============+ | +=======+=============+===============+ | |||
| | 7 | P-RPI-6LoRH | This document | | | 7 | P-RPI-6LoRH | This document | | |||
| +-------+-------------+---------------+ | +-------+-------------+---------------+ | |||
| Table 2: New Critical 6LoWPAN | Table 22: New Critical 6LoWPAN | |||
| Routing Header Type | Routing Header Type | |||
| 9.3. New Subregistry For The RPL Option Flags | 11.3. New Subregistry For The RPL Option Flags | |||
| IANA is required to create a subregistry for the 8-bit RPL Option | IANA is required to create a subregistry for the 8-bit RPL Option | |||
| Flags field, as detailed in Figure 2, under the "Routing Protocol for | Flags field, as detailed in Figure 2, under the "Routing Protocol for | |||
| Low Power and Lossy Networks (RPL)" registry. The bits are indexed | Low Power and Lossy Networks (RPL)" registry. The bits are indexed | |||
| from 0 (leftmost) to 7. Each bit is tracked with the following | from 0 (leftmost) to 7. Each bit is tracked with the following | |||
| qualities: | qualities: | |||
| * Bit number (counting from bit 0 as the most significant bit) | * Bit number (counting from bit 0 as the most significant bit) | |||
| * Indication When Set | * Indication When Set | |||
| * Reference | * Reference | |||
| Registration procedure is "Standards Action" [RFC8126]. The initial | Registration procedure is "Standards Action" [RFC8126]. The initial | |||
| allocation is as indicated in Table 6: | allocation is as indicated in Table 26: | |||
| +============+======================+===============+ | +============+======================+===============+ | |||
| | Bit number | Indication When Set | Reference | | | Bit number | Indication When Set | Reference | | |||
| +============+======================+===============+ | +============+======================+===============+ | |||
| | 0 | Down 'O' | [RFC6553] | | | 0 | Down 'O' | [RFC6553] | | |||
| +------------+----------------------+---------------+ | +------------+----------------------+---------------+ | |||
| | 1 | Rank-Error (R) | [RFC6553] | | | 1 | Rank-Error (R) | [RFC6553] | | |||
| +------------+----------------------+---------------+ | +------------+----------------------+---------------+ | |||
| | 2 | Forwarding-Error (F) | [RFC6553] | | | 2 | Forwarding-Error (F) | [RFC6553] | | |||
| +------------+----------------------+---------------+ | +------------+----------------------+---------------+ | |||
| | 3 | Projected-Route (P) | This document | | | 3 | Projected-Route (P) | This document | | |||
| +------------+----------------------+---------------+ | +------------+----------------------+---------------+ | |||
| Table 3: Initial PDR Flags | Table 23: Initial PDR Flags | |||
| 9.4. New RPL Control Codes | 11.4. New RPL Control Codes | |||
| This document extends the IANA Subregistry created by RFC 6550 for | This document extends the IANA Subregistry created by RFC 6550 for | |||
| RPL Control Codes as indicated in Table 4: | RPL Control Codes as indicated in Table 24: | |||
| +======+=============================+===============+ | +======+=============================+===============+ | |||
| | Code | Description | Reference | | | Code | Description | Reference | | |||
| +======+=============================+===============+ | +======+=============================+===============+ | |||
| | 0x09 | Projected DAO Request (PDR) | This document | | | 0x09 | Projected DAO Request (PDR) | This document | | |||
| +------+-----------------------------+---------------+ | +------+-----------------------------+---------------+ | |||
| | 0x0A | PDR-ACK | This document | | | 0x0A | PDR-ACK | This document | | |||
| +------+-----------------------------+---------------+ | +------+-----------------------------+---------------+ | |||
| Table 4: New RPL Control Codes | Table 24: New RPL Control Codes | |||
| 9.5. New RPL Control Message Options | 11.5. New RPL Control Message Options | |||
| This document extends the IANA Subregistry created by RFC 6550 for | This document extends the IANA Subregistry created by RFC 6550 for | |||
| RPL Control Message Options as indicated in Table 5: | RPL Control Message Options as indicated in Table 25: | |||
| +=======+==========================================+===============+ | +=======+============================+===============+ | |||
| | Value | Meaning | Reference | | | Value | Meaning | Reference | | |||
| +=======+==========================================+===============+ | +=======+============================+===============+ | |||
| | 0x0B | Stateful Via Information option (SF-VIO) | This document | | | 0x0B | Stateful VIO(SF-VIO) | This document | | |||
| +-------+------------------------------------------+---------------+ | +-------+----------------------------+---------------+ | |||
| | 0x0C | Source-Routed Via Information option | This document | | | 0x0C | Source-Routed VIO(SR-VIO) | This document | | |||
| | | (SR-VIO) | | | +-------+----------------------------+---------------+ | |||
| +-------+------------------------------------------+---------------+ | | 0x0D | Sibling Information option | This document | | |||
| | 0x0D | Sibling Information option | This document | | +-------+----------------------------+---------------+ | |||
| +-------+------------------------------------------+---------------+ | ||||
| Table 5: RPL Control Message Options | Table 25: RPL Control Message Options | |||
| 9.6. SubRegistry for the Projected DAO Request Flags | 11.6. SubRegistry for the Projected DAO Request Flags | |||
| IANA is required to create a registry for the 8-bit Projected DAO | IANA is required to create a registry for the 8-bit Projected DAO | |||
| Request (PDR) Flags field. Each bit is tracked with the following | Request (PDR) Flags field. Each bit is tracked with the following | |||
| qualities: | qualities: | |||
| * Bit number (counting from bit 0 as the most significant bit) | * Bit number (counting from bit 0 as the most significant bit) | |||
| * Capability description | * Capability description | |||
| * Reference | * Reference | |||
| Registration procedure is "Standards Action" [RFC8126]. The initial | Registration procedure is "Standards Action" [RFC8126]. The initial | |||
| allocation is as indicated in Table 6: | allocation is as indicated in Table 26: | |||
| +============+========================+===============+ | +============+========================+===============+ | |||
| | Bit number | Capability description | Reference | | | Bit number | Capability description | Reference | | |||
| +============+========================+===============+ | +============+========================+===============+ | |||
| | 0 | PDR-ACK request (K) | This document | | | 0 | PDR-ACK request (K) | This document | | |||
| +------------+------------------------+---------------+ | +------------+------------------------+---------------+ | |||
| | 1 | Requested path should | This document | | | 1 | Requested path should | This document | | |||
| | | be redundant (R) | | | | | be redundant (R) | | | |||
| +------------+------------------------+---------------+ | +------------+------------------------+---------------+ | |||
| Table 6: Initial PDR Flags | Table 26: Initial PDR Flags | |||
| 9.7. SubRegistry for the PDR-ACK Flags | 11.7. SubRegistry for the PDR-ACK Flags | |||
| IANA is required to create an subregistry for the 8-bit PDR-ACK Flags | IANA is required to create an subregistry for the 8-bit PDR-ACK Flags | |||
| field. Each bit is tracked with the following qualities: | field. Each bit is tracked with the following qualities: | |||
| * Bit number (counting from bit 0 as the most significant bit) | * Bit number (counting from bit 0 as the most significant bit) | |||
| * Capability description | * Capability description | |||
| * Reference | * Reference | |||
| Registration procedure is "Standards Action" [RFC8126]. No bit is | Registration procedure is "Standards Action" [RFC8126]. No bit is | |||
| currently defined for the PDR-ACK Flags. | currently defined for the PDR-ACK Flags. | |||
| 9.8. Subregistry for the PDR-ACK Acceptance Status Values | 11.8. Subregistry for the PDR-ACK Acceptance Status Values | |||
| IANA is requested to create a Subregistry for the PDR-ACK Acceptance | IANA is requested to create a Subregistry for the PDR-ACK Acceptance | |||
| Status values. | Status values. | |||
| * Possible values are 6-bit unsigned integers (0..63). | * Possible values are 6-bit unsigned integers (0..63). | |||
| * Registration procedure is "Standards Action" [RFC8126]. | * Registration procedure is "Standards Action" [RFC8126]. | |||
| * Initial allocation is as indicated in Table 7: | * Initial allocation is as indicated in Table 27: | |||
| +-------+------------------------+---------------+ | +-------+------------------------+---------------+ | |||
| | Value | Meaning | Reference | | | Value | Meaning | Reference | | |||
| +-------+------------------------+---------------+ | +-------+------------------------+---------------+ | |||
| | 0 | Unqualified acceptance | This document | | | 0 | Unqualified acceptance | This document | | |||
| +-------+------------------------+---------------+ | +-------+------------------------+---------------+ | |||
| Table 7: Acceptance values of the PDR-ACK Status | Table 27: Acceptance values of the PDR-ACK Status | |||
| 9.9. Subregistry for the PDR-ACK Rejection Status Values | 11.9. Subregistry for the PDR-ACK Rejection Status Values | |||
| IANA is requested to create a Subregistry for the PDR-ACK Rejection | IANA is requested to create a Subregistry for the PDR-ACK Rejection | |||
| Status values. | Status values. | |||
| * Possible values are 6-bit unsigned integers (0..63). | * Possible values are 6-bit unsigned integers (0..63). | |||
| * Registration procedure is "Standards Action" [RFC8126]. | * Registration procedure is "Standards Action" [RFC8126]. | |||
| * Initial allocation is as indicated in Table 8: | * Initial allocation is as indicated in Table 28: | |||
| +-------+-----------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| | Value | Meaning | Reference | | | Value | Meaning | Reference | | |||
| +-------+-----------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| | 0 | Unqualified rejection | This document | | | 0 | Unqualified rejection | This document | | |||
| +-------+-----------------------+---------------+ | +-------+-----------------------+---------------+ | |||
| Table 8: Rejection values of the PDR-ACK Status | Table 28: Rejection values of the PDR-ACK Status | |||
| 9.10. SubRegistry for the Via Information Options Flags | 11.10. SubRegistry for the Via Information Options Flags | |||
| IANA is requested to create a Subregistry for the 5-bit Via | IANA is requested to create a Subregistry for the 5-bit Via | |||
| Information Options (Via Option) Flags field. Each bit is tracked | Information Options (Via Information Option) Flags field. Each bit | |||
| with the following qualities: | is tracked with the following qualities: | |||
| * Bit number (counting from bit 0 as the most significant bit) | * Bit number (counting from bit 0 as the most significant bit) | |||
| * Capability description | * Capability description | |||
| * Reference | * Reference | |||
| Registration procedure is "Standards Action" [RFC8126]. No bit is | Registration procedure is "Standards Action" [RFC8126]. No bit is | |||
| currently defined for the Via Information Options (Via Option) Flags. | currently defined for the Via Information Options (Via Information | |||
| Option) Flags. | ||||
| 9.11. SubRegistry for the Sibling Information Option Flags | 11.11. SubRegistry for the Sibling Information Option Flags | |||
| IANA is required to create a registry for the 5-bit Sibling | IANA is required to create a registry for the 5-bit Sibling | |||
| Information Option (SIO) Flags field. Each bit is tracked with the | Information Option (SIO) Flags field. Each bit is tracked with the | |||
| following qualities: | following qualities: | |||
| * Bit number (counting from bit 0 as the most significant bit) | * Bit number (counting from bit 0 as the most significant bit) | |||
| * Capability description | * Capability description | |||
| * Reference | * Reference | |||
| Registration procedure is "Standards Action" [RFC8126]. The initial | Registration procedure is "Standards Action" [RFC8126]. The initial | |||
| allocation is as indicated in Table 9: | allocation is as indicated in Table 29: | |||
| +============+===================================+===============+ | +============+===================================+===============+ | |||
| | Bit number | Capability description | Reference | | | Bit number | Capability description | Reference | | |||
| +============+===================================+===============+ | +============+===================================+===============+ | |||
| | 0 | Connectivity is bidirectional (B) | This document | | | 0 | Connectivity is bidirectional (B) | This document | | |||
| +------------+-----------------------------------+---------------+ | +------------+-----------------------------------+---------------+ | |||
| Table 9: Initial SIO Flags | Table 29: Initial SIO Flags | |||
| 9.12. Error in Projected Route ICMPv6 Code | 11.12. New Destination Advertisement Object Flag | |||
| This document modifies the "Destination Advertisement Object (DAO) | ||||
| Flags" registry initially created in Section 20.11 of [RPL] . | ||||
| Section 3.1 also defines one new entry in the Registry as follows: | ||||
| +---------------+------------------------+-----------+ | ||||
| | Bit Number | Capability Description | Reference | | ||||
| +---------------+------------------------+-----------+ | ||||
| | 2 (suggested) | Projected DAO (P) | THIS RFC | | ||||
| +---------------+------------------------+-----------+ | ||||
| Table 30: New Destination Advertisement Object | ||||
| (DAO) Flag | ||||
| 11.13. Error in Projected Route ICMPv6 Code | ||||
| In some cases RPL will return an ICMPv6 error message when a message | In some cases RPL will return an ICMPv6 error message when a message | |||
| cannot be forwarded along a Projected Route. This ICMPv6 error | cannot be forwarded along a Projected Route. This ICMPv6 error | |||
| message is "Error in Projected Route". | message is "Error in Projected Route". | |||
| IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message | IANA has defined an ICMPv6 "Code" Fields Registry for ICMPv6 Message | |||
| Types. ICMPv6 Message Type 1 describes "Destination Unreachable" | Types. ICMPv6 Message Type 1 describes "Destination Unreachable" | |||
| codes. This specification requires that a new code is allocated from | codes. This specification requires that a new code is allocated from | |||
| the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error | the ICMPv6 Code Fields Registry for ICMPv6 Message Type 1, for "Error | |||
| in Projected Route", with a suggested code value of 8, to be | in Projected Route", with a suggested code value of 8, to be | |||
| confirmed by IANA. | confirmed by IANA. | |||
| 10. Acknowledgments | 12. Acknowledgments | |||
| The authors wish to acknowledge JP Vasseur, Remy Liubing, James | The authors wish to acknowledge JP Vasseur, Remy Liubing, James | |||
| Pylakutty and Patrick Wetterwald for their contributions to the ideas | Pylakutty and Patrick Wetterwald for their contributions to the ideas | |||
| developed here. | developed here. | |||
| 11. Normative References | 13. 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, | |||
| skipping to change at page 31, line 29 ¶ | skipping to change at page 45, line 33 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| 12. Informative References | 14. Informative References | |||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | |||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | |||
| 2014, <https://www.rfc-editor.org/info/rfc7102>. | 2014, <https://www.rfc-editor.org/info/rfc7102>. | |||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | |||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | J. Martocci, "Reactive Discovery of Point-to-Point Routes | |||
| in Low-Power and Lossy Networks", RFC 6997, | in Low-Power and Lossy Networks", RFC 6997, | |||
| DOI 10.17487/RFC6997, August 2013, | DOI 10.17487/RFC6997, August 2013, | |||
| <https://www.rfc-editor.org/info/rfc6997>. | <https://www.rfc-editor.org/info/rfc6997>. | |||
| [6TiSCH-ARCHI] | [6TiSCH-ARCHI] | |||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
| of IEEE 802.15.4", Work in Progress, Internet-Draft, | of IEEE 802.15.4", Work in Progress, Internet-Draft, | |||
| draft-ietf-6tisch-architecture-29, 27 August 2020, | draft-ietf-6tisch-architecture-30, 26 November 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-6tisch- | <https://tools.ietf.org/html/draft-ietf-6tisch- | |||
| architecture-29>. | architecture-30>. | |||
| [RAW-ARCHI] | [RAW-ARCHI] | |||
| Thubert, P., Papadopoulos, G., and R. Buddenberg, | Thubert, P., Papadopoulos, G., and R. Buddenberg, | |||
| "Reliable and Available Wireless Architecture/Framework", | "Reliable and Available Wireless Architecture/Framework", | |||
| Work in Progress, Internet-Draft, draft-pthubert-raw- | Work in Progress, Internet-Draft, draft-pthubert-raw- | |||
| architecture-05, 15 November 2020, | architecture-05, 15 November 2020, | |||
| <https://tools.ietf.org/html/draft-pthubert-raw- | <https://tools.ietf.org/html/draft-pthubert-raw- | |||
| architecture-05>. | architecture-05>. | |||
| [TURN-ON_RFC8138] | [TURN-ON_RFC8138] | |||
| Thubert, P. and L. Zhao, "A RPL DODAG Configuration Option | Thubert, P. and L. Zhao, "A RPL DODAG Configuration Option | |||
| for the 6LoWPAN Routing Header", Work in Progress, | for the 6LoWPAN Routing Header", Work in Progress, | |||
| Internet-Draft, draft-ietf-roll-turnon-rfc8138-17, 30 | Internet-Draft, draft-ietf-roll-turnon-rfc8138-18, 18 | |||
| September 2020, <https://tools.ietf.org/html/draft-ietf- | December 2020, <https://tools.ietf.org/html/draft-ietf- | |||
| roll-turnon-rfc8138-17>. | roll-turnon-rfc8138-18>. | |||
| [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | [RFC8655] Finn, N., Thubert, P., Varga, B., and J. Farkas, | |||
| "Deterministic Networking Architecture", RFC 8655, | "Deterministic Networking Architecture", RFC 8655, | |||
| DOI 10.17487/RFC8655, October 2019, | DOI 10.17487/RFC8655, October 2019, | |||
| <https://www.rfc-editor.org/info/rfc8655>. | <https://www.rfc-editor.org/info/rfc8655>. | |||
| [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | [RFC8025] Thubert, P., Ed. and R. Cragie, "IPv6 over Low-Power | |||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | Wireless Personal Area Network (6LoWPAN) Paging Dispatch", | |||
| RFC 8025, DOI 10.17487/RFC8025, November 2016, | RFC 8025, DOI 10.17487/RFC8025, November 2016, | |||
| <https://www.rfc-editor.org/info/rfc8025>. | <https://www.rfc-editor.org/info/rfc8025>. | |||
| [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>. | |||
| [USEofRPLinfo] | [USEofRPLinfo] | |||
| Robles, I., Richardson, M., and P. Thubert, "Using RPI | Robles, I., Richardson, M., and P. Thubert, "Using RPI | |||
| Option Type, Routing Header for Source Routes and IPv6-in- | Option Type, Routing Header for Source Routes and IPv6-in- | |||
| IPv6 encapsulation in the RPL Data Plane", Work in | IPv6 encapsulation in the RPL Data Plane", Work in | |||
| Progress, Internet-Draft, draft-ietf-roll-useofrplinfo-42, | Progress, Internet-Draft, draft-ietf-roll-useofrplinfo-43, | |||
| 12 November 2020, <https://tools.ietf.org/html/draft-ietf- | 10 January 2021, <https://tools.ietf.org/html/draft-ietf- | |||
| roll-useofrplinfo-42>. | roll-useofrplinfo-43>. | |||
| [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/>. | |||
| Appendix A. Applications | Appendix A. Applications | |||
| A.1. Loose Source Routing | A.1. Loose Source Routing | |||
| 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 11. | uses the Non-Storing Mode of Operation as represented in Figure 12. | |||
| 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 33, line 21 ¶ | skipping to change at page 47, line 30 ¶ | |||
| +-----+ ^ | | | +-----+ ^ | | | |||
| | | 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 11: RPL Non-Storing Mode of operation | Figure 12: 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 34, line 36 ¶ | skipping to change at page 48, line 36 ¶ | |||
| become loose. | become loose. | |||
| A.2. Transversal Routes | A.2. Transversal Routes | |||
| 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 12: | illustrated in Figure 13: | |||
| * In Storing Mode, unless the destination is a child of the source, | * In Storing Mode, unless the destination is a child of the source, | |||
| the packets will follow the default route up the DODAG as well. | the packets will follow the default route up the DODAG as well. | |||
| If the destination is in the same DODAG, they will eventually | If the destination is in the same DODAG, they will eventually | |||
| reach a common parent that has a route to the destination; at | reach a common parent that has a route to the destination; at | |||
| worse, the common parent may also be the Root. From that common | worse, the common parent may also be the Root. From that common | |||
| parent, the packet will follow a path down the DODAG that is | parent, the packet will follow a path down the DODAG that is | |||
| optimized for the Objective Function that was used to build the | optimized for the Objective Function that was used to build the | |||
| DODAG. | DODAG. | |||
| skipping to change at page 35, line 21 ¶ | skipping to change at page 49, line 21 ¶ | |||
| +-----+ | +-----+ | |||
| X | X | |||
| ^ v o o | ^ v o o | |||
| ^ o o v o o o o o | ^ o o v o o o o o | |||
| ^ o o o v o o o o o | ^ o o o v o o o o o | |||
| ^ o o v o o o o o | ^ o o v o o o o o | |||
| S o o o D o o o | S o o o D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 12: Routing Stretch between S and D via common parent X | Figure 13: 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, | |||
| and that it is even more critical in Non-Storing Mode than it is in | and that it is even more critical in Non-Storing Mode than it is in | |||
| Storing Mode, because the routing stretch is wider. For that reason, | Storing Mode, because the routing stretch is wider. For that reason, | |||
| earlier work at the IETF introduced the "Reactive Discovery of | earlier work at the IETF introduced the "Reactive Discovery of | |||
| Point-to-Point Routes in Low Power and Lossy Networks" [RFC6997], | Point-to-Point Routes in Low Power and Lossy Networks" [RFC6997], | |||
| which specifies a distributed method for establishing optimized P2P | which specifies a distributed method for establishing optimized P2P | |||
| routes. This draft proposes an alternate based on a centralized | routes. This draft proposes an alternate based on a centralized | |||
| skipping to change at page 35, line 50 ¶ | skipping to change at page 49, 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 13: Projected Transversal Route | Figure 14: 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. | |||
| End of changes. 112 change blocks. | ||||
| 282 lines changed or deleted | 899 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/ | ||||