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