| < draft-ietf-roll-useofrplinfo-02.txt | draft-ietf-roll-useofrplinfo-03.txt > | |||
|---|---|---|---|---|
| ROLL Working Group M. Robles | ROLL Working Group M. Robles | |||
| Internet-Draft Ericsson | Internet-Draft Ericsson | |||
| Intended status: Informational M. Richardson | Intended status: Informational M. Richardson | |||
| Expires: September 22, 2016 SSW | Expires: October 6, 2016 SSW | |||
| P. Thubert | P. Thubert | |||
| Cisco | Cisco | |||
| March 21, 2016 | April 4, 2016 | |||
| When to use RFC 6553, 6554 and IPv6-in-IPv6 | When to use RFC 6553, 6554 and IPv6-in-IPv6 | |||
| draft-ietf-roll-useofrplinfo-02 | draft-ietf-roll-useofrplinfo-03 | |||
| Abstract | Abstract | |||
| This document states different cases where RFC 6553, RFC 6554 and | This document looks at different data flows through LLN networks | |||
| IPv6-in-IPv6 encapsulation is required to set the bases to help | where RPL is used to establish routing. The document enumerates the | |||
| defining the compression of RPL routing information in LLN | cases where RFC 6553, RFC 6554 and IPv6-in-IPv6 encapsulation is | |||
| environments. | required. This analysis provides the basis on which to design | |||
| efficient compression of these headers. | ||||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 September 22, 2016. | This Internet-Draft will expire on October 6, 2016. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 2, line 14 ¶ | skipping to change at page 2, line 15 ¶ | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. Terminology and Requirements Language . . . . . . . . . . . . 3 | 2. Terminology and Requirements Language . . . . . . . . . . . . 3 | |||
| 3. Sample/reference topology . . . . . . . . . . . . . . . . . . 3 | 3. Sample/reference topology . . . . . . . . . . . . . . . . . . 3 | |||
| 4. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 5.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 8 | 5.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 9 | |||
| 5.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 9 | 5.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 10 | |||
| 5.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 10 | 5.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 10 | |||
| 5.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 10 | 5.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 11 | |||
| 5.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 11 | 5.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 12 | |||
| 5.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 11 | 5.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 12 | |||
| 5.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 12 | 5.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 13 | |||
| 5.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 13 | 5.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 14 | |||
| 5.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 14 | 5.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 14 | |||
| 5.10. Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf 15 | 5.10. Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf 15 | |||
| 5.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 17 | 5.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 17 | |||
| 5.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | 5.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 18 | |||
| 6. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 19 | 6. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 6.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 19 | 6.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 19 | |||
| 6.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 20 | 6.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 20 | |||
| 6.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 20 | 6.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 20 | |||
| 6.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 21 | 6.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 21 | |||
| 6.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 21 | 6.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 22 | |||
| 6.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 22 | 6.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 22 | |||
| 6.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 23 | 6.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 23 | |||
| 6.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 24 | 6.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 23 | |||
| 6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 25 | 6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 24 | |||
| 6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf 26 | 6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf 25 | |||
| 6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 27 | 6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 26 | |||
| 6.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | 6.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware- | |||
| leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7. Problem statement . . . . . . . . . . . . . . . . . . . . . . 28 | 7. Observations about the problem . . . . . . . . . . . . . . . 27 | |||
| 8. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 29 | 7.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 7.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 28 | ||||
| 8. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 28 | ||||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 29 | |||
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 29 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 12.1. Normative References . . . . . . . . . . . . . . . . . . 29 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 29 | |||
| 12.2. Informative References . . . . . . . . . . . . . . . . . 30 | 12.2. Informative References . . . . . . . . . . . . . . . . . 30 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 1. Introduction | 1. Introduction | |||
| RPL [RFC6550] is a routing protocol for constrained networks. RFC | RPL [RFC6550] is a routing protocol for constrained networks. RFC | |||
| 6553 [RFC6553] defines the "RPL option", carried within the IPv6 Hop- | 6553 [RFC6553] defines the "RPL option" (RPI), carried within the | |||
| by-Hop header to quickly identify inconsistencies in the routing | IPv6 Hop-by-Hop header to quickly identify inconsistencies (loops) in | |||
| topology. RFC 6554 [RFC6554] defines the "RPL Source Route Header", | the routing topology. RFC 6554 [RFC6554] defines the "RPL Source | |||
| an IPv6 Extension Header to deliver datagrams within a RPL routing | Route Header" (RH3), an IPv6 Extension Header to deliver datagrams | |||
| domain. | within a RPL routing domain, particularly in non-storing mode. | |||
| Several discussions in the ROLL/6lo/6TiSCH Mailing Lists took place | These various items are referred to as RPL artifacts, and they are | |||
| focusing in the definition of how to compress RPL Information in | seen on all of the data-plane traffic that occurs in RPL routed | |||
| constrained environment. ROLL Virtual Interim Meeting (02-2015) | networks; they do not in general appear on the RPL control plane | |||
| concluded that there is a need to define how to use [RFC6553], | traffic at all which is mostly hop-by-hop traffic (one exception | |||
| [RFC6554] and IPv6-in-IPv6 encapsulation to be able to set the | being DAO messages in non-storing mode). | |||
| correct environment for compression A Routing Header Dispatch for | ||||
| 6LoWPAN (6LoRH) [I-D.ietf-6lo-routing-dispatch] defines a method to | ||||
| compress RPL Option information and Routing Header type 3 (RFC6554) | ||||
| and an efficient IP-in-IP technique. Uses cases proposed for the | ||||
| [Second6TischPlugtest] involving 6loRH: When the packet travel inside | ||||
| the RPL domain, the IP in IP 6LoRH is not be presented in the packet | ||||
| and when the packet travel outside a RPL domain, Ip in IP 6LoRH is | ||||
| present in the packet. | ||||
| This document is going to be focused in data plane messages and how | It has become clear from attempts to do multi-vendor | |||
| can be transmitted within the above mentioned RFCs. | interoperability, and from a desire to compress as many of the above | |||
| artifacts as possible that not all implementors agree when artifacts | ||||
| are necessary, or when they can be safely omitted, or removed. | ||||
| An interim meeting went through the 24 cases defined here to discover | ||||
| if there were any shortcuts, and this document is the result of that | ||||
| discussion. This document should not be defining anything new, but | ||||
| it may clarify what is correct and incorrect behaviour. | ||||
| The related document A Routing Header Dispatch for 6LoWPAN (6LoRH) | ||||
| [I-D.ietf-roll-routing-dispatch] defines a method to compress RPL | ||||
| Option information and Routing Header type 3 (RFC6554) and an | ||||
| efficient IP-in-IP technique. Uses cases proposed for the | ||||
| [Second6TischPlugtest] involving 6loRH. | ||||
| 2. Terminology and Requirements Language | 2. Terminology and 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", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
| Terminology defined in [RFC7102] | Terminology defined in [RFC7102] | |||
| 3. Sample/reference topology | 3. Sample/reference topology | |||
| skipping to change at page 5, line 10 ¶ | skipping to change at page 5, line 10 ¶ | |||
| | | | | | | |||
| +--------------+ | +--------------+ | |||
| Figure 1: RPL Stack. | Figure 1: RPL Stack. | |||
| +---------+ | +---------+ | |||
| +---+Internet | | +---+Internet | | |||
| | +---------+ | | +---------+ | |||
| | | | | |||
| +----+--+ | +----+--+ | |||
| |DODAG | | |DODAG | node:01 | |||
| +---------+Root +----------+ | +---------+Root +----------+ | |||
| | |6LBR | | | | |6LBR | | | |||
| | +----+--+ | | | +----+--+ | | |||
| | | | | | | | | |||
| | | | | | | | | |||
| ... ... ... | ... ... ... | |||
| | | | | | | | | |||
| +-----+-+ +--+---+ +--+---+ | +-----+-+ +--+---+ +--+---+ | |||
| |6LR | | | | | | |6LR | | | | | | |||
| +-----+ | | | | | | +-----+ | | | | | | |||
| | | | | | | +------+ | | | 11 | | 12 | | 13 +------+ | |||
| | +-----+-+ +-+----+ +-+----+ | | | +-----+-+ +-+----+ +-+----+ | | |||
| | | | | | | | | | | | | |||
| | | | | | | | | | | | | |||
| | | | | | | | 21 | 22 | 23 | 24 | 25 | |||
| +-+---+ +-+---+ +--+--+ +- --+ +---+-+ | +-+---+ +-+---+ +--+--+ +- --+ +---+-+ | |||
| |Leaf | | | | | | | | | | |Leaf | | | | | |Leaf| |Leaf | | |||
| |6LN | | | | | | | | | | | 6LR | | | | | | 6LN| | 6LR | | |||
| +-----+ +-----+ +-----+ +----+ +-----+ | +-----+ +-----+ +-----+ +----+ +-----+ | |||
| Figure 2: A reference RPL Topology. | Figure 2: A reference RPL Topology. | |||
| The numbers in or above the nodes are there so that they may be | ||||
| referenced in subsequent sections. The leaf marked 6LN (24) is a | ||||
| device which does not speak RPL at all, but uses Router- | ||||
| Advertisements, 6LowPAN DAR/DAC and efficient-ND only to participate | ||||
| in the network. | ||||
| This document is in part motivated by the work that is ongoing at the | This document is in part motivated by the work that is ongoing at the | |||
| 6TiSCH working group. The 6TiSCH architecture | 6TiSCH working group. The 6TiSCH architecture | |||
| [I-D.ietf-6tisch-architecture] draft explains the network | [I-D.ietf-6tisch-architecture] draft explains the network | |||
| architecture of a 6TiSCH network. This architecture is used for the | architecture of a 6TiSCH network. This architecture is used for the | |||
| remainder of this document. | remainder of this document. | |||
| The scope of the 6TiSCH Architecture is a Backbone Link that | The scope of the 6TiSCH Architecture is a Backbone Link that | |||
| federates multiple LLNs (mesh) as a single IPv6 Multi-Link Subnet. | federates multiple LLNs (mesh) as a single IPv6 Multi-Link Subnet. | |||
| Each LLN in the subnet is anchored at a Backbone Router (6BBR). The | Each LLN in the subnet is anchored at a Backbone Router (6BBR). The | |||
| Backbone Routers interconnect the LLNs over the Backbone Link and | Backbone Routers interconnect the LLNs over the Backbone Link and | |||
| skipping to change at page 6, line 36 ¶ | skipping to change at page 6, line 38 ¶ | |||
| <----------------------- RPL Instance ------------------------> | <----------------------- RPL Instance ------------------------> | |||
| Figure 3: RPL domain architecture | Figure 3: RPL domain architecture | |||
| 4. Use cases | 4. Use cases | |||
| In data plane context a combination of RFC6553, RFC6554 and IPv6-in- | In data plane context a combination of RFC6553, RFC6554 and IPv6-in- | |||
| IPv6 encapsulation is going to be analyzed for the following traffic | IPv6 encapsulation is going to be analyzed for the following traffic | |||
| flows: | flows: | |||
| -Flow from RPL-aware-leaf to root | RPL-aware-leaf to root | |||
| -Flow from root to RPL-aware-leaf | root to RPL-aware-leaf | |||
| -Flow from not-RPL-aware-leaf to root | not-RPL-aware-leaf to root | |||
| -Flow from root to not-RPL-aware-leaf | root to not-RPL-aware-leaf | |||
| -Flow from RPL-aware-leaf to Internet | RPL-aware-leaf to Internet | |||
| -Flow from Internet to RPL-aware-leaf | Internet to RPL-aware-leaf | |||
| not-RPL-aware-leaf to Internet | ||||
| -Flow from not-RPL-aware-leaf to Internet | Internet to not-RPL-aware-leaf | |||
| -Flow from Internet to not-RPL-aware-leaf | RPL-aware-leaf to RPL-aware-leaf | |||
| -Flow from RPL-aware-leaf to RPL-aware-leaf | ||||
| -Flow from RPL-aware-leaf to not-RPL-aware-leaf | RPL-aware-leaf to not-RPL-aware-leaf | |||
| -Flow from not-RPL-aware-leaf to RPL-aware-leaf | not-RPL-aware-leaf to RPL-aware-leaf | |||
| -Flow from not-RPL-aware-leaf to not-RPL-aware-leaf | not-RPL-aware-leaf to not-RPL-aware-leaf | |||
| This document assumes a rule that a Header cannot be inserted or | This document assumes a rule that a Header cannot be inserted or | |||
| removed on the fly inside an IPv6 packet that is being routed. | removed on the fly inside an IPv6 packet that is being routed. This | |||
| is a fundamental precept of the IPv6 architecture as outlined in | ||||
| [RFC2460] is that Extensions may not be added or removed except by | ||||
| the sender or the receiver. | ||||
| - This means that an intermediate router that needs to add a header | A second important thing is that packets with a Hop-by-Hop option | |||
| must encapsulate the packet in an outer IP header where the new | which are marked with option type 01 ([RFC2460] section 4.2) must be | |||
| header can be placed. | discarded if received by a host or router which does not understand | |||
| that option. This means that in general, any packet that leaves the | ||||
| RPL domain of an LLN (or leaves the LLN entirely) is likely to be | ||||
| discarded if it still contains an [RFC6553] RPL Option Header known | ||||
| as the RPI. | ||||
| - This also means that a Header can only be removed by an | The combination of these two rules means that the arrangement of | |||
| intermediate router if it is placed in an encapsulating IPv6 Header, | headers must be done so that traffic intended to exit the RPL domain | |||
| and in that case, the whole encapsulating header must be removed - a | can have the RPI option removed prior to leaving the RPL domain. | |||
| replacement may be added. | ||||
| This document recognizes that some headers such as a Routing Header | An intermediate router that needs to add a header must encapsulate | |||
| or a Hop-by-Hop header may be modified by routers on the path of the | the packet in an (additional) outer IP header where the new header | |||
| packet without the need to add to remove an encapsulating header. | can be placed. | |||
| The RPL RH and the RPL option are mutable but recoverable . | This also means that a Header can only be removed by an intermediate | |||
| router if it is placed in an encapsulating IPv6 Header, and in that | ||||
| case, the whole encapsulating header must be removed - a replacement | ||||
| may be added. Further, an intermediate router can only remove such | ||||
| an outer header if that outer header has the router as the | ||||
| destination! | ||||
| RPI should be present in every single RPL data packet. There is an | Both RPI and RH3 headers may be modified by routers on the path of | |||
| exception in non-storing mode, when a packet is going down from the | the packet without the need to add to remove an encapsulating header. | |||
| route: the entire route is written, so there are no loops of | Both headers were designed with this modification in mind, and both | |||
| confusion about which table to use (purpose of instanceID). | the RPL RH and the RPL option are marked mutable but recoverable, so | |||
| an IPsec AH security header can be applied across these headers, but | ||||
| it may not secure all the values in those headers. | ||||
| RPI should be present in every single RPL data packet. There is one | ||||
| exception in non-storing mode: when a packet is going down from the | ||||
| route. In a downward non-storing mode, the entire route is written, | ||||
| so there can be no loops by construction, nor any confusion about | ||||
| which forwarding table to use. There may be cases (such as in | ||||
| 6tisch) where the instanceID may still be needed to pick an | ||||
| appropriate priority or channel at each hop. | ||||
| The applicability for storing (RPL-SN) and non-Storing (RPL-NSN) | The applicability for storing (RPL-SN) and non-Storing (RPL-NSN) | |||
| modes for the previous cases is showed as follows: | modes for the previous cases is showed as follows: | |||
| +---------------+------+------+---------+--------+--------+---------+ | In tables, the term "RPL aware leaf" is has been shortened to "Raf", | |||
| | Use Case | RPL- | RPL- | RPL-SN | RPL- | RPL- | RPL-NSN | | and "not-RPL aware leaf" has been shortened to "~Raf" to make the | |||
| | | SN | SN | IP-in- | NSN | NSN | IP-in- | | table fit in available space. | |||
| | | RPI | RH3 | IP | RPI | RH3 | IP | | ||||
| | | (RFC | (RFC | | | | | | ||||
| | | 6553 | 6554 | | | | | | ||||
| | | ) | ) | | | | | | ||||
| +---------------+------+------+---------+--------+--------+---------+ | ||||
| | RPL-aware- | Yes | No | No | Yes | No | No | | ||||
| | leaf to root | | | | | | | | ||||
| | root to RPL- | Yes | No | No | Yes | Yes | No | | ||||
| | aware-leaf | | | | | | | | ||||
| | not-RPL- | Yes | No | Yes | Yes | No | Yes | | ||||
| | aware-leaf to | | | | | | | | ||||
| | root | | | | | | | | ||||
| | root to not- | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | RPL-aware- | | | | | | | | ||||
| | leaf | | | | | | | | ||||
| | RPL-aware- | Yes | No | Yes | Yes | No | Yes | | ||||
| | leaf to | | | | | | | | ||||
| | Internet | | | | | | | | ||||
| | Internet to | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | RPL-aware- | | | | | | | | ||||
| | leaf | | | | | | | | ||||
| | not-RPL- | Yes | No | Yes | Yes | No | Yes | | ||||
| | aware-leaf to | | | | | | | | ||||
| | Internet | | | | | | | | ||||
| | Internet to | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | not-RPL- | | | | | | | | ||||
| | aware-leaf | | | | | | | | ||||
| | RPL-aware- | Yes | No | No | Yes | Yes | Yes | | ||||
| | leaf to RPL- | | | | | | | | ||||
| | aware-leaf | | | | | | | | ||||
| | RPL-aware- | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | leaf to not- | | | | | | | | ||||
| | RPL-aware- | | | | | | | | ||||
| | leaf | | | | | | | | ||||
| | not-RPL- | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | aware-leaf to | | | | | | | | ||||
| | RPL-aware- | | | | | | | | ||||
| | leaf | | | | | | | | ||||
| | not-RPL- | Yes | No | Yes | Yes | Yes | Yes | | ||||
| | aware-leaf to | | | | | | | | ||||
| | not-RPL- | | | | | | | | ||||
| | aware-leaf | | | | | | | | ||||
| +---------------+------+------+---------+--------+--------+---------+ | ||||
| Table 1: Posibility to transmit in Storing or Non-Storing mode: RPI, | The earlier examples are more complete to make sure that the process | |||
| RH3, IP-in-IP encapsulation | is clear, while later examples are more consise. | |||
| 5. Storing mode | 5. Storing mode | |||
| This table summarizes what headers are needed in the following | ||||
| scenarios, and indicates the IPIP header must be inserted on a hop- | ||||
| by-hop basis, and when it can target the destination node directly. | ||||
| There are three possible situations: hop-by-hop necessary (indicated | ||||
| by "hop"), or destination address possible (indicated by "dst"). In | ||||
| all cases hop by hop can be used. In cases where no IPIP header is | ||||
| needed, the column is left blank. | ||||
| +---------------+--------------+--------------+----------+----------+ | ||||
| | Use Case | RPI (RFC | RH3 (RFC | IP-in-IP | IPIP dst | | ||||
| | | 6553) | 6554) | | | | ||||
| +---------------+--------------+--------------+----------+----------+ | ||||
| | Raf to root | Yes | No | No | -- | | ||||
| | root to Raf | Yes | No | No | -- | | ||||
| | root to ~Raf | Yes | No | Yes | hop | | ||||
| | ~Raf to root | Yes | No | Yes | root | | ||||
| | Raf to | Yes | No | Yes | root | | ||||
| | Internet | | | | | | ||||
| | Internet to | Yes | No | Yes | raf | | ||||
| | Raf | | | | | | ||||
| | ~Raf to | Yes | No | Yes | root | | ||||
| | Internet | | | | | | ||||
| | Internet to | Yes | No | Yes | hop | | ||||
| | ~Raf | | | | | | ||||
| | Raf to Raf | Yes | No | No | -- | | ||||
| | Raf to ~Raf | Yes | No | Yes | hop | | ||||
| | ~Raf to Raf | Yes | No | Yes | dst | | ||||
| | ~Raf to ~Raf | Yes | No | Yes | hop | | ||||
| +---------------+--------------+--------------+----------+----------+ | ||||
| Table 1: Headers needed in Storing mode: RPI, RH3, IP-in-IP | ||||
| encapsulation | ||||
| 5.1. Example of Flow from RPL-aware-leaf to root | 5.1. Example of Flow from RPL-aware-leaf to root | |||
| As states in Section 16.2 of [RFC6550] a RPL-aware-leaf node does | As states in Section 16.2 of [RFC6550] a RPL-aware-leaf node does | |||
| not generally issue DIO messages, a leaf node accepts DIO messages | not generally issue DIO messages; a leaf node accepts DIO messages | |||
| (In inconsistency a leaf node generates DIO with infinite rank, to | from upstream. (When the inconsistency in routing occurs, a leaf | |||
| fix it). It may issue DAO and DIS messages though it generally | node will generate a DIO with an infinite rank, to fix it). It may | |||
| ignores DAO and DIS messages. | issue DAO and DIS messages though it generally ignores DAO and DIS | |||
| messages. | ||||
| In storing mode is suitable the use of RFC 6553 to send RPL | In storing mode, it is suitable to use RFC 6553 (RPI) to send RPL | |||
| Information through HBH field checking the routing table to find out | Information instanceID and rank information. | |||
| where to send the message. | ||||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR --> 6LR,... --> root (6LBR) Note: In | RPL-aware-leaf (6LN) --> 6LR --> 6LR,... --> root (6LBR) | |||
| this document 6LRs, 6LBR are always full-fledge RPL routers | ||||
| Note: In this document 6LRs, 6LBR are always full-fledge RPL routers, | ||||
| and are the RPL root node. | ||||
| The 6LN inserts the RPI header, and send the packet to 6LR which | The 6LN inserts the RPI header, and send the packet to 6LR which | |||
| decrement the rank in RPI and send the packet up. When the packet | decrement the rank in RPI and send the packet up. When the packet | |||
| arrives to 6LBR, the RPI is removed and the packet is processed. | arrives to 6LBR, the RPI is removed and the packet is processed. | |||
| The RPI header can be removed by the 6LBR because the packet is | ||||
| addressed to the 6LBR. The 6LN must know that it is communicating | ||||
| with the 6LBR in order to be able to make use of this scenario. The | ||||
| 6LN can know the address of the 6LBR because it knows the address of | ||||
| the root via the DODAGID in the DIO messages. | ||||
| +-------------------+-----+------+------+ | +-------------------+-----+------+------+ | |||
| | Header | 6LN | 6LR | 6LBR | | | Header | 6LN | 6LR | 6LBR | | |||
| +-------------------+-----+------+------+ | +-------------------+-----+------+------+ | |||
| | Inserted headers | RPI | -- | -- | | | Inserted headers | RPI | -- | -- | | |||
| | Removed headers | -- | -- | RPI | | | Removed headers | -- | -- | RPI | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RPI | -- | | | Modified headers | -- | RPI | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+-----+------+------+ | +-------------------+-----+------+------+ | |||
| skipping to change at page 9, line 40 ¶ | skipping to change at page 10, line 33 ¶ | |||
| 5.2. Example of Flow from root to RPL-aware-leaf | 5.2. Example of Flow from root to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) | root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) | |||
| In this case the 6LBR insert RPI header and send the packet down, the | In this case the 6LBR insert RPI header and send the packet down, the | |||
| 6LR is going to increment the rank in RPI (examines instanceID for | 6LR is going to increment the rank in RPI (examines instanceID for | |||
| multiple tables), the packet is processed in 6LN and RPI removed. | multiple tables), the packet is processed in 6LN and RPI removed. | |||
| No IPIP header is required. | ||||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| | Header | 6LBR | 6LR | 6LN | | | Header | 6LBR | 6LR | 6LN | | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| | Inserted headers | RPI | -- | -- | | | Inserted headers | RPI | -- | -- | | |||
| | Removed headers | -- | -- | RPI | | | Removed headers | -- | -- | RPI | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RPI | -- | | | Modified headers | -- | RPI | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| skipping to change at page 10, line 10 ¶ | skipping to change at page 11, line 4 ¶ | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+------+-------+------+ | +-------------------+------+-------+------+ | |||
| Storing: Summary of the use of headers from root to RPL-aware-leaf | Storing: Summary of the use of headers from root to RPL-aware-leaf | |||
| 5.3. Example of Flow from root to not-RPL-aware-leaf | 5.3. Example of Flow from root to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR)--> 6LR --> not-RPL-aware-leaf (6LN) | root (6LBR)--> 6LR --> not-RPL-aware-leaf (6LN) | |||
| It includes IPv6-in-IPv6 encapsulation to transmit information not | It includes IPv6-in-IPv6 encapsulation to transmit information not | |||
| related with the RPL domain. In the 6LBR the RPI header is inserted | related with the RPL domain. In the 6LBR the RPI header is inserted | |||
| into an IPv6-in-IPv6 header addressed to the last 6LR, which removes | into an IPv6-in-IPv6 header addressed to the last 6LR, which removes | |||
| the header before pass the packet to the IPv6 node. | the header before pass the packet to the IPv6 node. | |||
| +-------------------+-------------------+-------------------+------+ | The question in this scenario is how the root knows how to address | |||
| | Header | 6LBR | 6LR | IPv6 | | the IPv6-in-IPv6 header. It can not know that the destination isn't | |||
| +-------------------+-------------------+-------------------+------+ | RPL aware, so it must insert an IPv6 that can be removed on the last | |||
| | Inserted headers | IPv6-in-IPv6(RPI) | -- | -- | | RPL aware node. Since the root can not know in a storing network | |||
| | Removed headers | -- | IPv6-in-IPv6(RPI) | -- | | where the last RPL aware node is, the IPv6-in-IPv6 header must added | |||
| | Re-added headers | -- | -- | -- | | hop-by-hop along the path from root to leaf. | |||
| | Modified headers | -- | -- | -- | | ||||
| | Untouched headers | -- | -- | -- | | An alternative option is to add an attribute in the RPL Target Option | |||
| +-------------------+-------------------+-------------------+------+ | to indicate that the target is not RPL aware: future work may explore | |||
| this possibility. | ||||
| +-------------------+-----------+-----------+------+ | ||||
| | Header | 6LBR | 6LR | IPv6 | | ||||
| +-------------------+-----------+-----------+------+ | ||||
| | Inserted headers | IPIP(RPI) | -- | -- | | ||||
| | Removed headers | -- | IPIP(RPI) | -- | | ||||
| | Re-added headers | -- | -- | -- | | ||||
| | Modified headers | -- | -- | -- | | ||||
| | Untouched headers | -- | -- | -- | | ||||
| +-------------------+-----------+-----------+------+ | ||||
| Storing: Summary of the use of headers from root to not-RPL-aware- | Storing: Summary of the use of headers from root to not-RPL-aware- | |||
| leaf | leaf | |||
| 5.4. Example of Flow from not-RPL-aware-leaf to root | 5.4. Example of Flow from not-RPL-aware-leaf to root | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) | not-RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) | |||
| When the packet arrives from IPv6 node to 6LR. This router insert | When the packet arrives from IPv6 node to 6LR, the 6LR will insert an | |||
| the RPI encapsuladed in a IPv6-in-IPv6 header addressed to the root. | RPI header, encapsuladed in a IPv6-in-IPv6 header. The IPv6-in-IPv6 | |||
| The root removes the header and process the packet | header can be addressed to the next hop, or to the root. The root | |||
| removes the header and process the packet. | ||||
| +-------------------+------+--------------------+-------------------+ | +-------------------+------+------------+-----------+ | |||
| | Header | IPv6 | 6LR | 6LBR | | | Header | IPv6 | 6LR | 6LBR | | |||
| +-------------------+------+--------------------+-------------------+ | +-------------------+------+------------+-----------+ | |||
| | Inserted headers | -- | IPv6-in-IPv6(RPI) | -- | | | Inserted headers | -- | IPIP(RPI) | -- | | |||
| | Removed headers | -- | -- | IPv6-in-IPv6(RPI) | | | Removed headers | -- | -- | IPIP(RPI) | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | -- | -- | | | Modified headers | -- | -- | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+------+--------------------+-------------------+ | +-------------------+------+------------+-----------+ | |||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| root | root | |||
| 5.5. Example of Flow from RPL-aware-leaf to Internet | 5.5. Example of Flow from RPL-aware-leaf to Internet | |||
| RPL information from RFC 6553 should not go out to Internet. The | RPL information from RFC 6553 should not go out to Internet as it | |||
| router should take this information out before send the packet to | will cause the packet to be discarded at the first non-RPI aware | |||
| Internet. The HBH Option is going to be analyzed in each node to the | router. The 6LBR must be able to take this information out before | |||
| root. | sending the packet upwards to the Internet. This requires the RPI | |||
| header be placed in an IPIP header that the root can remove. | ||||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | |||
| 6LN insert RPI in a IPv6-in-IPv6 in a outer header, and send the | The 6LN will insert the RPI in a IPv6-in-IPv6 in a outer header, | |||
| packet to 6LR, which modified the rank in the RPI. When the packet | which may be addressed to the 6LBR (root), or alternatively, it could | |||
| arrives to 6LBR, the RPI is removed. | be addressed hop-by-hop. | |||
| +----------+-------------------+-----+-------------------+----------+ | +-------------------+-----------+------+-----------+----------+ | |||
| | Header | 6LN | 6LR | 6LBR | Internet | | | Header | 6LN | 6LR | 6LBR | Internet | | |||
| +----------+-------------------+-----+-------------------+----------+ | +-------------------+-----------+------+-----------+----------+ | |||
| | Inserted | IPv6-in-IPv6(RPI) | -- | -- | -- | | | Inserted headers | IPIP(RPI) | -- | -- | -- | | |||
| | headers | | | | | | | Removed headers | -- | -- | IPIP(RPI) | -- | | |||
| | Removed | -- | -- | IPv6-in-IPv6(RPI) | -- | | | Re-added headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Modified headers | -- | RPI | -- | -- | | |||
| | Re-added | -- | -- | -- | -- | | | Untouched headers | -- | -- | -- | -- | | |||
| | headers | | | | | | +-------------------+-----------+------+-----------+----------+ | |||
| | Modified | -- | RPI | -- | -- | | ||||
| | headers | | | | | | ||||
| | Untouche | -- | -- | -- | -- | | ||||
| | d | | | | | | ||||
| | headers | | | | | | ||||
| +----------+-------------------+-----+-------------------+----------+ | ||||
| Storing: Summary of the use of headers from RPL-aware-leaf to | Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| Internet | Internet | |||
| 5.6. Example of Flow from Internet to RPL-aware-leaf | 5.6. Example of Flow from Internet to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR --> RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR --> RPL-aware-leaf (6LN) | |||
| When the packet arrives from Internet to 6LBR the RPI header is added | When the packet arrives from Internet to 6LBR the RPI header is added | |||
| in a outer IPv6-in-IPv6 header and send to 6LR, which modifies the | in a outer IPv6-in-IPv6 header and send to 6LR, which modifies the | |||
| rank in the RPI. When the packet arrives 6LN the RPI header is | rank in the RPI. When the packet arrives 6LN the RPI header is | |||
| removed and the packet processed. | removed and the packet processed. | |||
| +----------+----------+-------------------+-----+-------------------+ | +-------------------+----------+------------+------+------------+ | |||
| | Header | Internet | 6LBR | 6LR | 6LN | | | Header | Internet | 6LBR | 6LR | 6LN | | |||
| +----------+----------+-------------------+-----+-------------------+ | +-------------------+----------+------------+------+------------+ | |||
| | Inserted | -- | IPv6-in-IPv6(RPI) | -- | -- | | | Inserted headers | -- | IPIP(RPI) | -- | -- | | |||
| | headers | | | | | | | Removed headers | -- | -- | -- | IPIP(RPI) | | |||
| | Removed | -- | -- | -- | IPv6-in-IPv6(RPI) | | | Re-added headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Modified headers | -- | -- | RPI | -- | | |||
| | Re-added | -- | -- | -- | -- | | | Untouched headers | -- | -- | -- | -- | | |||
| | headers | | | | | | +-------------------+----------+------------+------+------------+ | |||
| | Modified | -- | -- | RPI | -- | | ||||
| | headers | | | | | | ||||
| | Untouche | -- | -- | -- | -- | | ||||
| | d | | | | | | ||||
| | headers | | | | | | ||||
| +----------+----------+-------------------+-----+-------------------+ | ||||
| Storing: Summary of the use of headers from Internet to RPL-aware- | Storing: Summary of the use of headers from Internet to RPL-aware- | |||
| leaf | leaf | |||
| 5.7. Example of Flow from not-RPL-aware-leaf to Internet | 5.7. Example of Flow from not-RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (6LN) = IPv6 node --> 6LR --> root (6LBR) --> | not-RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | |||
| Internet | ||||
| In the IPv6 node the flow label is assumed to be zero, the packet is | The 6LR node will add an IPIP(RPI) header addressed either to the | |||
| transmited to 6LR which encapsule the RPI header in an outer IPv6-in- | root, or hop-by-hop such that the root can remove the RPI header | |||
| IPv6 header and send to 6LBR, which removes this header and send the | before passing upwards. | |||
| packet to Internet and might set the flow label field. | ||||
| +----------+-----+-------------------+-------------------+----------+ | The originating node will ideally leave the IPv6 flow label as zero | |||
| | Header | IPv | 6LR | 6LBR | Internet | | so that it can be better compressed through the LLN, and the 6LBR | |||
| | | 6 | | | | | will set the flow label to a non-zero value when sending to the | |||
| +----------+-----+-------------------+-------------------+----------+ | Internet. | |||
| | Inserted | -- | IPv6-in-IPv6(RPI) | -- | -- | | ||||
| | headers | | | | | | +-------------------+------+------------+------------+----------+ | |||
| | Removed | -- | -- | IPv6-in-IPv6(RPI) | -- | | | Header | 6LN | 6LR | 6LBR | Internet | | |||
| | headers | | | | | | +-------------------+------+------------+------------+----------+ | |||
| | Re-added | -- | -- | -- | -- | | | Inserted headers | -- | IPIP(RPI) | -- | -- | | |||
| | headers | | | | | | | Removed headers | -- | -- | IPIP(RPI) | -- | | |||
| | Modified | -- | -- | -- | -- | | | Re-added headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Modified headers | -- | -- | -- | -- | | |||
| | Untouche | -- | -- | -- | -- | | | Untouched headers | -- | -- | -- | -- | | |||
| | d | | | | | | +-------------------+------+------------+------------+----------+ | |||
| | headers | | | | | | ||||
| +----------+-----+-------------------+-------------------+----------+ | ||||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| Internet | Internet | |||
| 5.8. Example of Flow from Internet to non-RPL-aware-leaf | 5.8. Example of Flow from Internet to non-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR --> not-RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR --> not-RPL-aware-leaf (6LN) | |||
| 6LBR get the packet from Internet and add a RPI header encapsulated | The 6LBR will have to add an RPI header within an IPIP header. The | |||
| in a IPv6-in-IPv6 header addressed to 6LR and send the packet down. | IPIP will need to be addressed hop-by-hop along the path as in | |||
| The flow label is set to zero on inner IP. The last 6LR removes the | storing mode, the 6LBR has no idea if the 6LN is RPL aware or not, | |||
| RPI header. The IPv6 node might set the flow label since may arrive | nor what the closest attached 6LR node is. | |||
| with zero value. The RPI should be in IP-in-IP header. | ||||
| +----------+---------+-------------------+-------------------+------+ | The 6LBR MAY set the flow label on the inner IPIP header to zero in | |||
| | Header | Interne | 6LBR | 6LR | IPv6 | | order to aid in compression, as the packet will not emerge again from | |||
| | | t | | | | | the LLN. | |||
| +----------+---------+-------------------+-------------------+------+ | ||||
| | Inserted | -- | IPv6-in-IPv6(RPI) | -- | -- | | +-------------------+----------+------------+------------+------+ | |||
| | headers | | | | | | | Header | Internet | 6LBR | 6LR | IPv6 | | |||
| | Removed | -- | -- | IPv6-in-IPv6(RPI) | -- | | +-------------------+----------+------------+------------+------+ | |||
| | headers | | | | | | | Inserted headers | -- | IPIP(RPI) | -- | -- | | |||
| | Re-added | -- | -- | -- | -- | | | Removed headers | -- | -- | IPIP(RPI) | -- | | |||
| | headers | | | | | | | Re-added headers | -- | -- | -- | -- | | |||
| | Modified | -- | -- | -- | -- | | | Modified headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Untouched headers | -- | -- | -- | -- | | |||
| | Untouche | -- | -- | -- | -- | | +-------------------+----------+------------+------------+------+ | |||
| | d | | | | | | ||||
| | headers | | | | | | ||||
| +----------+---------+-------------------+-------------------+------+ | ||||
| Storing: Summary of the use of headers from Internet to non-RPL- | Storing: Summary of the use of headers from Internet to non-RPL- | |||
| aware-leaf | aware-leaf | |||
| 5.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf | 5.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf | |||
| In [RFC6550] RPL allows a simple one-hop P2P optimization for both | In [RFC6550] RPL allows a simple one-hop optimization for both | |||
| storing and non-storing networks. A node may send a P2P packet | storing and non-storing networks. A node may send a packet destined | |||
| destined to a one-hop neighbor directly to that node. Section 9 in | to a one-hop neighbor directly to that node. Section 9 in [RFC6550]. | |||
| [RFC6550]. | ||||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR --> common parent (6LR) --> 6LR --> 6LN | 6LN --> 6LR --> common parent (6LR) --> 6LR --> 6LN | |||
| This case is assumed in the same RPL Domain. In the common parent, | This case is assumed in the same RPL Domain. In the common parent, | |||
| the direction of RPI is changed (from increasing to decreasing the | the direction of RPI is changed (from increasing to decreasing the | |||
| rank). | rank). | |||
| While the 6LR nodes will update the RPI, no node needs to add or | ||||
| remove the RPI, so no IPIP headers are necessary. The ability to do | ||||
| this depends upon the sending know that the destination is: a) inside | ||||
| the LLN, and b) RPL capable. | ||||
| The sender can determine if the destination is inside the LLN by | ||||
| looking if the destination address is matched by the DIO's PIO | ||||
| option. This check may be modified by the use of backbone routers, | ||||
| but in this case it is assumed that the backbone routers are RPL | ||||
| capable and so can process the RPI header correctly. | ||||
| The other check, that the destination is RPL capable is not currently | ||||
| discernible by the sender. This information is necessary to | ||||
| distinguish this test case from Section 5.10. | ||||
| +-------------+-------+---------------+---------------+-----+-------+ | +-------------+-------+---------------+---------------+-----+-------+ | |||
| | Header | 6LN | 6LR | 6LR (common | 6LR | 6LN | | | Header | 6LN | 6LR | 6LR (common | 6LR | 6LN | | |||
| | | src | | parent) | | dst | | | | src | | parent) | | dst | | |||
| +-------------+-------+---------------+---------------+-----+-------+ | +-------------+-------+---------------+---------------+-----+-------+ | |||
| | Inserted | RPI | -- | -- | -- | -- | | | Inserted | RPI | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Removed | -- | -- | -- | -- | RPI | | | Removed | -- | -- | -- | -- | RPI | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Re-added | -- | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| skipping to change at page 15, line 31 ¶ | skipping to change at page 15, line 41 ¶ | |||
| Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | |||
| aware-leaf | aware-leaf | |||
| 5.10. Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf | 5.10. Example of Flow from RPL-aware-leaf to non-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR --> common parent (6LR) --> 6LR --> not-RPL-aware 6LN | 6LN --> 6LR --> common parent (6LR) --> 6LR --> not-RPL-aware 6LN | |||
| Somehow, the sender has to know that the receiver is not RPL aware, | The sender, being aware out of band, that the receiver is not RPL | |||
| and needs to know 6LR, and not even the root knows where the 6LR is | aware, sends adds an RPI header inside an IPIP header. The IPIP | |||
| (in storing mode). | header needs to be addressed on a hop-by-hop basis so that the last | |||
| 6LR can remove the RPI header. | ||||
| This case FAILS. | ||||
| Possible solutions, which are not mutually exclusive: | ||||
| 1 - An IPv6-in-IPv6 header can be used on a hop-by-hop basis, using | ||||
| either link-local addresses, or even IPv6 Global Unicast Addresses, | ||||
| but each IPv6-in-IPv6 header needs to be added/removed at each hop. | ||||
| ,---. | ,---. | |||
| / \ | / \ | |||
| ( 6LR2 ) IP3,RPI,IP,ULP | ( 6LR2 ) IP3,RPI,IP,ULP | |||
| ,-" . | ,-" . | |||
| ,-" `---' `. | ,-" `---' `. | |||
| ,' `. | ,' `. | |||
| ,---. ,-" `,---. | ,---. ,-" `,---. | |||
| / +" / \ | / +" / \ | |||
| ( 6LR1 ) Remove the IP3,RPI( 6LR3 ) | ( 6LR1 ) Remove the IP3,RPI( 6LR3 ) | |||
| skipping to change at page 16, line 28 ¶ | skipping to change at page 16, line 28 ¶ | |||
| / \ | / \ | |||
| ,---+-. | | ,---+-. | | |||
| / \ +--+----+ | / \ +--+----+ | |||
| ( 6LN ) | | | ( 6LN ) | | | |||
| \ / | IPv6 | IP,ULP | \ / | IPv6 | IP,ULP | |||
| `-----' | | | `-----' | | | |||
| IP1,RPI,IP,ULP +-------+ | IP1,RPI,IP,ULP +-------+ | |||
| Figure 4: Solution IPv6-in-IPv6 in each hop | Figure 4: Solution IPv6-in-IPv6 in each hop | |||
| 2- If the definition of the Option Type field of RPL Option '01' were | Alternatively, if the definition of the Option Type field of RPL | |||
| changed so that it isn't a "discard if not recognized". This change | Option '01' were changed so that it isn't a "discard if not | |||
| is an incompatible on-the-wire change. However, this change could | recognized", then no IPIP header would be necessary. This change is | |||
| perhaps be done with the updated 6LoRH compression work, as that is | an incompatible on-the-wire change and would require some kind of | |||
| also an incompatible on-the-wire change for which we presently have | flag day, possibly a change that is done simultaenously with an | |||
| no way to signal. | updated 6LoRH compress. | |||
| +-------+------------+------------+-------------+-------------+-----+ | +-----------+-----------+-----------+------------+-----------+------+ | |||
| | Heade | 6LN | 6LR | 6LR (common | 6LR | IPv | | | Header | 6LN | 6LR | 6LR | 6LR | IPv6 | | |||
| | r | | | parent) | | 6 | | | | | | (common | | | | |||
| +-------+------------+------------+-------------+-------------+-----+ | | | | | parent) | | | | |||
| | Inser | IPv6-in- | -- | -- | -- | -- | | +-----------+-----------+-----------+------------+-----------+------+ | |||
| | ted h | IPv6(RPI) | | | | | | | Inserted | IPIP(RPI) | -- | -- | -- | -- | | |||
| | eader | | | | | | | | headers | | | | | | | |||
| | s | | | | | | | | Removed | -- | -- | -- | IPIP(RPI) | -- | | |||
| | Remov | -- | -- | -- | IPv6-in- | -- | | | headers | | | | | | | |||
| | ed he | | | | IPv6(RPI) | | | | Re-added | -- | -- | -- | -- | -- | | |||
| | aders | | | | | | | | headers | | | | | | | |||
| | Re- | -- | -- | -- | -- | -- | | | Modified | -- | IPIP(RPI) | IPIP(RPI) | -- | -- | | |||
| | added | | | | | | | | headers | | | | | | | |||
| | heade | | | | | | | | Untouched | -- | -- | -- | -- | -- | | |||
| | rs | | | | | | | | headers | | | | | | | |||
| | Modif | -- | IPv6-in- | IPv6-in- | -- | -- | | +-----------+-----------+-----------+------------+-----------+------+ | |||
| | ied h | | IPv6(RPI) | IPv6(RPI) | | | | ||||
| | eader | | | | | | | ||||
| | s | | | | | | | ||||
| | Untou | -- | -- | -- | -- | -- | | ||||
| | ched | | | | | | | ||||
| | heade | | | | | | | ||||
| | rs | | | | | | | ||||
| +-------+------------+------------+-------------+-------------+-----+ | ||||
| Storing: Summary of the use of headers from RPL-aware-leaf to not- | Storing: Summary of the use of headers from RPL-aware-leaf to not- | |||
| RPL-aware-leaf | RPL-aware-leaf | |||
| 5.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | 5.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN --> 6LR --> common parent (6LR) --> 6LR --> 6LN | not-RPL-aware 6LN --> 6LR --> common parent (6LR) --> 6LR --> 6LN | |||
| The 6LR that get the packet from IPv6 node, insert the RPI header | The 6LR receives the packet from the the IPv6 node and inserts and | |||
| encapsulated in IPv6-in-IPv6 header with destination to 6LN, the | the RPI header encapsulated in IPv6-in-IPv6 header. The IPIP header | |||
| common parent change the direction of RPI and finally it is removed | could be addresses to the 6LN if the destination is known to the RPL | |||
| by 6LN. | aware, otherwise must send the packet using a hop-by-hop IPIP header. | |||
| Similar considerations apply from section Section 5.10. | ||||
| +-------+----+------------+-------------+-------------+-------------+ | +-----------+------+-----------+------------+-----------+-----------+ | |||
| | Heade | IP | 6LR | common | 6LR | 6LN | | | Header | IPv6 | 6LR | common | 6LR | 6LN | | |||
| | r | v6 | | parent | | | | | | | | parent | | | | |||
| | | | | (6LR) | | | | | | | | (6LR) | | | | |||
| +-------+----+------------+-------------+-------------+-------------+ | +-----------+------+-----------+------------+-----------+-----------+ | |||
| | Inser | -- | IPv6-in- | -- | -- | -- | | | Inserted | -- | IPIP(RPI) | -- | -- | -- | | |||
| | ted h | | IPv6(RPI) | | | | | | headers | | | | | | | |||
| | eader | | | | | | | | Removed | -- | -- | -- | -- | IPIP(RPI) | | |||
| | s | | | | | | | | headers | | | | | | | |||
| | Remov | -- | -- | -- | -- | IPv6-in- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | ed he | | | | | IPv6(RPI) | | | headers | | | | | | | |||
| | aders | | | | | | | | Modified | -- | -- | IPIP(RPI) | IPIP(RPI) | -- | | |||
| | Re- | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | added | | | | | | | | Untouched | -- | -- | -- | -- | -- | | |||
| | heade | | | | | | | | headers | | | | | | | |||
| | rs | | | | | | | +-----------+------+-----------+------------+-----------+-----------+ | |||
| | Modif | -- | -- | IPv6-in- | IPv6-in- | -- | | ||||
| | ied h | | | IPv6(RPI) | IPv6(RPI) | | | ||||
| | eader | | | | | | | ||||
| | s | | | | | | | ||||
| | Untou | -- | -- | -- | -- | -- | | ||||
| | ched | | | | | | | ||||
| | heade | | | | | | | ||||
| | rs | | | | | | | ||||
| +-------+----+------------+-------------+-------------+-------------+ | ||||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| RPL-aware-leaf | RPL-aware-leaf | |||
| 5.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware-leaf | 5.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN (IPv6 node)--> 6LR --> root (6LBR) --> 6LR --> not- | not-RPL-aware 6LN (IPv6 node)--> 6LR --> root (6LBR) --> 6LR --> not- | |||
| RPL-aware 6LN (IPv6 node) | RPL-aware 6LN (IPv6 node) | |||
| The problem to solve is how to indicate where to send the packet when | This flow combines the problems of the two previous sections. There | |||
| get into LLN. One approach is that the 6LBR should know in which 6LR | is no choice at the first 6LR: it must insert an RPI, and to do that | |||
| the IPv6 node is attached. The RPI information is encapsulated in a | it must add an IPIP header. That IPIP header must be addressed on a | |||
| IPv6-in-IPv6 header, each IPv6-in-IPv6 header needs to be added/ | hop-by-hop basis. | |||
| removed at each hop.. | ||||
| +---------+-----+----------------+---------+-----------------+------+ | +-------------+--------+-----------+-----------+-----------+--------+ | |||
| | Header | IPv | 6LR | 6LR | 6LR | IPv6 | | | Header | IPv6 | 6LR | 6LR | 6LR | IPv6 | | |||
| | | 6 | | (common | | dst | | | | src | | (common | | dst | | |||
| | | src | | parent) | | | | | | | | parent) | | | | |||
| +---------+-----+----------------+---------+-----------------+------+ | +-------------+--------+-----------+-----------+-----------+--------+ | |||
| | Inserte | -- | IPv6-in- | -- | -- | -- | | | Inserted | -- | IPIP(RPI) | -- | -- | -- | | |||
| | d | | IPv6(RPI) | | | | | | headers | | | | | | | |||
| | headers | | | | | | | | Removed | -- | -- | -- | IPIP(RPI) | -- | | |||
| | Removed | -- | -- | -- | IPv6-in- | -- | | | headers | | | | | | | |||
| | headers | | | | IPv6(RPI) | | | | Re-added | -- | -- | -- | -- | -- | | |||
| | Re- | -- | -- | -- | -- | -- | | | headers | | | | | | | |||
| | added | | | | | | | | Modified | -- | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Modifie | -- | -- | -- | -- | -- | | | Untouched | -- | -- | -- | -- | -- | | |||
| | d | | | | | | | | headers | | | | | | | |||
| | headers | | | | | | | +-------------+--------+-----------+-----------+-----------+--------+ | |||
| | Untouch | -- | -- | -- | -- | -- | | ||||
| | ed | | | | | | | ||||
| | headers | | | | | | | ||||
| +---------+-----+----------------+---------+-----------------+------+ | ||||
| Storing: Summary of the use of headers from not-RPL-aware-leaf to | Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| not-RPL-aware-leaf | not-RPL-aware-leaf | |||
| 6. Non Storing mode | 6. Non Storing mode | |||
| 6.1. Example of Flow from RPL-aware-leaf to root | +------------------+------+------+-------+-----------+ | |||
| | Use Case | RPI | RH3 | IPIP | IPIP dst | | ||||
| +------------------+------+------+-------+-----------+ | ||||
| | Raf to root | Yes | No | No | -- | | ||||
| | root to Raf | Yes | Yes | No | -- | | ||||
| | root to ~Raf | No | Yes | Yes | -- | | ||||
| | ~Raf to root | Yes | No | Yes | root | | ||||
| | Raf to Internet | Yes | No | Yes | root | | ||||
| | Internet to Raf | opt | Yes | Yes | dst | | ||||
| | ~Raf to Internet | Yes | No | Yes | root | | ||||
| | Internet to ~Raf | opt | Yes | Yes | 6LR | | ||||
| | Raf to Raf | Yes | Yes | Yes | root/dst | | ||||
| | Raf to ~Raf | Yes | Yes | Yes | root/6LN | | ||||
| | ~Raf to Raf | Yes | Yes | Yes | root/6LN | | ||||
| | ~Raf to ~Raf | Yes | Yes | Yes | root/6LN | | ||||
| +------------------+------+------+-------+-----------+ | ||||
| In non-storing mode the leaf node uses Hop-By-Hop option (RFC 6553) | Table 2: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP | |||
| to indicate the routing information to send messages to the DODAG | encapsulation | |||
| root, this message is going to be analyzed in each node until arrive | ||||
| the DODAG root. | ||||
| In this case not need to use IPv6-in-IPv6 because no header is not | 6.1. Example of Flow from RPL-aware-leaf to root | |||
| going to be removed, neither RH3, the flow comprises: | ||||
| In non-storing mode the leaf node uses default routing to send | ||||
| traffic to the root. The RPI header must be included to avoid/detect | ||||
| loops. | ||||
| RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) | RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) | |||
| This case is the same case as storing mode. | This situation is the same case as storing mode. | |||
| +-------------------+-----+------+------+ | +-------------------+-----+-----+------+ | |||
| | Header | 6LN | 6LR | 6LBR | | | Header | 6LN | 6LR | 6LBR | | |||
| +-------------------+-----+------+------+ | +-------------------+-----+-----+------+ | |||
| | Inserted headers | RPI | -- | -- | | | Inserted headers | RPI | -- | -- | | |||
| | Removed headers | -- | -- | RPI | | | Removed headers | -- | -- | RPI | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | RPI | | |||
| | Modified headers | -- | RPI | -- | | | Modified headers | -- | -- | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+-----+------+------+ | +-------------------+-----+-----+------+ | |||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| root | root | |||
| 6.2. Example of Flow from root to RPL-aware-leaf | 6.2. Example of Flow from root to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) | root (6LBR)--> 6LR --> RPL-aware-leaf (6LN) | |||
| 6LBR might instert RPI header, and the rute is indicated in RH3. 6LR | The 6LBR will insert an RH3, and may optionally insert an RPI header. | |||
| updated RH3 and 6LN remove these headers. | No IPIP header is necessary as the traffic originates with an RPL | |||
| aware node. | ||||
| +-------------------+----------------------+------+----------+ | +-------------------+-----------------+------+----------+ | |||
| | Header | 6LBR | 6LR | 6LN | | | Header | 6LBR | 6LR | 6LN | | |||
| +-------------------+----------------------+------+----------+ | +-------------------+-----------------+------+----------+ | |||
| | Inserted headers | (optional: RPI), RH3 | -- | -- | | | Inserted headers | (opt: RPI), RH3 | -- | -- | | |||
| | Removed headers | -- | -- | RH3,RPI | | | Removed headers | -- | -- | RH3,RPI | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RH3 | -- | | | Modified headers | -- | RH3 | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+----------------------+------+----------+ | +-------------------+-----------------+------+----------+ | |||
| Non Storing: Summary of the use of headers from root to RPL-aware- | Non Storing: Summary of the use of headers from root to RPL-aware- | |||
| leaf | leaf | |||
| 6.3. Example of Flow from root to not-RPL-aware-leaf | 6.3. Example of Flow from root to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| root (6LBR)--> 6LR --> not-RPL-aware-leaf (IPv6 node) | root (6LBR)--> 6LR --> not-RPL-aware-leaf (IPv6 node) | |||
| In 6LBR the RH3 is added, and modified in 6LR where is fully | In 6LBR the RH3 is added, and modified in 6LR where it is fully | |||
| consumed, but left there. If the RPI is present, the IPv6 node which | consumed, but left there. If the RPI is left present, the IPv6 node | |||
| does not understand it will drop it. To avoid it the RPI should be | which does not understand it will drop it, therefore the RPI should | |||
| removed before reach IPv6 node or it is recommended that RPI be | be removed before reaching the IPv6-only node. To permit removal, an | |||
| omitted. An IPv6-in-IPv6 header should be necessary in this case. | IPIP header (hop-by-hop) or addressed to the last 6LR is necessary. | |||
| The DAO from 6LR about IPv6 could say if that the final IPv6 is not | Due the complete knowledge of the topology at the root, the 6LBR is | |||
| RPL (RPI) capable. | able to address the IPIP header to the last 6LR. | |||
| Omitting the RPI entirely is therefore a better solution, as no IPIP | ||||
| header is necessary. | ||||
| +-------------------+------+-----+------+ | +-------------------+------+-----+------+ | |||
| | Header | 6LBR | 6LR | IPv6 | | | Header | 6LBR | 6LR | IPv6 | | |||
| +-------------------+------+-----+------+ | +-------------------+------+-----+------+ | |||
| | Inserted headers | RH3 | -- | -- | | | Inserted headers | RH3 | -- | -- | | |||
| | Removed headers | -- | -- | -- | | | Removed headers | -- | -- | -- | | |||
| | Re-added headers | -- | -- | -- | | | Re-added headers | -- | -- | -- | | |||
| | Modified headers | -- | RH3 | -- | | | Modified headers | -- | RH3 | -- | | |||
| | Untouched headers | -- | -- | -- | | | Untouched headers | -- | -- | -- | | |||
| +-------------------+------+-----+------+ | +-------------------+------+-----+------+ | |||
| Non Storing: Summary of the use of headers from root to not-RPL- | Non Storing: Summary of the use of headers from root to not-RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.4. Example of Flow from not-RPL-aware-leaf to root | 6.4. Example of Flow from not-RPL-aware-leaf to root | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| IPv6-node --> 6LR1 --> 6LR2 --> root (6LBR) | IPv6-node --> 6LR1 --> 6LR2 --> root (6LBR) | |||
| In this case the RPI is encapsulated in the first 6LR, and is not | In this case the RPI is added by the first 6LR, encapsulated in an | |||
| modified in the followings 6LRs. | IPIP header, and is not modified in the followings 6LRs. The RPI and | |||
| entire packet is consumed by the root. | ||||
| +-------------+------+-------------------+------+-------------------+ | +-------------------+------+------------+------+------------+ | |||
| | Header | IPv6 | 6LR1 | 6LR2 | 6LBR | | | Header | IPv6 | 6LR1 | 6LR2 | 6LBR | | |||
| +-------------+------+-------------------+------+-------------------+ | +-------------------+------+------------+------+------------+ | |||
| | Inserted | -- | IPv6-in-IPv6(RPI) | -- | -- | | | Inserted headers | -- | IPIP(RPI) | -- | -- | | |||
| | headers | | | | | | | Removed headers | -- | -- | -- | IPIP(RPI) | | |||
| | Removed | -- | -- | -- | IPv6-in-IPv6(RPI) | | | Re-added headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Modified headers | -- | -- | -- | -- | | |||
| | Re-added | -- | -- | -- | -- | | | Untouched headers | -- | IPIP(RPI) | -- | -- | | |||
| | headers | | | | | | +-------------------+------+------------+------+------------+ | |||
| | Modified | -- | -- | -- | -- | | ||||
| | headers | | | | | | ||||
| | Untouched | -- | IPv6-in-IPv6(RPI) | -- | -- | | ||||
| | headers | | | | | | ||||
| +-------------+------+-------------------+------+-------------------+ | ||||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| root | root | |||
| 6.5. Example of Flow from RPL-aware-leaf to Internet | 6.5. Example of Flow from RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | |||
| This case requires that the network is awareness of what is external | This case requires that the RPI be added, but remoted by the 6LBR. | |||
| to the LLN. Internet node never sees RPI or IPv6-in-IPv6 header. In | The 6LN must therefore add the RPI inside an IPIP header, addressed | |||
| the 6LBR the flow label is computed if it is zero. RPI remains | to the root. This case is identical to storing-mode case. | |||
| unmodified. | ||||
| +----------+-------------------+-----+-------------------+----------+ | The IPv6 flow label should be set to zero to aid in compression, and | |||
| | Header | 6LN | 6LR | 6LBR | Internet | | the 6LBR will set it to a non-zero value when sending towards the | |||
| +----------+-------------------+-----+-------------------+----------+ | Internet. | |||
| | Inserted | IPV6-in-IPv6(RPI) | -- | -- | -- | | ||||
| | headers | | | | | | +-------------------+-----------+------+------------+----------+ | |||
| | Removed | -- | -- | IPV6-in-IPv6(RPI) | -- | | | Header | 6LN | 6LR | 6LBR | Internet | | |||
| | headers | | | | | | +-------------------+-----------+------+------------+----------+ | |||
| | Re-added | -- | -- | -- | -- | | | Inserted headers | IPIP(RPI) | -- | -- | -- | | |||
| | headers | | | | | | | Removed headers | -- | -- | IPIP(RPI) | -- | | |||
| | Modified | -- | -- | -- | -- | | | Re-added headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Modified headers | -- | -- | -- | -- | | |||
| | Untouche | -- | RPI | -- | -- | | | Untouched headers | -- | RPI | -- | -- | | |||
| | d | | | | | | +-------------------+-----------+------+------------+----------+ | |||
| | headers | | | | | | ||||
| +----------+-------------------+-----+-------------------+----------+ | ||||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| Internet | Internet | |||
| 6.6. Example of Flow from Internet to RPL-aware-leaf | 6.6. Example of Flow from Internet to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR --> RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR --> RPL-aware-leaf (6LN) | |||
| If the last RH3 entry is the 6LR, then the IPv6-in-IPv6 will be | The 6LBR must add an RH3 header. As the 6LBR will know the path and | |||
| removed there, if the last entry is the 6LN, then the RH3 will go all | address of the target not, it can address the IPIP header to that | |||
| the way to the leaf. In 6LBR the flow label should be set to zero. | node. The 6LBR will zero the flow label upon entry in order to aid | |||
| compression. | ||||
| +---------+--------+-------------------------+----------------+-----+ | The RPI may be added or not. | |||
| | Header | Intern | 6LBR | 6LR | 6LN | | ||||
| | | et | | | | | +----------------+----------+--------------------+------------+-----+ | |||
| +---------+--------+-------------------------+----------------+-----+ | | Header | Internet | 6LBR | 6LR | 6LN | | |||
| | Inserte | -- | IPv6-in- | -- | -- | | +----------------+----------+--------------------+------------+-----+ | |||
| | d | | IPv6(RH3,optional:RPI) | | | | | Inserted | -- | IPIP(RH3,opt:RPI) | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Removed | -- | -- | IPv6-in-IPv6 | -- | | | Removed | -- | -- | IPIP(RH3) | -- | | |||
| | headers | | | can be removed | | | | headers | | | | | | |||
| | | | | if RH3 | | | | Re-added | -- | -- | -- | -- | | |||
| | | | | consumed | | | | headers | | | | | | |||
| | Re- | -- | -- | -- | -- | | | Modified | -- | -- | IPIP(RH3) | -- | | |||
| | added | | | | | | | headers | | | | | | |||
| | headers | | | | | | | Untouched | -- | -- | -- | -- | | |||
| | Modifie | -- | -- | IPv6-in- | -- | | | headers | | | | | | |||
| | d | | | IPv6(RH3) | | | +----------------+----------+--------------------+------------+-----+ | |||
| | headers | | | | | | ||||
| | Untouch | -- | -- | -- | -- | | ||||
| | ed | | | | | | ||||
| | headers | | | | | | ||||
| +---------+--------+-------------------------+----------------+-----+ | ||||
| Non Storing: Summary of the use of headers from Internet to RPL- | Non Storing: Summary of the use of headers from Internet to RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.7. Example of Flow from not-RPL-aware-leaf to Internet | 6.7. Example of Flow from not-RPL-aware-leaf to Internet | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | not-RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet | |||
| In this case the flow label is recommended to be zero in the IPv6 | In this case the flow label is recommended to be zero in the IPv6 | |||
| node. no RPL headers are added in the IPv6 node, since it is ignorant | node. As RPL headers are added in the IPv6 node, the first 6LN will | |||
| of RPL. Internet node does not see special headers. In 6LBR the | add an RPI header inside a new IPIP header. The IPIP header will be | |||
| flow label is computed if it is zero. | addressed to the root. This case is identical to the storing-mode | |||
| case. | ||||
| +----------+-----+-------------------+-------------------+----------+ | +-------------------+------+-----------+------------+----------+ | |||
| | Header | IPv | 6LR | 6LBR | Internet | | | Header | IPv6 | 6LR | 6LBR | Internet | | |||
| | | 6 | | | | | +-------------------+------+-----------+------------+----------+ | |||
| +----------+-----+-------------------+-------------------+----------+ | | Inserted headers | -- | IPIP(RPI) | -- | -- | | |||
| | Inserted | -- | IPv6-in-IPv6(RPI) | -- | -- | | | Removed headers | -- | -- | IPIP(RPI) | -- | | |||
| | headers | | | | | | | Re-added headers | -- | -- | -- | -- | | |||
| | Removed | -- | -- | IPv6-in-IPv6(RPI) | -- | | | Modified headers | -- | -- | -- | -- | | |||
| | headers | | | | | | | Untouched headers | -- | -- | -- | -- | | |||
| | Re-added | -- | -- | -- | -- | | +-------------------+------+-----------+------------+----------+ | |||
| | headers | | | | | | ||||
| | Modified | -- | -- | -- | -- | | ||||
| | headers | | | | | | ||||
| | Untouche | -- | -- | -- | -- | | ||||
| | d | | | | | | ||||
| | headers | | | | | | ||||
| +----------+-----+-------------------+-------------------+----------+ | ||||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| Internet | Internet | |||
| 6.8. Example of Flow from Internet to non-RPL-aware-leaf | 6.8. Example of Flow from Internet to non-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| Internet --> root (6LBR) --> 6LR --> not-RPL-aware-leaf (6LN) | Internet --> root (6LBR) --> 6LR --> not-RPL-aware-leaf (6LN) | |||
| The 6LBR must add an RH3 header inside an IPIP header. The 6LBR will | ||||
| know the path, and will recognize that the final node is not an RPL | ||||
| capable node as it will have received the connectivity DAO from the | ||||
| nearest 6LR. The 6LBR can therefore make the IPIP header destination | ||||
| be the last 6LR. The 6LBR will zero the flow label upon entry in | ||||
| order to aid compression. | ||||
| In this case the flow label in 6LBR should be set zero in 6LBR, where | +--------------+----------+-------------------+--------------+------+ | |||
| RH3 is inserted and optionally RHI. RH3 must end at 6LR. | | Header | Internet | 6LBR | 6LR | IPv6 | | |||
| +--------------+----------+-------------------+--------------+------+ | ||||
| In Non-Storing mode, root knows that the non-RPL-aware-leaf is | | Inserted | -- | IPIP(RH3,opt:RPI) | -- | -- | | |||
| attached to the parent 6LR, and builds RH3 with IPv6-in-IPv6 with | | headers | | | | | | |||
| this 6LR as destination. | | Removed | -- | -- | IPIP(RH3, | -- | | |||
| | headers | | | RPI) | | | ||||
| +---------+--------+-------------------------+---------------+------+ | | Re-added | -- | -- | -- | -- | | |||
| | Header | Intern | 6LBR | 6LR | IPv6 | | | headers | | | | | | |||
| | | et | | | | | | Modified | -- | -- | -- | -- | | |||
| +---------+--------+-------------------------+---------------+------+ | | headers | | | | | | |||
| | Inserte | -- | IPv6-in- | -- | -- | | | Untouched | -- | -- | -- | -- | | |||
| | d | | IPv6(RH3,optional:RPI) | | | | | headers | | | | | | |||
| | headers | | | | | | +--------------+----------+-------------------+--------------+------+ | |||
| | Removed | -- | -- | IPv6-in- | -- | | ||||
| | headers | | | IPv6(RH3, | | | ||||
| | | | | RPI) | | | ||||
| | Re- | -- | -- | -- | -- | | ||||
| | added | | | | | | ||||
| | headers | | | | | | ||||
| | Modifie | -- | -- | -- | -- | | ||||
| | d | | | | | | ||||
| | headers | | | | | | ||||
| | Untouch | -- | -- | -- | -- | | ||||
| | ed | | | | | | ||||
| | headers | | | | | | ||||
| +---------+--------+-------------------------+---------------+------+ | ||||
| NonStoring: Summary of the use of headers from Internet to non-RPL- | NonStoring: Summary of the use of headers from Internet to non-RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf | 6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR --> root (6LBR) --> 6LR --> 6LN | 6LN --> 6LR --> root (6LBR) --> 6LR --> 6LN | |||
| This case comprises in the same RPL Domain. In the 6LN the RPI | This case involves only nodes in same RPL Domain. The originating | |||
| header is inserted. In the 6LBR the RH3 header is inserted in a | node will add an RPI header to the original packet, and send the | |||
| IPv6-in-IPv6 header and removed at the 6LN destination. | packet upwards. | |||
| In case of the flow goes from RPL-aware-Leaf to RPL-aware-Leaf, the | The originating node could put the RPI into an IPIP header addressed | |||
| RPI should be set in a IP-in-IP header, to avoid repetition of RPI | to the root, so that the 6LBR can remove that header. | |||
| header. | ||||
| +---------+---------------+---------------+-----+-------------------+ | The 6LBR will need to insert an RH3 header, which requires that it | |||
| | Header | 6LN src | 6LBR | 6LR | 6LN dst | | add an IPIP header. It may be able to remove the RPI if it was | |||
| +---------+---------------+---------------+-----+-------------------+ | contained in an IPIP header addressed to it. Otherwise, there may be | |||
| | Inserte | IPv6-in- | IPv6-in- | -- | -- | | an RPI header buried inside the inner IP header, which should get | |||
| | d | IPv6(RPI) | IPv6(RH3 to | | | | ignored. | |||
| | headers | | 6LN,RPI) | | | | ||||
| | | | {IP,payload} | | | | Networks that use the RPL P2P extension [RFC6997] are essentially | |||
| | Removed | -- | -- | -- | IPv6-in- | | non-storing DODAGs and fall into this scenario. | |||
| | headers | | | | IPv6(RH3,RPI) | | ||||
| | | | | | {IP,RPI,payload} | | +----------------+-----------+----------------+-----+---------------+ | |||
| | Re- | -- | -- | -- | -- | | | Header | 6LN src | 6LBR | 6LR | 6LN dst | | |||
| | added | | | | | | +----------------+-----------+----------------+-----+---------------+ | |||
| | headers | | | | | | | Inserted | IPIP(RPI) | IPIP(RH3 to | -- | -- | | |||
| | Modifie | -- | -- | -- | -- | | | headers | | 6LN,RPI) | | | | |||
| | d | | | | | | | Removed | -- | -- | -- | IPIP(RH3,RPI) | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Untouch | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | | |||
| | ed | | | | | | | headers | | | | | | |||
| | headers | | | | | | | Modified | -- | -- | -- | -- | | |||
| +---------+---------------+---------------+-----+-------------------+ | | headers | | | | | | |||
| | Untouched | -- | -- | -- | -- | | ||||
| | headers | | | | | | ||||
| +----------------+-----------+----------------+-----+---------------+ | ||||
| Non Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | Non Storing: Summary of the use of headers for RPL-aware-leaf to RPL- | |||
| aware-leaf | aware-leaf | |||
| 6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf | 6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| 6LN --> 6LR --> root (6LBR) --> 6LR --> not-RPL-aware 6LN | 6LN --> 6LR --> root (6LBR) --> 6LR --> not-RPL-aware 6LN | |||
| The 6LN insert the RPI in a IPv6-in-IPv6 header, which is addressed | As in the previous case, the 6LN will insert an RPI header which MUST | |||
| to 6LBR. The 6LBR remove this RPI header and insert a RH3 header | be in an IPIP header addressed to the root so that the 6LBR can | |||
| with an optional RPI. These headers are removed by 6LR before send | remove this RPI. The 6LBR will then insert an RH3 inside a new IPIP | |||
| the packet to the IPv6 node. | header addressed to the 6LN above the destination node. | |||
| +------------+-------------------+-------------+-------------+------+ | +---------------+-----------+---------------+----------------+------+ | |||
| | Header | 6LN | 6LBR | 6LR | IPv6 | | | Header | 6LN | 6LBR | 6LR | IPv6 | | |||
| +------------+-------------------+-------------+-------------+------+ | +---------------+-----------+---------------+----------------+------+ | |||
| | Inserted | IPv6-in-IPv6(RPI) | IPIP(RH3, | -- | -- | | | Inserted | IPIP(RPI) | IPIP(RH3, opt | -- | -- | | |||
| | headers | | opt RPI) | | | | | headers | | RPI) | | | | |||
| | Removed | -- | IPIP(RPI) | IPIP(RH3, | -- | | | Removed | -- | IPIP(RPI) | IPIP(RH3, opt | -- | | |||
| | headers | | | opt RPI) | | | | headers | | | RPI) | | | |||
| | Re-added | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Modified | -- | -- | -- | -- | | | Modified | -- | -- | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| | Untouched | -- | -- | -- | -- | | | Untouched | -- | -- | -- | -- | | |||
| | headers | | | | | | | headers | | | | | | |||
| +------------+-------------------+-------------+-------------+------+ | +---------------+-----------+---------------+----------------+------+ | |||
| Non Storing: Summary of the use of headers from RPL-aware-leaf to | Non Storing: Summary of the use of headers from RPL-aware-leaf to | |||
| not-RPL-aware-leaf | not-RPL-aware-leaf | |||
| 6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | 6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN --> 6LR --> root (6LBR) --> 6LR --> 6LN | not-RPL-aware 6LN --> 6LR --> root (6LBR) --> 6LR --> 6LN | |||
| RPI is added in 6LR until the root and then removed, then RH3 is | This scenario is mostly identical to the previous one. The RPI is | |||
| added and removed at destination. | added by the first 6LR inside an IPIP header addressed to the root. | |||
| The 6LBR will remove this RPI, and add it's own IPIP header | ||||
| containing an RH3 header. | ||||
| +-------------------+------+------------+-----------+------------+ | +-------------------+------+------------+-----------+------------+ | |||
| | Header | IPv6 | 6LR | 6LBR | 6LN | | | Header | IPv6 | 6LR | 6LBR | 6LN | | |||
| +-------------------+------+------------+-----------+------------+ | +-------------------+------+------------+-----------+------------+ | |||
| | Inserted headers | -- | IPIP(RPI) | IPIP(RH3) | -- | | | Inserted headers | -- | IPIP(RPI) | IPIP(RH3) | -- | | |||
| | Removed headers | -- | IPIP(RPI) | -- | IPIP(RH3) | | | Removed headers | -- | IPIP(RPI) | -- | IPIP(RH3) | | |||
| | Re-added headers | -- | -- | -- | -- | | | Re-added headers | -- | -- | -- | -- | | |||
| | Modified headers | -- | -- | -- | -- | | | Modified headers | -- | -- | -- | -- | | |||
| | Untouched headers | -- | -- | -- | -- | | | Untouched headers | -- | -- | -- | -- | | |||
| +-------------------+------+------------+-----------+------------+ | +-------------------+------+------------+-----------+------------+ | |||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| RPL-aware-leaf | RPL-aware-leaf | |||
| 6.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware-leaf | 6.12. Example of Flow from not-RPL-aware-leaf to not-RPL-aware-leaf | |||
| In this case the flow comprises: | In this case the flow comprises: | |||
| not-RPL-aware 6LN --> 6LR --> root (6LBR) --> 6LR --> not-RPL-aware | not-RPL-aware 6LN --> 6LR --> root (6LBR) --> 6LR --> not-RPL-aware | |||
| 6LN | 6LN | |||
| RPI is added in 6LR until the root and then might be removed, then | ||||
| RH3 is added. These headers are removed at 6LR before go to | This scenario is the combination of the previous two cases. | |||
| destination. | ||||
| +--------------+------+-----------+-----------+--------------+------+ | +--------------+------+-----------+-----------+--------------+------+ | |||
| | Header | IPv6 | 6LR | 6LBR | 6LR | IPv6 | | | Header | IPv6 | 6LR | 6LBR | 6LR | IPv6 | | |||
| +--------------+------+-----------+-----------+--------------+------+ | +--------------+------+-----------+-----------+--------------+------+ | |||
| | Inserted | -- | IPIP(RPI) | IPIP(RH3) | -- | -- | | | Inserted | -- | IPIP(RPI) | IPIP(RH3) | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Removed | -- | -- | IPIP(RPI) | IPIP(RH3, | -- | | | Removed | -- | -- | IPIP(RPI) | IPIP(RH3, | -- | | |||
| | headers | | | | opt RPI) | | | | headers | | | | opt RPI) | | | |||
| | Re-added | -- | -- | -- | -- | -- | | | Re-added | -- | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Modified | -- | -- | -- | -- | -- | | | Modified | -- | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| | Untouched | -- | -- | -- | -- | -- | | | Untouched | -- | -- | -- | -- | -- | | |||
| | headers | | | | | | | | headers | | | | | | | |||
| +--------------+------+-----------+-----------+--------------+------+ | +--------------+------+-----------+-----------+--------------+------+ | |||
| Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | Non Storing: Summary of the use of headers from not-RPL-aware-leaf to | |||
| not-RPL-aware-leaf | not-RPL-aware-leaf | |||
| 7. Problem statement | 7. Observations about the problem | |||
| There are cases from above that are not clear how to send the | 7.1. Storing mode | |||
| information. It requires furhter analysis on how to proceed to send | ||||
| the information from source to destination. | ||||
| From the above cases, we have in storing mode: | In the completely general storing case, which includes not-RPL aware | |||
| leaf nodes, it is not possible for a sending node to know if the | ||||
| destination is RPL aware, and therefore it must always use hop-by-hop | ||||
| IPIP encapsulation, and it can never omit the IPIP encapsulation. | ||||
| See table Table 1 | ||||
| - Flow from RPL-aware-leaf to non-RPL-aware-leaf: Somehow, the sender | The simplest fully general stiaution for storing mode is to always | |||
| has to know that the receiver is not RPL aware, and needs to know | put in hop-by-hop IPIP headers. [I-D.ietf-roll-routing-dispatch] | |||
| 6LR, and not even the root knows where the 6LR is located. | shows that this hop-by-hop IPIP header can be compressed down to | |||
| {TBD} bytes. | ||||
| - Flow from not-RPL-aware-leaf to not-RPL-aware-leaf: The problem to | There are potential significant advantages to having a single code | |||
| solve is how to indicate where to send the packet when get into LLN. | path that always processes IPIP headers with no options. | |||
| One approach is the 6LBR should be aware in which 6LR is the IPv6 | ||||
| node attached. | ||||
| As was mentioned above in the document, a possible solution could be | If all RPL aware nodes can be told/configured that there are no non- | |||
| adapted to all cases: An IPv6-in-IPv6 header can be used on a hop-by- | RPL aware leaf nodes, then the only case where an IPIP header is | |||
| hop basis, using either link-local addresses, or even IPv6 Global | needed is when communicating outside the LLN. The 6LBR knows well | |||
| Unicast Addresses, but each IPv6-in-IPv6 header needs to be added/ | when the communication is from the outside, and the 6LN can tell by | |||
| removed at each hop. | comparing the destination address to the prefix provided in the PIO. | |||
| If it is known that there are no communications outside the RPL | ||||
| domain (noting that the RPL domain may well extend to outside the | ||||
| LLN), then RPI headers can be included in all packets, and IPIP | ||||
| headers are *never* needed. This may be significantly advantageous | ||||
| in relatively closed systems such as in building or industrial | ||||
| automation. Again, there are advantages to having a single code | ||||
| path. | ||||
| In order to support the above two cases with full generality, the | ||||
| different situations (always do IPIP vs never use IPIP) should be | ||||
| signaled in the RPL protocol itself. | ||||
| 7.2. Non-Storing mode | ||||
| This the non-storing case, dealing with non-RPL aware leaf nodes is | ||||
| much easier as the 6LBR (DODAG root) has complete knowledge about the | ||||
| connectivity of all nodes, and all traffic flows through the root | ||||
| node. | ||||
| The 6LBR can recognize non-RPL aware leaf nodes because it will | ||||
| receive a DAO about that node from the 6LN immediately above that | ||||
| node. This means that the non-storing mode case can avoid ever using | ||||
| hop-by-hop IPIP headers. | ||||
| It is unclear what it would mean for an RH3 header to be present in a | ||||
| hop-by-hop IPIP header. The receiving node ought to consume the IPIP | ||||
| header, and therefore consume the RH3 as well, and then attempt to | ||||
| send the packet again. But intermediate 6LN nodes would not know how | ||||
| to forward the packet, so the RH3 would need to be retained. This is | ||||
| a new kind of IPv6 packet processing. Therefore it may be that on | ||||
| the outbound leg of non-storing RPL networks, that hop-by-hop IPIP | ||||
| header can NOT be used. | ||||
| [I-D.ietf-roll-routing-dispatch] shows how the destination=root, and | ||||
| destination=6LN IPIP header can be compressed down to {TBD} bytes. | ||||
| Unlike in the storing mode case, there are no need for all nodes to | ||||
| know about the existence of non-RPL aware nodes. Only the 6LBR needs | ||||
| to change when there are non-RPL aware nodes. Further, in the non- | ||||
| storing case, the 6LBR is informed by the DAOs when there are non-RPL | ||||
| aware nodes. | ||||
| 8. 6LoRH Compression cases | 8. 6LoRH Compression cases | |||
| The [I-D.ietf-6lo-routing-dispatch] proposes a compression method for | The [I-D.ietf-roll-routing-dispatch] proposes a compression method | |||
| RPI, RH3 and IPv6-in-IPv6. | for RPI, RH3 and IPv6-in-IPv6. | |||
| The uses cases mentioned in this draft MUST use 6LoRH. Examples of | In Storing Mode, for the examples of Flow from RPL-aware-leaf to non- | |||
| the use of 6LoRH are found in Apendix A of | RPL-aware-leaf and non-RPL-aware-leaf to non-RPL-aware-leaf comprise | |||
| [I-D.ietf-6lo-routing-dispatch]. | an IP-in-IP and RPI compression headers. The type of this case is | |||
| critical since IP-in-IP is encapsulating a RPI header. | ||||
| +--+-----+---+--------------+-----------+-------------+-------------+ | ||||
| |1 | 0|0 |TSE| 6LoRH Type 6 | Hop Limit | RPI - 6LoRH | LOWPAN IPHC | | ||||
| +--+-----+---+--------------+-----------+-------------+-------------+ | ||||
| Figure 5: Critical IP-in-IP (RPI). | ||||
| 9. IANA Considerations | 9. IANA Considerations | |||
| There are no IANA considerations related to this document. | There are no IANA considerations related to this document. | |||
| 10. Security Considerations | 10. Security Considerations | |||
| The security considerations covering of [RFC6553] and [RFC6554] apply | The security considerations covering of [RFC6553] and [RFC6554] apply | |||
| when the packets get into RPL Domain. | when the packets get into RPL Domain. | |||
| skipping to change at page 29, line 41 ¶ | skipping to change at page 29, line 38 ¶ | |||
| 12. References | 12. References | |||
| 12.1. Normative References | 12.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 | ||||
| (IPv6) Specification", RFC 2460, December 1998. | ||||
| [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | [RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J., | |||
| Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur, | |||
| JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | JP., and R. Alexander, "RPL: IPv6 Routing Protocol for | |||
| Low-Power and Lossy Networks", RFC 6550, | Low-Power and Lossy Networks", RFC 6550, | |||
| DOI 10.17487/RFC6550, March 2012, | DOI 10.17487/RFC6550, March 2012, | |||
| <http://www.rfc-editor.org/info/rfc6550>. | <http://www.rfc-editor.org/info/rfc6550>. | |||
| [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | [RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low- | |||
| Power and Lossy Networks (RPL) Option for Carrying RPL | Power and Lossy Networks (RPL) Option for Carrying RPL | |||
| Information in Data-Plane Datagrams", RFC 6553, | Information in Data-Plane Datagrams", RFC 6553, | |||
| skipping to change at page 30, line 13 ¶ | skipping to change at page 30, line 19 ¶ | |||
| <http://www.rfc-editor.org/info/rfc6553>. | <http://www.rfc-editor.org/info/rfc6553>. | |||
| [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | [RFC6554] Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6 | |||
| Routing Header for Source Routes with the Routing Protocol | Routing Header for Source Routes with the Routing Protocol | |||
| for Low-Power and Lossy Networks (RPL)", RFC 6554, | for Low-Power and Lossy Networks (RPL)", RFC 6554, | |||
| DOI 10.17487/RFC6554, March 2012, | DOI 10.17487/RFC6554, March 2012, | |||
| <http://www.rfc-editor.org/info/rfc6554>. | <http://www.rfc-editor.org/info/rfc6554>. | |||
| 12.2. Informative References | 12.2. Informative References | |||
| [I-D.ietf-6lo-routing-dispatch] | ||||
| Thubert, P., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "6LoWPAN Routing Header", draft-ietf-6lo-routing- | ||||
| dispatch-05 (work in progress), February 2016. | ||||
| [I-D.ietf-6tisch-architecture] | [I-D.ietf-6tisch-architecture] | |||
| Thubert, P., "An Architecture for IPv6 over the TSCH mode | Thubert, P., "An Architecture for IPv6 over the TSCH mode | |||
| of IEEE 802.15.4", draft-ietf-6tisch-architecture-09 (work | of IEEE 802.15.4", draft-ietf-6tisch-architecture-09 (work | |||
| in progress), November 2015. | in progress), November 2015. | |||
| [I-D.ietf-roll-routing-dispatch] | ||||
| Thubert, P., Bormann, C., Toutain, L., and R. Cragie, | ||||
| "6LoWPAN Routing Header", draft-ietf-roll-routing- | ||||
| dispatch-00 (work in progress), March 2016. | ||||
| [RFC6997] Goyal, M., Ed., Baccelli, E., Philipp, M., Brandt, A., and | ||||
| J. Martocci, "Reactive Discovery of Point-to-Point Routes | ||||
| in Low-Power and Lossy Networks", RFC 6997, | ||||
| DOI 10.17487/RFC6997, August 2013, | ||||
| <http://www.rfc-editor.org/info/rfc6997>. | ||||
| [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | [RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and | |||
| Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January | |||
| 2014, <http://www.rfc-editor.org/info/rfc7102>. | 2014, <http://www.rfc-editor.org/info/rfc7102>. | |||
| [Second6TischPlugtest] | [Second6TischPlugtest] | |||
| "2nd 6Tisch Plugtest", <http://www.ietf.org/mail- | "2nd 6Tisch Plugtest", <http://www.ietf.org/mail- | |||
| archive/web/6tisch/current/pdfgDMQcdCkRz.pdf>. | archive/web/6tisch/current/pdfgDMQcdCkRz.pdf>. | |||
| Authors' Addresses | Authors' Addresses | |||
| End of changes. 103 change blocks. | ||||
| 551 lines changed or deleted | 621 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/ | ||||