< draft-ietf-roll-useofrplinfo-26.txt   draft-ietf-roll-useofrplinfo-27.txt >
ROLL Working Group M. Robles ROLL Working Group M. Robles
Internet-Draft Aalto Internet-Draft Aalto
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: November 16, 2019 P. Thubert Expires: November 17, 2019 P. Thubert
Cisco Cisco
May 15, 2019 May 16, 2019
Using RPL Option Type, Routing Header for Source Routes and IPv6-in-IPv6 Using RPL 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-26 draft-ietf-roll-useofrplinfo-27
Abstract Abstract
This document looks at different data flows through LLN (Low-Power This document looks at different data flows through LLN (Low-Power
and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power and Lossy Networks) where RPL (IPv6 Routing Protocol for Low-Power
and Lossy Networks) is used to establish routing. The document and Lossy Networks) is used to establish routing. The document
enumerates the cases where RFC 6553 (RPL Option Type), RFC 6554 enumerates the cases where RFC 6553 (RPL Option Type), RFC 6554
(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 November 16, 2019. This Internet-Draft will expire on November 17, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2019 IETF Trust and the persons identified as the Copyright (c) 2019 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
skipping to change at page 3, line 48 skipping to change at page 3, line 48
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 50
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 50 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 50
13.1. Normative References . . . . . . . . . . . . . . . . . . 50 13.1. Normative References . . . . . . . . . . . . . . . . . . 50
13.2. Informative References . . . . . . . . . . . . . . . . . 51 13.2. Informative References . . . . . . . . . . . . . . . . . 51
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 54 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. RFC 6553 [RFC6550] is a routing protocol for constrained networks. RFC 6553
[RFC6553] defines the "RPL option" (RPI), carried within the IPv6 [RFC6553] defines the "RPL option" (RPL Packet Information or RPI),
Hop-by-Hop header to quickly identify inconsistencies (loops) in the carried within the IPv6 Hop-by-Hop header to quickly identify
routing topology. RFC 6554 [RFC6554] defines the "RPL Source Route inconsistencies (loops) in the routing topology. RFC 6554 [RFC6554]
Header" (RH3), an IPv6 Extension Header to deliver datagrams within a defines the "RPL Source Route Header" (RH3), an IPv6 Extension Header
RPL routing domain, particularly in non-storing mode. to deliver datagrams within a RPL routing domain, particularly in
non-storing mode.
These various items are referred to as RPL artifacts, and they are These various items are referred to as RPL artifacts, and they are
seen on all of the data-plane traffic that occurs in RPL routed seen on all of the data-plane traffic that occurs in RPL routed
networks; they do not in general appear on the RPL control plane networks; they do not in general appear on the RPL control plane
traffic at all which is mostly hop-by-hop traffic (one exception traffic at all which is mostly hop-by-hop traffic (one exception
being DAO messages in non-storing mode). being DAO messages in non-storing mode).
It has become clear from attempts to do multi-vendor It has become clear from attempts to do multi-vendor
interoperability, and from a desire to compress as many of the above interoperability, and from a desire to compress as many of the above
artifacts as possible that not all implementers agree when artifacts artifacts as possible that not all implementers agree when artifacts
skipping to change at page 9, line 41 skipping to change at page 9, line 41
E.g. [I-D.ietf-anima-autonomic-control-plane]. E.g. [I-D.ietf-anima-autonomic-control-plane].
In the non-storing case, dealing with not-RPL aware leaf nodes is In the non-storing case, dealing with not-RPL aware leaf nodes is
much easier as the 6LBR (DODAG root) has complete knowledge about the much easier as the 6LBR (DODAG root) has complete knowledge about the
connectivity of all DODAG nodes, and all traffic flows through the connectivity of all DODAG nodes, and all traffic flows through the
root node. root node.
The 6LBR can recognize not-RPL aware leaf nodes because it will The 6LBR can recognize not-RPL aware leaf nodes because it will
receive a DAO about that node from the 6LR immediately above that receive a DAO about that node from the 6LR immediately above that
not-RPL aware node. This means that the non-storing mode case can not-RPL aware node. This means that the non-storing mode case can
avoid ever using hop-by-hop IPv6-in-IPv6 headers for traffic avoid ever using hop-by-hop re-encapsulation headers for traffic
originating from the root to leafs. originating from the root to the leafs.
The non-storing mode case does not require the type change from 0x63 The non-storing mode case does not require the type change from 0x63
to 0x23, as the root can always create the right packet. The type to 0x23, as the root can always create the right packet. The type
change does not adversely affect the non-storing case. change does not adversely affect the non-storing case.
3.2. Updates to RFC6550: Indicating the new RPI in the DODAG 3.2. Updates to RFC6550: Indicating the new RPI in the DODAG
Configuration Option Flag. Configuration Option Flag.
In order to avoid a Flag Day caused by lack of interoperation between In order to avoid a Flag Day caused by lack of interoperation between
new RPI (0x23) and old RPI (0x63) nodes, this section defines a flag new RPI (0x23) and old RPI (0x63) nodes, this section defines a flag
skipping to change at page 17, line 30 skipping to change at page 17, line 30
| | ~Raf to Int | must | root | | | ~Raf to Int | must | root |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | Int to ~Raf | must | hop | | | Int to ~Raf | must | hop |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
| | Raf to Raf | No | No | | | Raf to Raf | No | No |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | Raf to ~Raf | No | No | | | Raf to ~Raf | No | No |
+ Leaf - Leaf +--------------+------------+------------------+ + Leaf - Leaf +--------------+------------+------------------+
| | ~Raf to Raf | must | Raf (tgt) | | | ~Raf to Raf | must | Raf (tgt) |
+ +--------------+------------+------------------+ + +--------------+------------+------------------+
| | ~Raf to ~Raf | must | ~Raf | | | ~Raf to ~Raf | must | hop |
+---------------------+--------------+------------+------------------+ +---------------------+--------------+------------+------------------+
Figure 7: Table of IPv6-in-IPv6 encapsulation in Storing mode. Figure 7: Table of IPv6-in-IPv6 encapsulation in Storing mode.
6.1. Storing Mode: Interaction between Leaf and Root 6.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,
RPL-aware-leaf to root RPL-aware-leaf to root
skipping to change at page 18, line 47 skipping to change at page 18, line 47
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Header | 6LN src | 6LR_i | 6LBR dst | | Header | 6LN src | 6LR_i | 6LBR dst |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Inserted headers | RPI | -- | -- | | Inserted headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI | | Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
Table 1: Storing: Summary of the use of headers from RPL-aware-leaf Table 1: Storing mode: Summary of the use of headers from RPL-aware-
to root leaf to root
6.1.2. SM: Example of Flow from root to RPL-aware-leaf 6.1.2. SM: Example of Flow from root to RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) root (6LBR) --> 6LR_i --> RPL-aware-leaf (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 --> Node D --> Node F
skipping to change at page 19, line 33 skipping to change at page 19, line 33
+-------------------+------+-------+------+ +-------------------+------+-------+------+
| Header | 6LBR | 6LR_i | 6LN | | Header | 6LBR | 6LR_i | 6LN |
+-------------------+------+-------+------+ +-------------------+------+-------+------+
| Inserted headers | RPI | -- | -- | | Inserted headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI | | Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+------+-------+------+ +-------------------+------+-------+------+
Table 2: Storing: Summary of the use of headers from root to RPL- Table 2: Storing mode: Summary of the use of headers from root to
aware-leaf RPL-aware-leaf
6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf 6.1.3. SM: Example of Flow from root to not-RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6)
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 E --> Node G Node B --> Node E --> Node G
skipping to change at page 20, line 15 skipping to change at page 20, line 15
+-------------------+----------+-------+----------------+ +-------------------+----------+-------+----------------+
| Header | 6LBR src | 6LR_i | IPv6 dst node | | Header | 6LBR src | 6LR_i | IPv6 dst node |
+-------------------+----------+-------+----------------+ +-------------------+----------+-------+----------------+
| Inserted headers | RPI | -- | -- | | Inserted headers | RPI | -- | -- |
| Removed headers | -- | -- | -- | | Removed headers | -- | -- | -- |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | RPI (Ignored) | | Untouched headers | -- | -- | RPI (Ignored) |
+-------------------+----------+-------+----------------+ +-------------------+----------+-------+----------------+
Table 3: Storing: Summary of the use of headers from root to not-RPL- Table 3: Storing mode: Summary of the use of headers from root to
aware-leaf not-RPL-aware-leaf
6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root 6.1.4. SM: Example of Flow from not-RPL-aware-leaf to root
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) not-RPL-aware-leaf (IPv6) --> 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 --> Node E -->
Node B --> Node A root(6LBR) Node B --> Node A root(6LBR)
skipping to change at page 22, line 24 skipping to change at page 22, line 24
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Header | 6LN src | 6LR_i | 6LBR | Internet dst | | Header | 6LN src | 6LR_i | 6LBR | Internet dst |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Inserted headers | RPI | -- | -- | -- | | Inserted headers | RPI | -- | -- | -- |
| Removed headers | -- | -- | -- | -- | | Removed headers | -- | -- | -- | -- |
| Re-added headers | -- | -- | -- | -- | | Re-added headers | -- | -- | -- | -- |
| Modified headers | -- | RPI | -- | -- | | Modified headers | -- | RPI | -- | -- |
| Untouched headers | -- | -- | RPI | RPI (Ignored) | | Untouched headers | -- | -- | RPI | RPI (Ignored) |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
Table 4: Storing: Summary of the use of headers from RPL-aware-leaf Table 4: Storing mode: Summary of the use of headers from RPL-aware-
to Internet leaf to Internet
6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf 6.2.2. SM: Example of Flow from Internet to RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (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 --> Node D --> Node F
skipping to change at page 26, line 45 skipping to change at page 26, line 45
| Removed | -- | -- | -- | -- | RPI | | Removed | -- | -- | -- | -- | RPI |
| headers | | | | | | | headers | | | | | |
| Re-added | -- | -- | -- | -- | -- | | Re-added | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
| Modified | -- | RPI | RPI | RPI | -- | | Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | | | headers | | | | | |
| Untouched | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+---------------+--------+--------+---------------+--------+--------+ +---------------+--------+--------+---------------+--------+--------+
Table 5: Storing: Summary of the use of headers for RPL-aware-leaf to Table 5: Storing mode: Summary of the use of headers for RPL-aware-
RPL-aware-leaf leaf to RPL-aware-leaf
6.3.2. SM: Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf 6.3.2. SM: Example of Flow from RPL-aware-leaf to not-RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> not-RPL-aware 6LN --> 6LR_ia --> common parent (6LR_x) --> 6LR_id --> not-RPL-aware
6LN (IPv6) 6LN (IPv6)
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 E --> Node G Node B --> Node E --> Node G
skipping to change at page 27, line 42 skipping to change at page 27, line 42
| Removed | -- | -- | -- | -- | -- | | Removed | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
| Re-added | -- | -- | -- | -- | -- | | Re-added | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
| Modified | -- | RPI | RPI | RPI | -- | | Modified | -- | RPI | RPI | RPI | -- |
| headers | | | | | | | headers | | | | | |
| Untouched | -- | -- | -- | -- | RPI(Ignored) | | Untouched | -- | -- | -- | -- | RPI(Ignored) |
| headers | | | | | | | headers | | | | | |
+-----------+------+--------+---------------+--------+--------------+ +-----------+------+--------+---------------+--------+--------------+
Table 6: Storing: Summary of the use of headers for RPL-aware-leaf to Table 6: Storing mode: Summary of the use of headers for RPL-aware-
not-RPL-aware-leaf leaf to not-RPL-aware-leaf
6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf 6.3.3. SM: Example of Flow from not-RPL-aware-leaf to RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware 6LN (IPv6) --> 6LR_ia --> common parent (6LR_x) --> not-RPL-aware 6LN (IPv6) --> 6LR_ia --> common parent (6LR_x) -->
6LR_id --> 6LN 6LR_id --> 6LN
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G --> Node E -->
Node B --> Node D --> Node F Node B --> Node D --> Node F
skipping to change at page 29, line 26 skipping to change at page 29, line 26
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 not-RPL-aware source (Node G) to the root (6LBR) router from the not-RPL-aware source (Node G) to the root (6LBR)
(Node A). In this case, "1 < ia <= n", n is the number of routers (Node A). In this case, "1 < ia <= n", n is the number of routers
(6LR) that the packet goes through from IPv6 src to the root. (6LR) that the packet goes through from IPv6 src to the root.
6LR_id (C) is the intermediate router from the root (Node A) to the 6LR_id (C) is the intermediate router from the root (Node A) to the
destination Node J. In this case, "1 <= id <= m", m is the number of destination Node J. In this case, "1 <= id <= m", m is the number of
routers (6LR) that the packet goes through from the root to routers (6LR) that the packet goes through from the root to
destination (IPv6 dst). destination (IPv6 dst).
Note that this flow is identical to Section 6.3.3, except that the The RPI is ignored at the IPv6 dst node.
RPI is ignored at the IPv6 dst node.
The 6LR_1 (Node E) receives the packet from the the IPv6 node (Node The 6LR_1 (Node E) receives the packet from the the IPv6 node (Node
G) and inserts the RPI header (RPI), encapsulated in an IPv6-in-IPv6 G) and inserts the RPI header (RPI), encapsulated in an IPv6-in-IPv6
header. The IPv6-in-IPv6 header is addressed to the final header. The IPv6-in-IPv6 header is addressed hop-by-hop.
destination (Node J).
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. In the figure, IP6-IP6 refers to IPv6-in-IPv6. for this use case. In the figure, IP6-IP6 refers to IPv6-in-IPv6.
+---------+------+------------+------------+------------+------------+ +---------+------+-------+-------+---------+-------+-------+
| Header | IPv6 | 6LR_1 | 6LR_ia | 6LR_m | IPv6 | | Header | IPv6 | 6LR_1 | 6LR_ia| 6LBR |6LR_id | IPv6 |
| | src | | | | dst | | | src | | | | | dst |
| | node | | | | node | | | node | | | | | node |
+---------+------+------------+------------+------------+------------+ +---------+------+-------+-------+---------+-------+-------+
| Inserted| -- |IP6-IP6(RPI)| -- | -- | -- | | Inserted| -- |IP6-IP6| -- | | -- | -- |
| headers | | | | | | | headers | | (RPI )| | | | |
+---------+------+------------+------------+------------+------------+ | | | | | | | |
| Removed | -- | -- | -- | -- |IP6-IP6(RPI)| +---------+------+-------+-------+---------+-------+-------+
| headers | | | | | RPI Ignored| | Removed | -- | -- | -- | | -- |IP6-IP6|
+---------+------+------------+------------+------------+------------+ | headers | | | | | |(RPI) |
| Re-added| -- | -- | -- | -- | -- | | | | | | | | RPI |
| headers | | | | | | | | | | | | |Ignored|
+---------+------+------------+------------+------------+------------+ +---------+------+-------+-------+---------+-------+-------+
| Modified| -- | -- |IP6-IP6(RPI)|IP6-IP6(RPI)| -- | | Re-added| -- | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | | |
+---------+------+------------+------------+------------+------------+ +---------+------+-------+-------+---------+-------+-------+
|Untouched| -- | -- | -- | -- | -- | | Modified| -- | -- |IP6-IP6| IP6-IP6 |IP6-IP6| -- |
| headers | | | | | | | headers | | | (RPI) | (RPI) | (RPI) | |
+---------+------+------------+------------+------------+------------+ | | | | | | | |
+---------+------+-------+-------+---------+-------+-------+
|Untouched| -- | -- | -- | -- | -- | -- |
| headers | | | | | | |
+---------+------+-------+-------+---------+-------+-------+
Figure 13: Storing mode: Summary of the use of headers from not-RPL- Figure 13: Storing mode: Summary of the use of headers from not-RPL-
aware-leaf to not-RPL-aware-leaf aware-leaf to not-RPL-aware-leaf
7. Non Storing mode 7. 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 not-RPL aware no need for all nodes to know about the existence of not-RPL aware
skipping to change at page 32, line 34 skipping to change at page 32, line 35
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Header | 6LN src | 6LR_i | 6LBR dst | | Header | 6LN src | 6LR_i | 6LBR dst |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
| Inserted headers | RPI | -- | -- | | Inserted headers | RPI | -- | -- |
| Removed headers | -- | -- | RPI | | Removed headers | -- | -- | RPI |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI | -- | | Modified headers | -- | RPI | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+---------+-------+----------+ +-------------------+---------+-------+----------+
Table 7: Non Storing: Summary of the use of headers from RPL-aware- Table 7: Non Storing mode: Summary of the use of headers from RPL-
leaf to root aware-leaf to root
7.1.2. Non-SM: Example of Flow from root to RPL-aware-leaf 7.1.2. Non-SM: Example of Flow from root to RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN)
For example, a communication flow could be: Node A (root) --> Node B For example, a communication flow could be: Node A (root) --> Node B
--> Node D --> Node F --> Node D --> Node F
skipping to change at page 33, line 20 skipping to change at page 33, line 22
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
| Header | 6LBR src | 6LR_i | 6LN dst | | Header | 6LBR src | 6LR_i | 6LN dst |
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
| Inserted headers | RPI, RH3 | -- | -- | | Inserted headers | RPI, RH3 | -- | -- |
| Removed headers | -- | -- | RH3, RPI | | Removed headers | -- | -- | RH3, RPI |
| Re-added headers | -- | -- | -- | | Re-added headers | -- | -- | -- |
| Modified headers | -- | RPI, RH3 | -- | | Modified headers | -- | RPI, RH3 | -- |
| Untouched headers | -- | -- | -- | | Untouched headers | -- | -- | -- |
+-------------------+----------+-----------+-----------+ +-------------------+----------+-----------+-----------+
Table 8: Non Storing: Summary of the use of headers from root to RPL- Table 8: Non Storing mode: Summary of the use of headers from root to
aware-leaf RPL-aware-leaf
7.1.3. Non-SM: Example of Flow from root to not-RPL-aware-leaf 7.1.3. Non-SM: Example of Flow from root to not-RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6)
For example, a communication flow could be: Node A (root) --> Node B For example, a communication flow could be: Node A (root) --> Node B
--> Node E --> Node G --> Node E --> Node G
skipping to change at page 34, line 27 skipping to change at page 34, line 27
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Modified | -- | RPI, RH3 | RPI, | -- | | Modified | -- | RPI, RH3 | RPI, | -- |
| headers | | | RH3(consumed) | | | headers | | | RH3(consumed) | |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
| Untouched | -- | -- | -- | RPI, RH3 | | Untouched | -- | -- | -- | RPI, RH3 |
| headers | | | | (both | | headers | | | | (both |
| | | | | ignored) | | | | | | ignored) |
+-----------+----------+--------------+----------------+----------+ +-----------+----------+--------------+----------------+----------+
Figure 15: Non Storing: Summary of the use of headers from root to Figure 15: Non Storing mode: Summary of the use of headers from root
not-RPL-aware-leaf to not-RPL-aware-leaf
7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to root 7.1.4. Non-SM: Example of Flow from not-RPL-aware-leaf to root
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i --> root (6LBR) not-RPL-aware-leaf (IPv6) --> 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 --> Node E -->
Node B --> Node A (root) Node B --> Node A (root)
skipping to change at page 35, line 26 skipping to change at page 35, line 26
| Re-added | -- | -- | -- | -- | | Re-added | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+----------+------+-------------------+------------------+-----------------+ +----------+------+-------------------+------------------+-----------------+
| Modified | -- | -- | IPv6-in-IPv6(RPI)| -- | | Modified | -- | -- | IPv6-in-IPv6(RPI)| -- |
| headers | | | | | | headers | | | | |
+----------+------+-------------------+------------------+-----------------+ +----------+------+-------------------+------------------+-----------------+
|Untouched | -- | -- | -- | -- | |Untouched | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+----------+------+-------------------+------------------+-----------------+ +----------+------+-------------------+------------------+-----------------+
Figure 16: Non Storing: Summary of the use of headers from not-RPL- Figure 16: Non Storing mode: Summary of the use of headers from not-
aware-leaf to root RPL-aware-leaf to root
7.2. Non-Storing Mode: Interaction between Leaf and Internet 7.2. Non-Storing Mode: Interaction between Leaf and Internet
This section will describe the communication flow in Non Storing Mode This section will describe the communication flow in Non Storing Mode
(Non-SM) between: (Non-SM) between:
RPL-aware-leaf to Internet RPL-aware-leaf to Internet
Internet to RPL-aware-leaf Internet to RPL-aware-leaf
skipping to change at page 36, line 26 skipping to change at page 36, line 26
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Header | 6LN src | 6LR_i | 6LBR | Internet dst | | Header | 6LN src | 6LR_i | 6LBR | Internet dst |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
| Inserted headers | RPI | -- | -- | -- | | Inserted headers | RPI | -- | -- | -- |
| Removed headers | -- | -- | -- | -- | | Removed headers | -- | -- | -- | -- |
| Re-added headers | -- | -- | -- | -- | | Re-added headers | -- | -- | -- | -- |
| Modified headers | -- | RPI | -- | -- | | Modified headers | -- | RPI | -- | -- |
| Untouched headers | -- | -- | RPI | RPI (Ignored) | | Untouched headers | -- | -- | RPI | RPI (Ignored) |
+-------------------+---------+-------+------+----------------+ +-------------------+---------+-------+------+----------------+
Table 9: Non Storing: Summary of the use of headers from RPL-aware- Table 9: Non Storing mode: Summary of the use of headers from RPL-
leaf to Internet aware-leaf to Internet
7.2.2. Non-SM: Example of Flow from Internet to RPL-aware-leaf 7.2.2. Non-SM: Example of Flow from Internet to RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (6LN) Internet --> root (6LBR) --> 6LR_i --> RPL-aware-leaf (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
skipping to change at page 37, line 21 skipping to change at page 37, line 21
| Removed | -- | -- | -- | IPv6-in-IPv6 | | Removed | -- | -- | -- | IPv6-in-IPv6 |
| headers | | | | (RH3,RPI) | | headers | | | | (RH3,RPI) |
| Re-added | -- | -- | -- | -- | | Re-added | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
| Modified | -- | -- | IPv6-in-IPv6 | -- | | Modified | -- | -- | IPv6-in-IPv6 | -- |
| headers | | | (RH3,RPI) | | | headers | | | (RH3,RPI) | |
| Untouched | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- |
| headers | | | | | | headers | | | | |
+-----------+----------+--------------+--------------+--------------+ +-----------+----------+--------------+--------------+--------------+
Table 10: Non Storing: Summary of the use of headers from Internet to Table 10: Non Storing mode: Summary of the use of headers from
RPL-aware-leaf Internet to RPL-aware-leaf
7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to Internet 7.2.3. Non-SM: Example of Flow from not-RPL-aware-leaf to Internet
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) --> not-RPL-aware-leaf (IPv6) --> 6LR_1 --> 6LR_i -->root (6LBR) -->
Internet Internet
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G --> Node E -->
Node B --> Node A --> Internet Node B --> Node A --> Internet
skipping to change at page 38, line 26 skipping to change at page 38, line 26
| Re-added | -- | -- | -- | -- | -- | | Re-added | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+-----------+------+--------------+--------------+--------------+----------+ +-----------+------+--------------+--------------+--------------+----------+
| Modified | -- | -- | IP6-IP6(RPI) | -- | -- | | Modified | -- | -- | IP6-IP6(RPI) | -- | -- |
| headers | | | | | | | headers | | | | | |
+-----------+------+--------------+--------------+--------------+----------+ +-----------+------+--------------+--------------+--------------+----------+
| Untouched | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- |
| headers | | | | | | | headers | | | | | |
+-----------+------+--------------+--------------+--------------+----------+ +-----------+------+--------------+--------------+--------------+----------+
Figure 17: Non Storing: Summary of the use of headers from not-RPL- Figure 17: Non Storing mode: Summary of the use of headers from not-
aware-leaf to Internet RPL-aware-leaf to Internet
7.2.4. Non-SM: Example of Flow from Internet to not-RPL-aware-leaf 7.2.4. Non-SM: Example of Flow from Internet to not-RPL-aware-leaf
In this case the flow comprises: In this case the flow comprises:
Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6) Internet --> root (6LBR) --> 6LR_i --> not-RPL-aware-leaf (IPv6)
For example, a communication flow could be: Internet --> Node A For example, a communication flow could be: Internet --> Node A
(root) --> Node B --> Node E --> Node G (root) --> Node B --> Node E --> Node G
skipping to change at page 42, line 32 skipping to change at page 42, line 32
| headers | | | | | | | | headers | | | | | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Modified | -- | IP6-IP6 | -- | IP6-IP6 | | -- | | Modified | -- | IP6-IP6 | -- | IP6-IP6 | | -- |
| headers | | (RPI1) | | (RH3, | | | | headers | | (RPI1) | | (RH3, | | |
| | | | | RPI2) | | | | | | | | RPI2) | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
| Untouched | -- | -- | -- | -- | -- | -- | | Untouched | -- | -- | -- | -- | -- | -- |
| headers | | | | | | | | headers | | | | | | |
+-----------+---------+---------+---------+---------+---------+------+ +-----------+---------+---------+---------+---------+---------+------+
Figure 20: Non Storing: Summary of the use of headers from RPL-aware- Figure 20: Non Storing mode: Summary of the use of headers from RPL-
leaf to not-RPL-aware-leaf. aware-leaf to not-RPL-aware-leaf.
7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to RPL-aware- 7.3.3. Non-SM: Example of Flow from not-RPL-aware-leaf to RPL-aware-
leaf leaf
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware 6LN (IPv6) --> 6LR_1 --> 6LR_ia --> root (6LBR) --> not-RPL-aware 6LN (IPv6) --> 6LR_1 --> 6LR_ia --> root (6LBR) -->
6LR_id --> 6LN 6LR_id --> 6LN
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G --> Node E -->
skipping to change at page 43, line 37 skipping to change at page 43, line 37
| headers | | | | | | | | headers | | | | | | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Modified | -- | | IP6-IP6 | -- | IP6-IP6 | -- | | Modified | -- | | IP6-IP6 | -- | IP6-IP6 | -- |
| headers | | | (RPI1) | | (RH3, | | | headers | | | (RPI1) | | (RH3, | |
| | | | | | RPI2) | | | | | | | | RPI2) | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
| Untouched | -- | | -- | -- | -- | -- | | Untouched | -- | | -- | -- | -- | -- |
| headers | | | | | | | | headers | | | | | | |
+-----------+------+---------+---------+---------+---------+---------+ +-----------+------+---------+---------+---------+---------+---------+
Figure 21: Non Storing: Summary of the use of headers from not-RPL- Figure 21: Non Storing mode: Summary of the use of headers from not-
aware-leaf to RPL-aware-leaf. RPL-aware-leaf to RPL-aware-leaf.
7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to not-RPL- 7.3.4. Non-SM: Example of Flow from not-RPL-aware-leaf to not-RPL-
aware-leaf aware-leaf
In this case the flow comprises: In this case the flow comprises:
not-RPL-aware 6LN (IPv6 src) --> 6LR_1 --> 6LR_ia --> root (6LBR) --> not-RPL-aware 6LN (IPv6 src) --> 6LR_1 --> 6LR_ia --> root (6LBR) -->
6LR_id --> not-RPL-aware (IPv6 dst) 6LR_id --> not-RPL-aware (IPv6 dst)
For example, a communication flow could be: Node G --> Node E --> For example, a communication flow could be: Node G --> Node E -->
skipping to change at page 44, line 37 skipping to change at page 44, line 37
| headers | | | | | | | | | headers | | | | | | | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
| Modified| -- | -- |IP6-IP6| -- |IP6-IP6| -- | -- | | Modified| -- | -- |IP6-IP6| -- |IP6-IP6| -- | -- |
| headers | | | (RPI1)| | (RH3, | | | | headers | | | (RPI1)| | (RH3, | | |
| | | | | | RPI2)| | | | | | | | | RPI2)| | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
|Untouched| -- | -- | -- | -- | -- | -- | -- | |Untouched| -- | -- | -- | -- | -- | -- | -- |
| headers | | | | | | | | | headers | | | | | | | |
+---------+------+-------+-------+---------+-------+---------+------+ +---------+------+-------+-------+---------+-------+---------+------+
Figure 22: Non Storing: Summary of the use of headers from not-RPL- Figure 22: Non Storing mode: Summary of the use of headers from not-
aware-leaf to not-RPL-aware-leaf RPL-aware-leaf to not-RPL-aware-leaf
8. Operational Considerations of supporting not-RPL-aware-leaves 8. Operational Considerations of supporting not-RPL-aware-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
further categories: ones that drop a packet that have RPI or RH3 further categories: ones that drop a packet that have RPI or RH3
headers, and ones that continue to process a packet that has RPI and/ headers, and ones that continue to process a packet that has RPI and/
or RH3 headers. or RH3 headers.
[RFC8200] provides for new rules that suggest that nodes that have [RFC8200] provides for new rules that suggest that nodes that have
skipping to change at page 54, line 9 skipping to change at page 54, line 9
[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 Aalto University
Innopoli Otaniemi
Espoo 02150 Espoo 02150
Finland Finland
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
 End of changes. 27 change blocks. 
69 lines changed or deleted 72 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/