rfc9011xml2.original.xml | rfc9011.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | ||||
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.3.24 --> | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
]> | ||||
<?rfc symrefs="yes"?> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc sortrefs="yes"?> | ||||
<?rfc strict="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc toc="yes"?> | ||||
<rfc ipr="trust200902" docName="draft-ietf-lpwan-schc-over-lorawan-14" category= "std"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft -ietf-lpwan-schc-over-lorawan-14" number="9011" obsoletes="" updates="" submissi onType="IETF" category="std" consensus="true" xml:lang="en" symRefs="true" sortR efs="true" tocInclude="true" version="3"> | |||
<front> | <front> | |||
<title abbrev="SCHC-over-LoRaWAN">Static Context Header Compression (SCHC) o | <title abbrev="SCHC over LoRaWAN">Static Context Header Compression and Frag | |||
ver LoRaWAN</title> | mentation (SCHC) over LoRaWAN</title> | |||
<seriesInfo name="RFC" value="9011"/> | ||||
<author initials="O." surname="Gimenez" fullname="Olivier Gimenez" role="edi tor"> | <author initials="O." surname="Gimenez" fullname="Olivier Gimenez" role="edi tor"> | |||
<organization>Semtech</organization> | <organization>Semtech</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>14 Chemin des Clos</street> | <street>14 Chemin des Clos</street> | |||
<city>Meylan</city> | <city>Meylan</city> | |||
<country>France</country> | <country>France</country> | |||
</postal> | </postal> | |||
<email>ogimenez@semtech.com</email> | <email>ogimenez@semtech.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author initials="I." surname="Petrov" fullname="Ivaylo Petrov" role="editor "> | <author initials="I." surname="Petrov" fullname="Ivaylo Petrov" role="editor "> | |||
<organization>Acklio</organization> | <organization>Acklio</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1137A Avenue des Champs Blancs</street> | <street>1137A Avenue des Champs Blancs</street> | |||
<city>35510 Cesson-Sevigne Cedex</city> | <city>Cesson-Sévigné Cedex</city> | |||
<code>35510</code> | ||||
<country>France</country> | <country>France</country> | |||
</postal> | </postal> | |||
<email>ivaylo@ackl.io</email> | <email>ivaylo@ackl.io</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date year="2021" month="April"/> | ||||
<date year="2021" month="February" day="01"/> | ||||
<workgroup>lpwan Working Group</workgroup> | <workgroup>lpwan Working Group</workgroup> | |||
<abstract> | <keyword>header compression</keyword> | |||
<keyword>compression</keyword> | ||||
<t>The Static Context Header Compression (SCHC) specification describes generic | <keyword>fragmentation</keyword> | |||
header compression and fragmentation techniques for Low Power Wide Area | <keyword>static context</keyword> | |||
Networks (LPWAN) technologies. SCHC is a generic mechanism designed for great | <keyword>rule-based</keyword> | |||
flexibility so that it can be adapted for any of the LPWAN technologies.</t> | <keyword>LPWAN</keyword> | |||
<keyword>LPWANs</keyword> | ||||
<keyword>low power</keyword> | ||||
<keyword>low-power</keyword> | ||||
<keyword>LoRa</keyword> | ||||
<keyword>LoRaWAN</keyword> | ||||
<keyword>IoT</keyword> | ||||
<keyword>Internet of Things</keyword> | ||||
<keyword>adaptation layer</keyword> | ||||
<keyword>UDP</keyword> | ||||
<keyword>IPv6</keyword> | ||||
<keyword>sensor network</keyword> | ||||
<keyword>wireless sensor network</keyword> | ||||
<keyword>802.15.4</keyword> | ||||
<keyword>constrained network</keyword> | ||||
<keyword>constrained node</keyword> | ||||
<keyword>constrained-node network</keyword> | ||||
<keyword>SCHC</keyword> | ||||
<t>This document specifies a profile of RFC8724 to use SCHC in LoRaWAN® networks | <abstract> | |||
, | <t>The Static Context Header Compression and fragmentation (SCHC) specific | |||
and provides elements such as efficient parameterization and modes of | ation (RFC 8724) describes | |||
operation.</t> | generic header compression and fragmentation techniques for Low-Power | |||
Wide Area Network (LPWAN) technologies. SCHC is a generic mechanism | ||||
designed for great flexibility so that it can be adapted for any of the | ||||
LPWAN technologies.</t> | ||||
<t>This document specifies a profile of RFC 8724 to use SCHC in | ||||
LoRaWAN networks and provides elements such as efficient | ||||
parameterization and modes of operation.</t> | ||||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="Introduction" numbered="true" toc="default"> | ||||
<section anchor="Introduction" title="Introduction"> | <name>Introduction</name> | |||
<t>The SCHC specification <xref target="RFC8724" format="default"/> descri | ||||
<t>SCHC specification <xref target="RFC8724"></xref> describes | bes | |||
generic header compression and fragmentation techniques that can be used on all | generic header compression and fragmentation techniques that can be used on all | |||
Low Power Wide Area Networks (LPWAN) technologies defined in | Low-Power Wide Area Network (LPWAN) technologies defined in | |||
<xref target="RFC8376"/>. Even though those technologies share a great | <xref target="RFC8376" format="default"/>. Even though those technologies share | |||
a great | ||||
number of common features like star-oriented topologies, network architecture, | number of common features like star-oriented topologies, network architecture, | |||
devices with mostly quite predictable communications, etc; they do have some | devices with communications that are mostly quite predictable, etc., they do hav e some | |||
slight differences with respect to payload sizes, reactiveness, etc.</t> | slight differences with respect to payload sizes, reactiveness, etc.</t> | |||
<t>SCHC provides a generic framework that enables those devices to communi | ||||
<t>SCHC provides a generic framework that enables those devices to communicate o | cate on | |||
n | ||||
IP networks. However, for efficient performance, some parameters | IP networks. However, for efficient performance, some parameters | |||
and modes of operation need to be set appropriately for each of the LPWAN | and modes of operation need to be set appropriately for each of the LPWAN | |||
technologies.</t> | technologies.</t> | |||
<t>This document describes the parameters and modes of operation when | ||||
SCHC is used over LoRaWAN networks. The LoRaWAN protocol is specified by | ||||
the LoRa Alliance in <xref target="LORAWAN-SPEC" format="default"/>.</t> | ||||
</section> | ||||
<section anchor="terminology" numbered="true" toc="default"> | ||||
<name>Terminology</name> | ||||
<t>This document describes the parameters and modes of operation when | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
SCHC is used over LoRaWAN networks. LoRaWAN protocol is specified by the | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
LoRa Alliance® in <xref target="lora-alliance-spec"/></t> | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | |||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14 <xref target="RFC2119" | ||||
format="default"/> <xref target="RFC8174" format="default"/> when, and | ||||
only when, they appear in all capitals, as shown here.</t> | ||||
</section> | <t>This section defines the terminology and abbreviations used in this doc | |||
<section anchor="terminology" title="Terminology"> | ument. For | |||
all other definitions, please look up the SCHC specification | ||||
<xref target="RFC8724" format="default"/>.</t> | ||||
<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, | <aside><t> | |||
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this | Note: The SCHC acronym is pronounced like "sheek" in English (or "chic" in Frenc | |||
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> < | h). | |||
xref target="RFC8174"/> | Therefore, this document writes "a SCHC Packet" instead of "an SCHC Packet". | |||
when, and only when, they appear in all capitals, as shown here.</t> | </t></aside> | |||
<t>This section defines the terminology and acronyms used in this document. For | <dl> | |||
all other definitions, please look up the SCHC specification | ||||
<xref target="RFC8724"></xref>.</t> | ||||
<t><list style="symbols"> | <dt>AppKey: | |||
<t>DevEUI: Device Extended Unique Identifier, an IEEE EUI-64 identifier | </dt> | |||
used to identify the device during the | <dd>Application Key. An AES-128 root key specific to each device. | |||
procedure while joining the network (Join Procedure). It is assigned by the | </dd> | |||
manufacturer or the device owner and provisioned on the Network Gateway.</t> | ||||
<t>DevAddr: a 32-bit non-unique identifier assigned to a device either: <list | ||||
style="symbols"> | ||||
<t>Statically: by the device manufacturer in <spanx style="emph">Activatio | ||||
n by Personalization</spanx> | ||||
mode.</t> | ||||
<t>Dynamically: after a Join Procedure by the Network Gateway in <spanx st | ||||
yle="emph">Over The | ||||
Air Activation</spanx> mode.</t> | ||||
</list></t> | ||||
<t>Downlink: LoRaWAN term for a frame transmitted by the network and | ||||
received by the device.</t> | ||||
<t>EUI: Extended Unique Identifier</t> | ||||
<t>LoRaWAN: LoRaWAN is a wireless technology based on Industrial, | ||||
Scientific, and Medical (ISM) radio bands that is used for long-range, | ||||
low-power, low-data-rate applications developed by the LoRa Alliance, a | ||||
membership consortium: <eref target="https://www.lora-alliance.org">https://www. | ||||
lora-alliance.org</eref>.</t> | ||||
<t>FRMPayload: Application data in a LoRaWAN frame.</t> | ||||
<t>MSB: Most Significant Byte</t> | ||||
<t>OUI: Organisation Unique Identifier. IEEE assigned prefix for EUI.</t> | ||||
<t>RCS: Reassembly Check Sequence. Used to verify the integrity of the | ||||
fragmentation-reassembly process.</t> | ||||
<t>RX: Device’s reception window.</t> | ||||
<t>RX1/RX2: LoRaWAN class A devices open two RX windows following an | ||||
uplink, called RX1 and RX2.</t> | ||||
<t>SCHC gateway: The LoRaWAN Application Server that manages translation | ||||
between IPv6 network and the Network Gateway (LoRaWAN Network | ||||
Server).</t> | ||||
<t>Tile: Piece of a fragmented packet as described in <xref target="RFC8724">< | ||||
/xref> section 8.2.2.1</t> | ||||
<t>Uplink: LoRaWAN term for a frame transmitted by the device and received | ||||
by the network.</t> | ||||
</list></t> | ||||
</section> | <dt>AppSKey: | |||
<section anchor="static-context-header-compression-overview" title="Static Conte | </dt> | |||
xt Header Compression Overview"> | <dd>Application Session Key. An AES-128 key derived from the AppKey for | |||
each new session. It is used to encrypt the payload field of a LoRaWAN | ||||
applicative frame. | ||||
</dd> | ||||
<t>This section contains a short overview of SCHC. For a detailed description, | <dt>DevAddr: | |||
refer to the full specification <xref target="RFC8724"></xref>.</t> | </dt> | |||
<dd><t>A 32-bit non-unique identifier assigned to a device either:</t> | ||||
<dl> | ||||
<dt>Statically: | ||||
</dt> | ||||
<dd>by the device manufacturer in "Activation-by-Personalization" | ||||
mode, or | ||||
</dd> | ||||
<dt>Dynamically: | ||||
</dt> | ||||
<dd>after a LoRaWAN "Join Procedure" by the Network Gateway in "Over-the-Air | ||||
-Activation" mode. | ||||
</dd> | ||||
</dl> | ||||
</dd> | ||||
<t>It defines:</t> | <dt>DevEUI: | |||
</dt> | ||||
<dd>Device Extended Unique Identifier, an IEEE EUI-64 identifier used to | ||||
identify the device during the procedure while joining the network (Join | ||||
Procedure). It is assigned by the manufacturer or the device owner and | ||||
provisioned on the Network Gateway. | ||||
</dd> | ||||
<t><list style="numbers"> | <dt>Downlink: | |||
<t>Compression mechanisms to avoid transporting information known by both | </dt> | |||
sender and receiver over the air. Known information is part of the | <dd>A LoRaWAN term for a frame transmitted by the network and received by the de | |||
“context”. This component is called SCHC Compressor/Decompressor (SCHC C/D).</t> | vice. | |||
<t>Fragmentation mechanisms to allow SCHC Packet transportation on small, and | </dd> | |||
potentially variable, MTU. This component is called SCHC Fragmentation/Reassembl | ||||
y | ||||
(SCHC F/R).</t> | ||||
</list></t> | ||||
<t>Context exchange or pre-provisioning is out of scope of this document.</t> | <dt>EUI: | |||
</dt> | ||||
<dd>Extended Unique Identifier | ||||
</dd> | ||||
<figure title="Architecture" anchor="Fig-archi"><artwork><![CDATA[ | <dt>FRMPayload: | |||
</dt> | ||||
<dd>Application data in a LoRaWAN frame | ||||
</dd> | ||||
<dt>IID: | ||||
</dt> | ||||
<dd>Interface Identifier | ||||
</dd> | ||||
<dt>LoRaWAN: | ||||
</dt> | ||||
<dd>LoRaWAN is a wireless technology based on Industrial, Scientific, and | ||||
Medical (ISM) radio bands that is used for long-range, low-power, | ||||
low-data-rate applications developed by the LoRa Alliance, a membership | ||||
consortium: <eref | ||||
brackets="angle" target="https://www.lora-alliance.org"/>. | ||||
</dd> | ||||
<dt>MSB: | ||||
</dt> | ||||
<dd>Most Significant Byte | ||||
</dd> | ||||
<dt>NGW: | ||||
</dt> | ||||
<dd>Network Gateway | ||||
</dd> | ||||
<dt>OUI: | ||||
</dt> | ||||
<dd>Organizationally Unique Identifier. IEEE-assigned prefix for EUI. | ||||
</dd> | ||||
<dt>RCS: | ||||
</dt> | ||||
<dd>Reassembly Check Sequence. Used to verify the integrity of the fragmentation | ||||
-reassembly process. | ||||
</dd> | ||||
<dt>RGW: | ||||
</dt> | ||||
<dd>Radio Gateway | ||||
</dd> | ||||
<dt>RX: | ||||
</dt> | ||||
<dd>A device's reception window. | ||||
</dd> | ||||
<dt>RX1/RX2: | ||||
</dt> | ||||
<dd>LoRaWAN class A devices open two RX windows following an uplink, called "RX1 | ||||
" and "RX2". | ||||
</dd> | ||||
<dt>SCHC C/D: | ||||
</dt> | ||||
<dd>SCHC Compression/Decompression | ||||
</dd> | ||||
<dt>SCHC F/R: | ||||
</dt> | ||||
<dd>SCHC Fragmentation/Reassembly | ||||
</dd> | ||||
<dt>SCHC gateway: | ||||
</dt> | ||||
<dd>The LoRaWAN Application Server that manages translation between an IPv6 | ||||
network and the Network Gateway (LoRaWAN Network Server). | ||||
</dd> | ||||
<dt>Tile: | ||||
</dt> | ||||
<dd>A piece of a fragmented packet as described in <xref target="RFC8724" | ||||
sectionFormat="of" section="8.2.2.1" format="default"/>. | ||||
</dd> | ||||
<dt>Uplink: | ||||
</dt> | ||||
<dd>LoRaWAN term for a frame transmitted by the device and received by the netwo | ||||
rk. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="static-context-header-compression-overview" numbered="true" | ||||
toc="default"> | ||||
<name>SCHC Overview</name> | ||||
<t>This section contains a short overview of SCHC. For a detailed | ||||
description, refer to the full specification <xref target="RFC8724" | ||||
format="default"/>.</t> | ||||
<t>It defines:</t> | ||||
<ol spacing="normal" type="1"><li>Compression mechanisms to avoid | ||||
transporting information known by both sender and receiver over the | ||||
air. Known information is part of the "context". This component is | ||||
called the "SCHC Compression/Decompression" (SCHC C/D).</li> | ||||
<li>Fragmentation mechanisms to allow SCHC Packet transportation on a | ||||
small, and potentially variable, MTU. This component is called the "SCHC | ||||
Fragmentation/Reassembly" (SCHC F/R).</li> | ||||
</ol> | ||||
<t>Context exchange or pre-provisioning is out of scope of this document.< | ||||
/t> | ||||
<figure anchor="Fig-archi"> | ||||
<name>Architecture</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Device App | Device App | |||
+----------------+ +----+ +----+ +----+ | +----------------+ +----+ +----+ +----+ | |||
| App1 App2 App3 | |App1| |App2| |App3| | | App1 App2 App3 | |App1| |App2| |App3| | |||
| | | | | | | | | | | | | | | | | | |||
| UDP | |UDP | |UDP | |UDP | | | UDP | |UDP | |UDP | |UDP | | |||
| IPv6 | |IPv6| |IPv6| |IPv6| | | IPv6 | |IPv6| |IPv6| |IPv6| | |||
| | | | | | | | | | | | | | | | | | |||
|SCHC C/D and F/R| | | | | | | | |SCHC C/D and F/R| | | | | | | | |||
+--------+-------+ +----+ +----+ +----+ | +--------+-------+ +----+ +----+ +----+ | |||
| +---+ +----+ +----+ +----+ . . . | | +---+ +----+ +----+ +----+ . . . | |||
+~ |RGW| === |NGW | == |SCHC| == |SCHC|...... Internet .... | +~ |RGW| === |NGW | == |SCHC| == |SCHC|...... Internet .... | |||
+---+ +----+ |F/R | |C/D | | +---+ +----+ |F/R | |C/D | | |||
+----+ +----+ | +----+ +----+ | |||
|<- - - - LoRaWAN - - ->| | |<- - - - LoRaWAN - - ->| | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t><xref target="Fig-archi"/> represents the architecture for compression/decomp | <t><xref target="Fig-archi" format="default"/> represents the | |||
ression, it is | architecture for compression/decompression; it is based on the terminology | |||
based on <xref target="RFC8376"/> terminology. The device is sending application | from <xref | |||
s flows | target="RFC8376" format="default"/>. The device is sending | |||
using IPv6 or IPv6/UDP protocols. These flows might be compressed by a Static | application flows using IPv6 or IPv6/UDP protocols. These flows might | |||
Context Header Compression Compressor/Decompressor (SCHC C/D) to reduce headers | be compressed by a SCHC C/D to reduce header size, and fragmented | |||
size and fragmented by the SCHC Fragmentation/Reassembly (SCHC F/R). | by the SCHC F/R. The resulting | |||
The resulting information is sent on a layer two | information is sent on a Layer 2 (L2) frame to an LPWAN Radio Gateway | |||
(L2) frame to an LPWAN Radio Gateway (RGW) that forwards the frame to a Network | (RGW) that forwards the frame to a Network Gateway (NGW). The NGW sends | |||
Gateway (NGW). The NGW sends the data to a SCHC F/R for reassembly, if | the data to a SCHC F/R for reassembly, if required, then to a SCHC C/D for | |||
required, then to SCHC C/D for decompression. The SCHC C/D shares the same rules | decompression. The SCHC C/D shares the same rules with the device. The | |||
with the | SCHC C/D and SCHC F/R can be located on the NGW or in | |||
device. The SCHC C/D and F/R can be located on the Network Gateway (NGW) or in | another place as long as a communication is established between the NGW | |||
another place as long as a communication is established between the NGW and the | and the SCHC F/R, then SCHC F/R and SCHC C/D. The SCHC C/D and SCHC F/R in | |||
SCHC | the | |||
F/R, then SCHC F/R and C/D. The SCHC C/D and F/R in the device and the SCHC gate | device and the SCHC gateway <bcp14>MUST</bcp14> share the same set of | |||
way MUST | rules. After decompression, the packet can be sent on the Internet to | |||
share the same set of rules. After decompression, the packet can be sent on the | one or several LPWAN Application Servers (App).</t> | |||
Internet to | <t>The SCHC C/D and SCHC F/R process is bidirectional, so the same princip | |||
one or several LPWAN Application Servers (App).</t> | les | |||
can be applied to the other direction.</t> | ||||
<t>The SCHC C/D and F/R process is bidirectional, so the same principles can | <t>In a LoRaWAN network, the RGW is called a "Gateway", the NGW is a | |||
be applied to the other direction.</t> | "Network Server", and the SCHC C/D and SCHC F/R are one or more | |||
"Application Servers". | ||||
<t>In a LoRaWAN network, the RGW is called a Gateway, the NGW is Network Server, | Application servers can be provided by the NGW or any third-party | |||
and the SCHC C/D and F/R are an Application Server. It can be provided by | software. <xref target="Fig-archi" format="default"/> can be mapped in | |||
the Network Gateway or any third party software. <xref target="Fig-archi"/> can | LoRaWAN terminology to:</t> | |||
be mapped in | ||||
LoRaWAN terminology to:</t> | ||||
<figure title="SCHC Architecture mapped to LoRaWAN" anchor="Fig-archi-lorawan">< | <figure anchor="Fig-archi-lorawan"> | |||
artwork><![CDATA[ | <name>SCHC Architecture Mapped to LoRaWAN</name> | |||
End Device App | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
+--------------+ +----+ +----+ +----+ | End Device App | |||
|App1 App2 App3| |App1| |App2| |App3| | +--------------+ +----+ +----+ +----+ | |||
| | | | | | | | | |App1 App2 App3| |App1| |App2| |App3| | |||
| UDP | |UDP | |UDP | |UDP | | | | | | | | | | | |||
| IPv6 | |IPv6| |IPv6| |IPv6| | | UDP | |UDP | |UDP | |UDP | | |||
| | | | | | | | | | IPv6 | |IPv6| |IPv6| |IPv6| | |||
|SCHC C/D & F/R| | | | | | | | | | | | | | | | | |||
+-------+------+ +----+ +----+ +----+ | |SCHC C/D & F/R| | | | | | | | |||
| +-------+ +-------+ +-----------+ . . . | +-------+------+ +----+ +----+ +----+ | |||
+~ |Gateway| === |Network| == |Application|..... Internet .... | | +-------+ +-------+ +-----------+ . . . | |||
+-------+ |server | |server | | +~ |Gateway| == |Network| == |Application|..... Internet .... | |||
+-------+ | F/R - C/D | | +-------+ |server | |server | | |||
+-----------+ | +-------+ | F/R - C/D | | |||
+-----------+ | ||||
|<- - - - - LoRaWAN - - - ->| | |<- - - - - LoRaWAN - - - ->| | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
</section> | </section> | |||
<section anchor="lorawan-architecture" title="LoRaWAN Architecture"> | <section anchor="lorawan-architecture" numbered="true" toc="default"> | |||
<name>LoRaWAN Architecture</name> | ||||
<t>An overview of LoRaWAN <xref target="lora-alliance-spec"/> protocol and archi | <t>An overview of the LoRaWAN protocol and architecture <xref target="LORA | |||
tecture is | WAN-SPEC" | |||
described in <xref target="RFC8376"/>. The mapping between the LPWAN | format="default"/> is described in <xref | |||
architecture entities as described in <xref target="RFC8724"></xref> | target="RFC8376" format="default"/>. The mapping between the LPWAN | |||
and the ones in <xref target="lora-alliance-spec"/> is as follows:</t> | architecture entities as described in <xref target="RFC8724" | |||
format="default"/> and the ones in <xref target="LORAWAN-SPEC" | ||||
<t>o Devices are LoRaWAN End Devices (e.g. sensors, | format="default"/> is as follows:</t> | |||
actuators, etc.). There can be a very high density of devices per | <ul> | |||
radio gateway (LoRaWAN gateway). This entity maps to the LoRaWAN end-device.< | <li>Devices are LoRaWAN End Devices (e.g., sensors, actuators, etc.). There | |||
/t> | can be a very high density of devices per radio gateway (LoRaWAN | |||
gateway). This entity maps to the LoRaWAN end device. | ||||
</li> | ||||
<t>o The Radio Gateway (RGW), which is the endpoint of the constrained | <li>The RGW is the endpoint of the constrained | |||
link. This entity maps to the LoRaWAN Gateway.</t> | link. This entity maps to the LoRaWAN Gateway. | |||
</li> | ||||
<t>o The Network Gateway (NGW) is the interconnection node between the | <li>The NGW is the interconnection node between the Radio | |||
Radio Gateway and the SCHC gateway (LoRaWAN Application server). This | Gateway and the SCHC gateway (LoRaWAN Application Server). This entity maps to | |||
entity maps to the LoRaWAN Network Server.</t> | the LoRaWAN Network Server. | |||
</li> | ||||
<t>o SCHC C/D and F/R are handled by LoRaWAN Application Server; ie the LoRaWAN | <li>The SCHC C/D and SCHC F/R are handled by the LoRaWAN Application Server. | |||
application server will do the SCHC C/D and F/R.</t> | </li> | |||
<t>o The LPWAN-AAA Server is the LoRaWAN Join Server. Its role is to manage and | <li>The LPWAN-AAA Server is the LoRaWAN Join Server. Its role is to manage and | |||
deliver security keys in a secure way, so that the devices root key is never | deliver security keys in a secure way so that the devices root key is never | |||
exposed.</t> | exposed. | |||
</li> | ||||
</ul> | ||||
<figure title="LPWAN Architecture" anchor="Fig-LPWANarchi"><artwork><![CDATA[ | <figure anchor="Fig-LPWANarchi"> | |||
<name>LPWAN Architecture</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
(LPWAN-AAA Server) | (LPWAN-AAA Server) | |||
() () () | +------+ | () () () | +------+ | |||
() () () () / \ +---------+ | Join | | () () () () / \ +---------+ | Join | | |||
() () () () () / \======| ^ |===|Server| +-----------+ | () () () () () / \======| ^ |===|Server| +-----------+ | |||
() () () | | <--|--> | +------+ |Application| | () () () | | <--|--> | +------+ |Application| | |||
() () () () / \==========| v |=============| Server | | () () () () / \==========| v |=============| Server | | |||
() () () / \ +---------+ +-----------+ | () () () / \ +---------+ +-----------+ | |||
End-devices Gateways Network Server (SCHC C/D and F/R) | End devices Gateways Network Server (SCHC C/D and F/R) | |||
(devices) (RGW) (NGW) | (devices) (RGW) (NGW) | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t><spanx style="emph">Note</spanx>: <xref target="Fig-LPWANarchi"/> terms are f | <aside> <t>Note: <xref target="Fig-LPWANarchi" format="default"/> terms | |||
rom LoRaWAN, with <xref target="RFC8376"/> terminology in brackets.</t> | are from LoRaWAN, with <xref target="RFC8376" format="default"/> | |||
terminology in brackets.</t></aside> | ||||
<t>The SCHC C/D and SCHC F/R are performed on the LoRaWAN end | ||||
device and the Application Server (called the SCHC gateway). While the | ||||
point-to-point link between the device and the Application Server | ||||
constitutes a single IP hop, the ultimate endpoint of the IP | ||||
communication may be an Internet node beyond the Application Server. In | ||||
other words, the LoRaWAN Application Server (SCHC gateway) acts as the | ||||
first-hop IP router for the device. The Application Server and Network | ||||
Server may be co-located, which effectively turns the | ||||
Network/Application Server into the first-hop IP router.</t> | ||||
<section anchor="device-classes-a-b-c-and-interactions" numbered="true" to | ||||
c="default"> | ||||
<name>Device Classes (A, B, C) and Interactions</name> | ||||
<t>SCHC Compressor/Decompressor (SCHC C/D) and SCHC Fragmentation/Reassembly (SC | <t>The LoRaWAN Medium Access Control (MAC) layer supports three | |||
HC F/R) | classes of devices named A, B, and C. All devices implement Class | |||
are performed on the LoRaWAN end-device and the Application Server (called | A, and some devices may implement Class B or Class C. Class B and Class | |||
SCHC gateway). While the point-to-point link between the device and the | C | |||
Application Server constitutes a single IP hop, the ultimate end-point of the | are mutually exclusive.</t> | |||
IP communication may be an Internet node beyond the Application Server. | ||||
In other words, the LoRaWAN Application Server (SCHC gateway) acts as the | ||||
first hop IP router for the device. The Application Server and Network | ||||
Server may be co-located, which effectively turns the Network/Application | ||||
Server into the first hop IP router.</t> | ||||
<section anchor="device-classes-a-b-c-and-interactions" title="Device classes (A , B, C) and interactions"> | <dl> | |||
<t>The LoRaWAN MAC layer supports 3 classes of devices named A, B and C. All | <dt>Class A: | |||
devices implement the Class A, some devices may implement Class B or | </dt> | |||
Class C. Class B and Class C are mutually exclusive.</t> | <dd>Class A is the simplest class of devices. The device is allowed to | |||
transmit at any time, randomly selecting a communication channel. The Network | ||||
Gateway may reply with a downlink in one of the two receive windows immediately | ||||
following the uplinks. Therefore, the Network Gateway cannot initiate a | ||||
downlink; it has to wait for the next uplink from the device to get a downlink | ||||
opportunity. Class A is the lowest power consumption class. | ||||
</dd> | ||||
<t><list style="symbols"> | <dt>Class B: | |||
<t>Class A: The Class A is the simplest class of devices. The device is | </dt> | |||
allowed to transmit at any time, randomly selecting a communication channel. | <dd><t>Class B devices implement all the functionalities of Class A devices but | |||
The Network Gateway may reply with a downlink in one of the 2 receive windows | also schedule periodic listen windows. Therefore, as opposed to Class A | |||
immediately following the uplinks. Therefore, the Network Gateway cannot initiat | devices, Class B devices can receive downlinks that are initiated by the | |||
e a | ||||
downlink, it has to wait for the next uplink from the device to get a | ||||
downlink opportunity. The Class A is the lowest power consumption class.</t> | ||||
<t>Class B: Class B devices implement all the functionalities of Class A | ||||
devices, but also schedule periodic listen windows. Therefore, opposed to the | ||||
Class A devices, Class B devices can receive downlinks that are initiated by the | ||||
Network Gateway and not following an uplink. There is a trade-off between the | Network Gateway and not following an uplink. There is a trade-off between the | |||
periodicity of those scheduled Class B listen windows and the power | periodicity of those scheduled Class B listen windows and the power | |||
consumption of the device: if the periodicity is high downlinks from the NGW | consumption of the device: </t> | |||
will be sent faster, but the device wakes up more often: it will have higher | ||||
power consumption.</t> | ||||
<t>Class C: Class C devices implement all the functionalities of Class A | ||||
devices, but keep their receiver open whenever they are not transmitting. | ||||
Class C devices can receive downlinks at any time at the expense of a higher | ||||
power consumption. Battery-powered devices can only operate in Class C for a | ||||
limited amount of time (for example for a firmware upgrade over-the-air). | ||||
Most of the Class C devices are grid powered (for example Smart Plugs).</t> | ||||
</list></t> | ||||
</section> | <dl> | |||
<section anchor="device-addressing" title="Device addressing"> | ||||
<t>LoRaWAN end-devices use a 32-bit network address (devAddr) to communicate wit | <dt>High periodicity:</dt> | |||
h | <dd>Downlinks from the NGW will be sent faster but the device wakes up more | |||
the Network Gateway over-the-air, this address might not be unique in a LoRaWAN | often and power consumption is increased.</dd> | |||
network. Devices using the same devAddr are distinguished by the Network | ||||
Gateway based on the cryptographic signature appended to every LoRaWAN frame.</t | ||||
> | ||||
<t>To communicate with the SCHC gateway, the Network Gateway MUST identify the | <dt>Low periodicity:</dt> | |||
devices by a unique 64-bit device identifier called the DevEUI.</t> | <dd>Downlinks from the NGW will have higher latency but lower power consumption. | |||
</dd> | ||||
</dl> | ||||
<t>The DevEUI is assigned to the device during the manufacturing process by the | </dd> | |||
device’s manufacturer. It is built like an Ethernet MAC address by | ||||
concatenating the manufacturer’s IEEE OUI field with a vendor unique number. | ||||
e.g.: 24-bit OUI is concatenated with a 40-bit serial number. | ||||
The Network Gateway translates the devAddr into a DevEUI in the uplink | ||||
direction and reciprocally on the downlink direction.</t> | ||||
<figure title="LoRaWAN addresses" anchor="Fig-LoRaWANaddresses"><artwork><![CDAT | <dt>Class C: | |||
A[ | </dt> | |||
<dd>Class C devices implement all the functionalities of Class A devices but | ||||
keep their receiver open whenever they are not transmitting. Class C devices | ||||
can receive downlinks at any time at the expense of a higher power | ||||
consumption. Battery-powered devices can only operate in Class C for a limited | ||||
amount of time (for example, for a firmware upgrade over-the-air). Most of the | ||||
Class C devices are grid powered (for example, Smart Plugs). | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="device-addressing" numbered="true" toc="default"> | ||||
<name>Device Addressing</name> | ||||
<t>LoRaWAN end devices use a 32-bit network address (DevAddr) to | ||||
communicate with the Network Gateway over the air; this address might | ||||
not be unique in a LoRaWAN network. Devices using the same DevAddr are | ||||
distinguished by the Network Gateway based on the cryptographic | ||||
signature appended to every LoRaWAN frame.</t> | ||||
<t>To communicate with the SCHC gateway, the Network Gateway | ||||
<bcp14>MUST</bcp14> identify the devices by a unique 64-bit device | ||||
identifier called the "DevEUI".</t> | ||||
<t>The DevEUI is assigned to the device during the manufacturing | ||||
process by the device's manufacturer. It is built like an Ethernet MAC | ||||
address by concatenating the manufacturer's IEEE OUI field with a | ||||
vendor unique number. For example, a 24-bit OUI is concatenated with a | ||||
40-bit | ||||
serial number. The Network Gateway translates the DevAddr into a | ||||
DevEUI in the uplink direction and reciprocally on the downlink | ||||
direction.</t> | ||||
<figure anchor="Fig-LoRaWANaddresses"> | ||||
<name>LoRaWAN Addresses</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+--------+ +---------+ +---------+ +----------+ | +--------+ +---------+ +---------+ +----------+ | |||
| Device | <=====> | Network | <====> | SCHC | <======> | Internet | | | Device | <=====> | Network | <====> | SCHC | <======> | Internet | | |||
| | devAddr | Gateway | DevEUI | Gateway | IPv6/UDP | | | | | DevAddr | Gateway | DevEUI | Gateway | IPv6/UDP | | | |||
+--------+ +---------+ +---------+ +----------+ | +--------+ +---------+ +---------+ +----------+ | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="general-frame-types" numbered="true" toc="default"> | ||||
<name>General Frame Types</name> | ||||
<t>LoRaWAN implements the possibility to send confirmed or unconfirmed f | ||||
rames:</t> | ||||
]]></artwork></figure> | <dl> | |||
</section> | ||||
<section anchor="general-frame-types" title="General Frame Types"> | ||||
<t>LoRaWAN implements the possibility to send confirmed or unconfirmed frames:</ | ||||
t> | ||||
<t><list style="symbols"> | <dt>Confirmed frame: | |||
<t>Confirmed frame: | </dt> | |||
The sender asks the receiver to acknowledge the frame.</t> | <dd>The sender asks the receiver to acknowledge the frame. | |||
<t>Unconfirmed frame: | </dd> | |||
The sender does not ask the receiver to acknowledge the frame.</t> | ||||
</list></t> | ||||
<t>As SCHC defines its own acknowledgment mechanisms, SCHC does not require | <dt>Unconfirmed frame: | |||
the use of LoRaWAN Confirmed frames (MType=0b100 as per | </dt> | |||
<xref target="lora-alliance-spec"/>)</t> | <dd>The sender does not ask the receiver to acknowledge the frame. | |||
</dd> | ||||
</section> | </dl> | |||
<section anchor="lorawan-mac-frames" title="LoRaWAN MAC Frames"> | ||||
<t>In addition to regular data frames, LoRaWAN implements JoinRequest and JoinAc | <t>As SCHC defines its own acknowledgment mechanisms, SCHC does not requ | |||
cept | ire | |||
the use of LoRaWAN Confirmed frames (FType = 0b100 as per | ||||
<xref target="LORAWAN-SPEC" format="default"/>).</t> | ||||
</section> | ||||
<section anchor="lorawan-mac-frames" numbered="true" toc="default"> | ||||
<name>LoRaWAN MAC Frames</name> | ||||
<t>In addition to regular data frames, LoRaWAN implements JoinRequest an | ||||
d JoinAccept | ||||
frame types, which are used by a device to join a network:</t> | frame types, which are used by a device to join a network:</t> | |||
<dl> | ||||
<t><list style="symbols"> | <dt>JoinRequest: | |||
<t>JoinRequest: | </dt> | |||
This frame is used by a device to join a network. It contains the device’s | <dd>This frame is used by a device to join a network. It contains the device's | |||
unique identifier DevEUI and a random nonce that will be used for session key | unique identifier DevEUI and a random nonce that will be used for session key | |||
derivation.</t> | derivation. | |||
<t>JoinAccept: | </dd> | |||
To on-board a device, the Network Gateway responds to the JoinRequest | ||||
issued by a device with a JoinAccept frame. That frame is | ||||
encrypted with the device’s AppKey and contains (amongst other fields) | ||||
the network’s major settings and a random nonce used to derive the session | ||||
keys.</t> | ||||
<t>Data: | ||||
MAC and application data. Application data are protected with AES-128 | ||||
encryption. MAC related data are AES-128 encrypted with another key.</t> | ||||
</list></t> | ||||
</section> | ||||
<section anchor="lorawan-fport" title="LoRaWAN FPort"> | ||||
<t>The LoRaWAN MAC layer features a frame port field in all frames. This field | ||||
(FPort) is 8 bits long and the values from 1 to 223 can be used. It allows | ||||
LoRaWAN networks and applications to identify data.</t> | ||||
</section> | ||||
<section anchor="lorawan-empty-frame" title="LoRaWAN empty frame"> | ||||
<t>A LoRaWAN empty frame is a LoRaWAN frame without FPort (cf <xref target="lora | ||||
wan-schc-payload"/>) | ||||
and FRMPayload.</t> | ||||
</section> | <dt>JoinAccept: | |||
<section anchor="unicast-and-multicast-technology" title="Unicast and multicast | </dt> | |||
technology"> | <dd>To onboard a device, the Network Gateway responds to the JoinRequest | |||
issued by a device with a JoinAccept frame. That frame is encrypted with the | ||||
device's AppKey and contains (among other fields) the network's major | ||||
settings and a random nonce used to derive the session keys. | ||||
</dd> | ||||
<t>LoRaWAN technology supports unicast downlinks, but also multicast: a packet | <dt>Data: | |||
sent over LoRaWAN radio link can be received by several devices. It is | </dt> | |||
useful to address many devices with same content, either a large binary | <dd>This refers to MAC and application data. Application data is protected with | |||
file (firmware upgrade), or same command (e.g: lighting control). | AES-128 | |||
As IPv6 is also a multicast technology this feature can be used to address a | encryption. MAC-related data is AES-128 encrypted with another key. | |||
group of devices.</t> | </dd> | |||
<t><spanx style="emph">Note 1</spanx>: IPv6 multicast addresses must be defined | </dl> | |||
as per <xref target="RFC4291"></xref>. LoRaWAN | ||||
multicast group definition in a Network Gateway and the relation between those | ||||
groups and IPv6 groupID are out of scope of this document.</t> | ||||
<t><spanx style="emph">Note 2</spanx>: LoRa Alliance defined <xref target="lora- | </section> | |||
alliance-remote-multicast-set"/> as | <section anchor="lorawan-fport" numbered="true" toc="default"> | |||
the RECOMMENDED way to setup multicast groups on devices and create a synchroniz | <name>LoRaWAN FPort</name> | |||
ed | <t>The LoRaWAN MAC layer features a frame port field in all frames. This | |||
reception window.</t> | field | |||
(FPort) is 8 bits long and the values from 1 to 223 can be used. It allows | ||||
LoRaWAN networks and applications to identify data.</t> | ||||
</section> | ||||
<section anchor="lorawan-empty-frame" numbered="true" toc="default"> | ||||
<name>LoRaWAN Empty Frame</name> | ||||
<t>A LoRaWAN empty frame is a LoRaWAN frame without FPort (cf. <xref | ||||
target="lorawan-schc-payload" format="default"/>) and FRMPayload.</t> | ||||
</section> | ||||
</section> | <section anchor="unicast-and-multicast-technology" numbered="true" toc="de | |||
</section> | fault"> | |||
<section anchor="schc-over-lorawan" title="SCHC-over-LoRaWAN"> | <name>Unicast and Multicast Technology</name> | |||
<t>LoRaWAN technology supports unicast downlinks but also multicast; a | ||||
multicast packet sent over a LoRaWAN radio link can be received by sever | ||||
al | ||||
devices. It is useful to address many devices with the same content: | ||||
either a large binary file (firmware upgrade) or the same command (e.g., | ||||
lighting control). As IPv6 is also a multicast technology, this | ||||
feature can be used to address a group of devices.</t> | ||||
<section anchor="lorawan-schc-payload" title="LoRaWAN FPort and RuleID"> | <aside> | |||
<t>Note 1: IPv6 multicast addresses must be defined as per | ||||
<xref target="RFC4291" format="default"/>. The LoRaWAN multicast group | ||||
definition in a Network Gateway and the relation between those groups | ||||
and IPv6 groupID are out of scope of this document.</t> | ||||
</aside> | ||||
<aside> <t>Note 2: The LoRa Alliance defined <xref | ||||
target="LORAWAN-REMOTE-MULTICAST-SET" format="default"/> as the | ||||
<bcp14>RECOMMENDED</bcp14> way to set up multicast groups on devices | ||||
and create a synchronized reception window.</t> | ||||
</aside> | ||||
<t>The FPort field is part of the SCHC Message, as shown in | </section> | |||
<xref target="Fig-lorawan-schc-payload"/>. The SCHC C/D and the SCHC F/R SHALL c | </section> | |||
oncatenate | <section anchor="schc-over-lorawan" numbered="true" toc="default"> | |||
<name>SCHC over LoRaWAN</name> | ||||
<section anchor="lorawan-schc-payload" numbered="true" toc="default"> | ||||
<name>LoRaWAN FPort and RuleID</name> | ||||
<t>The FPort field is part of the SCHC Message, as shown in | ||||
<xref target="Fig-lorawan-schc-payload" format="default"/>. The SCHC C/D and the | ||||
SCHC F/R <bcp14>SHALL</bcp14> concatenate | ||||
the FPort field with the LoRaWAN payload to recompose the SCHC Message.</t> | the FPort field with the LoRaWAN payload to recompose the SCHC Message.</t> | |||
<figure anchor="Fig-lorawan-schc-payload"> | ||||
<figure title="SCHC Message in LoRaWAN" anchor="Fig-lorawan-schc-payload"><artwo | <name>SCHC Message in LoRaWAN</name> | |||
rk><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------------------------ + | + ------------------------ + | |||
| SCHC Message | | | SCHC Message | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
<aside><t>Note: The SCHC Message is any datagram sent by the SCHC C/D or | ||||
<t>Note: SCHC Message is any datagram sent by SCHC C/D or F/R layers.</t> | F/R layers.</t></aside> | |||
<t>A fragmented datagram with application payload transferred from devic | ||||
<t>A fragmented datagram with application payload transferred from device to | e to | |||
Network Gateway, is called an uplink fragmented datagram. It uses an FPort for d | Network Gateway is called an "uplink-fragmented datagram". It uses an FPort for | |||
ata uplink | data uplink | |||
and its associated SCHC control downlinks, named FPortUp in this document. The | and its associated SCHC control downlinks, named "FPortUp" in this document. The | |||
other way, a fragmented datagram with application payload transferred from | other way, a fragmented datagram with application payload transferred from | |||
Network Gateway to device, is called downlink fragmented datagram. It uses anoth | Network Gateway to device is called a "downlink-fragmented datagram". It uses an | |||
er | other | |||
FPort for data downlink and its associated SCHC control uplinks, named FPortDown | FPort for data downlink and its associated SCHC control uplinks, named "FPortDow | |||
n" | ||||
in this document.</t> | in this document.</t> | |||
<t>All RuleID can use arbitrary values inside the FPort range allowed by LoRaWAN | <t>All RuleIDs can use arbitrary values inside the FPort range allowed | |||
specification and MUST be shared by the device and SCHC gateway prior to | by the LoRaWAN specification <xref target="LORAWAN-SPEC"/> and | |||
the communication with the selected rule. | <bcp14>MUST</bcp14> be shared by the device and SCHC gateway prior to | |||
The uplink and downlink fragmentation FPorts MUST be different.</t> | the communication with the selected rule. The uplink and downlink | |||
fragmentation FPorts <bcp14>MUST</bcp14> be different.</t> | ||||
</section> | </section> | |||
<section anchor="rule-id-management" title="Rule ID management"> | <section anchor="rule-id-management" numbered="true" toc="default"> | |||
<name>RuleID Management</name> | ||||
<t>RuleID MUST be 8 bits, encoded in the LoRaWAN FPort as described in | <t>The RuleID <bcp14>MUST</bcp14> be 8 bits and encoded in the LoRaWAN | |||
<xref target="lorawan-schc-payload"/>. LoRaWAN supports up to 223 application FP | FPort as described in <xref target="lorawan-schc-payload" | |||
orts in | format="default"/>. | |||
the range [1;223] as defined in section 4.3.2 of <xref target="lora-alliance-spe | ||||
c"/>, it implies | ||||
that RuleID MSB SHOULD be inside this range. An application can send non SCHC | ||||
traffic by using FPort values different from the ones used for SCHC.</t> | ||||
<t>In order to improve interoperability, RECOMMENDED fragmentation RuleID values | ||||
are:</t> | ||||
<t><list style="symbols"> | ||||
<t>RuleID = 20 (8-bit) for uplink fragmentation, named FPortUp.</t> | ||||
<t>RuleID = 21 (8-bit) for downlink fragmentation, named FPortDown.</t> | ||||
<t>RuleID = 22 (8-bit) for which SCHC compression was not possible (i.e., no m | ||||
atching | ||||
compression Rule was found), as described in <xref target="RFC8724"/> section 6. | ||||
</t> | ||||
</list></t> | ||||
<t>FPortUp value MUST be different from FPortDown. | ||||
The remaining RuleIDs are available for compression. RuleIDs are shared between | ||||
uplink and downlink sessions. A RuleID not in the set(s) of FPortUp or FPortDow | ||||
n | ||||
means that the fragmentation is not used, thus, on reception, the SCHC Message | ||||
MUST be sent to the SCHC C/D layer.</t> | ||||
<t>The only uplink frames using the FPortDown port are the fragmentation SCHC | LoRaWAN supports up to 223 application FPorts in | |||
control messages of a downlink fragmented datagram (for example, SCHC ACKs). | the range [1..223] as defined in Section 4.3.2 of <xref | |||
Similarly, the only downlink frames using the FPortUp port are the | target="LORAWAN-SPEC" format="default"/>; it implies that the RuleID MSB | |||
fragmentation SCHC control messages of an uplink fragmented datagram.</t> | <bcp14>SHOULD</bcp14> be inside this range. An application can send | |||
non-SCHC traffic by using FPort values different from the ones used | ||||
for SCHC.</t> | ||||
<t>In order to improve interoperability, <bcp14>RECOMMENDED</bcp14> frag | ||||
mentation RuleID values are:</t> | ||||
<ul spacing="normal"> | ||||
<li>RuleID = 20 (8-bit) for uplink fragmentation, named FPortUp.</li> | ||||
<li>RuleID = 21 (8-bit) for downlink fragmentation, named FPortDown.</ | ||||
li> | ||||
<li>RuleID = 22 (8-bit) for which SCHC compression was not possible (i | ||||
.e., no matching | ||||
compression Rule was found), as described in <xref target="RFC8724" sectionForma | ||||
t="of" section="6" format="default"/>.</li> | ||||
</ul> | ||||
<t>An application can have multiple fragmented datagrams between a device and on | <t>The FPortUp value <bcp14>MUST</bcp14> be different from the FPortDown | |||
e | value. The | |||
or several SCHC gateways. A set of FPort values is REQUIRED for each SCHC gatew | remaining RuleIDs are available for compression. RuleIDs are shared | |||
ay | between uplink and downlink sessions. A RuleID not in the set(s) of | |||
FPortUp or FPortDown means that the fragmentation is not used; thus, | ||||
on reception, the SCHC Message <bcp14>MUST</bcp14> be sent to the SCHC | ||||
C/D layer.</t> | ||||
<t>The only uplink frames using the FPortDown port are the | ||||
fragmentation SCHC control messages of a downlink-fragmented datagram | ||||
(for example, SCHC ACKs). Similarly, the only downlink frames using | ||||
the FPortUp port are the fragmentation SCHC control messages of an | ||||
uplink-fragmented datagram.</t> | ||||
<t>An application can have multiple fragmented datagrams between a devic | ||||
e and one | ||||
or several SCHC gateways. A set of FPort values is <bcp14>REQUIRED</bcp14> for | ||||
each SCHC gateway | ||||
instance the device is required to communicate with. The application can use | instance the device is required to communicate with. The application can use | |||
additional uplinks or downlink fragmented parameters but SHALL implement at | additional uplinks or downlink-fragmented parameters but <bcp14>SHALL</bcp14> im plement at | |||
least the parameters defined in this document.</t> | least the parameters defined in this document.</t> | |||
<t>The mechanism for context distribution across devices and gateways is | ||||
<t>The mechanism for context distribution across devices and gateways is | ||||
outside the scope of this document.</t> | outside the scope of this document.</t> | |||
</section> | ||||
</section> | <section anchor="IID" numbered="true" toc="default"> | |||
<section anchor="IID" title="Interface IDentifier (IID) computation"> | <name>Interface IDentifier (IID) Computation</name> | |||
<t>In order to mitigate the risks described in <xref target="RFC8064" fo | ||||
<t>In order to mitigate the risks described in <xref target="RFC8064"></xref> an | rmat="default"/> and <xref target="RFC8065" format="default"/>, | |||
d <xref target="RFC8065"></xref>, | implementations <bcp14>MUST</bcp14> implement the following algorithm and <bcp14 | |||
implementation MUST implement the following algorithm and SHOULD use it.</t> | >SHOULD</bcp14> use it.</t> | |||
<ol spacing="normal" type="1"><li>key = LoRaWAN AppSKey</li> | ||||
<t><list style="numbers"> | <li>cmac = aes128_cmac(key, DevEUI)</li> | |||
<t>key = LoRaWAN AppSKey</t> | <li>IID = cmac[0..7]</li> | |||
<t>cmac = aes128_cmac(key, DevEUI)</t> | </ol> | |||
<t>IID = cmac[0..7]</t> | <t>The aes128_cmac algorithm is described in <xref target="RFC4493" | |||
</list></t> | format="default"/>. It has been chosen as it is already used by | |||
devices for the LoRaWAN protocol.</t> | ||||
<t>aes128_cmac algorithm is described in <xref target="RFC4493"></xref>. It has | <t>As AppSKey is renewed each time a device joins or rejoins a LoRaWAN | |||
been chosen as it is | network, the IID will change over time; this | |||
already used by devices for LoRaWAN protocol.</t> | mitigates privacy concerns, for example, location tracking or correlatio | |||
n | ||||
over time. Join periodicity is defined at the application level.</t> | ||||
<t>As AppSKey is renewed each time a device joins or rejoins a LoRaWAN network, | <t>Address-scan risk is mitigated thanks to the entropy added to | |||
the IID will change over time; this mitigates privacy, location tracking and | the IID by the inclusion of AppSKey.</t> | |||
correlation over time risks. Join periodicity is defined at the application | <t>Using this algorithm will also ensure that there is no correlation | |||
level.</t> | between the hardware identifier (DevEUI) and the IID, so an | |||
attacker cannot use the manufacturer OUI to target devices.</t> | ||||
<t>Example with:</t> | ||||
<ul spacing="normal"> | ||||
<li>DevEUI: 0x1122334455667788</li> | ||||
<li>AppSKey: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB</li> | ||||
</ul> | ||||
<figure anchor="Fig-iid-computation-example"> | ||||
<name>Example of IID Computation</name> | ||||
<sourcecode><![CDATA[ | ||||
1. key: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB | ||||
2. cmac: 0x4E822D9775B2649928F82066AF804FEC | ||||
3. IID: 0x4E822D9775B26499 | ||||
]]></sourcecode> | ||||
<t>Address scan risk is mitigated thanks to AES-128, which provides enough entro | </figure> | |||
py | ||||
bits of the IID.</t> | ||||
<t>Using this algorithm will also ensure that there is no correlation between th | <t>There is a small probability of IID collision in a LoRaWAN | |||
e | network. If this occurs, the IID can be changed by rekeying the device | |||
hardware identifier (IEEE-64 DevEUI) and the IID, so an attacker cannot use | at the L2 level (i.e., triggering a LoRaWAN join). The way the device i | |||
manufacturer OUI to target devices.</t> | s | |||
rekeyed is out of scope of this document and left to the | ||||
implementation.</t> | ||||
<aside><t>Note: Implementations also using another IID source | ||||
<bcp14>MUST</bcp14> ensure that the same IID is shared between the | ||||
device and the SCHC gateway in the compression and decompression of | ||||
the IPv6 address of the device.</t></aside> | ||||
</section> | ||||
<section anchor="padding" numbered="true" toc="default"> | ||||
<name>Padding</name> | ||||
<t>All padding bits <bcp14>MUST</bcp14> be 0.</t> | ||||
</section> | ||||
<section anchor="Decomp" numbered="true" toc="default"> | ||||
<name>Decompression</name> | ||||
<t>The SCHC C/D <bcp14>MUST</bcp14> concatenate FPort and LoRaWAN payloa | ||||
d | ||||
to retrieve the SCHC Packet as per <xref target="lorawan-schc-payload" | ||||
format="default"/>.</t> | ||||
<t>RuleIDs matching FPortUp and FPortDown are reserved for SCHC fragment | ||||
ation.</t> | ||||
</section> | ||||
<section anchor="Frag" numbered="true" toc="default"> | ||||
<name>Fragmentation</name> | ||||
<t>The L2 Word Size used by LoRaWAN is 1 byte (8 bits). The SCHC | ||||
fragmentation over LoRaWAN uses the ACK-on-Error mode for uplink | ||||
fragmentation and ACK-Always mode for downlink fragmentation. A | ||||
LoRaWAN device cannot support simultaneous interleaved fragmented | ||||
datagrams in the same direction (uplink or downlink).</t> | ||||
<t>The fragmentation parameters are different for uplink- and | ||||
downlink-fragmented datagrams and are successively described in the | ||||
next sections.</t> | ||||
<section anchor="DTag" numbered="true" toc="default"> | ||||
<name>DTag</name> | ||||
<t>Example with:</t> | <t><xref target="RFC8724" sectionFormat="of" section="8.2.4" | |||
format="default"/> describes the possibility to interleave several | ||||
fragmented SCHC datagrams for the same RuleID. This is not used in | ||||
the SCHC-over-LoRaWAN profile. A device cannot interleave several | ||||
fragmented SCHC datagrams on the same FPort. This field is not used, | ||||
and its size is 0.</t> | ||||
<aside> <t>Note: The device can still have several parallel fragmented | ||||
datagrams with more than one SCHC gateway thanks to distinct sets of FPorts, | ||||
cf. <xref target="rule-id-management" format="default"/>.</t></aside> | ||||
</section> | ||||
<section anchor="uplink-fragmentation-from-device-to-schc-gateway" numbe | ||||
red="true" toc="default"> | ||||
<t><list style="symbols"> | <name>Uplink Fragmentation: From Device to SCHC Gateway</name> | |||
<t>DevEUI: 0x1122334455667788</t> | <t>In this case, the device is the fragment transmitter and the SCHC | |||
<t>appSKey: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB</t> | gateway is the fragment receiver. A single fragmentation rule is | |||
</list></t> | defined. The SCHC F/R <bcp14>MUST</bcp14> concatenate FPort and LoRaW | |||
AN | ||||
payload to retrieve the SCHC Packet, as per <xref | ||||
target="lorawan-schc-payload" format="default"/>.</t> | ||||
<figure title="Example of IID computation." anchor="Fig-iid-computation-example" | <dl> | |||
><artwork><![CDATA[ | ||||
1. key: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB | ||||
2. cmac: 0xBA59F4B196C6C3432D9383C145AD412A | ||||
3. IID: 0xBA59F4B196C6C343 | ||||
]]></artwork></figure> | ||||
<t>There is a small probability of IID collision in a LoRaWAN network. If this o | <dt>SCHC fragmentation reliability mode: | |||
ccurs, | </dt> | |||
the IID can be changed by rekeying the device at L2 level (ie: trigger a LoRaWAN | <dd><tt>ACK-on-Error</tt>. | |||
join). | </dd> | |||
The way the device is rekeyed is out of scope of this document and left to the | ||||
implementation.</t> | ||||
<t>Note: Implementation also using another IID source MUST ensure that the | <dt>SCHC header size: | |||
same IID is shared between the device and the SCHC gateway in the | </dt> | |||
compression and decompression of the IPv6 address of the device.</t> | <dd>2 bytes (the FPort byte + 1 additional byte). | |||
</dd> | ||||
</section> | <dt>RuleID: | |||
<section anchor="padding" title="Padding"> | </dt> | |||
<dd>8 bits stored in the LoRaWAN FPort (cf. <xref target="rule-id-management" | ||||
format="default"/>). | ||||
</dd> | ||||
<t>All padding bits MUST be 0.</t> | <dt>DTag: | |||
</dt> | ||||
<dd>Size T = 0 bits, not used (cf. <xref target="DTag" format="default"/>). | ||||
</dd> | ||||
</section> | <dt>Window index: | |||
<section anchor="Decomp" title="Decompression"> | </dt> | |||
<dd>4 windows are used, encoded on M = 2 bits. | ||||
</dd> | ||||
<t>SCHC C/D MUST concatenate FPort and LoRaWAN payload to retrieve the SCHC Pack | <dt>FCN: | |||
et | </dt> | |||
as per <xref target="lorawan-schc-payload"/>.</t> | <dd>The FCN field is encoded on N = 6 bits, so WINDOW_SIZE = 63 tiles | |||
are allowed in a window. | ||||
</dd> | ||||
<t>RuleIDs matching FPortUp and FPortDown are reserved for SCHC Fragmentation.</ | <dt>Last tile: | |||
t> | </dt> | |||
<dd><t>It can be carried in a Regular SCHC Fragment, alone in an All-1 SCHC | ||||
Fragment, or with any of these two methods. Implementations must ensure that:</t | ||||
> | ||||
<ul> | ||||
</section> | <li>The sender <bcp14>MUST</bcp14> ascertain that the receiver will not | |||
<section anchor="Frag" title="Fragmentation"> | receive the last tile through both a Regular SCHC Fragment and an All-1 | |||
SCHC Fragment during the same session. | ||||
</li> | ||||
<li>If the last tile is in an All-1 SCHC Message, the current L2 MTU | ||||
<bcp14>MUST</bcp14> be big enough to fit the All-1 header and the last | ||||
tile. | ||||
</li> | ||||
<t>The L2 Word Size used by LoRaWAN is 1 byte (8 bits). | </ul> | |||
The SCHC fragmentation over LoRaWAN uses the ACK-on-Error mode for uplink | </dd> | |||
fragmentation and Ack-Always mode for downlink fragmentation. A LoRaWAN | ||||
device cannot support simultaneous interleaved fragmented datagrams in | ||||
the same direction (uplink or downlink).</t> | ||||
<t>The fragmentation parameters are different for uplink and downlink | <dt>Penultimate tile: | |||
fragmented datagrams and are successively described in the next sections.</t> | </dt> | |||
<dd><bcp14>MUST</bcp14> be equal to the regular size. | ||||
</dd> | ||||
<section anchor="DTag" title="DTag"> | <dt>RCS: | |||
</dt> | ||||
<dd>Use the recommended calculation algorithm in <xref target="RFC8724" | ||||
sectionFormat="of" section="8.2.3"/>, Integrity Checking. | ||||
</dd> | ||||
<t><xref target="RFC8724"></xref> section 8.2.4 describes the possibility to int | <dt>Tile: | |||
erleave several | </dt> | |||
fragmented SCHC datagrams for the same RuleID. This is not used in SCHC over | <dd>Size is 10 bytes. | |||
LoRaWAN profile. A device cannot interleave several fragmented SCHC datagrams | </dd> | |||
on the same FPort. This field is not used and its size is 0.</t> | ||||
<t>Note: The device can still have several parallel fragmented datagrams with | <dt>Retransmission timer: | |||
more than one SCHC gateway thanks to distinct sets of FPorts, cf <xref target="r | </dt> | |||
ule-id-management"/>.</t> | <dd>Set by the implementation depending on the application | |||
requirements. The default <bcp14>RECOMMENDED</bcp14> duration of this | ||||
timer is 12 hours; this value is mainly driven by application requirements | ||||
and <bcp14>MAY</bcp14> be changed by the application. | ||||
</dd> | ||||
</section> | <dt>Inactivity timer: | |||
<section anchor="uplink-fragmentation-from-device-to-schc-gateway" title="Uplink | </dt> | |||
fragmentation: From device to SCHC gateway"> | <dd>The SCHC gateway implements an "inactivity timer". The default | |||
<bcp14>RECOMMENDED</bcp14> duration of this timer is 12 hours; this value | ||||
is mainly driven by application requirements and <bcp14>MAY</bcp14> be | ||||
changed by the application. | ||||
</dd> | ||||
<t>In this case, the device is the fragment transmitter, and the SCHC gateway | <dt>MAX_ACK_REQUESTS: | |||
the fragment receiver. A single fragmentation rule is defined. | </dt> | |||
SCHC F/R MUST concatenate FPort and LoRaWAN payload to retrieve the SCHC | <dd> 8. With this set of parameters, the SCHC Fragment Header is 16 bits, | |||
Packet, as per <xref target="lorawan-schc-payload"/>.</t> | including FPort; payload overhead will be 8 bits as FPort is already a | |||
part of LoRaWAN payload. MTU is: 4 windows * 63 tiles * 10 bytes per | ||||
tile = 2520 bytes. | ||||
</dd> | ||||
<t><list style="symbols"> | </dl> | |||
<t>SCHC fragmentation reliability mode: <spanx style="verb">ACK-on-Error</span | ||||
x>.</t> | ||||
<t>SCHC header size is two bytes (the FPort byte + 1 additional byte).</t> | ||||
<t>RuleID: 8 bits stored in LoRaWAN FPort. cf <xref target="rule-id-management | ||||
"/></t> | ||||
<t>DTag: Size T=0 bit, not used. cf <xref target="DTag"/></t> | ||||
<t>Window index: 4 windows are used, encoded on M = 2 bits</t> | ||||
<t>FCN: The FCN field is encoded on N = 6 bits, so WINDOW_SIZE = 63 tiles | ||||
are allowed in a window.</t> | ||||
<t>Last tile: it can be carried in a Regular SCHC Fragment, alone in an All-1 | ||||
SCHC | ||||
Fragment or with any of these two methods. Implementation must ensure that: | ||||
<list style="symbols"> | ||||
<t>The sender MUST ascertain that the receiver will not receive | ||||
the last tile through both a Regular SCHC Fragment and an All-1 SCHC | ||||
Fragment during the same session.</t> | ||||
<t>If the last tile is in All-1 SCHC message: current L2 MTU MUST be big e | ||||
nough to fit | ||||
the All-1 header and the last tile.</t> | ||||
</list></t> | ||||
<t>Penultimate tile MUST be equal to the regular size.</t> | ||||
<t>RCS: Use recommended calculation algorithm in <xref target="RFC8724"></xref | ||||
> (§8.2.3. Integrity Checking).</t> | ||||
<t>Tile: size is 10 bytes.</t> | ||||
<t>Retransmission timer: Set by the implementation depending on the applicatio | ||||
n | ||||
requirements. The default RECOMMENDED duration of this timer is 12 hours; | ||||
this value is mainly driven by application requirements and MAY be | ||||
changed by the application.</t> | ||||
<t>Inactivity timer: The SCHC gateway implements an “inactivity timer”. The | ||||
default RECOMMENDED duration of this timer is 12 hours; this value is mainly | ||||
driven by application requirements and MAY be changed by the application.</t> | ||||
<t>MAX_ACK_REQUESTS: 8. | ||||
With this set of parameters, the SCHC fragment header is 16 bits, | ||||
including FPort; payload overhead will be 8 bits as FPort is already a part of | ||||
LoRaWAN payload. MTU is: <spanx style="emph">4 windows * 63 tiles * 10 bytes per | ||||
tile = 2520 bytes</spanx></t> | ||||
</list></t> | ||||
<t>In addition to the per-rule context parameters specified in <xref target="RFC 8724"></xref>, | <t>In addition to the per-rule context parameters specified in <xref t arget="RFC8724" format="default"/>, | |||
for uplink rules, an additional context parameter is added: whether or | for uplink rules, an additional context parameter is added: whether or | |||
not to ack after each window.<vspace /> | not to ack after each window. | |||
For battery powered devices, it is RECOMMENDED to use the ACK mechanism at the | For battery powered devices, it is <bcp14>RECOMMENDED</bcp14> to use the ACK mec | |||
hanism at the | ||||
end of each window instead of waiting until the end of all windows:</t> | end of each window instead of waiting until the end of all windows:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>The SCHC receiver <bcp14>SHOULD</bcp14> send a SCHC ACK after ev | |||
<t>The SCHC receiver SHOULD send a SCHC ACK after every window even if there i | ery window even if there is no | |||
s no | missing tile.</li> | |||
missing tile.</t> | <li>The SCHC sender <bcp14>SHOULD</bcp14> wait for the SCHC ACK | |||
<t>The SCHC sender SHOULD wait for the SCHC ACK from the SCHC receiver before | from the SCHC receiver before sending tiles from the next | |||
sending | window. If the SCHC ACK is not received, it <bcp14>SHOULD</bcp14> | |||
tiles from the next window. If the SCHC ACK is not received, it SHOULD send a SC | send a SCHC ACK REQ up to MAX_ACK_REQUESTS times, as described | |||
HC | previously.</li> | |||
ACK REQ up to MAX_ACK_REQUESTS times, as described previously.</t> | </ul> | |||
</list></t> | <t>This will avoid useless uplinks if the device has lost network cove | |||
rage.</t> | ||||
<t>This will avoid useless uplinks if the device has lost network coverage.</t> | <t>For non-battery powered devices, the SCHC receiver | |||
<bcp14>MAY</bcp14> also choose to send a SCHC ACK only at the end | ||||
<t>For non-battery powered devices, the SCHC receiver MAY also choose to send a | of all windows. This will reduce downlink load on the LoRaWAN | |||
SCHC | network by reducing the number of downlinks.</t> | |||
ACK only at the end of all windows. This will reduce downlink load on the LoRaWA | <t>SCHC implementations <bcp14>MUST</bcp14> be compatible with both be | |||
N | haviors, and this selection is | |||
network, by reducing the number of downlinks.</t> | ||||
<t>SCHC implementations MUST be compatible with both behaviors, and this selecti | ||||
on is | ||||
part of the rule context.</t> | part of the rule context.</t> | |||
<section anchor="regular-fragments" numbered="true" toc="default"> | ||||
<section anchor="regular-fragments" title="Regular fragments"> | <name>Regular Fragments</name> | |||
<t><xref target="Fig-fragmentation-header-long-all0" format="default | ||||
<figure title="All fragments except the last one. SCHC header size is 16 bits, i | "/> | |||
ncluding LoRaWAN FPort." anchor="Fig-fragmentation-header-long-all0"><artwork><! | is an example of a regular fragment for all fragments except | |||
[CDATA[ | the last one. SCHC Header Size is 16 Bits, including the | |||
LoRaWAN FPort. | ||||
</t> | ||||
<figure anchor="Fig-fragmentation-header-long-all0"> | ||||
<name>All Fragments Except the Last One.</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ------------------------- + | + ------ + ------------------------- + | |||
| RuleID | W | FCN | Payload | | | RuleID | W | FCN | Payload | | |||
+ ------ + ------ + ------ + ------- + | + ------ + ------ + ------ + ------- + | |||
| 8 bits | 2 bits | 6 bits | | | | 8 bits | 2 bits | 6 bits | | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="last-fragment-all-1" numbered="true" toc="default"> | |||
<section anchor="last-fragment-all-1" title="Last fragment (All-1)"> | <name>Last Fragment (All-1)</name> | |||
<t>Following figures are examples of All-1 messages. <xref target="F | ||||
<figure title="All-1 SCHC Message: the last fragment without last tile." anchor= | ig-fragmentation-header-all1-no-tile" format="default"/> | |||
"Fig-fragmentation-header-all1-no-tile"><artwork><![CDATA[ | is without the last tile, <xref target="Fig-fragmentation-header-all | |||
1-last-tile" format="default"/> | ||||
is with the last tile. | ||||
</t> | ||||
<figure anchor="Fig-fragmentation-header-all1-no-tile"> | ||||
<name>All-1 SCHC Message without Last Tile</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ---------------------------- + | + ------ + ---------------------------- + | |||
| RuleID | W | FCN=All-1 | RCS | | | RuleID | W | FCN=All-1 | RCS | | |||
+ ------ + ------ + --------- + ------- + | + ------ + ------ + --------- + ------- + | |||
| 8 bits | 2 bits | 6 bits | 32 bits | | | 8 bits | 2 bits | 6 bits | 32 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
<figure anchor="Fig-fragmentation-header-all1-last-tile"> | ||||
<figure title="All-1 SCHC Message: the last fragment with last tile." anchor="Fi | <name>All-1 SCHC Message with Last Tile</name> | |||
g-fragmentation-header-all1-last-tile"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ---------------------------------------------------------- + | + ------ + ---------------------------------------------------------- + | |||
| RuleID | W | FCN=All-1 | RCS | Last tile | Opt. padding | | | RuleID | W | FCN=All-1 | RCS | Last tile | Opt. padding | | |||
+ ------ + ------ + --------- + ------- + ------------ + ------------ + | + ------ + ------ + --------- + ------- + ------------ + ------------ + | |||
| 8 bits | 2 bits | 6 bits | 32 bits | 1 to 80 bits | 0 to 7 bits | | | 8 bits | 2 bits | 6 bits | 32 bits | 1 to 80 bits | 0 to 7 bits | | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="schc-ack" numbered="true" toc="default"> | ||||
]]></artwork></figure> | <name>SCHC ACK</name> | |||
<figure anchor="Fig-frag-header-long-schc-ack-rcs-ok"> | ||||
</section> | <name>SCHC ACK Format - Correct RCS Check</name> | |||
<section anchor="schc-ack" title="SCHC ACK"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<figure title="SCHC ACK format, correct RCS check." anchor="Fig-frag-header-long | ||||
-schc-ack-rcs-ok"><artwork><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + --------------------------+ | + ------ + --------------------------+ | |||
| RuleID | W | C = 1 | padding | | | RuleID | W | C = 1 | padding | | |||
| | | | (b'00000) | | | | | | (b'00000) | | |||
+ ------ + ----- + ----- + --------- + | + ------ + ----- + ----- + --------- + | |||
| 8 bits | 2 bit | 1 bit | 5 bits | | | 8 bits | 2 bit | 1 bit | 5 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
<figure anchor="Fig-frag-header-long-schc-ack-rcs-fail"> | ||||
<figure title="SCHC ACK format, failed RCS check." anchor="Fig-frag-header-long- | <name>SCHC ACK Format - Incorrect RCS Check</name> | |||
schc-ack-rcs-fail"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + --------------------------------- + ---------------- + | + ------ + --------------------------------- + ---------------- + | |||
| RuleID | W | C = 0 | Compressed bitmap | Optional padding | | | RuleID | W | C = 0 | Compressed bitmap | Optional padding | | |||
| | | | (C = 0) | (b'0...0) | | | | | | (C = 0) | (b'0...0) | | |||
+ ------ + ----- + ----- + ----------------- + ---------------- + | + ------ + ----- + ----- + ----------------- + ---------------- + | |||
| 8 bits | 2 bit | 1 bit | 5 to 63 bits | 0, 6 or 7 bits | | | 8 bits | 2 bit | 1 bit | 5 to 63 bits | 0, 6, or 7 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
<aside><t>Note: Because of the bitmap compression mechanism and L2 byte alignmen | ||||
<t>Note: Because of the bitmap compression mechanism and L2 byte alignment, only | t, only | |||
the following discrete values are possible for the compressed bitmap size: 5, 13 | the following discrete values are possible for the compressed bitmap size: 5, 13 | |||
, 21, 29, 37, 45, 53, 61, 62 and 63. | , 21, 29, 37, 45, 53, 61, 62, and 63. | |||
Bitmaps of 63 bits will require 6 bits of padding.</t> | Bitmaps of 63 bits will require 6 bits of padding.</t></aside> | |||
</section> | ||||
</section> | <section anchor="receiver-abort" numbered="true" toc="default"> | |||
<section anchor="receiver-abort" title="Receiver-Abort"> | <name>Receiver-Abort</name> | |||
<figure anchor="Fig-fragmentation-receiver-abort"> | ||||
<figure title="Receiver-Abort format." anchor="Fig-fragmentation-receiver-abort" | <name>Receiver-Abort Format</name> | |||
><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + -------------------------------------------- + | + ------ + -------------------------------------------- + | |||
| RuleID | W = b'11 | C = 1 | b'11111 | 0xFF (all 1's) | | | RuleID | W = b'11 | C = 1 | b'11111 | 0xFF (all 1's) | | |||
+ ------ + -------- + ------+-------- + ----------------+ | + ------ + -------- + ------+-------- + ----------------+ | |||
| 8 bits | 2 bits | 1 bit | 5 bits | 8 bits | | | 8 bits | 2 bits | 1 bit | 5 bits | 8 bits | | |||
next L2 Word boundary ->| <-- L2 Word --> | | next L2 Word boundary ->| <-- L2 Word --> | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="schc-acknowledge-request" numbered="true" toc="defaul | |||
<section anchor="schc-acknowledge-request" title="SCHC acknowledge request"> | t"> | |||
<name>SCHC Acknowledge Request</name> | ||||
<figure title="SCHC ACK REQ format." anchor="Fig-fragmentation-schc-ack-req"><ar | <figure anchor="Fig-fragmentation-schc-ack-req"> | |||
twork><![CDATA[ | <name>SCHC ACK REQ Format</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+------- +------------------------- + | +------- +------------------------- + | |||
| RuleID | W | FCN = b'000000 | | | RuleID | W | FCN = b'000000 | | |||
+ ------ + ------ + --------------- + | + ------ + ------ + --------------- + | |||
| 8 bits | 2 bits | 6 bits | | | 8 bits | 2 bits | 6 bits | | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
</section> | ||||
<section anchor="downlink-fragmentation-from-schc-gateway-to-device" num | ||||
bered="true" toc="default"> | ||||
<name>Downlink Fragmentation: From SCHC Gateway to Device</name> | ||||
<t>In this case, the device is the fragmentation receiver and the | ||||
SCHC gateway is the fragmentation transmitter. The following fields ar | ||||
e | ||||
common to all devices. The SCHC F/R <bcp14>MUST</bcp14> concatenate | ||||
FPort and LoRaWAN payload to retrieve the SCHC Packet as described | ||||
in <xref target="lorawan-schc-payload" format="default"/>.</t> | ||||
]]></artwork></figure> | <dl> | |||
</section> | <dt>SCHC fragmentation reliability mode: | |||
</section> | </dt> | |||
<section anchor="downlink-fragmentation-from-schc-gateway-to-device" title="Down | <dd> | |||
link fragmentation: From SCHC gateway to device"> | <ul empty="true"> | |||
<li> | ||||
<dl> | ||||
<t>In this case, the device is the fragmentation receiver, and the SCHC gateway | <dt >Unicast downlinks: | |||
the | </dt> | |||
fragmentation transmitter. The following fields are common to all devices. | <dd>ACK-Always. | |||
SCHC F/R MUST concatenate FPort and LoRaWAN payload to retrieve the SCHC | </dd> | |||
Packet as described in <xref target="lorawan-schc-payload"/>.</t> | <dt>Multicast downlinks: | |||
</dt> | ||||
<t><list style="symbols"> | <dd>No-ACK; reliability has to be ensured by the upper layer. This feature is | |||
<t>SCHC fragmentation reliability mode: | <bcp14>OPTIONAL</bcp14> for the SCHC gateway and <bcp14>REQUIRED</bcp14> for the | |||
<list style="symbols"> | device. | |||
<t>Unicast downlinks: ACK-Always.</t> | </dd> | |||
<t>Multicast downlinks: No-ACK, reliability has to be ensured by the upper | ||||
layer. This feature is OPTIONAL and may not be implemented by SCHC gateway.</t> | ||||
</list></t> | ||||
<t>RuleID: 8 bits stored in LoRaWAN FPort. cf <xref target="rule-id-management | ||||
"/></t> | ||||
<t>DTag: Size T=0 bit, not used. cf <xref target="DTag"/></t> | ||||
<t>FCN: The FCN field is encoded on N=1 bit, so WINDOW_SIZE = 1 tile.</t> | ||||
<t>RCS: Use recommended calculation algorithm in <xref target="RFC8724"></xref | ||||
> (§8.2.3. Integrity Checking).</t> | ||||
<t>Inactivity timer: The default RECOMMENDED duration of this timer is 12 hour | ||||
s; | ||||
this value is mainly driven by application requirements and MAY be changed by | ||||
the application.</t> | ||||
</list></t> | ||||
<t>The following parameters apply to ACK-Always (Unicast) only:</t> | </dl> | |||
</li> | ||||
</ul> | ||||
<t><list style="symbols"> | </dd> | |||
<t>Retransmission timer: See <xref target="downlink-retransmission-timer"/>.< | ||||
/t> | ||||
<t>MAX_ACK_REQUESTS: 8.</t> | ||||
<t>Window index (unicast only): encoded on M=1 bit, as per <xref target="RFC87 | ||||
24"></xref>.</t> | ||||
</list></t> | ||||
<t>As only 1 tile is used, its size can change for each downlink, and will be | <dt>RuleID: | |||
the currently available MTU.</t> | </dt> | |||
<dd>8 bits stored in the LoRaWAN FPort (cf. <xref | ||||
target="rule-id-management" format="default"/>). | ||||
</dd> | ||||
<t>Class A devices can only receive during an RX slot, following the transmissio | <dt>DTag: | |||
n of an | </dt> | |||
uplink. Therefore the SCHC gateway cannot initiate communication (e.g., start a | <dd>Size T = 0 bit, not used (cf. <xref target="DTag" format="default"/>). | |||
new SCHC | </dd> | |||
session). In order to create a downlink opportunity it is RECOMMENDED for | ||||
Class A devices to send an uplink every 24 hours when no SCHC session is | ||||
started, this is application specific and can be disabled. The RECOMMENDED uplin | ||||
k | ||||
is a LoRaWAN empty frame as defined <xref target="lorawan-empty-frame"/>. | ||||
As this uplink is to open an RX window, any LoRaWAN uplink frame from the device | ||||
MAY reset this counter.</t> | ||||
<t><spanx style="emph">Note</spanx>: The Fpending bit included in LoRaWAN protoc | <dt>FCN: | |||
ol SHOULD NOT be used for | </dt> | |||
SCHC-over-LoRaWAN protocol. It might be set by the Network Gateway for other | <dd>The FCN field is encoded on N = 1 bit, so WINDOW_SIZE = 1 tile. | |||
purposes but not SCHC needs.</t> | </dd> | |||
<section anchor="regular-fragments-1" title="Regular fragments"> | <dt>RCS: | |||
</dt> | ||||
<dd>Use the recommended calculation algorithm in <xref target="RFC8724" sectionF | ||||
ormat="of" | ||||
format="default" section="8.2.3"/>, Integrity Checking. | ||||
</dd> | ||||
<figure title="All fragments but the last one. Header size 10 bits, including Lo | <dt>Inactivity timer: | |||
RaWAN FPort." anchor="Fig-fragmentation-downlink-header-all0"><artwork><![CDATA[ | </dt> | |||
<dd>The default <bcp14>RECOMMENDED</bcp14> duration of this timer is 12 hours; | ||||
this value is mainly driven by application requirements and <bcp14>MAY</bcp14> | ||||
be changed by the application. | ||||
</dd> | ||||
</dl> | ||||
<t>The following parameters apply to ACK-Always (Unicast) only:</t> | ||||
<dl> | ||||
<dt>Retransmission timer: | ||||
</dt> | ||||
<dd>See <xref target="downlink-retransmission-timer" format="default"/>. | ||||
</dd> | ||||
<dt>MAX_ACK_REQUESTS: | ||||
</dt> | ||||
<dd>8. | ||||
</dd> | ||||
<dt>Window index (unicast only): | ||||
</dt> | ||||
<dd>encoded on M = 1 bit, as per <xref target="RFC8724" format="default"/>. | ||||
</dd> | ||||
</dl> | ||||
<t>As only one tile is used, its size can change for each downlink and | ||||
will be the currently available MTU.</t> | ||||
<t>Class A devices can only receive during an RX slot, following the | ||||
transmission of an uplink. Therefore, the SCHC gateway cannot | ||||
initiate communication (e.g., start a new SCHC session). In order to | ||||
create a downlink opportunity, it is <bcp14>RECOMMENDED</bcp14> for | ||||
Class A devices to send an uplink every 24 hours when no SCHC | ||||
session is started; this is application specific and can be | ||||
disabled. The <bcp14>RECOMMENDED</bcp14> uplink is a LoRaWAN empty | ||||
frame as defined in <xref target="lorawan-empty-frame" | ||||
format="default"/>. As this uplink is sent only to open an RX window, | ||||
any | ||||
LoRaWAN uplink frame from the device <bcp14>MAY</bcp14> reset this | ||||
counter.</t> | ||||
<aside><t>Note: The FPending bit included in the LoRaWAN protocol <bcp14>SHOULD | ||||
NOT</bcp14> be used for the SCHC-over-LoRaWAN protocol. It might be set by the | ||||
Network Gateway for other purposes but not SCHC needs.</t></aside> | ||||
<section anchor="regular-fragments-1" numbered="true" toc="default"> | ||||
<name>Regular Fragments</name> | ||||
<t><xref target="Fig-fragmentation-downlink-header-all0" format="def | ||||
ault"/> | ||||
is an example of a regular fragment for all fragments except | ||||
the last one. SCHC Header Size is 10 Bits, including the | ||||
LoRaWAN FPort. | ||||
</t> | ||||
<figure anchor="Fig-fragmentation-downlink-header-all0"> | ||||
<name>All Fragments but the Last One.</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ------------------------------------ + | + ------ + ------------------------------------ + | |||
| RuleID | W | FCN = b'0 | Payload | | | RuleID | W | FCN = b'0 | Payload | | |||
+ ------ + ----- + --------- + ---------------- + | + ------ + ----- + --------- + ---------------- + | |||
| 8 bits | 1 bit | 1 bit | X bytes + 6 bits | | | 8 bits | 1 bit | 1 bit | X bytes + 6 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="last-fragment-all-1-1" numbered="true" toc="default"> | |||
<section anchor="last-fragment-all-1-1" title="Last fragment (All-1)"> | <name>Last Fragment (All-1)</name> | |||
<figure anchor="Fig-fragmentation-downlink-header-all1"> | ||||
<figure title="All-1 SCHC Message: the last fragment." anchor="Fig-fragmentation | <name>All-1 SCHC Message: The Last Fragment</name> | |||
-downlink-header-all1"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + --------------------------- + ------------------------- + | + ------ + --------------------------- + ------------------------- + | |||
| RuleID | W | FCN = b'1 | RCS | Payload | Opt padding | | | RuleID | W | FCN = b'1 | RCS | Payload | Opt padding | | |||
+ ------ + ----- + --------- + ------- + ----------- + ----------- + | + ------ + ----- + --------- + ------- + ----------- + ----------- + | |||
| 8 bits | 1 bit | 1 bit | 32 bits | 6 to X bits | 0 to 7 bits | | | 8 bits | 1 bit | 1 bit | 32 bits | 6 to X bits | 0 to 7 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="schc-ack-1" numbered="true" toc="default"> | |||
<section anchor="schc-ack-1" title="SCHC ACK"> | <name>SCHC ACK</name> | |||
<figure anchor="Fig-frag-downlink-header-schc-ack-rcs-ok"> | ||||
<figure title="SCHC ACK format, RCS is correct." anchor="Fig-frag-downlink-heade | <name>SCHC ACK Format - Correct RCS Check</name> | |||
r-schc-ack-rcs-ok"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ---------------------------------- + | + ------ + ---------------------------------- + | |||
| RuleID | W | C = b'1 | Padding b'000000 | | | RuleID | W | C = b'1 | Padding b'000000 | | |||
+ ------ + ----- + ------- + ---------------- + | + ------ + ----- + ------- + ---------------- + | |||
| 8 bits | 1 bit | 1 bit | 6 bits | | | 8 bits | 1 bit | 1 bit | 6 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
<figure anchor="Fig-frag-downlink-header-schc-ack-rcs-fail"> | ||||
<figure title="SCHC ACK format, RCS is incorrect." anchor="Fig-frag-downlink-hea | <name>SCHC ACK Format - Incorrect RCS Check</name> | |||
der-schc-ack-rcs-fail"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ------------------------------------------------- + | + ------ + ------------------------------------------------- + | |||
| RuleID | W | C = b'0 | Bitmap = b'1 | Padding b'000000 | | | RuleID | W | C = b'0 | Bitmap = b'1 | Padding b'000000 | | |||
+ ------ + ----- + ------- + ------------ + ---------------- + | + ------ + ----- + ------- + ------------ + ---------------- + | |||
| 8 bits | 1 bit | 1 bit | 1 bit | 5 bits | | | 8 bits | 1 bit | 1 bit | 1 bit | 5 bits | | |||
]]></artwork> | ||||
]]></artwork></figure> | </figure> | |||
</section> | ||||
</section> | <section anchor="receiver-abort-1" numbered="true" toc="default"> | |||
<section anchor="receiver-abort-1" title="Receiver-Abort"> | <name>Receiver-Abort</name> | |||
<t><xref target="Fig-fragmentation-downlink-header-abort" format="d | ||||
<figure title="Receiver-Abort packet (following an All-1 SCHC Fragment with inco | efault"/> | |||
rrect RCS)." anchor="Fig-fragmentation-downlink-header-abort"><artwork><![CDATA[ | is an example of a Receiver-Abort packet, following an All-1 | |||
SCHC Fragment with incorrect RCS. | ||||
</t> | ||||
<figure anchor="Fig-fragmentation-downlink-header-abort"> | ||||
<name>Receiver-Abort Packet</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| FPort | LoRaWAN payload | | | FPort | LoRaWAN payload | | |||
+ ------ + ---------------------------------------------- + | + ------ + ---------------------------------------------- + | |||
| RuleID | W = b'1 | C = b'1 | b'111111 | 0xFF (all 1's) | | | RuleID | W = b'1 | C = b'1 | b'111111 | 0xFF (all 1's) | | |||
+ ------ + ------- + ------- + -------- + --------------- + | + ------ + ------- + ------- + -------- + --------------- + | |||
| 8 bits | 1 bit | 1 bits | 6 bits | 8 bits | | | 8 bits | 1 bit | 1 bits | 6 bits | 8 bits | | |||
next L2 Word boundary ->| <-- L2 Word --> | | next L2 Word boundary ->| <-- L2 Word --> | | |||
]]></artwork> | ||||
</figure> | ||||
</section> | ||||
<section anchor="downlink-retransmission-timer" numbered="true" toc="d | ||||
efault"> | ||||
<name>Downlink Retransmission Timer</name> | ||||
]]></artwork></figure> | <t>Class A, Class B, and Class C devices do not manage | |||
retransmissions and timers the same way.</t> | ||||
</section> | ||||
<section anchor="downlink-retransmission-timer" title="Downlink retransmission t | ||||
imer"> | ||||
<t>Class A and Class B or Class C devices do not manage retransmissions and time | ||||
rs | ||||
the same way.</t> | ||||
<section anchor="class-a-devices" title="Class A devices"> | ||||
<t>Class A devices can only receive in an RX slot following the transmission of | ||||
an | ||||
uplink.</t> | ||||
<t>The SCHC gateway implements an inactivity timer with a RECOMMENDED duration | ||||
of 36 hours. For devices with very low transmission rates (example 1 packet a | ||||
day in normal operation), that duration may be extended: it is application | ||||
specific.</t> | ||||
<t>RETRANSMISSION_TIMER is application specific and its RECOMMENDED value is | ||||
INACTIVITY_TIMER/(MAX_ACK_REQUESTS + 1).</t> | ||||
<t><spanx style="strong">SCHC All-0 (FCN=0)</spanx></t> | ||||
<t>All fragments but the last have an FCN=0 (because window size is 1). Followi | ||||
ng | ||||
an All-0 SCHC Fragment, the device MUST transmit the SCHC ACK message. It MUST t | ||||
ransmit up to | ||||
MAX_ACK_REQUESTS SCHC ACK messages before aborting. In order to progress the | ||||
fragmented datagram, the SCHC layer should immediately queue for transmission | ||||
those SCHC ACK if no SCHC downlink have been received during RX1 and RX2 window. | ||||
LoRaWAN layer will respect the applicable local spectrum regulation.</t> | ||||
<t><spanx style="emph">Note</spanx>: The ACK bitmap is 1 bit long and is always | ||||
1.</t> | ||||
<t><spanx style="strong">SCHC All-1 (FCN=1)</spanx></t> | ||||
<t>SCHC All-1 is the last fragment of a datagram, the corresponding SCHC ACK | ||||
message might be lost; therefore the SCHC gateway MUST request a retransmission | ||||
of this ACK when the retransmission timer expires. To open a downlink | ||||
opportunity the device MUST transmit an uplink every | ||||
RETRANSMISSION_TIMER/(MAX_ACK_REQUESTS * SCHC_ACK_REQ_DN_OPPORTUNITY). | ||||
The format of this uplink is application specific. It is RECOMMENDED for a | ||||
device to send an empty frame (see <xref target="lorawan-empty-frame"/>) but it | ||||
is application | ||||
specific and will be used by the NGW to transmit a potential SCHC ACK REQ.<vspac | ||||
e /> | ||||
SCHC_ACK_REQ_DN_OPPORTUNITY is application specific and its recommended value | ||||
is 2. It MUST be greater than 1. This allows to open a downlink opportunity to | ||||
any downlink with higher priority than the SCHC ACK REQ message.</t> | ||||
<t><spanx style="emph">Note</spanx>: The device MUST keep this SCHC ACK message | ||||
in memory until it receives | ||||
a downlink SCHC Fragmentation Message (with FPort == FPortDown) that is not a SC | ||||
HC ACK REQ: it indicates that | ||||
the SCHC gateway has received the SCHC ACK message.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="class-b-or-class-c-devices" title="Class B or Class C devices"> | ||||
<t>Class B devices can receive in scheduled RX slots or in RX slots following th | ||||
e | ||||
transmission of an uplink. Class C devices are almost in constant reception.</t> | ||||
<t>RECOMMENDED retransmission timer value:</t> | ||||
<t><list style="symbols"> | ||||
<t>Class B: 3 times the ping slot periodicity.</t> | ||||
<t>Class C: 30 seconds.</t> | ||||
</list></t> | ||||
<t>The RECOMMENDED inactivity timer value is 12 hours for both Class B and Class | ||||
C devices.</t> | ||||
</section> | ||||
</section> | ||||
</section> | ||||
<section anchor="schc-fragment-format" title="SCHC Fragment Format"> | ||||
<section anchor="all-0-schc-fragment" title="All-0 SCHC fragment"> | ||||
<t><spanx style="strong">Uplink fragmentation (Ack-On-Error)</spanx>:</t> | ||||
<t>All-0 is distinguishable from a SCHC ACK REQ as <xref target="RFC8724"></xref | <section anchor="class-a-devices" numbered="true" toc="default"> | |||
> states <spanx style="emph">This condition | <name>Class A Devices</name> | |||
is also met if the SCHC Fragment Header is a multiple of L2 Words</spanx>; this | <t>Class A devices can only receive in an RX slot following the | |||
condition met: SCHC header is 2 bytes.</t> | transmission of an uplink.</t> | |||
<t>The SCHC gateway implements an inactivity timer with a | ||||
<bcp14>RECOMMENDED</bcp14> duration of 36 hours. For devices | ||||
with very low transmission rates (for example, 1 packet a day in | ||||
normal operation), that duration may be extended; it is | ||||
application specific.</t> | ||||
<t>RETRANSMISSION_TIMER is application specific and its | ||||
<bcp14>RECOMMENDED</bcp14> value is | ||||
INACTIVITY_TIMER/(MAX_ACK_REQUESTS + 1).</t> | ||||
<t><strong>SCHC All-0 (FCN = 0)</strong></t> | ||||
<t>All fragments but the last have an FCN = 0 (because the window | ||||
size | ||||
is 1). Following an All-0 SCHC Fragment, the device | ||||
<bcp14>MUST</bcp14> transmit the SCHC ACK message. It | ||||
<bcp14>MUST</bcp14> transmit up to MAX_ACK_REQUESTS SCHC ACK | ||||
messages before aborting. In order to progress the fragmented | ||||
datagram, the SCHC layer should immediately queue for | ||||
transmission those SCHC ACK messages if no SCHC downlink has been | ||||
received during the RX1 and RX2 windows. The LoRaWAN layer will r | ||||
espect | ||||
the applicable local spectrum regulation.</t> | ||||
<t><spanx style="strong">Downlink fragmentation (Ack-always)</spanx>:</t> | <aside> <t>Note: The ACK bitmap is 1 bit long and is always 1.</t>< | |||
/aside> | ||||
<t><strong>SCHC All-1 (FCN = 1)</strong></t> | ||||
<t>As per <xref target="RFC8724"></xref> the SCHC All-1 MUST contain the last ti | <t>SCHC All-1 is the last fragment of a datagram, and the | |||
le, implementation must | corresponding SCHC ACK message might be lost; therefore, the SCHC | |||
ensure that SCHC All-0 message Payload will be at least the size of an L2 Word.< | gateway <bcp14>MUST</bcp14> request a retransmission of this ACK | |||
/t> | when the retransmission timer expires. To open a downlink | |||
opportunity, the device <bcp14>MUST</bcp14> transmit an uplink | ||||
every interval of RETRANSMISSION_TIMER/(MAX_ACK_REQUESTS * | ||||
SCHC_ACK_REQ_DN_OPPORTUNITY). The format of this uplink is | ||||
application specific. It is <bcp14>RECOMMENDED</bcp14> for a | ||||
device to send an empty frame (see <xref | ||||
target="lorawan-empty-frame" format="default"/>), but it is | ||||
application specific and will be used by the NGW to transmit a | ||||
potential SCHC ACK REQ. SCHC_ACK_REQ_DN_OPPORTUNITY is | ||||
application specific and its recommended value is 2. It | ||||
<bcp14>MUST</bcp14> be greater than 1. This allows the opening of | ||||
a | ||||
downlink opportunity to any downlink with higher priority than | ||||
the SCHC ACK REQ message.</t> | ||||
<aside> <t>Note: The device <bcp14>MUST</bcp14> keep this SCHC | ||||
ACK message in memory until it receives a downlink SCHC | ||||
Fragmentation Message (with FPort == FPortDown) that is not a | ||||
SCHC ACK REQ; this indicates that the SCHC gateway has received | ||||
the SCHC ACK message.</t></aside> | ||||
</section> | ||||
</section> | ||||
<section anchor="class-b-or-class-c-devices" numbered="true" toc="defa | ||||
ult"> | ||||
<name>Class B or Class C Devices</name> | ||||
<t>Class B devices can receive in scheduled RX slots or in RX | ||||
slots following the transmission of an uplink. Class C devices are | ||||
almost in constant reception.</t> | ||||
<t><bcp14>RECOMMENDED</bcp14> retransmission timer values are:</t> | ||||
</section> | <dl> | |||
<section anchor="all-1-schc-fragment" title="All-1 SCHC fragment"> | ||||
<t>All-1 is distinguishable from a SCHC Sender-Abort as <xref target="RFC8724">< | <dt>Class B: | |||
/xref> states <spanx style="emph">This | </dt> | |||
condition is met if the RCS is present and is at least the size of an L2 Word</s | <dd>3 times the ping slot periodicity. | |||
panx>; | </dd> | |||
this condition met: RCS is 4 bytes.</t> | ||||
</section> | <dt>Class C: | |||
<section anchor="delay-after-each-lorawan-frame-to-respect-local-regulation" tit | </dt> | |||
le="Delay after each LoRaWAN frame to respect local regulation"> | <dd>30 seconds. | |||
</dd> | ||||
<t>This profile does not define a delay to be added after each LoRaWAN frame, lo | </dl> | |||
cal | ||||
regulation compliance is expected to be enforced by LoRaWAN stack.</t> | ||||
</section> | <t>The <bcp14>RECOMMENDED</bcp14> inactivity timer value is 12 | |||
</section> | hours for both Class B and Class C devices.</t> | |||
</section> | </section> | |||
<section anchor="security-considerations" title="Security Considerations"> | </section> | |||
</section> | ||||
<section anchor="schc-fragment-format" numbered="true" toc="default"> | ||||
<name>SCHC Fragment Format</name> | ||||
<section anchor="all-0-schc-fragment" numbered="true" toc="default"> | ||||
<name>All-0 SCHC Fragment</name> | ||||
<t><strong>Uplink Fragmentation (Ack-on-Error)</strong>:</t> | ||||
<t>All-0 is distinguishable from a SCHC ACK REQ, as <xref | ||||
target="RFC8724" format="default"/> states "This condition is also | ||||
met if the SCHC Fragment Header is a multiple of L2 Words", the | ||||
following condition being met: SCHC header is 2 bytes.</t> | ||||
<t><strong>Downlink fragmentation (ACK-Always)</strong>:</t> | ||||
<t>As per <xref target="RFC8724" format="default"/>, SCHC All-1 | ||||
<bcp14>MUST</bcp14> contain the last tile, and implementations | ||||
<bcp14>MUST</bcp14> ensure that SCHC All-0 message Payload will be | ||||
at least the size of an L2 Word.</t> | ||||
</section> | ||||
<section anchor="all-1-schc-fragment" numbered="true" toc="default"> | ||||
<name>All-1 SCHC Fragment</name> | ||||
<t>All-1 is distinguishable from a SCHC Sender-Abort, as <xref | ||||
target="RFC8724" format="default"/> states "This condition is met | ||||
if the RCS is present and is at least the size of an L2 Word", | ||||
the following condition being met: RCS is 4 bytes.</t> | ||||
</section> | ||||
<section anchor="delay-after-each-lorawan-frame-to-respect-local-regulat | ||||
ion" numbered="true" toc="default"> | ||||
<name>Delay after Each LoRaWAN Frame to Respect Local Regulation</name | ||||
> | ||||
<t>This profile does not define a delay to be added after each | ||||
LoRaWAN frame; local regulation compliance is expected to be | ||||
enforced by the LoRaWAN stack.</t> | ||||
</section> | ||||
<t>This document is only providing parameters that are expected to be best | </section> | |||
suited for LoRaWAN networks for <xref target="RFC8724"></xref>. IID | </section> | |||
security is discussed in <xref target="IID"/>. As such, this document does not c | <section anchor="security-considerations" numbered="true" toc="default"> | |||
ontribute to | <name>Security Considerations</name> | |||
<t>This document is only providing parameters that are expected to be best | ||||
suited for LoRaWAN networks for <xref target="RFC8724" format="default"/>. IID | ||||
security is discussed in <xref target="IID" format="default"/>. As such, this do | ||||
cument does not contribute to | ||||
any new security issues beyond those already identified in | any new security issues beyond those already identified in | |||
<xref target="RFC8724"></xref>. | <xref target="RFC8724" format="default"/>. | |||
Moreover, SCHC data (LoRaWAN payload) are protected at the LoRaWAN level by an A ES-128 | Moreover, SCHC data (LoRaWAN payload) are protected at the LoRaWAN level by an A ES-128 | |||
encryption with a session key shared by the device and the SCHC gateway. These s ession keys are renewed at each | encryption with a session key shared by the device and the SCHC gateway. These s ession keys are renewed at each | |||
LoRaWAN session (ie: each join or rejoin to the LoRaWAN network)</t> | LoRaWAN session (i.e., each join or rejoin to the LoRaWAN network).</t> | |||
</section> | ||||
</section> | <section anchor="iana-considerations" numbered="true" toc="default"> | |||
<section anchor="iana-considerations" title="IANA Considerations"> | <name>IANA Considerations</name> | |||
<t>This document has no IANA actions.</t> | ||||
<t>This document has no IANA actions.</t> | </section> | |||
</section> | ||||
<section numbered="false" anchor="acknowledgements" title="Acknowledgements"> | ||||
<t>Thanks to all those listed in the Contributors section for the excellent text | ||||
, | ||||
insightful discussions, reviews and suggestions, and also to (in | ||||
alphabetical order) Dominique Barthel, Arunprabhu Kandasamy, Rodrigo Muñoz, | ||||
Alexander Pelov, Pascal Thubert, Laurent Toutain for useful design | ||||
considerations, reviews and comments.</t> | ||||
</section> | ||||
<section numbered="false" anchor="contributors" title="Contributors"> | ||||
<t>Contributors ordered by family name.</t> | ||||
<t>Vincent Audebert<vspace /> | ||||
EDF R&D<vspace /> | ||||
Email: vincent.audebert@edf.fr</t> | ||||
<t>Julien Catalano<vspace /> | ||||
Kerlink<vspace /> | ||||
Email: j.catalano@kerlink.fr</t> | ||||
<t>Michael Coracin<vspace /> | ||||
Semtech<vspace /> | ||||
Email: mcoracin@semtech.com</t> | ||||
<t>Marc Le Gourrierec<vspace /> | ||||
Sagemcom<vspace /> | ||||
Email: marc.legourrierec@sagemcom.com</t> | ||||
<t>Nicolas Sornin<vspace /> | ||||
Semtech<vspace /> | ||||
Email: nsornin@semtech.com</t> | ||||
<t>Alper Yegin<vspace /> | ||||
Actility<vspace /> | ||||
Email: alper.yegin@actility.com</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | ||||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4291.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4493.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8724.xml"/> | ||||
<references title='Normative References'> | <reference anchor="LORAWAN-SPEC" target="https://lora-alliance.org/resou | |||
rce_hub/lorawan-104-specification-package/"> | ||||
<reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> | <front> | |||
<front> | <title>LoRaWAN 1.0.4 Specification Package</title> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</title> | <author> | |||
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ | <organization>LoRa Alliance</organization> | |||
author> | </author> | |||
<date year='1997' month='March' /> | <date/> | |||
<abstract><t>In many standards track documents several words are used to signify | </front> | |||
the requirements in the specification. These words are often capitalized. This | </reference> | |||
document defines these words as they should be interpreted in IETF documents. | </references> | |||
This document specifies an Internet Best Current Practices for the Internet Comm | <references> | |||
unity, and requests discussion and suggestions for improvements.</t></abstract> | <name>Informative References</name> | |||
</front> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='BCP' value='14'/> | FC.8064.xml"/> | |||
<seriesInfo name='RFC' value='2119'/> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<seriesInfo name='DOI' value='10.17487/RFC2119'/> | FC.8065.xml"/> | |||
</reference> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.8376.xml"/> | ||||
<reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
or> | ||||
<date year='2017' month='May' /> | ||||
<abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
tract> | ||||
</front> | ||||
<seriesInfo name='BCP' value='14'/> | ||||
<seriesInfo name='RFC' value='8174'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
</reference> | ||||
<reference anchor="RFC4291" target='https://www.rfc-editor.org/info/rfc4291'> | ||||
<front> | ||||
<title>IP Version 6 Addressing Architecture</title> | ||||
<author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></au | ||||
thor> | ||||
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></ | ||||
author> | ||||
<date year='2006' month='February' /> | ||||
<abstract><t>This specification defines the addressing architecture of the IP Ve | ||||
rsion 6 (IPv6) protocol. The document includes the IPv6 addressing model, text | ||||
representations of IPv6 addresses, definition of IPv6 unicast addresses, anycast | ||||
addresses, and multicast addresses, and an IPv6 node's required addresses.</t>< | ||||
t>This document obsoletes RFC 3513, "IP Version 6 Addressing Architecture&q | ||||
uot;. [STANDARDS-TRACK]</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4291'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4291'/> | ||||
</reference> | ||||
<reference anchor="RFC4493" target='https://www.rfc-editor.org/info/rfc4493'> | ||||
<front> | ||||
<title>The AES-CMAC Algorithm</title> | ||||
<author initials='JH.' surname='Song' fullname='JH. Song'><organization /></auth | ||||
or> | ||||
<author initials='R.' surname='Poovendran' fullname='R. Poovendran'><organizatio | ||||
n /></author> | ||||
<author initials='J.' surname='Lee' fullname='J. Lee'><organization /></author> | ||||
<author initials='T.' surname='Iwata' fullname='T. Iwata'><organization /></auth | ||||
or> | ||||
<date year='2006' month='June' /> | ||||
<abstract><t>The National Institute of Standards and Technology (NIST) has recen | ||||
tly specified the Cipher-based Message Authentication Code (CMAC), which is equi | ||||
valent to the One-Key CBC MAC1 (OMAC1) submitted by Iwata and Kurosawa. This me | ||||
mo specifies an authentication algorithm based on CMAC with the 128-bit Advanced | ||||
Encryption Standard (AES). This new authentication algorithm is named AES-CMAC. | ||||
The purpose of this document is to make the AES-CMAC algorithm conveniently ava | ||||
ilable to the Internet Community. This memo provides information for the Intern | ||||
et community.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='4493'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC4493'/> | ||||
</reference> | ||||
<reference anchor="RFC8724" target='https://www.rfc-editor.org/info/rfc8724'> | ||||
<front> | ||||
<title>SCHC: Generic Framework for Static Context Header Compression and Fragmen | ||||
tation</title> | ||||
<author initials='A.' surname='Minaburo' fullname='A. Minaburo'><organization /> | ||||
</author> | ||||
<author initials='L.' surname='Toutain' fullname='L. Toutain'><organization /></ | ||||
author> | ||||
<author initials='C.' surname='Gomez' fullname='C. Gomez'><organization /></auth | ||||
or> | ||||
<author initials='D.' surname='Barthel' fullname='D. Barthel'><organization /></ | ||||
author> | ||||
<author initials='JC.' surname='Zúñiga' fullname='JC. Zúñiga'><organization /></ | ||||
author> | ||||
<date year='2020' month='April' /> | ||||
<abstract><t>This document defines the Static Context Header Compression and fra | ||||
gmentation (SCHC) framework, which provides both a header compression mechanism | ||||
and an optional fragmentation mechanism. SCHC has been designed with Low-Power W | ||||
ide Area Networks (LPWANs) in mind.</t><t>SCHC compression is based on a common | ||||
static context stored both in the LPWAN device and in the network infrastructure | ||||
side. This document defines a generic header compression mechanism and its appl | ||||
ication to compress IPv6/UDP headers.</t><t>This document also specifies an opti | ||||
onal fragmentation and reassembly mechanism. It can be used to support the IPv6 | ||||
MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 da | ||||
tagrams that, after SCHC compression or when such compression was not possible, | ||||
still exceed the Layer 2 maximum payload size.</t><t>The SCHC header compression | ||||
and fragmentation mechanisms are independent of the specific LPWAN technology o | ||||
ver which they are used. This document defines generic functionalities and offer | ||||
s flexibility with regard to parameter settings and mechanism choices. This docu | ||||
ment standardizes the exchange over the LPWAN between two SCHC entities. Setting | ||||
s and choices specific to a technology or a product are expected to be grouped i | ||||
nto profiles, which are specified in other documents. Data models for the contex | ||||
t and profiles are out of scope.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8724'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8724'/> | ||||
</reference> | ||||
<reference anchor="lora-alliance-spec" target="https://lora-alliance.org/resourc | ||||
e_hub/lorawan-104-specification-package/"> | ||||
<front> | ||||
<title>LoRaWAN Specification Version V1.0.4</title> | ||||
<author initials="L." surname="Alliance" fullname="LoRa Alliance"> | ||||
<organization></organization> | ||||
</author> | ||||
<date /> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<references title='Informative References'> | ||||
<reference anchor="RFC8064" target='https://www.rfc-editor.org/info/rfc8064'> | ||||
<front> | ||||
<title>Recommendation on Stable IPv6 Interface Identifiers</title> | ||||
<author initials='F.' surname='Gont' fullname='F. Gont'><organization /></author | ||||
> | ||||
<author initials='A.' surname='Cooper' fullname='A. Cooper'><organization /></au | ||||
thor> | ||||
<author initials='D.' surname='Thaler' fullname='D. Thaler'><organization /></au | ||||
thor> | ||||
<author initials='W.' surname='Liu' fullname='W. Liu'><organization /></author> | ||||
<date year='2017' month='February' /> | ||||
<abstract><t>This document changes the recommended default Interface Identifier | ||||
(IID) generation scheme for cases where Stateless Address Autoconfiguration (SLA | ||||
AC) is used to generate a stable IPv6 address. It recommends using the mechanism | ||||
specified in RFC 7217 in such cases, and recommends against embedding stable li | ||||
nk-layer addresses in IPv6 IIDs. It formally updates RFC 2464, RFC 2467, RFC 24 | ||||
70, RFC 2491, RFC 2492, RFC 2497, RFC 2590, RFC 3146, RFC 3572, RFC 4291, RFC 43 | ||||
38, RFC 4391, RFC 5072, and RFC 5121. This document does not change any existin | ||||
g recommendations concerning the use of temporary addresses as specified in RFC | ||||
4941.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8064'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8064'/> | ||||
</reference> | ||||
<reference anchor="RFC8065" target='https://www.rfc-editor.org/info/rfc8065'> | ||||
<front> | ||||
<title>Privacy Considerations for IPv6 Adaptation-Layer Mechanisms</title> | ||||
<author initials='D.' surname='Thaler' fullname='D. Thaler'><organization /></au | ||||
thor> | ||||
<date year='2017' month='February' /> | ||||
<abstract><t>This document discusses how a number of privacy threats apply to te | ||||
chnologies designed for IPv6 over various link-layer protocols, and it provides | ||||
advice to protocol designers on how to address such threats in adaptation-layer | ||||
specifications for IPv6 over such links.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8065'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8065'/> | ||||
</reference> | ||||
<reference anchor="RFC8376" target='https://www.rfc-editor.org/info/rfc8376'> | <reference anchor="LORAWAN-REMOTE-MULTICAST-SET" target="https://lora-al | |||
<front> | liance.org/resource_hub/lorawan-remote-multicast-setup-specification-v1-0-0/"> | |||
<title>Low-Power Wide Area Network (LPWAN) Overview</title> | <front> | |||
<author initials='S.' surname='Farrell' fullname='S. Farrell' role='editor'><org | <title>LoRaWAN Remote Multicast Setup Specification v1.0.0</title> | |||
anization /></author> | <author> | |||
<date year='2018' month='May' /> | <organization>LoRa Alliance</organization> | |||
<abstract><t>Low-Power Wide Area Networks (LPWANs) are wireless technologies wit | </author> | |||
h characteristics such as large coverage areas, low bandwidth, possibly very sma | <date/> | |||
ll packet and application-layer data sizes, and long battery life operation. Th | </front> | |||
is memo is an informational overview of the set of LPWAN technologies being cons | </reference> | |||
idered in the IETF and of the gaps that exist between the needs of those technol | ||||
ogies and the goal of running IP in LPWANs.</t></abstract> | ||||
</front> | ||||
<seriesInfo name='RFC' value='8376'/> | ||||
<seriesInfo name='DOI' value='10.17487/RFC8376'/> | ||||
</reference> | ||||
<reference anchor="lora-alliance-remote-multicast-set" target="https://lora-alli | </references> | |||
ance.org/sites/default/files/2018-09/remote_multicast_setup_v1.0.0.pdf"> | ||||
<front> | ||||
<title>LoRaWAN Remote Multicast Setup Specification Version 1.0.0</title> | ||||
<author initials="L." surname="Alliance" fullname="LoRa Alliance"> | ||||
<organization></organization> | ||||
</author> | ||||
<date /> | ||||
</front> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="examples" numbered="true" toc="default"> | ||||
<name>Examples</name> | ||||
<t>In the following examples, "applicative data" refers to the IPv6 payloa | ||||
d | ||||
sent by the application to the SCHC layer.</t> | ||||
<section anchor="uplink-compression-example-no-fragmentation" numbered="tr | ||||
ue" toc="default"> | ||||
<name>Uplink - Compression Example - No Fragmentation</name> | ||||
<t>This example represents an applicative data going through SCHC over | ||||
LoRaWAN; no fragmentation required.</t> | ||||
<t>An applicative data of 78 bytes is passed to the SCHC compression | ||||
layer. Rule 1 is used by the SCHC C/D layer, allowing to compress it | ||||
to 40 bytes and 5 bits: 1 byte RuleID, 21 bits residue + 37 bytes | ||||
payload.</t> | ||||
<section anchor="examples" title="Examples"> | <figure anchor="Fig-example-uplink-no-fragmentation-payload-schc-message | |||
"> | ||||
<t>In following examples “applicative data” refers to the IPv6 payload sent by t | <name>Uplink Example: SCHC Message</name> | |||
he | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
application to the SCHC layer.</t> | ||||
<section anchor="uplink-compression-example-no-fragmentation" title="Uplink - Co | ||||
mpression example - No fragmentation"> | ||||
<t>This example represents an applicative data going through SCHC over LoRaWAN, | ||||
no fragmentation required</t> | ||||
<t>An applicative data of 78 bytes is passed to SCHC compression layer. Rule 1 | ||||
is used by SCHC C/D layer, allowing to compress it to 40 bytes and 5 bits: 1 byt | ||||
e | ||||
RuleID, 21 bits residue + 37 bytes payload.</t> | ||||
<figure title="Uplink example: SCHC Message" anchor="Fig-example-uplink-no-fragm | ||||
entation-payload-schc-message"><artwork><![CDATA[ | ||||
| RuleID | Compression residue | Payload | Padding=b'000 | | | RuleID | Compression residue | Payload | Padding=b'000 | | |||
+ ------ + ------------------- + --------- + ------------- + | + ------ + ------------------- + --------- + ------------- + | |||
| 1 | 21 bits | 37 bytes | 3 bits | | | 1 | 21 bits | 37 bytes | 3 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The current LoRaWAN MTU is 51 bytes, although 2 bytes FOpts are used by | <t>The current LoRaWAN MTU is 51 bytes, although 2-byte FOpts are | |||
LoRaWAN protocol: 49 bytes are available for SCHC payload; no need for | used by the LoRaWAN protocol: 49 bytes are available for SCHC payload; n | |||
fragmentation. The payload will be transmitted through FPort = 1.</t> | o | |||
need for fragmentation. The payload will be transmitted through FPort | ||||
= 1.</t> | ||||
<figure title="Uplink example: LoRaWAN packet" anchor="Fig-example-uplink-no-fra | <figure anchor="Fig-example-uplink-no-fragmentation-compression"> | |||
gmentation-compression"><artwork><![CDATA[ | <name>Uplink Example: LoRaWAN Packet</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| LoRaWAN Header | LoRaWAN payload (40 bytes) | | | LoRaWAN Header | LoRaWAN payload (40 bytes) | | |||
+ ------------------------- + --------------------------------------- + | + ------------------------- + --------------------------------------- + | |||
| | FOpts | RuleID=1 | Compression | Payload | Padding=b'000 | | | | FOpts | RuleID=1 | Compression | Payload | Padding=b'000 | | |||
| | | | residue | | | | | | | | residue | | | | |||
+ ---- + ------- + -------- + ----------- + --------- + ------------- + | + ---- + ------- + -------- + ----------- + --------- + ------------- + | |||
| XXXX | 2 bytes | 1 byte | 21 bits | 37 bytes | 3 bits | | | XXXX | 2 bytes | 1 byte | 21 bits | 37 bytes | 3 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
</section> | </section> | |||
<section anchor="uplink-compression-and-fragmentation-example" title="Uplink - C | <section anchor="uplink-compression-and-fragmentation-example" numbered="t | |||
ompression and fragmentation example"> | rue" toc="default"> | |||
<name>Uplink - Compression and Fragmentation Example</name> | ||||
<t>This example represents an applicative data going through SCHC, with | <t>This example represents an applicative data going through SCHC, with | |||
fragmentation.</t> | fragmentation.</t> | |||
<t>An applicative data of 300 bytes is passed to the SCHC compression la | ||||
<t>An applicative data of 300 bytes is passed to SCHC compression layer. Rule 1 | yer. Rule 1 | |||
is used by SCHC C/D layer, allowing to compress it to 282 bytes and 5 bits: 1 b | is used by the SCHC C/D layer, allowing to compress it to 282 bytes and 5 bits: | |||
yte | 1 byte | |||
RuleID, 21 bits residue + 279 bytes payload.</t> | RuleID, 21 bits residue + 279 bytes payload.</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-schc-message"> | ||||
<figure title="Uplink example: SCHC Message" anchor="Fig-example-uplink-fragment | <name>Uplink Example: SCHC Message</name> | |||
ation-schc-message"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| RuleID | Compression residue | Payload | | | RuleID | Compression residue | Payload | | |||
+ ------ + ------------------- + --------- + | + ------ + ------------------- + --------- + | |||
| 1 | 21 bits | 279 bytes | | | 1 | 21 bits | 279 bytes | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The current LoRaWAN MTU is 11 bytes, 0 bytes FOpts are used by LoRaWAN | <t>The current LoRaWAN MTU is 11 bytes; 0-byte FOpts are used by | |||
protocol: 11 bytes are available for SCHC payload + 1 byte FPort field. | the LoRaWAN protocol: 11 bytes are available for SCHC payload + 1 byte | |||
SCHC header is 2 bytes (including FPort) so 1 tile is sent in first | FPort field. The SCHC header is 2 bytes (including FPort), so 1 tile is | |||
fragment.</t> | sent in the first fragment.</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-1"> | ||||
<figure title="Uplink example: LoRaWAN packet 1" anchor="Fig-example-uplink-frag | <name>Uplink Example: LoRaWAN Packet 1</name> | |||
mentation-lorawan-packet-1"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (11 bytes) | | | LoRaWAN Header | LoRaWAN payload (11 bytes) | | |||
+ -------------------------- + -------------------------- + | + -------------------------- + -------------------------- + | |||
| | RuleID=20 | W | FCN | 1 tile | | | | RuleID=20 | W | FCN | 1 tile | | |||
+ -------------- + --------- + ----- + ------ + --------- + | + -------------- + --------- + ----- + ------ + --------- + | |||
| XXXX | 1 byte | 0 0 | 62 | 10 bytes | | | XXXX | 1 byte | 0 0 | 62 | 10 bytes | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<figure title="Uplink example: LoRaWAN packet 1 - Tile content" anchor="Fig-exam | <t>The tile content is described in <xref target="Fig-example-uplink-fra | |||
ple-uplink-fragmentation-lorawan-packet-1-tile-content"><artwork><![CDATA[ | gmentation-lorawan-packet-1-tile-content" format="default"/> | |||
</t> | ||||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-1-tile-c | ||||
ontent"> | ||||
<name>Uplink Example: First Tile Content</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Content of the tile is: | Content of the tile is: | |||
| RuleID | Compression residue | Payload | | | RuleID | Compression residue | Payload | | |||
+ ------ + ------------------- + ----------------- + | + ------ + ------------------- + ----------------- + | |||
| 1 | 21 bits | 6 bytes + 3 bits | | | 1 | 21 bits | 6 bytes + 3 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>Next transmission MTU is 11 bytes, although 2 bytes FOpts are used by | <t>Next transmission MTU is 11 bytes, although 2-byte FOpts are used | |||
LoRaWAN protocol: 9 bytes are available for SCHC payload + 1 byte FPort | by the LoRaWAN protocol: 9 bytes are available for SCHC payload + 1 | |||
field, a tile does not fit inside so LoRaWAN stack will send only FOpts.</t> | byte FPort field, a tile does not fit inside so the LoRaWAN stack will | |||
send only FOpts.</t> | ||||
<t>Next transmission MTU is 242 bytes, 4 bytes FOpts. 23 tiles are transmitted:< | <t>Next transmission MTU is 242 bytes, 4-byte FOpts. 23 tiles are transm | |||
/t> | itted:</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-2"> | ||||
<figure title="Uplink example: LoRaWAN packet 2" anchor="Fig-example-uplink-frag | <name>Uplink Example: LoRaWAN Packet 2</name> | |||
mentation-lorawan-packet-2"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (231 bytes) | | | LoRaWAN Header | LoRaWAN payload (231 bytes) | | |||
+ --------------------------------------+ --------------------------- + | + --------------------------------------+ --------------------------- + | |||
| | FOpts | RuleID=20 | W | FCN | 23 tiles | | | | FOpts | RuleID=20 | W | FCN | 23 tiles | | |||
+ -------------- + ------- + ---------- + ----- + ----- + ----------- + | + -------------- + ------- + ---------- + ----- + ----- + ----------- + | |||
| XXXX | 4 bytes | 1 byte | 0 0 | 61 | 230 bytes | | | XXXX | 4 bytes | 1 byte | 0 0 | 61 | 230 bytes | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>Next transmission MTU is 242 bytes, no FOpts. All 5 remaining tiles are | <t>Next transmission MTU is 242 bytes, no FOpts. All 5 remaining tiles a | |||
re | ||||
transmitted, the last tile is only 2 bytes + 5 bits. Padding is added for | transmitted, the last tile is only 2 bytes + 5 bits. Padding is added for | |||
the remaining 3 bits.</t> | the remaining 3 bits.</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-3"> | ||||
<figure title="Uplink example: LoRaWAN packet 3" anchor="Fig-example-uplink-frag | <name>Uplink Example: LoRaWAN Packet 3</name> | |||
mentation-lorawan-packet-3"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (44 bytes) | | | LoRaWAN Header | LoRaWAN payload (44 bytes) | | |||
+ ---- + ---------- + ----------------------------------------------- + | + ---- + ---------- + ----------------------------------------------- + | |||
| | RuleID=20 | W | FCN | 5 tiles | Padding=b'000 | | | | RuleID=20 | W | FCN | 5 tiles | Padding=b'000 | | |||
+ ---- + ---------- + ----- + ----- + --------------- + ------------- + | + ---- + ---------- + ----- + ----- + --------------- + ------------- + | |||
| XXXX | 1 byte | 0 0 | 38 | 42 bytes+5 bits | 3 bits | | | XXXX | 1 byte | 0 0 | 38 | 42 bytes+5 bits | 3 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>Then All-1 message can be transmitted:</t> | <t>Then All-1 message can be transmitted:</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-4"> | ||||
<figure title="Uplink example: LoRaWAN packet 4 - All-1 SCHC message" anchor="Fi | <name>Uplink Example: LoRaWAN Packet 4 - All-1 SCHC Message</name> | |||
g-example-uplink-fragmentation-lorawan-packet-4"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (44 bytes) | | | LoRaWAN Header | LoRaWAN payload (44 bytes) | | |||
+ ---- + -----------+ -------------------------- + | + ---- + -----------+ -------------------------- + | |||
| | RuleID=20 | W | FCN | RCS | | | | RuleID=20 | W | FCN | RCS | | |||
+ ---- + ---------- + ----- + ----- + ---------- + | + ---- + ---------- + ----- + ----- + ---------- + | |||
| XXXX | 1 byte | 0 0 | 63 | 4 bytes | | | XXXX | 1 byte | 0 0 | 63 | 4 bytes | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>All packets have been received by the SCHC gateway, computed RCS is | <t>All packets have been received by the SCHC gateway, computed RCS is | |||
correct so the following ACK is sent to the device by the SCHC receiver:</t> | correct so the following ACK is sent to the device by the SCHC receiver:</t> | |||
<figure anchor="Fig-example-uplink-fragmentation-lorawan-packet-5"> | ||||
<figure title="Uplink example: LoRaWAN packet 5 - SCHC ACK" anchor="Fig-example- | <name>Uplink Example: LoRaWAN Packet 5 - SCHC ACK</name> | |||
uplink-fragmentation-lorawan-packet-5"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload | | | LoRaWAN Header | LoRaWAN payload | | |||
+ -------------- + --------- + ------------------- + | + -------------- + --------- + ------------------- + | |||
| | RuleID=20 | W | C | Padding | | | | RuleID=20 | W | C | Padding | | |||
+ -------------- + --------- + ----- + - + ------- + | + -------------- + --------- + ----- + - + ------- + | |||
| XXXX | 1 byte | 0 0 | 1 | 5 bits | | | XXXX | 1 byte | 0 0 | 1 | 5 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
</section> | </section> | |||
<section anchor="downlink" title="Downlink"> | <section anchor="downlink" numbered="true" toc="default"> | |||
<name>Downlink</name> | ||||
<t>An applicative data of 155 bytes is passed to SCHC compression layer. Rule 1 | <t>An applicative data of 155 bytes is passed to the SCHC compression la | |||
is used by SCHC C/D layer, allowing to compress it to 130 bytes and 5 bits: 1 by | yer. Rule 1 | |||
te | is used by the SCHC C/D layer, allowing to compress it to 130 bytes and 5 bits: | |||
1 byte | ||||
RuleID, 21 bits residue + 127 bytes payload.</t> | RuleID, 21 bits residue + 127 bytes payload.</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-schc-message"> | ||||
<figure title="Downlink example: SCHC Message" anchor="Fig-example-downlink-frag | <name>Downlink Example: SCHC Message</name> | |||
mentation-schc-message"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| RuleID | Compression residue | Payload | | | RuleID | Compression residue | Payload | | |||
+ ------ + ------------------- + --------- + | + ------ + ------------------- + --------- + | |||
| 1 | 21 bits | 127 bytes | | | 1 | 21 bits | 127 bytes | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The current LoRaWAN MTU is 51 bytes, no FOpts are used by LoRaWAN | <t>The current LoRaWAN MTU is 51 bytes; no FOpts are used by the | |||
protocol: 51 bytes are available for SCHC payload + FPort field => it | LoRaWAN protocol: 51 bytes are available for SCHC payload + FPort | |||
has to be fragmented.</t> | field; the applicative data has to be fragmented.</t> | |||
<figure title="Downlink example: LoRaWAN packet 1 - SCHC Fragment 1" anchor="Fig | <figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-1"> | |||
-example-downlink-fragmentation-lorawan-packet-1"><artwork><![CDATA[ | <name>Downlink Example: LoRaWAN Packet 1 - SCHC Fragment 1</name> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| LoRaWAN Header | LoRaWAN payload (51 bytes) | | | LoRaWAN Header | LoRaWAN payload (51 bytes) | | |||
+ ---- + ---------- + -------------------------------------- + | + ---- + ---------- + -------------------------------------- + | |||
| | RuleID=21 | W = 0 | FCN = 0 | 1 tile | | | | RuleID=21 | W = 0 | FCN = 0 | 1 tile | | |||
+ ---- + ---------- + ------ + ------- + ------------------- + | + ---- + ---------- + ------ + ------- + ------------------- + | |||
| XXXX | 1 byte | 1 bit | 1 bit | 50 bytes and 6 bits | | | XXXX | 1 byte | 1 bit | 1 bit | 50 bytes and 6 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>Content of the tile is:</t> | <t>The tile content is described in <xref target="Fig-example-downlink-f | |||
ragmentation-lorawan-packet-1-tile-content" format="default"/> | ||||
</t> | ||||
<figure title="Downlink example: LoRaWAN packet 1: Tile content" anchor="Fig-exa | <figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-1-tile | |||
mple-downlink-fragmentation-lorawan-packet-1-tile-content"><artwork><![CDATA[ | -content"> | |||
<name>Downlink Example: First Tile Content</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| RuleID | Compression residue | Payload | | | RuleID | Compression residue | Payload | | |||
+ ------ + ------------------- + ------------------ + | + ------ + ------------------- + ------------------ + | |||
| 1 | 21 bits | 48 bytes and 1 bit | | | 1 | 21 bits | 48 bytes and 1 bit | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The receiver answers with a SCHC ACK:</t> | <t>The receiver answers with a SCHC ACK:</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-2"> | ||||
<figure title="Downlink example: LoRaWAN packet 2 - SCHC ACK" anchor="Fig-examp | <name>Downlink Example: LoRaWAN Packet 2 - SCHC ACK</name> | |||
le-downlink-fragmentation-lorawan-packet-2"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload | | | LoRaWAN Header | LoRaWAN payload | | |||
+ ---- + --------- + -------------------------------- + | + ---- + --------- + -------------------------------- + | |||
| | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 | | | | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 | | |||
+ ---- + --------- + ----- + ----- + ---------------- + | + ---- + --------- + ----- + ----- + ---------------- + | |||
| XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | | XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The second downlink is sent, two FOpts:</t> | <t>The second downlink is sent, two FOpts:</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-3"> | ||||
<figure title="Downlink example: LoRaWAN packet 3 - SCHC Fragment 2" anchor="Fig | <name>Downlink Example: LoRaWAN Packet 3 - SCHC Fragment 2</name> | |||
-example-downlink-fragmentation-lorawan-packet-3"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (49 bytes) | | | LoRaWAN Header | LoRaWAN payload (49 bytes) | | |||
+ --------------------------- + ------------------------------------- + | + --------------------------- + ------------------------------------- + | |||
| | FOpts | RuleID=21 | W = 1 | FCN = 0 | 1 tile | | | | FOpts | RuleID=21 | W = 1 | FCN = 0 | 1 tile | | |||
+ ---- + ------- + ---------- + ----- + ------- + ------------------- + | + ---- + ------- + ---------- + ----- + ------- + ------------------- + | |||
| XXXX | 2 bytes | 1 byte | 1 bit | 1 bit | 48 bytes and 6 bits | | | XXXX | 2 bytes | 1 byte | 1 bit | 1 bit | 48 bytes and 6 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The receiver answers with an SCHC ACK:</t> | <t>The receiver answers with a SCHC ACK:</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-4"> | ||||
<figure title="Downlink example: LoRaWAN packet 4 - SCHC ACK" anchor="Fig-examp | <name>Downlink Example: LoRaWAN Packet 4 - SCHC ACK</name> | |||
le-downlink-fragmentation-lorawan-packet-4"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload | | | LoRaWAN Header | LoRaWAN payload | | |||
+ ---- + --------- + -------------------------------- + | + ---- + --------- + -------------------------------- + | |||
| | RuleID=21 | W = 1 | C = 1 | Padding=b'000000 | | | | RuleID=21 | W = 1 | C = 1 | Padding=b'000000 | | |||
+ ---- + --------- + ----- + ----- + ---------------- + | + ---- + --------- + ----- + ----- + ---------------- + | |||
| XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | | XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The last downlink is sent, no FOpts:</t> | <t>The last downlink is sent, no FOpts:</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-5"> | ||||
<figure title="Downlink example: LoRaWAN packet 5 - All-1 SCHC message" anchor=" | <name>Downlink Example: LoRaWAN Packet 5 - All-1 SCHC Message</name> | |||
Fig-example-downlink-fragmentation-lorawan-packet-5"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload (37 bytes) | | | LoRaWAN Header | LoRaWAN payload (37 bytes) | | |||
+ ---- + ------- + --------------------------------------------------- + | + ---- + ------- + -------------------------------------------------- + | |||
| | RuleID | W | FCN | RCS | 1 tile | Padding | | | | RuleID | W | FCN | RCS | 1 tile | Padding | | |||
| | 21 | 0 | 1 | | | b'00000 | | | | 21 | 0 | 1 | | | b'00000 | | |||
+ ---- + ------- + ----- + ----- + ------- + --------------- + ------- + | + ---- + ------- + ----- + ----- + ------- + -------------- + ------- + | |||
| XXXX | 1 byte | 1 bit | 1 bit | 4 bytes | 31 bytes+1 bits | 5 bits | | | XXXX | 1 byte | 1 bit | 1 bit | 4 bytes | 31 bytes+1 bit | 5 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
<t>The receiver answers to the sender with an SCHC ACK:</t> | <t>The receiver answers to the sender with a SCHC ACK:</t> | |||
<figure anchor="Fig-example-downlink-fragmentation-lorawan-packet-6"> | ||||
<figure title="Downlink example: LoRaWAN packet 6 - SCHC ACK" anchor="Fig-exampl | <name>Downlink Example: LoRaWAN Packet 6 - SCHC ACK</name> | |||
e-downlink-fragmentation-lorawan-packet-6"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| LoRaWAN Header | LoRaWAN payload | | | LoRaWAN Header | LoRaWAN payload | | |||
+ ---- + --------- + -------------------------------- + | + ---- + --------- + -------------------------------- + | |||
| | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 | | | | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 | | |||
+ ---- + --------- + ----- + ----- + ---------------- + | + ---- + --------- + ----- + ----- + ---------------- + | |||
| XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | | XXXX | 1 byte | 1 bit | 1 bit | 6 bits | | |||
]]></artwork></figure> | ]]></artwork> | |||
</figure> | ||||
</section> | ||||
</section> | ||||
</section> | <section numbered="false" anchor="acknowledgements" toc="default"> | |||
</section> | <name>Acknowledgements</name> | |||
<t>Thanks to all those listed in the Contributors Section for the | ||||
excellent text, insightful discussions, reviews, and suggestions, and | ||||
also to (in alphabetical order) <contact fullname="Dominique Barthel"/>, | ||||
<contact fullname="Arunprabhu Kandasamy"/>, <contact fullname="Rodrigo | ||||
Munoz"/>, <contact fullname="Alexander Pelov"/>, <contact | ||||
fullname="Pascal Thubert"/>, and <contact fullname="Laurent Toutain"/> for | ||||
useful design considerations, reviews, and comments.</t> | ||||
<t>LoRaWAN is a registered trademark of the LoRa Alliance.</t> | ||||
</section> | ||||
</back> | <section numbered="false" anchor="contributors" toc="default"> | |||
<name>Contributors</name> | ||||
<t>Contributors ordered by family name.</t> | ||||
<contact fullname="Vincent Audebert"> | ||||
<organization>EDF R&D</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>vincent.audebert@edf.fr</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Julien Catalano"> | ||||
<organization>Kerlink</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>j.catalano@kerlink.fr</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Michael Coracin"> | ||||
<organization>Semtech</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>mcoracin@semtech.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Marc Le Gourrierec"> | ||||
<organization>Sagemcom</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>marc.legourrierec@sagemcom.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Nicolas Sornin"> | ||||
<organization>Chirp Foundation</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>nicolas.sornin@chirpfoundation.org</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Alper Yegin"> | ||||
<organization>Actility</organization> | ||||
<address> | ||||
<postal> | ||||
<city></city> | ||||
<country></country> | ||||
</postal> | ||||
<email>alper.yegin@actility.com</email> | ||||
</address> | ||||
</contact> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 172 change blocks. | ||||
1161 lines changed or deleted | 1356 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |