rfc9442.original   rfc9442.txt 
lpwan Working Group JC. Zuniga Internet Engineering Task Force (IETF) JC. Zúñiga
Internet-Draft Request for Comments: 9442
Intended status: Standards Track C. Gomez Category: Standards Track C. Gomez
Expires: 7 August 2023 S. Aguilar ISSN: 2070-1721 S. Aguilar
Universitat Politecnica de Catalunya Universitat Politècnica de Catalunya
L. Toutain L. Toutain
IMT-Atlantique IMT-Atlantique
S. Cespedes S. Céspedes
Concordia University Concordia University
D. Wistuba D. Wistuba
NIC Labs, Universidad de Chile NIC Labs, Universidad de Chile
J. Boite J. Boite
Unabiz (Sigfox) Unabiz (Sigfox)
3 February 2023 July 2023
SCHC over Sigfox LPWAN Static Context Header Compression (SCHC) over Sigfox Low-Power Wide Area
draft-ietf-lpwan-schc-over-sigfox-23 Network (LPWAN)
Abstract Abstract
The Static Context Header Compression and fragmentation (SCHC) The Static Context Header Compression (SCHC) and fragmentation
specification (RFC8724) describes a generic framework for application specification (RFC 8724) describes a generic framework for
header compression and fragmentation modes designed for Low Power application header compression and fragmentation modes designed for
Wide Area Network (LPWAN) technologies. The present document defines Low-Power Wide Area Network (LPWAN) technologies. This document
a profile of SCHC over Sigfox LPWAN, and provides optimal parameter defines a profile of SCHC over Sigfox LPWAN and provides optimal
values and modes of operation. parameter values and modes of operation.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 7841.
This Internet-Draft will expire on 7 August 2023. 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/rfc9442.
Copyright Notice Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the Copyright (c) 2023 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Terminology
3. SCHC over Sigfox . . . . . . . . . . . . . . . . . . . . . . 4 3. SCHC over Sigfox
3.1. Network Architecture . . . . . . . . . . . . . . . . . . 4 3.1. Network Architecture
3.2. Uplink . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2. Uplink
3.3. Downlink . . . . . . . . . . . . . . . . . . . . . . . . 7 3.3. Downlink
3.3.1. SCHC ACK on Downlink . . . . . . . . . . . . . . . . 8 3.3.1. SCHC ACK on Downlink
3.4. SCHC Rules . . . . . . . . . . . . . . . . . . . . . . . 9 3.4. SCHC Rules
3.5. Fragmentation . . . . . . . . . . . . . . . . . . . . . . 9 3.5. Fragmentation
3.5.1. Uplink Fragmentation . . . . . . . . . . . . . . . . 10 3.5.1. Uplink Fragmentation
3.5.2. Downlink Fragmentation . . . . . . . . . . . . . . . 15 3.5.2. Downlink Fragmentation
3.6. SCHC over Sigfox F/R Message Formats . . . . . . . . . . 16 3.6. SCHC over Sigfox F/R Message Formats
3.6.1. Uplink No-ACK Mode: Single-byte SCHC Header . . . . . 16 3.6.1. Uplink No-ACK Mode: Single-Byte SCHC Header
3.6.2. Uplink ACK-on-Error Mode: Single-byte SCHC Header . . 18 3.6.2. Uplink ACK-on-Error Mode: Single-Byte SCHC Header
3.6.3. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 3.6.3. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 1
1 . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.6.4. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 2
3.6.4. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 3.6.5. Downlink ACK-Always Mode: Single-Byte SCHC Header
2 . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.7. Padding
3.6.5. Downlink ACK-Always Mode: Single-byte SCHC Header . . 25 4. Fragmentation Rules Examples
3.7. Padding . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.1. Uplink Fragmentation Rules Examples
4. Fragmentation Rules Examples . . . . . . . . . . . . . . . . 27 4.2. Downlink Fragmentation Rules Example
4.1. Uplink Fragmentation Rules Examples . . . . . . . . . . . 27 5. Fragmentation Sequence Examples
4.2. Downlink Fragmentation Rules Example . . . . . . . . . . 29 5.1. Uplink No-ACK Examples
5. Fragmentation Sequence Examples . . . . . . . . . . . . . . . 29 5.2. Uplink ACK-on-Error Examples: Single-Byte SCHC Header
5.1. Uplink No-ACK Examples . . . . . . . . . . . . . . . . . 29 5.3. SCHC Abort Examples
5.2. Uplink ACK-on-Error Examples: Single-byte SCHC Header . . 30 6. Security Considerations
5.3. SCHC Abort Examples . . . . . . . . . . . . . . . . . . . 36 7. IANA Considerations
6. Security considerations . . . . . . . . . . . . . . . . . . . 37 8. References
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38 8.1. Normative References
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 38 8.2. Informative References
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 38 Acknowledgements
9.1. Normative References . . . . . . . . . . . . . . . . . . 38 Authors' Addresses
9.2. Informative References . . . . . . . . . . . . . . . . . 39
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 40
1. Introduction 1. Introduction
The Generic Framework for Static Context Header Compression and The Generic Framework for Static Context Header Compression (SCHC)
Fragmentation (SCHC) specification [RFC8724] can be used in and Fragmentation specification [RFC8724] can be used in conjunction
conjunction with any of the four LPWAN technologies described in with any of the four LPWAN technologies described in [RFC8376].
[RFC8376]. These LPWANs have similar characteristics such as star- These LPWANs have similar characteristics, such as star-oriented
oriented topologies, network architecture, connected devices with topologies, network architecture, connected devices with built-in
built-in applications, etc. applications, etc.
SCHC offers a considerable degree of flexibility to accommodate all SCHC offers a considerable degree of flexibility to accommodate all
these LPWAN technologies. Even though there are a great number of these LPWAN technologies. Even though there are a great number of
similarities between them, some differences exist with respect to the similarities between them, some differences exist with respect to the
transmission characteristics, payload sizes, etc. Hence, there are transmission characteristics, payload sizes, etc. Hence, there are
optimal parameters and modes of operation that can be used when SCHC optimal parameters and modes of operation that can be used when SCHC
is used in conjunction with a specific LPWAN technology. is used in conjunction with a specific LPWAN technology.
Sigfox is an LPWAN technology that offers energy-efficient Sigfox is an LPWAN technology that offers energy-efficient
connectivity for devices at a very low cost. Sigfox complete connectivity for devices at a very low cost. Complete Sigfox
documentation can be found in [sigfox-docs]. Sigfox aims to provide documentation can be found in [sigfox-docs]. Sigfox aims to provide
a very wide area network composed of Base Stations that receive short a very wide area network composed of Base Stations that receive short
uplink messages (up to 12 bytes in size) sent by devices over the Uplink messages (up to 12 bytes in size) sent by devices over the
long-range Sigfox radio protocol, as described in [RFC8376]. Base long-range Sigfox radio protocol, as described in [RFC8376]. Base
Stations then forward messages to the Sigfox Cloud infrastructure for Stations then forward messages to the Sigfox Cloud infrastructure for
further processing (e.g., to offer geolocation services) and final further processing (e.g., to offer geolocation services) and final
delivery to the customer. Base Stations also relay downlink messages delivery to the customer. Base Stations also relay Downlink messages
(with a fixed 8 bytes size) sent by the Sigfox Cloud to the devices, (with a fixed 8-byte size) sent by the Sigfox Cloud to the devices,
downlink messages being generated when devices explicitly request for i.e., Downlink messages are being generated when devices explicitly
it with a flag in an uplink message. With SCHC functionalities, the request these messages with a flag in an Uplink message. With SCHC
Sigfox network offers more reliable communications (including functionalities, the Sigfox network offers more reliable
recovery of lost messages) and is able to convey extended-size communications (including recovery of lost messages) and is able to
payloads (allowing for fragmentation/reassembly of messages) convey extended-size payloads (allowing for fragmentation/reassembly
[sigfox-spec]. of messages) [sigfox-spec].
This document describes the parameters, settings, and modes of This document describes the parameters, settings, and modes of
operation to be used when SCHC is implemented over a Sigfox LPWAN. operation to be used when SCHC is implemented over a Sigfox LPWAN.
The set of parameters forms a "SCHC over Sigfox profile". The SCHC The set of parameters forms a "SCHC over Sigfox Profile". The SCHC
over Sigfox Profile is applicable to the Sigfox Radio specification over Sigfox Profile is applicable to the Sigfox Radio specification
versions up to v1.6/March 2022 [sigfox-spec] (support for future versions up to v1.6/March 2022 [sigfox-spec] (support for future
versions would have to be assessed). versions would have to be assessed).
2. Terminology 2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in
14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
It is assumed that the reader is familiar with the terms and It is assumed that the reader is familiar with the terms and
mechanisms defined in [RFC8376] and in [RFC8724]. Also, it is mechanisms defined in [RFC8376] and [RFC8724]. Also, it is assumed
assumed that the reader is familiar with Sigfox terminology that the reader is familiar with Sigfox terminology [sigfox-spec].
[sigfox-spec].
3. SCHC over Sigfox 3. SCHC over Sigfox
The Generic SCHC Framework described in [RFC8724] takes advantage of The Generic SCHC Framework described in [RFC8724] takes advantage of
previous knowledge of traffic flows existing in LPWAN applications to previous knowledge of traffic flows existing in LPWAN applications to
avoid context synchronization. avoid context synchronization.
Contexts need to be stored and pre-configured on both ends. This can Contexts need to be stored and pre-configured on both ends. This can
be done either by using a provisioning protocol, by out-of-band be done either by using a provisioning protocol, by out-of-band
means, or by pre-provisioning them (e.g., at manufacturing time). means, or by pre-provisioning them (e.g., at manufacturing time).
For example, the context exchange can be done by using For example, the context exchange can be done by using the Network
NETCONF[RFC6241] with SSH, RESTCONF[RFC8040] with HTTPs, and Configuration Protocol (NETCONF) [RFC6241] with Secure Shell (SSH),
CORECONF[I-D.ietf-core-comi] with CoAP[RFC7252] as provisioning RESTCONF [RFC8040] with secure HTTP methods, and CoAP Management
protocols. The contexts can be encoded in XML under NETCONF, in Interface (CORECONF) [CORE-COMI] with the Constrained Application
JSON[RFC8259] under RESTCONF and in CBOR[RFC8949] under CORECONF. Protocol (CoAP) [RFC7252] as provisioning protocols. The contexts
The way contexts are configured and stored on both ends is out of the can be encoded in XML under NETCONF, in JSON [RFC8259] under
scope of this document. RESTCONF, and in Concise Binary Object Representation (CBOR)
[RFC8949] under CORECONF. The way contexts are configured and stored
on both ends is out of the scope of this document.
3.1. Network Architecture 3.1. Network Architecture
Figure 1 represents the architecture for Compression/Decompression Figure 1 represents the architecture for Compression/Decompression
(C/D) and Fragmentation/Reassembly (F/R) based on the terminology (C/D) and Fragmentation/Reassembly (F/R) based on the terminology
defined in [RFC8376], where the Radio Gateway (RGW) is a Sigfox Base defined in [RFC8376], where the Radio Gateway (RGW) is a Sigfox Base
Station and the Network Gateway (NGW) is the Sigfox cloud-based Station and the Network Gateway (NGW) is the Sigfox cloud-based
Network. Network.
Sigfox Device Application Sigfox Device Application
skipping to change at page 5, line 31 skipping to change at line 198
+---------+ +--------------+ +---------+ Network +---------+ +--------------+ +---------+ Network
------- Uplink message ------> ------- Uplink message ------>
<------- Downlink message ------ <------- Downlink message ------
Legend: Legend:
$, ~ : Radio link $, ~ : Radio link
= : Internal Sigfox Network = : Internal Sigfox Network
. : External IP-based Network . : External IP-based Network
Figure 1: Network Architecture Figure 1: Network Architecture
In the case of the global Sigfox Network, RGWs (or Base Stations) are In the case of the global Sigfox network, RGWs (or Base Stations) are
distributed over multiple countries wherever the Sigfox LPWAN service distributed over multiple countries wherever the Sigfox LPWAN service
is provided. The NGW (or cloud-based Sigfox Core Network) is a is provided. The NGW (or cloud-based Sigfox Core Network) is a
single entity that connects to all RGWs (Sigfox Base Stations) in the single entity that connects to all RGWs (Sigfox Base Stations) in the
world, providing hence a global single star network topology. world, hence providing a global single star Network topology.
The Sigfox Device sends application packets that are compressed and/ The Sigfox Device sends application packets that are compressed and/
or fragmented by a SCHC C/D + F/R to reduce headers size and/or or fragmented by a SCHC C/D + F/R to reduce header size and/or
fragment the packet. The resulting SCHC Message is sent over a layer fragment the packet. The resulting SCHC message is sent over a layer
two (L2) Sigfox frame to the Sigfox Base Stations, which then two (L2) Sigfox frame to the Sigfox Base Stations, which then forward
forwards the SCHC Message to the Network Gateway (NGW). The NGW then the SCHC message to the NGW. The NGW then delivers the SCHC message
delivers the SCHC Message and associated gathered metadata to the and associated gathered metadata to the Network SCHC C/D + F/R.
Network SCHC C/D + F/R.
The Sigfox Network (NGW) communicates with the Network SCHC C/D + F/R The Sigfox cloud-based Network communicates with the Network SCHC C/D
for compression/decompression and/or for fragmentation/reassembly. + F/R for compression/decompression and/or for fragmentation/
The Network SCHC C/D + F/R shares the same set of rules as the Device reassembly. The Network SCHC C/D + F/R shares the same set of Rules
SCHC C/D + F/R. The Network SCHC C/D + F/R can be collocated with as the device SCHC C/D + F/R. The Network SCHC C/D + F/R can be
the NGW or it could be located in a different place, as long as a collocated with the NGW or it could be located in a different place,
tunnel or secured communication is established between the NGW and as long as a tunnel or secured communication is established between
the SCHC C/D + F/R functions. After decompression and/or reassembly, the NGW and the SCHC C/D + F/R functions. After decompression and/or
the packet can be forwarded over the Internet to one (or several) reassembly, the packet can be forwarded over the Internet to one (or
LPWAN Application Server(s) (App). several) LPWAN Application Server(s) (App(s)).
The SCHC C/D + F/R processes are bidirectional, so the same The SCHC C/D + F/R processes are bidirectional, so the same
principles are applicable on both Uplink (UL) and Downlink (DL). principles are applicable on both Uplink (UL) and Downlink (DL).
3.2. Uplink 3.2. Uplink
Uplink Sigfox transmissions occur in repetitions over different times Uplink Sigfox transmissions occur in repetitions over different times
and frequencies. Besides time and frequency diversities, the Sigfox and frequencies. Besides time and frequency diversities, the Sigfox
network also provides spatial diversity, as potentially an Uplink network also provides spatial diversity, as potentially an Uplink
message will be received by several base stations. The uplink message will be received by several Base Stations. The Uplink
message application payload size can be up to 12 bytes. message application payload size can be up to 12 bytes.
Since all messages are self-contained and base stations forward all Since all messages are self-contained and Base Stations forward all
these messages back to the same Sigfox Network, multiple input copies these messages back to the same Sigfox network, multiple input copies
can be combined at the NGW providing for extra reliability based on can be combined at the NGW, providing for extra reliability based on
the triple diversity (i.e., time, space and frequency). the triple diversity (i.e., time, space, and frequency).
A detailed description of the Sigfox Radio Protocol can be found in A detailed description of the Sigfox radio protocol can be found in
[sigfox-spec]. [sigfox-spec].
Messages sent from the Device to the Network are delivered by the Messages sent from the device to the Network are delivered by the
Sigfox network (NGW) to the Network SCHC C/D + F/R through a Sigfox cloud-based Network to the Network SCHC C/D + F/R through a
callback/API with the following information: callback/API with the following information:
* Device ID * Device ID
* Message Sequence Number * Message Sequence Number
* Message Payload * Message Payload
* Message Timestamp * Message Timestamp
* Device Geolocation (optional) * Device Geolocation (optional)
* Received Signal Strength Indicator (RSSI) (optional) * Received Signal Strength Indicator (RSSI) (optional)
* Device Temperature (optional) * Device Temperature (optional)
* Device Battery Voltage (optional) * Device Battery Voltage (optional)
The Device ID is a globally unique identifier assigned to the Device,
The Device ID is a globally unique identifier assigned to the device,
which is included in the Sigfox header of every message. The Message which is included in the Sigfox header of every message. The Message
Sequence Number is a monotonically increasing number identifying the Sequence Number is a monotonically increasing number identifying the
specific transmission of this Uplink message, and it is also part of specific transmission of this Uplink message, and it is also part of
the Sigfox header. The Message Payload corresponds to the payload the Sigfox header. The Message Payload corresponds to the payload
that the Device has sent in the Uplink transmission. Battery that the device has sent in the Uplink transmission. Battery
Voltage, temperature and RSSI values are sent in the confirmation Voltage, Device Temperature, and RSSI values are sent in the
control message, which is mandatorially sent by the device after the confirmation control message, which is mandatorily sent by the device
successful reception of a downlink message (see [sigfox-callbacks] after the successful reception of a Downlink message (see
Section 5.2). [sigfox-callbacks], Section 5.2).
The Message Timestamp, Device Geolocation, RSSI, Device Temperature The Message Timestamp, Device Geolocation, RSSI, Device Temperature,
and Device Battery Voltage are metadata parameters provided by the and Device Battery Voltage are metadata parameters provided by the
Network. Network.
A detailed description of the Sigfox callbacks/APIs can be found in A detailed description of the Sigfox callbacks/APIs can be found in
[sigfox-callbacks]. [sigfox-callbacks].
Only messages that have passed the L2 Cyclic Redundancy Check (CRC) Only messages that have passed the L2 Cyclic Redundancy Check (CRC)
at network reception are delivered by the Sigfox Network to the at Network reception are delivered by the Sigfox network to the
Network SCHC C/D + F/R. Network SCHC C/D + F/R.
The L2 Word Size used by Sigfox is 1 byte (8 bits). The L2 Word size used by Sigfox is 1 byte (8 bits).
Figure 2 shows a SCHC Message sent over Sigfox, where the SCHC Figure 2 shows a SCHC message sent over Sigfox, where the SCHC
Message could be a full SCHC Packet (e.g., compressed) or a SCHC message could be a full SCHC Packet (e.g., compressed) or a SCHC
Fragment (e.g., a piece of a bigger SCHC Packet). Fragment (e.g., a piece of a bigger SCHC Packet).
| Sigfox Header | Sigfox payload | | Sigfox Header | Sigfox Payload |
+---------------+---------------- + +---------------+---------------- +
| SCHC message | | SCHC Message |
Figure 2: SCHC Message in Sigfox Figure 2: SCHC Message in Sigfox
3.3. Downlink 3.3. Downlink
Downlink transmissions are Device-driven and can only take place Downlink transmissions are device-driven and can only take place
following an Uplink communication that so indicates. Hence, a Sigfox following an Uplink communication that indicates Downlink
Device explicitly indicates its intention to receive a Downlink communication can be performed. Hence, a Sigfox Device explicitly
message (with a size of 8 bytes) using a Downlink request flag when indicates its intention to receive a Downlink message (with a size of
sending the preceding Uplink message to the network. The Downlink 8 bytes) using a Downlink request flag when sending the preceding
request flag is part of the Sigfox protocol headers. After Uplink message to the Network. The Downlink request flag is part of
completing the Uplink transmission, the Device opens a fixed window the Sigfox protocol headers. After completing the Uplink
for Downlink reception. The delay and duration of the reception transmission, the device opens a fixed window for Downlink reception.
opportunity window have fixed values. If there is a Downlink message The delay and duration of the reception opportunity window have fixed
to be sent for this given Device (e.g., either a response to the values. If there is a Downlink message to be sent for this given
Uplink message or queued information waiting to be transmitted), the device (e.g., either a response to the Uplink message or queued
network transmits this message to the Device during the reception information waiting to be transmitted), the Network transmits this
window. If no message is received by the Device after the reception message to the device during the reception window. If no message is
opportunity window has elapsed, the Device closes the reception received by the device after the reception opportunity window has
window opportunity and gets back to the normal mode (e.g., continue elapsed, the device closes the reception window opportunity and gets
Uplink transmissions, sleep, stand-by, etc.) back to the normal mode (e.g., continue Uplink transmissions, sleep,
standby, etc.).
When a Downlink message is sent to a Device, a reception When a Downlink message is sent to a device, a reception
acknowledgement is generated by the Device and sent back to the acknowledgement is generated by the device, sent back to the Network
Network through the Sigfox radio protocol and reported in the Sigfox through the Sigfox radio protocol, and reported in the Sigfox network
Network backend. backend.
A detailed description of the Sigfox Radio Protocol can be found in A detailed description of the Sigfox radio protocol can be found in
[sigfox-spec] and a detailed description of the Sigfox callbacks/APIs [sigfox-spec], and a detailed description of the Sigfox callbacks/
can be found in [sigfox-callbacks]. A Downlink request flag can be APIs can be found in [sigfox-callbacks]. A Downlink request flag can
included in the information exchange between the Sigfox Network and be included in the information exchange between the Sigfox network
Network SCHC. and Network SCHC.
3.3.1. SCHC ACK on Downlink 3.3.1. SCHC ACK on Downlink
As explained previously, Downlink transmissions are Device-driven and As explained previously, Downlink transmissions are driven by devices
can only take place following a specific Uplink transmission that and can only take place following a specific Uplink transmission that
indicates and allows a following Downlink opportunity. For this indicates and allows a following Downlink opportunity. For this
reason, when SCHC bidirectional services are used (e.g., Ack-on-Error reason, when SCHC bidirectional services are used (e.g., ACK-on-Error
fragmentation mode) the SCHC protocol implementation needs to fragmentation mode), the SCHC protocol implementation needs to
consider the times when a Downlink message (e.g., SCHC ACK) can be consider the times when a Downlink message (e.g., SCHC
sent and/or received. Acknowledgement (ACK)) can be sent and/or received.
For the Uplink ACK-on-Error fragmentation mode, a Downlink For the Uplink ACK-on-Error fragmentation mode, a Downlink
opportunity MUST be indicated by the last fragment of every window, opportunity MUST be indicated by the last fragment of every window,
which is signalled by a specific value of the Fragment Compressed which is signalled by a specific value of the Fragment Compressed
Number (FCN) value, i.e., FCN = All-0, or FCN = All-1. The FCN is Number (FCN) value, i.e., FCN = All-0 or FCN = All-1. The FCN is the
the tile index in a specific window. The combination of the FCN and tile index in a specific window. The combination of the FCN and the
the window number uniquely identifies a SCHC Fragment as explained in window number uniquely identifies a SCHC Fragment, as explained in
[RFC8724]. The Device sends the fragments in sequence and, after [RFC8724]. The device sends the fragments in sequence and, after
transmitting the FCN = All-0 or FCN = All-1, it opens up a reception transmitting FCN = All-0 or FCN = All-1, it opens up a reception
opportunity. The Network SCHC can then decide to respond at that opportunity. The Network SCHC can then decide to respond at that
opportunity (or wait for a further one) with a SCHC ACK indicating opportunity (or wait for a further one) with a SCHC ACK, indicating
that there are missing fragments from the current or previous that there are missing fragments from the current or previous
windows. If there is no SCHC ACK to be sent, or if the network windows. If there is no SCHC ACK to be sent, or if the Network
decides to wait for a further Downlink transmission opportunity, then decides to wait for a further Downlink transmission opportunity, then
no Downlink transmission takes place at that opportunity and after a no Downlink transmission takes place at that opportunity and the
timeout the Uplink transmissions continue. Intermediate SCHC Uplink transmissions continue after a timeout. Intermediate SCHC
fragments with FCN different from All-0 or All-1 MUST NOT use the Fragments with FCNs that are different from All-0 or All-1 MUST NOT
Downlink request flag to request a SCHC ACK. use the Downlink request flag to request a SCHC ACK.
3.4. SCHC Rules 3.4. SCHC Rules
The RuleID MUST be included in the SCHC header. The total number of The RuleID MUST be included in the SCHC header. The total number of
rules to be used affects directly the RuleID field size, and Rules to be used directly affects the RuleID field size, and
therefore the total size of the fragmentation header. For this therefore the total size of the fragmentation header. For this
reason, it is RECOMMENDED to keep the number of rules that are reason, it is RECOMMENDED to keep the number of Rules that are
defined for a specific device to the minimum possible. Large RuleID defined for a specific device to the minimum possible. Large RuleID
sizes (and thus larger fragmentation header) is acceptable for sizes (and thus larger fragmentation headers) are acceptable for
devices without significant energy constraints (e.g., a sensor that devices without significant energy constraints (e.g., a sensor that
is powered by the electricity grid). is powered by the electricity grid).
RuleIDs can be used to differentiate data traffic classes (e.g., QoS, RuleIDs can be used to differentiate data traffic classes (e.g., QoS,
control vs. data, etc.), and data sessions. They can also be used to control vs. data, etc.) and data sessions. They can also be used to
interleave simultaneous fragmentation sessions between a Device and interleave simultaneous fragmentation sessions between a device and
the Network. the Network.
3.5. Fragmentation 3.5. Fragmentation
The SCHC specification [RFC8724] defines a generic fragmentation The SCHC specification [RFC8724] defines a generic fragmentation
functionality that allows sending data packets or files larger than functionality that allows sending data packets or files larger than
the maximum size of a Sigfox payload. The functionality also defines the maximum size of a Sigfox payload. The functionality also defines
a mechanism to send reliably multiple messages, by allowing to resend a mechanism to reliably send multiple messages by allowing to
selectively any lost fragments. selectively resend any lost fragments.
The SCHC fragmentation supports several modes of operation. These The SCHC fragmentation supports several modes of operation. These
modes have different advantages and disadvantages depending on the modes have different advantages and disadvantages, depending on the
specifics of the underlying LPWAN technology and application Use specifics of the underlying LPWAN technology and application use
Case. This section describes how the SCHC fragmentation case. This section describes how the SCHC fragmentation
functionality should optimally be implemented when used over a Sigfox functionality should optimally be implemented when used over a Sigfox
LPWAN for the most typical Use Case applications. LPWAN for the most typical use case applications.
As described in section 8.2.3 of [RFC8724], the integrity of the As described in Section 8.2.3 of [RFC8724], the integrity of the
fragmentation-reassembly process of a SCHC Packet MUST be checked at fragmentation-reassembly process of a SCHC Packet MUST be checked at
the receiver end. Since only Uplink/Downlink messages/fragments that the receiver end. Since only Uplink/Downlink messages/fragments that
have passed the Sigfox CRC-check are delivered to the Network/Sigfox have passed the Sigfox CRC-check are delivered to the Network/Sigfox
Device SCHC C/D + F/R, integrity can be guaranteed when no Device SCHC C/D + F/R, integrity can be guaranteed when no
consecutive messages are missing from the sequence and all FCN consecutive messages are missing from the sequence and all FCN
bitmaps are complete. With this functionality in mind, and in order bitmaps are complete. With this functionality in mind, and in order
to save protocol and processing overhead, the use of a Reassembly to save protocol and processing overhead, the use of a Reassembly
Check Sequence (RCS) as described in Section 3.5.1.5 MUST be used. Check Sequence (RCS), as described in Section 3.5.1.5, MUST be used.
3.5.1. Uplink Fragmentation 3.5.1. Uplink Fragmentation
Sigfox Uplink transmissions are completely asynchronous and take Sigfox Uplink transmissions are completely asynchronous and take
place in any random frequency of the allowed Uplink bandwidth place in any random frequency of the allowed Uplink bandwidth
allocation. In addition, devices may go to deep sleep mode, and then allocation. In addition, devices may go to deep sleep mode and then
wake up and transmit whenever there is a need to send information to wake up and transmit whenever there is a need to send information to
the network, as there is no need to perform any network attachment, the Network, as there is no need to perform any Network attachment,
synchronization, or other procedure before transmitting a data synchronization, or other procedures before transmitting a data
packet. packet.
Since Uplink transmissions are asynchronous, a SCHC fragment can be Since Uplink transmissions are asynchronous, a SCHC Fragment can be
transmitted at any given time by the Device. Sigfox Uplink messages transmitted at any given time by the device. Sigfox Uplink messages
are fixed in size, and as described in [RFC8376] they can carry 0-12 are fixed in size, and as described in [RFC8376], they can carry a
bytes payload. Hence, a single SCHC Tile size per fragmentation mode payload of 0-12 bytes (0-96 bits). Hence, a single SCHC Tile size,
can be defined so that every Sigfox message always carries one SCHC per fragmentation mode, can be defined so that every Sigfox message
Tile. always carries one SCHC Tile.
When the ACK-on-Error mode is used for Uplink fragmentation, the SCHC When the ACK-on-Error mode is used for Uplink fragmentation, the SCHC
Compound ACK defined in [I-D.ietf-lpwan-schc-compound-ack]) MUST be Compound ACK defined in [RFC9441] MUST be used in the Downlink
used in the Downlink responses. responses.
3.5.1.1. SCHC Sender-Abort 3.5.1.1. SCHC Sender-Abort
As defined in [RFC8724], a SCHC Sender-Abort can be triggered when As defined in [RFC8724], a SCHC Sender-Abort can be triggered when
the number of SCHC ACK REQ attempts is greater than or equal to the number of SCHC ACK REQ attempts is greater than or equal to
MAX_ACK_REQUESTS. In the case of SCHC over Sigfox, a SCHC Sender- MAX_ACK_REQUESTS. In the case of SCHC over Sigfox, a SCHC Sender-
Abort MUST be sent if the number of repeated All-1s sent in sequence, Abort MUST be sent if the number of repeated All-1s sent in sequence,
without a Compound ACK reception inbetween, is greater than or equal without a Compound ACK reception in between, is greater than or equal
to MAX_ACK_REQUESTS. to MAX_ACK_REQUESTS.
3.5.1.2. SCHC Receiver-Abort 3.5.1.2. SCHC Receiver-Abort
As defined in [RFC8724], a SCHC Receiver-Abort is triggered when the As defined in [RFC8724], a SCHC Receiver-Abort is triggered when the
receiver has no RuleID and DTag pairs available for a new session. receiver has no RuleID and DTag pairs available for a new session.
In the case of this profile a SCHC Receiver-Abort MUST be sent if, In the case of this profile, a SCHC Receiver-Abort MUST be sent if,
for a single device, all the RuleIDs are being processed by the for a single device, all the RuleIDs are being processed by the
receiver (i.e., have an active session) at a certain time and a new receiver (i.e., have an active session) at a certain time and a new
one is requested, or if the RuleID of the fragment is not valid. one is requested or if the RuleID of the fragment is not valid.
A SCHC Receiver-Abort MUST be triggered when the Inactivity Timer A SCHC Receiver-Abort MUST be triggered when the Inactivity Timer
expires. expires.
MAX_ACK_REQUESTS can be increased when facing high error rates. MAX_ACK_REQUESTS can be increased when facing high error rates.
Although a SCHC Receiver-Abort can be triggered at any point in time, Although a SCHC Receiver-Abort can be triggered at any point in time,
a SCHC Receiver-Abort Downlink message MUST only be sent when there a SCHC Receiver-Abort Downlink message MUST only be sent when there
is a Downlink transmission opportunity. is a Downlink transmission opportunity.
3.5.1.3. Single-byte SCHC Header for Uplink Fragmentation 3.5.1.3. Single-Byte SCHC Header for Uplink Fragmentation
3.5.1.3.1. Uplink No-ACK Mode: Single-byte SCHC Header 3.5.1.3.1. Uplink No-ACK Mode: Single-Byte SCHC Header
Single-byte SCHC Header No-ACK mode MUST be used for transmitting Single-byte SCHC Header No-ACK mode MUST be used for transmitting
short, non-critical packets that require fragmentation and do not short, non-critical packets that require fragmentation and do not
require full reliability. This mode can be used by Uplink-only require full reliability. This mode can be used by Uplink-only
devices that do not support Downlink communications, or by devices that do not support Downlink communications or by
bidirectional devices when they send non-critical data. Note that bidirectional devices when they send non-critical data. Note that
sending non-critical data by using a reliable fragmentation mode sending non-critical data by using a reliable fragmentation mode
(which is only possible for bidirectional devices) may incur (which is only possible for bidirectional devices) may incur
unnecessary overhead. unnecessary overhead.
Since there are no multiple windows in the No-ACK mode, the W bit is Since there are no multiple windows in the No-ACK mode, the W bit is
not present. However, it MUST use the FCN field to indicate the size not present. However, it MUST use the FCN field to indicate the size
of the data packet. In this sense, the data packet would need to be of the data packet. In this sense, the data packet would need to be
split into X fragments and, similarly to the other fragmentation split into X fragments and, similarly to the other fragmentation
modes, the first transmitted fragment would need to be marked with modes, the first transmitted fragment would need to be marked with
FCN = X-1. Consecutive fragments MUST be marked with decreasing FCN FCN = X-1. Consecutive fragments MUST be marked with decreasing FCN
values, having the last fragment marked with FCN = (All-1). Hence, values, having the last fragment marked with FCN = (All-1). Hence,
even though the No-ACK mode does not allow recovering missing even though the No-ACK mode does not allow recovering missing
fragments, it allows indicating implicitly the size of the expected fragments, it allows implicitly indicating the size of the expected
packet to the Network and hence detect at the receiver side whether packet to the Network and hence detects whether all fragments have
all fragments have been received or not. In case the FCN field is been received or not at the receiver side. In case the FCN field is
not used to indicate the size of the data packet, the Network can not used to indicate the size of the data packet, the Network can
detect whether all fragments have been received or not by using the detect whether all fragments have been received or not by using the
integrity check. integrity check.
When using the Single-byte SCHC Header for Uplink Fragmentation, the When using the Single-byte SCHC Header for Uplink fragmentation, the
Fragmentation Header MUST be of 8 bit size, and the Fragment header fragmentation header MUST be 8 bits in size and is composed as
is composed as follows: follows:
* RuleID size: 3 bits * RuleID size: 3 bits
* DTag size (T): 0 bit * DTag size (T): 0 bits
* Fragment Compressed Number (FCN) size (N): 5 bits * Fragment Compressed Number (FCN) size (N): 5 bits
Other F/R parameters MUST be configured as follows: Other F/R parameters MUST be configured as follows:
* As per [RFC8724], in the No-ACK mode the W (window) field is not * As per [RFC8724], in the No-ACK mode, the W (window) field is not
present. present.
* Regular tile size: 11 bytes * Regular tile size: 11 bytes
* All-1 tile size: 0 to 10 bytes * All-1 tile size: 0 to 10 bytes
* Inactivity Timer: Application-dependent. The default value is 12 * Inactivity Timer: Application-dependent. The default value is 12
hours. hours.
* RCS size: 5 bits * RCS size: 5 bits
The maximum SCHC Packet size is 340 bytes. The maximum SCHC Packet size is 340 bytes.
Section 3.6.1 presents SCHC Fragment format examples and Section 5.1 Section 3.6.1 presents SCHC Fragment format examples, and Section 5.1
provides fragmentation examples, using Single-byte SCHC Header No-ACK provides fragmentation examples, using Single-byte SCHC Header No-ACK
mode. mode.
3.5.1.3.2. Uplink ACK-on-Error Mode: Single-byte SCHC Header 3.5.1.3.2. Uplink ACK-on-Error Mode: Single-Byte SCHC Header
ACK-on-Error with single-byte header MUST be used for short to medium ACK-on-Error with a single-byte header MUST be used for short- to
size packets that need to be sent reliably. ACK-on-Error is optimal medium-sized packets that need to be sent reliably. ACK-on-Error is
for reliable SCHC Packet transmission over Sigfox transmissions, optimal for reliable SCHC Packet transmission over Sigfox
since it leads to a reduced number of ACKs in the lower capacity transmissions, since it leads to a reduced number of ACKs in the
Downlink channel. Also, Downlink messages can be sent asynchronously lower-capacity Downlink channel. Also, Downlink messages can be sent
and opportunistically. In contrast, ACK-Always would not minimize asynchronously and opportunistically. In contrast, ACK-Always would
the number of ACKs, and No-ACK would not allow reliable transmission. not minimize the number of ACKs, and No-ACK would not allow reliable
transmission.
Allowing transmission of packets/files up to 300 bytes long, the SCHC Allowing transmission of packets/files up to 300 bytes long, the SCHC
Uplink Fragmentation Header size is 8 bits in size and is composed as Uplink fragmentation header size is 8 bits in size and is composed as
follows: follows:
* RuleID size: 3 bits * RuleID size: 3 bits
* DTag size (T): 0 bit * DTag size (T): 0 bits
* Window index (W) size (M): 2 bits * Window index (W) size (M): 2 bits
* Fragment Compressed Number (FCN) size (N): 3 bits * Fragment Compressed Number (FCN) size (N): 3 bits
Other F/R parameters MUST be configured as follows: Other F/R parameters MUST be configured as follows:
* MAX_ACK_REQUESTS: 5 * MAX_ACK_REQUESTS: 5
* WINDOW_SIZE: 7 (i.e., the maximum FCN value is 0b110) * WINDOW_SIZE: 7 (i.e., the maximum FCN value is 0b110)
skipping to change at page 13, line 7 skipping to change at line 541
* All-1 tile size: 0 to 10 bytes * All-1 tile size: 0 to 10 bytes
* Retransmission Timer: Application-dependent. The default value is * Retransmission Timer: Application-dependent. The default value is
12 hours. 12 hours.
* Inactivity Timer: Application-dependent. The default value is 12 * Inactivity Timer: Application-dependent. The default value is 12
hours. hours.
* RCS size: 3 bits * RCS size: 3 bits
Section 3.6.2 presents SCHC Fragment format examples and Section 5.2 Section 3.6.2 presents SCHC Fragment format examples, and Section 5.2
provides fragmentation examples, using ACK-on-Error with single-byte provides fragmentation examples, using ACK-on-Error with a single-
header. byte header.
3.5.1.4. Two-byte SCHC Header for Uplink Fragmentation 3.5.1.4. Two-Byte SCHC Header for Uplink Fragmentation
ACK-on-Error with two-byte header MUST be used for medium-large size ACK-on-Error with a two-byte header MUST be used for medium- to
packets that need to be sent reliably. ACK-on-Error is optimal for large-sized packets that need to be sent reliably. ACK-on-Error is
reliable SCHC Packet transmission over Sigfox, since it leads to a optimal for reliable SCHC Packet transmission over Sigfox, since it
reduced number of ACKs in the lower capacity Downlink channel. Also, leads to a reduced number of ACKs in the lower-capacity Downlink
Downlink messages can be sent asynchronously and opportunistically. channel. Also, Downlink messages can be sent asynchronously and
In contrast, ACK-Always would not minimize the number of ACKs, and opportunistically. In contrast, ACK-Always would not minimize the
No-ACK would not allow reliable transmission. number of ACKs, and No-ACK would not allow reliable transmission.
3.5.1.4.1. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 1 3.5.1.4.1. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 1
In order to allow transmission of medium-large packets/files up to In order to allow transmission of medium to large packets/files up to
480 bytes long, the SCHC Uplink Fragmentation Header size is 16 bits 480 bytes long, the SCHC Uplink fragmentation header size is 16 bits
in size and composed as follows: in size and is composed as follows:
* RuleID size is: 6 bits * RuleID size: 6 bits
* DTag size (T) is: 0 bit * DTag size (T): 0 bits
* Window index (W) size (M): 2 bits * Window index (W) size (M): 2 bits
* Fragment Compressed Number (FCN) size (N): 4 bits. * Fragment Compressed Number (FCN) size (N): 4 bits
* RCS size: 4 bits * RCS size: 4 bits
Other F/R parameters MUST be configured as follows: Other F/R parameters MUST be configured as follows:
* MAX_ACK_REQUESTS: 5 * MAX_ACK_REQUESTS: 5
* WINDOW_SIZE: 12 (with a maximum value of FCN=0b1011) * WINDOW_SIZE: 12 (with a maximum value of FCN=0b1011)
* Regular tile size: 10 bytes * Regular tile size: 10 bytes
* All-1 tile size: 1 to 10 bytes * All-1 tile size: 1 to 10 bytes
* Retransmission Timer: Application-dependent. The default value is * Retransmission Timer: Application-dependent. The default value is
12 hours. 12 hours.
* Inactivity Timer: Application-dependent. The default value is 12 * Inactivity Timer: Application-dependent. The default value is 12
hours. hours.
Note that WINDOW_SIZE is limited to 12. This because, 4 windows (M = Note that WINDOW_SIZE is limited to 12. This is because 4 windows (M
2) with bitmaps of size 12 can be fitted in a single SCHC Compound = 2) with bitmaps of size 12 can be fitted in a single SCHC Compound
ACK. ACK.
Section 3.6.3 presents SCHC Fragment format examples, using ACK-on- Section 3.6.3 presents SCHC Fragment format examples, using ACK-on-
Error with two-byte header Option 1. Error with two-byte header Option 1.
3.5.1.4.2. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 2 3.5.1.4.2. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 2
In order to allow transmission of very large packets/files up to 2400 In order to allow transmission of very large packets/files up to 2400
bytes long, the SCHC Uplink Fragmentation Header size is 16 bits in bytes long, the SCHC Uplink fragmentation header size is 16 bits in
size and composed as follows: size and is composed as follows:
* RuleID size is: 8 bits * RuleID size: 8 bits
* DTag size (T) is: 0 bit * DTag size (T): 0 bits
* Window index (W) size (M): 3 bits * Window index (W) size (M): 3 bits
* Fragment Compressed Number (FCN) size (N): 5 bits. * Fragment Compressed Number (FCN) size (N): 5 bits
* RCS size: 5 bits * RCS size: 5 bits
Other F/R parameters MUST be configured as follows: Other F/R parameters MUST be configured as follows:
* MAX_ACK_REQUESTS: 5 * MAX_ACK_REQUESTS: 5
* WINDOW_SIZE: 31 (with a maximum value of FCN=0b11110) * WINDOW_SIZE: 31 (with a maximum value of FCN=0b11110)
* Regular tile size: 10 bytes * Regular tile size: 10 bytes
* All-1 tile size: 0 to 9 bytes * All-1 tile size: 0 to 9 bytes
* Retransmission Timer: Application-dependent. The default value is * Retransmission Timer: Application-dependent. The default value is
12 hours. 12 hours.
* Inactivity Timer: Application-dependent. The default value is 12 * Inactivity Timer: Application-dependent. The default value is 12
hours. hours.
Section 3.6.4 presents SCHC Fragment format examples, using ACK-on- Section 3.6.4 presents SCHC Fragment format examples, using ACK-on-
Error with two-byte header Option 1. Error with two-byte header Option 2.
3.5.1.5. All-1 SCHC Fragment and RCS behaviour 3.5.1.5. All-1 SCHC Fragment and RCS Behavior
For ACK-on-Error, as defined in [RFC8724], it is expected that the For ACK-on-Error, as defined in [RFC8724], it is expected that the
last SCHC fragment of the last window will always be delivered with last SCHC Fragment of the last window will always be delivered with
an All-1 FCN. Since this last window may not be full (i.e., it may an All-1 FCN. Since this last window may not be full (i.e., it may
be composed of fewer than WINDOW_SIZE fragments), an All-1 fragment be composed of fewer than WINDOW_SIZE fragments), an All-1 fragment
may follow a value of FCN higher than 1 (0b01). In this case, the may follow a value of FCN higher than 1 (0b01). In this case, the
receiver cannot determine from the FCN values alone whether there are receiver cannot determine from the FCN values alone whether there are
or not any missing fragments right before the All-1 fragment. or are not any missing fragments right before the All-1 fragment.
For Rules where the number of fragments in the last window is For Rules where the number of fragments in the last window is
unknown, an RCS field MUST be used, indicating the number of unknown, an RCS field MUST be used, indicating the number of
fragments in the last window, including the All-1. With this RCS fragments in the last window, including the All-1. With this RCS
value, the receiver can detect if there are missing fragments before value, the receiver can detect if there are missing fragments before
the All-1 and hence construct the corresponding SCHC ACK Bitmap the All-1 and hence construct the corresponding SCHC ACK Bitmap
accordingly, and send it in response to the All-1. accordingly and send it in response to the All-1.
3.5.2. Downlink Fragmentation 3.5.2. Downlink Fragmentation
In some LPWAN technologies, as part of energy-saving techniques, In some LPWAN technologies, as part of energy-saving techniques,
Downlink transmission is only possible immediately after an Uplink Downlink transmission is only possible immediately after an Uplink
transmission. This allows the device to go in a very deep sleep mode transmission. This allows the device to go in a very deep sleep mode
and preserve battery, without the need to listen to any information and preserve battery without the need to listen to any information
from the network. This is the case for Sigfox-enabled devices, which from the Network. This is the case for Sigfox-enabled devices, which
can only listen to Downlink communications after performing an Uplink can only listen to Downlink communications after performing an Uplink
transmission and requesting a Downlink. transmission and requesting a Downlink.
When there are fragments to be transmitted in the Downlink, an Uplink When there are fragments to be transmitted in the Downlink, an Uplink
message is required to trigger the Downlink communication. In order message is required to trigger the Downlink communication. In order
to avoid potentially high delay for fragmented datagram transmission to avoid a potentially high delay for fragmented datagram
in the Downlink, the fragment receiver MAY perform an Uplink transmission in the Downlink, the fragment receiver MAY perform an
transmission as soon as possible after reception of a Downlink Uplink transmission as soon as possible after reception of a Downlink
fragment that is not the last one. Such Uplink transmission MAY be fragment that is not the last one. Such an Uplink transmission MAY
triggered by sending a SCHC message, such as a SCHC ACK. However, be triggered by sending a SCHC message, such as a SCHC ACK. However,
other data messages can equally be used to trigger Downlink other data messages can equally be used to trigger Downlink
communications. The fragment receiver MUST send an Uplink communications. The fragment receiver MUST send an Uplink
transmission (e.g., empty message) and request a Downlink every 24 transmission (e.g., empty message) and request a Downlink every 24
hours when no SCHC session is started. The use or not of this Uplink hours when no SCHC session is started. Whether this Uplink
transmission (and the transmission rate, if used) will depend on transmission is used (and the transmission rate, if used) depends on
application specific requirements. application-specific requirements.
Sigfox Downlink messages are fixed in size, and as described in Sigfox Downlink messages are fixed in size, and as described in
[RFC8376] they can carry up to 8 bytes payload. Hence, a single SCHC [RFC8376] they can carry a payload of 0-8 bytes (0-64 bits). Hence,
Tile size per mode can be defined so that every Sigfox message always a single SCHC Tile size per mode can be defined so that every Sigfox
carries one SCHC Tile. message always carries one SCHC Tile.
For reliable Downlink fragment transmission, the ACK-Always mode For reliable Downlink fragment transmission, the ACK-Always mode
SHOULD be used. Note that ACK-on-Error does not guarantee Uplink SHOULD be used. Note that ACK-on-Error does not guarantee Uplink
feedback (since no SCHC ACK will be sent when no errors occur in a feedback (since no SCHC ACK will be sent when no errors occur in a
window), and No-ACK would not allow reliable transmission. window), and No-ACK would not allow reliable transmission.
The SCHC Downlink Fragmentation Header size is 8 bits in size and is The SCHC Downlink fragmentation header size is 8 bits in size and is
composed as follows: composed as follows:
* RuleID size: 3 bits * RuleID size: 3 bits
* DTag size (T): 0 bit * DTag size (T): 0 bits
* Window index (W) size (M) is: 0 bit * Window index (W) size (M): 0 bits
* Fragment Compressed Number (FCN) size (N): 5 bits * Fragment Compressed Number (FCN) size (N): 5 bits
Other F/R parameters MUST be configured as follows: Other F/R parameters MUST be configured as follows:
* MAX_ACK_REQUESTS: 5 * MAX_ACK_REQUESTS: 5
* WINDOW_SIZE: 31 (with a maximum value of FCN=0b11110) * WINDOW_SIZE: 31 (with a maximum value of FCN=0b11110)
* Regular tile size: 7 bytes * Regular tile size: 7 bytes
skipping to change at page 16, line 42 skipping to change at line 712
12 hours. 12 hours.
* Inactivity Timer: Application-dependent. The default value is 12 * Inactivity Timer: Application-dependent. The default value is 12
hours. hours.
* RCS size: 5 bits * RCS size: 5 bits
3.6. SCHC over Sigfox F/R Message Formats 3.6. SCHC over Sigfox F/R Message Formats
This section depicts the different formats of SCHC Fragment, SCHC ACK This section depicts the different formats of SCHC Fragment, SCHC ACK
(including the SCHC Compound ACK defined in (including the SCHC Compound ACK defined in [RFC9441]), and SCHC
[I-D.ietf-lpwan-schc-compound-ack]), and SCHC Abort used in SCHC over Abort used in SCHC over Sigfox.
Sigfox.
3.6.1. Uplink No-ACK Mode: Single-Byte SCHC Header
3.6.1. Uplink No-ACK Mode: Single-byte SCHC Header
3.6.1.1. Regular SCHC Fragment 3.6.1.1. Regular SCHC Fragment
Figure 3 shows an example of a regular SCHC fragment for all Figure 3 shows an example of a Regular SCHC Fragment for all
fragments except the last one. As tiles are of 11 bytes, padding fragments except the last one. As tiles are 11 bytes in size,
MUST NOT be added. The penultimate tile of a SCHC Packet is of padding MUST NOT be added. The penultimate tile of a SCHC Packet is
regular size. of regular size.
|- SCHC Fragment Header -| |- SCHC Fragment Header -|
+------------------------+---------+ +------------------------+---------+
| RuleID | FCN | Payload | | RuleID | FCN | Payload |
+------------+-----------+---------+ +------------+-----------+---------+
| 3 bits | 5 bits | 88 bits | | 3 bits | 5 bits | 88 bits |
Figure 3: Regular SCHC Fragment format for all fragments except Figure 3: Regular SCHC Fragment Format for All Fragments except
the last one the Last One
3.6.1.2. All-1 SCHC Fragment 3.6.1.2. All-1 SCHC Fragment
Figure 4 shows an example of the All-1 message. The All-1 message Figure 4 shows an example of the All-1 message. The All-1 message
MAY contain the last tile of the SCHC Packet. Padding MUST NOT be MAY contain the last tile of the SCHC Packet. Padding MUST NOT be
added, as the resulting size is L2-word-multiple. added, as the resulting size is a multiple of an L2 Word.
The All-1 messages Fragment Header includes a 5-bit RCS, and 3 bits The All-1 messages Fragment Header includes a 5-bit RCS, and 3 bits
are added as padding to complete two bytes. The payload size of the are added as padding to complete 2 bytes. The payload size of the
All-1 message ranges from 0 to 80 bits. All-1 message ranges from 0 to 80 bits.
|-------- SCHC Fragment Header -------| |-------- SCHC Fragment Header -------|
+--------------------------------------+--------------+ +--------------------------------------+--------------+
| RuleID | FCN=ALL-1 | RCS | b'000 | Payload | | RuleID | FCN=ALL-1 | RCS | b'000 | Payload |
+--------+-----------+--------+--------+--------------+ +--------+-----------+--------+--------+--------------+
| 3 bits | 5 bits | 5 bits | 3 bits | 0 to 80 bits | | 3 bits | 5 bits | 5 bits | 3 bits | 0 to 80 bits |
Figure 4: All-1 SCHC Message format with last tile Figure 4: All-1 SCHC Message Format with the Last Tile
As per [RFC8724] the All-1 must be distinguishable from a SCHC As per [RFC8724], the All-1 must be distinguishable from a SCHC
Sender-Abort message (with same RuleID, and N values). The All-1 MAY Sender-Abort message (with the same RuleID and N values). The All-1
have the last tile of the SCHC Packet. The SCHC Sender-Abort message MAY have the last tile of the SCHC Packet. The SCHC Sender-Abort
header size is 1 byte, with no padding bits. message header size is 1 byte with no padding bits.
For the All-1 message to be distinguishable from the Sender-Abort For the All-1 message to be distinguishable from the Sender-Abort
message, the Sender-Abort message MUST be of 1 byte (only header with message, the Sender-Abort message MUST be 1 byte (only header with no
no padding). This way, the minimum size of the All-1 is 2 bytes, and padding). This way, the minimum size of the All-1 is 2 bytes, and
the Sender-Abort message is 1 byte. the Sender-Abort message is 1 byte.
3.6.1.3. SCHC Sender-Abort Message format 3.6.1.3. SCHC Sender-Abort Message Format
Sender-Abort
|------ Header ------|
+--------------------+
| RuleID | FCN=ALL-1 |
+--------+-----------+
| 3 bits | 5 bits |
Figure 5: SCHC Sender-Abort message format Sender-Abort
|------ Header ------|
+--------------------+
| RuleID | FCN=ALL-1 |
+--------+-----------+
| 3 bits | 5 bits |
3.6.2. Uplink ACK-on-Error Mode: Single-byte SCHC Header Figure 5: SCHC Sender-Abort Message Format
3.6.2. Uplink ACK-on-Error Mode: Single-Byte SCHC Header
3.6.2.1. Regular SCHC Fragment 3.6.2.1. Regular SCHC Fragment
Figure 6 shows an example of a regular SCHC fragment for all Figure 6 shows an example of a Regular SCHC Fragment for all
fragments except the last one. As tiles are of 11 bytes, padding fragments except the last one. As tiles are 11 bytes in size,
MUST NOT be added. padding MUST NOT be added.
|-- SCHC Fragment Header --| |-- SCHC Fragment Header --|
+--------------------------+---------+ +--------------------------+---------+
| RuleID | W | FCN | Payload | | RuleID | W | FCN | Payload |
+--------+--------+--------+---------+ +--------+--------+--------+---------+
| 3 bits | 2 bits | 3 bits | 88 bits | | 3 bits | 2 bits | 3 bits | 88 bits |
Figure 6: Regular SCHC Fragment format for all fragments except Figure 6: Regular SCHC Fragment Format for All Fragments except
the last one the Last One
The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment
MUST be used to request a SCHC ACK from the receiver (Network SCHC). MUST be used to request a SCHC ACK from the receiver (Network SCHC).
As per [RFC8724], the All-0 message is distinguishable from the SCHC As per [RFC8724], the All-0 message is distinguishable from the SCHC
ACK REQ (All-1 message). The penultimate tile of a SCHC Packet is of ACK REQ (All-1 message). The penultimate tile of a SCHC Packet is of
regular size. regular size.
3.6.2.2. All-1 SCHC Fragment 3.6.2.2. All-1 SCHC Fragment
Figure 7 shows an example of the All-1 message. The All-1 message Figure 7 shows an example of the All-1 message. The All-1 message
MAY contain the last tile of the SCHC Packet. Padding MUST NOT be MAY contain the last tile of the SCHC Packet. Padding MUST NOT be
added, as the resulting size is L2-word-multiple. added, as the resulting size is L2-word-multiple.
|------------- SCHC Fragment Header -----------| |------------- SCHC Fragment Header -----------|
+-----------------------------------------------+--------------+ +-----------------------------------------------+--------------+
| RuleID | W | FCN=ALL-1 | RCS |b'00000 | Payload | | RuleID | W | FCN=ALL-1 | RCS |b'00000 | Payload |
+--------+--------+-----------+--------+--------+--------------+ +--------+--------+-----------+--------+--------+--------------+
| 3 bits | 2 bits | 3 bits | 3 bits | 5 bits | 0 to 80 bits | | 3 bits | 2 bits | 3 bits | 3 bits | 5 bits | 0 to 80 bits |
Figure 7: All-1 SCHC Message format with last tile Figure 7: All-1 SCHC Message Format with the Last Tile
As per [RFC8724] the All-1 must be distinguishable from a SCHC As per [RFC8724], the All-1 must be distinguishable from a SCHC
Sender-Abort message (with same RuleID, M, and N values). The All-1 Sender-Abort message (with same RuleID, M, and N values). The All-1
MAY have the last tile of the SCHC Packet. The SCHC Sender-Abort MAY have the last tile of the SCHC Packet. The SCHC Sender-Abort
message header size is 1 byte, with no padding bits. message header size is 1 byte with no padding bits.
For the All-1 message to be distinguishable from the Sender-Abort For the All-1 message to be distinguishable from the Sender-Abort
message, the Sender-Abort message MUST be of 1 byte (only header with message, the Sender-Abort message MUST be 1 byte (only header with no
no padding). This way, the minimum size of the All-1 is 2 bytes, and padding). This way, the minimum size of the All-1 is 2 bytes, and
the Sender-Abort message is 1 byte. the Sender-Abort message is 1 byte.
3.6.2.3. SCHC ACK Format 3.6.2.3. SCHC ACK Format
Figure 8 shows the SCHC ACK format when all fragments have been Figure 8 shows the SCHC ACK format when all fragments have been
correctly received (C=1). Padding MUST be added to complete the correctly received (C=1). Padding MUST be added to complete the
64-bit Sigfox Downlink frame payload size. 64-bit Sigfox Downlink frame payload size.
|---- SCHC ACK Header ----| |---- SCHC ACK Header ----|
+-------------------------+---------+ +-------------------------+---------+
| RuleID | W | C=b'1 | b'0-pad | | RuleID | W | C=b'1 | b'0-pad |
+--------+--------+-------+---------+ +--------+--------+-------+---------+
| 3 bits | 2 bits | 1 bit | 58 bits | | 3 bits | 2 bits | 1 bit | 58 bits |
Figure 8: SCHC Success ACK message format Figure 8: SCHC Success ACK Message Format
In case SCHC fragment losses are found in any of the windows of the In case SCHC Fragment losses are found in any of the windows of the
SCHC Packet (C=0), the SCHC Compound ACK defined in SCHC Packet (C=0), the SCHC Compound ACK defined in [RFC9441] MUST be
[I-D.ietf-lpwan-schc-compound-ack] MUST be used. The SCHC Compound used. The SCHC Compound ACK message format is shown in Figure 9.
ACK message format is shown in Figure 9.
|--- SCHC ACK Header ---|- W=w1 -|...|----- W=wi ------| |--- SCHC ACK Header ---|- W=w1 -|...|----- W=wi ------|
+------+--------+-------+--------+...+--------+--------+------+-------+ +------+--------+-------+--------+...+--------+--------+------+-------+
|RuleID| W=b'w1 | C=b'0 | Bitmap |...| W=b'wi | Bitmap | b'00 |b'0-pad| |RuleID| W=b'w1 | C=b'0 | Bitmap |...| W=b'wi | Bitmap | b'00 |b'0-pad|
+------+--------+-------+--------+...+--------+--------+------+-------+ +------+--------+-------+--------+...+--------+--------+------+-------+
|3 bits| 2 bits | 1 bit | 7 bits |...| 2 bits | 7 bits |2 bits| |3 bits| 2 bits | 1 bit | 7 bits |...| 2 bits | 7 bits |2 bits|
Losses are found in windows W = w1,...,wi; where w1<w2<...<wi Figure 9: SCHC Compound ACK Message Format
Figure 9: SCHC Compound ACK message format Losses are found in windows W = w1,...,wi, where w1 < w2 <...< wi.
3.6.2.4. SCHC Sender-Abort Message format 3.6.2.4. SCHC Sender-Abort Message Format
|---- Sender-Abort Header ----| |---- Sender-Abort Header ----|
+-----------------------------+ +-----------------------------+
| RuleID | W=b'11 | FCN=ALL-1 | | RuleID | W=b'11 | FCN=ALL-1 |
+--------+--------+-----------+ +--------+--------+-----------+
| 3 bits | 2 bits | 3 bits | | 3 bits | 2 bits | 3 bits |
Figure 10: SCHC Sender-Abort message format Figure 10: SCHC Sender-Abort Message Format
3.6.2.5. SCHC Receiver-Abort Message format 3.6.2.5. SCHC Receiver-Abort Message Format
|- Receiver-Abort Header -| |- Receiver-Abort Header -|
+---------------------------------+-----------------+---------+ +---------------------------------+-----------------+---------+
| RuleID | W=b'11 | C=b'1 | b'11 | 0xFF (all 1's) | b'0-pad | | RuleID | W=b'11 | C=b'1 | b'11 | 0xFF (all 1's) | b'0-pad |
+--------+--------+-------+-------+-----------------+---------+ +--------+--------+-------+-------+-----------------+---------+
| 3 bits | 2 bits | 1 bit | 2 bit | 8 bit | 48 bits | | 3 bits | 2 bits | 1 bit | 2 bit | 8 bit | 48 bits |
next L2 Word boundary ->| <-- L2 Word --> | next L2 Word boundary ->| <-- L2 Word --> |
Figure 11: SCHC Receiver-Abort message format Figure 11: SCHC Receiver-Abort Message Format
3.6.3. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 1 3.6.3. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 1
3.6.3.1. Regular SCHC Fragment 3.6.3.1. Regular SCHC Fragment
Figure 12 shows an example of a regular SCHC fragment for all Figure 12 shows an example of a Regular SCHC Fragment for all
fragments except the last one. The penultimate tile of a SCHC Packet fragments except the last one. The penultimate tile of a SCHC Packet
is of the regular size. is of the regular size.
|------- SCHC Fragment Header ------| |------- SCHC Fragment Header ------|
+-----------------------------------+---------+ +-----------------------------------+---------+
| RuleID | W | FCN | b'0000 | Payload | | RuleID | W | FCN | b'0000 | Payload |
+--------+--------+--------+--------+---------+ +--------+--------+--------+--------+---------+
| 6 bits | 2 bits | 4 bits | 4 bits | 80 bits | | 6 bits | 2 bits | 4 bits | 4 bits | 80 bits |
Figure 12: Regular SCHC Fragment format for all fragments except Figure 12: Regular SCHC Fragment Format for All Fragments except
the last one the Last One
The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment
MUST be used to request a SCHC ACK from the receiver (Network SCHC). MUST be used to request a SCHC ACK from the receiver (Network SCHC).
As per [RFC8724], the All-0 message is distinguishable from the SCHC As per [RFC8724], the All-0 message is distinguishable from the SCHC
ACK REQ (All-1 message). ACK REQ (All-1 message).
3.6.3.2. All-1 SCHC Fragment 3.6.3.2. All-1 SCHC Fragment
Figure 13 shows an example of the All-1 message. The All-1 message Figure 13 shows an example of the All-1 message. The All-1 message
MUST contain the last tile of the SCHC Packet. MUST contain the last tile of the SCHC Packet.
The All-1 message Fragment Header contains an RCS of 4 bits to The All-1 message Fragment Header contains an RCS of 4 bits to
complete the two-byte size. The size of the last tile ranges from 8 complete the two-byte size. The size of the last tile ranges from 8
to 80 bits. to 80 bits.
|--------- SCHC Fragment Header -------| |--------- SCHC Fragment Header -------|
+--------------------------------------+--------------+ +--------------------------------------+--------------+
| RuleID | W | FCN=ALL-1 | RCS | Payload | | RuleID | W | FCN=ALL-1 | RCS | Payload |
+--------+--------+-----------+--------+--------------+ +--------+--------+-----------+--------+--------------+
| 6 bits | 2 bits | 4 bits | 4 bits | 8 to 80 bits | | 6 bits | 2 bits | 4 bits | 4 bits | 8 to 80 bits |
Figure 13: All-1 SCHC message format with last tile
As per [RFC8724] the All-1 must be distinguishable from the SCHC Figure 13: All-1 SCHC Message Format with the Last Tile
Sender-Abort message (with same RuleID, M and N values). The All-1
MUST have the last tile of the SCHC Packet, that MUST be of at least As per [RFC8724], the All-1 must be distinguishable from the SCHC
1 byte. The SCHC Sender-Abort message header size is 2 byte, with no Sender-Abort message (with same RuleID, M, and N values). The All-1
MUST have the last tile of the SCHC Packet that MUST be at least 1
byte. The SCHC Sender-Abort message header size is 2 bytes with no
padding bits. padding bits.
For the All-1 message to be distinguishable from the Sender-Abort For the All-1 message to be distinguishable from the Sender-Abort
message, the Sender-Abort message MUST be of 2 byte (only header with message, the Sender-Abort message MUST be 2 bytes (only header with
no padding). This way, the minimum size of the All-1 is 3 bytes, and no padding). This way, the minimum size of the All-1 is 3 bytes, and
the Sender-Abort message is 2 bytes. the Sender-Abort message is 2 bytes.
3.6.3.3. SCHC ACK Format 3.6.3.3. SCHC ACK Format
Figure 14 shows the SCHC ACK format when all fragments have been Figure 14 shows the SCHC ACK format when all fragments have been
correctly received (C=1). Padding MUST be added to complete the correctly received (C=1). Padding MUST be added to complete the
64-bit Sigfox Downlink frame payload size. 64-bit Sigfox Downlink frame payload size.
|---- SCHC ACK Header ----| |---- SCHC ACK Header ----|
+-------------------------+---------+ +-------------------------+---------+
| RuleID | W | C=b'1 | b'0-pad | | RuleID | W | C=b'1 | b'0-pad |
+--------+--------+-------+---------+ +--------+--------+-------+---------+
| 6 bits | 2 bits | 1 bit | 55 bits | | 6 bits | 2 bits | 1 bit | 55 bits |
Figure 14: SCHC Success ACK message format Figure 14: SCHC Success ACK Message Format
The SCHC Compound ACK message MUST be used in case SCHC fragment The SCHC Compound ACK message MUST be used in case SCHC Fragment
losses are found in any window of the SCHC Packet (C=0). The SCHC losses are found in any window of the SCHC Packet (C=0). The SCHC
Compound ACK message format is shown in Figure 15. The SCHC Compound Compound ACK message format is shown in Figure 15. The SCHC Compound
ACK can report up to 4 windows with losses. as shown in Figure 16. ACK can report up to 4 windows with losses, as shown in Figure 16.
When sent in the Downlink, the SCHC Compound ACK MUST be 0 padded When sent in the Downlink, the SCHC Compound ACK MUST be 0 padded
(Padding bits must be 0) to complement the 64 bits required by the (padding bits must be 0) to complement the 64 bits required by the
Sigfox payload. Sigfox payload.
|--- SCHC ACK Header ---|- W=w1 -|...|---- W=wi -----| |--- SCHC ACK Header ---|- W=w1 -|...|---- W=wi -----|
+--------+------+-------+--------+...+------+--------+------+-------+ +--------+------+-------+--------+...+------+--------+------+-------+
| RuleID |W=b'w1| C=b'0 | Bitmap |...|W=b'wi| Bitmap | b'00 |b'0-pad| | RuleID |W=b'w1| C=b'0 | Bitmap |...|W=b'wi| Bitmap | b'00 |b'0-pad|
+--------+------+-------+--------+...+------+--------+------+-------+ +--------+------+-------+--------+...+------+--------+------+-------+
| 6 bits |2 bits| 1 bit | 12 bits|...|2 bits| 12 bits|2 bits| | 6 bits |2 bits| 1 bit | 12 bits|...|2 bits| 12 bits|2 bits|
Losses are found in windows W = w1,...,wi; where w1<w2<...<wi Figure 15: SCHC Compound ACK Message Format
Figure 15: SCHC Compound ACK message format Losses are found in windows W = w1,...,wi, where w1 < w2 <...< wi.
|- SCHC ACK Header -|- W=0 -| |- W=1 -|... |- SCHC ACK Header -|- W=0 -| |- W=1 -|...
+------+------+-----+-------+------+-------+... +------+------+-----+-------+------+-------+...
|RuleID|W=b'00|C=b'0|Bitmap |W=b'01|Bitmap |... |RuleID|W=b'00|C=b'0|Bitmap |W=b'01|Bitmap |...
+------+------+-----+-------+------+-------+... +------+------+-----+-------+------+-------+...
|6 bits|2 bits|1 bit|12 bits|2 bits|12 bits|... |6 bits|2 bits|1 bit|12 bits|2 bits|12 bits|...
... |- W=2 -| |- W=3 -| ... |- W=2 -| |- W=3 -|
...+------+-------+------+-------+---+ ...+------+-------+------+-------+---+
...|W=b'10|Bitmap |W=b'11|Bitmap |b'0| ...|W=b'10|Bitmap |W=b'11|Bitmap |b'0|
...+------+-------+------+-------+---+ ...+------+-------+------+-------+---+
...|2 bits|12 bits|2 bits|12 bits| ...|2 bits|12 bits|2 bits|12 bits|
Losses are found in windows W = w1,...,wi; where w1<w2<...<wi Figure 16: SCHC Compound ACK Message Format Example with Losses
in All Windows
Figure 16: SCHC Compound ACK message format example with losses Losses are found in windows W = w1,...,wi, where w1 < w2 <...< wi.
in all windows
3.6.3.4. SCHC Sender-Abort Message Format 3.6.3.4. SCHC Sender-Abort Message Format
|---- Sender-Abort Header ----| |---- Sender-Abort Header ----|
+-----------------------------+ +-----------------------------+
| RuleID | W | FCN=ALL-1 | | RuleID | W | FCN=ALL-1 |
+--------+--------+-----------+ +--------+--------+-----------+
| 6 bits | 2 bits | 4 bits | | 6 bits | 2 bits | 4 bits |
Figure 17: SCHC Sender-Abort message format Figure 17: SCHC Sender-Abort Message Format
3.6.3.5. SCHC Receiver-Abort Message Format 3.6.3.5. SCHC Receiver-Abort Message Format
|- Receiver-Abort Header -| |- Receiver-Abort Header -|
+---------------------------------+-----------------+---------+ +---------------------------------+-----------------+---------+
| RuleID | W=b'11 | C=b'1 | 0x7F | 0xFF (all 1's) | b'0-pad | | RuleID | W=b'11 | C=b'1 | 0x7F | 0xFF (all 1's) | b'0-pad |
+--------+--------+-------+-------+-----------------+---------+ +--------+--------+-------+-------+-----------------+---------+
| 6 bits | 2 bits | 1 bit | 7 bit | 8 bit | 40 bits | | 6 bits | 2 bits | 1 bit | 7 bit | 8 bit | 40 bits |
next L2 Word boundary ->| <-- L2 Word --> | next L2 Word boundary ->| <-- L2 Word --> |
Figure 18: SCHC Receiver-Abort message format Figure 18: SCHC Receiver-Abort Message Format
3.6.4. Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 2 3.6.4. Uplink ACK-on-Error Mode: Two-Byte SCHC Header Option 2
3.6.4.1. Regular SCHC Fragment 3.6.4.1. Regular SCHC Fragment
Figure 19 shows an example of a regular SCHC fragment for all Figure 19 shows an example of a Regular SCHC Fragment for all
fragments except the last one. The penultimate tile of a SCHC Packet fragments except the last one. The penultimate tile of a SCHC Packet
is of the regular size. is of the regular size.
|-- SCHC Fragment Header --| |-- SCHC Fragment Header --|
+--------------------------+---------+ +--------------------------+---------+
| RuleID | W | FCN | Payload | | RuleID | W | FCN | Payload |
+--------+--------+--------+---------+ +--------+--------+--------+---------+
| 8 bits | 3 bits | 5 bits | 80 bits | | 8 bits | 3 bits | 5 bits | 80 bits |
Figure 19: Regular SCHC Fragment format for all fragments except Figure 19: Regular SCHC Fragment Format for All Fragments except
the last one the Last One
The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment The SCHC ACK REQ MUST NOT be used, instead the All-1 SCHC Fragment
MUST be used to request a SCHC ACK from the receiver (Network SCHC). MUST be used to request a SCHC ACK from the receiver (Network SCHC).
As per [RFC8724], the All-0 message is distinguishable from the SCHC As per [RFC8724], the All-0 message is distinguishable from the SCHC
ACK REQ (All-1 message). ACK REQ (All-1 message).
3.6.4.2. All-1 SCHC Fragment 3.6.4.2. All-1 SCHC Fragment
Figure 20 shows an example of the All-1 message. The All-1 message Figure 20 shows an example of the All-1 message. The All-1 message
MAY contain the last tile of the SCHC Packet. MAY contain the last tile of the SCHC Packet.
The All-1 message Fragment Header contains an RCS of 5 bits, and 3 The All-1 message Fragment Header contains an RCS of 5 bits and 3
padding bits to complete a 3-byte Fragment Header. The size of the padding bits to complete a 3-byte Fragment Header. The size of the
last tile, if present, ranges from 8 to 72 bits. last tile, if present, ranges from 8 to 72 bits.
|-------------- SCHC Fragment Header -----------| |-------------- SCHC Fragment Header -----------|
+-----------------------------------------------+--------------+ +-----------------------------------------------+--------------+
| RuleID | W | FCN=ALL-1 | RCS | b'000 | Payload | | RuleID | W | FCN=ALL-1 | RCS | b'000 | Payload |
+--------+--------+-----------+--------+--------+--------------+ +--------+--------+-----------+--------+--------+--------------+
| 8 bits | 3 bits | 5 bits | 5 bits | 3 bits | 8 to 72 bits | | 8 bits | 3 bits | 5 bits | 5 bits | 3 bits | 8 to 72 bits |
Figure 20: All-1 SCHC message format with last tile Figure 20: All-1 SCHC Message Format with the Last Tile
As per [RFC8724] the All-1 must be distinguishable from the SCHC As per [RFC8724], the All-1 must be distinguishable from the SCHC
Sender-Abort message (with same RuleID, M and N values). The SCHC Sender-Abort message (with same RuleID, M, and N values). The SCHC
Sender-Abort message header size is 2 byte, with no padding bits. Sender-Abort message header size is 2 bytes with no padding bits.
For the All-1 message to be distinguishable from the Sender-Abort For the All-1 message to be distinguishable from the Sender-Abort
message, the Sender-Abort message MUST be of 2 byte (only header with message, the Sender-Abort message MUST be 2 bytes (only header with
no padding). This way, the minimum size of the All-1 is 3 bytes, and no padding). This way, the minimum size of the All-1 is 3 bytes, and
the Sender-Abort message is 2 bytes. the Sender-Abort message is 2 bytes.
3.6.4.3. SCHC ACK Format 3.6.4.3. SCHC ACK Format
Figure 21 shows the SCHC ACK format when all fragments have been Figure 21 shows the SCHC ACK format when all fragments have been
correctly received (C=1). Padding MUST be added to complete the correctly received (C=1). Padding MUST be added to complete the
64-bit Sigfox Downlink frame payload size. 64-bit Sigfox Downlink frame payload size.
|---- SCHC ACK Header ----| |---- SCHC ACK Header ----|
+-------------------------+---------+ +-------------------------+---------+
| RuleID | W | C=b'1 | b'0-pad | | RuleID | W | C=b'1 | b'0-pad |
+--------+--------+-------+---------+ +--------+--------+-------+---------+
| 8 bits | 3 bits | 1 bit | 52 bits | | 8 bits | 3 bits | 1 bit | 52 bits |
Figure 21: SCHC Success ACK message format Figure 21: SCHC Success ACK Message Format
The SCHC Compound ACK message MUST be used in case SCHC fragment The SCHC Compound ACK message MUST be used in case SCHC Fragment
losses are found in any window of the SCHC Packet (C=0). The SCHC losses are found in any window of the SCHC Packet (C=0). The SCHC
Compound ACK message format is shown in Figure 22. The SCHC Compound Compound ACK message format is shown in Figure 22. The SCHC Compound
ACK can report up to 3 windows with losses. ACK can report up to 3 windows with losses.
When sent in the Downlink, the SCHC Compound ACK MUST be 0 padded When sent in the Downlink, the SCHC Compound ACK MUST be 0 padded
(Padding bits must be 0) to complement the 64 bits required by the (padding bits must be 0) to complement the 64 bits required by the
Sigfox payload. Sigfox payload.
|-- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----| |-- SCHC ACK Header --|- W=w1 -|...|---- W=wi -----|
+------+------+-------+--------+...+------+--------+------+-------+ +------+------+-------+--------+...+------+--------+------+-------+
|RuleID|W=b'w1| C=b'0 | Bitmap |...|W=b'wi| Bitmap | 000 |b'0-pad| |RuleID|W=b'w1| C=b'0 | Bitmap |...|W=b'wi| Bitmap | 000 |b'0-pad|
+------+------+-------+--------+...+------+--------+------+-------+ +------+------+-------+--------+...+------+--------+------+-------+
|8 bits|3 bits| 1 bit | 31 bits|...|3 bits| 31 bits|3 bits| |8 bits|3 bits| 1 bit | 31 bits|...|3 bits| 31 bits|3 bits|
Losses are found in windows W = w1,...,wi; where w1<w2<...<wi Figure 22: SCHC Compound ACK Message Format
Figure 22: SCHC Compound ACK message format Losses are found in windows W = w1,...,wi, where w1 < w2 <...< wi.
3.6.4.4. SCHC Sender-Abort Message Format 3.6.4.4. SCHC Sender-Abort Message Format
|---- Sender-Abort Header ----| |---- Sender-Abort Header ----|
+-----------------------------+ +-----------------------------+
| RuleID | W | FCN=ALL-1 | | RuleID | W | FCN=ALL-1 |
+--------+--------+-----------+ +--------+--------+-----------+
| 8 bits | 3 bits | 5 bits | | 8 bits | 3 bits | 5 bits |
Figure 23: SCHC Sender-Abort message format Figure 23: SCHC Sender-Abort Message Format
3.6.4.5. SCHC Receiver-Abort Message Format 3.6.4.5. SCHC Receiver-Abort Message Format
|-- Receiver-Abort Header -| |-- Receiver-Abort Header -|
+-----------------------------------+-----------------+---------+ +-----------------------------------+-----------------+---------+
| RuleID | W=b'111 | C=b'1 | b'1111 | 0xFF (all 1's) | b'0-pad | | RuleID | W=b'111 | C=b'1 | b'1111 | 0xFF (all 1's) | b'0-pad |
+--------+---------+-------+--------+-----------------+---------+ +--------+---------+-------+--------+-----------------+---------+
| 8 bits | 3 bits | 1 bit | 4 bit | 8 bit | 40 bits | | 8 bits | 3 bits | 1 bit | 4 bit | 8 bit | 40 bits |
next L2 Word boundary ->| <-- L2 Word --> | next L2 Word boundary ->| <-- L2 Word --> |
Figure 24: SCHC Receiver-Abort message format Figure 24: SCHC Receiver-Abort Message Format
3.6.5. Downlink ACK-Always Mode: Single-byte SCHC Header 3.6.5. Downlink ACK-Always Mode: Single-Byte SCHC Header
3.6.5.1. Regular SCHC Fragment 3.6.5.1. Regular SCHC Fragment
Figure 25 shows an example of a regular SCHC fragment for all Figure 25 shows an example of a Regular SCHC Fragment for all
fragments except the last one. The penultimate tile of a SCHC Packet fragments except the last one. The penultimate tile of a SCHC Packet
is of the regular size. is of the regular size.
SCHC Fragment SCHC Fragment
|-- Header --| |-- Header --|
+-----------------+---------+ +-----------------+---------+
| RuleID | FCN | Payload | | RuleID | FCN | Payload |
+--------+--------+---------+ +--------+--------+---------+
| 3 bits | 5 bits | 56 bits | | 3 bits | 5 bits | 56 bits |
Figure 25: Regular SCHC Fragment format for all fragments except Figure 25: Regular SCHC Fragment Format for All Fragments except
the last one the Last One
The SCHC ACK MUST NOT be used, instead the All-1 SCHC Fragment MUST The SCHC ACK MUST NOT be used, instead the All-1 SCHC Fragment MUST
be used to request a SCHC ACK from the receiver. As per [RFC8724], be used to request a SCHC ACK from the receiver. As per [RFC8724],
the All-0 message is distinguishable from the SCHC ACK REQ (All-1 the All-0 message is distinguishable from the SCHC ACK REQ (All-1
message). message).
3.6.5.2. All-1 SCHC Fragment 3.6.5.2. All-1 SCHC Fragment
Figure 26 shows an example of the All-1 message. The All-1 message Figure 26 shows an example of the All-1 message. The All-1 message
MAY contain the last tile of the SCHC Packet. MAY contain the last tile of the SCHC Packet.
The All-1 message Fragment Header contains an RCS of 5 bits, and 3 The All-1 message Fragment Header contains an RCS of 5 bits and 3
padding bits to complete a 2-byte Fragment Header. The size of the padding bits to complete a 2-byte Fragment Header. The size of the
last tile, if present, ranges from 8 to 48 bits. last tile, if present, ranges from 8 to 48 bits.
|--------- SCHC Fragment Header -------| |--------- SCHC Fragment Header -------|
+--------------------------------------+--------------+ +--------------------------------------+--------------+
| RuleID | FCN=ALL-1 | RCS | b'000 | Payload | | RuleID | FCN=ALL-1 | RCS | b'000 | Payload |
+--------+-----------+--------+--------+--------------+ +--------+-----------+--------+--------+--------------+
| 3 bits | 5 bits | 5 bits | 3 bits | 0 to 48 bits | | 3 bits | 5 bits | 5 bits | 3 bits | 0 to 48 bits |
Figure 26: All-1 SCHC message format with last tile Figure 26: All-1 SCHC Message Format with the Last Tile
As per [RFC8724] the All-1 must be distinguishable from the SCHC As per [RFC8724], the All-1 must be distinguishable from the SCHC
Sender-Abort message (with same RuleID and N values). The SCHC Sender-Abort message (with same RuleID and N values). The SCHC
Sender-Abort message header size is 1 byte, with no padding bits. Sender-Abort message header size is 1 byte with no padding bits.
For the All-1 message to be distinguishable from the Sender-Abort For the All-1 message to be distinguishable from the Sender-Abort
message, the Sender-Abort message MUST be of 1 byte (only header with message, the Sender-Abort message MUST be 1 byte (only header with no
no padding). This way, the minimum size of the All-1 is 2 bytes, and padding). This way, the minimum size of the All-1 is 2 bytes, and
the Sender-Abort message is 1 bytes. the Sender-Abort message is 1 bytes.
3.6.5.3. SCHC ACK Format 3.6.5.3. SCHC ACK Format
Figure 27 shows the SCHC ACK format when all fragments have been Figure 27 shows the SCHC ACK format when all fragments have been
correctly received (C=1). Padding MUST be added to complete 2 bytes. correctly received (C=1). Padding MUST be added to complete 2 bytes.
SCHC ACK SCHC ACK
|-- Header --| |-- Header --|
+----------------+---------+ +----------------+---------+
| RuleID | C=b'1 | b'0-pad | | RuleID | C=b'1 | b'0-pad |
+--------+-------+---------+ +--------+-------+---------+
| 3 bits | 1 bit | 4 bits | | 3 bits | 1 bit | 4 bits |
Figure 27: SCHC Success ACK message format Figure 27: SCHC Success ACK Message Format
The SCHC ACK message format is shown in Figure 28. The SCHC ACK message format is shown in Figure 28.
|---- SCHC ACK Header ----| |---- SCHC ACK Header ----|
+--------+-------+--------+---------+ +--------+-------+--------+---------+
| RuleID | C=b'0 | Bitmap | b'0-pad | | RuleID | C=b'0 | Bitmap | b'0-pad |
+--------+-------+--------+---------+ +--------+-------+--------+---------+
| 3 bits | 1 bit | 31 bits| 5 bits | | 3 bits | 1 bit | 31 bits| 5 bits |
Figure 28: SCHC Compound ACK message format Figure 28: SCHC Compound ACK Message Format
3.6.5.4. SCHC Sender-Abort Message Format 3.6.5.4. SCHC Sender-Abort Message Format
Sender-Abort Sender-Abort
|---- Header ----| |---- Header ----|
+--------------------+ +--------------------+
| RuleID | FCN=ALL-1 | | RuleID | FCN=ALL-1 |
+--------+-----------+ +--------+-----------+
| 3 bits | 5 bits | | 3 bits | 5 bits |
Figure 29: SCHC Sender-Abort message format Figure 29: SCHC Sender-Abort Message Format
3.6.5.5. SCHC Receiver-Abort Message Format 3.6.5.5. SCHC Receiver-Abort Message Format
Receiver-Abort Receiver-Abort
|--- Header ---| |--- Header ---|
+----------------+--------+-----------------+ +----------------+--------+-----------------+
| RuleID | C=b'1 | b'1111 | 0xFF (all 1's) | | RuleID | C=b'1 | b'1111 | 0xFF (all 1's) |
+--------+-------+--------+-----------------+ +--------+-------+--------+-----------------+
| 3 bits | 1 bit | 4 bit | 8 bit | | 3 bits | 1 bit | 4 bit | 8 bit |
Figure 30: SCHC Receiver-Abort message format Figure 30: SCHC Receiver-Abort Message Format
3.7. Padding 3.7. Padding
The Sigfox payload fields have different characteristics in Uplink The Sigfox payload fields have different characteristics in Uplink
and Downlink. and Downlink.
Uplink messages can contain a payload size from 0 to 12 bytes. The Uplink messages can contain a payload size from 0 to 12 bytes. The
Sigfox radio protocol allows sending zero bits, one single bit of Sigfox radio protocol allows sending zero bits, one single bit of
information for binary applications (e.g., status), or an integer information for binary applications (e.g., status), or an integer
number of bytes. Therefore, for 2 or more bits of payload it is number of bytes. Therefore, for 2 or more bits of payload, it is
required to add padding to the next integer number of bytes. The required to add padding to the next integer number of bytes. The
reason for this flexibility is to optimize transmission time and reason for this flexibility is to optimize transmission time and
hence save battery consumption at the device. hence save battery consumption at the device.
Downlink frames on the other hand have a fixed length. The payload On the other hand, Downlink frames have a fixed length. The payload
length MUST be 64 bits (i.e., 8 bytes). Hence, if less information length MUST be 64 bits (i.e., 8 bytes). Hence, if less information
bits are to be transmitted, padding MUST be used with bits equal to bits are to be transmitted, padding MUST be used with bits equal to
0. The receiver MUST remove the added padding bits before the SCHC 0. The receiver MUST remove the added padding bits before the SCHC
reassembly process. reassembly process.
4. Fragmentation Rules Examples 4. Fragmentation Rules Examples
This section provides an example of RuleIDs configuration for This section provides an example of RuleID configuration for
interoperability between the F/R modes presented in this document. interoperability between the F/R modes presented in this document.
Note that the RuleID space for Uplink F/R is different than the one Note that the RuleID space for Uplink F/R is different than the one
for Downlink F/R, therefore this section is divided in two for Downlink F/R; therefore, this section is divided in two
subsections: Rules for Uplink fragmentation and Rules for Downlink subsections: Rules for Uplink fragmentation and Rules for Downlink
fragmentation. fragmentation.
For Uplink F/R, multiple header length were described in Section 3.5. For Uplink F/R, multiple header lengths were described in
All of them are part of the SCHC over Sigfox Profile, and offer not Section 3.5. All of them are part of the SCHC over Sigfox Profile
only low protocol overhead for small payloads (single byte header) and offer not only low protocol overhead for small payloads (single
but also extensibility to transport larger payloads with more byte header) but also extensibility to transport larger payloads with
overhead (2 bytes header, option 1 and 2). The usage of the RuleID more overhead (2-byte header, Options 1 and 2). The usage of the
space for each header length is an implementation choice, but we RuleID space for each header length is an implementation choice, but
provide an example of it in the following section. This illustrates we provide an example of it in the following section. This
implementation choices made in order to 1) identify the different illustrates implementation choices made in order to 1) identify the
header length, and 2) finally parse the RuleID field to identify the different header length and 2) finally parse the RuleID field to
RuleID value and execute the associated treatment. identify the RuleID value and execute the associated treatment.
4.1. Uplink Fragmentation Rules Examples 4.1. Uplink Fragmentation Rules Examples
The RuleID field for Uplink F/R modes have different sizes depending The RuleID field for Uplink F/R modes has different sizes depending
on the header length. In order to identify the header length and on the header length. In order to identify the header length and
then the value of the RuleID, the RuleID field is interpreted as then the value of the RuleID, the RuleID field is interpreted as
follows: follows:
* The RuleID field is the first one to be parsed in the SCHC header, * The RuleID field is the first one to be parsed in the SCHC header,
starting from the leftmost bits. starting from the leftmost bits.
* For Single-byte SCHC Header F/R modes, it is expected a RuleID * For Single-byte SCHC Header F/R modes, a RuleID field of 3 bits is
field of 3 bits: expected:
- if the first 3 leftmost bits have a value different than - If the first 3 leftmost bits have a value different than
0b'111, then it signals a Single-byte SCHC Header F/R mode, 0b'111, then it signals a Single-byte SCHC Header F/R mode.
- if their value is 0b'111, then it signals a Two-byte SCHC - If their value is 0b'111, then it signals a Two-byte SCHC
Header F/R mode. Header F/R mode.
* For Single-byte SCHC Header F/R modes: * For Single-byte SCHC Header F/R modes:
- there are 7 RuleIDs available (with values from 0b'000-0b'110), - There are 7 RuleIDs available (with values from 0b'000-0b'110);
the RuleID with value 0b'111 is reserved to indicate a Two-byte the RuleID with value 0b'111 is reserved to indicate a Two-byte
SCHC Header. SCHC Header.
- This set of rules is called "standard rules", and it is used to - This set of Rules is called "standard rules", and it is used to
implement Single-byte SCHC header modes. implement Single-byte SCHC Header modes.
- Each RuleID is associated with a set of properties defining if - Each RuleID is associated with a set of properties defining if
Uplink F/R is used and which Uplink F/R mode is used. As an Uplink F/R is used and which Uplink F/R mode is used. As an
example, the RuleID 0b'000 is mapped onto Uplink No-ACK Mode: example, the RuleID 0b'000 is mapped onto Uplink No-ACK Mode:
Single-byte SCHC Header, and the RuleIDs 0b'001 and 0b'002 are Single-byte SCHC Header, and the RuleIDs 0b'001 and 0b'002 are
mapped onto Uplink ACK-on-Error Mode: Single-byte SCHC Header mapped onto Uplink ACK-on-Error mode: Single-byte SCHC Header
(2 RuleIDs to allow for SCHC Packet interleaving). (2 RuleIDs to allow for SCHC Packet interleaving).
* For Two-byte SCHC Header F/R modes at least 6 bits for the RuleID * For Two-byte SCHC Header F/R modes, at least 6 bits for the RuleID
field are expected: field are expected:
- the 3 first leftmost bits are always 0b'111, - The 3 first leftmost bits are always 0b'111.
o if the following 3 bits have a different value than 0b'111, o If the following 3 bits have a different value than 0b'111,
then it signals the Two-byte SCHC Header Option 1, then it signals the Two-byte SCHC Header Option 1.
o if the following 3 bits are 0b'111, then it signals the Two- o If the following 3 bits are 0b'111, then it signals the Two-
byte SCHC Header Option 2. byte SCHC Header Option 2.
- For the Two-byte SCHC Header Option 1, there are 7 RuleIDs - For the Two-byte SCHC Header Option 1, there are 7 RuleIDs
available (0b'111000-0b'111110), 0b'111111 being reserved to available (0b'111000-0b'111110), 0b'111111 being reserved to
indicate the Two-byte SCHC Header Option 2. This set of rules indicate the Two-byte SCHC Header Option 2. This set of Rules
is called "extended rules", and it is used to implement the is called "extended rules", and it is used to implement the
Uplink ACK-on-Error Mode: Two-byte SCHC Header Option 1. Uplink ACK-on-Error mode: Two-byte SCHC Header Option 1.
- For the Two-byte SCHC Header Option 2, there are 2 additional - For the Two-byte SCHC Header Option 2, there are 2 additional
bits to parse as the RuleID, so 4 RuleIDs available bits to parse as the RuleID, so 4 RuleIDs are available
(0b'11111100-0b'11111111). This set of rules is used to cover (0b'11111100-0b'11111111). This set of Rules is used to cover
specific cases that previous RuleIDs do not cover. As an specific cases that previous RuleIDs do not cover. As an
example, RuleID 0b'00111111 is used to transport uncompressed example, RuleID 0b'00111111 is used to transport uncompressed
IPv6 packets using the Uplink ACK-on-Error Mode: Two-byte SCHC IPv6 packets using the Uplink ACK-on-Error mode: Two-byte SCHC
Header Option 2. Header Option 2.
4.2. Downlink Fragmentation Rules Example 4.2. Downlink Fragmentation Rules Example
* For the Downlink ACK-Always Mode: Single-byte SCHC Header, RuleIDs For the Downlink ACK-Always Mode: Single-byte SCHC Header, RuleIDs
can get values in ranges from 0b'000 to 0b'111. can get values in ranges from 0b'000 to 0b'111.
5. Fragmentation Sequence Examples 5. Fragmentation Sequence Examples
In this section, some sequence diagrams depicting messages exchanges In this section, some sequence diagrams depict message exchanges for
for different fragmentation modes and use cases are shown. In the different fragmentation modes and use cases are shown. In the
examples, 'Seq' indicates the Sigfox Sequence Number of the frame examples, 'Seq' indicates the Sigfox Sequence Number of the frame
carrying a fragment. carrying a fragment.
5.1. Uplink No-ACK Examples 5.1. Uplink No-ACK Examples
The FCN field indicates the size of the data packet. The first The FCN field indicates the size of the data packet. The first
fragment is marked with FCN = X-1, where X is the number of fragments fragment is marked with FCN = X-1, where X is the number of fragments
the message is split into. All fragments are marked with decreasing the message is split into. All fragments are marked with decreasing
FCN values. Last packet fragment is marked with the FCN = All-1 FCN values. The last packet fragment is marked with FCN = All-1
(1111). (1111).
Case No losses - All fragments are sent and received successfully. *Case No Losses - All fragments are sent and received successfully.*
Sender Receiver Sender Receiver
|-------FCN=6,Seq=1-------->| |-------FCN=6,Seq=1-------->|
|-------FCN=5,Seq=2-------->| |-------FCN=5,Seq=2-------->|
|-------FCN=4,Seq=3-------->| |-------FCN=4,Seq=3-------->|
|-------FCN=3,Seq=4-------->| |-------FCN=3,Seq=4-------->|
|-------FCN=2,Seq=5-------->| |-------FCN=2,Seq=5-------->|
|-------FCN=1,Seq=6-------->| |-------FCN=1,Seq=6-------->|
|-------FCN=15,Seq=7------->| All fragments received |-------FCN=15,Seq=7------->| All fragments received
(End) (End)
Figure 31: Uplink No-ACK No-Losses Figure 31: Uplink No-ACK No-Losses
When the first SCHC fragment is received, the Receiver can calculate When the first SCHC Fragment is received, the receiver can calculate
the total number of SCHC fragments that the SCHC Packet is composed the total number of SCHC Fragments that the SCHC Packet is composed
of. For example, if the first fragment is numbered with FCN=6, the of. For example, if the first fragment is numbered with FCN=6, the
receiver can expect six more messages/fragments (i.e., with FCN going receiver can expect six more messages/fragments (i.e., with FCN going
from 5 downwards, and the last fragment with an FCN equal to 15). from 5 downwards and the last fragment with an FCN equal to 15).
Case losses on any fragment except the first. *Case Losses on Any Fragment except the First*
Sender Receiver Sender Receiver
|-------FCN=6,Seq=1-------->| |-------FCN=6,Seq=1-------->|
|-------FCN=5,Seq=2----X | |-------FCN=5,Seq=2----X |
|-------FCN=4,Seq=3-------->| |-------FCN=4,Seq=3-------->|
|-------FCN=3,Seq=4-------->| |-------FCN=3,Seq=4-------->|
|-------FCN=2,Seq=5-------->| |-------FCN=2,Seq=5-------->|
|-------FCN=1,Seq=6-------->| |-------FCN=1,Seq=6-------->|
|-------FCN=15,Seq=7------->| Missing Fragment Unable to reassemble |-------FCN=15,Seq=7------->| Missing Fragment Unable to reassemble
(End) (End)
Figure 32: Uplink No-ACK Losses (scenario 1) Figure 32: Uplink No-ACK Losses (Scenario 1)
5.2. Uplink ACK-on-Error Examples: Single-byte SCHC Header 5.2. Uplink ACK-on-Error Examples: Single-Byte SCHC Header
The single-byte SCHC header ACK-on-Error mode allows sending up to 28 The Single-byte SCHC Header ACK-on-Error mode allows sending up to 28
fragments and packet sizes up to 300 bytes. The SCHC fragments may fragments and packet sizes up to 300 bytes. The SCHC Fragments may
be delivered asynchronously and Downlink ACK can be sent be delivered asynchronously, and Downlink ACK can be sent
opportunistically. opportunistically.
Case No losses *Case No Losses*
The Downlink flag must be enabled in the sender Uplink message to The Downlink flag must be enabled in the sender Uplink message to
allow a Downlink message from the receiver. The Downlink Enable in allow a Downlink message from the receiver. The Downlink Enable in
the figures shows where the sender MUST enable the Downlink, and wait the figures shows where the sender MUST enable the Downlink and wait
for an ACK. for an ACK.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2----->| |-----W=0,FCN=5,Seq=2----->|
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4----->| |-----W=0,FCN=3,Seq=4----->|
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| |-----W=0,FCN=1,Seq=6----->|
DL Enable |-----W=0,FCN=0,Seq=7----->| DL Enable |-----W=0,FCN=0,Seq=7----->|
(no ACK) (no ACK)
|-----W=1,FCN=6,Seq=8----->| |-----W=1,FCN=6,Seq=8----->|
|-----W=1,FCN=5,Seq=9----->| |-----W=1,FCN=5,Seq=9----->|
|-----W=1,FCN=4,Seq=10---->| |-----W=1,FCN=4,Seq=10---->|
DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received
|<- Compound ACK,W=1,C=1 --| C=1 |<- Compound ACK,W=1,C=1 --| C=1
(End) (End)
Figure 33: Uplink ACK-on-Error No-Losses Figure 33: Uplink ACK-on-Error No-Losses
Case Fragment losses in first window *Case Fragment Losses in the First Window*
In this case, fragments are lost in the first window (W=0). After In this case, fragments are lost in the first window (W=0). After
the first All-0 message arrives, the Receiver leverages the the first All-0 message arrives, the receiver leverages the
opportunity and sends a SCHC ACK with the corresponding bitmap and opportunity and sends a SCHC ACK with the corresponding bitmap and
C=0. C=0.
After the loss fragments from the first window (W=0) are resent, the After the loss fragments from the first window (W=0) are resent, the
sender continues transmitting the fragments of the following window sender continues transmitting the fragments of the following window
(W=1) without opening a reception opportunity. Finally, the All-1 (W=1) without opening a reception opportunity. Finally, the All-1
fragment is sent, the Downlink is enabled, and the SCHC ACK is fragment is sent, the Downlink is enabled, and the SCHC ACK is
received with C=1. Note that the SCHC Compound ACK also uses a received with C=1. Note that the SCHC Compound ACK also uses a
Sequence Number. Sequence Number.
skipping to change at page 31, line 37 skipping to change at line 1403
|<- Compound ACK,W=0,C=0 --| Bitmap:1011011 | FCN=2,Seq=5 |<- Compound ACK,W=0,C=0 --| Bitmap:1011011 | FCN=2,Seq=5
|-----W=0,FCN=5,Seq=9----->| -- |-----W=0,FCN=5,Seq=9----->| --
|-----W=0,FCN=2,Seq=10---->| |-----W=0,FCN=2,Seq=10---->|
|-----W=1,FCN=6,Seq=11---->| |-----W=1,FCN=6,Seq=11---->|
|-----W=1,FCN=5,Seq=12---->| |-----W=1,FCN=5,Seq=12---->|
|-----W=1,FCN=4,Seq=13---->| |-----W=1,FCN=4,Seq=13---->|
DL Enable |-----W=1,FCN=7,Seq=14---->| All fragments received DL Enable |-----W=1,FCN=7,Seq=14---->| All fragments received
|<-Compound ACK,W=1,C=1 ---| C=1 |<-Compound ACK,W=1,C=1 ---| C=1
(End) (End)
Figure 34: Uplink ACK-on-Error Losses on First Window Figure 34: Uplink ACK-on-Error Losses in the First Window
Case Fragment All-0 lost in first window (W=0) *Case Fragment All-0 Lost in the First Window (W=0)*
In this example, the All-0 of the first window (W=0) is lost. In this example, the All-0 of the first window (W=0) is lost.
Therefore, the Receiver waits for the next All-0 message of Therefore, the receiver waits for the next All-0 message of
intermediate windows, or All-1 message of last window to generate the intermediate windows or All-1 message of last window to generate the
corresponding SCHC ACK, notifying the absence of the All-0 of window corresponding SCHC ACK, which indicates that the All-0 of window 0 is
0. absent.
The sender resends the missing All-0 messages (with any other missing The sender resends the missing All-0 messages (with any other missing
fragment from window 0) without opening a reception opportunity. fragment from window 0) without opening a reception opportunity.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2----->| |-----W=0,FCN=5,Seq=2----->|
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4----->| |-----W=0,FCN=3,Seq=4----->|
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| DL Enable |-----W=0,FCN=1,Seq=6----->| DL Enable
|-----W=0,FCN=0,Seq=7--X | |-----W=0,FCN=0,Seq=7--X |
(no ACK) (no ACK)
|-----W=1,FCN=6,Seq=8----->| |-----W=1,FCN=6,Seq=8----->|
|-----W=1,FCN=5,Seq=9----->| __ |-----W=1,FCN=5,Seq=9----->| __
|-----W=1,FCN=4,Seq=10---->| |W=0 |-----W=1,FCN=4,Seq=10---->| |W=0
DL Enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<- FCN=0,Seq=7 DL Enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<- FCN=0,Seq=7
|<-Compound ACK,W=0,C=0 ---| Bitmap:1111110 |__ |<-Compound ACK,W=0,C=0 ---| Bitmap:1111110 |__
|-----W=0,FCN=0,Seq=13---->| All fragments received |-----W=0,FCN=0,Seq=13---->| All fragments received
DL Enable |-----W=1,FCN=7,Seq=14---->| DL Enable |-----W=1,FCN=7,Seq=14---->|
|<-Compound ACK,W=1,C=1 ---| C=1 |<-Compound ACK,W=1,C=1 ---| C=1
(End) (End)
Figure 35: Uplink ACK-on-Error All-0 Lost on First Window Figure 35: Uplink ACK-on-Error All-0 Lost in the First Window
In the following diagram, besides the All-0 there are other fragment In the following diagram, besides the All-0, there are other fragment
losses in the first window (W=0). losses in the first window (W=0).
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2--X | |-----W=0,FCN=5,Seq=2--X |
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4--X | |-----W=0,FCN=3,Seq=4--X |
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| |-----W=0,FCN=1,Seq=6----->|
DL Enable |-----W=0,FCN=0,Seq=7--X | DL Enable |-----W=0,FCN=0,Seq=7--X |
skipping to change at page 33, line 5 skipping to change at line 1461
|-----W=1,FCN=4,Seq=10---->| |W=0 |-----W=1,FCN=4,Seq=10---->| |W=0
DL Enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<- FCN=5,Seq=2 DL Enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<- FCN=5,Seq=2
|<--Compound ACK,W=0,C=0 --| Bitmap:1010110 |FCN=3,Seq=4 |<--Compound ACK,W=0,C=0 --| Bitmap:1010110 |FCN=3,Seq=4
|-----W=0,FCN=5,Seq=13---->| |FCN=0,Seq=7 |-----W=0,FCN=5,Seq=13---->| |FCN=0,Seq=7
|-----W=0,FCN=3,Seq=14---->| -- |-----W=0,FCN=3,Seq=14---->| --
|-----W=0,FCN=0,Seq=15---->| All fragments received |-----W=0,FCN=0,Seq=15---->| All fragments received
DL Enable |-----W=1,FCN=7,Seq=16---->| DL Enable |-----W=1,FCN=7,Seq=16---->|
|<-Compound ACK,W=1,C=1 ---| C=1 |<-Compound ACK,W=1,C=1 ---| C=1
(End) (End)
Figure 36: Uplink ACK-on-Error All-0 and other Fragments Lost on Figure 36: Uplink ACK-on-Error All-0 and Other Fragments Lost in
First Window the First Window
In the next examples, there are fragment losses in both the first In the next examples, there are fragment losses in both the first
(W=0) and second (W=1) windows. The retransmission cycles after the (W=0) and second (W=1) windows. The retransmission cycles after the
All-1 is sent (i.e., not in intermediate windows) MUST always finish All-1 is sent (i.e., not in intermediate windows) MUST always finish
with an All-1, as it serves as an ACK Request message to confirm the with an All-1, as it serves as an ACK Request message to confirm the
correct reception of the retransmitted fragments. correct reception of the retransmitted fragments.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2--X | |-----W=0,FCN=5,Seq=2--X |
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4--X | __ |-----W=0,FCN=3,Seq=4--X | __
|-----W=0,FCN=2,Seq=5----->| |W=0 |-----W=0,FCN=2,Seq=5----->| |W=0
|-----W=0,FCN=1,Seq=6----->| |FCN=5,Seq=2 |-----W=0,FCN=1,Seq=6----->| |FCN=5,Seq=2
DL enable |-----W=0,FCN=0,Seq=7--X | |FCN=3,Seq=4 DL Enable |-----W=0,FCN=0,Seq=7--X | |FCN=3,Seq=4
(no ACK) |FCN=0,Seq=7 (no ACK) |FCN=0,Seq=7
|-----W=1,FCN=6,Seq=8--X | |W=1 |-----W=1,FCN=6,Seq=8--X | |W=1
|-----W=1,FCN=5,Seq=9----->| |FCN=6,Seq=8 |-----W=1,FCN=5,Seq=9----->| |FCN=6,Seq=8
|-----W=1,FCN=4,Seq=10-X | |FCN=4,Seq=10 |-----W=1,FCN=4,Seq=10-X | |FCN=4,Seq=10
DL enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<-|__ DL Enable |-----W=1,FCN=7,Seq=11---->| Missing Fragment<-|__
|<-Compound ACK,W=0,1,C=0--| Bitmap W=0:1010110 |<-Compound ACK,W=0,1,C=0--| Bitmap W=0:1010110
|-----W=0,FCN=5,Seq=13---->| W=1:0100001 |-----W=0,FCN=5,Seq=13---->| W=1:0100001
|-----W=0,FCN=3,Seq=14---->| |-----W=0,FCN=3,Seq=14---->|
|-----W=0,FCN=0,Seq=15---->| |-----W=0,FCN=0,Seq=15---->|
|-----W=1,FCN=6,Seq=16---->| |-----W=1,FCN=6,Seq=16---->|
|-----W=1,FCN=4,Seq=17---->| All fragments received |-----W=1,FCN=4,Seq=17---->| All fragments received
DL enable |-----W=1,FCN=7,Seq=18---->| DL Enable |-----W=1,FCN=7,Seq=18---->|
|<-Compound ACK,W=1,C=1----| C=1 |<-Compound ACK,W=1,C=1----| C=1
(End) (End)
Figure 37: Uplink ACK-on-Error All-0 and other Fragments Lost on Figure 37: Uplink ACK-on-Error All-0 and Other Fragments Lost in
First and Second Windows (1) the First and Second Windows (1)
The figure below is a similar case as above but with fewer fragments
in the second window (W=1).
Similar case as above, but with fewer fragments in the second window
(W=1)
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2--X | |-----W=0,FCN=5,Seq=2--X |
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4--X | |-----W=0,FCN=3,Seq=4--X |
|-----W=0,FCN=2,Seq=5----->| __ |-----W=0,FCN=2,Seq=5----->| __
|-----W=0,FCN=1,Seq=6----->| |W=0 |-----W=0,FCN=1,Seq=6----->| |W=0
DL enable |-----W=0,FCN=0,Seq=7--X | |FCN=5,Seq=2 DL Enable |-----W=0,FCN=0,Seq=7--X | |FCN=5,Seq=2
(no ACK) |FCN=3,Seq=4 (no ACK) |FCN=3,Seq=4
|-----W=1,FCN=6,Seq=8--X | |FCN=0,Seq=7 |-----W=1,FCN=6,Seq=8--X | |FCN=0,Seq=7
DL enable |-----W=1,FCN=7,Seq=9----->| Missing Fragment--> W=1 DL Enable |-----W=1,FCN=7,Seq=9----->| Missing Fragment--> W=1
|<-Compound ACK,W=0,1, C=0-| Bitmap W=0:1010110,|FCN=6,Seq=8 |<-Compound ACK,W=0,1, C=0-| Bitmap W=0:1010110,|FCN=6,Seq=8
|-----W=0,FCN=5,Seq=11---->| W=1:0000001 |__ |-----W=0,FCN=5,Seq=11---->| W=1:0000001 |__
|-----W=0,FCN=3,Seq=12---->| |-----W=0,FCN=3,Seq=12---->|
|-----W=0,FCN=0,Seq=13---->| |-----W=0,FCN=0,Seq=13---->|
|-----W=1,FCN=6,Seq=14---->| All fragments received |-----W=1,FCN=6,Seq=14---->| All fragments received
DL enable |-----W=1,FCN=7,Seq=15---->| DL Enable |-----W=1,FCN=7,Seq=15---->|
|<-Compound ACK, W=1,C=1---| C=1 |<-Compound ACK, W=1,C=1---| C=1
(End) (End)
Figure 38: Uplink ACK-on-Error All-0 and other Fragments Lost on Figure 38: Uplink ACK-on-Error All-0 and Other Fragments Lost in
First and Second Windows (2) the First and Second Windows (2)
Case SCHC ACK is lost *Case SCHC ACK is Lost*
SCHC over Sigfox does not implement the SCHC ACK REQ message. SCHC over Sigfox does not implement the SCHC ACK REQ message.
Instead, it uses the SCHC All-1 message to request a SCHC ACK, when Instead, it uses the SCHC All-1 message to request a SCHC ACK when
required. required.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2----->| |-----W=0,FCN=5,Seq=2----->|
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4----->| |-----W=0,FCN=3,Seq=4----->|
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| |-----W=0,FCN=1,Seq=6----->|
DL Enable |-----W=0,FCN=0,Seq=7----->| DL Enable |-----W=0,FCN=0,Seq=7----->|
(no ACK) (no ACK)
|-----W=1,FCN=6,Seq=8----->| |-----W=1,FCN=6,Seq=8----->|
|-----W=1,FCN=5,Seq=9----->| |-----W=1,FCN=5,Seq=9----->|
|-----W=1,FCN=4,Seq=10---->| |-----W=1,FCN=4,Seq=10---->|
DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=13---->| RESEND ACK DL Enable |-----W=1,FCN=7,Seq=13---->| RESEND ACK
|<-Compound ACK,W=1,C=1 ---| C=1 |<-Compound ACK,W=1,C=1 ---| C=1
(End) (End)
Figure 39: Uplink ACK-on-Error ACK Lost Figure 39: Uplink ACK-on-Error ACK Lost
Case SCHC Compound ACK at the end *Case SCHC Compound ACK at the End*
In this example, SCHC Fragment losses are found in both window 0 and In this example, SCHC Fragment losses are found in both windows 0 and
1. However, the sender does not send a SCHC ACK after the All-0 of 1. However, the sender does not send a SCHC Compound ACK after the
window 0. Instead, it sends a SCHC Compound ACK notifying losses of All-0 of window 0. Instead, it sends a SCHC Compound ACK indicating
both windows. fragment losses on both windows.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2--X | |-----W=0,FCN=5,Seq=2--X |
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4--X | |-----W=0,FCN=3,Seq=4--X |
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| __ |-----W=0,FCN=1,Seq=6----->| __
DL enable |-----W=0,FCN=0,Seq=7----->| Waits for |W=0 DL Enable |-----W=0,FCN=0,Seq=7----->| Waits for |W=0
(no ACK) next DL opportunity |FCN=5,Seq=2 (no ACK) next DL opportunity |FCN=5,Seq=2
|-----W=1,FCN=6,Seq=8--X | |FCN=3,Seq=4 |-----W=1,FCN=6,Seq=8--X | |FCN=3,Seq=4
DL enable |-----W=1,FCN=7,Seq=9----->| Missing Fragment<-- W=1 DL Enable |-----W=1,FCN=7,Seq=9----->| Missing Fragment<-- W=1
|<-Compound ACK,W=0,1, C=0-| Bitmap W=0:1010110 |FCN=6,Seq=8 |<-Compound ACK,W=0,1, C=0-| Bitmap W=0:1010110 |FCN=6,Seq=8
|-----W=0,FCN=5,Seq=11---->| W=1:0000001 -- |-----W=0,FCN=5,Seq=11---->| W=1:0000001 --
|-----W=0,FCN=3,Seq=12---->| |-----W=0,FCN=3,Seq=12---->|
|-----W=1,FCN=6,Seq=13---->| All fragments received |-----W=1,FCN=6,Seq=13---->| All fragments received
DL enable |-----W=1,FCN=7,Seq=14---->| DL Enable |-----W=1,FCN=7,Seq=14---->|
|<-Compound ACK, W=1, C=1 -| C=1 |<-Compound ACK, W=1, C=1 -| C=1
(End) (End)
Figure 40: Uplink ACK-on-Error Fragments Lost on First and Second Figure 40: Uplink ACK-on-Error Fragments Lost in the First and
Windows with one Compound ACK Second Windows with One Compound ACK
The number of times the same SCHC ACK message will be retransmitted The number of times the same SCHC ACK message will be retransmitted
is determined by the MAX_ACK_REQUESTS. is determined by the MAX_ACK_REQUESTS.
5.3. SCHC Abort Examples 5.3. SCHC Abort Examples
Case SCHC Sender-Abort *Case SCHC Sender-Abort*
The sender may need to send a Sender-Abort to stop the current The sender may need to send a Sender-Abort to stop the current
communication. This may happen, for example, if the All-1 has been communication. For example, this may happen if the All-1 has been
sent MAX_ACK_REQUESTS times. sent MAX_ACK_REQUESTS times.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2----->| |-----W=0,FCN=5,Seq=2----->|
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4----->| |-----W=0,FCN=3,Seq=4----->|
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| |-----W=0,FCN=1,Seq=6----->|
DL Enable |-----W=0,FCN=0,Seq=7----->| DL Enable |-----W=0,FCN=0,Seq=7----->|
(no ACK) (no ACK)
|-----W=1,FCN=6,Seq=8----->| |-----W=1,FCN=6,Seq=8----->|
|-----W=1,FCN=5,Seq=9----->| |-----W=1,FCN=5,Seq=9----->|
|-----W=1,FCN=4,Seq=10---->| |-----W=1,FCN=4,Seq=10---->|
DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received DL Enable |-----W=1,FCN=7,Seq=11---->| All fragments received
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=13---->| RESEND ACK (1) DL Enable |-----W=1,FCN=7,Seq=13---->| RESEND ACK (1)
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=15---->| RESEND ACK (2) DL Enable |-----W=1,FCN=7,Seq=15---->| RESEND ACK (2)
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=17---->| RESEND ACK (3) DL Enable |-----W=1,FCN=7,Seq=17---->| RESEND ACK (3)
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=18---->| RESEND ACK (4) DL Enable |-----W=1,FCN=7,Seq=18---->| RESEND ACK (4)
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |-----W=1,FCN=7,Seq=19---->| RESEND ACK (5) DL Enable |-----W=1,FCN=7,Seq=19---->| RESEND ACK (5)
| X--Compound ACK,W=1,C=1 -| C=1 | X--Compound ACK,W=1,C=1 -| C=1
DL Enable |----Sender-Abort,Seq=20-->| exit with error condition DL Enable |----Sender-Abort,Seq=20-->| exit with error condition
(End) (End)
Figure 41: Uplink ACK-on-Error Sender-Abort Figure 41: Uplink ACK-on-Error Sender-Abort
Case Receiver-Abort *Case Receiver-Abort*
The receiver may need to send a Receiver-Abort to stop the current The receiver may need to send a Receiver-Abort to stop the current
communication. This message can only be sent after a Downlink communication. This message can only be sent after a Downlink
enable. Enable.
Sender Receiver Sender Receiver
|-----W=0,FCN=6,Seq=1----->| |-----W=0,FCN=6,Seq=1----->|
|-----W=0,FCN=5,Seq=2----->| |-----W=0,FCN=5,Seq=2----->|
|-----W=0,FCN=4,Seq=3----->| |-----W=0,FCN=4,Seq=3----->|
|-----W=0,FCN=3,Seq=4----->| |-----W=0,FCN=3,Seq=4----->|
|-----W=0,FCN=2,Seq=5----->| |-----W=0,FCN=2,Seq=5----->|
|-----W=0,FCN=1,Seq=6----->| |-----W=0,FCN=1,Seq=6----->|
DL Enable |-----W=0,FCN=0,Seq=7----->| DL Enable |-----W=0,FCN=0,Seq=7----->|
|<------ RECV ABORT ------| under-resourced |<------ RECV ABORT ------| under-resourced
(Error) (Error)
Figure 42: Uplink ACK-on-Error Receiver-Abort Figure 42: Uplink ACK-on-Error Receiver-Abort
6. Security considerations 6. Security Considerations
The radio protocol authenticates and ensures the integrity of each The radio protocol authenticates and ensures the integrity of each
message. This is achieved by using a unique device ID and an AES-128 message. This is achieved by using a unique Device ID and an AES-
based message authentication code, ensuring that the message has been 128-based message authentication code, ensuring that the message has
generated and sent by the device (see [sigfox-spec] Section 3.8) or been generated and sent by the device (see [sigfox-spec],
network (see [sigfox-spec] Section 4.3) with the ID claimed in the Section 3.8) or Network (see [sigfox-spec], Section 4.3) with the ID
message [sigfox-spec]. claimed in the message [sigfox-spec].
Application data can be encrypted at the application layer or not, Application data may or may not be encrypted at the application
depending on the criticality of the use case. This flexibility layer, depending on the criticality of the use case. This
allows providing a balance between cost and effort vs. risk. AES-128 flexibility allows a balance between cost and effort versus risk.
in counter mode is used for encryption. Cryptographic keys are AES-128 in counter mode is used for encryption. Cryptographic keys
independent for each device. These keys are associated with the are independent for each device. These keys are associated with the
device ID and separate integrity and encryption keys are pre- Device ID, and separate integrity and encryption keys are pre-
provisioned. An encryption key is only provisioned if provisioned. An encryption key is only provisioned if
confidentiality is to be used (see [sigfox-spec] Section 5.3. Note confidentiality is to be used (see [sigfox-spec], Section 5.3; note
that further documentation is available at Sigfox upon request). that further documentation is available at Sigfox upon request).
The radio protocol has protections against replay attacks, and the The radio protocol has protections against replay attacks, and the
cloud-based core network provides firewalling protection against cloud-based core Network provides firewall protection against
undesired incoming communications [sigfox-spec]. undesired incoming communications [sigfox-spec].
The previously described security mechanisms do not guarantee an E2E The previously described security mechanisms do not guarantee end-to-
security between the Device SCHC C/D + F/R and the Network SCHC C/D + end security between the device SCHC C/D + F/R and the Network SCHC
F/R: potential security threats described in [RFC8724] are applicable C/D + F/R; potential security threats described in [RFC8724] are
to the profile specified in this document. applicable to the profile specified in this document.
In some circumstances, sending device location information is In some circumstances, sending device location information is privacy
privacy-sensitive. The Device Geolocation parameter provided by the sensitive. The Device Geolocation parameter provided by the Network
Network is optional, therefore it can be omitted to protect this is optional; therefore, it can be omitted to protect this aspect of
aspect of the device privacy. the device privacy.
7. IANA Considerations 7. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
8. Acknowledgements 8. References
Carles Gomez has been funded in part by the Spanish Government
through the Jose Castillejo CAS15/00336 grant, the TEC2016-79988-P
grant, and the PID2019-106808RA-I00 grant, and by Secretaria
d'Universitats i Recerca del Departament d'Empresa i Coneixement de
la Generalitat de Catalunya 2017 through grant SGR 376.
Sergio Aguilar has been funded by the ERDF and the Spanish Government
through project TEC2016-79988-P and project PID2019-106808RA-I00,
AEI/FEDER, EU.
Sandra Cespedes has been funded in part by the ANID Chile Project
FONDECYT Regular 1201893 and Basal Project FB0008.
Diego Wistuba has been funded by the ANID Chile Project FONDECYT
Regular 1201893.
The authors would like to thank Ana Minaburo, Clement Mannequin,
Rafael Vidal, Julien Boite, Renaud Marty, and Antonis Platis for
their useful comments and implementation design considerations.
9. References
9.1. Normative References
[I-D.ietf-lpwan-schc-compound-ack] 8.1. Normative References
Zuniga, JC., Gomez, C., Aguilar, S., Toutain, L.,
Cespedes, S., and D. Wistuba, "SCHC Compound ACK", Work in
Progress, Internet-Draft, draft-ietf-lpwan-schc-compound-
ack-10, January 2023, <httpsout-://www.ietf.org/internet-
drafts/draft-ietf-lpwan-schc-compound-ack-10.txt>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8724] Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC. [RFC8724] Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC.
Zuniga, "SCHC: Generic Framework for Static Context Header Zuniga, "SCHC: Generic Framework for Static Context Header
Compression and Fragmentation", RFC 8724, Compression and Fragmentation", RFC 8724,
DOI 10.17487/RFC8724, April 2020, DOI 10.17487/RFC8724, April 2020,
<https://www.rfc-editor.org/info/rfc8724>. <https://www.rfc-editor.org/info/rfc8724>.
[RFC9441] Zúñiga, JC., Gomez, C., Aguilar, S., Toutain, L.,
Céspedes, S., and D. Wistuba, "Static Context Header
Compression (SCHC) Compound Acknowledgement (ACK)",
RFC 9441, DOI 10.17487/RFC9441, July 2023,
<https://www.rfc-editor.org/info/rfc9441>.
[sigfox-spec] [sigfox-spec]
Sigfox, "Sigfox Radio Specifications", Sigfox, "Sigfox Device Radio Specifications",
<https://build.sigfox.com/sigfox-device-radio- <https://build.sigfox.com/sigfox-device-radio-
specifications>. specifications>.
9.2. Informative References 8.2. Informative References
[I-D.ietf-core-comi] [CORE-COMI]
Veillette, M., Stok, P. V. D., Pelov, A., Bierman, A., and Veillette, M., Ed., van der Stok, P., Ed., Pelov, A.,
I. Petrov, "CoAP Management Interface (CORECONF)", Work in Bierman, A., and C. Bormann, Ed., "CoAP Management
Progress, Internet-Draft, draft-ietf-core-comi-11, 17 Interface (CORECONF)", Work in Progress, Internet-Draft,
January 2021, <https://www.ietf.org/archive/id/draft-ietf- draft-ietf-core-comi-12, 13 March 2023,
core-comi-11.txt>. <https://datatracker.ietf.org/doc/html/draft-ietf-core-
comi-12>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<https://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained [RFC7252] Shelby, Z., Hartke, K., and C. Bormann, "The Constrained
Application Protocol (CoAP)", RFC 7252, Application Protocol (CoAP)", RFC 7252,
DOI 10.17487/RFC7252, June 2014, DOI 10.17487/RFC7252, June 2014,
<https://www.rfc-editor.org/info/rfc7252>. <https://www.rfc-editor.org/info/rfc7252>.
skipping to change at page 40, line 18 skipping to change at line 1749
<https://www.rfc-editor.org/info/rfc8949>. <https://www.rfc-editor.org/info/rfc8949>.
[sigfox-callbacks] [sigfox-callbacks]
Sigfox, "Sigfox Callbacks", Sigfox, "Sigfox Callbacks",
<https://support.sigfox.com/docs/callbacks-documentation>. <https://support.sigfox.com/docs/callbacks-documentation>.
[sigfox-docs] [sigfox-docs]
Sigfox, "Sigfox Documentation", Sigfox, "Sigfox Documentation",
<https://support.sigfox.com/docs>. <https://support.sigfox.com/docs>.
Acknowledgements
Carles Gomez has been funded in part by the Spanish Government
through the TEC2016-79988-P grant and the PID2019-106808RA-I00 grant
(funded by MCIN / AEI / 10.13039/501100011033) and by Secretaria
d'Universitats i Recerca del Departament d'Empresa i Coneixement de
la Generalitat de Catalunya through 2017 grant SGR 376 and 2021 grant
SGR 00330.
Sergio Aguilar has been funded by the ERDF and the Spanish Government
through project TEC2016-79988-P and project PID2019-106808RA-I00,
AEI/FEDER, EU (funded by MCIN / AEI / 10.13039/501100011033).
Sandra Cespedes has been funded in part by the ANID Chile Project
FONDECYT Regular 1201893 and Basal Project FB0008.
Diego Wistuba has been funded by the ANID Chile Project FONDECYT
Regular 1201893.
The authors would like to thank Ana Minaburo, Clement Mannequin,
Rafael Vidal, Julien Boite, Renaud Marty, and Antonis Platis for
their useful comments and implementation design considerations.
Authors' Addresses Authors' Addresses
Juan Carlos Zuniga Juan Carlos Zúñiga
Montreal QC Montreal QC
Canada Canada
Email: j.c.zuniga@ieee.org Email: j.c.zuniga@ieee.org
Carles Gomez Carles Gomez
Universitat Politecnica de Catalunya Universitat Politècnica de Catalunya
C/Esteve Terradas, 7 C/Esteve Terradas, 7
08860 Castelldefels 08860 Castelldefels
Spain Spain
Email: carles.gomez@upc.edu Email: carles.gomez@upc.edu
Sergio Aguilar Sergio Aguilar
Universitat Politecnica de Catalunya Universitat Politècnica de Catalunya
C/Esteve Terradas, 7 C/Esteve Terradas, 7
08860 Castelldefels 08860 Castelldefels
Spain Spain
Email: sergio.aguilar.romero@upc.edu Email: sergio.aguilar.romero@upc.edu
Laurent Toutain Laurent Toutain
IMT-Atlantique IMT-Atlantique
2 rue de la Chataigneraie
CS 17607 CS 17607
2 rue de la Chataigneraie
35576 Cesson-Sevigne Cedex 35576 Cesson-Sevigne Cedex
France France
Email: Laurent.Toutain@imt-atlantique.fr Email: Laurent.Toutain@imt-atlantique.fr
Sandra Cespedes
Sandra Céspedes
Concordia University Concordia University
1455 De Maisonneuve Blvd. W. 1455 De Maisonneuve Blvd. W.
Montreal QC, H3G 1M8 Montreal QC H3G 1M8
Canada Canada
Email: sandra.cespedes@concordia.ca Email: sandra.cespedes@concordia.ca
Diego Wistuba Diego Wistuba
NIC Labs, Universidad de Chile NIC Labs, Universidad de Chile
Av. Almte. Blanco Encalada 1975 Av. Almte. Blanco Encalada 1975
Santiago Santiago
Chile Chile
Email: wistuba@niclabs.cl Email: research@witu.cl
Julien Boite Julien Boite
Unabiz (Sigfox) Unabiz (Sigfox)
Labege Labege
France France
Email: julien.boite@unabiz.com Email: juboite@free.fr
URI: https://www.sigfox.com/ URI: https://www.sigfox.com/
 End of changes. 276 change blocks. 
724 lines changed or deleted 729 lines changed or added

This html diff was produced by rfcdiff 1.48.