draft-ietf-roll-useofrplinfo-33.txt   draft-ietf-roll-useofrplinfo-34.txt 
ROLL Working Group M. Robles ROLL Working Group M. Robles
Internet-Draft Aalto Internet-Draft Aalto/UTN-FRM
Updates: 6553, 6550, 8138 (if approved) M. Richardson Updates: 6553, 6550, 8138 (if approved) M. Richardson
Intended status: Standards Track SSW Intended status: Standards Track SSW
Expires: June 15, 2020 P. Thubert Expires: July 23, 2020 P. Thubert
Cisco Cisco
December 13, 2019 January 20, 2020
Using RPI Option Type, Routing Header for Source Routes and IPv6-in-IPv6 Using RPI Option Type, Routing Header for Source Routes and IPv6-in-IPv6
encapsulation in the RPL Data Plane encapsulation in the RPL Data Plane
draft-ietf-roll-useofrplinfo-33 draft-ietf-roll-useofrplinfo-34
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 RFC6553 (RPI Option Type), RFC6554 enumerates the cases where RFC6553 (RPI Option Type), RFC6554
(Routing Header for Source Routes) and IPv6-in-IPv6 encapsulation is (Routing Header for Source Routes) and IPv6-in-IPv6 encapsulation is
required in data plane. This analysis provides the basis on which to required in data plane. This analysis provides the basis on which to
design efficient compression of these headers. This document updates design efficient compression of these headers. This document updates
skipping to change at page 1, line 44 skipping to change at page 1, line 44
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on June 15, 2020. This Internet-Draft will expire on July 23, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2020 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 33 skipping to change at page 2, line 33
1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 4
2. Terminology and Requirements Language . . . . . . . . . . . . 5 2. Terminology and Requirements Language . . . . . . . . . . . . 5
3. RPL Overview . . . . . . . . . . . . . . . . . . . . . . . . 6 3. RPL Overview . . . . . . . . . . . . . . . . . . . . . . . . 6
4. Updates to RFC6553, RFC6550 and RFC8138 . . . . . . . . . . . 7 4. Updates to RFC6553, RFC6550 and RFC8138 . . . . . . . . . . . 7
4.1. Updates to RFC6550: Advertising External Routes with Non- 4.1. Updates to RFC6550: Advertising External Routes with Non-
Storing Mode Signaling. . . . . . . . . . . . . . . . . . 7 Storing Mode Signaling. . . . . . . . . . . . . . . . . . 7
4.2. Updates to RFC6553: Indicating the new RPI Option Type. . 8 4.2. Updates to RFC6553: Indicating the new RPI Option Type. . 8
4.3. Updates to RFC6550: Indicating the new RPI in the 4.3. Updates to RFC6550: Indicating the new RPI in the
DODAG Configuration Option Flag. . . . . . . . . . . . . 11 DODAG Configuration Option Flag. . . . . . . . . . . . . 11
4.4. Updates to RFC8138: Indicating the way to decompress with 4.4. Updates to RFC8138: Indicating the way to decompress with
the new RPI Option Type. . . . . . . . . . . . . . . . . 12 the new RPI Option Type. . . . . . . . . . . . . . . . . 13
5. Sample/reference topology . . . . . . . . . . . . . . . . . . 14 5. Sample/reference topology . . . . . . . . . . . . . . . . . . 14
6. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 16 6. Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . 16
7. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 19 7. Storing mode . . . . . . . . . . . . . . . . . . . . . . . . 19
7.1. Storing Mode: Interaction between Leaf and Root . . . . . 20 7.1. Storing Mode: Interaction between Leaf and Root . . . . . 20
7.1.1. SM: Example of Flow from RAL to root . . . . . . . . 21 7.1.1. SM: Example of Flow from RAL to root . . . . . . . . 20
7.1.2. SM: Example of Flow from root to RAL . . . . . . . . 21 7.1.2. SM: Example of Flow from root to RAL . . . . . . . . 21
7.1.3. SM: Example of Flow from root to RUL . . . . . . . . 22 7.1.3. SM: Example of Flow from root to RUL . . . . . . . . 22
7.1.4. SM: Example of Flow from RUL to root . . . . . . . . 23 7.1.4. SM: Example of Flow from RUL to root . . . . . . . . 22
7.2. SM: Interaction between Leaf and Internet. . . . . . . . 23 7.2. SM: Interaction between Leaf and Internet. . . . . . . . 23
7.2.1. SM: Example of Flow from RAL to Internet . . . . . . 24 7.2.1. SM: Example of Flow from RAL to Internet . . . . . . 23
7.2.2. SM: Example of Flow from Internet to RAL . . . . . . 24 7.2.2. SM: Example of Flow from Internet to RAL . . . . . . 24
7.2.3. SM: Example of Flow from RUL to Internet . . . . . . 25 7.2.3. SM: Example of Flow from RUL to Internet . . . . . . 25
7.2.4. SM: Example of Flow from Internet to RUL. . . . . . . 26 7.2.4. SM: Example of Flow from Internet to RUL. . . . . . . 26
7.3. SM: Interaction between Leaf and Leaf . . . . . . . . . . 27 7.3. SM: Interaction between Leaf and Leaf . . . . . . . . . . 27
7.3.1. SM: Example of Flow from RAL to RAL . . . . . . . . . 28 7.3.1. SM: Example of Flow from RAL to RAL . . . . . . . . . 27
7.3.2. SM: Example of Flow from RAL to RUL . . . . . . . . . 29 7.3.2. SM: Example of Flow from RAL to RUL . . . . . . . . . 28
7.3.3. SM: Example of Flow from RUL to RAL . . . . . . . . . 30 7.3.3. SM: Example of Flow from RUL to RAL . . . . . . . . . 29
7.3.4. SM: Example of Flow from RUL to RUL . . . . . . . . . 31 7.3.4. SM: Example of Flow from RUL to RUL . . . . . . . . . 30
8. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 32 8. Non Storing mode . . . . . . . . . . . . . . . . . . . . . . 31
8.1. Non-Storing Mode: Interaction between Leaf and Root . . . 33 8.1. Non-Storing Mode: Interaction between Leaf and Root . . . 32
8.1.1. Non-SM: Example of Flow from RAL to root . . . . . . 34 8.1.1. Non-SM: Example of Flow from RAL to root . . . . . . 33
8.1.2. Non-SM: Example of Flow from root to RAL . . . . . . 34 8.1.2. Non-SM: Example of Flow from root to RAL . . . . . . 33
8.1.3. Non-SM: Example of Flow from root to RUL . . . . . . 35 8.1.3. Non-SM: Example of Flow from root to RUL . . . . . . 34
8.1.4. Non-SM: Example of Flow from RUL to root . . . . . . 36 8.1.4. Non-SM: Example of Flow from RUL to root . . . . . . 35
8.2. Non-Storing Mode: Interaction between Leaf and Internet . 37 8.2. Non-Storing Mode: Interaction between Leaf and Internet . 36
8.2.1. Non-SM: Example of Flow from RAL to Internet . . . . 37 8.2.1. Non-SM: Example of Flow from RAL to Internet . . . . 36
8.2.2. Non-SM: Example of Flow from Internet to RAL . . . . 38 8.2.2. Non-SM: Example of Flow from Internet to RAL . . . . 37
8.2.3. Non-SM: Example of Flow from RUL to Internet . . . . 39 8.2.3. Non-SM: Example of Flow from RUL to Internet . . . . 38
8.2.4. Non-SM: Example of Flow from Internet to RUL . . . . 40 8.2.4. Non-SM: Example of Flow from Internet to RUL . . . . 39
8.3. Non-SM: Interaction between Leafs . . . . . . . . . . . . 41 8.3. Non-SM: Interaction between Leafs . . . . . . . . . . . . 40
8.3.1. Non-SM: Example of Flow from RAL to RAL . . . . . . . 41 8.3.1. Non-SM: Example of Flow from RAL to RAL . . . . . . . 40
8.3.2. Non-SM: Example of Flow from RAL to RUL . . . . . . . 43 8.3.2. Non-SM: Example of Flow from RAL to RUL . . . . . . . 42
8.3.3. Non-SM: Example of Flow from RUL to RAL . . . . . . . 44 8.3.3. Non-SM: Example of Flow from RUL to RAL . . . . . . . 43
8.3.4. Non-SM: Example of Flow from RUL to RUL . . . . . . . 45 8.3.4. Non-SM: Example of Flow from RUL to RUL . . . . . . . 44
9. Operational Considerations of supporting 9. Operational Considerations of supporting
RUL-leaves . . . . . . . . . . . . . . . . . . . . . . . . . 46 RUL-leaves . . . . . . . . . . . . . . . . . . . . . . . . . 45
10. Operational considerations of introducing 0x23 . . . . . . . 47 10. Operational considerations of introducing 0x23 . . . . . . . 46
11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 11. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 46
12. Security Considerations . . . . . . . . . . . . . . . . . . . 49 12. Security Considerations . . . . . . . . . . . . . . . . . . . 47
13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 52 13. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 52 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 51
14.1. Normative References . . . . . . . . . . . . . . . . . . 52 14.1. Normative References . . . . . . . . . . . . . . . . . . 51
14.2. Informative References . . . . . . . . . . . . . . . . . 54 14.2. Informative References . . . . . . . . . . . . . . . . . 52
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 56 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54
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. [RFC6553] [RFC6550] is a routing protocol for constrained networks. [RFC6553]
defines the RPL Option carried within the IPv6 Hop-by-Hop Header to defines the RPL Option carried within the IPv6 Hop-by-Hop Header to
carry the RPLInstanceID and quickly identify inconsistencies (loops) carry the RPLInstanceID and quickly identify inconsistencies (loops)
in the routing topology. The RPL Option is commonly referred to as in the routing topology. The RPL Option is commonly referred to as
the RPL Packet Information (RPI) though the RPI is really the the RPL Packet Information (RPI) though the RPI is really the
abstract information that is defined in [RFC6550] and transported in abstract information that is defined in [RFC6550] and transported in
skipping to change at page 8, line 13 skipping to change at page 8, line 13
outside the RPL domain. outside the RPL domain.
This specification updates [RFC6550] to RECOMMEND that external This specification updates [RFC6550] to RECOMMEND that external
targets are advertised using Non-Storing Mode DAO messaging even in a targets are advertised using Non-Storing Mode DAO messaging even in a
Storing-Mode network. This way, external routes are not advertised Storing-Mode network. This way, external routes are not advertised
within the DODAG and all packets to an external target reach the Root within the DODAG and all packets to an external target reach the Root
like normal Non-Storing Mode traffic. The Non-Storing Mode DAO like normal Non-Storing Mode traffic. The Non-Storing Mode DAO
informs the Root of the address of the 6LR that injects the external informs the Root of the address of the 6LR that injects the external
route, and the root uses IP-in-IP encapsulation to that 6LR, which route, and the root uses IP-in-IP encapsulation to that 6LR, which
terminates the IP-in-IP tunnel and forwards the original packet terminates the IP-in-IP tunnel and forwards the original packet
outside the RPL domain free of RPL artifacts. This whole operation outside the RPL domain free of RPL artifacts. In the other
is transparent to intermediate routers that only see traffic between direction, for traffic coming from an external target into the LLN,
the 6LR and the Root, and only the Root and the 6LRs that inject the parent (6LR) that injects the traffic always encapsulates to the
external routes in the network need to be upgraded to add this root. This whole operation is transparent to intermediate routers
function to the network. that only see traffic between the 6LR and the Root, and only the Root
and the 6LRs that inject external routes in the network need to be
upgraded to add this function to the network.
A RUL is a special case of external target when the target is A RUL is a special case of external target when the target is
actually a host and it is known to support a consumed Routing Header actually a host and it is known to support a consumed Routing Header
and to ignore a HbH header as prescribed by [RFC8200]. The target and to ignore a HbH header as prescribed by [RFC8200]. The target
may have been learned through as a host route or may have been may have been learned through as a host route or may have been
registered to the 6LR using [RFC8505]. IP-in-IP encapsulation MAY be registered to the 6LR using [RFC8505]. IP-in-IP encapsulation MAY be
avoided for Root to RUL communication if the RUL is known to process avoided for Root to RUL communication if the RUL is known to process
the packets as forwarded by the parent 6LR without decapsulation. the packets as forwarded by the parent 6LR without decapsulation.
In order to enable IP-in-IP all the way to a 6LN, it is beneficial In order to enable IP-in-IP all the way to a 6LN, it is beneficial
skipping to change at page 19, line 15 skipping to change at page 19, line 15
7. Storing mode 7. Storing mode
In storing mode (SM) (fully stateful), the sender can determine if In storing mode (SM) (fully stateful), the sender can determine if
the destination is inside the LLN by looking if the destination the destination is inside the LLN by looking if the destination
address is matched by the DIO's Prefix Information Option (PIO) address is matched by the DIO's Prefix Information Option (PIO)
option. option.
The following table (Figure 7) itemizes which headers are needed in The following table (Figure 7) itemizes which headers are needed in
each of the following scenarios. It indicates if the IPv6-in-IPv6 each of the following scenarios. It indicates if the IPv6-in-IPv6
header that is added, must be addressed to the final destination (the header that is added, must be addressed to the final destination (the
RAL node that is the target(tgt)), to the "root" or if a hop-by-hop RAL node that is the target(tgt)), to the "root", or the 6LR parent
header must be added (indicated by "hop"). In the hop-by-hop basis, of a leaf.
the destination address for the next hop is the link-layer address of
the next hop.
In cases where no IPv6-in-IPv6 header is needed, the column states as In cases where no IPv6-in-IPv6 header is needed, the column states as
"No". If the IPv6-in-IPv6 header is needed is a "must". "No". If the IPv6-in-IPv6 header is needed is a "must".
In all cases the RPI is needed, since it identifies inconsistencies In all cases the RPI is needed, since it identifies inconsistencies
(loops) in the routing topology. In all cases the RH3 is not needed (loops) in the routing topology. In all cases the RH3 is not needed
because it is not used in storing mode. because it is not used in storing mode.
In each case, 6LR_i are the intermediate routers from source to In each case, 6LR_i are the intermediate routers from source to
destination. "1 <= i <= n", n is the number of routers (6LR) that destination. "1 <= i <= n", n is the number of routers (6LR) that
skipping to change at page 20, line 14 skipping to change at page 20, line 14
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
| Interaction between | Use Case |IPv6-in-IPv6| IPv6-in-IPv6 dst | | Interaction between | Use Case |IPv6-in-IPv6| IPv6-in-IPv6 dst |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
| | RAL to root | No | No | | | RAL to root | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| Leaf - Root | root to RAL | No | No | | Leaf - Root | root to RAL | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | root to RUL | No | No | | | root to RUL | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | RUL to root | must | hop or root | | | RUL to root | must | root |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
| | RAL to Int | No | No | | | RAL to Int | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| Leaf - Internet | Int to RAL | must | RAL (tgt) | | Leaf - Internet | Int to RAL | must | RAL (tgt) |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | RUL to Int | must | hop or root | | | RUL to Int | must | root |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | Int to RUL | must | 6LR | | | Int to RUL | must | 6LR |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
| | RAL to RAL | No | No | | | RAL to RAL | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | RAL to RUL | No | No | | | RAL to RUL | No | No |
+ Leaf - Leaf +--------------+------------+------------------+ + Leaf - Leaf +--------------+------------+------------------+
| | RUL to RAL | must | RAL (tgt) | | | RUL to RAL | must | root/RAL(tgt) |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | RUL to RUL | must | 6LR | | | RUL to RUL | must | root/6LR |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
Figure 7: Table of IPv6-in-IPv6 encapsulation in Storing mode. Figure 7: Table of IPv6-in-IPv6 encapsulation in Storing mode.
7.1. Storing Mode: Interaction between Leaf and Root 7.1. Storing Mode: Interaction between Leaf and Root
In this section is described the communication flow in storing mode In this section is described the communication flow in storing mode
(SM) between, (SM) between,
RAL to root RAL to root
skipping to change at page 21, line 14 skipping to change at page 21, line 9
7.1.1. SM: Example of Flow from RAL to root 7.1.1. SM: Example of Flow from RAL 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.
In this case the flow comprises: In this case the flow comprises:
RAL (6LN) --> 6LR_i --> root(6LBR) RAL (6LN) --> 6LR_i --> root(6LBR)
For example, a communication flow could be: Node F --> Node D --> For example, a communication flow could be: Node F (6LN) --> Node D
Node B --> Node A root(6LBR) (6LR_i) --> Node B (6LR_i)--> Node A root(6LBR)
The RAL (Node F) inserts the RPI, and sends the packet to 6LR (Node The RAL (Node F) inserts the RPI, and sends the packet to 6LR (Node
D) which decrements the rank in the RPI and sends the packet up. D) which decrements the rank in the RPI and sends the packet up.
When the packet arrives at 6LBR (Node A), the RPI is removed and the When the packet arrives at 6LBR (Node A), the RPI is removed and the
packet is processed. packet is processed.
No IPv6-in-IPv6 header is required. No IPv6-in-IPv6 header is required.
The RPI can be removed by the 6LBR because the packet is addressed to The RPI can be removed by the 6LBR because the packet is addressed to
the 6LBR. The RAL must know that it is communicating with the 6LBR the 6LBR. The RAL must know that it is communicating with the 6LBR
to make use of this scenario. The RAL can know the address of the to make use of this scenario. The RAL can know the address of the
6LBR because it knows the address of the root via the DODAGID in the 6LBR because it knows the address of the root via the DODAGID in the
DIO messages. DIO messages.
The Table 1 summarizes what headers are needed for this use case. The Table 1 summarizes what headers are needed for this use case.
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Header | RAL src | 6LR_i | 6LBR dst | | Header | RAL src | 6LR_i | 6LBR dst |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Inserted headers | RPI | -- | -- | | Added headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Removed headers | -- | -- | RPI |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
Table 1: SM: Summary of the use of headers from RAL to root Table 1: SM: Summary of the use of headers from RAL to root
7.1.2. SM: Example of Flow from root to RAL 7.1.2. SM: Example of Flow from root to RAL
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> RAL (6LN) root (6LBR) --> 6LR_i --> RAL (6LN)
For example, a communication flow could be: Node A root(6LBR) --> For example, a communication flow could be: Node A root(6LBR) -->
Node B --> Node D --> Node F Node B (6LR_i) --> Node D (6LR_i) --> Node F (6LN)
In this case the 6LBR inserts RPI and sends the packet down, the 6LR In this case the 6LBR inserts RPI and sends the packet down, the 6LR
is going to increment the rank in RPI (it examines the instanceID to is going to increment the rank in RPI (it examines the instanceID to
identify the right forwarding table), the packet is processed in the identify the right forwarding table), the packet is processed in the
RAL and the RPI removed. RAL and the RPI removed.
No IPv6-in-IPv6 header is required. No IPv6-in-IPv6 header is required.
The Table 2 summarizes what headers are needed for this use case. The Table 2 summarizes what headers are needed for this use case.
+-------------------+----------+-------+---------+ +-------------------+----------+-------+---------+
| Header | 6LBR src | 6LR_i | RAL dst | | Header | 6LBR src | 6LR_i | RAL dst |
+-------------------+----------+-------+---------+ +-------------------+----------+-------+---------+
| Inserted headers | RPI | -- | -- | | Added headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Removed headers | -- | -- | RPI |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+----------+-------+---------+ +-------------------+----------+-------+---------+
Table 2: SM: Summary of the use of headers from root to RAL Table 2: SM: Summary of the use of headers from root to RAL
7.1.3. SM: Example of Flow from root to RUL 7.1.3. SM: Example of Flow from root to RUL
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> RUL (IPv6 dst node) root (6LBR) --> 6LR_i --> RUL (IPv6 dst node)
For example, a communication flow could be: Node A root(6LBR) --> For example, a communication flow could be: Node A (6LBR) --> Node B
Node B --> Node E --> Node G (6LR_i) --> Node E (6LR_i) --> Node G (RUL)
As the RPI extension can be ignored by the RUL, this situation is As the RPI extension can be ignored by the RUL, this situation is
identical to the previous scenario. identical to the previous scenario.
The Table 3 summarizes what headers are needed for this use case. The Table 3 summarizes what headers are needed for this use case.
+-------------------+----------+-------+----------------------+ +-------------------+----------+-------+----------------------+
| Header | 6LBR src | 6LR_i | RUL (IPv6 dst node) | | Header | 6LBR src | 6LR_i | RUL (IPv6 dst node) |
+-------------------+----------+-------+----------------------+ +-------------------+----------+-------+----------------------+
| Inserted headers | RPI | -- | -- | | Added headers | RPI | -- | -- |
| Removed headers | -- | -- | -- |
| Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Removed headers | -- | -- | -- |
| Untouched headers | -- | -- | RPI (Ignored) | | Untouched headers | -- | -- | RPI (Ignored) |
+-------------------+----------+-------+----------------------+ +-------------------+----------+-------+----------------------+
Table 3: SM: Summary of the use of headers from root to RUL Table 3: SM: Summary of the use of headers from root to RUL
7.1.4. SM: Example of Flow from RUL to root 7.1.4. SM: Example of Flow from RUL to root
In this case the flow comprises: In this case the flow comprises:
RUL (IPv6 src node) --> 6LR_1 --> 6LR_i --> root (6LBR) RUL (IPv6 src node) --> 6LR_1 --> 6LR_i --> root (6LBR)
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G (RUL) --> Node E
Node B --> Node A root(6LBR) (6LR_1)--> Node B (6LR_i)--> Node A root(6LBR)
When the packet arrives from IPv6 node (Node G) to 6LR_1 (Node E), When the packet arrives from IPv6 node (Node G) to 6LR_1 (Node E),
the 6LR_1 will insert a RPI, encapsulated in a IPv6-in-IPv6 header. the 6LR_1 will insert a RPI, encapsulated in a IPv6-in-IPv6 header.
The IPv6-in-IPv6 header can be addressed to the next hop (Node B), or The IPv6-in-IPv6 header is addressed to the root (Node A). The root
to the root (Node A). The root removes the header and processes the removes the header and processes the packet.
packet.
The Figure 8 shows the table that summarizes what headers are needed The Figure 8 shows the table that summarizes what headers are needed
for this use case. [1] refers the case where the IPv6-in-IPv6 header for this use case where the IPv6-in-IPv6 header is addressed to the
is addressed to the next hop (Node B). [2] refers the case where the root (Node A).
IPv6-in-IPv6 header is addressed to the root (Node A).
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
| Header | RUL | 6LR_1 | 6LR_i | 6LBR dst | | Header | RUL | 6LR_1 | 6LR_i | 6LBR dst |
| | src | | | | | | src | | | |
| | node | | | | | | node | | | |
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
| Inserted | -- | IP6-IP6(RPI) | IP6-IP6(RPI)[1] | -- | | Added | -- | IP6-IP6(RPI) | | -- |
| headers | | | | |
+-----------+------+--------------+-----------------+------------------+
| Removed | -- | -- | IP6-IP6(RPI)[1] |IP6-IP6(RPI)[1][2]|
| headers | | | | | | headers | | | | |
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
| Re-added | -- | -- | -- | -- | | Modified | -- | -- | IP6-IP6(RPI) | -- |
| headers | | | | | | headers | | | | |
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
| Modified | -- | -- | IP6-IP6(RPI)[2] | -- | | Removed | -- | -- | | IP6-IP6(RPI) |
| headers | | | | | | headers | | | | |
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
| Untouched | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+-----------+------+--------------+-----------------+------------------+ +-----------+------+--------------+-----------------+------------------+
Figure 8: SM: Summary of the use of headers from RUL to root. Figure 8: SM: Summary of the use of headers from RUL to root.
7.2. SM: Interaction between Leaf and Internet. 7.2. SM: Interaction between Leaf and Internet.
skipping to change at page 24, line 21 skipping to change at page 24, line 7
7.2.1. SM: Example of Flow from RAL to Internet 7.2.1. SM: Example of Flow from RAL 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:
RAL (6LN) --> 6LR_i --> root (6LBR) --> Internet RAL (6LN) --> 6LR_i --> root (6LBR) --> Internet
For example, the communication flow could be: Node F --> Node D --> For example, the communication flow could be: Node F (RAL) --> Node D
Node B --> Node A root(6LBR) --> Internet (6LR_i)--> Node B (6LR_i)--> Node A root(6LBR) --> Internet
No IPv6-in-IPv6 header is required. No IPv6-in-IPv6 header is required.
Note: In this use case it is used a node as leaf, but this use case Note: In this use case, it is used a node as leaf, but this use case
can be also applicable to any RPL-aware-node type (e.g. 6LR) can be also applicable to any RPL-aware-node type (e.g. 6LR)
The Table 4 summarizes what headers are needed for this use case. The Table 4 summarizes what headers are needed for this use case.
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Header | RAL src | 6LR_i | 6LBR | Internet dst | | Header | RAL src | 6LR_i | 6LBR | Internet dst |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Inserted headers | RPI | -- | -- | -- | | Added headers | RPI | -- | -- | -- |
| Removed headers | -- | -- | -- | -- |
| Re-added headers | -- | -- | -- | -- |
| Modified headers | -- | RPI | -- | -- | | Modified headers | -- | RPI | -- | -- |
| Removed headers | -- | -- | -- | -- |
| Untouched headers | -- | -- | RPI | RPI (Ignored) | | Untouched headers | -- | -- | RPI | RPI (Ignored) |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
Table 4: SM: Summary of the use of headers from RAL to Internet Table 4: SM: Summary of the use of headers from RAL to Internet
7.2.2. SM: Example of Flow from Internet to RAL 7.2.2. SM: Example of Flow from Internet to RAL
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> RAL (6LN) Internet --> root (6LBR) --> 6LR_i --> RAL (6LN)
For example, a communication flow could be: Internet --> Node A For example, a communication flow could be: Internet --> Node A
root(6LBR) --> Node B --> Node D --> Node F root(6LBR) --> Node B (6LR_1) --> Node D (6LR_n) --> Node F (RAL)
When the packet arrives from Internet to 6LBR the RPI is added in a When the packet arrives from Internet to 6LBR the RPI is added in a
outer IPv6-in-IPv6 header (with the IPv6-in-IPv6 destination address outer IPv6-in-IPv6 header (with the IPv6-in-IPv6 destination address
set to the RAL) and sent to 6LR, which modifies the rank in the RPI. set to the RAL) and sent to 6LR, which modifies the rank in the RPI.
When the packet arrives at the RAL the RPI is removed and the packet When the packet arrives at the RAL the RPI is removed and the packet
processed. processed.
The Figure 9 shows the table that summarizes what headers are needed The Figure 9 shows the table that summarizes what headers are needed
for this use case. for this use case.
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Header | Internet | 6LBR | 6LR_i | RAL dst | | Header | Internet | 6LBR | 6LR_i | RAL dst |
| | src | | | | | | src | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Inserted | -- | IP6-IP6(RPI) | -- | -- | | Added | -- | IP6-IP6(RPI) | -- | -- |
| headers | | | | |
+-----------+----------+--------------+--------------+--------------+
| Removed | -- | -- | -- | IP6-IP6(RPI) |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Re-added | -- | -- | -- | -- | | Modified | -- | -- | IP6-IP6(RPI) | -- |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Modified | -- | -- | IP6-IP6(RPI) | -- | | Removed | -- | -- | -- | IP6-IP6(RPI) |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Untouched | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
Figure 9: SM: Summary of the use of headers from Internet to RAL. Figure 9: SM: Summary of the use of headers from Internet to RAL.
7.2.3. SM: Example of Flow from RUL to Internet 7.2.3. SM: Example of Flow from RUL to Internet
In this case the flow comprises: In this case the flow comprises:
RUL (IPv6 src node) --> 6LR_1 --> 6LR_i -->root (6LBR) --> Internet RUL (IPv6 src node) --> 6LR_1 --> 6LR_i -->root (6LBR) --> Internet
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G (RUL)--> Node E
Node B --> Node A root(6LBR) --> Internet (6LR_1)--> Node B (6lR_i) --> Node A root(6LBR) --> Internet
The 6LR_1 (i=1) node will add an IPv6-in-IPv6(RPI) header addressed The 6LR_1 (i=1) node will add an IPv6-in-IPv6(RPI) header addressed
either to the root, or hop-by-hop such that the root can remove the to the root such that the root can remove the RPI before passing
RPI before passing upwards. The IPv6-in-IPv6 addressed to the root upwards. The IPv6-in-IPv6 addressed to the root cause less
cause less processing overhead. On the other hand, with hop-by-hop processing overhead. In the intermindiate 6LR the rank in the RPI is
the intermediate routers can check the routing tables for a better modified.
routing path, thus it could be more efficient and faster.
Implementation should decide which approach to take.
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 the packet can be better compressed through the LLN. The so that the packet can be better compressed through the LLN. The
6LBR will set the flow label of the packet to a non-zero value when 6LBR will set the flow label of the packet to a non-zero value when
sending to the Internet, for details check [RFC6437]. sending to the Internet, for details check [RFC6437].
The Figure 10 shows the table that summarizes what headers are needed The Figure 10 shows the table that summarizes what headers are needed
for this use case. In the table, [1] shows the case when packet is for this use case.
addressed to the root. [2] shows the case when the packet is
addressed hop-by-hop.
+---------+-------+------------+--------------+-------------+--------+ +---------+-------+------------+--------------+-------------+--------+
| Header | IPv6 | 6LR_1 | 6LR_i | 6LBR |Internet| | Header | IPv6 | 6LR_1 | 6LR_i | 6LBR |Internet|
| | src | | [i=2,...,n] | | dst | | | src | | [i=2,...,n] | | dst |
| | node | | | | | | | node | | | | |
| | (RUL) | | | | | | | (RUL) | | | | |
+---------+-------+------------+--------------+-------------+--------+ +---------+-------+------------+--------------+-------------+--------+
| Inserted| -- |IP6-IP6(RPI)| IP6-IP6(RPI) | -- | -- | | Added | -- |IP6-IP6(RPI)| -- | -- | -- |
| headers | | | [2] | | |
+---------+-------+------------+--------------+-------------+--------+
| Removed | -- | -- | IP6-IP6(RPI) | IP6-IP6(RPI)| -- |
| headers | | | [2] | [1][2] | |
+---------+-------+------------+--------------+-------------+--------+
| Re-added| -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------+-------+------------+--------------+-------------+--------+ +---------+-------+------------+--------------+-------------+--------+
| Modified| -- | -- | IP6-IP6(RPI) | -- | -- | | Modified| -- | -- | IP6-IP6(RPI) | -- | -- |
| headers | | | [1] | | | | headers | | | | | |
+---------+-------+------------+--------------+-------------+--------+
| Removed | -- | -- | -- | IP6-IP6(RPI)| -- |
| headers | | | | | |
+---------+-------+------------+--------------+-------------+--------+ +---------+-------+------------+--------------+-------------+--------+
|Untouched| -- | -- | -- | -- | -- | |Untouched| -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------+-------+------------+--------------+-------------+--------+ +---------+-------+------------+--------------+-------------+--------+
Figure 10: SM: Summary of the use of headers from RUL to Internet. Figure 10: SM: Summary of the use of headers from RUL to Internet.
7.2.4. SM: Example of Flow from Internet to RUL. 7.2.4. SM: Example of Flow from Internet to RUL.
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> RUL (IPv6 dst node) Internet --> root (6LBR) --> 6LR_i --> RUL (IPv6 dst node)
For example, a communication flow could be: Internet --> Node A For example, a communication flow could be: Internet --> Node A
root(6LBR) --> Node B --> Node E --> Node G root(6LBR) --> Node B (6LR_i)--> Node E (6LR_n) --> Node G (RUL)
The 6LBR will have to add an RPI within an IPv6-in-IPv6 header. The The 6LBR will have to add an RPI within an IPv6-in-IPv6 header. The
IPv6-in-IPv6 is addressed to the 6LR parent of the 6lR_i. IPv6-in-IPv6 is addressed to the 6LR parent of the RUL.
Further details about this are mentioned in Further details about this are mentioned in
[I-D.ietf-roll-unaware-leaves], which specifies RPL routing for a 6LN [I-D.ietf-roll-unaware-leaves], which specifies RPL routing for a 6LN
acting as a plain host and not being aware of RPL. acting as a plain host and not being aware of RPL.
The 6LBR may set the flow label on the inner IPv6-in-IPv6 header to The 6LBR may set the flow label on the inner IPv6-in-IPv6 header to
zero in order to aid in compression [RFC8138][RFC6437]. zero in order to aid in compression [RFC8138][RFC6437].
The Figure 11 shows the table that summarizes what headers are needed The Figure 11 shows the table that summarizes what headers are needed
for this use case. for this use case.
+-----------+----------+--------------+--------------+--------------+ +---------+-------+------------+--------------+-------------+--------+
| Header | Internet | 6LBR | 6LR_i |IPv6 dst node | | Header |Inter- | 6LBR | 6LR_i | 6LR_n | RUL |
| | src | | | | | | net | |[i=1,..,n-1] | | dst |
+-----------+----------+--------------+--------------+--------------+ | | src | | | | |
| Inserted | -- | IP6-IP6(RPI) | IP6-IP6(RPI) | -- | | | | | | | |
| headers | | | | | +---------+-------+------------+--------------+-------------+--------+
+-----------+----------+--------------+--------------+--------------+ | Inserted| -- |IP6-IP6(RPI)| | -- | -- |
| Removed | -- | -- | IP6-IP6(RPI) | -- | | headers | | | | | |
| headers | | | | | +---------+-------+------------+--------------+-------------+--------+
+-----------+----------+--------------+--------------+--------------+ | Modified| -- | -- | IP6-IP6(RPI) | -- | -- |
| Re-added | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | +---------+-------+------------+--------------+-------------+--------+
+-----------+----------+--------------+--------------+--------------+ | Removed | -- | -- | | IP6-IP6(RPI)| -- |
| Modified | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | +---------+-------+------------+--------------+-------------+--------+
+-----------+----------+--------------+--------------+--------------+ |Untouched| -- | -- | -- | -- | -- |
| Untouched | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | +---------+-------+------------+--------------+-------------+--------+
+-----------+----------+--------------+--------------+--------------+
Figure 11: SM: Summary of the use of headers from Internet to RUL. Figure 11: SM: Summary of the use of headers from Internet to RUL.
7.3. SM: Interaction between Leaf and Leaf 7.3. SM: Interaction between Leaf and Leaf
In this section is described the communication flow in storing mode In this section is described the communication flow in storing mode
(SM) between, (SM) between,
RAL to RAL RAL to RAL
skipping to change at page 28, line 17 skipping to change at page 28, line 4
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. See section 9 in to a one-hop neighbor directly to that node. See section 9 in
[RFC6550]. [RFC6550].
When the nodes are not directly connected, then in storing mode, the When the nodes are not directly connected, then in storing mode, the
flow comprises: flow comprises:
RAL src (6LN) --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> RAL RAL src (6LN) --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> RAL
dst (6LN) dst (6LN)
For example, a communication flow could be: Node F (RAL src)--> Node
For example, a communication flow could be: Node F --> Node D --> D (6LR_ia)--> Node B (6LR_x) --> Node E (6LR_id) --> Node H (RAL dst)
Node B --> Node E --> Node H
6LR_ia (Node D) are the intermediate routers from source to the 6LR_ia (Node D) are the intermediate routers from source to the
common parent (6LR_x) (Node B). In this case, 1 <= ia <= n, n is the common parent (6LR_x) (Node B). In this case, 1 <= ia <= n, n is the
number of routers (6LR) that the packet goes through from RAL (Node number of routers (6LR) that the packet goes through from RAL (Node
F) to the common parent 6LR_x (Node B). F) to the common parent 6LR_x (Node B).
6LR_id (Node E) are the intermediate routers from the common parent 6LR_id (Node E) are the intermediate routers from the common parent
(6LR_x) (Node B) to destination RAL (Node H). In this case, 1 <= id (6LR_x) (Node B) to destination RAL (Node H). In this case, 1 <= id
<= m, m is the number of routers (6LR) that the packet goes through <= m, m is the number of routers (6LR) that the packet goes through
from the common parent (6LR_x) to destination RAL (Node H). from the common parent (6LR_x) to destination RAL (Node H).
skipping to change at page 29, line 9 skipping to change at page 28, line 30
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 IPv6-in-IPv6 headers are necessary. remove the RPI, so no IPv6-in-IPv6 headers are necessary.
The Table 5 summarizes what headers are needed for this use case. The Table 5 summarizes what headers are needed for this use case.
+---------------+--------+--------+---------------+--------+--------+ +---------------+--------+--------+---------------+--------+--------+
| Header | RAL | 6LR_ia | 6LR_x (common | 6LR_id | RAL | | Header | RAL | 6LR_ia | 6LR_x (common | 6LR_id | RAL |
| | src | | parent) | | dst | | | src | | parent) | | dst |
+---------------+--------+--------+---------------+--------+--------+ +---------------+--------+--------+---------------+--------+--------+
| Inserted | RPI | -- | -- | -- | -- | | Added headers | RPI | -- | -- | -- | -- |
| Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | | | headers | | | | | |
| Removed | -- | -- | -- | -- | RPI | | Removed | -- | -- | -- | -- | RPI |
| headers | | | | | | | headers | | | | | |
| Re-added | -- | -- | -- | -- | -- |
| headers | | | | | |
| Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | |
| Untouched | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------------+--------+--------+---------------+--------+--------+ +---------------+--------+--------+---------------+--------+--------+
Table 5: SM: Summary of the use of headers for RAL to RAL Table 5: SM: Summary of the use of headers for RAL to RAL
7.3.2. SM: Example of Flow from RAL to RUL 7.3.2. SM: Example of Flow from RAL to RUL
In this case the flow comprises: In this case the flow comprises:
RAL src (6LN) --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> RUL RAL src (6LN) --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> RUL
(IPv6 dst node) (IPv6 dst node)
For example, a communication flow could be: Node F --> Node D --> For example, a communication flow could be: Node F (RAL)--> Node D
Node B --> Node E --> Node G --> Node B --> Node E --> Node G (RUL)
6LR_ia are the intermediate routers from source (RAL) to the common 6LR_ia are the intermediate routers from source (RAL) to the common
parent (6LR_x) In this case, 1 <= ia <= n, n is the number of routers parent (6LR_x) In this case, 1 <= ia <= n, n is the number of routers
(6LR) that the packet goes through from RAL to the common parent (6LR) that the packet goes through from RAL to the common parent
(6LR_x). (6LR_x).
6LR_id (Node E) are the intermediate routers from the common parent 6LR_id (Node E) are the intermediate routers from the common parent
(6LR_x) (Node B) to destination RUL (Node G). In this case, 1 <= id (6LR_x) (Node B) to destination RUL (Node G). In this case, 1 <= id
<= m, m is the number of routers (6LR) that the packet goes through <= m, m is the number of routers (6LR) that the packet goes through
from the common parent (6LR_x) to destination RUL. from the common parent (6LR_x) to destination RUL. The packet from
the RAL goes to 6LBR because the route to the RUL is not injected
This situation is identical to the previous situation Section 7.3.1 into the RPL-SM.
The Table 6 summarizes what headers are needed for this use case. The Table 6 summarizes what headers are needed for this use case.
+-----------+------+--------+---------------+--------+--------------+ +-----------------+---------+--------+------+--------+--------------+
| Header | RAL | 6LR_ia | 6LR_x(common | 6LR_id | RUL dst | | Header | RAL src | 6LR_ia | 6LBR | 6LR_id | RUL dst |
| | src | | parent) | | | +-----------------+---------+--------+------+--------+--------------+
+-----------+------+--------+---------------+--------+--------------+ | Added headers | RPI | -- | -- | -- | -- |
| Inserted | RPI | -- | -- | -- | -- | | Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | | | headers | | | | | |
| Removed | -- | -- | -- | -- | -- | | Removed headers | -- | -- | -- | -- | -- |
| headers | | | | | | | Untouched | -- | -- | -- | -- | RPI(Ignored) |
| Re-added | -- | -- | -- | -- | -- | | headers | | | | | |
| headers | | | | | | +-----------------+---------+--------+------+--------+--------------+
| Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | |
| Untouched | -- | -- | -- | -- | RPI(Ignored) |
| headers | | | | | |
+-----------+------+--------+---------------+--------+--------------+
Table 6: SM: Summary of the use of headers for RAL to RUL Table 6: SM: Summary of the use of headers for RAL to RUL
7.3.3. SM: Example of Flow from RUL to RAL 7.3.3. SM: Example of Flow from RUL to RAL
In this case the flow comprises: In this case the flow comprises:
RUL (IPv6 src node) --> 6LR_ia --> common parent (6LR_x) --> 6LR_id RUL (IPv6 src node) --> 6LR_ia --> 6LBR --> 6LR_id --> RAL dst (6LN)
--> RAL dst (6LN)
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G (RUL)--> Node E
Node B --> Node D --> Node F --> Node B --> Node A --> Node B --> Node D --> Node F (RAL)
6LR_ia (Node E) are the intermediate routers from source (RUL) (Node 6LR_ia (Node E) are the intermediate routers from source (RUL) (Node
G) to the common parent (6LR_x) (Node B). In this case, 1 <= ia <= G) to the root (Node A). In this case, 1 <= ia <= n, n is the number
n, n is the number of routers (6LR) that the packet goes through from of routers (6LR) that the packet goes through from source to the
source to the common parent. root.
6LR_id (Node D) are the intermediate routers from the common parent 6LR_id are the intermediate routers from the root (Node A) to
(6LR_x) (Node B) to destination RAL (Node F). In this case, 1 <= id destination RAL (Node F). In this case, 1 <= id <= m, m is the
<= m, m is the number of routers (6LR) that the packet goes through number of routers (6LR) that the packet goes through from the root to
from the common parent (6LR_x) to the destination RAL. the destination RAL.
The 6LR_ia (ia=1) (Node E) receives the packet from the RUL (Node G) The 6LR_ia (ia=1) (Node E) receives the packet from the RUL (Node G)
and inserts the RPI encapsulated in a IPv6-in-IPv6 header. The IPv6- and inserts the RPI (RPI1) encapsulated in a IPv6-in-IPv6 header to
in-IPv6 header is addressed to the destination RAL (Node F). the root. The root removes the outer header including the RPI (RPI1)
and inserts a new RPI (RPI2) addressed to the destination RAL (Node
F).
The Figure 12 shows the table that summarizes what headers are needed The Figure 12 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+-----+------------+-------------+-------------+------------+ +-----------+------+---------+---------+---------+---------+---------+
| Header |RUL | 6LR_ia | Common | 6LR_id | RAL | | Header | RUL | 6LR_1 | 6LR_ia | 6LBR | 6LR_id | RAL |
| |src | | Parent | | dst | | | src | | | | | dst |
| |node | | (6LRx) | | | | | node | | | | | node |
+---------+-----+------------+-------------+-------------+------------+ +-----------+------+---------+---------+---------+---------+---------+
| Inserted| -- |IP6-IP6(RPI)| -- | -- | -- | | Added | -- | IP6-IP6 | -- | IP6-IP6 | -- | -- |
| headers | | | | | | | headers | | (RPI1) | | (RPI2) | | |
+---------+-----+------------+-------------+-------------+------------+ | | | | | | | |
| Removed | -- | -- | -- | -- |IP6-IP6(RPI)| +-----------+------+---------+---------+---------+---------+---------+
| headers | | | | | | | Modified | -- | | IP6-IP6 | -- | IP6-IP6 | -- |
+---------+-----+------------+-------------+-------------+------------+ | headers | | | (RPI1) | | (RPI2) | |
| Re-added| -- | -- | -- | -- | -- | | | | | | | | |
| headers | | | | | | +-----------+------+---------+---------+---------+---------+---------+
+---------+-----+------------+-------------+-------------+------------+ | Removed | -- | | -- | IP6-IP6 | -- | IP6-IP6 |
| Modified| -- | -- |IP6-IP6(RPI) |IP6-IP6(RPI) | -- | | headers | | | | (RPI1) | | (RPI2) |
| headers | | | | | | | | | | | | | |
+---------+-----+------------+-------------+-------------+------------+ +-----------+------+---------+---------+---------+---------+---------+
|Untouched| -- | -- | -- | -- | -- | | Untouched | -- | | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | | |
+---------+-----+------------+-------------+-------------+------------+ +-----------+------+---------+---------+---------+---------+---------+
Figure 12: SM: Summary of the use of headers from RUL to RAL. Figure 12: SM: Summary of the use of headers from RUL to RAL.
7.3.4. SM: Example of Flow from RUL to RUL 7.3.4. SM: Example of Flow from RUL to RUL
In this case the flow comprises: In this case the flow comprises:
RUL (IPv6 src node)--> 6LR_1--> 6LR_ia --> 6LBR --> 6LR_id --> RUL RUL (IPv6 src node)--> 6LR_1--> 6LR_ia --> 6LBR --> 6LR_id --> RUL
(IPv6 dst node) (IPv6 dst node)
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G (RUL src)--> Node
Node B --> Node A (root) --> Node C --> Node J E --> Node B --> Node A (root) --> Node C --> Node J (RUL dst)
Internal nodes 6LR_ia (e.g: Node E or Node B) is the intermediate Internal nodes 6LR_ia (e.g: Node E or Node B) is the intermediate
router from the RUL source (Node G) to the root (6LBR) (Node A). In router from the RUL source (Node G) to the root (6LBR) (Node A). In
this case, "1 < ia <= n", n is the number of routers (6LR) that the this case, "1 < ia <= n", n is the number of routers (6LR) that the
packet goes through from the RUL to the root. packet goes through from the RUL to the root.
6LR_id (Node C) are the intermediate routers from the root (Node A) 6LR_id (Node C) are the intermediate routers from the root (Node A)
to the destination RUL dst node (Node J). In this case, 1 <= id <= to the destination RUL dst node (Node J). In this case, 1 <= id <=
m, m is the number of routers (6LR) that the packet goes through from m, m is the number of routers (6LR) that the packet goes through from
the root to destination RUL. the root to destination RUL.
The RPI is ignored at the RUL dst node. The RPI is ignored at the RUL dst node.
The 6LR_1 (Node E) receives the packet from the RUL (Node G) and The 6LR_1 (Node E) receives the packet from the RUL (Node G) and
inserts the RPI (RPI), encapsulated in an IPv6-in-IPv6 header inserts the RPI (RPI), encapsulated in an IPv6-in-IPv6 header
directed to the root. The root removes the RPI and inserts a new RPI directed to the root. The root removes the outer header including
addressed to the 6LR father of the RUL. the RPI (RPI1) and inserts a new RPI (RPI2) addressed to the 6LR
father of the RUL.
The Figure 13 shows the table that summarizes what headers are needed The Figure 13 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+------+-------+-------+---------+-------+-------+ +---------+----+-------------+--------+---------+--------+-------+---+
| Header | RUL | 6LR_1 | 6LR_ia| 6LBR |6LR_id | RUL | | Header |RUL | 6LR_1 | 6LR_ia | 6LBR | 6LR_id |6LR_n |RUL|
| | src | | | | | dst | | |src | | | | | |dst|
| | node | | | | | node | | | | | | | | | |
+---------+------+-------+-------+---------+-------+-------+ +---------+----+-------------+--------+---------+--------+-------+---+
| Inserted| -- |IP6-IP6|IP6-IP6| IP6-IP6 |IP6-IP6| -- | | Added | -- |IP6-IP6(RPI1)| -- | IP6-IP6 | -- | -- | --|
| headers | | (RPI )| (RPI) | (RPI2) | (RPI2)| | | Headers | | | | (RPI2) | | | |
| | | | | | | | +---------+----+-------------+--------+---------+--------+-------+---+
+---------+------+-------+-------+---------+-------+-------+ |Modified | -- | -- |IP6-IP6 | -- |IP6-IP6 | -- | --|
| Removed | -- | -- |IP6-IP6| IP6-IP6 |IP6-IP6| | |headers | | | (RPI1) | | (RPI2) | | |
| headers | | | (RPI) | (RPI1) | (RPI2)| | +---------+----+-------------+--------+---------+--------+-------+---+
| | | | | | | | | Removed | -- | -- | -- | IP6-IP6 | -- |IP6-IP6| --|
| | | | | | | | | headers | | | | (RPI1) | | (RPI2)| |
+---------+------+-------+-------+---------+-------+-------+ +---------+----+-------------+--------+---------+--------+-------+---+
| Re-added| -- | -- | -- | -- | -- | -- | |Untouched| -- | -- | -- | -- | -- | -- | --|
| headers | | | | | | | | headers | | | | | | | |
+---------+------+-------+-------+---------+-------+-------+ +---------+----+-------------+--------+---------+--------+-------+---+
| Modified| -- | -- | | | | -- |
| headers | | | | | | |
| | | | | | | |
+---------+------+-------+-------+---------+-------+-------+
|Untouched| -- | -- | -- | -- | -- | -- |
| headers | | | | | | |
+---------+------+-------+-------+---------+-------+-------+
Figure 13: SM: Summary of the use of headers from RUL to RUL Figure 13: SM: Summary of the use of headers from RUL to RUL
8. Non Storing mode 8. Non Storing mode
In Non Storing Mode (Non-SM) (fully source routed), the 6LBR (DODAG In Non Storing Mode (Non-SM) (fully source routed), the 6LBR (DODAG
root) has complete knowledge about the connectivity of all DODAG root) has complete knowledge about the connectivity of all DODAG
nodes, and all traffic flows through the root node. Thus, there is nodes, and all traffic flows through the root node. Thus, there is
no need for all nodes to know about the existence of RPL-unaware no need for all nodes to know about the existence of RPL-unaware
nodes. Only the 6LBR needs to act if compensation is necessary for nodes. Only the 6LBR needs to act if compensation is necessary for
skipping to change at page 34, line 32 skipping to change at page 33, line 34
this case, "1 <= i <= n", n is the number of routers (6LR) that the this case, "1 <= i <= n", n is the number of routers (6LR) that the
packet goes through from source (RAL) to destination (6LBR). packet goes through from source (RAL) to destination (6LBR).
This situation is the same case as storing mode. This situation is the same case as storing mode.
The Table 7 summarizes what headers are needed for this use case. The Table 7 summarizes what headers are needed for this use case.
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Header | RAL src | 6LR_i | 6LBR dst | | Header | RAL src | 6LR_i | 6LBR dst |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Inserted headers | RPI | -- | -- | | Added headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI | | Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
Table 7: Non-SM: Summary of the use of headers from RAL to root Table 7: Non-SM: Summary of the use of headers from RAL to root
8.1.2. Non-SM: Example of Flow from root to RAL 8.1.2. Non-SM: Example of Flow from root to RAL
In this case the flow comprises: In this case the flow comprises:
skipping to change at page 35, line 18 skipping to change at page 34, line 18
The 6LBR inserts an RH3, and a RPI. No IPv6-in-IPv6 header is The 6LBR inserts an RH3, and a RPI. No IPv6-in-IPv6 header is
necessary as the traffic originates with an RPL aware node, the 6LBR. necessary as the traffic originates with an RPL aware node, the 6LBR.
The destination is known to be RPL-aware because the root knows the The destination is known to be RPL-aware because the root knows the
whole topology in non-storing mode. whole topology in non-storing mode.
The Table 8 summarizes what headers are needed for this use case. The Table 8 summarizes what headers are needed for this use case.
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
| Header | 6LBR src | 6LR_i | RAL dst | | Header | 6LBR src | 6LR_i | RAL dst |
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
| Inserted headers | RPI, RH3 | -- | -- | | Added headers | RPI, RH3 | -- | -- |
| Removed headers | -- | -- | RH3, RPI |
| Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI, RH3 | -- | | Modified headers | -- | RPI, RH3 | -- |
| Removed headers | -- | -- | RH3, RPI |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
Table 8: Non-SM: Summary of the use of headers from root to RAL Table 8: Non-SM: Summary of the use of headers from root to RAL
8.1.3. Non-SM: Example of Flow from root to RUL 8.1.3. Non-SM: Example of Flow from root to RUL
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> RUL (IPv6 dst node) root (6LBR) --> 6LR_i --> RUL (IPv6 dst node)
skipping to change at page 36, line 6 skipping to change at page 35, line 6
In 6LBR the RH3 is added, it is modified at each intermediate 6LR In 6LBR the RH3 is added, it is modified at each intermediate 6LR
(6LR_1 and so on) and it is fully consumed in the last 6LR (6LR_n), (6LR_1 and so on) and it is fully consumed in the last 6LR (6LR_n),
but left there. As the RPI is added, then the IPv6 node which does but left there. As the RPI is added, then the IPv6 node which does
not understand the RPI, will ignore it (following RFC8200), thus not understand the RPI, will ignore it (following RFC8200), thus
encapsulation is not necessary. encapsulation is not necessary.
The Figure 15 depicts the table that summarizes what headers are The Figure 15 depicts the table that summarizes what headers are
needed for this use case. needed for this use case.
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Header | 6LBR | 6LR_i | 6LR_n | IPv6 | | Header | 6LBR | 6LR_i | 6LR_n | RUL |
| | | i=(1,..,n-1) | |dst node | | | src | i=(1,..,n-1) | | dst |
| | | | | (RUL) | | | | | | |
+-----------+----------+--------------+----------------+----------+
| Inserted | RPI, RH3 | -- | -- | -- |
| headers | | | | |
+-----------+----------+--------------+----------------+----------+
| Removed | -- | -- | | -- |
| headers | | | | |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Re-added | -- | -- | -- | -- | | Added | RPI, RH3 | -- | -- | -- |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Modified | -- | RPI, RH3 | RPI, | -- | | Modified | -- | RPI, RH3 | RPI, | -- |
| headers | | | RH3(consumed) | | | headers | | | RH3(consumed) | |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Removed | -- | -- | | -- |
| headers | | | | |
+-----------+----------+--------------+----------------+----------+
| Untouched | -- | -- | -- | RPI, RH3 | | Untouched | -- | -- | -- | RPI, RH3 |
| headers | | | | (both | | headers | | | | (both |
| | | | | ignored) | | | | | | ignored) |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
Figure 15: Non-SM: Summary of the use of headers from root to RUL Figure 15: Non-SM: Summary of the use of headers from root to RUL
8.1.4. Non-SM: Example of Flow from RUL to root 8.1.4. Non-SM: Example of Flow from RUL to root
In this case the flow comprises: In this case the flow comprises:
skipping to change at page 37, line 10 skipping to change at page 36, line 10
root. root.
The Figure 16 shows the table that summarizes what headers are needed The Figure 16 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
| |RUL | | | | | |RUL | | | |
| Header |src | 6LR_1 | 6LR_i | 6LBR dst | | Header |src | 6LR_1 | 6LR_i | 6LBR dst |
| |node| | | | | |node| | | |
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
| Inserted| -- |IPv6-in-IPv6(RPI)| -- | -- | | Added | -- |IPv6-in-IPv6(RPI)| -- | -- |
| headers | | | | |
+---------+----+-----------------+-----------------+-----------------+
| Removed | -- | -- | -- |IPv6-in-IPv6(RPI)|
| headers | | | | | | headers | | | | |
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
| Re-added| -- | -- | -- | -- | | Modified| -- | -- |IPv6-in-IPv6(RPI)| -- |
| headers | | | | | | headers | | | | |
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
| Modified| -- | -- |IPv6-in-IPv6(RPI)| -- | | Removed | -- | -- | -- |IPv6-in-IPv6(RPI)|
| headers | | | | | | headers | | | | |
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
|Untouched| -- | -- | -- | -- | |Untouched| -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+---------+----+-----------------+-----------------+-----------------+ +---------+----+-----------------+-----------------+-----------------+
Figure 16: Non-SM: Summary of the use of headers from RUL to root Figure 16: Non-SM: Summary of the use of headers from RUL to root
8.2. Non-Storing Mode: Interaction between Leaf and Internet 8.2. Non-Storing Mode: Interaction between Leaf and Internet
skipping to change at page 37, line 47 skipping to change at page 36, line 44
RUL to Internet RUL to Internet
Internet to RUL Internet to RUL
8.2.1. Non-SM: Example of Flow from RAL to Internet 8.2.1. Non-SM: Example of Flow from RAL to Internet
In this case the flow comprises: In this case the flow comprises:
RAL (6LN) src --> 6LR_i --> root (6LBR) --> Internet dst RAL (6LN) src --> 6LR_i --> root (6LBR) --> Internet dst
For example, a communication flow could be: Node F --> Node D --> For example, a communication flow could be: Node F (RAL) --> Node D
Node B --> Node A --> Internet --> Node B --> Node A --> Internet
6LR_i are the intermediate routers from source to destination. In 6LR_i are the intermediate routers from source to destination. In
this case, "1 <= i <= n", n is the number of routers (6LR) that the this case, "1 <= i <= n", n is the number of routers (6LR) that the
packet goes through from source (RAL) to 6LBR. packet goes through from source (RAL) to 6LBR.
This case is identical to storing-mode case. This case is identical to storing-mode case.
The IPv6 flow label should be set to zero to aid in compression The IPv6 flow label should be set to zero to aid in compression
[RFC8138], and the 6LBR will set it to a non-zero value when sending [RFC8138], and the 6LBR will set it to a non-zero value when sending
towards the Internet [RFC6437]. towards the Internet [RFC6437].
The Table 9 summarizes what headers are needed for this use case. The Table 9 summarizes what headers are needed for this use case.
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Header | RAL src | 6LR_i | 6LBR | Internet dst | | Header | RAL src | 6LR_i | 6LBR | Internet dst |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Inserted headers | RPI | -- | -- | -- | | Added headers | RPI | -- | -- | -- |
| Removed headers | -- | -- | -- | -- |
| Re-added headers | -- | -- | -- | -- |
| Modified headers | -- | RPI | -- | -- | | Modified headers | -- | RPI | -- | -- |
| Removed headers | -- | -- | -- | -- |
| Untouched headers | -- | -- | RPI | RPI (Ignored) | | Untouched headers | -- | -- | RPI | RPI (Ignored) |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
Table 9: Non-SM: Summary of the use of headers from RAL to Internet Table 9: Non-SM: Summary of the use of headers from RAL to Internet
8.2.2. Non-SM: Example of Flow from Internet to RAL 8.2.2. Non-SM: Example of Flow from Internet to RAL
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> RAL dst (6LN) Internet --> root (6LBR) --> 6LR_i --> RAL dst (6LN)
For example, a communication flow could be: Internet --> Node A For example, a communication flow could be: Internet --> Node A
(root) --> Node B --> Node D --> Node F (root) --> Node B --> Node D --> Node F (RAL)
6LR_i are the intermediate routers from source to destination. In 6LR_i are the intermediate routers from source to destination. In
this case, "1 <= i <= n", n is the number of routers (6LR) that the this case, "1 <= i <= n", n is the number of routers (6LR) that the
packet goes through from 6LBR to destination (RAL). packet goes through from 6LBR to destination (RAL).
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 node, it can address the IPv6-in-IPv6 header to address of the target node, it can address the IPv6-in-IPv6 header to
that node. The 6LBR will zero the flow label upon entry in order to that node. The 6LBR will zero the flow label upon entry in order to
aid compression [RFC8138]. aid compression [RFC8138].
The Table 10 summarizes what headers are needed for this use case. The Table 10 summarizes what headers are needed for this use case.
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Header | Internet | 6LBR | 6LR_i | RAL dst | | Header | Internet | 6LBR | 6LR_i | RAL dst |
| | src | | | | | | src | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
| Inserted | -- | IPv6-in-IPv6 | -- | -- | | Added | -- | IPv6-in-IPv6 | -- | -- |
| headers | | (RH3,RPI) | | | | headers | | (RH3,RPI) | | |
| Removed | -- | -- | -- | IPv6-in-IPv6 |
| headers | | | | (RH3,RPI) |
| Re-added | -- | -- | -- | -- |
| headers | | | | |
| Modified | -- | -- | IPv6-in-IPv6 | -- | | Modified | -- | -- | IPv6-in-IPv6 | -- |
| headers | | | (RH3,RPI) | | | headers | | | (RH3,RPI) | |
| Removed | -- | -- | -- | IPv6-in-IPv6 |
| headers | | | | (RH3,RPI) |
| Untouched | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
Table 10: Non-SM: Summary of the use of headers from Internet to RAL Table 10: Non-SM: Summary of the use of headers from Internet to RAL
8.2.3. Non-SM: Example of Flow from RUL to Internet 8.2.3. Non-SM: Example of Flow from RUL to Internet
In this case the flow comprises: In this case the flow comprises:
skipping to change at page 40, line 10 skipping to change at page 39, line 10
identical to the storing-mode case (see Section 7.2.3). identical to the storing-mode case (see Section 7.2.3).
The Figure 17 shows the table that summarizes what headers are needed The Figure 17 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
| Header |RUL | 6LR_1 | 6LR_i | 6LBR |Internet| | Header |RUL | 6LR_1 | 6LR_i | 6LBR |Internet|
| |src | | [i=2,..,n] | | dst | | |src | | [i=2,..,n] | | dst |
| |node| | | | | | |node| | | | |
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
| Inserted| -- |IP6-IP6(RPI) | -- | -- | -- | | Added | -- |IP6-IP6(RPI) | -- | -- | -- |
| headers | | | | | |
+---------+----+-------------+--------------+--------------+--------+
| Removed | -- | -- | -- | IP6-IP6(RPI) | -- |
| headers | | | | | | | headers | | | | | |
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
| Re-added| -- | -- | -- | -- | -- | | Modified| -- | -- | IP6-IP6(RPI) | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
| Modified| -- | -- | IP6-IP6(RPI) | -- | -- | | Removed | -- | -- | -- | IP6-IP6(RPI) | -- |
| headers | | | | | | | headers | | | | | |
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
|Untouched| -- | -- | -- | -- | -- | |Untouched| -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------+----+-------------+--------------+--------------+--------+ +---------+----+-------------+--------------+--------------+--------+
Figure 17: Non-SM: Summary of the use of headers from RUL to Internet Figure 17: Non-SM: Summary of the use of headers from RUL to Internet
8.2.4. Non-SM: Example of Flow from Internet to RUL 8.2.4. Non-SM: Example of Flow from Internet to RUL
skipping to change at page 41, line 5 skipping to change at page 40, line 5
The 6LBR must add an RH3 header inside an IPv6-in-IPv6 header. The The 6LBR must add an RH3 header inside an IPv6-in-IPv6 header. The
6LBR will know the path, and will recognize that the final node is 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 not an RPL capable node as it will have received the connectivity DAO
from the nearest 6LR. The 6LBR can therefore make the IPv6-in-IPv6 from the nearest 6LR. The 6LBR can therefore make the IPv6-in-IPv6
header destination be the last 6LR. The 6LBR will set to zero the header destination be the last 6LR. The 6LBR will set to zero the
flow label upon entry in order to aid compression [RFC8138]. flow label upon entry in order to aid compression [RFC8138].
The Figure 18 shows the table that summarizes what headers are needed The Figure 18 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+--------+-------------+--------------+--------------+-----+ +----------+--------+------------------+-----------+-----------+-----+
| Header |Internet| 6LBR | 6LR_1 | 6lR_i |RUL | | Header |Internet| 6LBR | 6LR_i | 6LR_n | RUL |
| | src | | | (i=2,...,n) |dst | | | src | | | | dst |
| | | | | |node | +----------+--------+------------------+-----------+-----------+-----+
+---------+--------+-------------+--------------+--------------+-----+ | Added | -- | IP6-IP6(RH3,RPI) | -- | -- | -- |
| Inserted| -- | IPv6-in-IPv6| -- | -- | -- | | headers | | | | | |
| headers | | (RH3,RPI) | | | | +----------+--------+------------------+-----------+-----------+-----+
+---------+--------+-------------+--------------+--------------+-----+ | Modified | -- | -- | IP6-IP6 | -- | -- |
| Removed | -- | -- | -- | IPv6-in-IPv6 | -- | | headers | | | (RH3,RPI) | | |
| headers | | | | (RH3,RPI)[1] | | +----------+--------+------------------+-----------+-----------+-----+
+---------+--------+-------------+--------------+--------------+-----+ | Removed | -- | -- | -- | IP6-IP6 | -- |
| Re-added| -- | -- | -- | -- | -- | | headers | | | | (RH3,RPI) | |
| headers | | | | | | +----------+--------+------------------+-----------+-----------+-----+
+---------+--------+-------------+--------------+--------------+-----+ |Untouched | -- | -- | -- | -- | -- |
| Modified| -- | -- | IPv6-in-IPv6 | IPv6-in-IPv6 | -- | | headers | | | | | |
| headers | | | (RH3,RPI) | (RH3,RPI) | | +----------+--------+------------------+-----------+-----------+-----+
+---------+--------+-------------+--------------+--------------+-----+
|Untouched| -- | -- | -- | -- | -- |
| headers | | | | | |
+---------+--------+-------------+--------------+--------------+-----+
Figure 18: Non-SM: Summary of the use of headers from Internet to RUL Figure 18: Non-SM: Summary of the use of headers from Internet to RUL
[1] The last 6LR before the IPv6 node. [1] The last 6LR before the IPv6 node.
8.3. Non-SM: Interaction between Leafs 8.3. Non-SM: Interaction between Leafs
In this section is described the communication flow in Non Storing In this section is described the communication flow in Non Storing
Mode (Non-SM) between, Mode (Non-SM) between,
RAL to RAL RAL to RAL
skipping to change at page 43, line 5 skipping to change at page 41, line 32
which should get ignored. The root inserts a RPI (RPI2) alongside which should get ignored. The root inserts a RPI (RPI2) alongside
the RH3. the RH3.
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 or scenario non-storing DODAGs and fall into this scenario or scenario
Section 8.1.2, with the originating node acting as 6LBR. Section 8.1.2, with the originating node acting as 6LBR.
The Figure 19 shows the table that summarizes what headers are needed The Figure 19 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+------------+----------+------------+----------+------------+ +---------+-------+----------+------------+----------+------------+
| Header | RAL | 6LR_ia | 6LBR | 6LR_id | RAL | | Header | RAL | 6LR_ia | 6LBR | 6LR_id | RAL |
| | src | | | | dst | | | src | | | | dst |
+---------+------------+----------+------------+----------+------------+ +---------+-------+----------+------------+----------+------------+
| Inserted|IPv6-in-IPv6| |IPv6-in-IPv6| -- | -- | | Added |IP6-IP6| | IP6-IP6 | -- | -- |
| headers | (RPI1) | |(RH3-> RAL, | | | | headers |(RPI1) | |(RH3-> RAL, | | |
| | | | RPI2) | | | | | | | RPI2) | | |
+---------+------------+----------+------------+----------+------------+ +---------+-------+----------+------------+----------+------------+
| Removed | -- | -- |IPv6-in-IPv6| -- |IPv6-in-IPv6| | Modified| -- | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | (RPI1) | | (RH3, | | headers | | (RPI1) | |(RH3,RPI) | |
| | | | | | RPI2) | +---------+-------+----------+------------+----------+------------+
+---------+------------+----------+------------+----------+------------+ | Removed | -- | -- | IP6-IP6 | -- | IP6-IP6 |
| Re-added| -- | -- | -- | -- | -- | | headers | | | (RPI1) | | (RH3, |
| headers | | | | | | | | | | | | RPI2) |
+---------+------------+----------+------------+----------+------------+ +---------+-------+----------+------------+----------+------------+
| Modified| -- |IP6-in-IP6| -- |IP6-in-IP6| -- | |Untouched| -- | -- | -- | -- | -- |
| headers | | (RPI1) | | (RPI2) | | | headers | | | | | |
+---------+------------+----------+------------+----------+------------+ +---------+-------+----------+------------+----------+------------+
|Untouched| -- | -- | -- | -- | -- |
| headers | | | | | |
+---------+------------+----------+------------+----------+------------+
Figure 19: Non-SM: Summary of the use of headers for RAL to RAL. Figure 19: Non-SM: Summary of the use of headers for RAL to RAL.
IP6-in-IP6 refers to IPv6-in-IPv6.
8.3.2. Non-SM: Example of Flow from RAL to RUL 8.3.2. Non-SM: Example of Flow from RAL to RUL
In this case the flow comprises: In this case the flow comprises:
RAL --> 6LR_ia --> root (6LBR) --> 6LR_id --> RUL (IPv6 dst node) RAL --> 6LR_ia --> root (6LBR) --> 6LR_id --> RUL (IPv6 dst node)
For example, a communication flow could be: Node F --> Node D --> For example, a communication flow could be: Node F --> Node D -->
Node B --> Node A (root) --> Node B --> Node E --> Node G Node B --> Node A (root) --> Node B --> Node E --> Node G
skipping to change at page 44, line 13 skipping to change at page 42, line 35
(6LR_id = m). (6LR_id = m).
The Figure 20 shows the table that summarizes what headers are needed The Figure 20 shows the table that summarizes what headers are needed
for this use case. for this use case.
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Header | RAL | 6LR_ia | 6LBR | 6LR_id | 6LR_m | RUL | | Header | RAL | 6LR_ia | 6LBR | 6LR_id | 6LR_m | RUL |
| | src | | | | | dst | | | src | | | | | dst |
| | node | | | | | node | | | node | | | | | node |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Inserted | IP6-IP6 | | IP6-IP6 | -- | -- | -- | | Added | IP6-IP6 | | IP6-IP6 | -- | -- | -- |
| headers | (RPI1) | | (RH3, | | | | | headers | (RPI1) | | (RH3, | | | |
| | | | RPI2) | | | | | | | | RPI2) | | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Removed | -- | -- | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | (RPI1) | | (RH3, | |
| | | | | | RPI2) | |
+-----------+---------+---------+---------+---------+---------+------+
| Re-added | -- | -- | -- | -- | -- | -- |
| headers | | | | | | |
+-----------+---------+---------+---------+---------+---------+------+
| Modified | -- | IP6-IP6 | -- | IP6-IP6 | | -- | | Modified | -- | IP6-IP6 | -- | IP6-IP6 | | -- |
| headers | | (RPI1) | | (RH3, | | | | headers | | (RPI1) | | (RH3, | | |
| | | | | RPI2) | | | | | | | | RPI2) | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Removed | -- | -- | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | (RPI1) | | (RH3, | |
| | | | | | RPI2) | |
+-----------+---------+---------+---------+---------+---------+------+
| Untouched | -- | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- | -- |
| headers | | | | | | | | headers | | | | | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
Figure 20: Non-SM: Summary of the use of headers from RAL to RUL. Figure 20: Non-SM: Summary of the use of headers from RAL to RUL.
8.3.3. Non-SM: Example of Flow from RUL to RAL 8.3.3. Non-SM: Example of Flow from RUL to RAL
In this case the flow comprises: In this case the flow comprises:
skipping to change at page 45, line 16 skipping to change at page 43, line 36
(RPI2). (RPI2).
The Figure 21 shows the table that summarizes what headers are needed The Figure 21 shows the table that summarizes what headers are needed
for this use case. for this use case.
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Header | RUL | 6LR_1 | 6LR_ia | 6LBR | 6LR_id | RAL | | Header | RUL | 6LR_1 | 6LR_ia | 6LBR | 6LR_id | RAL |
| | src | | | | | dst | | | src | | | | | dst |
| | node | | | | | node | | | node | | | | | node |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Inserted | -- | IP6-IP6 | -- | IP6-IP6 | -- | -- | | Added | -- | IP6-IP6 | -- | IP6-IP6 | -- | -- |
| headers | | (RPI1) | | (RH3, | | | | headers | | (RPI1) | | (RH3, | | |
| | | | | RPI2) | | | | | | | | RPI2) | | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Removed | -- | | -- | IP6-IP6 | -- | IP6-IP6 |
| headers | | | | (RPI1) | | (RH3, |
| | | | | | | RPI2) |
+-----------+------+---------+---------+---------+---------+---------+
| Re-added | -- | | -- | -- | -- | -- |
| headers | | | | | | |
+-----------+------+---------+---------+---------+---------+---------+
| Modified | -- | | IP6-IP6 | -- | IP6-IP6 | -- | | Modified | -- | | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | (RPI1) | | (RH3, | | | headers | | | (RPI1) | | (RH3, | |
| | | | | | RPI2) | | | | | | | | RPI2) | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Removed | -- | | -- | IP6-IP6 | -- | IP6-IP6 |
| headers | | | | (RPI1) | | (RH3, |
| | | | | | | RPI2) |
+-----------+------+---------+---------+---------+---------+---------+
| Untouched | -- | | -- | -- | -- | -- | | Untouched | -- | | -- | -- | -- | -- |
| headers | | | | | | | | headers | | | | | | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
Figure 21: Non-SM: Summary of the use of headers from RUL to RAL. Figure 21: Non-SM: Summary of the use of headers from RUL to RAL.
8.3.4. Non-SM: Example of Flow from RUL to RUL 8.3.4. Non-SM: Example of Flow from RUL to RUL
In this case the flow comprises: In this case the flow comprises:
skipping to change at page 46, line 18 skipping to change at page 44, line 32
This scenario is the combination of the previous two cases. This scenario is the combination of the previous two cases.
The Figure 22 shows the table that summarizes what headers are needed The Figure 22 shows the table that summarizes what headers are needed
for this use case. for this use case.
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
| Header | RUL | 6LR_1 | 6LR_ia| 6LBR |6LR_id | 6LR_m | RUL | | Header | RUL | 6LR_1 | 6LR_ia| 6LBR |6LR_id | 6LR_m | RUL |
| | src | | | | | | dst | | | src | | | | | | dst |
| | node | | | | | | node | | | node | | | | | | node |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
| Inserted| -- |IP6-IP6| -- | IP6-IP6 | -- | -- | -- | | Added | -- |IP6-IP6| -- | IP6-IP6 | -- | -- | -- |
| headers | | (RPI1)| | (RH3, | | | | | headers | | (RPI1)| | (RH3, | | | |
| | | | | RPI2) | | | | | | | | | RPI2) | | | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
| Removed | -- | -- | -- | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | | (RPI1) | | (RH3, | |
| | | | | | | RPI2) | |
+---------+------+-------+-------+---------+-------+---------+------+
| Re-added| -- | -- | -- | -- | -- | -- | -- |
| headers | | | | | | | |
+---------+------+-------+-------+---------+-------+---------+------+
| Modified| -- | -- |IP6-IP6| -- |IP6-IP6| -- | -- | | Modified| -- | -- |IP6-IP6| -- |IP6-IP6| -- | -- |
| headers | | | (RPI1)| | (RH3, | | | | headers | | | (RPI1)| | (RH3, | | |
| | | | | | RPI2)| | | | | | | | | RPI2)| | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
| Removed | -- | -- | -- | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | | (RPI1) | | (RH3, | |
| | | | | | | RPI2) | |
+---------+------+-------+-------+---------+-------+---------+------+
|Untouched| -- | -- | -- | -- | -- | -- | -- | |Untouched| -- | -- | -- | -- | -- | -- | -- |
| headers | | | | | | | | | headers | | | | | | | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
Figure 22: Non-SM: Summary of the use of headers from RUL to RUL Figure 22: Non-SM: Summary of the use of headers from RUL to RUL
9. Operational Considerations of supporting RUL-leaves 9. Operational Considerations of supporting RUL-leaves
Roughly half of the situations described in this document involve Roughly half of the situations described in this document involve
leaf ("host") nodes that do not speak RPL. These nodes fall into two leaf ("host") nodes that do not speak RPL. These nodes fall into two
skipping to change at page 54, line 25 skipping to change at page 52, line 39
[DDOS-KREBS] [DDOS-KREBS]
Goodin, D., "Record-breaking DDoS reportedly delivered by Goodin, D., "Record-breaking DDoS reportedly delivered by
>145k hacked cameras", September 2016, >145k hacked cameras", September 2016,
<http://arstechnica.com/security/2016/09/botnet-of-145k- <http://arstechnica.com/security/2016/09/botnet-of-145k-
cameras-reportedly-deliver-internets-biggest-ddos-ever/>. cameras-reportedly-deliver-internets-biggest-ddos-ever/>.
[I-D.ietf-6lo-ap-nd] [I-D.ietf-6lo-ap-nd]
Thubert, P., Sarikaya, B., Sethi, M., and R. Struik, Thubert, P., Sarikaya, B., Sethi, M., and R. Struik,
"Address Protected Neighbor Discovery for Low-power and "Address Protected Neighbor Discovery for Low-power and
Lossy Networks", draft-ietf-6lo-ap-nd-12 (work in Lossy Networks", draft-ietf-6lo-ap-nd-13 (work in
progress), April 2019. progress), January 2020.
[I-D.ietf-6lo-backbone-router] [I-D.ietf-6lo-backbone-router]
Thubert, P., Perkins, C., and E. Levy-Abegnoli, "IPv6 Thubert, P., Perkins, C., and E. Levy-Abegnoli, "IPv6
Backbone Router", draft-ietf-6lo-backbone-router-13 (work Backbone Router", draft-ietf-6lo-backbone-router-13 (work
in progress), September 2019. in progress), September 2019.
[I-D.ietf-6tisch-dtsecurity-secure-join] [I-D.ietf-6tisch-dtsecurity-secure-join]
Richardson, M., "6tisch Secure Join protocol", draft-ietf- Richardson, M., "6tisch Secure Join protocol", draft-ietf-
6tisch-dtsecurity-secure-join-01 (work in progress), 6tisch-dtsecurity-secure-join-01 (work in progress),
February 2017. February 2017.
[I-D.ietf-anima-autonomic-control-plane] [I-D.ietf-anima-autonomic-control-plane]
Eckert, T., Behringer, M., and S. Bjarnason, "An Autonomic Eckert, T., Behringer, M., and S. Bjarnason, "An Autonomic
Control Plane (ACP)", draft-ietf-anima-autonomic-control- Control Plane (ACP)", draft-ietf-anima-autonomic-control-
plane-21 (work in progress), November 2019. plane-21 (work in progress), November 2019.
[I-D.ietf-anima-bootstrapping-keyinfra] [I-D.ietf-anima-bootstrapping-keyinfra]
Pritikin, M., Richardson, M., Eckert, T., Behringer, M., Pritikin, M., Richardson, M., Eckert, T., Behringer, M.,
and K. Watsen, "Bootstrapping Remote Secure Key and K. Watsen, "Bootstrapping Remote Secure Key
Infrastructures (BRSKI)", draft-ietf-anima-bootstrapping- Infrastructures (BRSKI)", draft-ietf-anima-bootstrapping-
keyinfra-30 (work in progress), November 2019. keyinfra-34 (work in progress), January 2020.
[I-D.ietf-intarea-tunnels] [I-D.ietf-intarea-tunnels]
Touch, J. and M. Townsley, "IP Tunnels in the Internet Touch, J. and M. Townsley, "IP Tunnels in the Internet
Architecture", draft-ietf-intarea-tunnels-10 (work in Architecture", draft-ietf-intarea-tunnels-10 (work in
progress), September 2019. progress), September 2019.
[I-D.ietf-roll-unaware-leaves] [I-D.ietf-roll-unaware-leaves]
Thubert, P. and M. Richardson, "Routing for RPL Leaves", Thubert, P. and M. Richardson, "Routing for RPL Leaves",
draft-ietf-roll-unaware-leaves-07 (work in progress), draft-ietf-roll-unaware-leaves-08 (work in progress),
November 2019. December 2019.
[RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6
(IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460, (IPv6) Specification", RFC 2460, DOI 10.17487/RFC2460,
December 1998, <https://www.rfc-editor.org/info/rfc2460>. December 1998, <https://www.rfc-editor.org/info/rfc2460>.
[RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in [RFC2473] Conta, A. and S. Deering, "Generic Packet Tunneling in
IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473, IPv6 Specification", RFC 2473, DOI 10.17487/RFC2473,
December 1998, <https://www.rfc-editor.org/info/rfc2473>. December 1998, <https://www.rfc-editor.org/info/rfc2473>.
[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet [RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., "Internet
skipping to change at page 56, line 25 skipping to change at page 54, line 41
[RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C. [RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
Perkins, "Registration Extensions for IPv6 over Low-Power Perkins, "Registration Extensions for IPv6 over Low-Power
Wireless Personal Area Network (6LoWPAN) Neighbor Wireless Personal Area Network (6LoWPAN) Neighbor
Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018, Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
<https://www.rfc-editor.org/info/rfc8505>. <https://www.rfc-editor.org/info/rfc8505>.
Authors' Addresses Authors' Addresses
Maria Ines Robles Maria Ines Robles
Aalto University, Finland Aalto University, Finland/Uni. Tec. Nac.(UTN) - FRM, Argentina
Email: mariainesrobles@gmail.com Email: mariainesrobles@gmail.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/mcr/ URI: http://www.sandelman.ca/mcr/
Pascal Thubert Pascal Thubert
 End of changes. 101 change blocks. 
335 lines changed or deleted 269 lines changed or added

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