RFC 9035
A Routing Protocol for Low-Power and Lossy Networks (RPL) Destination-Oriented Directed Acyclic Graph (DODAG) Configuration Option for the 6LoWPAN Routing Header
RFC 9035: A Routing Protocol for Low-Power and Lossy Networks (RPL) Destination-Oriented Directed Acyclic Graph (DODAG) Configuration Option for the 6LoWPAN Routing Header β¨
okay bestie, let's get into this one π¦ RFC 9035 is an Internet Standards Track document from April 2021, written by P. Thubert (editor) and L. Zhao at Cisco Systems. It's an update to RFC 8138, which means it adds new behaviour on top of that earlier spec π The ISSN is 2070-1721, and the paper is published under the IETF Trust copyright (2021) π
The whole vibe is: how do you turn on 6LoWPAN routing-header compression across a live network without breaking everyone? The answer is a single flag in the RPL DODAG Configuration option, and it's giving clean migration energy πΈ
Abstract
This document updates RFC 8138 by defining a bit in the Routing Protocol for Low-Power and Lossy Networks (RPL) Destination-Oriented Directed Acyclic Graph (DODAG) Configuration option. That bit tells everyone whether compression is used within the RPL Instance π§ It also spells out how nodes that follow RFC 8138 should behave when the bit is set and when it's unset. Main character energy, no cap π
Status of This Memo
This is an Internet Standards Track document π
It's a product of the Internet Engineering Task Force (IETF) and it represents the consensus of the IETF community. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG). If you want more info on Internet Standards, check out Section 2 of RFC 7841 π Info on the current status, any errata, and how to send feedback lives at https://www.rfc-editor.org/info/rfc9035 π
Copyright Notice
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved π«Ά
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication. Please actually read these, bestie, because they spell out your rights and restrictions. If you pull Code Components out of this document, they must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come with no warranty as described in the Simplified BSD License β οΈ
Table of Contents
1. Introduction
2. Terminology
2.1. Related Documents
2.2. Glossary
2.3. Requirements Language
3. Extending RFC 6550
4. Updating RFC 8138
5. Transition Scenarios
5.1. Coexistence
5.2. Inconsistent State While Migrating
5.3. Rolling Back
6. IANA Considerations
7. Security Considerations
8. References
8.1. Normative References
8.2. Informative References
Acknowledgments
Authors' Addresses
1. Introduction πΈ
LLNs are basically all about saving energy, because energy is the most constrained resource of all π The routing optimisations in "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks" [RFC6550] are built around that, like routing along a DODAG to a Root Node. Then there's the routing header compression and forwarding technique in [RFC8138], which comes from the same concern π
Turning on [RFC8138] on a running network normally needs a "flag day", where you upgrade everything and reboot the whole network π If you don't, things go sideways. A leaf that doesn't support compression per [RFC8138] just can't communicate. A router that doesn't support it will drop the compressed packets and black-hole a chunk of the network π This specification fixes that with a hot upgrade, where you migrate a live network π¦ While the migration is happening, compression stays inactive until every node is upgraded π
This document complements [RFC8138] and signals, with a new flag in the RPL DODAG Configuration option, whether it should be used within a RPL DODAG. The Root controls that flag, and it propagates unchanged through the whole network as part of the normal RPL signaling β¨
The flag gets cleared so compression stays inactive during the migration phase π§ Once the migration is complete (for example, as known by network management and/or inventory), the flag is set and compression is switched on across the whole DODAG π
2. Terminology π
2.1. Related Documents
The terminology in this document is consistent with, and incorporates the terms from, "Terms Used in Routing for Low-Power and Lossy Networks" [RFC7102]. Other LLN terms live in "Terminology for Constrained-Node Networks" [RFC7228] π
"RPL", "RPL Packet Information" (RPI), and "RPL Instance" (indexed by a RPLInstanceID) are all defined in "RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks" [RFC6550]. The RPI is the abstract information RPL defines to be placed in data packets, for example as the RPL Option [RFC6553] inside the IPv6 Hop-By-Hop Header. People often say "RPI" to mean the RPL Option itself, too π The DODAG Information Solicitation (DIS), Destination Advertisement Object (DAO), and DODAG Information Object (DIO) messages are also specified in [RFC6550] π«Ά
This document uses "RPL-Unaware Leaf" (RUL) and "RPL-Aware Leaf" (RAL) consistently with "Using RPI Option Type, Routing Header for Source Routes, and IPv6-in-IPv6 Encapsulation in the RPL Data Plane" [RFC9008] π "RPL-Aware Node" (RAN) means a node that is either a RAL or a RPL router. A RAN manages the reachability of its own addresses and prefixes by injecting them into RPL itself. A RUL, on the other hand, uses "Registration Extensions for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Neighbor Discovery" [RFC8505] to get reachability services from its parent router(s), as specified in "Routing for RPL (Routing Protocol for Low-Power and Lossy Networks) Leaves" [RFC9010] π
2.2. Glossary
This document often uses these abbreviations:
6LoRH: 6LoWPAN Routing Header
6LoWPAN: IPv6 over Low-Power Wireless Personal Area Network
DIO: DODAG Information Object (a RPL message)
DODAG: Destination-Oriented Directed Acyclic Graph
LLN: Low-Power and Lossy Network
MOP: RPL Mode of Operation
RAL: RPL-Aware Leaf
RAN: RPL-Aware Node
RPI: RPL Packet Information
RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks
RUL: RPL-Unaware Leaf
SRH: Source Routing Header
Sub-DODAG: The sub-DODAG of a node is a DODAG rooted at that node
that is a subset of a main DODAG the node belongs to. It is
formed by the other nodes in the main DODAG whose paths to the
main DODAG root pass through that node.
2.3. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here π Lowercase versions are just regular words, bestie, so don't panic π
3. Extending RFC 6550 π¦
The DODAG Configuration option is defined in Section 6.7.6 of [RFC6550] π Its purpose gets extended so it can distribute configuration information that affects how the DODAG is built and maintained, plus operational parameters for RPL on the DODAG, all through the DODAG itself. The DODAG Configuration option was originally designed with four bit positions reserved for future use as flags π§
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type = 0x04 |Opt Length = 14| | |T| |A| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
<- flags ->
Figure 1: DODAG Configuration Option (Partial View)
This specification defines a new flag, "Enable Compression per RFC 8138 (T)" β¨ The 'T' flag is set to turn on the use of [RFC8138] within the DODAG πΈ It sits in position 2 of the reserved flags in the DODAG Configuration option (counting from bit 0 as the most significant bit), and it's set to 0 in legacy implementations, as specified in Sections 20.14 and 6.7.6 of [RFC6550], respectively π
Section 4.1.2 of [RFC9008] updates [RFC6550] to say the definition of the flags applies to Mode of Operation (MOP) values zero (0) to six (6) only. For a MOP value of 7, [RFC8138] MUST be used on links where 6LoWPAN Header Compression [RFC6282] applies, and MUST NOT be used otherwise π
The RPL DODAG Configuration option is typically placed in a DIO message. The DIO message propagates down the DODAG to form, and then maintain, its structure π The DODAG Configuration option gets copied unmodified from parents to children. [RFC6550] says "Nodes other than the DODAG root MUST NOT modify this information when propagating the DODAG Configuration option." So a legacy parent passes along the 'T' flag exactly as the Root set it, and when 'T' is set, it's transparently flooded to every node in the DODAG π
4. Updating RFC 8138 π
A node SHOULD generate packets in compressed form using [RFC8138] if and only if the 'T' flag is set π¦ This behaviour can be overridden by configuration or network management. Overriding might be needed, for example, to turn on compression in a network where every node supports [RFC8138] but the Root doesn't support this specification and can't set the 'T' flag, or to disable it locally if there's a problem π«Ά
The decision to use [RFC8138] is made by the originator of the packet, based on its capabilities and its knowledge of the state of the 'T' flag β¨ A router encapsulating a packet is the originator of the resulting packet and is responsible for compressing the outer headers per [RFC8138], but it MUST NOT perform compression on the encapsulated packet π§
An external target [RFC9008] is not expected to support [RFC8138] πΈ In most cases, packets to and from an external target get tunnelled back and forth between the border router (referred to as a 6LoWPAN Router (6LR)) that serves the external target and the Root, regardless of the MOP used in the RPL DODAG π The inner packet typically isn't compressed per [RFC8138], so for outgoing packets, the border router just needs to decapsulate the (compressed) outer header and forward the (uncompressed) inner packet towards the external target π
A border router that forwards a packet to an external target MUST uncompress the packet first. In all other cases, a router MUST forward a packet in the form the source used, either compressed or uncompressed π
A RUL [RFC9010] is both a leaf and an external target π¦ A RUL doesn't participate in RPL and depends on its parent router to get connectivity. For a RUL, forwarding towards an external target actually means delivering the packet π
5. Transition Scenarios β
A node that supports [RFC8138] but not this specification can only be used in a homogeneous network π Enabling compression per [RFC8138] without a turn-on signaling method requires a flag day, by which time all nodes MUST be upgraded, and at that point the network can be rebooted with 6LoRH compression [RFC8138] turned on π
The intent of this specification is to do the migration once and for all, without needing a flag day π«Ά In particular, the intent is not to undo the setting of the 'T' flag. It's possible to roll back (see Section 5.3), but the rollback operation SHOULD be complete before the network operator adds nodes that don't support [RFC8138] π
Part 2 is coming with 5.1 through the References, so stay tuned, bestie ππ
5.1. Coexistence
Okay bestie, let's talk about who gets to hang with whom π«Άβ¨ A node that supports this specification can run in a network with 6LoRH compression [RFC8138] turned on or off, as long as the 'T' flag is set to match. It can also handle a network that's in the middle of switching from off to on, or on to off (see Section 5.2) π¦
A node that doesn't support [RFC8138] can still get along with the nodes that do, but only when compression is turned off π If compression is turned on, then all the RANs are expected to be able to handle packets in compressed form. A node that can't do that isn't kicked out of the party entirely π It can stay connected as a RUL, as described in [RFC9010].
5.2. Inconsistent State While Migrating
Here's the tea π΅ When the Root turns on the 'T' flag, the news doesn't reach everyone at once. It slowly spreads through the DODAG as the DIO gets passed along. Some nodes see the flag and start sending packets in compressed form, while other nodes in the same RPL DODAG are still clueless π In Non-Storing mode, the Root will start using [RFC8138] with a Source Routing Header 6LoRH (SRH-6LoRH) that routes all the way to the parent router or to the leaf.
To make sure a packet gets forwarded across the RPL DODAG in the same form it was created in, it is required that all the RPL nodes support [RFC8138] at the time of the switch π
Setting the 'T' flag is ultimately the network administrator's job π The expectation is that the network management or upgrade tools in place let the administrator know when all the nodes that might join a DODAG have been migrated. If an RPL Instance has multiple Roots, then every node that participates in that RPL Instance may potentially join any DODAG. So the network MUST be operated with the 'T' flag unset until all nodes in the RPL Instance are upgraded to support this specification. No shortcuts, babe π
5.3. Rolling Back
When you turn 6LoRH compression [RFC8138] off in the network, the network administrator MUST wait until each node has its 'T' flag unset before letting nodes that don't support compression join the network πΈ Info about whether compression is active on a node SHOULD be shown in that node's management interface, so nobody has to guess π
Nodes that do not support [RFC8138] SHOULD NOT be deployed in a network where compression is turned on π ββοΈ If that happens anyway, the node can only operate as a RUL.
6. IANA Considerations
This specification updates the "DODAG Configuration Option Flags for MOP 0..6" registry [RFC9008] (formerly the "DODAG Configuration Option Flags" registry, which was created for [RFC6550]). It does this by allocating one new flag, as shown below π§
+------------+-------------------------------------+-----------+
| Bit Number | Capability Description | Reference |
+------------+-------------------------------------+-----------+
| 2 | Enable Compression per RFC 8138 (T) | RFC 9035 |
+------------+-------------------------------------+-----------+
Table 1: New DODAG Configuration Option Flag
IANA has added this document as a reference for MOP 7 in the RPL "Mode of Operation" registry π
7. Security Considerations
Okay, this part is serious π It's worth noting that in RPL [RFC6550], every node in the LLN that is RPL aware and has access to the RPL domain can inject any RPL-based attack in the network; see [RFC7416] for details. This document typically applies to an existing deployment and does not change its security requirements and operations. It is assumed that the security mechanisms as defined for RPL are followed.
Setting the 'T' flag before all routers are upgraded may cause a loss of packets π The new bit gets the same protection as the rest of the information in the DODAG Configuration option that carries it. Messing with the new bit is just one of the many attacks that can happen if an attacker manages to inject a corrupted configuration option into the network.
Setting and unsetting the 'T' flag may create inconsistencies in the network, but as long as all nodes are upgraded to support [RFC8138], they will be able to forward both forms π¦ The source is responsible for selecting whether the packet is compressed or not, and all routers must use the format that the source selected. So the result of an inconsistency is just that both forms will be present in the network, which costs extra bandwidth for packets in uncompressed form.
An attacker may unset the 'T' flag to force additional energy consumption of child or descendant nodes in its sub-DODAG π€ Or they may set the 'T' flag so that nodes located downstream compress packets even when compression is not wanted, which could cause packet loss. In a tree structure, the attacker would be in a position to drop the packets from and to the attacked nodes. So the attacks mentioned above would be more complex and more visible than simply dropping selected packets. A downstream node may have other parents and see the bit with both settings. Such a situation may be detected, and an alert may be triggered π¨
8. References
8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>.
[RFC6550] Winter, T., Ed., Thubert, P., Ed., Brandt, A., Hui, J.,
Kelsey, R., Levis, P., Pister, K., Struik, R., Vasseur,
JP., and R. Alexander, "RPL: IPv6 Routing Protocol for
Low-Power and Lossy Networks", RFC 6550,
DOI 10.17487/RFC6550, March 2012,
<https://www.rfc-editor.org/info/rfc6550>.
[RFC7102] Vasseur, JP., "Terms Used in Routing for Low-Power and
Lossy Networks", RFC 7102, DOI 10.17487/RFC7102, January
2014, <https://www.rfc-editor.org/info/rfc7102>.
[RFC8138] Thubert, P., Ed., Bormann, C., Toutain, L., and R. Cragie,
"IPv6 over Low-Power Wireless Personal Area Network
(6LoWPAN) Routing Header", RFC 8138, DOI 10.17487/RFC8138,
April 2017, <https://www.rfc-editor.org/info/rfc8138>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8505] Thubert, P., Ed., Nordmark, E., Chakrabarti, S., and C.
Perkins, "Registration Extensions for IPv6 over Low-Power
Wireless Personal Area Network (6LoWPAN) Neighbor
Discovery", RFC 8505, DOI 10.17487/RFC8505, November 2018,
<https://www.rfc-editor.org/info/rfc8505>.
[RFC9010] Thubert, P., Ed. and M. Richardson, "Routing for RPL
(Routing Protocol for Low-Power and Lossy Networks)
Leaves", RFC 9010, DOI 10.17487/RFC9010, April 2021,
<https://www.rfc-editor.org/info/rfc9010>.
8.2. Informative References
[RFC6282] Hui, J., Ed. and P. Thubert, "Compression Format for IPv6
Datagrams over IEEE 802.15.4-Based Networks", RFC 6282,
DOI 10.17487/RFC6282, September 2011,
<https://www.rfc-editor.org/info/rfc6282>.
[RFC6553] Hui, J. and JP. Vasseur, "The Routing Protocol for Low-
Power and Lossy Networks (RPL) Option for Carrying RPL
Information in Data-Plane Datagrams", RFC 6553,
DOI 10.17487/RFC6553, March 2012,
<https://www.rfc-editor.org/info/rfc6553>.
[RFC7228] Bormann, C., Ersue, M., and A. Keranen, "Terminology for
Constrained-Node Networks", RFC 7228,
DOI 10.17487/RFC7228, May 2014,
<https://www.rfc-editor.org/info/rfc7228>.
[RFC7416] Tsao, T., Alexander, R., Dohler, M., Daza, V., Lozano, A.,
and M. Richardson, Ed., "A Security Threat Analysis for
the Routing Protocol for Low-Power and Lossy Networks
(RPLs)", RFC 7416, DOI 10.17487/RFC7416, January 2015,
<https://www.rfc-editor.org/info/rfc7416>.
[RFC9008] Robles, M.I., Richardson, M., and P. Thubert, "Using RPI
Option Type, Routing Header for Source Routes, and IPv6-
in-IPv6 Encapsulation in the RPL Data Plane", RFC 9008,
DOI 10.17487/RFC9008, April 2021,
<https://www.rfc-editor.org/info/rfc9008>.
Acknowledgments β¨
The authors wish to thank Murray Kucherawy, Meral Shirazipour, Barry
Leiba, Tirumaleswar Reddy, Nagendra Kumar Nainar, Stewart Bryant,
Carles Gomez, Γric Vyncke, Roman Danyliw, and especially Benjamin
Kaduk, Alvaro Retana, Dominique Barthel, and Rahul Jadhav for their
in-depth reviews and constructive suggestions.
Also, many thanks to Michael Richardson for always being helpful and
responsive when the need arises.
Authors' Addresses π
Pascal Thubert (editor)
Cisco Systems, Inc.
Building D
45 Allee des Ormes - BP1200
06254 MOUGINS - Sophia Antipolis
France
Phone: +33 497 23 26 34
Email: pthubert@cisco.com
Li Zhao
Cisco Systems, Inc.
Xinsi Building
No. 926 Yi Shan Rd
Shanghai
200233
China
Email: liz3@cisco.com
π¦ where this page comes from
- ietf: rfc9035 2021-04
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms