draft-ietf-roll-turnon-rfc8138-03.txt | draft-ietf-roll-turnon-rfc8138-04.txt | |||
---|---|---|---|---|
ROLL P. Thubert, Ed. | ROLL P. Thubert, Ed. | |||
Internet-Draft L. Zhao | Internet-Draft L. Zhao | |||
Updates: 6550, 8138 (if approved) Cisco Systems | Updates: 6550, 8138 (if approved) Cisco Systems | |||
Intended status: Standards Track 22 January 2020 | Intended status: Standards Track 24 January 2020 | |||
Expires: 25 July 2020 | Expires: 27 July 2020 | |||
Configuration option for RFC 8138 | Configuration option for RFC 8138 | |||
draft-ietf-roll-turnon-rfc8138-03 | draft-ietf-roll-turnon-rfc8138-04 | |||
Abstract | Abstract | |||
This document complements RFC 8138 and dedicates a bit in the RPL | This document complements RFC 8138 and dedicates a bit in the RPL | |||
configuration option defined in RFC 6550 to indicate whether RFC 8138 | configuration option defined in RFC 6550 to indicate whether RFC 8138 | |||
compression is used within the RPL Instance. | compression is used within the RPL Instance. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
skipping to change at page 1, line 33 ¶ | skipping to change at page 1, line 33 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 25 July 2020. | This Internet-Draft will expire on 27 July 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
2. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. BCP 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
3. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 2 | 3. Updating RFC 6550 . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Updating RFC 8138 . . . . . . . . . . . . . . . . . . . . . . 3 | 4. Updating RFC 8138 . . . . . . . . . . . . . . . . . . . . . . 3 | |||
5. Transition Scenarios . . . . . . . . . . . . . . . . . . . . 3 | 5. Transition Scenarios . . . . . . . . . . . . . . . . . . . . 4 | |||
5.1. Inconsistent State While Migrating . . . . . . . . . . . 5 | 5.1. Inconsistent State While Migrating . . . . . . . . . . . 5 | |||
5.2. Single RPL Instance Scenario . . . . . . . . . . . . . . 5 | 5.2. Single RPL Instance Scenario . . . . . . . . . . . . . . 5 | |||
5.3. Double RPL Instances Scenario . . . . . . . . . . . . . . 6 | 5.3. Double RPL Instances Scenario . . . . . . . . . . . . . . 6 | |||
5.4. Rolling Back . . . . . . . . . . . . . . . . . . . . . . 6 | 5.4. Rolling Back . . . . . . . . . . . . . . . . . . . . . . 6 | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 7 | 8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . 7 | 9. Normative References . . . . . . . . . . . . . . . . . . . . 7 | |||
10. Informative References . . . . . . . . . . . . . . . . . . . 8 | 10. Informative References . . . . . . . . . . . . . . . . . . . 8 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
1. Introduction | 1. Introduction | |||
The transition to [RFC8138] in a network can only be done when all | The transition of a RPL [RFC6550] network to activate the compression | |||
nodes support the specification. In a mixed case with both | defined in [RFC8138] can only be done when all routers in the network | |||
RFC8138-capable and non-capable nodes, the compression should be | support it. A non-capable node acting as a router would drop the | |||
turned off. | compressed packets and black-hole its subDAG. In a mixed case with | |||
both RFC8138-capable and non-capable nodes, the compression may be | ||||
turned on only if all the non-capable nodes act as leaves and their | ||||
RPL parents handle the compression/decompression on their behalf. | ||||
This document complements RFC 8138 and dedicates a bit in the RPL | This document complements RFC 8138 and dedicates a flag in the RPL | |||
configuration option to indicate whether RFC 8138 compression should | configuration option to indicate whether RFC 8138 compression should | |||
be used within the RPL Instance. When the bit is not set, source | be used within the RPL Instance. The setting of new flag is | |||
nodes that support RFC 8138 should refrain from using the compression | controlled by the Root and propagates as is in the whole network. | |||
unless the information is superseded by configuration. | When the bit is not set, source nodes that support RFC 8138 should | |||
refrain from using the compression unless the information is | ||||
superseded by configuration. | ||||
This specification provides scenarios that force a legacy node to | ||||
become a RPL-Aware-Leaf (RAL). In that case, the 6LR must be aware | ||||
by means out of scope that it must uncompress the packets before | ||||
delivering to the RAL. | ||||
2. BCP 14 | 2. BCP 14 | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119][RFC8174] when, and only when, they appear in all | 14 [RFC2119][RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Updating RFC 6550 | 3. Updating RFC 6550 | |||
RPL defines a configuration option that is registered to IANA in | This specification defines a new flag "Enable RFC8138 Compression" | |||
section 20.14. of [RFC6550]. This specification defines a new flag | (T). The "T" flag is set to turn on the use of the compression of | |||
"Enable RFC8138 Compression" (T) that is encoded in one of the | RPL artifacts with [RFC8138] within a RPL Instance. If a RPL | |||
reserved control bits in the option. The new flag is set to turn on | Instance has multiple Roots then they must be coordinated to use the | |||
the use of the compression of RPL artifacts with RFC 8138. The bit | same setting. | |||
RPL defines a Configuration Option that is registered to IANA in | ||||
section 20.14. of [RFC6550]. The "T" flag is encoded in one of the | ||||
reserved control bits in the RPL Configuration Option. The bit | ||||
position of the "T" flag is indicated in Section 6. | position of the "T" flag is indicated in Section 6. | |||
Section 6.3.1. of [RFC6550] defines a 3-bit Mode of Operation (MOP) | Section 6.3.1. of [RFC6550] defines a 3-bit Mode of Operation (MOP) | |||
in the DIO Base Object. The new "T" flag is defined only for MOP | in the DIO Base Object. The new "T" flag is defined only for MOP | |||
value between 0 to 6. For a MOP value of 7 or above, the flag MAY | value between 0 to 6. For a MOP value of 7 or above, the flag MAY | |||
indicate something different and MUST NOT be interpreted as "Enable | indicate something different and MUST NOT be interpreted as "Enable | |||
RFC8138 Compression" unless the specification of the MOP indicates to | RFC8138 Compression" unless the specification of the MOP indicates to | |||
do so. | do so. | |||
4. Updating RFC 8138 | 4. Updating RFC 8138 | |||
This document specifies controls that enable and disable the use of | A node that supports this specification MUST source packets in the | |||
the [RFC8138] compression in a RPL Instance. Arguably, this could | compressed form using [RFC8138] if and only if the "T" flag is set. | |||
have been done in [RFC8138] itself. | This behaviour can be overridden by a configuration of the node in | |||
order to cope with intermediate implementations of the root that | ||||
A node that supports this specification SHOULD source packets in the | support [RFC8138] but not this specification and cannot set the "T" | |||
compressed form using [RFC8138] if the new "T" flag is set in the RPL | flag. | |||
configuration option from its parents. Failure to do so will result | ||||
in larger packets, yields higher risks of loss and may cause a | ||||
fragmentation. | ||||
A node that supports this specification SHOULD refrain from sourcing | The decision of using [RFC8138] is made by the originator of the | |||
packets in the compressed form using [RFC8138] if the "T" flag is | packet depending on its capabilities and its knowledge of the state | |||
reset. This behaviour can be overridden by a configuration of the | of the "T" flag. A router that encapsulates a packet is the | |||
node in order to cope with intermediate implementations of the root | originator of the resulting packet and decides whether to compress | |||
that support [RFC8138] but not this specification and cannot set the | the outer headers as indicated above. An external target | |||
"T" flag. | [USEofRPLinfo] is not expected to support [RFC8138]. An intermediate | |||
router MUST forward the packet in the form that the source used, | ||||
either compressed or uncompressed, unless it is either forwarding to | ||||
an external target or delivering to a leaf that is not known to | ||||
support RFC 8138, in which cases it MUST uncompress the packet. | ||||
The decision of using RFC 8138 to compress a packet is made at the | A RPL-Unaware Leaf (RUL) [UNAWARE-LEAVES] is both a leaf and an | |||
source depending on its capabilities and its knowledge of the state | external target. A RUL does not participate to RPL and depends on | |||
of the "T" flag. A router MUST forward the packet in the form that | the 6LR to ensure its connectivity. Packets from/to a RUL are | |||
the source used, either compressed or uncompressed. A router that | tunneled back and forth to the Root regardless of the MOP used in the | |||
encapsulates a packet is the source of the resulting packet and the | RPL Instance. A node that supports this specification but does not | |||
rules above apply to it in that case. | support [RFC8138] SHOULD join as a RUL to ensure that the 6LR is | |||
aware it needs to uncompress the packets before delivering. | ||||
5. Transition Scenarios | 5. Transition Scenarios | |||
A node that supports [RFC8138] but not this specification can only be | A node that supports [RFC8138] but not this specification can only be | |||
used in a homogeneous network and an upgrade requires a "flag day" | used in a homogeneous network and an upgrade requires a "flag day" | |||
where all nodes are updated and then the network is rebooted with | where all nodes are updated and then the network is rebooted with | |||
implicitly RFC 8138 compression turned on with the "T" flag set on. | implicitly RFC 8138 compression turned on with the "T" flag set on. | |||
A node that supports this specification can work in a network with | A node that supports this specification can work in a network with | |||
RFC 8138 compression turned on or off with the "T" flag set | RFC 8138 compression turned on or off with the "T" flag set | |||
accordingly and in a network in transition from off to on or on to | accordingly and in a network in transition from off to on or on to | |||
off (see Section 5.1). | off (see Section 5.1). | |||
A node that does not support [RFC8138] can interoperate with a node | A node that does not support [RFC8138] can interoperate with nodes | |||
that supports this specification in a network with RFC 8138 | that do in a network with RFC 8138 compression turned off. If the | |||
compression turned off. But it cannot forward compressed packets and | compression is turned on, the node cannot forward compressed packets | |||
therefore it cannot act as a router in a network with RFC 8138 | and therefore it cannot act as a router. It may remain connected to | |||
compression turned on. It may remain connected to that network as a | that network as a leaf, in which case it generates uncompressed | |||
leaf and generate uncompressed packets. The leaf can receive packets | packets and can receive packets if they are delivered by the parent | |||
if they are delivered by the parent 6LR in the uncompressed form. | 6LR in the uncompressed form. | |||
This requires a knowledge by the 6LR that the leaf does not support | ||||
RFC 8138. A RPL-Unaware-Leaf (RUL) [USEofRPLinfo] is an external | ||||
target and by default is not expected to support RFC 8138. | ||||
[RFC6550] states that "Nodes other than the DODAG root MUST NOT | [RFC6550] states that "Nodes other than the DODAG root MUST NOT | |||
modify this information when propagating the DODAG Configuration | modify this information when propagating the DODAG Configuration | |||
option". In other words, the configuration option is a way for the | option". Therefore, even a legacy parent propagates the "T" flag as | |||
root to configure the LLN nodes but it cannot be used by a parent to | set by the Root whether it supports this specification or not. So | |||
advertise its capabilities down the DODAG. A parent propagates the | when the "T" flag is set, it is transparently flooded to all the | |||
"T" flag as set whether it supports RFC 8138 or not. The setting of | nodes in the RPL Instance. | |||
the "T" flag can thus not be used as an indication of the support by | ||||
the sender, and a child cannot favor a parent based on it. | ||||
Sections 8.5 and 9.2 of [RFC6550] also suggests that a RPL-aware node | Sections 8.5 and 9.2 of [RFC6550] also suggests that a RPL-aware node | |||
may attach to a DODAG as a leaf node only, e.g., when a node does not | may only attach to a DODAG as a leaf node when the node does not | |||
support the Mode of Operation of a RPL Instance, the Objective | support the Mode of Operation of a RPL Instance, the Objective | |||
Function (OF) as indicated by the Objective Code Point (OCP) or some | Function (OF) as indicated by the Objective Code Point (OCP) or some | |||
other parameters in the configuration option. [USEofRPLinfo] | other parameters in the configuration option. | |||
indicates that the node may also join as a RUL, in which case it | ||||
refrains from participating to RPL and depends on the 6LR to ensure | ||||
connectivity regardless on the way the RPL network is operated. | ||||
This means that changing the OCP in a DODAG can be used to force | Per the above, changing the OCP in a DODAG can be used to force nodes | |||
nodes that do not support a particular feature to join as leaf only. | that do not support a particular feature to join as leaf only. This | |||
This specification reiterates that a node that is configured to | specification reiterates that a node that is configured to operate in | |||
operate in a RPL Instance but does not support a value for a known | a RPL Instance but does not support a value for a known parameter | |||
parameter that is mandatory for routing MUST NOT operate as a router | that is mandatory for routing MUST NOT operate as a router but MAY | |||
but MAY still join as a leaf. Note that a legacy node will not | still join as a leaf. Note that a legacy node will not recognize | |||
recognize when a reserved field is now used and will not turn to a | when a reserved field is now used and will not turn to a leaf when | |||
leaf when that happens. | the "T" flag is set. | |||
The intent for this specification is to perform a migration once and | The intent for this specification is to perform a migration once and | |||
for all without the need for a flag day. In particular it is not the | for all without the need for a flag day. In particular it is not the | |||
intention to undo the setting of the "T" flag, and though it is | intention to undo the setting of the "T" flag, and though it is | |||
possible to roll back (see Section 5.4), adding nodes that do not | possible to roll back (see Section 5.4), adding nodes that do not | |||
support [RFC8138] after a roll back may be problematic if the roll | support [RFC8138] after a roll back may be problematic if the roll | |||
back is not fully complete (see caveats in Section 5.2). | back is not fully complete (see caveats in Section 5.2). | |||
5.1. Inconsistent State While Migrating | 5.1. Inconsistent State While Migrating | |||
skipping to change at page 7, line 15 ¶ | skipping to change at page 7, line 15 ¶ | |||
+------------+---------------------------------+-----------+ | +------------+---------------------------------+-----------+ | |||
| Bit Number | Capability Description | Reference | | | Bit Number | Capability Description | Reference | | |||
+============+=================================+===========+ | +============+=================================+===========+ | |||
| 2 | Turn on RFC8138 Compression (T) | THIS RFC | | | 2 | Turn on RFC8138 Compression (T) | THIS RFC | | |||
+------------+---------------------------------+-----------+ | +------------+---------------------------------+-----------+ | |||
Table 1: New DODAG Configuration Option Flag | Table 1: New DODAG Configuration Option Flag | |||
7. Security Considerations | 7. Security Considerations | |||
Turning the "T" flag on before some routers are upgraded may cause a | Setting the "T" flag before some routers are upgraded may cause a | |||
loss of packets. The new bit is protected as the rest of the | loss of packets. The new bit is protected as the rest of the | |||
configuration so this is just one of the many attacks that can happen | configuration so this is just one of the many attacks that can happen | |||
if an attacker manages to inject a corrupted configuration. | if an attacker manages to inject a corrupted configuration. | |||
Turning the "T" flag on and off may create inconsistencies in the | Setting and resetting the "T" flag may create inconsistencies in the | |||
network but as long as all nodes are upgraded to RFC 8138 support | network but as long as all nodes are upgraded to RFC 8138 support | |||
they will be able to forward both forms. The draft insists that the | they will be able to forward both forms. The draft insists that the | |||
source is responsible for selecting whether the packet is compressed | source is responsible for selecting whether the packet is compressed | |||
or not, and all routers must use the format that the source selected. | or not, and all routers must use the format that the source selected. | |||
So the result of an inconsistency is merely that both forms will be | So the result of an inconsistency is merely that both forms will be | |||
present in the network, at an additional cost of bandwidth for | present in the network, at an additional cost of bandwidth for | |||
packets in the uncompressed form. | packets in the uncompressed form. | |||
8. Acknowledgments | 8. Acknowledgments | |||
The authors wish to thank Rahul Jadhav for his in-depth review and | ||||
constructive suggestions. | ||||
9. Normative References | 9. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
skipping to change at page 8, line 9 ¶ | skipping to change at page 8, line 13 ¶ | |||
<https://www.rfc-editor.org/info/rfc6550>. | <https://www.rfc-editor.org/info/rfc6550>. | |||
[USEofRPLinfo] | [USEofRPLinfo] | |||
Robles, I., Richardson, M., and P. Thubert, "Using RPI | Robles, I., Richardson, M., and P. Thubert, "Using RPI | |||
Option Type, Routing Header for Source Routes and IPv6-in- | Option Type, Routing Header for Source Routes and IPv6-in- | |||
IPv6 encapsulation in the RPL Data Plane", Work in | IPv6 encapsulation in the RPL Data Plane", Work in | |||
Progress, Internet-Draft, draft-ietf-roll-useofrplinfo-34, | Progress, Internet-Draft, draft-ietf-roll-useofrplinfo-34, | |||
20 January 2020, <https://tools.ietf.org/html/draft-ietf- | 20 January 2020, <https://tools.ietf.org/html/draft-ietf- | |||
roll-useofrplinfo-34>. | roll-useofrplinfo-34>. | |||
[UNAWARE-LEAVES] | ||||
Thubert, P. and M. Richardson, "Routing for RPL Leaves", | ||||
Work in Progress, Internet-Draft, draft-ietf-roll-unaware- | ||||
leaves-08, 16 December 2019, <https://tools.ietf.org/html/ | ||||
draft-ietf-roll-unaware-leaves-08>. | ||||
10. Informative References | 10. Informative References | |||
[RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | [RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie, | |||
"IPv6 over Low-Power Wireless Personal Area Network | "IPv6 over Low-Power Wireless Personal Area Network | |||
(6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | (6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138, | |||
April 2017, <https://www.rfc-editor.org/info/rfc8138>. | April 2017, <https://www.rfc-editor.org/info/rfc8138>. | |||
[MOP-EXT] Jadhav, R., Thubert, P., and M. Richardson, "Mode of | [MOP-EXT] Jadhav, R., Thubert, P., and M. Richardson, "Mode of | |||
Operation extension and Capabilities", Work in Progress, | Operation extension and Capabilities", Work in Progress, | |||
Internet-Draft, draft-ietf-roll-mopex-cap-01, 2 November | Internet-Draft, draft-ietf-roll-mopex-cap-01, 2 November | |||
End of changes. 21 change blocks. | ||||
71 lines changed or deleted | 88 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/ |