| < draft-ietf-roll-dao-projection-12.txt | draft-ietf-roll-dao-projection-13.txt > | |||
|---|---|---|---|---|
| ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
| Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
| Updates: 6550 (if approved) R.A. Jadhav | Updates: 6550 (if approved) R.A. Jadhav | |||
| Intended status: Standards Track Huawei Tech | Intended status: Standards Track Huawei Tech | |||
| Expires: 25 March 2021 M. Gillmore | Expires: 2 April 2021 M. Gillmore | |||
| Itron | Itron | |||
| 21 September 2020 | 29 September 2020 | |||
| Root initiated routing state in RPL | Root initiated routing state in RPL | |||
| draft-ietf-roll-dao-projection-12 | draft-ietf-roll-dao-projection-13 | |||
| Abstract | Abstract | |||
| This document enables a RPL Root to install and maintain Projected | This document updates RFC 6550 to enable a RPL Root to install and | |||
| Routes within its DODAG, along a selected set of nodes that may or | maintain Projected Routes within its DODAG, along a selected set of | |||
| may not include self, for a chosen duration. This potentially | nodes that may or may not include self, for a chosen duration. This | |||
| enables routes that are more optimized or resilient than those | potentially enables routes that are more optimized or resilient than | |||
| obtained with the classical distributed operation of RPL, either in | those obtained with the classical distributed operation of RPL, | |||
| terms of the size of a source-route header or in terms of path | either in terms of the size of a source-route header or in terms of | |||
| length, which impacts both the latency and the packet delivery ratio. | path length, which impacts both the latency and the packet delivery | |||
| ratio. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 25 March 2021. | This Internet-Draft will expire on 2 April 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . 5 | 2.3. Other Terms . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. References . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 6 | 3. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 4. Identifying a Path . . . . . . . . . . . . . . . . . . . . . 7 | 4. Identifying a Track . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5. New RPL Control Messages and Options . . . . . . . . . . . . 8 | 5. New RPL Control Messages and Options . . . . . . . . . . . . 9 | |||
| 5.1. New P-DAO Request Control Message . . . . . . . . . . . . 8 | 5.1. New P-DAO Request Control Message . . . . . . . . . . . . 9 | |||
| 5.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 9 | 5.2. New PDR-ACK Control Message . . . . . . . . . . . . . . . 10 | |||
| 5.3. Route Projection Options . . . . . . . . . . . . . . . . 10 | 5.3. Route Projection Options . . . . . . . . . . . . . . . . 12 | |||
| 5.4. Sibling Information Option . . . . . . . . . . . . . . . 13 | 5.4. Sibling Information Option . . . . . . . . . . . . . . . 14 | |||
| 6. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 14 | 6. Projected DAO . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 6.1. Requesting a Track . . . . . . . . . . . . . . . . . . . 16 | 6.1. Requesting a Track . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.2. Routing over a Track . . . . . . . . . . . . . . . . . . 16 | 6.2. Routing over a Track . . . . . . . . . . . . . . . . . . 18 | |||
| 6.3. Non-Storing Mode Projected Route . . . . . . . . . . . . 17 | 6.3. Non-Storing Mode Projected Route . . . . . . . . . . . . 18 | |||
| 6.4. Storing-Mode Projected Route . . . . . . . . . . . . . . 18 | 6.4. Storing Mode Projected Route . . . . . . . . . . . . . . 20 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 22 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 21 | 8.1. New RPL Control Codes . . . . . . . . . . . . . . . . . . 22 | |||
| 8.2. New RPL Control Message Options . . . . . . . . . . . . . 21 | 8.2. New RPL Control Message Options . . . . . . . . . . . . . 22 | |||
| 8.3. SubRegistry for the Projected DAO Request Flags . . . . . 22 | 8.3. SubRegistry for the Projected DAO Request Flags . . . . . 23 | |||
| 8.4. SubRegistry for the PDR-ACK Flags . . . . . . . . . . . . 22 | 8.4. SubRegistry for the PDR-ACK Flags . . . . . . . . . . . . 23 | |||
| 8.5. Subregistry for the PDR-ACK Acceptance Status Values . . 22 | 8.5. Subregistry for the PDR-ACK Acceptance Status Values . . 24 | |||
| 8.6. Subregistry for the PDR-ACK Rejection Status Values . . . 23 | 8.6. Subregistry for the PDR-ACK Rejection Status Values . . . 24 | |||
| 8.7. SubRegistry for the Route Projection Options Flags . . . 23 | 8.7. SubRegistry for the Route Projection Options Flags . . . 24 | |||
| 8.8. SubRegistry for the Sibling Information Option Flags . . 24 | 8.8. SubRegistry for the Sibling Information Option Flags . . 25 | |||
| 8.9. Error in Projected Route ICMPv6 Code . . . . . . . . . . 24 | 8.9. Error in Projected Route ICMPv6 Code . . . . . . . . . . 25 | |||
| 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 24 | 10. Normative References . . . . . . . . . . . . . . . . . . . . 26 | |||
| 11. Informative References . . . . . . . . . . . . . . . . . . . 25 | 11. Informative References . . . . . . . . . . . . . . . . . . . 26 | |||
| Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 26 | Appendix A. Applications . . . . . . . . . . . . . . . . . . . . 28 | |||
| A.1. Loose Source Routing . . . . . . . . . . . . . . . . . . 27 | A.1. Loose Source Routing . . . . . . . . . . . . . . . . . . 28 | |||
| A.2. Transversal Routes . . . . . . . . . . . . . . . . . . . 28 | A.2. Transversal Routes . . . . . . . . . . . . . . . . . . . 29 | |||
| Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 30 | Appendix B. Examples . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| B.1. Using Storing Mode P-DAO in Non-Storing Mode MOP . . . . 30 | B.1. Using Storing Mode P-DAO in Non-Storing Mode MOP . . . . 31 | |||
| B.2. Projecting a storing-mode transversal route . . . . . . . 31 | B.2. Projecting a Storing Mode transversal route . . . . . . . 32 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 33 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 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 | |||
| Internet into the RPL domain and set the related RPL information in | Internet into the RPL domain and set the related RPL information in | |||
| the packets. The "6TiSCH Architecture" [6TiSCH-ARCHI] uses RPL for | the packets. 6TiSCH uses RPL for its routing operations. | |||
| its routing operations. | ||||
| The 6TiSCH Architecture also leverages the "Deterministic Networking | The "6TiSCH Architecture" [6TiSCH-ARCHI] also leverages the | |||
| Architecture" [RFC8655] centralized model whereby the device | "Deterministic Networking Architecture" [RFC8655] centralized model | |||
| resources and capabilities are exposed to an external controller | whereby the device resources and capabilities are exposed to an | |||
| which installs routing states into the network based on some | external controller which installs routing states into the network | |||
| objective functions that reside in that external entity. With DetNet | based on some objective functions that reside in that external | |||
| and 6TiSCH, the component of the controller that is responsible of | entity. With DetNet and 6TiSCH, the component of the controller that | |||
| computing routes is called a Path Computation Element ([PCE]). | is responsible of computing routes is called a Path Computation | |||
| Element ([PCE]). | ||||
| Based on heuristics of usage, path length, and knowledge of device | Based on heuristics of usage, path length, and knowledge of device | |||
| capacity and available resources such as battery levels and | capacity and available resources such as battery levels and | |||
| reservable buffers, a PCE with a global visibility on the system can | reservable buffers, the PCE with a global visibility on the system | |||
| compute P2P routes that are more optimized for the current needs as | can compute direct Peer to Peer (P2P) routes that are optimized for | |||
| expressed by the objective function. | the needs expressed by an objective function. This document | |||
| specifies protocol extensions to RPL [RPL] that enable the Root of a | ||||
| This draft proposes protocol extensions to RPL that enable the Root | main DODAG to install centrally-computed routes inside the DODAG on | |||
| to install a limited amount of centrally-computed routes in a RPL | behalf of a PCE. | |||
| graph, on behalf of a PCE that may be collocated or separated from | ||||
| the Root. Those extensions enable loose source routing down and | ||||
| transversal routes inside the main DODAG running a base RPL Instance. | ||||
| This specification expects that the base RPL Instance is operated in | This specification expects that the main RPL Instance is operated in | |||
| RPL Non-Storing Mode of Operation (MOP) to sustain the exchanges with | RPL Non-Storing Mode of Operation (MOP) to sustain the exchanges with | |||
| the Root. In that Mode, the Root has enough information to build a | the Root. In that Mode, the Root has enough information to build a | |||
| basic DODAG topology based on parents and children, but lacks the | basic DODAG topology based on parents and children, but lacks the | |||
| knowledge of siblings. This document adds the capability for nodes | knowledge of siblings. This document adds the capability for nodes | |||
| to advertise sibling information in order to improve the topological | to advertise sibling information in order to improve the topological | |||
| awareness of the Root. | awareness of the Root. | |||
| As opposed to the classical RPL operations where routes are injected | As opposed to the classical RPL operations where routes are injected | |||
| by the Target nodes, the protocol extensions enable the Root of a | by the Target nodes, the protocol extensions enable the Root of a | |||
| DODAG to project the routes that are needed onto the nodes where they | DODAG to project the routes that are needed onto the nodes where they | |||
| should be installed. This specification uses the term Projected | should be installed. This specification uses the term Projected | |||
| Route to refer to those routes. | Route to refer to those routes. Projected Routes can be used to | |||
| reduce the size of the source routing headers with loose source | ||||
| routing operations down the main RPL DODAG. Projected Routes can | ||||
| also be used to build transversal routes for route optimization and | ||||
| Traffic Engineering purposes, between nodes of the DODAG. | ||||
| A Projected Route may be installed in either Storing and Non-Storing | A Projected Route may be installed in either Storing and Non-Storing | |||
| Mode, potentially resulting in hybrid situations where the Mode of | Mode, potentially resulting in hybrid situations where the Mode of | |||
| the Projected Route is different from that of the main RPL Instance. | the Projected Route is different from that of the main RPL Instance. | |||
| A Projected Route may be a stand-alone end-to-end path to a Target or | A Projected Route may be a stand-alone end-to-end path or a Segment | |||
| a Segment in a more complex forwarding graph called a Track. | in a more complex forwarding graph called a Track. | |||
| The concept of a Track was introduced in the 6TiSCH architecture, as | The concept of a Track was introduced in the 6TiSCH architecture, as | |||
| a complex path to a Target destination with redundant forwarding | a potentially complex path with redundant forwarding solutions along | |||
| solutions along the way. A node at the ingress of more than one | the way. A node at the ingress of more than one Segment in a Track | |||
| Segment in a Track may use any combination of those Segments to | may use any combination of those Segments to forward a packet towards | |||
| forward a packet towards the Target. | the Track Egress. | |||
| The "Reliable and Available Wireless (RAW) Architecture/Framework" | The "Reliable and Available Wireless (RAW) Architecture/Framework" | |||
| [RAW-ARCHI] enables a dynamic path selection within the Track to | [RAW-ARCHI] defines the Path Selection Engine (PSE) that adapts the | |||
| increase the transmission diversity and combat diverse causes of | use of the path redundancy within a Track to defeat the diverse | |||
| packet loss. | causes of packet loss. | |||
| To that effect, RAW defines the Path Selection Engine (PSE) as a | The PSE is a dataplane extension of the PCE; it controls the | |||
| complement of the PCE operating in the dataplane. The PSE controls | forwarding operation of the packets within a Track, using Packet ARQ, | |||
| the use of the Packet ARQ, Replication, Elimination, and Overhearing | Replication, Elimination, and Overhearing (PAREO) functions over the | |||
| (PAREO) functions over the Track segments. | Track segments, to provide a dynamic balance between the reliability | |||
| and availability requirements of the flows and the need to conserve | ||||
| energy and spectrum. | ||||
| While the time scale at which the PCE (re)computes the Track can be | The time scale at which the PCE (re)computes the Track can be long, | |||
| long, for an operation based on long-term statistical metrics to | using long-term statistical metrics to perform global optimizations | |||
| perform global optimizations at the scale of the whole network, the | at the scale of the whole network. Conversely, the PSE makes | |||
| PSE makes forwarding decision at the time scale of one or a small | forwarding decisions at the time scale of one or a small collection | |||
| collection of packets, using a knowledge that is changing rapidly but | of packets, based on a knowledge that is limited in scope to the | |||
| limited in scope of the Track itself. This way, the PSE can provide | Track itself, so it can be refreshed at a fast pace. | |||
| a dynamic balance between the reliability and availability | ||||
| requirements of the flows and the need to conserve energy and | ||||
| spectrum. | ||||
| Projected Routes must be used with the parsimony to limit the amount | Projected Routes must be used with the parsimony to limit the amount | |||
| of state that is installed in each device to fit within the device | of state that is installed in each device to fit within the device | |||
| resources, and to maintain the amount of rerouted traffic within the | resources, and to maintain the amount of rerouted traffic within the | |||
| capabilities of the transmission links. The methods used to learn | capabilities of the transmission links. The methods used to learn | |||
| the node capabilities and the resources that are available in the | the node capabilities and the resources that are available in the | |||
| devices and in the network are out of scope for this document. | devices and in the network are out of scope for this document. | |||
| This specification uses the RPL Root as a proxy to the PCE. The PCE | This specification uses the RPL Root as a proxy to the PCE. The PCE | |||
| may be collocated with the Root, or may reside in an external | may be collocated with the Root, or may reside in an external | |||
| Controller. In that case, the PCE exchanges control messages with | Controller. | |||
| the Root over a Southbound API, that is out of scope for this | ||||
| specification. The algorithm to compute the paths and the protocol | In that case, the PCE exchanges control messages with the Root over a | |||
| used by an external PCE to obtain the topology of the network from | Southbound API that is out of scope for this specification. The | |||
| the Root are also out of scope. | algorithm to compute the paths and the protocol used by an external | |||
| PCE to obtain the topology of the network from the Root are also out | ||||
| of scope. | ||||
| 2. Terminology | 2. Terminology | |||
| 2.1. Requirements Language | 2.1. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| 14 [RFC2119][RFC8174] when, and only when, they appear in all | 14 [RFC2119][RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2.2. 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 vertice (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 | |||
| MOP: RPL Mode of Operation | MOP: RPL Mode of Operation | |||
| P-DAO: Projected DAO | P-DAO: Projected DAO | |||
| 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 | |||
| RPI: RPL Packet Information | RPI: RPL Packet Information | |||
| RPL: IPv6 Routing Protocol for LLNs [RPL] | RPL: IPv6 Routing Protocol for LLNs [RPL] | |||
| RPO: A Route Projection Option; it can be a VIO or an SRVIO. | RPO: A Route Projection Option; it can be a VIO or an SRVIO. | |||
| RTO: RPL Target Option | RTO: RPL Target Option | |||
| skipping to change at page 5, line 45 ¶ | skipping to change at page 5, line 45 ¶ | |||
| SIO: RPL Sibling Information Option | SIO: RPL Sibling Information Option | |||
| SRVIO: A Source-Routed Via Information Option, used in Non-Storing | SRVIO: A Source-Routed Via Information Option, used in Non-Storing | |||
| Mode P-DAO messages. | Mode P-DAO messages. | |||
| SubDAG: A DODAG rooted at a node which is a child of that node and a | SubDAG: A DODAG rooted at a node which is a child of that node and a | |||
| subset of a larger DAG | subset of a larger DAG | |||
| TIO: RPL Transit Information Option | TIO: RPL Transit Information Option | |||
| VIO: A Via Information Option, used in Storing Mode P-DAO messages. | VIO: A Via Information Option, used in Storing Mode P-DAO messages. | |||
| 2.3. Other Terms | 2.3. Other Terms | |||
| Projected Route: A Projected Route is a serial path that is | Projected Route: A Projected Route is a path segment that is | |||
| computed, installed and maintained remotely by a RPL Root. | computed remotely, and installed and maintained by a RPL Root. | |||
| Projected DAO: A DAO message used to install a Projected Route. | Projected DAO: A DAO message used to install a Projected Route. | |||
| Track: A complex path with redundant Segments to a destination. | Track: A complex path with redundant Segments to a destination. | |||
| TrackID: A RPL Local InstanceID with the 'D' bit set. The TrackId | TrackID: A RPL Local InstanceID with the 'D' bit set. The TrackID | |||
| is associated with a Target address that is the Track destination. | is associated with a IPv6 Address to the Track Egress Node. | |||
| 2.4. References | 2.4. References | |||
| In this document, readers will encounter terms and concepts that are | In this document, readers will encounter terms and concepts that are | |||
| discussed in the "Routing Protocol for Low Power and Lossy Networks" | discussed in the "Routing Protocol for Low Power and Lossy Networks" | |||
| [RPL] and "Terminology in Low power And Lossy Networks" [RFC7102]. | [RPL] and "Terminology in Low power And Lossy Networks" [RFC7102]. | |||
| 3. Updating RFC 6550 | 3. Updating RFC 6550 | |||
| This specification introduces two new RPL Control Messages to enable | Section 6 of [RPL] introduces the RPL Control Message Options (CMO), | |||
| a RPL Aware Node (RAN) to request the establisment of a Track from | including the RPL Target Option (RTO) and Transit Information Option | |||
| self to a Target. The RAN makes its request by sending a new P-DAO | (TIO), which can be placed in RPL messages such as the Destination | |||
| Request (PDR) Message to the Root. The Root confirms with a new PDR- | Advertisement Object (DAO). This specification extends the DAO | |||
| ACK message back to the requester RAN, see Section 5.1 for more. | message with the Projected DAO (P-DAO); a P-DAO message signals a | |||
| Projected Route using new CMOs presented therein. | ||||
| Section 6.7 of [RPL] specifies the RPL Control Message Options (CMO) | A Projected Route can be an additional route of higher precedence | |||
| to be placed in RPL messages such as the Destination Advertisement | within the main DODAG, in which case it is installed with the | |||
| Object (DAO) message. The RPL Target Option (RTO) and the Transit | RPLInstanceID and DODAGID of the main DODAG. | |||
| Information Option (TIO) are such options. | ||||
| In Non-Storing Mode, the TIO option is used in the DAO message to | A Projected Route can also be a Segment within a Track. A stand- | |||
| inform the root of the parent-child relationships within the DODAG, | alone Segment can be used as a Serial (end-to-end) Track. Segments | |||
| and the Root has a full knowledge of the DODAG structure. The TIO | can also be combined to form a Complex Track. The Root uses a local | |||
| applies to the RTOs that preceed it immediately in the message. | RPL Instance rooted at the Track Egress to establish and maintain the | |||
| Options may be factorized; multiple TIOs may be present to indicate | Track. The local RPLInstanceID of the Track is called the TrackID, | |||
| multiple routes to the one or more contiguous addresses indicated in | more in Section 4. | |||
| the RTOs that immediately precede the TIOs in the RPL message. | ||||
| This specification introduces two new CMOs referred to as Route | 0 1 2 3 | |||
| Projection Options (RPO) to install Projected Routes. One RPO is the | 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 | |||
| Via Information Option (VIO) and the other is the Source-Routed VIO | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| (SRVIO). The VIO installs a route on each hop along a Projected | | TrackID |K|D| Flags | Reserved | DAOSequence | | |||
| Route (in a fashion analogous to RPL Storing Mode) whereas the SRVIO | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| installs a source-routing state at the ingress node, which uses that | | | | |||
| state to encapsulate a packet with an IPv6 Routing Header in a | + + | |||
| fashion similar to RPL Non-Storing Mode. | | | | |||
| + IPv6 Address of the Track Egress + | ||||
| | | | ||||
| + + | ||||
| | | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Option(s)... | ||||
| +-+-+-+-+-+-+-+-+ | ||||
| Like the TIO, the RPOs MUST be preceded by exactly one RTO to which | Figure 1: Projected DAO Format for a Track | |||
| they apply, and SRVIOs MAY be factorized, though VIOs MUST NOT be. | ||||
| Factorized contiguous SRVIOs indicate alternate paths to the Target, | ||||
| more in Section 5.3. | ||||
| This specification also introduces a new CMO to enable a RAN to | A P-DAO message signals the IPv6 Address of the Track Egress in the | |||
| advertise a selection of its candidate neighbors as siblings to the | DODAGID field of the DAO Base Object, and the TrackID in the | |||
| Root, using a new Sibling Information Option (SIO) as specified in | RPLInstanceID field, as shown in Figure 1. | |||
| Section 5.4. | ||||
| 4. Identifying a Path | 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 | ||||
| are formed by the directed parent-child relationships. Options may | ||||
| be factorized; multiple RTOs may be present to signal a collection of | ||||
| children that can be reached via the parent(s) indicated in the | ||||
| TIO(s) that follows the RTOs. | ||||
| It must be noted that RPL has a concept of Instance to represent | This specification generalizes the case of a parent that can be used | |||
| different routing topologies but does not have a concept of an | to reach a child with that of a whole Track through which both | |||
| administrative distance, which exists in certain proprietary | children and siblings may be reached. | |||
| implementations to sort out conflicts between multiple sources of | ||||
| routing information within one routing topology. | ||||
| This draft conforms the Instance model as follows: | New CMOs called the Route Projection Options (RPO) are introduced for | |||
| use in P-DAO messages as a multihop alternative to the TIO. One RPO | ||||
| is the Via Information Option (VIO); the VIO installs a state at each | ||||
| hop along a Storing Mode Projected Route. The other is the Source- | ||||
| Routed VIO (SRVIO); the SRVIO installs a source-routing state at the | ||||
| Segment ingress, which uses that state to encapsulate a packet with a | ||||
| Source-Routing Header along a Non-Storing Mode Projected Route. | ||||
| * If the PCE needs to influence a particular Instance to add better | Like in a DAO message, the RTOs can be factorized in a P-DAO, but the | |||
| routes in conformance with the routing objectives in that | CMOs cannot. A P-DAO contains one or more RTOs that indicate the | |||
| Instance, it may do so as long as it does not create a loop. A | destinations that can be reached via the Track, and either one SRVIO | |||
| Projected Route is always preferred over a route that is learned | or one VIO signal the sequence of hops between the Track Ingress and | |||
| via RPL. | the (penultimate) node before the Track Egress. In Non-Storing 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 | ||||
| Track Egress and forwarded along the Segment in the reverse | ||||
| direction, installing a Storing Mode state at each hop. | ||||
| * The PCE may use P-DAOs to install a specific (say, Traffic | This specification adds another CMO called the Sibling Information | |||
| Engineered) and possibly complex path, that we refer to as a | Option (SIO) that is used by a RPL Aware Node (RAN) to advertise a | |||
| Track, towards a particular Target. In that case it MUST use a | selection of its candidate neighbors as siblings to the Root, more in | |||
| Local RPL Instance (see section 5 of [RPL]) associated to that | Section 5.4. The sibling selection process is out of scope. | |||
| Target to identify the Track. | ||||
| We refer to the local RPLInstanceID as TrackID. The TrackID MUST | Two new RPL Control Messages are also introduced, to enable a RAN to | |||
| be unique for a particular Target IPv6 address. The Track is | request the establishment of a Track between self as the Track | |||
| uniquely identified within the RPL domain by the tuple (Target | Ingress Node and a Track Egress. The RAN makes its request by | |||
| address, TrackID) where the TrackID is always represented with the | sending a new P-DAO Request (PDR) Message to the Root. The Root | |||
| 'D' flag set. | confirms with a new PDR-ACK message back to the requester RAN, see | |||
| Section 5.1 for more. A positive PDR-ACK indicates that the Track | ||||
| was built and that the Roots commits to maintain the Track for a | ||||
| negotiated lifetime. | ||||
| The Track where a packet is placed is signaled by a RPL Packet | In the case of a complex Track, each Segment is maintained | |||
| Information (RPI) (see [USEofRPLinfo]) in the outer chain of IPv6 | independently and asynchronously by the Root, with its own lifetime | |||
| Headers. The RPI contains the TrackID as RPLInstanceID and the | that may be shorter, the same, or longer than that of the Track. The | |||
| 'D' flag is set to indicate that the destination address in the | Root may use an asynchronous PDR-ACK with an negative status to | |||
| IPv6 header is the Target that is used to identify the Track, more | indicate that the Track was terminated before its time. | |||
| in Section 6.2. | ||||
| * The PCE may also install a projected Route as a complement to the | 4. Identifying a Track | |||
| main DODAG, e.g., using the Storing-Mode Mode along a Source- | ||||
| Routed path in order to enable loose source routing and reduce the | ||||
| Routing Header. In that case, the global RPLInstanceID of the | ||||
| main DODAG is signaled in place of the TrackId on the P-DAO, and | ||||
| the RPI in the packet indicates the global RPLInstanceID, more in | ||||
| Appendix A.1. | ||||
| * A packet that is routed over the RPL Instance associated to a | RPL defines the concept of an Instance to signal an individual | |||
| Track MUST NOT be placed over a different RPL Instance again. | routing topology but does not have a concept of an administrative | |||
| Conversely, a packet that is placed on a Global Instance MAY be | distance, which exists in certain proprietary implementations to sort | |||
| injected in a Local Instance based on a network policy and the | out conflicts between multiple sources of routing information within | |||
| Local Instance configuration. | one routing topology. | |||
| A Projected Route is a serial path that may represent the end-to-end | This draft conforms the RPL Instance model as follows: | |||
| route or only a Segment in a complex Track, in which case multiple | ||||
| Projected Routes are installed with the same tuple (Target address, | ||||
| TrackID) and a different Segment ID each. | ||||
| All properties of a Track operations are inherited form the main | * The PCE MAY use P-DAO messages to add better routes in the main | |||
| instance that is used to install the Track. For instance, the use of | (Global) Instance in conformance with the routing objectives in | |||
| that Instance. To achieve this, the PCE MAY install a Storing | ||||
| Mode Projected Route along a path down the main (Non-Storing Mode) | ||||
| DODAG. This enables a loose source routing and reduces the size | ||||
| of the Source Routing Header, see Appendix A.1. | ||||
| When adding a Storing Mode Projected Route to the main RPL | ||||
| Instance, the Root MUST set the RPLInstanceID field of the DAO | ||||
| message (see section 6.4.1. of [RPL]) to the RPLInstanceID of the | ||||
| main DODAG, and set the DODAGID field to the Segment Egress. The | ||||
| Projected Route provides a longer match to the Egress than the | ||||
| default route via the Root, so it is preferred. Once the | ||||
| Projected Route is installed, the intermediate nodes listed in the | ||||
| VIO between the first (excluded) and the last (included) can be | ||||
| elided in a Source-Route Header that signals that Segment. | ||||
| * The Root MAY also use P-DAO messages to install a specific (say, | ||||
| Traffic Engineered) path as a Serial of a Complex Track, to a | ||||
| particular endpoint that is the Track Egress. In that case, the | ||||
| Root MUST use a Local RPL Instance (see section 5 of [RPL]) as | ||||
| TrackID. | ||||
| The TrackID MUST be unique for the Global Unique IPv6 Address | ||||
| (GUA) or Unique-Local Address (ULA) of the Track Egress that | ||||
| serves as DODAGID for the Track. This way, a Track is uniquely | ||||
| identified by the tuple (Track Egress Address, TrackID) where the | ||||
| TrackID is always represented with the 'D' flag set. The Track | ||||
| Egress Address and the TrackID are signaled in the P-DAO message | ||||
| as shown in Figure 1. | ||||
| * In the data packets, the Track Egress Address and the TrackID are | ||||
| respectively signaled in IPv6 Address of the final destination and | ||||
| the RPLInstanceID field of the RPL Packet Information (RPI) (see | ||||
| [USEofRPLinfo]) in the outer chain of IPv6 Headers. | ||||
| If the outer chain of IPv6 Headers contains a Source-Routing | ||||
| Header that is not fully consumed, then the final destination is | ||||
| the last entry in the Source-Routing Header; else it is the | ||||
| Destination Address in the IPv6 Header. When using the [RFC8138] | ||||
| compression, it is the last hop of the last SRH-6LoRH of the outer | ||||
| header in either case. | ||||
| The 'D' flag in the RPLInstanceID MUST be set to indicate that the | ||||
| final destination address in the IPv6 header owns the local | ||||
| RPLInstanceID, more in Section 6.2. | ||||
| * A packet that is being routed over the RPL Instance associated to | ||||
| a first Non-Storing Mode Track MAY be placed (encapsulated) in a | ||||
| second Track to cover one loose hop of the first Track. On the | ||||
| other hand, a Storing Mode Track must be strict and a packet that | ||||
| 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 | ||||
| the packet), the Destination of the inner packet MUST be either | ||||
| this node or a direct neighbor, otherwise the packet MUST be | ||||
| dropped. That Destination may be the next Hop in a Non-Storing | ||||
| Mode Track. | ||||
| All properties of a Track operations are inherited form the main RPL | ||||
| 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 | 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 | main instance, e.g., by setting the "T" flag [TURN-ON_RFC8138] in the | |||
| RPL configuration option. | RPL configuration option. | |||
| 5. New RPL Control Messages and Options | 5. New RPL Control Messages and Options | |||
| 5.1. New P-DAO Request Control Message | 5.1. New P-DAO Request Control Message | |||
| The P-DAO Request (PDR) message is sent to the Root to request a new | The P-DAO Request (PDR) message is sent to the Root to request a new | |||
| that the PCE establishes a new a projected route from self ot the | that the PCE establishes a new a projected route from self to the | |||
| Target indicated in the Target Option as a full path of a collection | Track Egress indicated in the TIO as a full path of a collection of | |||
| of Segments in a Track. Exactly one Target Option MUST be present, | Segments in a Track. Exactly one TIO MUST be present, more in | |||
| more in Section 6.1. | Section 6.1. | |||
| The RPL Control Code for the PDR is 0x09, to be confirmed by IANA. | The RPL Control Code for the PDR is 0x09, to be confirmed by IANA. | |||
| The format of PDR Base Object is as follows: | The format of PDR Base Object is as follows: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | TrackID |K|R| Flags | ReqLifetime | PDRSequence | | | TrackID |K|R| Flags | ReqLifetime | PDRSequence | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Option(s)... | | Option(s)... | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 1: New P-DAO Request Format | Figure 2: New P-DAO Request Format | |||
| TrackID: 8-bit field indicating the RPLInstanceID associated with | TrackID: 8-bit field indicating the RPLInstanceID associated with | |||
| the Track. It is set to zero upon the first request for a new | the Track. It is set to zero upon the first request for a new | |||
| Track and then to the TrackID once the Track was created, to | Track and then to the TrackID once the Track was created, to | |||
| either renew it of destroy it. | either renew it of destroy it. | |||
| K: The 'K' flag is set to indicate that the recipient is expected to | K: The 'K' flag is set to indicate that the recipient is expected to | |||
| send a PDR-ACK back. | send a PDR-ACK back. | |||
| R: The 'R' flag is set to indicate that the Requested path should be | R: The 'R' flag is set to indicate that the Requested path should be | |||
| skipping to change at page 9, line 17 ¶ | skipping to change at page 10, line 41 ¶ | |||
| The requested lifetime for the Track expressed in Lifetime Units | The requested lifetime for the Track expressed in Lifetime Units | |||
| (obtained from the DODAG Configuration option). | (obtained from the DODAG Configuration option). | |||
| A PDR with a fresher PDRSequence refreshes the lifetime, and a | A PDR with a fresher PDRSequence refreshes the lifetime, and a | |||
| PDRLifetime of 0 indicates that the track should be destroyed. | PDRLifetime of 0 indicates that the track should be destroyed. | |||
| PDRSequence: 8-bit wrapping sequence number, obeying the operation | PDRSequence: 8-bit wrapping sequence number, obeying the operation | |||
| in section 7.2 of [RPL]. | in section 7.2 of [RPL]. | |||
| The PDRSequence is used to correlate a PDR-ACK message with the | The PDRSequence is used to correlate a PDR-ACK message with the | |||
| PDR message that triggeted it. It is incremented at each PDR | PDR message that triggered it. It is incremented at each PDR | |||
| message and echoed in the PDR-ACK by the Root. | message and echoed in the PDR-ACK by the Root. | |||
| 5.2. New PDR-ACK Control Message | 5.2. New PDR-ACK Control Message | |||
| The new PDR-ACK is sent as a response to a PDR message with the 'K' | The new PDR-ACK is sent as a response to a PDR message with the 'K' | |||
| flag set. The RPL Control Code for the PDR-ACK is 0x0A, to be | flag set. The RPL Control Code for the PDR-ACK is 0x0A, to be | |||
| confirmed by IANA. Its format is as follows: | confirmed by IANA. Its format is as follows: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | TrackID | Flags | Track Lifetime| PDRSequence | | | TrackID | Flags | Track Lifetime| PDRSequence | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | PDR-ACK Status| Reserved | | | PDR-ACK Status| Reserved | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Option(s)... | | Option(s)... | |||
| +-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+ | |||
| Figure 2: New PDR-ACK Control Message Format | Figure 3: New PDR-ACK Control Message Format | |||
| TrackID: The RPLInstanceID of the Track that was created. The value | TrackID: The RPLInstanceID of the Track that was created. The value | |||
| of 0x00 is used to when no Track was created. | of 0x00 is used to when no Track was created. | |||
| Flags: Reserved. The Flags field MUST initialized to zero by the | Flags: Reserved. The Flags field MUST initialized to zero by the | |||
| sender and MUST be ignored by the receiver | sender and MUST be ignored by the receiver | |||
| Track Lifetime: Indicates that remaining Lifetime for the Track, | Track Lifetime: Indicates that remaining Lifetime for the Track, | |||
| expressed in Lifetime Units; a value of zero (0x00) indicates that | expressed in Lifetime Units; a value of zero (0x00) indicates that | |||
| the Track was destroyed or not created. | the Track was destroyed or not created. | |||
| PDRSequence: 8-bit wrapping sequence number. It is incremented at | PDRSequence: 8-bit wrapping sequence number. It is incremented at | |||
| each PDR message and echoed in the PDR-ACK. | each PDR message and echoed in the PDR-ACK. | |||
| PDR-ACK Status: 8-bit field indicating the completion. | PDR-ACK Status: 8-bit field indicating the completion. | |||
| The PDR-ACK Status is substructured as indicated in Figure 3: | The PDR-ACK Status is substructured as indicated in Figure 4: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| |E|R| Value | | |E|R| Value | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Figure 3: PDR-ACK status Format | Figure 4: PDR-ACK status Format | |||
| E: 1-bit flag. Set to indicate a rejection. When not set, a | E: 1-bit flag. Set to indicate a rejection. When not set, a | |||
| 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 as indicated respectively in Table 4 | setting of the 'E' flag as indicated respectively in Table 4 | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 12, line 13 ¶ | |||
| 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 | |||
| 5.3. Route Projection Options | 5.3. Route Projection Options | |||
| The RPOs indicate a series of IPv6 addresses that can be compressed | The RPOs indicate a series of IPv6 addresses that can be compressed | |||
| using the method defined in the "6LoWPAN Routing Header" [RFC8138] | using the method defined in the "6LoWPAN Routing Header" [RFC8138] | |||
| specification using the address of the Root found in the DODAGID | specification using the address of the Root found in the DODAGID | |||
| field of DIO messages as Compression Reference. | field of DIO messages as Compression Reference. | |||
| An RPO indicates a Projected Route that can be a serial Track in full | An RPO indicates a Projected Route that can be a Serial Track in full | |||
| or a Segment of a more complex Track. In Non-Storing Mode, multiple | or a Segment of a more Complex Track. In Non-Storing Mode, multiple | |||
| RPO may be placed after a same Target Option to reflect different | RPO may be placed after a TIO to reflect different Segments | |||
| Segments originated at this node. The Track is identified by a | originated at this node. The Track is identified by a TrackID that | |||
| TrackID that is a Local RPLInstanceID to the Target of the Track. | is a Local RPLInstanceID to the Track Egress of the Track. | |||
| The format of RPOs is as follows: | The format of RPOs is as follows: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Type | Option Length |C| Flags | Reserved | | | Type | Option Length | Flags | SegmentID | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | TrackID | SegmentID |Segm. Sequence | Seg. Lifetime | | |Segm. Sequence | Seg. Lifetime | SRH-6LoRH header | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Via Address 1 . | . Via Address 1 . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| skipping to change at page 11, line 33 ¶ | skipping to change at page 12, line 49 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Via Address n . | . Via Address n . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 4: Route Projection Option format (uncompressed form) | Figure 5: Route Projection Option format (uncompressed form) | |||
| Option Type: 0x0B for VIO, 0x0C for SRVIO (to be confirmed by IANA) | Option Type: 0x0B for VIO, 0x0C for SRVIO (to be confirmed by IANA) | |||
| Option Length: In bytes; variable, depending on the number of Via | Option Length: In bytes; variable, depending on the number of Via | |||
| Addresses. | Addresses and the compression. | |||
| C: 1-bit flag. Set to indicate that the following Via Addresses are | ||||
| expressed as one or more SRH-6LoRH as defined in section 5.1 of | ||||
| [RFC8138]. Figure 4 illustrates the case where the "C" flag is | ||||
| not set, meaning that the Via Addresses are expressed in 128 bits. | ||||
| Flags: Reserved. The Flags field MUST initialized to zero by the | Flags: Reserved. The Flags field MUST initialized to zero by the | |||
| sender and MUST be ignored by the receiver | sender and MUST be ignored by the receiver | |||
| Reserved: The Reserved field MUST initialized to zero by the sender | ||||
| and MUST be ignored by the receiver | ||||
| TrackID: 8-bit field indicating the topology Instance associated | ||||
| with the Track. This field carries either a TrackID, such that | ||||
| the tuple (Target Address, TrackID) forms a unique ID of the Track | ||||
| in the RPL domain, or the glocal InstanceID of the main DODAG, in | ||||
| which case the RPO adds a route to the main DODAG as an individual | ||||
| Segment. | ||||
| 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. A Value of 0 is | the main DODAG as indicated by the TrackID field. A Value of 0 is | |||
| used to signal a serial path, i.e., made of a single segment. | 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. When the Root of the DODAG needs to refresh or | starts at 255. When the Root of the DODAG needs to refresh or | |||
| update a Segment in a Track, it increments the Segment Sequence | update a Segment in a Track, it increments the Segment Sequence | |||
| individually for that Segment. The Segment information indicated | individually for that Segment. The Segment information indicated | |||
| in the RTO deprecates any state for the Segment indicated by the | in the RTO deprecates any state for the Segment indicated by the | |||
| SegmentID within the indicated Track and sets up the new | SegmentID within the indicated Track and sets up the new | |||
| information. A RTO with a Segment Sequence that is not as fresh | information. A RTO with a Segment Sequence that is not as fresh | |||
| as the current one is ignored. a RTO for a given target with the | as the current one is ignored. a RTO for a given Track Egress | |||
| same (TrackID, SegmentID, Segment Sequence) indicates a retry; it | with the same (TrackID, SegmentID, Segment Sequence) indicates a | |||
| MUST NOT change the Segment and MUST be propagated or answered as | retry; it MUST NOT change the Segment and MUST be propagated or | |||
| the first copy. | 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. The period starts when a new Segment Sequence | Segment is usable. The period starts when a new Segment Sequence | |||
| is seen. A value of 255 (0xFF) represents infinity. A value of | is seen. A value of 255 (0xFF) represents infinity. A value of | |||
| zero (0x00) indicates a loss of reachability. A DAO message that | zero (0x00) indicates a loss of reachability. A DAO message that | |||
| contains a Via Information option with a Segment Lifetime of zero | contains a Via Information option with a Segment Lifetime of zero | |||
| for a Target is referred as a No-Path (for that Target) in this | for a Track Egress is referred as a No-Path (for that Track | |||
| document. | Egress) in this document. | |||
| Via Address: The collection of Via Addresses along one Segment, | SRH-6LoRH header: The first 2 bytes of the SRH-6LoRH as shown in | |||
| indicated in the order of the path from the ingress to the egress | Figure 6 of [RFC8138]. A 6LoRH Type of 4 means that the VIA | |||
| nodes. If the "C" flag is set, the fields Via Address 1 .. Via | Addresses are provided in full with no compression. | |||
| Address n in Figure 4 are replaced by one or more of the headers | ||||
| illustrated in Fig. 6 of [RFC8138]. In the case of a VIO, or if | Via Address: A Luistof Via Addresses along one Segment, indicated in | |||
| [RFC8138] is turned off, then the Root MUST use only one SRH- | the order of the path from the ingress to the egress nodes. | |||
| 6LoRH, and the compression is the same for all addresses. If | ||||
| [RFC8138] is turned on, then the Root SHOULD optimize the size of | In a VIO, the list is a strict path between direct neighbors, | |||
| the SRVIO; in that case, more than one SRH-6LoRH are needed if the | whereas for an SRVIO, the list may be loose, provided that each | |||
| compression of the addresses change inside the Segment and | listed node has a path to the next listed node, e.g., via another | |||
| Track. | ||||
| In the case of a VIO, or if [RFC8138] is turned off, then the Root | ||||
| MUST use only one SRH-6LoRH per RPO, and the compression is the | ||||
| same for all the addresses, as shown in Figure 5. | ||||
| If [RFC8138] is turned on, then the Root SHOULD optimize the size | ||||
| of the SRVIO; in that case, more than one SRH-6LoRH may be needed | ||||
| if the compression of the addresses changes inside the Segment and | ||||
| different SRH-6LoRH Types are used. | different SRH-6LoRH Types are used. | |||
| An RPO MUST contain at least one Via Address, and a Via Address MUST | An RPO MUST contain at least one Via Address, and a Via Address MUST | |||
| NOT be present more than once, otherwise the RPO MUST be ignored. | NOT be present more than once, otherwise the RPO MUST be ignored. | |||
| 5.4. Sibling Information Option | 5.4. Sibling Information Option | |||
| The Sibling Information Option (SIO) provides indication on siblings | The Sibling Information Option (SIO) provides indication on siblings | |||
| that could be used by the Root to form Projected Routes. The format | that could be used by the Root to form Projected Routes. The format | |||
| of SIOs is as follows: | of SIOs is as follows: | |||
| skipping to change at page 13, line 35 ¶ | skipping to change at page 14, line 47 ¶ | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| + + | + + | |||
| . . | . . | |||
| . Sibling Address . | . Sibling Address . | |||
| . . | . . | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 5: Sibling Information Option Format | Figure 6: Sibling Information Option Format | |||
| Option Type: 0x0D (to be confirmed by IANA) | Option Type: 0x0D (to be confirmed by IANA) | |||
| Option Length: In bytes; variable, depending on the number of Via | Option Length: In bytes; variable, depending on the number of Via | |||
| Addresses. | Addresses. | |||
| Compression Type: 3-bit unsigned integer. This is the SRH-6LoRH | Compression Type: 3-bit unsigned integer. This is the SRH-6LoRH | |||
| Type as defined in figure 7 in section 5.1 of [RFC8138] that | Type as defined in figure 7 in section 5.1 of [RFC8138] that | |||
| corresponds to the compression used for the Sibling Address. | corresponds to the compression used for the Sibling Address. | |||
| skipping to change at page 14, line 45 ¶ | skipping to change at page 16, line 8 ¶ | |||
| [RFC8138] compressed form as indicated by the Compression Type | [RFC8138] compressed form as indicated by the Compression Type | |||
| field. | field. | |||
| An SIO MAY be immediately followed by a DAG Metric Container. In | An SIO MAY be immediately followed by a DAG Metric Container. In | |||
| that case the DAG Metric Container provides additional metrics for | that case the DAG Metric Container provides additional metrics for | |||
| the hop from the Sibling to this node. | the hop from the Sibling to this node. | |||
| 6. Projected DAO | 6. Projected DAO | |||
| This draft adds a capability to RPL whereby the Root of a DODAG | This draft adds a capability to RPL whereby the Root of a DODAG | |||
| projects a route by sending one or more extended DAO message called | projects a Track by sending one or more extended DAO message called | |||
| Projected-DAO (P-DAO) messages to an arbitrary router in the DODAG, | Projected-DAO (P-DAO) messages to chosen routers in the DODAG, | |||
| indicating one or more sequence(s) of routers inside the DODAG via | indicating one or more sequence(s) of routers inside the DODAG via | |||
| which the Target(s) indicated in the RPL Target Option(s) (RTO) can | which the Target(s) indicated in the RPL Target Option(s) (RTO) can | |||
| be reached. | be reached. | |||
| A P-DAO is sent from a global address of the Root to a global address | A P-DAO is sent from a global address of the Root to a global address | |||
| of the recipient, and MUST be confirmed by a DAO-ACK, which is sent | of the recipient, and MUST be confirmed by a DAO-ACK, which is sent | |||
| back to a global address of the Root. | back to a global address of the Root. | |||
| A P-DAO message MUST contain exactly one RTO and either one VIO or | A P-DAO message MUST contain exactly one RTO and either one VIO or | |||
| one or more SRVIOs following it. There can be at most one such | one or more SRVIOs following it. There can be at most one such | |||
| skipping to change at page 15, line 25 ¶ | skipping to change at page 16, line 34 ¶ | |||
| the RPL specification [RPL]; this is determined using the Segment | the RPL specification [RPL]; this is determined using the Segment | |||
| Sequence information from the RPO as opposed to the Path Sequence | Sequence information from the RPO as opposed to the Path Sequence | |||
| from a TIO. Also, a Segment Lifetime of 0 in an RPO indicates that | from a TIO. Also, a Segment Lifetime of 0 in an RPO indicates that | |||
| the projected route associated to the Segment is to be removed. | the projected route associated to the Segment is to be 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 6.3. It uses an | * The Non-Storing Mode is discussed in Section 6.3. It uses an | |||
| SRVIO that carries a list of Via Addresses to be used as a source- | SRVIO that carries a list of Via Addresses to be used as a source- | |||
| routed path to the Target. The recipient of the P-DAO is the | routed Segment to the Track Egress. The recipient of the P-DAO is | |||
| ingress router of the source-routed path. Upon a Non-Storing Mode | the ingress router of the source-routed Segment. Upon a Non- | |||
| P-DAO, the ingress router installs a source-routed state to the | Storing Mode P-DAO, the ingress router installs a source-routed | |||
| Target and replies to the Root directly with a DAO-ACK message. | state to the Track Egress and replies to the Root directly with a | |||
| DAO-ACK message. | ||||
| * The Storing Mode is discussed in Section 6.4. It uses a VIO with | * The Storing Mode is discussed in Section 6.4. It uses a single | |||
| one Via Address per consecutive hop, from the ingress to the | VIO, within which are signaled one Via Address per consecutive | |||
| egress of the path, including the list of all intermediate routers | hop, from the ingress to the egress of the path, including the | |||
| in the data path order. The Via Addresses indicate the routers in | list of all intermediate routers in the data path order. The Via | |||
| which the routing state to the Target have to be installed via the | Addresses indicate the routers in which the routing state to the | |||
| next Via Address in the VIO. In normal operations, the P-DAO is | Track Egress have to be installed via the next Via Address in the | |||
| propagated along the chain of Via Routers from the egress router | VIO. In normal operations, the P-DAO is propagated along the | |||
| of the path till the ingress one, which confirms the installation | chain of Via Routers from the egress router of the path till the | |||
| to the Root with a DAO-ACK message. Note that the Root may be the | ingress one, which confirms the installation to the Root with a | |||
| ingress and it may be the egress of the path, that it can also be | DAO-ACK message. Note that the Root may be the ingress and it may | |||
| neither but it cannot be both. | be the egress of the path, that it can also be neither but it | |||
| cannot be both. | ||||
| In case of a forwarding error along a Projected Route, an ICMP error | In case of a forwarding error along a Projected Route, an ICMP error | |||
| is sent to the Root with a new Code "Error in Projected Route" (See | is sent to the Root with a new Code "Error in Projected Route" (See | |||
| Section 8.9). The Root can then modify or remove the Projected | Section 8.9). The Root can then modify or remove the Projected | |||
| Route. The "Error in Projected Route" message has the same format as | Route. The "Error in Projected Route" message has the same format as | |||
| the "Destination Unreachable Message", as specified in RFC 4443 | the "Destination Unreachable Message", as specified in RFC 4443 | |||
| [RFC4443]. The portion of the invoking packet that is sent back in | [RFC4443]. The portion of the invoking packet that is sent back in | |||
| the ICMP message SHOULD record at least up to the routing header if | the ICMP message SHOULD record at least up to the routing header if | |||
| one is present, and the routing header SHOULD be consumed by this | one is present, and the routing header SHOULD be consumed by this | |||
| node so that the destination in the IPv6 header is the next hop that | node so that the destination in the IPv6 header is the next hop that | |||
| skipping to change at page 16, line 36 ¶ | skipping to change at page 17, line 46 ¶ | |||
| Track is not renewed. | Track is not renewed. | |||
| The Root is free to install which ever Segments it wants, and change | The Root is free to install which ever Segments it wants, and change | |||
| them overtime, to serve the Track as needed, without notifying the | them overtime, to serve the Track as needed, without notifying the | |||
| resquesting Node. If the Track fails and cannot be reestablished, | resquesting Node. If the Track fails and cannot be reestablished, | |||
| the Root notifies the resquesting Node asynchronously with a PDR-ACK | the Root notifies the resquesting Node asynchronously with a PDR-ACK | |||
| with a Track Lifetime of 0, indicating that the Track has failed, and | with a Track Lifetime of 0, indicating that the Track has failed, and | |||
| a PDR-ACK Status indicating the reason of the fault. | a PDR-ACK Status indicating the reason of the fault. | |||
| All the Segments MUST be of a same mode, either Storing or Non- | All the Segments MUST be of a same mode, either Storing or Non- | |||
| Storing. All the Segments MUST be created with the same TrackId and | Storing. All the Segments MUST be created with the same TrackID and | |||
| Target in the P-DAO. | Track Egress in the P-DAO. | |||
| 6.2. Routing over a Track | 6.2. Routing over a Track | |||
| Sending a packet over a Track implies the addition of a RPI to | Sending a packet over a Track implies the addition of a RPI to | |||
| indicate the Track, in association with the IPv6 destination. In | indicate the Track, in association with the IPv6 destination. In | |||
| case of a Non-Storing Mode Projected Route, a Source Routing Header | case of a Non-Storing Mode Projected Route, a Source Routing Header | |||
| is needed as well. | is needed as well. | |||
| The Destination IPv6 Address of a packet that is place in a Track | The Destination IPv6 Address of a packet that is placed in a Track | |||
| MUST be that of the Target of Track. The outer header of the packet | MUST be that of the Track Egress of Track. The outer header of the | |||
| MUST contain an RPI that indicates the TrackId as RPL Instance ID. | packet MUST contain an RPI that indicates the TrackID as RPL Instance | |||
| ID. | ||||
| If the Track Ingress is the originator of the packet and the Track | If the Track Ingress is the originator of the packet and the Track | |||
| Egress (i.e., the Target) is the destination of the packet, there is | Egress is the destination of the packet, there is no need for an | |||
| no need of an encapsulation. Else, i.e., if the Track Ingress is | encapsulation. Else, i.e., if the Track Ingress is forwarding a | |||
| forwarding a packet into the Track, or if the the final destination | packet into the Track, or if the the final destination is reached via | |||
| is reached via is not the Target, but reached over the Track via the | is not the Track Egress, but reached over the Track via the Track | |||
| Track Egress, then an IP-in-IP encapsulation is needed. | Egress, then an IP-in-IP encapsulation is needed. | |||
| 6.3. Non-Storing Mode Projected Route | 6.3. Non-Storing Mode Projected Route | |||
| As illustrated in Figure 6, a P-DAO that carries an SRVIO enables the | As illustrated in Figure 7, a P-DAO that carries an SRVIO enables the | |||
| Root to install a source-routed path towards a Target in any | Root to install a source-routed path towards a Track Egress in any | |||
| particular router; with this path information the router can add a | particular router; with this path information the router can add a | |||
| source routed header reflecting the Projected Route to any packet for | source routed header reflecting the Projected Route to any packet for | |||
| which the current destination either is the said Target or can be | which the current destination either is the said Track Egress or can | |||
| reached via the Target. | be reached via the Track Egress. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | P ^ | | +-----+ | P ^ | | |||
| | | DAO | ACK | Loose | | | DAO | ACK | Loose | |||
| o o o o router V | | Source | o o o o router V | | Source | |||
| o o o o o o o o o | P-DAO . Route | o o o o o o o o o | P-DAO . Route | |||
| o o o o o o o o o o | Source . Path | o o o o o o o o o o | Source . Path | |||
| o o o o o o o o o | Route . From | o o o o o o o o o | Route . From | |||
| o o o o o o o o | Path . Root | o o o o o o o o | Path . Root | |||
| o o o o o Target V . To | o o o o o Track Egress V . To | |||
| o o o o | Desti- | o o o o | Desti- | |||
| o o o o | nation | o o o o | nation | |||
| destination V | destination V | |||
| LLN | LLN | |||
| Figure 6: Projecting a Non-Storing Route | Figure 7: Projecting a Non-Storing Route | |||
| A route indicated by an SRVIO may be loose, meaning that the node | A route indicated by an SRVIO may be loose, meaning that the node | |||
| that owns the next listed Via Address is not necessarily a neighbor. | that owns the next listed Via Address is not necessarily a neighbor. | |||
| Without proper loop avoidance mechanisms, the interaction of loose | Without proper loop avoidance mechanisms, the interaction of loose | |||
| source routing and other mechanisms may effectively cause loops. In | source routing and other mechanisms may effectively cause loops. In | |||
| order to avoid those loops, if the router that installs a Projected | order to avoid those loops, if the router that installs a Projected | |||
| Route does not have a connected route (a direct adjacency) to the | Route does not have a connected route (a direct adjacency) to the | |||
| next soure routed hop and fails to locate it as a neighbor or a | next soure routed hop and fails to locate it as a neighbor or a | |||
| neighbor of a neighbor, then it MUST ensure that it has another | neighbor of a neighbor, then it MUST ensure that it has another | |||
| Projected Route to the next loose hop under the control of the same | Projected Route to the next loose hop under the control of the same | |||
| route computation system, otherwise the P-DAO is rejected. | route computation system, otherwise the P-DAO is rejected. | |||
| When forwarding a packet to a destination for which the router | When forwarding a packet to a destination for which the router | |||
| determines that routing happens via the Target, the router inserts | determines that routing happens via the Track Egress, the router | |||
| the source routing header in the packet to reach the Target. In | inserts the source routing header in the packet with the destination | |||
| order to add a source-routing header, the router encapsulates the | set to the Track Egress. In order to add a source-routing header, | |||
| packet with an IP-in-IP header and a Non-Storing Mode source routing | the router encapsulates the packet with an IP-in-IP header and a Non- | |||
| header (SRH) [RFC6554]. In the uncompressed form the source of the | Storing Mode source routing header (SRH) [RFC6554]. In the | |||
| packet would be self, the destination would be the first Via Address | uncompressed form the source of the packet would be self, the | |||
| in the SRVIO, and the SRH would contain the list of the remaining Via | destination would be the first Via Address in the SRVIO, and the SRH | |||
| Addresses and then the Target. | would contain the list of the remaining Via Addresses and then the | |||
| Track Egress. | ||||
| In the case of a loose source-routed path, there MUST be either a | In the case of a loose source-routed path, there MUST be either a | |||
| neighbor that is adjacent to the loose next hop, on which case the | neighbor that is adjacent to the loose next hop, on which case the | |||
| packet is forwarded to that neighbor, or a source-routed path to the | packet is forwarded to that neighbor, or a source-routed path to the | |||
| loose next hop; in the latter case, another encapsulation takes place | loose next hop; in the latter case, another encapsulation takes place | |||
| and the process possibly recurses; otherwise the packet is dropped. | and the process possibly recurses; otherwise the packet is dropped. | |||
| In practice, the router will normally use the "IPv6 over Low-Power | In practice, the router will normally use the "IPv6 over Low-Power | |||
| Wireless Personal Area Network (6LoWPAN) Paging Dispatch" [RFC8025] | Wireless Personal Area Network (6LoWPAN) Paging Dispatch" [RFC8025] | |||
| to compress the RPL artifacts as indicated in [RFC8138]. In that | to compress the RPL artifacts as indicated in [RFC8138]. In that | |||
| case, the router indicates self as encapsulator in an IP-in-IP 6LoRH | case, the router indicates self as encapsulator in an IP-in-IP 6LoRH | |||
| Header, and places the list of Via Addresses in the order of the VIO | Header, and places the list of Via Addresses in the order of the | |||
| and then the Target in the SRH 6LoRH Header. | SRVIO and then the Track Egress in the SRH 6LoRH Header. | |||
| 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. | |||
| 6.4. Storing-Mode Projected Route | 6.4. Storing Mode Projected Route | |||
| As illustrated in Figure 7, the Storing Mode route projection is used | As illustrated in Figure 8, the Storing Mode route projection is used | |||
| by the Root to install a routing state towards a Target in the | by the Root to install a routing state in the routers along a Segment | |||
| routers along a Segment between an ingress and an egress router; this | between an Ingress and an Egress router this enables the routers to | |||
| enables the routers to forward along that Segment any packet for | forward along that Segment any packet for which the next loose hop is | |||
| which the next loose hop is the said Target, for Instance a loose | the Egress node, for instance a loose source routed packet for which | |||
| source routed packet for which the next loose hop is the Target, or a | the next loose hop is the Egress node, or a packet for which the | |||
| packet for which the router has a routing state to the final | router has a routing state to the final destination via the Egress | |||
| destination via the Target. | node. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | ^ | | +-----+ | ^ | | |||
| | | DAO | ACK | | | | DAO | ACK | | |||
| o o o o | | | | o o o o | | | | |||
| o o o o o o o o o | ^ | Projected . | o o o o o o o o o | ^ | Projected . | |||
| o o o o o o o o o o | | DAO | Route . | o o o o o o o o o o | | DAO | Route . | |||
| o o o o o o o o o | ^ | . | o o o o o o o o o | ^ | . | |||
| o o o o o o o o v | DAO v . | o o o o o o o o v | DAO v . | |||
| o o LLN o o o | | o o LLN o o o | | |||
| o o o o o Loose Source Route Path | | o o o o o Loose Source Route Path | | |||
| o o o o From Root To Destination v | o o o o From Root To Destination v | |||
| Figure 7: Projecting a route | Figure 8: Projecting a route | |||
| In order to install the relevant routing state along the Segment | In order to install the relevant routing state along the Segment | |||
| between an ingress and an egress routers, the Root sends a unicast | between an ingress and an egress routers, the Root sends a unicast | |||
| P-DAO message to the egress router of the routing Segment that must | P-DAO message to the egress router of the routing Segment that must | |||
| be installed. The P-DAO message contains the ordered list of hops | be installed. The P-DAO message contains the ordered list of hops | |||
| along the Segment as a direct sequence of Via Information options | along the Segment as a direct sequence of Via Information options | |||
| that are preceded by one or more RPL Target options to which they | that are preceded by one or more RPL Target options to which they | |||
| relate. Each Via Information option contains a Segment Lifetime for | relate. Each Via Information option contains a Segment Lifetime for | |||
| which the state is to be maintained. | which the state is to be maintained. | |||
| The Root sends the P-DAO directly to the egress node of the Segment. | The Root sends the P-DAO directly to the egress node of the Segment. | |||
| In that P-DAO, the destination IP address matches the Via Address in | In that P-DAO, the destination IP address matches the last Via | |||
| the last VIO. This is how the egress recognizes its role. In a | Address in the VIO. This is how the egress recognizes its role. In | |||
| similar fashion, the ingress node recognizes its role as it matches | a similar fashion, the ingress node recognizes its role as it matches | |||
| Via Address in the first VIO. | first Via Address in the VIO. | |||
| The egress node of the Segment is the only node in the path that does | The Egress node of the Segment is the only node in the path that does | |||
| not install a route in response to the P-DAO; it is expected to be | not install a route in response to the P-DAO; it is expected to be | |||
| already able to route to the Target(s) on its own. It may either be | already able to route to the Target(s) on its own. It may either be | |||
| the Target, or may have some existing information to reach the | the Target, or may have some existing information to reach the | |||
| Target(s), such as a connected route or an already installed | Target(s), such as a connected route or an already installed | |||
| Projected Route. If one of the Targets cannot be located, the node | Projected Route. If one of the Targets cannot be located, the node | |||
| MUST answer to the Root with a negative DAO-ACK listing the Target(s) | 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 | that could not be located (suggested status 10 to be confirmed by | |||
| IANA). | IANA). | |||
| If the egress node can reach all the Targets, then it forwards the | If the egress node can reach all the Targets, then it forwards the | |||
| skipping to change at page 20, line 19 ¶ | skipping to change at page 21, line 25 ¶ | |||
| indicated in the P-DAO, but in the reverse order, from egress to | indicated in the P-DAO, but in the reverse order, from egress to | |||
| ingress. | ingress. | |||
| The address of the predecessor to be used as destination of the | The address of the predecessor to be used as destination of the | |||
| propagated DAO message is found in the Via Information option the | propagated DAO message is found in the Via Information option the | |||
| precedes the one that contain the address of the propagating node, | precedes the one that contain the address of the propagating node, | |||
| which is used as source of the packet. | which is used as source of the packet. | |||
| Upon receiving a propagated DAO, an intermediate router as well as | Upon receiving a propagated DAO, an intermediate router as well as | |||
| the ingress router install a route towards the DAO Target(s) via its | the ingress router install a route towards the DAO Target(s) via its | |||
| successor in the P-DAO; the router locates the VIO that contains its | successor in the P-DAO; the router locates its address in the VIO, | |||
| address, and uses as next hop the address found in the Via Address | and uses as next hop the address found in the previous Via Address | |||
| field in the following VIO. The router MAY install additional routes | field in the VIO. The router MAY install additional routes towards | |||
| towards the addresses that are located in VIOs that are after the | the VIA Addresses that are the VIO after the next one, if any, but in | |||
| next one, if any, but in case of a conflict or a lack of resource, a | case of a conflict or a lack of resource, the route(s) to the | |||
| route to a Target installed by the Root has precedence. | Target(s) have precedence. | |||
| The process recurses till the P-DAO is propagated to ingress router | The process recurses till the P-DAO is propagated to ingress router | |||
| of the Segment, which answers with a DAO-ACK to the Root. | of the Segment, which answers with a DAO-ACK to the Root. | |||
| Also, the path indicated in a P-DAO may be loose, in which case the | Also, the path indicated in a P-DAO may be loose, in which case the | |||
| reachability to the next hop has to be asserted. Each router along | reachability to the next hop has to be asserted. Each router along | |||
| the path indicated in a P-DAO is expected to be able to reach its | the path indicated in a P-DAO is expected to be able to reach its | |||
| successor, either with a connected route (direct neighbor), or by | successor, either with a connected route (direct neighbor), or by | |||
| routing, for Instance following a route installed previously by a DAO | routing, for Instance following a route installed previously by a DAO | |||
| or a P-DAO message. If that route is not connected then a recursive | or a P-DAO message. If that route is not connected then a recursive | |||
| skipping to change at page 27, line 4 ¶ | skipping to change at page 28, line 6 ¶ | |||
| 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-40, | Progress, Internet-Draft, draft-ietf-roll-useofrplinfo-40, | |||
| 25 June 2020, <https://tools.ietf.org/html/draft-ietf- | 25 June 2020, <https://tools.ietf.org/html/draft-ietf- | |||
| roll-useofrplinfo-40>. | roll-useofrplinfo-40>. | |||
| [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 8. | uses the Non-Storing Mode of Operation as represented in Figure 9. | |||
| 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 27, line 30 ¶ | skipping to change at page 28, line 33 ¶ | |||
| +-----+ ^ | | | +-----+ ^ | | | |||
| | | DAO | ACK | | | | DAO | ACK | | |||
| o o o o | | | Strict | o o o o | | | Strict | |||
| o o o o o o o o o | | | Source | o o o o o o o o o | | | Source | |||
| o o o o o o o o o o | | | Route | o o o o o o o o o o | | | Route | |||
| o o o o o o o o o | | | | o o o o o o o o o | | | | |||
| o o o o o o o o | v v | o o o o o o o o | v v | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 8: RPL Non-Storing Mode of operation | Figure 9: 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 28, line 36 ¶ | skipping to change at page 29, line 36 ¶ | |||
| effectively become loose. | effectively 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 9: | illustrated in Figure 10: | |||
| * 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 29, line 29 ¶ | skipping to change at page 30, line 29 ¶ | |||
| +-----+ | +-----+ | |||
| 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 9: Routing Stretch between S and D via common parent X | Figure 10: 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 30, line 21 ¶ | skipping to change at page 31, line 21 ¶ | |||
| +-----+ | +-----+ | |||
| | | | | |||
| o o o o | o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| o o o o o o o o o o | o o o o o o o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| S>>A>>>B>>C>>>D o o o | S>>A>>>B>>C>>>D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 10: Projected Transversal Route | Figure 11: Projected Transversal Route | |||
| This specification enables to store source-routed or Storing Mode | This specification enables to store source-routed or Storing Mode | |||
| state in intermediate routers, which enables to limit the stretch of | state in intermediate routers, which enables to limit the stretch of | |||
| a P2P route and maintain the characteristics within a given SLA. An | a P2P route and maintain the characteristics within a given SLA. An | |||
| example of service using this mechanism oculd be a control loop that | example of service using this mechanism oculd be a control loop that | |||
| would be installed in a network that uses classical RPL for | would be installed in a network that uses classical RPL for | |||
| asynchronous data collection. In that case, the P2P path may be | asynchronous data collection. In that case, the P2P path may be | |||
| installed in a different RPL Instance, with a different objective | installed in a different RPL Instance, with a different objective | |||
| function. | function. | |||
| Appendix B. Examples | Appendix B. Examples | |||
| B.1. Using Storing Mode P-DAO in Non-Storing Mode MOP | B.1. Using Storing Mode P-DAO in Non-Storing Mode MOP | |||
| In Non-Storing Mode, the DAG Root maintains the knowledge of the | In Non-Storing Mode, the DAG Root maintains the knowledge of the | |||
| whole DODAG topology, so when both the source and the destination of | whole DODAG topology, so when both the source and the destination of | |||
| a packet are in the DODAG, the Root can determine the common parent | a packet are in the DODAG, the Root can determine the common parent | |||
| that would have been used in Storing Mode, and thus the list of nodes | that would have been used in Storing Mode, and thus the list of nodes | |||
| in the path between the common parent and the destination. For | in the path between the common parent and the destination. For | |||
| Instance in the diagram shown in Figure 11, if the source is node 41 | Instance in the diagram shown in Figure 12, if the source is node 41 | |||
| and the destination is node 52, then the common parent is node 22. | and the destination is node 52, then the common parent is node 22. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | \ \____ | | \ \____ | |||
| skipping to change at page 31, line 26 ¶ | skipping to change at page 32, line 26 ¶ | |||
| o 22 o 23 o 24 o 25 | o 22 o 23 o 24 o 25 | |||
| / \ | \ \ | / \ | \ \ | |||
| o 31 o 32 o o o 35 | o 31 o 32 o o o 35 | |||
| / / | \ | \ | / / | \ | \ | |||
| o 41 o 42 o o o 45 o 46 | o 41 o 42 o o o 45 o 46 | |||
| | | | | \ | | | | | | \ | | |||
| o 51 o 52 o 53 o o 55 o 56 | o 51 o 52 o 53 o o 55 o 56 | |||
| LLN | LLN | |||
| Figure 11: Example DODAG forming a logical tree topology | Figure 12: Example DODAG forming a logical tree topology | |||
| With this draft, the Root can install a Storing Mode routing states | With this draft, the Root can install a Storing Mode routing states | |||
| along a Segment that is either from itself to the destination, or | along a Segment that is either from itself to the destination, or | |||
| from one or more common parents for a particular source/destination | from one or more common parents for a particular source/destination | |||
| pair towards that destination (in this particular example, this would | pair towards that destination (in this particular example, this would | |||
| be the Segment made of nodes 22, 32, 42). | be the Segment made of nodes 22, 32, 42). | |||
| In the example below, say that there is a lot of traffic to nodes 55 | In the example below, say that there is a lot of traffic to nodes 55 | |||
| and 56 and the Root decides to reduce the size of routing headers to | and 56 and the Root decides to reduce the size of routing headers to | |||
| those destinations. The Root can first send a DAO to node 45 | those destinations. The Root can first send a DAO to node 45 | |||
| skipping to change at page 31, line 48 ¶ | skipping to change at page 32, line 48 ¶ | |||
| DAO to node 46 indicating Target 56 and a Via Segment (35, 46). This | DAO to node 46 indicating Target 56 and a Via Segment (35, 46). This | |||
| will save one entry in the routing header on both sides. The Root | will save one entry in the routing header on both sides. The Root | |||
| may then send a DAO to node 35 indicating Targets 55 and 56 a Via | may then send a DAO to node 35 indicating Targets 55 and 56 a Via | |||
| Segment (13, 24, 35) to fully optimize that path. | Segment (13, 24, 35) to fully optimize that path. | |||
| Alternatively, the Root may send a DAO to node 45 indicating Target | Alternatively, the Root may send a DAO to node 45 indicating Target | |||
| 55 and a Via Segment (13, 24, 35, 45) and then a DAO to node 46 | 55 and a Via Segment (13, 24, 35, 45) and then a DAO to node 46 | |||
| indicating Target 56 and a Via Segment (13, 24, 35, 46), indicating | indicating Target 56 and a Via Segment (13, 24, 35, 46), indicating | |||
| the same DAO Sequence. | the same DAO Sequence. | |||
| B.2. Projecting a storing-mode transversal route | B.2. Projecting a Storing Mode transversal route | |||
| In this example, say that a PCE determines that a path must be | In this example, say that a PCE determines that a path must be | |||
| installed between node S and node D via routers A, B and C, in order | installed between node I and node D via routers A, B and E, in order | |||
| to serve the needs of a particular application. | to serve the needs of a particular application. | |||
| The Root sends a P-DAO with a Target option indicating the | The Root sends a P-DAO to node E, with an RTO indicating the | |||
| destination D and a sequence Via Information option, one for S, which | destination D, a TIO optionally indicating the Track Egress in the | |||
| is the ingress router of the Segment, one for A and then for B, which | Parent Address field, and a sequence of Via Information options | |||
| are an intermediate routers, and one for C, which is the egress | indicating the hops, one for S, which is the ingress router of the | |||
| router. | Segment, one for A, and then one for B, which are respectively the | |||
| intermediate and penultimate routers. | ||||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | P-DAO message to C | | P-DAO message to C | |||
| o | o o | o | o o | |||
| o o o | o o o o o | o o o | o o o o o | |||
| o o o | o o o o o o | o o o | o o o o o o | |||
| o o V o o o o o o | o o V o o o o o o | |||
| S A B C D o o o | S A B E D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 12: P-DAO from Root | Figure 13: P-DAO from Root | |||
| Upon reception of the P-DAO, C validates that it can reach D, e.g. | Upon reception of the P-DAO, C validates that it can reach D, e.g. | |||
| using IPv6 Neighbor Discovery, and if so, propagates the P-DAO | using IPv6 Neighbor Discovery, and if so, propagates the P-DAO | |||
| unchanged to B. | unchanged to B. | |||
| B checks that it can reach C and of so, installs a route towards D | B checks that it can reach C and of so, installs a route towards D | |||
| via C. Then it propagates the P-DAO to A. | via C. Then it propagates the P-DAO to A. | |||
| The process recurses till the P-DAO reaches S, the ingress of the | The process recurses till the P-DAO reaches S, the ingress of the | |||
| Segment, which installs a route to D via A and sends a DAO-ACK to the | Segment, which installs a route to D via A and sends a DAO-ACK to the | |||
| skipping to change at page 33, line 21 ¶ | skipping to change at page 34, line 21 ¶ | |||
| +-----+ | +-----+ | |||
| ^ P-DAO-ACK from S | ^ P-DAO-ACK from S | |||
| / o o o | / o o o | |||
| / o o o o o o o | / o o o o o o o | |||
| | o o o o o o o o o | | o o o o o o o o o | |||
| | o o o o o o o o | | o o o o o o o o | |||
| S A B C D o o o | S A B C D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 13: P-DAO-ACK to Root | Figure 14: P-DAO-ACK to Root | |||
| As a result, a transversal route is installed that does not need to | As a result, a transversal route is installed that does not need to | |||
| follow the DODAG structure. | follow the DODAG structure. | |||
| ------+--------- | ------+--------- | |||
| | Internet | | Internet | |||
| | | | | |||
| +-----+ | +-----+ | |||
| | | Border Router | | | Border Router | |||
| | | (RPL Root) | | | (RPL Root) | |||
| +-----+ | +-----+ | |||
| | | | | |||
| o o o o | o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| o o o o o o o o o o | o o o o o o o o o o | |||
| o o o o o o o o o | o o o o o o o o o | |||
| S>>A>>>B>>C>>>D o o o | S>>A>>>B>>C>>>D o o o | |||
| o o o o | o o o o | |||
| LLN | LLN | |||
| Figure 14: Projected Transversal Route | Figure 15: Projected Transversal Route | |||
| Authors' Addresses | Authors' Addresses | |||
| Pascal Thubert (editor) | Pascal Thubert (editor) | |||
| Cisco Systems, Inc | Cisco Systems, Inc | |||
| Building D | Building D | |||
| 45 Allee des Ormes - BP1200 | 45 Allee des Ormes - BP1200 | |||
| 06254 Mougins - Sophia Antipolis | 06254 Mougins - Sophia Antipolis | |||
| France | France | |||
| Phone: +33 497 23 26 34 | Phone: +33 497 23 26 34 | |||
| End of changes. 88 change blocks. | ||||
| 307 lines changed or deleted | 378 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/ | ||||