RFC 8066

IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) ESC Dispatch Code Points and Guidelines

๐Ÿ“… published February 2017, from ietf

RFC 8066: IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) ESC Dispatch Code Points and Guidelines โœจ

Okay bestie, the title block first ๐Ÿ’… This is RFC 8066, published by the IETF in February 2017. The authors are S. Chakrabarti, G. Montenegro, and R. Droms from Microsoft, plus J. Woodyatt from Google ๐Ÿซถ It's a Standards Track doc with ISSN: 2070-1721, and it updates RFC 4944 and RFC 6282 ๐Ÿ”ฅ

Abstract

So [RFC4944] added the ESC dispatch type so the 6LoWPAN header could carry extra dispatch octets ๐ŸŽ€ Then RFC 6282 changed the value of that ESC type, but neither doc ever said what the octets after it are supposed to do ๐Ÿ˜ญ This doc fixes that by defining the ESC extension octet code points, and it lists the registration entries for known use cases at the time it was written ๐Ÿฆ‹

Status of This Memo

This is an Internet Standards Track document ๐ŸŒˆ

This doc is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community, it went through public review, and the Internet Engineering Steering Group (IESG) approved it for publication ๐Ÿ‘‘ If you want more on Internet Standards, check out Section 2 of RFC 7841 โœจ

For the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc8066 ๐Ÿ’–

Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. ๐ŸŽ€

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents, which you can find at http://trustee.ietf.org/license-info, as they were in effect when it was published ๐Ÿ“œ Please read those carefully, because they spell out your rights and restrictions for this doc ๐Ÿ™ˆ If you pull any 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, same as the Simplified BSD License says ๐Ÿ’…

Table of Contents

1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
3.  Usage of ESC Dispatch Octets  . . . . . . . . . . . . . . . .   3
  3.1.  Interaction with Other RFC 4944 Implementations . . . . .   4
  3.2.  ESC Extension Octets Typical Sequence . . . . . . . . . .   5
  3.3.  ITU-T G.9903 ESC Type Usage . . . . . . . . . . . . . . .   6
  3.4.  NALP and ESC Dispatch Types . . . . . . . . . . . . . . .   6
4.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .   6
5.  Security Considerations . . . . . . . . . . . . . . . . . . .   7
6.  References  . . . . . . . . . . . . . . . . . . . . . . . . .   7
  6.1.  Normative References  . . . . . . . . . . . . . . . . . .   7
  6.2.  Informative References  . . . . . . . . . . . . . . . . .   8
Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . .   8
Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .   9

1. Introduction ๐Ÿฆ‹

Okay so Section 5.1 of [RFC4944] is where the dispatch header and its types are defined ๐Ÿงš The ESC type is the one that uses extra dispatch octets in the 6LoWPAN header. RFC 6282 changed the value of the ESC dispatch type, and that value is recorded in the IANA registry [IANA-6LoWPAN]. BUT the octets and usage after the ESC dispatch type are not defined in either [RFC4944] or [RFC6282] ๐Ÿ™ˆ Lately, 6LoWPAN deployments, implementations, and standards organizations have started using the ESC extension octets anyway, so we really need an updated IANA registration policy ๐Ÿ’€

This doc creates the new "ESC Extension Types" registry and defines the ESC extension octets for future applications ๐ŸŒธ It also records the ITU-T specification for ESC dispatch octet code points as an existing known usage โœจ

2. Terminology ๐Ÿ’œ

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119]. ๐Ÿ“–

3. Usage of ESC Dispatch Octets ๐ŸŽ€

RFC 4944 [RFC4944] was the first to bring in this "ESC" dispatch header type for extending dispatch octets ๐ŸŒˆ After that, RFC 6282 [RFC6282] changed its value to [01 000000] โœจ

This doc says the first octet after the ESC dispatch type is used for the extension type, which is the extended dispatch value ๐Ÿ’– The octets after that are left unstructured, so the extension type can use them however it wants ๐Ÿซถ

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     ESC       | ESC EXT Type  | Extended Dispatch Payload
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 1: Frame Format with ESC Dispatch Type

ESC: The left-most octet is the ESC dispatch type, and it contains '01000000' ๐Ÿ“

ESC Extension Type (EET): This is the first octet after the ESC dispatch type. The extension type decides what the additional dispatch octets carry. The values run from 0 to 255. Values 0 and 255 are reserved for future use ๐Ÿ”ฎ The remaining values, 1 to 254, are assigned by IANA ๐Ÿง EET values work a lot like the dispatch values in the 6LoWPAN header, except they come after the ESC dispatch type. So ESC extension types and dispatch values use orthogonal code spaces, meaning they don't overlap ๐Ÿฆ„ It's not desirable, but multiple ESC dispatch types MAY appear in a 6LoWPAN header. Section 3.1 explains how to handle an unknown ESC dispatch type ๐Ÿ™ƒ

