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

πŸ“… published April 2021, from ietf

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 (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 πŸ’–

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