<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY rfc4944 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4944.xml">
<!ENTITY rfc6282 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6282.xml">
<!ENTITY rfc5226 PUBLIC "" "http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5226.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>

<rfc number="8066" category="std" submissionType="IETF" consensus="yes"
  ipr="trust200902" updates="4944, 6282">


  <front>
    <title abbrev="6LoWPAN ESC Dispatch Code Points">IPv6 over Low-Power
    Wireless Personal Area Network (6LoWPAN) ESC&nbsp;Dispatch Code Points and Guidelines
    </title>

    <author fullname="Samita Chakrabarti" initials="S." surname="Chakrabarti">
      <organization></organization>
      <address>
        <postal>
          <street></street>
          <city>San Jose</city>
          <region>CA</region>
          <country>USA</country>
        </postal>
       <email>samitac.ietf@gmail.com</email>
      </address>
    </author>

  <author fullname="Gabriel Montenegro" initials="G." surname="Montenegro" >
   <organization abbrev="Microsoft">Microsoft</organization>
   <address>
    <postal>
     <street></street>
     <country>USA</country>
    </postal>
    <email>gabriel.montenegro@microsoft.com</email>
   </address>
  </author>

    <author initials="R" surname="Droms" fullname="Ralph Droms">
      <organization></organization>
      <address>
        <postal>
          <street></street>
          <city></city>
          <country>USA</country>
        </postal>
        <email>rdroms.ietf@gmail.com</email>
      </address>
    </author>

    <author initials="J" surname="Woodyatt" fullname="James Woodyatt">
      <organization>Google</organization>
      <address>
	<postal>
	  <street></street>
	  <city>Mountain View, CA</city>
	  <country>USA</country>
	</postal>
	<email>jhw@google.com</email>
      </address>
    </author>

   

    <date month="February" year="2017" />

    <area>Internet</area>

  <workgroup>6lo</workgroup>

  <abstract>
   <t>
    RFC 4944 defines the ESC dispatch type to allow additional dispatch octets in the 6LoWPAN header. 
The value of the ESC dispatch type was updated by RFC 6282; however, its usage
was not defined in either RFC 6282 or RFC 4944. This document updates RFC 4944
and RFC 6282 by defining the ESC extension octet code points and listing
registration entries for known use cases at the time of writing of this
document.  
   </t>
  </abstract>
 </front>

<middle>
 <section anchor="intro" title="Introduction">
  <t>
   Section 5.1 of <xref target="RFC4944"/> defines the dispatch header and types. The
   ESC type is defined to use additional dispatch octets 
in the 6LoWPAN header. RFC 6282 modifies the value of the ESC dispatch type and that value is recorded in
IANA registry <xref target="IANA-6LoWPAN" />.
However, the octets and usage following the ESC dispatch type are not defined
in either <xref target="RFC4944"/> or <xref target="RFC6282"/>. In recent
years with 6LoWPAN deployments,  implementations and standards organizations
have started using the ESC extension octets. This highlights the need for an
updated IANA registration policy. 
</t>
<t>
   This document defines the new "ESC Extension Types" registry and 
   the ESC extension octets for future applications.  In addition, this
   document records the ITU-T specification for ESC dispatch octet code points
   as an existing known usage.
  </t>
</section>

 <section title="Terminology">
  <t>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 <xref target="RFC2119"></xref>.</t>
 </section>


<section anchor="usage" title="Usage of ESC Dispatch Octets">
 
 <t>
RFC 4944 <xref target="RFC4944"/> first introduces this "ESC" dispatch header type for extension of dispatch octets. RFC 6282 <xref target="RFC6282"/> subsequently modified its value to [01 000000].
</t>
<t>
	This document specifies that the first octet following the ESC dispatch type be used for extension type (extended dispatch values). Subsequent octets are left unstructured for the specific use of the extension type:
</t>


<figure anchor="fmt" title="Frame Format with ESC Dispatch Type">
	 <artwork><![CDATA[ 

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


]]></artwork>
</figure>


<t>
ESC: The left-most octet is the ESC dispatch type containing '01000000'.
</t>
<t>
ESC Extension Type (EET): It is the first octet following the ESC dispatch
type. Extension type defines the payload for the additional dispatch
octets. The values are from 0 to 255. Values 0 and 255 are reserved for future
use. The remaining values from 1 to 254 are assigned by IANA. 
The EET values are similar to dispatch values in the 6LoWPAN header except they are preceded by the ESC dispatch type. 
Thus, ESC extension types and dispatch values are using orthogonal code spaces. Though not desirable, multiple ESC dispatch types MAY appear in a 6LoWPAN header. Section 3.1 describes how to handle an unknown ESC dispatch type.

</t>
<t>
Extended Dispatch Payload (EDP): This part of the frame format must be defined
by the corresponding extension type. A specification is required to define
the usage of each extension type and its corresponding Extension Payload. For the
sake of interoperability, specifications of extension octets MUST NOT redefine
the existing ESC Extension Type codes. 
</t>
<t>

Section 5.1 of RFC 4944 indicates that the Extension Type field may contain additional dispatch values larger than 63, as corrected by <xref target="Err4359"/>. For the sake of interoperability, the new dispatch type (EET) MUST NOT modify the behavior of existing dispatch types <xref target="RFC4944"/>.
 </t>

 

<section title="Interaction with Other RFC 4944 Implementations">
<t>
It is expected that existing implementations of RFC 4944 are not capable of
processing ESC extension data octets as defined in this document. However,
implementers have to assume that an existing implementation that attempts to
process an EET that is unknown to them will simply drop the packet or ignore the ESC
dispatch octets. 
</t>
<t>
 If an implementation following this document, during processing of the
 received packet, reaches an ESC dispatch type for which it does not
 understand the ESC Extension Type (EET) octets, it MUST drop that packet. However, it
 is important to clarify that a router node SHOULD forward a 6LoWPAN packet
 with the EET octets as long as it does not attempt to process any unknown ESC
 extension octets. 