Extended Dispatch Payload (EDP): This part of the frame format must be defined by the corresponding extension type. A specification is required to define how each extension type is used and what its corresponding Extension Payload looks like. For interoperability's sake, specifications of extension octets MUST NOT redefine the existing ESC Extension Type codes ๐Ÿšซ

Section 5.1 of RFC 4944 says the Extension Type field may contain additional dispatch values larger than 63, as corrected by [Err4359] ๐Ÿค“ For interoperability's sake, the new dispatch type (EET) MUST NOT modify the behavior of existing dispatch types [RFC4944] ๐Ÿ’…

3.1. Interaction with Other RFC 4944 Implementations ๐ŸŒธ

It's expected that existing RFC 4944 implementations can't process ESC extension data octets the way this doc defines them ๐Ÿ˜ญ Still, implementers have to assume that an existing implementation which tries to process an EET it doesn't know will just drop the packet or ignore the ESC dispatch octets ๐Ÿ‘€

If an implementation following this document hits an ESC dispatch type during processing and doesn't understand its ESC Extension Type (EET) octets, it MUST drop that packet ๐Ÿšซ But it's important to note that a router node SHOULD forward a 6LoWPAN packet with EET octets as long as it doesn't try to process any unknown ESC extension octets ๐Ÿฆ‹

Multiple ESC extension octets may show up in one packet. ESC dispatch types can appear as the first, last, or middle dispatch octets โœจ However, any node that doesn't understand the EET at the beginning of the packet will drop the whole packet ๐Ÿ’€ Putting an EET near the front has a higher chance of getting the packet dropped than putting that same EET later on ๐Ÿฅบ When the EET sits later in the packet, a legacy device has a better shot at recognizing and successfully processing some dispatch type [RFC4944] before it reaches the EET. In that case the legacy device ignores the EET instead of dropping the entire packet ๐Ÿซถ

3.2. ESC Extension Octets Typical Sequence ๐Ÿงš

Here's the order of ESC extension octets relative to the 6LoWPAN Mesh header and the LOWPAN_IPHC header ๐Ÿ—บ๏ธ When the LOWPAN_IPHC dispatch type is present, ESC dispatch types MUST appear before the LOWPAN_IPHC dispatch type, so it stays backward compatible with Section 3.2 of RFC 6282 ๐Ÿ’– The diagrams below show examples of ESC extension octet usages ๐ŸŽ€

A LoWPAN encapsulated IPv6 Header compressed packet:

+-------+------+--------+--------+-----------------+--------+
|   ESC | EET  | EDP    |Dispatch| LOWPAN_IPHC hdr | Payld  |
+-------+------+--------+--------+-----------------+--------+

A LoWPAN_IPHC Header, Mesh header and an ESC extension octet:

+-----+-----+-----+----+------+-------+---------------+------+
|M typ| Mhdr| ESC | EET|EDP   |Disptch|LOWPAN_IPHC hdr| Payld|
+-----+-----+-----+----+------+-------+---------------+------+

A Mesh header with ESC dispatch types:

+-------+-------+-----+-----+-------+
| M Typ | M Hdr | ESC | EET |EDP    |
+-------+-------+-----+-----+-------+

With Fragment header:

+-------+-------+--------+------+-----+-----+-------+
| M Typ | M Hdr | F Typ  | F hdr|ESC  | EET |  EDP  |
+-------+-------+--------+------+-----+-----+-------+

ESC dispatch type as a LowPAN encapsulation:

+--------+--------+--------+
| ESC    | EET    | EDP    |
+--------+--------+--------+
 Figure 2: A 6LoWPAN Packet with ESC Dispatch Types

3.3. ITU-T G.9903 ESC Type Usage ๐ŸŒˆ

Okay this one's a fun one ๐Ÿคฉ The ESC dispatch type is used in [G3-PLC] to provide native mesh routing and bootstrapping functionalities โšก The ITU-T recommendation [G3-PLC] (see Section 9.4.2.3) defines commands that are formatted like ESC Extension Type fields ๐ŸŽ€ The command ID values run from 0x01 to 0x1F ๐Ÿ“

The frame format goes like this:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|0 1| ESC       |  Command ID   | Command Payload
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        Figure 3: G.9903 Frame Format with ESC Dispatch Type

3.4. NALP and ESC Dispatch Types ๐Ÿฆข

According to Section 5.1 of RFC 4944 [RFC4944], NALP dispatch octets are reserved for use as a kind of escape code for identifying non-6LoWPAN payloads ๐Ÿ” Since ESC dispatch types are part of the (extended) 6LoWPAN dispatch types, they're orthogonal to NALP octets ๐Ÿ’œ

