draft-ietf-roll-useofrplinfo-07.txt   draft-ietf-roll-useofrplinfo-08.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: January 21, 2017 SSW Expires: March 17, 2017 SSW
P. Thubert P. Thubert
Cisco Cisco
July 20, 2016 September 13, 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-07 draft-ietf-roll-useofrplinfo-08
Abstract Abstract
This document looks at different data flows through LLN (Low-Power This document looks at different data flows through LLN (Low-Power
and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power
and Lossy Networks) is used to establish routing. The document and Lossy Networks) is used to establish routing. The document
enumerates the cases where RFC 6553, RFC 6554 and IPv6-in-IPv6 enumerates the cases where RFC 6553, RFC 6554 and IPv6-in-IPv6
encapsulation is required. This analysis provides the basis on which encapsulation is required. This analysis provides the basis on which
to design efficient compression of these headers. to design efficient compression of these headers.
skipping to change at page 1, line 38 skipping to change at page 1, line 38
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 January 21, 2017. This Internet-Draft will expire on March 17, 2017.
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 16 skipping to change at page 2, line 16
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
2.1. hop-by-hop IPv6-in-IPv6 headers . . . . . . . . . . . . . 4 2.1. hop-by-hop IPv6-in-IPv6 headers . . . . . . . . . . . . . 4
3. Sample/reference topology . . . . . . . . . . . . . . . . . . 4 3. Sample/reference topology . . . . . . . . . . . . . . . . . . 4
4. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 8 5. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 9
5.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 9 5.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 9
5.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 10 5.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 10
5.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 11 5.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 11
5.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 11 5.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 11
5.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 12 5.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 12
5.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 12 5.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 12
5.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 13 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 . . . 14 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 . . 15
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 16
5.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 15 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 . . . . . . . . . . . . . . . . . . . . . . . . . . 16 leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 18
6. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 16 6. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 19
6.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 17 6.1. Example of Flow from RPL-aware-leaf to root . . . . . . . 20
6.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 17 6.2. Example of Flow from root to RPL-aware-leaf . . . . . . . 20
6.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 18 6.3. Example of Flow from root to not-RPL-aware-leaf . . . . . 21
6.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 19 6.4. Example of Flow from not-RPL-aware-leaf to root . . . . . 22
6.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 19 6.5. Example of Flow from RPL-aware-leaf to Internet . . . . . 23
6.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 20 6.6. Example of Flow from Internet to RPL-aware-leaf . . . . . 23
6.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 21 6.7. Example of Flow from not-RPL-aware-leaf to Internet . . . 24
6.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 21 6.8. Example of Flow from Internet to non-RPL-aware-leaf . . . 25
6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 22 6.9. Example of Flow from RPL-aware-leaf to RPL-aware-leaf . . 26
6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf 23 6.10. Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf 27
6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 24 6.11. Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 28
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 . . . . . . . . . . . . . . . . . . . . . . . . . . 24 leaf . . . . . . . . . . . . . . . . . . . . . . . . . . 29
7. Observations about the problem . . . . . . . . . . . . . . . 25 7. Observations about the cases . . . . . . . . . . . . . . . . 30
7.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 25 7.1. Storing mode . . . . . . . . . . . . . . . . . . . . . . 30
7.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 26 7.2. Non-Storing mode . . . . . . . . . . . . . . . . . . . . 31
8. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 26 8. 6LoRH Compression cases . . . . . . . . . . . . . . . . . . . 31
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31
10. Security Considerations . . . . . . . . . . . . . . . . . . . 27 10. Security Considerations . . . . . . . . . . . . . . . . . . . 32
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 27 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 32
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 32
12.1. Normative References . . . . . . . . . . . . . . . . . . 27 12.1. Normative References . . . . . . . . . . . . . . . . . . 32
12.2. Informative References . . . . . . . . . . . . . . . . . 28 12.2. Informative References . . . . . . . . . . . . . . . . . 33
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34
1. Introduction 1. Introduction
RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks)
[RFC6550] is a routing protocol for constrained networks. RFC 6553 [RFC6550] is a routing protocol for constrained networks. RFC 6553
[RFC6553] defines the "RPL option" (RPI), carried within the IPv6 [RFC6553] defines the "RPL option" (RPI), carried within the IPv6
Hop-by-Hop header to quickly identify inconsistencies (loops) in the Hop-by-Hop header to quickly identify inconsistencies (loops) in the
routing topology. RFC 6554 [RFC6554] defines the "RPL Source Route routing topology. RFC 6554 [RFC6554] defines the "RPL Source Route
Header" (RH3), an IPv6 Extension Header to deliver datagrams within a Header" (RH3), an IPv6 Extension Header to deliver datagrams within a
RPL routing domain, particularly in non-storing mode. RPL routing domain, particularly in non-storing mode.
skipping to change at page 4, line 5 skipping to change at page 3, line 49
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] applies to this document: LBR, LLN, Terminology defined in [RFC7102] applies to this document: LBR, LLN,
RPL, RPL Domain and ROLL. RPL, RPL Domain and ROLL.
RPL-node: It is device which implements RPL, thus we can say that the
device is RPL-capable or RPL-aware. Please note that the device can
be found inside the LLN or outside LLN. In this document a RPL-node
which is a leaf is called RPL-aware-leaf.
RPL-not-capable: It is device which do not implement RPL, thus we can
say that the device is not-RPL-aware. Please note that the device
can be found inside the LLN. In this document a not-RPL-node which
is a leaf is called not-RPL-aware-leaf.
2.1. hop-by-hop IPv6-in-IPv6 headers 2.1. hop-by-hop IPv6-in-IPv6 headers
The term "hop-by-hop IPv6-in-IPv6" header refers to: adding a header The term "hop-by-hop IPv6-in-IPv6" header refers to: adding a header
that originates from a node to an adjacent node, using the addresses that originates from a node to an adjacent node, using the addresses
(usually the GUA or ULA, but could use the link-local addresses) of (usually the GUA or ULA, but could use the link-local addresses) of
each node. If the packet must traverse multiple hops, then it must each node. If the packet must traverse multiple hops, then it must
be decapsulated at each hop, and then re-encapsulated again in a be decapsulated at each hop, and then re-encapsulated again in a
similar fashion. similar fashion.
3. Sample/reference topology 3. Sample/reference topology
skipping to change at page 6, line 36 skipping to change at page 6, line 36
+-+---+ +-+---+ +--+--+ +- --+ +---+-+ +-+---+ +-+---+ +--+--+ +- --+ +---+-+
|Leaf | | | | | |Leaf| |Leaf | |Leaf | | | | | |Leaf| |Leaf |
| 6LN | | | | | | 6LN| | 6LN | | 6LN | | | | | | 6LN| | 6LN |
+-----+ +-----+ +-----+ +----+ +-----+ +-----+ +-----+ +-----+ +----+ +-----+
Figure 2: A reference RPL Topology. Figure 2: A reference RPL Topology.
In Figure 2 is showed the reference RPL Topology for this document. In Figure 2 is showed the reference RPL Topology for this document.
The numbers in or above the nodes are there so that they may be The numbers in or above the nodes are there so that they may be
referenced in subsequent sections. In the figure, a 6LN can be a referenced in subsequent sections. In the figure, a 6LN can be a
router or a host. The 6LN leafs marked as (21) and (25) are routers. router or a host. The 6LN leafs marked as (21) is a RPL host that
The leaf marked 6LN (24) is a device which does not speak RPL at all does not have forwarding capability and (25) is a RPL router. The
leaf marked 6LN (24) is a device which does not speak RPL at all
(not-RPL-aware), but uses Router-Advertisements, 6LowPAN DAR/DAC and (not-RPL-aware), but uses Router-Advertisements, 6LowPAN DAR/DAC and
efficient-ND only to participate in the network [RFC6775]. In the efficient-ND only to participate in the network [RFC6775]. In the
document this leaf (24) is often named IPv6 node. The 6LBR in the document this leaf (24) is often named IPv6 node. The 6LBR in the
figure is the root of the Global DODAG. figure is the root of the Global DODAG.
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. architecture of a 6TiSCH network.
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.
This version of the document assumes the changes in This version of the document assumes the changes in
[I-D.ietf-6man-rfc2460bis] are passed. [I-D.ietf-6man-rfc2460bis] are passed (at the time to write this
specification, the draft is on version 05).
RPL-aware-leaf to root RPL-aware-leaf to root
root to RPL-aware-leaf root to RPL-aware-leaf
not-RPL-aware-leaf to root not-RPL-aware-leaf to root
root to not-RPL-aware-leaf root to not-RPL-aware-leaf
RPL-aware-leaf to Internet RPL-aware-leaf to Internet
skipping to change at page 7, line 41 skipping to change at page 7, line 42
RPL-aware-leaf to not-RPL-aware-leaf (non-storing) RPL-aware-leaf to not-RPL-aware-leaf (non-storing)
not-RPL-aware-leaf to RPL-aware-leaf (storing and non-storing) not-RPL-aware-leaf to RPL-aware-leaf (storing and non-storing)
not-RPL-aware-leaf to not-RPL-aware-leaf (non-storing) not-RPL-aware-leaf to not-RPL-aware-leaf (non-storing)
This document assumes the rule that a Header cannot be inserted or This document assumes the rule that a Header cannot be inserted or
removed on the fly inside an IPv6 packet that is being routed. This removed on the fly inside an IPv6 packet that is being routed. This
is a fundamental precept of the IPv6 architecture as outlined in is a fundamental precept of the IPv6 architecture as outlined in
[RFC2460] is that Extensions may not be added or removed except by [RFC2460]. Extensions may not be added or removed except by the
the sender or the receiver. (A revision to RFC2460 considered sender or the receiver.
changing this rule, but has kept it)
But, options in the Hop-by-Hop option which are marked with option But, options in the Hop-by-Hop option which are marked with option
type 01 ([RFC2460] section 4.2 and [I-D.ietf-6man-rfc2460bis]) SHOULD type 01 ([RFC2460] section 4.2 and [I-D.ietf-6man-rfc2460bis]) SHOULD
be ignored when received by a host or router which does not be ignored when received by a host or router which does not
understand that option. understand that option.
This means that in general, any packet that leaves the RPL domain of This means that in general, any packet that leaves the RPL domain of
an LLN (or leaves the LLN entirely) will NOT be discarded, even if it an LLN (or leaves the LLN entirely) will NOT be discarded, when it
has the [RFC6553] RPL Option Header known as the RPI or [RFC6554] has the [RFC6553] RPL Option Header known as the RPI or [RFC6554]
SRH3 Extension Header (S)RH3. SRH3 Extension Header (S)RH3.
With abolition of one of these rules it means that the RPI Hop-by-Hop The recent change to the second of these rules it means that the RPI
option MAY be left in place even if the end host does host understand Hop-by-Hop option MAY be left in place even if the end host does not
it. This collapses many of the cases above (where it says "or") understand it.
NOTE: There is some possible security risk when the RPI information
is released to the Internet. At this point this is a theoretical
situation. It is clear that the RPI option would waste some network
bandwidth when it escapes.
An intermediate router that needs to add an extension header (SHR3 or An intermediate router that needs to add an extension header (SHR3 or
RPI Option) must encapsulate the packet in an (additional) outer IP RPI Option) must encapsulate the packet in an (additional) outer IP
header where the new header can be placed. header. The new header can be placed is placed after this new outer
IP header.
This also means that a Header can only be removed by an intermediate A corollory is that an SHR3 or RPI Option can only be removed by an
router if it is placed in an encapsulating IPv6 Header, and in that intermediate router if it is placed in an encapsulating IPv6 Header,
case, the whole encapsulating header must be removed - a replacement which is addressed to the intermediate router. When it does so, the
may be added. Further, an intermediate router can only remove such whole encapsulating header must be removed. (A replacement may be
an outer header if that outer header has the router as the added). This sometimes can result in outer IP headers being
destination! addressed to the next hop router using link-local addresses.
Both RPI and RH3 headers may be modified by routers on the path of Both RPI and RH3 headers may be modified in very specific ways by
the packet without the need to add to remove an encapsulating header. routers on the path of the packet without the need to add to remove
Both headers were designed with this modification in mind, and both an encapsulating header. Both headers were designed with this
the RPL RH and the RPL option are marked mutable but recoverable, so modification in mind, and both the RPL RH and the RPL option are
an IPsec AH security header can be applied across these headers, but marked mutable but recoverable: so an IPsec AH security header can be
it may not secure all the values in those headers. applied across these headers, but it can not secure the values which
mutate.
RPI should be present in every single RPL data packet. There is one 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 exception in non-storing mode: when a packet is going down from the
root. In a downward non-storing mode, the entire route is written, root. In a downward non-storing mode, the entire route is written,
so there can be no loops by construction, nor any confusion about so there can be no loops by construction, nor any confusion about
which forwarding table to use. There may be cases (such as in which forwarding table to use (as the root has already made all
6tisch) where the instanceID may still be needed to pick an routing decisions). There still may be cases (such as in 6tisch)
appropriate priority or channel at each hop. where the instanceID portion of the RPI header may still be needed to
pick an appropriate priority or channel at each hop.
In the tables present in this document, the term "RPL aware leaf" is In the tables present in this document, the term "RPL aware leaf" is
has been shortened to "Raf", and "not-RPL aware leaf" has been has been shortened to "Raf", and "not-RPL aware leaf" has been
shortened to "~Raf" to make the table fit in available space. shortened to "~Raf" to make the table fit in available space.
The earlier examples are more extensive to make sure that the process The earlier examples are more extensive to make sure that the process
is clear, while later examples are more consise. is clear, while later examples are more consise.
5. Storing mode 5. Storing mode
skipping to change at page 9, line 23 skipping to change at page 9, line 31
In cases where no IP-in-IP header is needed, the column is left In cases where no IP-in-IP header is needed, the column is left
blank. blank.
The leaf can be a router 6LR or a host, both indicated as 6LN. The leaf can be a router 6LR or a host, both indicated as 6LN.
+--------------+-------+-------+-----------+---------------+ +--------------+-------+-------+-----------+---------------+
| Use Case | RPI | RH3 | IP-in-IP | IP-in-IP dst | | Use Case | RPI | RH3 | IP-in-IP | IP-in-IP dst |
+--------------+-------+-------+-----------+---------------+ +--------------+-------+-------+-----------+---------------+
| Raf to root | Yes | No | No | -- | | Raf to root | Yes | No | No | -- |
| root to Raf | Yes | No | No | -- | | root to Raf | Yes | No | No | -- |
| root to ~Raf | Yes | No | Yes | hop | | root to ~Raf | Yes | No | No | -- |
| ~Raf to root | Yes | No | Yes | root | | ~Raf to root | Yes | No | Yes | root |
| Raf to Int | Yes | No | Yes | root | | Raf to Int | Yes | No | No | -- |
| Int to Raf | Yes | No | Yes | raf | | Int to Raf | Yes | No | Yes | raf |
| ~Raf to Int | Yes | No | Yes | root | | ~Raf to Int | Yes | No | Yes | root |
| Int to ~Raf | Yes | No | Yes | hop | | Int to ~Raf | Yes | No | Yes | hop |
| Raf to Raf | Yes | No | No | -- | | Raf to Raf | Yes | No | No | -- |
| Raf to ~Raf | Yes | No | Yes | hop | | Raf to ~Raf | Yes | No | No | -- |
| ~Raf to Raf | Yes | No | Yes | dst | | ~Raf to Raf | Yes | No | Yes | dst |
| ~Raf to ~Raf | Yes | No | Yes | hop | | ~Raf to ~Raf | Yes | No | Yes | hop |
+--------------+-------+-------+-----------+---------------+ +--------------+-------+-------+-----------+---------------+
Table 1: Headers needed in Storing mode: RPI, RH3, IP-in-IP Table 1: Headers needed in Storing mode: RPI, RH3, IP-in-IP
encapsulation encapsulation
5.1. Example of Flow from RPL-aware-leaf to root 5.1. Example of Flow from RPL-aware-leaf to root
In storing mode, RFC 6553 (RPI) is used to send RPL Information In storing mode, RFC 6553 (RPI) is used to send RPL Information
instanceID and rank information. instanceID and rank information.
As stated in Section 16.2 of [RFC6550] a RPL-aware-leaf node does As stated 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
from upstream. (When the inconsistency in routing occurs, a leaf from upstream. (When the inconsistency in routing occurs, a leaf
node will generate a DIO with an infinite rank, to fix it). It may node will generate a DIO with an infinite rank, to fix it). It may
issue DAO and DIS messages though it generally ignores DAO and DIS issue DAO and DIS messages though it generally ignores DAO and DIS
messages. messages.
In storing mode, RFC 6553 (RPI) is used to send RPL Information
instanceID and rank information.
In this case the flow comprises: In this case the flow comprises:
RPL-aware-leaf (6LN) --> 6LR --> 6LR,... --> root (6LBR) RPL-aware-leaf (6LN) --> 6LR1,... --> 6LRN --> root (6LBR)
As it was mentioned In this document 6LRs, 6LBR are always full- As it was mentioned In this document 6LRs, 6LBR are always full-
fledge RPL routers. fledge RPL routers.
The 6LN inserts the RPI header, and sends the packet to 6LR which The 6LN inserts the RPI header, and sends the packet to 6LR which
decrements the rank in RPI and sends the packet up. When the packet decrements the rank in RPI and sends the packet up. When the packet
arrives at 6LBR, the RPI is removed and the packet is processed. arrives at 6LBR, the RPI is removed and the packet is processed.
No IP-in-IP header is required. No IP-in-IP header is required.
skipping to change at page 10, line 40 skipping to change at page 10, line 44
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+-----+------+------+ +-------------------+-----+------+------+
Storing: Summary of the use of headers from RPL-aware-leaf to root Storing: Summary of the use of headers from RPL-aware-leaf to root
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) --> 6LR1,... --> 6LRN --> RPL-aware-leaf (6LN)
In this case the 6LBR inserts RPI header and sends the packet down, In this case the 6LBR inserts RPI header and sends the packet down,
the 6LR is going to increment the rank in RPI (examines instanceID the 6LR is going to increment the rank in RPI (examines instanceID
for multiple tables), the packet is processed in 6LN and RPI removed. for multiple tables), the packet is processed in 6LN and RPI removed.
No IP-in-IP header is required. No IP-in-IP header is required.
+-------------------+------+-------+------+ +-------------------+------+-------+------+
| Header | 6LBR | 6LR | 6LN | | Header | 6LBR | 6LR | 6LN |
+-------------------+------+-------+------+ +-------------------+------+-------+------+
skipping to change at page 11, line 21 skipping to change at page 11, line 21
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| 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) --> 6LR1,... --> 6LRN --> not-RPL-aware-leaf (IPv6)
As the RPI extension can be ignored by the not-RPL-aware leaf, this As the RPI extension can be ignored by the not-RPL-aware leaf, this
situation is identical to the previous scenario. situation is identical to the previous scenario.
+-------------------+------+-----+------+ +-------------------+------+-----------+----------------+
| Header | 6LBR | 6LR | IPv6 | | Header | 6LBR | 6LR(1..N) | 6LN |
+-------------------+------+-----+------+ +-------------------+------+-----------+----------------+
| Inserted headers | -- | -- | -- | | Inserted headers | RPI | -- | -- |
| Removed headers | -- | -- | -- | | Removed headers | -- | -- | -- |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | -- | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | RPI (Ignored) |
+-------------------+------+-----+------+ +-------------------+------+-----------+----------------+
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 (IPv6) --> 6LR1,... --> 6LRN --> root (6LBR)
When the packet arrives from IPv6 node to 6LR, the 6LR will insert an When the packet arrives from IPv6 node to 6LR, the 6LR1 will insert
RPI header, encapsuladed in a IPv6-in-IPv6 header. The IPv6-in-IPv6 an RPI header, encapsuladed in a IPv6-in-IPv6 header. The IPv6-in-
header can be addressed to the next hop, or to the root. The root IPv6 header can be addressed to the next hop, or to the root. The
removes the header and processes the packet. root removes the header and processes the packet.
+-------------------+------+----------------+---------------+ +------------+------+---------------+---------------+---------------+
| Header | IPv6 | 6LR | 6LBR | | Header | IPv6 | 6LR1 | 6LRN | 6LBR |
+-------------------+------+----------------+---------------+ +------------+------+---------------+---------------+---------------+
| Inserted headers | -- | IP-in-IP(RPI) | -- | | Inserted | -- | IP-in-IP(RPI) | -- | -- |
| Removed headers | -- | -- | IP-in-IP(RPI) | | headers | | | | |
| Re-added headers | -- | -- | -- | | Removed | -- | -- | -- | IP-in-IP(RPI) |
| Modified headers | -- | -- | -- | | headers | | | | |
| Untouched headers | -- | -- | -- | | Re-added | -- | -- | -- | -- |
+-------------------+------+----------------+---------------+ | headers | | | | |
| Modified | -- | -- | IP-in-IP(RPI) | -- |
| 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 MAY go out to Internet as it will be RPL information from RFC 6553 MAY go out to Internet as it will be
ignored by nodes which have not been configured to be RPI aware. ignored by nodes which have not been configured to be RPI aware.
In this case the flow comprises: In this case the flow comprises:
RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) --> Internet RPL-aware-leaf (6LN) --> 6LR1,... --> 6LRN --> root (6LBR) -->
Internet
No IP-in-IP header is required. No IP-in-IP header is required.
+-------------------+------+------+------+----------+ +-------------------+------+-----------+------+----------------+
| Header | 6LN | 6LR | 6LBR | Internet | | Header | 6LN | 6LR(1..N) | 6LBR | Internet |
+-------------------+------+------+------+----------+ +-------------------+------+-----------+------+----------------+
| Inserted headers | RPI | -- | -- | -- | | Inserted headers | RPI | -- | -- | -- |
| Removed headers | -- | -- | -- | -- | | Removed headers | -- | -- | -- | -- |
| Re-added headers | -- | -- | -- | -- | | Re-added headers | -- | -- | -- | -- |
| Modified headers | -- | RPI | -- | -- | | Modified headers | -- | RPI | -- | -- |
| Untouched headers | -- | -- | -- | -- | | Untouched headers | -- | -- | -- | RPI (Ignored) |
+-------------------+------+------+------+----------+ +-------------------+------+-----------+------+----------------+
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) --> 6LR1,... --> 6LRN --> 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 sent to 6LR, which modifies the in a outer IPv6-in-IPv6 header and sent to 6LR, which modifies the
rank in the RPI. When the packet arrives at 6LN the RPI header is rank in the RPI. When the packet arrives at 6LN the RPI header is
removed and the packet processed. removed and the packet processed.
+-----------------+----------+---------------+------+---------------+ +----------+---------+--------------+---------------+---------------+
| Header | Internet | 6LBR | 6LR | 6LN | | Header | Interne | 6LBR | 6LR(1...N) | 6LN |
+-----------------+----------+---------------+------+---------------+ | | t | | | |
| Inserted | -- | IP-in-IP(RPI) | -- | -- | +----------+---------+--------------+---------------+---------------+
| headers | | | | | | Inserted | -- | IP-in- | -- | -- |
| Removed headers | -- | -- | -- | IP-in-IP(RPI) | | headers | | IP(RPI) | | |
| Re-added | -- | -- | -- | -- | | Removed | -- | -- | -- | IP-in-IP(RPI) |
| headers | | | | | | headers | | | | |
| Modified | -- | -- | RPI | -- | | Re-added | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
| Untouched | -- | -- | -- | -- | | Modified | -- | -- | IP-in-IP(RPI) | -- |
| headers | | | | | | 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) --> 6LR --> root (6LBR) --> Internet not-RPL-aware-leaf (IPv6) --> 6LR1,... --> 6LRN --> root (6LBR) -->
Internet
The 6LR node will add an IP-in-IP(RPI) header addressed either to the The 6LR1 node will add an IP-in-IP(RPI) header addressed either to
root, or hop-by-hop such that the root can remove the RPI header the root, or hop-by-hop such that the root can remove the RPI header
before passing upwards. before passing upwards.
The originating node will ideally leave the IPv6 flow label as zero The originating node will ideally leave the IPv6 flow label as zero
so that it can be better compressed through the LLN, and the 6LBR so that it can be better compressed through the LLN, and the 6LBR
will set the flow label to a non-zero value when sending to the will set the flow label to a non-zero value when sending to the
Internet. Internet.
+-----------------+------+---------------+---------------+----------+ +---------+-----+-------------+-------------+-------------+---------+
| Header | 6LN | 6LR | 6LBR | Internet | | Header | IPv | 6LR1 | 6LBN | 6LBR | Interne |
+-----------------+------+---------------+---------------+----------+ | | 6 | | | | t |
| Inserted | -- | IP-in-IP(RPI) | -- | -- | +---------+-----+-------------+-------------+-------------+---------+
| headers | | | | | | Inserte | -- | IP-in- | -- | -- | -- |
| Removed headers | -- | -- | IP-in-IP(RPI) | -- | | d | | IP(RPI) | | | |
| Re-added | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | | Removed | -- | -- | -- | IP-in- | -- |
| Modified | -- | -- | -- | -- | | headers | | | | IP(RPI) | |
| headers | | | | | | Re- | -- | -- | -- | -- | -- |
| Untouched | -- | -- | -- | -- | | added | | | | | |
| headers | | | | | | headers | | | | | |
+-----------------+------+---------------+---------------+----------+ | Modifie | -- | -- | IP-in- | -- | -- |
| d | | | IP(RPI) | | |
| 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
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) --> 6LR1,... --> 6LRN --> not-RPL-aware-leaf
(IPv6)
The 6LBR will have to add an RPI header within an IP-in-IP header. The 6LBR will have to add an RPI header within an IP-in-IP header.
The IP-in-IP can be addressed to the not-RPL-aware-leaf, leaving the The IP-in-IP can be addressed to the not-RPL-aware-leaf, leaving the
RPI inside. RPI inside.
The 6LBR MAY set the flow label on the inner IP-in-IP header to zero The 6LBR MAY set the flow label on the inner IP-in-IP header to zero
in order to aid in compression, as the packet will not emerge again in order to aid in compression, as the packet will not emerge again
from the LLN. from the LLN.
+-----------------+----------+---------------+---------------+------+ +-----------+----------+---------------+---------------+------------+
| Header | Internet | 6LBR | 6LR | IPv6 | | Header | Internet | 6LBR | 6LR(1...N) | IPv6 |
+-----------------+----------+---------------+---------------+------+ +-----------+----------+---------------+---------------+------------+
| Inserted | -- | IP-in-IP(RPI) | -- | -- | | Inserted | -- | IP-in-IP(RPI) | -- | -- |
| headers | | | | | | headers | | | | |
| Removed headers | -- | -- | IP-in-IP(RPI) | -- | | Removed | -- | -- | IP-in-IP(RPI) | -- |
| Re-added | -- | -- | -- | -- | | headers | | | | |
| headers | | | | | | Re-added | -- | -- | -- | -- |
| Modified | -- | -- | -- | -- | | headers | | | | |
| headers | | | | | | Modified | -- | -- | IP-in-IP(RPI) | -- |
| Untouched | -- | -- | -- | -- | | headers | | | | |
| headers | | | | | | Untouched | -- | -- | -- | RPI |
+-----------------+----------+---------------+---------------+------+ | headers | | | | (Ignored) |
+-----------+----------+---------------+---------------+------------+
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 optimization for both In [RFC6550] RPL allows a simple one-hop optimization for both
storing and non-storing networks. A node may send a packet destined storing and non-storing networks. A node may send a packet destined
to a one-hop neighbor directly to that node. Section 9 in [RFC6550]. to a one-hop neighbor directly to that node. Section 9 in [RFC6550].
In this case the flow comprises: In this case the flow comprises:
6LN --> 6LR --> common parent (6LR) --> 6LR --> 6LN 6LN --> 6LR1 --> common parent (6LRx) --> 6LRN --> 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 While the 6LR nodes will update the RPI, no node needs to add or
remove the RPI, so no IP-in-IP headers are necessary. This may be remove the RPI, so no IP-in-IP headers are necessary. This may be
done regardless of where the destination is, as the included RPI will done regardless of where the destination is, as the included RPI will
be ignored by the receiver. be ignored by the receiver.
+-------------+-------+---------------+---------------+-----+-------+ +------------+-------+---------------+---------------+------+-------+
| Header | 6LN | 6LR | 6LR (common | 6LR | 6LN | | Header | 6LN | 6LR1 | 6LRx (common | 6LRN | 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 | | | | | |
| Modified | -- | RPI | RPI | -- | -- | | Modified | -- | RPI | RPI | -- | -- |
| headers | | (decreasing | (increasing | | | | headers | | (decreasing | (increasing | | |
| | | rank) | rank) | | | | | | rank) | rank) | | |
| Untouched | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+-------------+-------+---------------+---------------+-----+-------+ +------------+-------+---------------+---------------+------+-------+
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 --> 6LR1 --> common parent (6LRx) --> 6LRN --> not-RPL-aware 6LN
(IPv6)
This situation is identical to the situation Section 5.9 This situation is identical to the previous situation Section 5.9
+-----------+-----+-------------+-------------+------+--------------+
| Header | 6LN | 6LR1 | 6LRx | 6LRN | IPv6 |
| | src | | (common | | |
| | | | parent) | | |
+-----------+-----+-------------+-------------+------+--------------+
| Inserted | RPI | -- | -- | -- | -- |
| headers | | | | | |
| Removed | -- | -- | -- | -- | RPI |
| headers | | | | | |
| Re-added | -- | -- | -- | -- | -- |
| headers | | | | | |
| Modified | -- | RPI | RPI | -- | -- |
| headers | | (decreasing | (increasing | | |
| | | rank) | rank) | | |
| Untouched | -- | -- | -- | -- | RPI(Ignored) |
| headers | | | | | |
+-----------+-----+-------------+-------------+------+--------------+
Storing: Summary of the use of headers for RPL-aware-leaf to 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 (IPv6) --> 6LR1 --> common parent (6LRx) --> 6LRN
--> 6LN
The 6LR receives the packet from the the IPv6 node and inserts and The 6LR1 receives the packet from the the IPv6 node and inserts and
the RPI header encapsulated in IPv6-in-IPv6 header. The IP-in-IP the RPI header encapsulated in IPv6-in-IPv6 header. The IP-in-IP
header is addressed to the destinion 6LN. header is addressed to the destination 6LN.
+--------+------+------------+------------+------------+------------+ +--------+------+------------+------------+------------+------------+
| Header | IPv6 | 6LR | common | 6LR | 6LN | | Header | IPv6 | 6LR1 | common | 6LRn | 6LN |
| | | | parent | | | | | | | parent | | |
| | | | (6LR) | | | | | | | (6LRx) | | |
+--------+------+------------+------------+------------+------------+ +--------+------+------------+------------+------------+------------+
| Insert | -- | IP-in- | -- | -- | -- | | Insert | -- | IP-in- | -- | -- | -- |
| ed hea | | IP(RPI) | | | | | ed hea | | IP(RPI) | | | |
| ders | | | | | | | ders | | | | | |
| Remove | -- | -- | -- | -- | IP-in- | | Remove | -- | -- | -- | -- | IP-in- |
| d head | | | | | IP(RPI) | | d head | | | | | IP(RPI) |
| ers | | | | | | | ers | | | | | |
| Re- | -- | -- | -- | -- | -- | | Re- | -- | -- | -- | -- | -- |
| added | | | | | | | added | | | | | |
| header | | | | | | | header | | | | | |
skipping to change at page 16, line 35 skipping to change at page 18, line 35
| aders | | | | | | | aders | | | | | |
+--------+------+------------+------------+------------+------------+ +--------+------+------------+------------+------------+------------+
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 src)--> 6LR1 --> 6LR2 --> root (6LBR) -->
RPL-aware 6LN (IPv6 node) 6LRn --> not-RPL-aware 6LN (IPv6 dst)
This flow is identical to Section 5.11 This flow is identical to Section 5.11
The 6LR receives the packet from the the IPv6 node and inserts the
RPI header (RPIa) encapsulated in IPv6-in-IPv6 header. The IPv6-in-
IPv6 header is addressed to the 6LBR. The 6LBR remove the IPv6-in-
IPv6 header and insert another one (RPIb) with destination to 6LRn
node.
+-------+-----+-----------+-----------+-----------+-----------+-----+
| Heade | IPv | 6LR1 | 6LR2 | 6LBR | 6LRn | IPv |
| r | 6 | | | | | 6 |
| | src | | | | | dst |
+-------+-----+-----------+-----------+-----------+-----------+-----+
| Inser | -- | IP-in- | -- | IP-in- | -- | -- |
| ted h | | IP(RPIa) | | IP(RPIb) | | |
| eader | | | | | | |
| s | | | | | | |
| Remov | -- | -- | -- | -- | -- | -- |
| ed he | | | | | | |
| aders | | | | | | |
| Re- | -- | -- | -- | -- | IP-in- | -- |
| added | | | | | IP(RPIb) | |
| heade | | | | | | |
| rs | | | | | | |
| Modif | -- | -- | IP-in- | -- | IP-in- | -- |
| ied h | | | IP(RPIa) | | IP(RPIb) | |
| eader | | | | | | |
| s | | | | | | |
| Untou | -- | -- | -- | -- | -- | -- |
| ched | | | | | | |
| heade | | | | | | |
| rs | | | | | | |
+-------+-----+-----------+-----------+-----------+-----------+-----+
Storing: Summary of the use of headers from not-RPL-aware-leaf to
non-RPL-aware-leaf
6. Non Storing mode 6. Non Storing mode
+--------------+------+------+-----------+---------------+ +--------------+------+------+-----------+---------------+
| Use Case | RPI | RH3 | IP-in-IP | IP-in-IP dst | | Use Case | RPI | RH3 | IP-in-IP | IP-in-IP dst |
+--------------+------+------+-----------+---------------+ +--------------+------+------+-----------+---------------+
| Raf to root | Yes | No | No | -- | | Raf to root | Yes | No | No | -- |
| root to Raf | Yes | Yes | No | -- | | root to Raf | Opt | Yes | No | -- |
| root to ~Raf | No | Yes | Yes | 6LR | | root to ~Raf | No | Yes | Yes | 6LR |
| ~Raf to root | Yes | No | Yes | root | | ~Raf to root | Yes | No | Yes | root |
| Raf to Int | Yes | No | Yes | root | | Raf to Int | Yes | No | Yes | root |
| Int to Raf | opt | Yes | Yes | dst | | Int to Raf | Opt | Yes | Yes | dst |
| ~Raf to Int | Yes | No | Yes | root | | ~Raf to Int | Yes | No | Yes | root |
| Int to ~Raf | opt | Yes | Yes | 6LR | | Int to ~Raf | Opt | Yes | Yes | 6LR |
| Raf to Raf | Yes | Yes | Yes | root/dst | | Raf to Raf | Yes | Yes | Yes | root/dst |
| Raf to ~Raf | Yes | Yes | Yes | root/6LR | | Raf to ~Raf | Yes | Yes | Yes | root/6LR |
| ~Raf to Raf | Yes | Yes | Yes | root/6LN | | ~Raf to Raf | Yes | Yes | Yes | root/6LN |
| ~Raf to ~Raf | Yes | Yes | Yes | root/6LR | | ~Raf to ~Raf | Yes | Yes | Yes | root/6LR |
+--------------+------+------+-----------+---------------+ +--------------+------+------+-----------+---------------+
Table 2: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP Table 2: Headers needed in Non-Storing mode: RPI, RH3, IP-in-IP
encapsulation encapsulation
6.1. Example of Flow from RPL-aware-leaf to root 6.1. Example of Flow from RPL-aware-leaf to root
skipping to change at page 17, line 39 skipping to change at page 20, line 39
RPL-aware-leaf (6LN) --> 6LR --> root (6LBR) RPL-aware-leaf (6LN) --> 6LR --> root (6LBR)
This situation 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 | -- | RPI | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | -- | -- | | Modified headers | -- | RPI | -- |
| 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)
The 6LBR will insert an RH3, and may optionally insert an RPI header. The 6LBR will insert an RH3, and may optionally insert an RPI header.
No IP-in-IP header is necessary as the traffic originates with an RPL No IP-in-IP header is necessary as the traffic originates with an RPL
aware node, the 6LBR. The destination is known to 6LBR because, the aware node, the 6LBR. The destination is known to RPL-aware because,
root knows the whole topology in non-storing mode. the root knows the whole topology in non-storing mode.
+-------------------+-----------------+------+----------+ +-------------------+-----------------+------+----------+
| Header | 6LBR | 6LR | 6LN | | Header | 6LBR | 6LR | 6LN |
+-------------------+-----------------+------+----------+ +-------------------+-----------------+------+----------+
| Inserted headers | (opt: 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)--> 6LR1...-->6LRn --> not-RPL-aware-leaf (IPv6)
In 6LBR the RH3 is added, modified in each intermediate 6LR and it is
fully consumed in the last 6LR, but left there. If the RPI is left
present, the IPv6 node which does not understand it will drop it,
therefore the RPI should be removed before reaching the IPv6-only
node. To permit removal, an IP-in-IP header (hop-by-hop) or
addressed to the last 6LR is necessary. Due the complete knowledge
of the topology at the root, the 6LBR is able to address the IP-in-IP
header to the last 6LR.
Omitting the RPI entirely is therefore a better solution, as no IP- In 6LBR the RH3 is added, modified in each intermediate 6LR (6LR1 and
in-IP header is necessary. so on) and it is fully consumed in the last 6LR (6LRn), but left
there. If RPI is left present, the IPv6 node which does not
understand it will ignore it (following 2460bis), thus encapsulation
is not necesary. Due the complete knowledge of the topology at the
root, the 6LBR is able to address the IP-in-IP header to the last
6LR.
+-------------------+------+-----+------+ +----------------+--------------+--------------+-------------+------+
| Header | 6LBR | 6LR | IPv6 | | Header | 6LBR | 6LR1 | 6LRn | IPv6 |
+-------------------+------+-----+------+ +----------------+--------------+--------------+-------------+------+
| Inserted headers | RH3 | -- | -- | | Inserted | (opt: RPI), | -- | -- | -- |
| Removed headers | -- | -- | -- | | headers | RH3 | | | |
| Re-added headers | -- | -- | -- | | Removed | -- | RH3 | -- | -- |
| Modified headers | -- | RH3 | -- | | headers | | | | |
| Untouched headers | -- | -- | -- | | Re-added | -- | -- | -- | -- |
+-------------------+------+-----+------+ | headers | | | | |
| Modified | -- | (opt: RPI), | (opt: RPI), | -- |
| headers | | RH3 | RH3 | |
| Untouched | -- | -- | -- | RPI |
| 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 ...--> 6LRn --> root (6LBR)
In this case the RPI is added by the first 6LR, encapsulated in an In this case the RPI is added by the first 6LR (6LR1), encapsulated
IP-in-IP header, and is not modified in the followings 6LRs. The RPI in an IP-in-IP header, and is modified in the followings 6LRs. The
and entire packet is consumed by the root. RPI and entire packet is consumed by the root.
+-------------------+------+----------------+------+----------------+ +------------+------+---------------+---------------+---------------+
| Header | IPv6 | 6LR1 | 6LR2 | 6LBR | | Header | IPv6 | 6LR1 | 6LR2 | 6LBR |
+-------------------+------+----------------+------+----------------+ +------------+------+---------------+---------------+---------------+
| Inserted headers | -- | IP-in-IP(RPI) | -- | -- | | Inserted | -- | IP-in-IP(RPI) | -- | -- |
| Removed headers | -- | -- | -- | IP-in-IP(RPI) | | headers | | | | |
| Re-added headers | -- | -- | -- | -- | | Removed | -- | -- | -- | IP-in-IP(RPI) |
| Modified headers | -- | -- | -- | -- | | headers | | | | |
| Untouched headers | -- | IP-in-IP(RPI) | -- | -- | | Re-added | -- | -- | -- | -- |
+-------------------+------+----------------+------+----------------+ | headers | | | | |
| Modified | -- | IP-in-IP(RPI) | IP-in-IP(RPI) | -- |
| 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
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) --> 6LR1 ...--> 6LRn --> root (6LBR) -->
Internet
This case requires that the RPI be added, but removed by the 6LBR. This case is identical to storing-mode case.
The 6LN must therefore add the RPI inside an IP-in-IP header,
addressed to the root. This case is identical to storing-mode case.
The IPv6 flow label should be set to zero to aid in compression, and The IPv6 flow label should be set to zero to aid in compression, and
the 6LBR will set it to a non-zero value when sending towards the the 6LBR will set it to a non-zero value when sending towards the
Internet. Internet.
+-----------------+---------------+------+---------------+----------+ +-------------------+------+-----------+------+----------------+
| Header | 6LN | 6LR | 6LBR | Internet | | Header | 6LN | 6LR(1..N) | 6LBR | Internet |
+-----------------+---------------+------+---------------+----------+ +-------------------+------+-----------+------+----------------+
| Inserted | IP-in-IP(RPI) | -- | -- | -- | | Inserted headers | RPI | -- | -- | -- |
| headers | | | | | | Removed headers | -- | -- | -- | -- |
| Removed headers | -- | -- | IP-in-IP(RPI) | -- | | Re-added headers | -- | -- | -- | -- |
| Re-added | -- | -- | -- | -- | | Modified headers | -- | RPI | -- | -- |
| headers | | | | | | Untouched headers | -- | -- | -- | RPI (Ignored) |
| Modified | -- | -- | -- | -- | +-------------------+------+-----------+------+----------------+
| headers | | | | |
| Untouched | -- | RPI | -- | -- |
| 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) --> 6LR1...--> 6LRn --> RPL-aware-leaf (6LN)
The 6LBR must add an RH3 header. As the 6LBR will know the path and The 6LBR must add an RH3 header. As the 6LBR will know the path and
address of the target not, it can address the IP-in-IP header to that address of the target node, it can address the IP-in-IP header to
node. The 6LBR will zero the flow label upon entry in order to aid that node. The 6LBR will zero the flow label upon entry in order to
compression. aid compression.
The RPI may be added or not. The RPI may be added or not, it is optional.
+----------+----------+-----------------------+---------------+-----+ +--------+-------+----------------+----------------+----------------+
| Header | Internet | 6LBR | 6LR | 6LN | | Header | Inter | 6LBR | 6LR | 6LN |
+----------+----------+-----------------------+---------------+-----+ | | net | | | |
| Inserted | -- | IP-in-IP(RH3,opt:RPI) | -- | -- | +--------+-------+----------------+----------------+----------------+
| headers | | | | | | Insert | -- | IP-in-IP(RH3,o | -- | -- |
| Removed | -- | -- | IP-in-IP(RH3) | -- | | ed hea | | pt:RPI) | | |
| headers | | | | | | ders | | | | |
| Re-added | -- | -- | -- | -- | | Remove | -- | -- | -- | IP-in-IP(RH3,o |
| headers | | | | | | d head | | | | pt:RPI) |
| Modified | -- | -- | IP-in-IP(RH3) | -- | | ers | | | | |
| headers | | | | | | Re- | -- | -- | -- | -- |
| Untouche | -- | -- | -- | -- | | added | | | | |
| d | | | | | | header | | | | |
| headers | | | | | | s | | | | |
+----------+----------+-----------------------+---------------+-----+ | Modifi | -- | -- | IP-in-IP(RH3,o | -- |
| ed hea | | | pt:RPI) | |
| ders | | | | |
| Untouc | -- | -- | -- | -- |
| hed he | | | | |
| aders | | | | |
+--------+-------+----------------+----------------+----------------+
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 (IPv6) --> 6LR1..--> 6LRn --> 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. As RPL headers are added in the IPv6 node, the first 6LN will node. As RPL headers are added in the IPv6 node, the first 6LN will
add an RPI header inside a new IP-in-IP header. The IP-in-IP header add an RPI header inside a new IP-in-IP header. The IP-in-IP header
will be addressed to the root. This case is identical to the will be addressed to the root. This case is identical to the
storing-mode case (Section 5.7). storing-mode case (Section 5.7).
+-----------------+------+---------------+---------------+----------+ +---------+-----+-------------+-------------+-------------+---------+
| Header | IPv6 | 6LR | 6LBR | Internet | | Header | IPv | 6LR1 | 6LRn | 6LBR | Interne |
+-----------------+------+---------------+---------------+----------+ | | 6 | | | | t |
| Inserted | -- | IP-in-IP(RPI) | -- | -- | +---------+-----+-------------+-------------+-------------+---------+
| headers | | | | | | Inserte | -- | IP-in- | -- | -- | -- |
| Removed headers | -- | -- | IP-in-IP(RPI) | -- | | d | | IP(RPI) | | | |
| Re-added | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | | Removed | -- | -- | -- | IP-in- | -- |
| Modified | -- | -- | -- | -- | | headers | | | | IP(RPI) | |
| headers | | | | | | Re- | -- | -- | -- | -- | -- |
| Untouched | -- | -- | -- | -- | | added | | | | | |
| headers | | | | | | headers | | | | | |
+-----------------+------+---------------+---------------+----------+ | Modifie | -- | -- | IP-in- | -- | -- |
| d | | | IP(RPI) | | |
| headers | | | | | |
| Untouch | -- | -- | -- | -- | -- |
| ed | | | | | |
| 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 (IPv6 node) Internet --> root (6LBR) --> 6LR1...--> 6LRn --> not-RPL-aware-leaf
(IPv6)
The 6LBR must add an RH3 header inside an IP-in-IP header. The 6LBR The 6LBR must add an RH3 header inside an IP-in-IP header. The 6LBR
will know the path, and will recognize that the final node is not an 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 RPL capable node as it will have received the connectivity DAO from
the nearest 6LR. The 6LBR can therefore make the IP-in-IP header the nearest 6LR. The 6LBR can therefore make the IP-in-IP header
destination be the last 6LR. The 6LBR will set to zero the flow destination be the last 6LR. The 6LBR will set to zero the flow
label upon entry in order to aid compression. label upon entry in order to aid compression.
+----------+---------+-----------------------+---------------+------+ +--------+-------+-----------------+------------+------------+------+
| Header | Interne | 6LBR | 6LR | IPv6 | | Header | Inter | 6LBR | 6LR1 | 6LRn | IPv6 |
| | t | | | | | | net | | | | |
+----------+---------+-----------------------+---------------+------+ +--------+-------+-----------------+------------+------------+------+
| Inserted | -- | IP-in-IP(RH3,opt:RPI) | -- | -- | | Insert | -- | IP-in- | -- | -- | -- |
| headers | | | | | | ed hea | | IP(RH3,opt:RPI) | | | |
| Removed | -- | -- | IP-in-IP(RH3, | -- | | ders | | | | | |
| headers | | | RPI) | | | Remove | -- | -- | -- | IP-in- | -- |
| Re-added | -- | -- | -- | -- | | d head | | | | IP(RH3, | |
| headers | | | | | | ers | | | | RPI) | |
| Modified | -- | -- | -- | -- | | Re- | -- | -- | -- | -- | -- |
| headers | | | | | | added | | | | | |
| Untouche | -- | -- | -- | -- | | header | | | | | |
| d | | | | | | s | | | | | |
| headers | | | | | | Modifi | -- | -- | IP-in- | IP-in- | -- |
+----------+---------+-----------------------+---------------+------+ | ed hea | | | IP(RH3, | IP(RH3, | |
| ders | | | RPI) | RPI) | |
| Untouc | -- | -- | -- | -- | RPI |
| hed he | | | | | |
| aders | | | | | |
+--------+-------+-----------------+------------+------------+------+
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 --> 6LR1 --> root (6LBR) --> 6LRN --> 6LN
This case involves only nodes in same RPL Domain. The originating This case involves only nodes in same RPL Domain. The originating
node will add an RPI header to the original packet, and send the node will add an RPI header to the original packet, and send the
packet upwards. packet upwards.
The originating node could put the RPI into an IP-in-IP header The originating node SHOULD put the RPI into an IP-in-IP header
addressed to the root, so that the 6LBR can remove that header. addressed to the root, so that the 6LBR can remove that header. If
it does not, then additional resources are wasted on the way down to
carry the useless RPI option.
The 6LBR will need to insert an RH3 header, which requires that it The 6LBR will need to insert an RH3 header, which requires that it
add an IP-in-IP header. It may be able to remove the RPI if it was add an IP-in-IP header. It SHOULD be able to remove the RPI, as it
contained in an IP-in-IP header addressed to it. Otherwise, there was contained in an IP-in-IP header addressed to it. Otherwise,
may be an RPI header buried inside the inner IP header, which should there MAY be an RPI header buried inside the inner IP header, which
get ignored. should get ignored.
Networks that use the RPL P2P extension [RFC6997] are essentially Networks that use the RPL P2P extension [RFC6997] are essentially
non-storing DODAGs and fall into this scenario. non-storing DODAGs and fall into this scenario or scenario
Section 6.2, with the originating node acting as 6LBR.
+----------+---------------+--------------+-----+-------------------+ +---------+-------------+------+--------------+------+--------------+
| Header | 6LN src | 6LBR | 6LR | 6LN dst | | Header | 6LN src | 6LR1 | 6LBR | 6LRN | 6LN dst |
+----------+---------------+--------------+-----+-------------------+ +---------+-------------+------+--------------+------+--------------+
| Inserted | IP-in-IP(RPI) | IP-in-IP(RH3 | -- | -- | | Inserte | IP-in- | -- | IP-in-IP(RH3 | -- | -- |
| headers | | to 6LN,RPI) | | | | d | IP(RPI1) | | to 6LN, opt | | |
| Removed | -- | -- | -- | IP-in-IP(RH3,RPI) | | headers | | | RPI2) | | |
| headers | | | | | | Removed | -- | -- | IP-in- | -- | IP-in- |
| Re-added | -- | -- | -- | -- | | headers | | | IP(RPI1) | | IP(RH3, opt |
| headers | | | | | | | | | | | RPI2) |
| Modified | -- | -- | -- | -- | | Re- | -- | -- | -- | -- | -- |
| headers | | | | | | added | | | | | |
| Untouche | -- | -- | -- | -- | | headers | | | | | |
| d | | | | | | Modifie | -- | -- | -- | -- | -- |
| headers | | | | | | d | | | | | |
+----------+---------------+--------------+-----+-------------------+ | headers | | | | | |
| Untouch | -- | -- | -- | -- | -- |
| ed | | | | | |
| 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 (IPv6 node) 6LN --> 6LR1 --> root (6LBR) --> 6LRn --> not-RPL-aware (IPv6)
As in the previous case, the 6LN will insert an RPI header which MUST As in the previous case, the 6LN will insert an RPI (RPI1) header
be in an IP-in-IP header addressed to the root so that the 6LBR can which MUST be in an IP-in-IP header addressed to the root so that the
remove this RPI. The 6LBR will then insert an RH3 inside a new IP- 6LBR can remove this RPI. The 6LBR will then insert an RH3 inside a
in-IP header addressed to the 6LN above the destination node. new IP-in-IP header addressed to the 6LN destination node. The RPI
is optional from 6LBR to 6LRn (RPI2).
+-----------+---------------+---------------+----------------+------+ +--------+------------+------------+------------+------------+------+
| Header | 6LN | 6LBR | 6LR | IPv6 | | Header | 6LN | 6LR1 | 6LBR | 6LRn | IPv6 |
+-----------+---------------+---------------+----------------+------+ +--------+------------+------------+------------+------------+------+
| Inserted | IP-in-IP(RPI) | IP-in-IP(RH3, | -- | -- | | Insert | IP-in- | -- | IP-in- | -- | -- |
| headers | | opt RPI) | | | | ed hea | IP(RPI1) | | IP(RH3, | | |
| Removed | -- | IP-in-IP(RPI) | IP-in-IP(RH3, | -- | | ders | | | opt RPI2) | | |
| headers | | | opt RPI) | | | Remove | -- | -- | IP-in- | IP-in- | -- |
| Re-added | -- | -- | -- | -- | | d head | | | IP(RPI1) | IP(RH3, | |
| headers | | | | | | ers | | | | opt RPI2) | |
| Modified | -- | -- | -- | -- | | Re- | -- | -- | -- | -- | -- |
| headers | | | | | | added | | | | | |
| Untouched | -- | -- | -- | -- | | header | | | | | |
| headers | | | | | | s | | | | | |
+-----------+---------------+---------------+----------------+------+ | Modifi | -- | IP-in- | -- | IP-in- | -- |
| ed hea | | IP(RPI1) | | IP(RH3, | |
| ders | | | | opt RPI2) | |
| Untouc | -- | -- | -- | -- | opt |
| hed he | | | | | RPI2 |
| aders | | | | | |
+--------+------------+------------+------------+------------+------+
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 (IPv6) --> 6LR1 --> root (6LBR) --> 6LRn --> 6LN
This scenario is mostly identical to the previous one. The RPI is This scenario is mostly identical to the previous one. The RPI is
added by the first 6LR inside an IP-in-IP header addressed to the added by the first 6LR (6LR1) inside an IP-in-IP header addressed to
root. The 6LBR will remove this RPI, and add it's own IP-in-IP the root. The 6LBR will remove this RPI, and add it's own IP-in-IP
header containing an RH3 header. header containing an RH3 header and optional RPI (RPI2).
+------------+------+---------------+---------------+---------------+ +--------+-----+------------+-------------+------------+------------+
| Header | IPv6 | 6LR | 6LBR | 6LN | | Header | IPv | 6LR1 | 6LBR | 6LRn | 6LN |
+------------+------+---------------+---------------+---------------+ | | 6 | | | | |
| Inserted | -- | IP-in-IP(RPI) | IP-in-IP(RH3) | -- | +--------+-----+------------+-------------+------------+------------+
| headers | | | | | | Insert | -- | IP-in- | IP-in- | -- | -- |
| Removed | -- | IP-in-IP(RPI) | -- | IP-in-IP(RH3) | | ed hea | | IP(RPI1) | IP(RH3, opt | | |
| headers | | | | | | ders | | | RPI2) | | |
| Re-added | -- | -- | -- | -- | | Remove | -- | -- | IP-in- | -- | IP-in- |
| headers | | | | | | d head | | | IP(RPI1) | | IP(RH3, |
| Modified | -- | -- | -- | -- | | ers | | | | | opt RPI2) |
| headers | | | | | | Re- | -- | -- | -- | -- | -- |
| Untouched | -- | -- | -- | -- | | added | | | | | |
| headers | | | | | | header | | | | | |
+------------+------+---------------+---------------+---------------+ | s | | | | | |
| Modifi | -- | -- | -- | IP-in- | -- |
| ed hea | | | | IP(RH3, | |
| ders | | | | opt RPI2) | |
| Untouc | -- | -- | -- | -- | -- |
| hed he | | | | | |
| aders | | | | | |
+--------+-----+------------+-------------+------------+------------+
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 (IPv6 src)--> 6LR1 --> root (6LBR) --> 6LRn -->
(IPv6 node) not-RPL-aware (IPv6 dst)
This scenario is the combination of the previous two cases. This scenario is the combination of the previous two cases.
+----------+-----+-------------+--------------+--------------+------+ +---------+-----+--------------+--------------+--------------+------+
| Header | IPv | 6LR | 6LBR | 6LR | IPv6 | | Header | IPv | 6LR1 | 6LBR | 6LRn | IPv6 |
| | 6 | | | | | | | 6 | | | | dst |
+----------+-----+-------------+--------------+--------------+------+ | | src | | | | |
| Inserted | -- | IP-in- | IP-in- | -- | -- | +---------+-----+--------------+--------------+--------------+------+
| headers | | IP(RPI) | IP(RH3) | | | | Inserte | -- | IP-in- | IP-in- | -- | -- |
| Removed | -- | -- | IP-in- | IP-in- | -- | | d | | IP(RPI1) | IP(RH3) | | |
| headers | | | IP(RPI) | IP(RH3, opt | | | headers | | | | | |
| | | | | RPI) | | | Removed | -- | -- | IP-in- | IP-in- | -- |
| Re-added | -- | -- | -- | -- | -- | | headers | | | IP(RPI1) | IP(RH3, opt | |
| headers | | | | | | | | | | | RPI2) | |
| Modified | -- | -- | -- | -- | -- | | Re- | -- | -- | -- | -- | -- |
| headers | | | | | | | added | | | | | |
| Untouche | -- | -- | -- | -- | -- | | headers | | | | | |
| d | | | | | | | Modifie | -- | -- | -- | -- | -- |
| headers | | | | | | | d | | | | | |
+----------+-----+-------------+--------------+--------------+------+ | headers | | | | | |
| Untouch | -- | -- | -- | -- | -- |
| ed | | | | | |
| 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. Observations about the problem 7. Observations about the cases
7.1. Storing mode 7.1. Storing mode
In the completely general storing case, which includes not-RPL aware [I-D.ietf-roll-routing-dispatch] shows that this hop-by-hop IP-in-IP
leaf nodes, it is not possible for a sending node to know if the header can be compressed down to {TBD} bytes.
destination is RPL aware, and therefore it must always use hop-by-hop
IP-in-IP encapsulation, and it can never omit the IP-in-IP
encapsulation. See table Table 1
The simplest fully general approach for storing mode is to always put
in hop-by-hop IP-in-IP headers. [I-D.ietf-roll-routing-dispatch]
shows that this hop-by-hop IP-in-IP header can be compressed down to
{TBD} bytes.
There are potential significant advantages to having a single code There are potential significant advantages to having a single code
path that always processes IP-in-IP headers with no options. path that always processes IP-in-IP headers with no options.
If all RPL aware nodes can be told/configured that there are no non- Thanks to the relaxation of the RFC2406 rule about discarding unknown
RPL aware leaf nodes, then the only case where an IP-in-IP header is Hop-by-Hop options, there is no longer any uncertainty about when to
needed is when communicating outside the LLN. The 6LBR knows well use an IPIP header in the storing mode case. The RPI header SHOULD
when the communication is from the outside, and the 6LN can tell by always be added when 6LRs originate packets (without IPIP headers),
comparing the destination address to the prefix provided in the PIO. and IPIP headers should always be added (addressed to the root when
If it is known that there are no communications outside the RPL on the way up, to the end-host when on the way down) when a 6LR finds
domain (noting that the RPL domain may well extend to outside the it needs to insert an RPI header. (XXX - this is a problem for
LLN), then RPI headers can be included in all packets, and IP-in-IP storing mode optimization)
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 In order to support the above two cases with full generality, the
different situations (always do IP-in-IP vs never use IP-in-IP) different situations (always do IP-in-IP vs never use IP-in-IP)
should be signaled in the RPL protocol itself. should be signaled in the RPL protocol itself.
7.2. Non-Storing mode 7.2. Non-Storing mode
In the non-storing case, dealing with non-RPL aware leaf nodes is In the non-storing case, dealing with non-RPL aware leaf nodes is
much easier as the 6LBR (DODAG root) has complete knowledge about the much easier as the 6LBR (DODAG root) has complete knowledge about the
connectivity of all DODAG nodes, and all traffic flows through the connectivity of all DODAG nodes, and all traffic flows through the
root node. root node.
The 6LBR can recognize non-RPL aware leaf nodes because it will The 6LBR can recognize non-RPL aware leaf nodes because it will
receive a DAO about that node from the 6LN immediately above that 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 node. This means that the non-storing mode case can avoid ever using
hop-by-hop IP-in-IP headers. hop-by-hop IP-in-IP headers.
It is unclear what it would mean for an RH3 header to be present in a
hop-by-hop IP-in-IP header. The receiving node ought to consume the
IP-in-IP 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 (because they do not save the
sate), 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 IP-in-IP header can NOT
be used.
[I-D.ietf-roll-routing-dispatch] shows how the destination=root, and [I-D.ietf-roll-routing-dispatch] shows how the destination=root, and
destination=6LN IP-in-IP header can be compressed down to {TBD} destination=6LN IP-in-IP header can be compressed down to {TBD}
bytes. bytes.
Unlike in the storing mode case, there is no need for all nodes to Unlike in the storing mode case, there is no need for all nodes to
know about the existence of non-RPL aware nodes. Only the 6LBR needs 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- 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 storing case, the 6LBR is informed by the DAOs when there are non-RPL
aware nodes. aware nodes.
skipping to change at page 27, line 36 skipping to change at page 32, line 24
The authors would like to acknowledge the review, feedback, and The authors would like to acknowledge the review, feedback, and
comments of Robert Cragie, Simon Duquennoy, Cenk Guendogan, Peter van comments of Robert Cragie, Simon Duquennoy, Cenk Guendogan, Peter van
der Stok, Xavier Vilajosana and Thomas Watteyne. der Stok, Xavier Vilajosana and Thomas Watteyne.
12. References 12. References
12.1. Normative References 12.1. Normative References
[I-D.ietf-6man-rfc2460bis] [I-D.ietf-6man-rfc2460bis]
Deering, D. and R. Hinden, "Internet Protocol, Version 6 Hinden, R., "Internet Protocol, Version 6 (IPv6)
(IPv6) Specification", draft-ietf-6man-rfc2460bis-05 (work Specification", draft-ietf-6man-rfc2460bis-06 (work in
in progress), June 2016. progress), September 2016.
[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 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, December 1998. (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.,
skipping to change at page 29, line 30 skipping to change at page 34, line 22
Email: maria.ines.robles@ericsson.com Email: maria.ines.robles@ericsson.com
Michael C. Richardson Michael C. Richardson
Sandelman Software Works Sandelman Software Works
470 Dawson Avenue 470 Dawson Avenue
Ottawa, ON K1Z 5V7 Ottawa, ON K1Z 5V7
CA CA
Email: mcr+ietf@sandelman.ca Email: mcr+ietf@sandelman.ca
URI: http://www.sandelman.ca/ URI: http://www.sandelman.ca/mcr/
Pascal Thubert Pascal Thubert
Cisco Systems, Inc Cisco Systems, Inc
Village d'Entreprises Green Side 400, Avenue de Roumanille Village d'Entreprises Green Side 400, Avenue de Roumanille
Batiment T3, Biot - Sophia Antipolis 06410 Batiment T3, Biot - Sophia Antipolis 06410
France France
Email: pthubert@cisco.com Email: pthubert@cisco.com
 End of changes. 90 change blocks. 
396 lines changed or deleted 511 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/