summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc9011.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc9011.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc9011.txt')
-rw-r--r--doc/rfc/rfc9011.txt1330
1 files changed, 1330 insertions, 0 deletions
diff --git a/doc/rfc/rfc9011.txt b/doc/rfc/rfc9011.txt
new file mode 100644
index 0000000..38f0dfa
--- /dev/null
+++ b/doc/rfc/rfc9011.txt
@@ -0,0 +1,1330 @@
+
+
+
+
+Internet Engineering Task Force (IETF) O. Gimenez, Ed.
+Request for Comments: 9011 Semtech
+Category: Standards Track I. Petrov, Ed.
+ISSN: 2070-1721 Acklio
+ April 2021
+
+
+Static Context Header Compression and Fragmentation (SCHC) over LoRaWAN
+
+Abstract
+
+ The Static Context Header Compression and fragmentation (SCHC)
+ specification (RFC 8724) describes 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.
+
+ This document defines a profile of SCHC (RFC 8724) for use in LoRaWAN
+ networks and provides elements such as efficient parameterization and
+ modes of operation.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc9011.
+
+Copyright Notice
+
+ Copyright (c) 2021 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Terminology
+ 3. SCHC Overview
+ 4. LoRaWAN Architecture
+ 4.1. Device Classes (A, B, C) and Interactions
+ 4.2. Device Addressing
+ 4.3. General Frame Types
+ 4.4. LoRaWAN MAC Frames
+ 4.5. LoRaWAN FPort
+ 4.6. LoRaWAN Empty Frame
+ 4.7. Unicast and Multicast Technology
+ 5. SCHC over LoRaWAN
+ 5.1. LoRaWAN FPort and RuleID
+ 5.2. RuleID Management
+ 5.3. Interface IDentifier (IID) Computation
+ 5.4. Padding
+ 5.5. Decompression
+ 5.6. Fragmentation
+ 5.6.1. DTag
+ 5.6.2. Uplink Fragmentation: From Device to SCHC Gateway
+ 5.6.3. Downlink Fragmentation: From SCHC Gateway to Device
+ 5.7. SCHC Fragment Format
+ 5.7.1. All-0 SCHC Fragment
+ 5.7.2. All-1 SCHC Fragment
+ 5.7.3. Delay after Each LoRaWAN Frame to Respect Local
+ Regulation
+ 6. Security Considerations
+ 7. IANA Considerations
+ 8. References
+ 8.1. Normative References
+ 8.2. Informative References
+ Appendix A. Examples
+ A.1. Uplink - Compression Example - No Fragmentation
+ A.2. Uplink - Compression and Fragmentation Example
+ A.3. Downlink
+ Acknowledgements
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ The SCHC specification [RFC8724] describes generic header compression
+ and fragmentation techniques that can be used on all Low-Power Wide
+ Area Network (LPWAN) technologies defined in [RFC8376]. Even though
+ those technologies share a great number of common features like star-
+ oriented topologies, network architecture, devices with
+ communications that are mostly quite predictable, etc., they do have
+ some slight differences with respect to payload sizes, reactiveness,
+ etc.
+
+ SCHC provides a generic framework that enables those devices to
+ communicate on IP networks. However, for efficient performance, some
+ parameters and modes of operation need to be set appropriately for
+ each of the LPWAN technologies.
+
+ 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 [LORAWAN-SPEC].
+
+2. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ This section defines the terminology and abbreviations used in this
+ document. For all other definitions, please look up the SCHC
+ specification [RFC8724].
+
+ | Note: The SCHC acronym is pronounced like "sheek" in English
+ | (or "chic" in French). Therefore, this document writes "a SCHC
+ | Packet" instead of "an SCHC Packet".
+
+ AppKey: Application Key. An AES-128 root key specific to each
+ device.
+
+ AppSKey: 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.
+
+ DevAddr: A 32-bit non-unique identifier assigned to a device either:
+
+ Statically: by the device manufacturer in "Activation-by-
+ Personalization" mode, or
+
+ Dynamically: after a LoRaWAN "Join Procedure" by the Network
+ Gateway in "Over-the-Air-Activation" mode.
+
+ DevEUI: 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.
+
+ Downlink: A LoRaWAN term for a frame transmitted by the network and
+ received by the device.
+
+ EUI: Extended Unique Identifier
+
+ FRMPayload: Application data in a LoRaWAN frame
+
+ IID: Interface Identifier
+
+ 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: <https://www.lora-
+ alliance.org>.
+
+ MSB: Most Significant Byte
+
+ NGW: Network Gateway
+
+ OUI: Organizationally Unique Identifier. IEEE-assigned prefix for
+ EUI.
+
+ RCS: Reassembly Check Sequence. Used to verify the integrity of the
+ fragmentation-reassembly process.
+
+ RGW: Radio Gateway
+
+ RX: A device's reception window.
+
+ RX1/RX2: LoRaWAN class A devices open two RX windows following an
+ uplink, called "RX1" and "RX2".
+
+ SCHC C/D: SCHC Compression/Decompression
+
+ SCHC F/R: SCHC Fragmentation/Reassembly
+
+ SCHC gateway: The LoRaWAN Application Server that manages
+ translation between an IPv6 network and the Network Gateway
+ (LoRaWAN Network Server).
+
+ Tile: A piece of a fragmented packet as described in Section 8.2.2.1
+ of [RFC8724].
+
+ Uplink: LoRaWAN term for a frame transmitted by the device and
+ received by the network.
+
+3. SCHC Overview
+
+ This section contains a short overview of SCHC. For a detailed
+ description, refer to the full specification [RFC8724].
+
+ It defines:
+
+ 1. 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).
+
+ 2. 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).
+
+ Context exchange or pre-provisioning is out of scope of this
+ document.
+
+ Device App
+ +----------------+ +----+ +----+ +----+
+ | App1 App2 App3 | |App1| |App2| |App3|
+ | | | | | | | |
+ | UDP | |UDP | |UDP | |UDP |
+ | IPv6 | |IPv6| |IPv6| |IPv6|
+ | | | | | | | |
+ |SCHC C/D and F/R| | | | | | |
+ +--------+-------+ +----+ +----+ +----+
+ | +---+ +----+ +----+ +----+ . . .
+ +~ |RGW| === |NGW | == |SCHC| == |SCHC|...... Internet ....
+ +---+ +----+ |F/R | |C/D |
+ +----+ +----+
+ |<- - - - LoRaWAN - - ->|
+
+ Figure 1: Architecture
+
+ Figure 1 represents the architecture for compression/decompression;
+ it is based on the terminology from [RFC8376]. The device is sending
+ application flows using IPv6 or IPv6/UDP protocols. These flows
+ might be compressed by a SCHC C/D to reduce header size, and
+ fragmented by the SCHC F/R. The resulting information is sent on a
+ Layer 2 (L2) frame to an LPWAN Radio Gateway (RGW) that forwards the
+ frame to a Network Gateway (NGW). The NGW sends the data to a SCHC
+ F/R for reassembly, if required, then to a SCHC C/D for
+ decompression. The SCHC C/D shares the same rules with the device.
+ The SCHC C/D and SCHC F/R can be located on the NGW or in another
+ place as long as a communication is established between the NGW and
+ the SCHC F/R, then SCHC F/R and SCHC C/D. The SCHC C/D and SCHC F/R
+ in the device and the SCHC gateway MUST share the same set of rules.
+ After decompression, the packet can be sent on the Internet to one or
+ several LPWAN Application Servers (App).
+
+ The SCHC C/D and SCHC F/R process is bidirectional, so the same
+ principles can be applied to the other direction.
+
+ In a LoRaWAN network, the RGW is called a "Gateway", the NGW is a
+ "Network Server", and the SCHC C/D and SCHC F/R are one or more
+ "Application Servers". Application servers can be provided by the
+ NGW or any third-party software. Figure 1 can be mapped in LoRaWAN
+ terminology to:
+
+ End Device App
+ +--------------+ +----+ +----+ +----+
+ |App1 App2 App3| |App1| |App2| |App3|
+ | | | | | | | |
+ | UDP | |UDP | |UDP | |UDP |
+ | IPv6 | |IPv6| |IPv6| |IPv6|
+ | | | | | | | |
+ |SCHC C/D & F/R| | | | | | |
+ +-------+------+ +----+ +----+ +----+
+ | +-------+ +-------+ +-----------+ . . .
+ +~ |Gateway| == |Network| == |Application|..... Internet ....
+ +-------+ |server | |server |
+ +-------+ | F/R - C/D |
+ +-----------+
+ |<- - - - - LoRaWAN - - - ->|
+
+ Figure 2: SCHC Architecture Mapped to LoRaWAN
+
+4. LoRaWAN Architecture
+
+ An overview of the LoRaWAN protocol and architecture [LORAWAN-SPEC]
+ is described in [RFC8376]. The mapping between the LPWAN
+ architecture entities as described in [RFC8724] and the ones in
+ [LORAWAN-SPEC] is as follows:
+
+ * Devices are LoRaWAN End Devices (e.g., sensors, actuators, etc.).
+ There can be a very high density of devices per radio gateway
+ (LoRaWAN gateway). This entity maps to the LoRaWAN end device.
+
+ * The RGW is the endpoint of the constrained link. This entity maps
+ to the LoRaWAN Gateway.
+
+ * The NGW is the interconnection node between the Radio Gateway and
+ the SCHC gateway (LoRaWAN Application Server). This entity maps
+ to the LoRaWAN Network Server.
+
+ * The SCHC C/D and SCHC F/R are handled by the LoRaWAN Application
+ Server.
+
+ * 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 exposed.
+
+ (LPWAN-AAA Server)
+ () () () | +------+
+ () () () () / \ +---------+ | Join |
+ () () () () () / \======| ^ |===|Server| +-----------+
+ () () () | | <--|--> | +------+ |Application|
+ () () () () / \==========| v |=============| Server |
+ () () () / \ +---------+ +-----------+
+ End devices Gateways Network Server (SCHC C/D and F/R)
+ (devices) (RGW) (NGW)
+
+ Figure 3: LPWAN Architecture
+
+ | Note: Figure 3 terms are from LoRaWAN, with [RFC8376]
+ | terminology in brackets.
+
+ 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.
+
+4.1. Device Classes (A, B, C) and Interactions
+
+ The LoRaWAN Medium Access Control (MAC) layer supports three classes
+ of devices named A, B, and C. All devices implement Class A, and
+ some devices may implement Class B or Class C. Class B and Class C
+ are mutually exclusive.
+
+ Class A: 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.
+
+ Class B: Class B devices implement all the functionalities of Class
+ A devices but also schedule periodic listen windows. Therefore,
+ as opposed to 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 periodicity
+ of those scheduled Class B listen windows and the power
+ consumption of the device:
+
+ High periodicity: Downlinks from the NGW will be sent faster but
+ the device wakes up more often and power consumption is
+ increased.
+
+ Low periodicity: Downlinks from the NGW will have higher latency
+ but lower power consumption.
+
+ 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).
+
+4.2. Device Addressing
+
+ 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.
+
+ To communicate with the SCHC gateway, the Network Gateway MUST
+ identify the devices by a unique 64-bit device identifier called the
+ "DevEUI".
+
+ 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.
+
+ +--------+ +---------+ +---------+ +----------+
+ | Device | <=====> | Network | <====> | SCHC | <======> | Internet |
+ | | DevAddr | Gateway | DevEUI | Gateway | IPv6/UDP | |
+ +--------+ +---------+ +---------+ +----------+
+
+ Figure 4: LoRaWAN Addresses
+
+4.3. General Frame Types
+
+ LoRaWAN implements the possibility to send confirmed or unconfirmed
+ frames:
+
+ Confirmed frame: The sender asks the receiver to acknowledge the
+ frame.
+
+ Unconfirmed frame: The sender does not ask the receiver to
+ acknowledge the frame.
+
+ As SCHC defines its own acknowledgment mechanisms, SCHC does not
+ require the use of LoRaWAN Confirmed frames (FType = 0b100 as per
+ [LORAWAN-SPEC]).
+
+4.4. LoRaWAN MAC Frames
+
+ In addition to regular data frames, LoRaWAN implements JoinRequest
+ and JoinAccept frame types, which are used by a device to join a
+ network:
+
+ JoinRequest: 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 derivation.
+
+ JoinAccept: 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.
+
+ Data: This refers to MAC and application data. Application data is
+ protected with AES-128 encryption. MAC-related data is AES-128
+ encrypted with another key.
+
+4.5. LoRaWAN FPort
+
+ 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.
+
+4.6. LoRaWAN Empty Frame
+
+ A LoRaWAN empty frame is a LoRaWAN frame without FPort (cf.
+ Section 5.1) and FRMPayload.
+
+4.7. Unicast and Multicast Technology
+
+ LoRaWAN technology supports unicast downlinks but also multicast; a
+ multicast packet sent over a LoRaWAN radio link can be received by
+ several 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.
+
+ | Note 1: IPv6 multicast addresses must be defined as per
+ | [RFC4291]. 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.
+
+ | Note 2: The LoRa Alliance defined
+ | [LORAWAN-REMOTE-MULTICAST-SET] as the RECOMMENDED way to set up
+ | multicast groups on devices and create a synchronized reception
+ | window.
+
+5. SCHC over LoRaWAN
+
+5.1. LoRaWAN FPort and RuleID
+
+ The FPort field is part of the SCHC Message, as shown in Figure 5.
+ The SCHC C/D and the SCHC F/R SHALL concatenate the FPort field with
+ the LoRaWAN payload to recompose the SCHC Message.
+
+ | FPort | LoRaWAN payload |
+ + ------------------------ +
+ | SCHC Message |
+
+ Figure 5: SCHC Message in LoRaWAN
+
+ | Note: The SCHC Message is any datagram sent by the SCHC C/D or
+ | F/R layers.
+
+ A fragmented datagram with application payload transferred from
+ device to Network Gateway is called an "uplink-fragmented datagram".
+ It uses an FPort for data uplink and its associated SCHC control
+ downlinks, named "FPortUp" in this document. The other way, a
+ fragmented datagram with application payload transferred from Network
+ Gateway to device is called a "downlink-fragmented datagram". It
+ uses another FPort for data downlink and its associated SCHC control
+ uplinks, named "FPortDown" in this document.
+
+ All RuleIDs can use arbitrary values inside the FPort range allowed
+ by the LoRaWAN specification [LORAWAN-SPEC] and MUST be shared by the
+ device and SCHC gateway prior to the communication with the selected
+ rule. The uplink and downlink fragmentation FPorts MUST be
+ different.
+
+5.2. RuleID Management
+
+ The RuleID MUST be 8 bits and encoded in the LoRaWAN FPort as
+ described in Section 5.1. LoRaWAN supports up to 223 application
+ FPorts in the range [1..223] as defined in Section 4.3.2 of
+ [LORAWAN-SPEC]; it implies that the 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.
+
+ In order to improve interoperability, RECOMMENDED fragmentation
+ RuleID values are:
+
+ * RuleID = 20 (8-bit) for uplink fragmentation, named FPortUp.
+
+ * RuleID = 21 (8-bit) for downlink fragmentation, named FPortDown.
+
+ * RuleID = 22 (8-bit) for which SCHC compression was not possible
+ (i.e., no matching compression Rule was found), as described in
+ Section 6 of [RFC8724].
+
+ The FPortUp value MUST be different from the FPortDown value. 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 FPortDown means that the fragmentation is not used; thus,
+ on reception, the SCHC Message MUST be sent to the SCHC C/D layer.
+
+ 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.
+
+ An application can have multiple fragmented datagrams between a
+ device and one or several SCHC gateways. A set of FPort values is
+ REQUIRED for each SCHC gateway instance the device is required to
+ communicate with. The application can use additional uplinks or
+ downlink-fragmented parameters but SHALL implement at least the
+ parameters defined in this document.
+
+ The mechanism for context distribution across devices and gateways is
+ outside the scope of this document.
+
+5.3. Interface IDentifier (IID) Computation
+
+ In order to mitigate the risks described in [RFC8064] and [RFC8065],
+ implementations MUST implement the following algorithm and SHOULD use
+ it.
+
+ 1. key = LoRaWAN AppSKey
+
+ 2. cmac = aes128_cmac(key, DevEUI)
+
+ 3. IID = cmac[0..7]
+
+ The aes128_cmac algorithm is described in [RFC4493]. It has been
+ chosen as it is already used by devices for the LoRaWAN protocol.
+
+ As AppSKey is renewed each time a device joins or rejoins a LoRaWAN
+ network, the IID will change over time; this mitigates privacy
+ concerns, for example, location tracking or correlation over time.
+ Join periodicity is defined at the application level.
+
+ Address-scan risk is mitigated thanks to the entropy added to the IID
+ by the inclusion of AppSKey.
+
+ Using this algorithm will also ensure that there is no correlation
+ between the hardware identifier (DevEUI) and the IID, so an attacker
+ cannot use the manufacturer OUI to target devices.
+
+ Example with:
+
+ * DevEUI: 0x1122334455667788
+
+ * AppSKey: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB
+
+ 1. key: 0x00AABBCCDDEEFF00AABBCCDDEEFFAABB
+ 2. cmac: 0x4E822D9775B2649928F82066AF804FEC
+ 3. IID: 0x4E822D9775B26499
+
+ Figure 6: Example of IID Computation
+
+ There is a small probability of IID collision in a LoRaWAN network.
+ If this occurs, the IID can be changed by rekeying the device at the
+ L2 level (i.e., triggering a LoRaWAN join). The way the device is
+ rekeyed is out of scope of this document and left to the
+ implementation.
+
+ | Note: Implementations also using another IID source MUST 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.
+
+5.4. Padding
+
+ All padding bits MUST be 0.
+
+5.5. Decompression
+
+ The SCHC C/D MUST concatenate FPort and LoRaWAN payload to retrieve
+ the SCHC Packet as per Section 5.1.
+
+ RuleIDs matching FPortUp and FPortDown are reserved for SCHC
+ fragmentation.
+
+5.6. Fragmentation
+
+ 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).
+
+ The fragmentation parameters are different for uplink- and downlink-
+ fragmented datagrams and are successively described in the next
+ sections.
+
+5.6.1. DTag
+
+ Section 8.2.4 of [RFC8724] 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.
+
+ | Note: The device can still have several parallel fragmented
+ | datagrams with more than one SCHC gateway thanks to distinct
+ | sets of FPorts, cf. Section 5.2.
+
+5.6.2. Uplink Fragmentation: From Device to SCHC Gateway
+
+ In this case, the device is the fragment transmitter and the SCHC
+ gateway is the fragment receiver. A single fragmentation rule is
+ defined. The SCHC F/R MUST concatenate FPort and LoRaWAN payload to
+ retrieve the SCHC Packet, as per Section 5.1.
+
+ SCHC fragmentation reliability mode: "ACK-on-Error".
+
+ SCHC header size: 2 bytes (the FPort byte + 1 additional byte).
+
+ RuleID: 8 bits stored in the LoRaWAN FPort (cf. Section 5.2).
+
+ DTag: Size T = 0 bits, not used (cf. Section 5.6.1).
+
+ Window index: 4 windows are used, encoded on M = 2 bits.
+
+ FCN: The FCN field is encoded on N = 6 bits, so WINDOW_SIZE = 63
+ tiles are allowed in a window.
+
+ 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.
+ Implementations must ensure that:
+
+ * 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.
+
+ * If the last tile is in an All-1 SCHC Message, the current L2
+ MTU MUST be big enough to fit the All-1 header and the last
+ tile.
+
+ Penultimate tile: MUST be equal to the regular size.
+
+ RCS: Use the recommended calculation algorithm in Section 8.2.3 of
+ [RFC8724], Integrity Checking.
+
+ Tile: Size is 10 bytes.
+
+ Retransmission timer: Set by the implementation depending on the
+ application 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.
+
+ 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.
+
+ 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: 4
+ windows * 63 tiles * 10 bytes per tile = 2520 bytes.
+
+ In addition to the per-rule context parameters specified in
+ [RFC8724], for uplink rules, an additional context parameter is
+ added: whether or not to ack after each window. For battery powered
+ devices, it is RECOMMENDED to use the ACK mechanism at the end of
+ each window instead of waiting until the end of all windows:
+
+ * The SCHC receiver SHOULD send a SCHC ACK after every window even
+ if there is no missing tile.
+
+ * The SCHC sender SHOULD wait for the SCHC ACK from the SCHC
+ receiver before sending tiles from the next window. If the SCHC
+ ACK is not received, it SHOULD send a SCHC ACK REQ up to
+ MAX_ACK_REQUESTS times, as described previously.
+
+ This will avoid useless uplinks if the device has lost network
+ coverage.
+
+ For non-battery powered devices, the SCHC receiver MAY also choose to
+ send a SCHC ACK only at the end of all windows. This will reduce
+ downlink load on the LoRaWAN network by reducing the number of
+ downlinks.
+
+ SCHC implementations MUST be compatible with both behaviors, and this
+ selection is part of the rule context.
+
+5.6.2.1. Regular Fragments
+
+ Figure 7 is an example of a regular fragment for all fragments except
+ the last one. SCHC Header Size is 16 Bits, including the LoRaWAN
+ FPort.
+
+ | FPort | LoRaWAN payload |
+ + ------ + ------------------------- +
+ | RuleID | W | FCN | Payload |
+ + ------ + ------ + ------ + ------- +
+ | 8 bits | 2 bits | 6 bits | |
+
+ Figure 7: All Fragments Except the Last One.
+
+5.6.2.2. Last Fragment (All-1)
+
+ Following figures are examples of All-1 messages. Figure 8 is
+ without the last tile, Figure 9 is with the last tile.
+
+ | FPort | LoRaWAN payload |
+ + ------ + ---------------------------- +
+ | RuleID | W | FCN=All-1 | RCS |
+ + ------ + ------ + --------- + ------- +
+ | 8 bits | 2 bits | 6 bits | 32 bits |
+
+ Figure 8: All-1 SCHC Message without Last Tile
+
+ | FPort | LoRaWAN payload |
+ + ------ + ---------------------------------------------------------- +
+ | 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 |
+
+ Figure 9: All-1 SCHC Message with Last Tile
+
+5.6.2.3. SCHC ACK
+
+ | FPort | LoRaWAN payload |
+ + ------ + --------------------------+
+ | RuleID | W | C = 1 | padding |
+ | | | | (b'00000) |
+ + ------ + ----- + ----- + --------- +
+ | 8 bits | 2 bit | 1 bit | 5 bits |
+
+ Figure 10: SCHC ACK Format - Correct RCS Check
+
+ | FPort | LoRaWAN payload |
+ + ------ + --------------------------------- + ---------------- +
+ | RuleID | W | C = 0 | Compressed bitmap | Optional padding |
+ | | | | (C = 0) | (b'0...0) |
+ + ------ + ----- + ----- + ----------------- + ---------------- +
+ | 8 bits | 2 bit | 1 bit | 5 to 63 bits | 0, 6, or 7 bits |
+
+ Figure 11: SCHC ACK Format - Incorrect RCS Check
+
+ | Note: Because of the bitmap compression mechanism and L2 byte
+ | alignment, only the following discrete values are possible for
+ | the compressed bitmap size: 5, 13, 21, 29, 37, 45, 53, 61, 62,
+ | and 63. Bitmaps of 63 bits will require 6 bits of padding.
+
+5.6.2.4. Receiver-Abort
+
+ | FPort | LoRaWAN payload |
+ + ------ + -------------------------------------------- +
+ | RuleID | W = b'11 | C = 1 | b'11111 | 0xFF (all 1's) |
+ + ------ + -------- + ------+-------- + ----------------+
+ | 8 bits | 2 bits | 1 bit | 5 bits | 8 bits |
+ next L2 Word boundary ->| <-- L2 Word --> |
+
+ Figure 12: Receiver-Abort Format
+
+5.6.2.5. SCHC Acknowledge Request
+
+ | FPort | LoRaWAN payload |
+ +------- +------------------------- +
+ | RuleID | W | FCN = b'000000 |
+ + ------ + ------ + --------------- +
+ | 8 bits | 2 bits | 6 bits |
+
+ Figure 13: SCHC ACK REQ Format
+
+5.6.3. Downlink Fragmentation: From SCHC Gateway to Device
+
+ In this case, the device is the fragmentation receiver and the SCHC
+ gateway is the fragmentation transmitter. The following fields are
+ common to all devices. The SCHC F/R MUST concatenate FPort and
+ LoRaWAN payload to retrieve the SCHC Packet as described in
+ Section 5.1.
+
+ SCHC fragmentation reliability mode:
+ Unicast downlinks: ACK-Always.
+
+ Multicast downlinks: No-ACK; reliability has to be ensured by
+ the upper layer. This feature is OPTIONAL for the SCHC
+ gateway and REQUIRED for the device.
+
+ RuleID: 8 bits stored in the LoRaWAN FPort (cf. Section 5.2).
+
+ DTag: Size T = 0 bit, not used (cf. Section 5.6.1).
+
+ FCN: The FCN field is encoded on N = 1 bit, so WINDOW_SIZE = 1 tile.
+
+ RCS: Use the recommended calculation algorithm in Section 8.2.3 of
+ [RFC8724], Integrity Checking.
+
+ 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.
+
+ The following parameters apply to ACK-Always (Unicast) only:
+
+ Retransmission timer: See Section 5.6.3.5.
+
+ MAX_ACK_REQUESTS: 8.
+
+ Window index (unicast only): encoded on M = 1 bit, as per [RFC8724].
+
+ As only one tile is used, its size can change for each downlink and
+ will be the currently available MTU.
+
+ 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 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
+ uplink is a LoRaWAN empty frame as defined in Section 4.6. As this
+ uplink is sent only to open an RX window, any LoRaWAN uplink frame
+ from the device MAY reset this counter.
+
+ | Note: The FPending bit included in the LoRaWAN protocol SHOULD
+ | NOT be used for the SCHC-over-LoRaWAN protocol. It might be
+ | set by the Network Gateway for other purposes but not SCHC
+ | needs.
+
+5.6.3.1. Regular Fragments
+
+ Figure 14 is an example of a regular fragment for all fragments
+ except the last one. SCHC Header Size is 10 Bits, including the
+ LoRaWAN FPort.
+
+ | FPort | LoRaWAN payload |
+ + ------ + ------------------------------------ +
+ | RuleID | W | FCN = b'0 | Payload |
+ + ------ + ----- + --------- + ---------------- +
+ | 8 bits | 1 bit | 1 bit | X bytes + 6 bits |
+
+ Figure 14: All Fragments but the Last One.
+
+5.6.3.2. Last Fragment (All-1)
+
+ | FPort | LoRaWAN payload |
+ + ------ + --------------------------- + ------------------------- +
+ | 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 |
+
+ Figure 15: All-1 SCHC Message: The Last Fragment
+
+5.6.3.3. SCHC ACK
+
+ | FPort | LoRaWAN payload |
+ + ------ + ---------------------------------- +
+ | RuleID | W | C = b'1 | Padding b'000000 |
+ + ------ + ----- + ------- + ---------------- +
+ | 8 bits | 1 bit | 1 bit | 6 bits |
+
+ Figure 16: SCHC ACK Format - Correct RCS Check
+
+ | FPort | LoRaWAN payload |
+ + ------ + ------------------------------------------------- +
+ | RuleID | W | C = b'0 | Bitmap = b'1 | Padding b'000000 |
+ + ------ + ----- + ------- + ------------ + ---------------- +
+ | 8 bits | 1 bit | 1 bit | 1 bit | 5 bits |
+
+ Figure 17: SCHC ACK Format - Incorrect RCS Check
+
+5.6.3.4. Receiver-Abort
+
+ Figure 18 is an example of a Receiver-Abort packet, following an
+ All-1 SCHC Fragment with incorrect RCS.
+
+ | FPort | LoRaWAN payload |
+ + ------ + ---------------------------------------------- +
+ | RuleID | W = b'1 | C = b'1 | b'111111 | 0xFF (all 1's) |
+ + ------ + ------- + ------- + -------- + --------------- +
+ | 8 bits | 1 bit | 1 bits | 6 bits | 8 bits |
+ next L2 Word boundary ->| <-- L2 Word --> |
+
+ Figure 18: Receiver-Abort Packet
+
+5.6.3.5. Downlink Retransmission Timer
+
+ Class A, Class B, and Class C devices do not manage retransmissions
+ and timers the same way.
+
+5.6.3.5.1. Class A Devices
+
+ Class A devices can only receive in an RX slot following the
+ transmission of an uplink.
+
+ The SCHC gateway implements an inactivity timer with a RECOMMENDED
+ 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.
+
+ RETRANSMISSION_TIMER is application specific and its RECOMMENDED
+ value is INACTIVITY_TIMER/(MAX_ACK_REQUESTS + 1).
+
+ *SCHC All-0 (FCN = 0)*
+
+ All fragments but the last have an FCN = 0 (because the window size
+ is 1). Following an All-0 SCHC Fragment, the device MUST transmit
+ the SCHC ACK message. It MUST 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 respect the
+ applicable local spectrum regulation.
+
+ | Note: The ACK bitmap is 1 bit long and is always 1.
+
+ *SCHC All-1 (FCN = 1)*
+
+ SCHC All-1 is the last fragment of a datagram, and 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 interval of 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 Section 4.6), 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 MUST be greater than 1. This allows the
+ opening of a downlink opportunity to any downlink with higher
+ priority than the SCHC ACK REQ message.
+
+ | Note: 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 SCHC ACK REQ; this indicates
+ | that the SCHC gateway has received the SCHC ACK message.
+
+5.6.3.6. Class B or Class C Devices
+
+ 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.
+
+ RECOMMENDED retransmission timer values are:
+
+ Class B: 3 times the ping slot periodicity.
+
+ Class C: 30 seconds.
+
+ The RECOMMENDED inactivity timer value is 12 hours for both Class B
+ and Class C devices.
+
+5.7. SCHC Fragment Format
+
+5.7.1. All-0 SCHC Fragment
+
+ *Uplink Fragmentation (Ack-on-Error)*:
+
+ All-0 is distinguishable from a SCHC ACK REQ, as [RFC8724] 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.
+
+ *Downlink fragmentation (ACK-Always)*:
+
+ As per [RFC8724], SCHC All-1 MUST contain the last tile, and
+ implementations MUST ensure that SCHC All-0 message Payload will be
+ at least the size of an L2 Word.
+
+5.7.2. All-1 SCHC Fragment
+
+ All-1 is distinguishable from a SCHC Sender-Abort, as [RFC8724]
+ 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.
+
+5.7.3. Delay after Each LoRaWAN Frame to Respect Local Regulation
+
+ 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.
+
+6. Security Considerations
+
+ This document is only providing parameters that are expected to be
+ best suited for LoRaWAN networks for [RFC8724]. IID security is
+ discussed in Section 5.3. As such, this document does not contribute
+ to any new security issues beyond those already identified in
+ [RFC8724]. Moreover, SCHC data (LoRaWAN payload) are protected at
+ the LoRaWAN level by an AES-128 encryption with a session key shared
+ by the device and the SCHC gateway. These session keys are renewed
+ at each LoRaWAN session (i.e., each join or rejoin to the LoRaWAN
+ network).
+
+7. IANA Considerations
+
+ This document has no IANA actions.
+
+8. References
+
+8.1. Normative References
+
+ [LORAWAN-SPEC]
+ LoRa Alliance, "LoRaWAN 1.0.4 Specification Package",
+ <https://lora-alliance.org/resource_hub/lorawan-104-
+ specification-package/>.
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing
+ Architecture", RFC 4291, DOI 10.17487/RFC4291, February
+ 2006, <https://www.rfc-editor.org/info/rfc4291>.
+
+ [RFC4493] Song, JH., Poovendran, R., Lee, J., and T. Iwata, "The
+ AES-CMAC Algorithm", RFC 4493, DOI 10.17487/RFC4493, June
+ 2006, <https://www.rfc-editor.org/info/rfc4493>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8724] Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC.
+ Zúñiga, "SCHC: Generic Framework for Static Context Header
+ Compression and Fragmentation", RFC 8724,
+ DOI 10.17487/RFC8724, April 2020,
+ <https://www.rfc-editor.org/info/rfc8724>.
+
+8.2. Informative References
+
+ [LORAWAN-REMOTE-MULTICAST-SET]
+ LoRa Alliance, "LoRaWAN Remote Multicast Setup
+ Specification v1.0.0", <https://lora-
+ alliance.org/resource_hub/lorawan-remote-multicast-setup-
+ specification-v1-0-0/>.
+
+ [RFC8064] Gont, F., Cooper, A., Thaler, D., and W. Liu,
+ "Recommendation on Stable IPv6 Interface Identifiers",
+ RFC 8064, DOI 10.17487/RFC8064, February 2017,
+ <https://www.rfc-editor.org/info/rfc8064>.
+
+ [RFC8065] Thaler, D., "Privacy Considerations for IPv6 Adaptation-
+ Layer Mechanisms", RFC 8065, DOI 10.17487/RFC8065,
+ February 2017, <https://www.rfc-editor.org/info/rfc8065>.
+
+ [RFC8376] Farrell, S., Ed., "Low-Power Wide Area Network (LPWAN)
+ Overview", RFC 8376, DOI 10.17487/RFC8376, May 2018,
+ <https://www.rfc-editor.org/info/rfc8376>.
+
+Appendix A. Examples
+
+ In the following examples, "applicative data" refers to the IPv6
+ payload sent by the application to the SCHC layer.
+
+A.1. Uplink - Compression Example - No Fragmentation
+
+ This example represents an applicative data going through SCHC over
+ LoRaWAN; no fragmentation required.
+
+ 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.
+
+ | RuleID | Compression residue | Payload | Padding=b'000 |
+ + ------ + ------------------- + --------- + ------------- +
+ | 1 | 21 bits | 37 bytes | 3 bits |
+
+ Figure 19: Uplink Example: SCHC Message
+
+ The current LoRaWAN MTU is 51 bytes, although 2-byte FOpts are used
+ by the LoRaWAN protocol: 49 bytes are available for SCHC payload; no
+ need for fragmentation. The payload will be transmitted through
+ FPort = 1.
+
+ | LoRaWAN Header | LoRaWAN payload (40 bytes) |
+ + ------------------------- + --------------------------------------- +
+ | | FOpts | RuleID=1 | Compression | Payload | Padding=b'000 |
+ | | | | residue | | |
+ + ---- + ------- + -------- + ----------- + --------- + ------------- +
+ | XXXX | 2 bytes | 1 byte | 21 bits | 37 bytes | 3 bits |
+
+ Figure 20: Uplink Example: LoRaWAN Packet
+
+A.2. Uplink - Compression and Fragmentation Example
+
+ This example represents an applicative data going through SCHC, with
+ fragmentation.
+
+ An applicative data of 300 bytes is passed to the SCHC compression
+ layer. Rule 1 is used by the SCHC C/D layer, allowing to compress it
+ to 282 bytes and 5 bits: 1 byte RuleID, 21 bits residue + 279 bytes
+ payload.
+
+ | RuleID | Compression residue | Payload |
+ + ------ + ------------------- + --------- +
+ | 1 | 21 bits | 279 bytes |
+
+ Figure 21: Uplink Example: SCHC Message
+
+ The current LoRaWAN MTU is 11 bytes; 0-byte FOpts are used by the
+ LoRaWAN protocol: 11 bytes are available for SCHC payload + 1 byte
+ FPort field. The SCHC header is 2 bytes (including FPort), so 1 tile
+ is sent in the first fragment.
+
+ | LoRaWAN Header | LoRaWAN payload (11 bytes) |
+ + -------------------------- + -------------------------- +
+ | | RuleID=20 | W | FCN | 1 tile |
+ + -------------- + --------- + ----- + ------ + --------- +
+ | XXXX | 1 byte | 0 0 | 62 | 10 bytes |
+
+ Figure 22: Uplink Example: LoRaWAN Packet 1
+
+ The tile content is described in Figure 23
+
+ Content of the tile is:
+ | RuleID | Compression residue | Payload |
+ + ------ + ------------------- + ----------------- +
+ | 1 | 21 bits | 6 bytes + 3 bits |
+
+ Figure 23: Uplink Example: First Tile Content
+
+ Next transmission MTU is 11 bytes, although 2-byte FOpts are used by
+ the LoRaWAN protocol: 9 bytes are available for SCHC payload + 1 byte
+ FPort field, a tile does not fit inside so the LoRaWAN stack will
+ send only FOpts.
+
+ Next transmission MTU is 242 bytes, 4-byte FOpts. 23 tiles are
+ transmitted:
+
+ | LoRaWAN Header | LoRaWAN payload (231 bytes) |
+ + --------------------------------------+ --------------------------- +
+ | | FOpts | RuleID=20 | W | FCN | 23 tiles |
+ + -------------- + ------- + ---------- + ----- + ----- + ----------- +
+ | XXXX | 4 bytes | 1 byte | 0 0 | 61 | 230 bytes |
+
+ Figure 24: Uplink Example: LoRaWAN Packet 2
+
+ Next transmission MTU is 242 bytes, no FOpts. All 5 remaining tiles
+ are transmitted, the last tile is only 2 bytes + 5 bits. Padding is
+ added for the remaining 3 bits.
+
+ | LoRaWAN Header | LoRaWAN payload (44 bytes) |
+ + ---- + ---------- + ----------------------------------------------- +
+ | | RuleID=20 | W | FCN | 5 tiles | Padding=b'000 |
+ + ---- + ---------- + ----- + ----- + --------------- + ------------- +
+ | XXXX | 1 byte | 0 0 | 38 | 42 bytes+5 bits | 3 bits |
+
+ Figure 25: Uplink Example: LoRaWAN Packet 3
+
+ Then All-1 message can be transmitted:
+
+ | LoRaWAN Header | LoRaWAN payload (44 bytes) |
+ + ---- + -----------+ -------------------------- +
+ | | RuleID=20 | W | FCN | RCS |
+ + ---- + ---------- + ----- + ----- + ---------- +
+ | XXXX | 1 byte | 0 0 | 63 | 4 bytes |
+
+ Figure 26: Uplink Example: LoRaWAN Packet 4 - All-1 SCHC Message
+
+ 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:
+
+ | LoRaWAN Header | LoRaWAN payload |
+ + -------------- + --------- + ------------------- +
+ | | RuleID=20 | W | C | Padding |
+ + -------------- + --------- + ----- + - + ------- +
+ | XXXX | 1 byte | 0 0 | 1 | 5 bits |
+
+ Figure 27: Uplink Example: LoRaWAN Packet 5 - SCHC ACK
+
+A.3. Downlink
+
+ An applicative data of 155 bytes is passed to the SCHC compression
+ layer. Rule 1 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.
+
+ | RuleID | Compression residue | Payload |
+ + ------ + ------------------- + --------- +
+ | 1 | 21 bits | 127 bytes |
+
+ Figure 28: Downlink Example: SCHC Message
+
+ The current LoRaWAN MTU is 51 bytes; no FOpts are used by the LoRaWAN
+ protocol: 51 bytes are available for SCHC payload + FPort field; the
+ applicative data has to be fragmented.
+
+ | LoRaWAN Header | LoRaWAN payload (51 bytes) |
+ + ---- + ---------- + -------------------------------------- +
+ | | RuleID=21 | W = 0 | FCN = 0 | 1 tile |
+ + ---- + ---------- + ------ + ------- + ------------------- +
+ | XXXX | 1 byte | 1 bit | 1 bit | 50 bytes and 6 bits |
+
+ Figure 29: Downlink Example: LoRaWAN Packet 1 - SCHC Fragment 1
+
+ The tile content is described in Figure 30
+
+ | RuleID | Compression residue | Payload |
+ + ------ + ------------------- + ------------------ +
+ | 1 | 21 bits | 48 bytes and 1 bit |
+
+ Figure 30: Downlink Example: First Tile Content
+
+ The receiver answers with a SCHC ACK:
+
+ | LoRaWAN Header | LoRaWAN payload |
+ + ---- + --------- + -------------------------------- +
+ | | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 |
+ + ---- + --------- + ----- + ----- + ---------------- +
+ | XXXX | 1 byte | 1 bit | 1 bit | 6 bits |
+
+ Figure 31: Downlink Example: LoRaWAN Packet 2 - SCHC ACK
+
+ The second downlink is sent, two FOpts:
+
+ | LoRaWAN Header | LoRaWAN payload (49 bytes) |
+ + --------------------------- + ------------------------------------- +
+ | | FOpts | RuleID=21 | W = 1 | FCN = 0 | 1 tile |
+ + ---- + ------- + ---------- + ----- + ------- + ------------------- +
+ | XXXX | 2 bytes | 1 byte | 1 bit | 1 bit | 48 bytes and 6 bits |
+
+ Figure 32: Downlink Example: LoRaWAN Packet 3 - SCHC Fragment 2
+
+ The receiver answers with a SCHC ACK:
+
+ | LoRaWAN Header | LoRaWAN payload |
+ + ---- + --------- + -------------------------------- +
+ | | RuleID=21 | W = 1 | C = 1 | Padding=b'000000 |
+ + ---- + --------- + ----- + ----- + ---------------- +
+ | XXXX | 1 byte | 1 bit | 1 bit | 6 bits |
+
+ Figure 33: Downlink Example: LoRaWAN Packet 4 - SCHC ACK
+
+ The last downlink is sent, no FOpts:
+
+ | LoRaWAN Header | LoRaWAN payload (37 bytes) |
+ + ---- + ------- + -------------------------------------------------- +
+ | | RuleID | W | FCN | RCS | 1 tile | Padding |
+ | | 21 | 0 | 1 | | | b'00000 |
+ + ---- + ------- + ----- + ----- + ------- + -------------- + ------- +
+ | XXXX | 1 byte | 1 bit | 1 bit | 4 bytes | 31 bytes+1 bit | 5 bits |
+
+ Figure 34: Downlink Example: LoRaWAN Packet 5 - All-1 SCHC Message
+
+ The receiver answers to the sender with a SCHC ACK:
+
+ | LoRaWAN Header | LoRaWAN payload |
+ + ---- + --------- + -------------------------------- +
+ | | RuleID=21 | W = 0 | C = 1 | Padding=b'000000 |
+ + ---- + --------- + ----- + ----- + ---------------- +
+ | XXXX | 1 byte | 1 bit | 1 bit | 6 bits |
+
+ Figure 35: Downlink Example: LoRaWAN Packet 6 - SCHC ACK
+
+Acknowledgements
+
+ 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 Munoz, Alexander Pelov, Pascal Thubert, and
+ Laurent Toutain for useful design considerations, reviews, and
+ comments.
+
+ LoRaWAN is a registered trademark of the LoRa Alliance.
+
+Contributors
+
+ Contributors ordered by family name.
+
+ Vincent Audebert
+ EDF R&D
+
+ Email: vincent.audebert@edf.fr
+
+
+ Julien Catalano
+ Kerlink
+
+ Email: j.catalano@kerlink.fr
+
+
+ Michael Coracin
+ Semtech
+
+ Email: mcoracin@semtech.com
+
+
+ Marc Le Gourrierec
+ Sagemcom
+
+ Email: marc.legourrierec@sagemcom.com
+
+
+ Nicolas Sornin
+ Chirp Foundation
+
+ Email: nicolas.sornin@chirpfoundation.org
+
+
+ Alper Yegin
+ Actility
+
+ Email: alper.yegin@actility.com
+
+
+Authors' Addresses
+
+ Olivier Gimenez (editor)
+ Semtech
+ 14 Chemin des Clos
+ Meylan
+ France
+
+ Email: ogimenez@semtech.com
+
+
+ Ivaylo Petrov (editor)
+ Acklio
+ 1137A Avenue des Champs Blancs
+ 35510 Cesson-Sévigné Cedex
+ France
+
+ Email: ivaylo@ackl.io