This doc clarifies that NALP dispatch codes only act as an escape method for non-6LoWPAN payloads when they show up as the initial octet of a LoWPAN encapsulation ๐ŸŽฏ Anywhere else they appear, their potential meaning is reserved for future use ๐ŸŒท

4. IANA Considerations ๐ŸŽ€

okay bestie, so IANA registered the 'ESC Extension Types' values under the policy 'Specification Required' [RFC5226] ๐Ÿ“‹โœจ, following the same policy as the IANA Considerations section of [RFC4944] ๐Ÿฆ‹. For each Extension Type (except the Reserved values), the specification MUST define corresponding Extended Dispatch Payload frame octets so the receiver implementation can read the ESC dispatch types in an interoperable way ๐Ÿ’–. No vibes-based parsing, periodt ๐Ÿ’….

Section 4.1 of [RFC5226] says that "Specification Required" calls for a Designated Expert review of the public specification that requests registration of the ESC Extension Type values ๐Ÿงš.

The allocation of code points should follow the guidelines in "Usage of ESC Dispatch Octets" (Section 3) and the typical example (Section 3.2) ๐ŸŒธ. ESC Extension Type code points MUST be used in conjunction with 6lo protocols following [RFC4944] or its derivatives ๐Ÿซถ. The requesting document MUST specify how the ESC dispatch octets will be used along with 6LoWPAN headers in their use cases ๐Ÿ‘‘. Non-negotiable, bestie ๐Ÿ˜ญ.

The initial values for the 'ESC Extension Type' fields are as follows ๐ŸŒˆ:

+-------+---------------------------------+---------------+
| Value | Description                     | Reference     |
+-------+---------------------------------+---------------+
|  0    | Reserved                        | This document |
|       |                                 |               |
| 1-31  | Used by ITU-T G.9903 and G.9905 | ITU-T G.9903 &|
|       |     Command IDs                 | ITU-T G.9905  |
|       |                                 |               |
| 32-254| Unassigned                      |               |
|       |                                 |               |
| 255   | Reserved                        | This document |
+-------+---------------------------------+---------------+

Figure 4: Initial Values for the ESC Extension Types Registry

5. Security Considerations โš ๏ธ

There are no additional security threats due to the assignments of ESC dispatch type usage described in this document. ๐Ÿ™ˆ

Furthermore, this document forbids defining any extended dispatch values or extension types that modify the behavior of existing dispatch types. Nobody gets to rewrite how the existing dispatch types behave, not even with a cute new extension, so don't even try it ๐Ÿšซ๐Ÿ’€.

6. References ๐Ÿ“š

6.1. Normative References ๐Ÿ’œ

[Err4359] RFC Errata, Erratum ID 4359, RFC 4944, <https://www.rfc-editor.org/errata_search.php?eid=4359>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <http://www.rfc-editor.org/info/rfc2119>.

[RFC4944] Montenegro, G., Kushalnagar, N., Hui, J., and D. Culler, "Transmission of IPv6 Packets over IEEE 802.15.4 Networks", RFC 4944, DOI 10.17487/RFC4944, September 2007, <http://www.rfc-editor.org/info/rfc4944>.

[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, <http://www.rfc-editor.org/info/rfc6282>.

6.2. Informative References ๐Ÿงš

[G3-PLC] International Telecommunications Union, "G.9903 : Narrowband orthogonal frequency division multiplexing power line communication transceivers for G3-PLC networks", February 2014, <http://www.itu.int/rec/T-REC-G.9903-201402-I>.

[IANA-6LoWPAN] IANA, "IPv6 Low Power Personal Area Network Parameters", <https://www.iana.org/assignments/_6lowpan-parameters>.

[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.

Acknowledgements ๐Ÿซถ

The authors would like to thank the members of the 6lo WG for their comments. Many thanks to Carsten Bormann, Ralph Droms, Thierry Lys, Cedric Lavenu, and Pascal Thubert for discussions regarding the bits allocation issues, which led to this document ๐ŸŒธ. Jonathan Hui and Robert Cragie provided extensive reviews and guidance for interoperability โœจ. The authors acknowledge the comments from the following people that helped shape this document: Paul Duffy, Don Sturek, Michael Richardson, Xavier Vilajosana, Scott Mansfield, Dale Worley, and Russ Housley ๐Ÿ’–. Thanks to Brian Haberman, our document shepherd, for guidance in the IANA Considerations section ๐Ÿ‘‘.

Authors' Addresses ๐Ÿฆ‹

Samita Chakrabarti San Jose, CA United States of America

Email: samitac.ietf@gmail.com


Gabriel Montenegro Microsoft United States of America

Email: gabriel.montenegro@microsoft.com


Ralph Droms United States of America

Email: rdroms.ietf@gmail.com


James Woodyatt Google Mountain View, CA United States of America

Email: jhw@google.com

๐Ÿ“ฆ where this page comes from