</t>
<t>
Multiple ESC extension octets may appear in a packet. The ESC dispatch types
can appear as the first, last, or middle dispatch octets. However, a packet
will get dropped by any node that does not understand 
the EET at the beginning of the packet. 
Placing an EET toward the
front of the packet has a greater probability of causing the packet to be
dropped than placing the same EET later in the packet. Placement of an EET later in the packet
increases the chance that a legacy device will recognize and successfully process some 
dispatch type <xref target="RFC4944"/>  before the EET. In this case, the legacy device
will ignore the EET instead of dropping the entire packet.
</t>
</section>

<section anchor="EET" title="ESC Extension Octets Typical Sequence">
<t>
The sequence and order of ESC extension octets with respect to the 6LoWPAN Mesh header
and LOWPAN_IPHC header are described below. When the LOWPAN_IPHC dispatch type is
present, ESC dispatch types MUST appear before the LOWPAN_IPHC dispatch type
in order to maintain backward compatibility with Section 3.2 of RFC 6282.
The following diagrams provide examples of ESC extension octet usages:

</t>
<figure anchor="fmt11" title="A 6LoWPAN Packet with ESC Dispatch Types">

	 <artwork><![CDATA[ 
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    |
+--------+--------+--------+
]]></artwork> 

</figure>

</section>

<section anchor="none" title="ITU-T G.9903 ESC Type Usage">

   <t>
   The ESC dispatch type is used in <xref target="G3-PLC"/> to provide native
   mesh routing and bootstrapping functionalities. The ITU-T recommendation
   <xref target="G3-PLC"/> (see Section 9.4.2.3) defines commands that are formatted like ESC Extension Type fields.
The command ID values are 0x01 to 0x1F.

  </t>
<t>
	The frame format is defined as follows:
</t>
<!-- [rfced] Note that the bit ruler has been one space to the right.  Please
let us know if this is incorrect.

Current:
    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 anchor="fmt1" title="G.9903 Frame Format with ESC Dispatch Type">
	 <artwork><![CDATA[ 

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>

</figure>
                
 
 </section>

<section title="NALP and ESC Dispatch Types">
<t>
According to Section 5.1 of RFC 4944 <xref target="RFC4944"/>, NALP dispatch
octets are reserved for use as a kind of escape code  for identification of
non-6LoWPAN payloads. Since ESC dispatch types are part of 6LoWPAN dispatch
types (extended), they are orthogonal to NALP octets. 
</t>
<t>
This document clarifies that NALP dispatch codes only provide an
escape method for non-6LoWPAN payloads when they appear as the
initial octet of a LoWPAN encapsulation, and that the potential
meaning of their appearance in any other location is reserved for future use.
</t>

</section>
 </section>



 <section title="IANA Considerations">
  <t>

IANA has registered the 'ESC Extension Types' values per the policy
'Specification Required' <xref target="RFC5226"/>, following the same policy
as in the IANA Considerations section of <xref target="RFC4944"/>.  For each
Extension Type (except the Reserved values), the specification MUST define
corresponding Extended Dispatch Payload frame octets for the receiver
implementation to read the ESC dispatch types in an interoperable fashion. 
     </t>
<t>
Section 4.1 of <xref target="RFC5226"/> indicates that "Specification
Required" calls for a Designated Expert review of the public specification
requesting registration of the ESC Extension Type values.  
</t>
<t> 
The allocation of code points should follow the guidelines on "Usage of ESC
Dispatch Octets" (<xref target="usage" />) and the typical example 
(<xref target="EET" />) sections. 
ESC Extension Type code points MUST be used in conjunction with 6lo protocols
following <xref target="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.  
</t>

<t>

The initial values for the 'ESC Extension Type' fields are as follows:
</t>

<figure anchor="fmt2" title="Initial Values for the ESC Extension Types Registry">
	 <artwork><![CDATA[ 
+-------+---------------------------------+---------------+
| 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 |
+-------+---------------------------------+---------------+
]]></artwork>

</figure>

 </section>

 
  <section anchor="security" title="Security Considerations">
   <t>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. 
  
   </t>
  </section>


 </middle>

 <back>
  <references title="Normative References">
   &rfc2119;
   &rfc4944;
   &rfc6282;
   <reference anchor="Err4359" target="https://www.rfc&nbhy;editor.org/errata_search.php?eid=4359">
<front>
<title></title>
<author initials="" surname="" fullname="">
<organization>RFC Errata</organization>
</author>
<date />
</front>
<seriesInfo name='Erratum ID' value='4359'/>
<seriesInfo name='RFC' value='4944'/>
</reference>

    </references>
  <references title="Informative References">
   &rfc5226;
    <reference anchor="IANA-6LoWPAN" target="https://www.iana.org/assignments/_6lowpan-parameters"> 
<front>
<title>IPv6 Low Power Personal Area Network Parameters</title>
<author initials="" surname="" fullname="">
<organization>IANA</organization>
</author>
<date />
</front>
</reference>

<reference anchor="G3-PLC" target="http://www.itu.int/rec/T-REC-G.9903-201402-I"> 
<front>
<title>G.9903 : Narrowband orthogonal frequency division multiplexing power
line communication transceivers for G3-PLC networks</title>
<author initials="" surname="" fullname="">
<organization>International Telecommunications Union</organization>
</author>
<date month="February" year="2014" />
</front>
</reference>

     </references>



  <section anchor="acks" title="Acknowledgements" numbered="no"> 
      <t>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.</t> 
  </section>
 </back>


</rfc>

