Static Context Header Compression (SCHC) over Sigfox Low-Power Wide Area Network (LPWAN)
Extracted elements (29)
A single SCHC Tile size per fragmentation mode is defined so that every Sigfox message always carries exactly one SCHC Tile, exploiting the fixed Uplink (12 bytes) and Downlink (8 bytes) payload sizes to avoid sub-optimal padding.
ACK-on-Error mode is chosen as optimal for reliable Uplink SCHC Packet transmission over Sigfox because it leads to a reduced number of ACKs in the lower-capacity Downlink channel and allows Downlink messages to be sent asynchronously and opportunistically. ACK-Always would not minimize ACKs, and No-ACK would not allow reliable transmission.
The SCHC ACK REQ message is not used in SCHC over Sigfox; instead, the All-1 SCHC Fragment serves as the ACK request. This avoids an extra message type and leverages the existing All-1 end-of-window signalling that already triggers a Downlink opportunity.
WINDOW_SIZE for Two-Byte Header Option 1 is limited to 12 (not the maximum 15 for 4-bit FCN) because 4 windows (M=2) with bitmaps of size 12 can be fitted in a single SCHC Compound ACK within the 64-bit Sigfox Downlink payload constraint.
RuleID value 0b'111 in a 3-bit Single-byte Header is reserved to signal that a Two-byte SCHC Header follows; within the Two-byte space, 0b'111111 signals Option 2. Implementations must parse RuleID left-to-right to distinguish header lengths before interpreting fragmentation fields.
A SCHC Receiver-Abort MUST be sent if all RuleIDs are being processed by the receiver at a certain time and a new one is requested, or if the RuleID of the fragment is not valid. A SCHC Receiver-Abort MUST also be triggered when the Inactivity Timer expires. A Receiver-Abort Downlink message MUST only be sent when there is a Downlink transmission opportunity.
A SCHC Sender-Abort MUST be sent if the number of repeated All-1s sent in sequence, without a Compound ACK reception in between, is greater than or equal to MAX_ACK_REQUESTS.
ACK-on-Error with a single-byte header MUST be used for short- to medium-sized packets that need to be sent reliably. 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.
ACK-on-Error with a two-byte header MUST be used for medium- to large-sized packets that need to be sent reliably. The SCHC ACK REQ MUST NOT be used; instead the All-1 SCHC Fragment MUST be used to request a SCHC ACK.
For Downlink frames, the payload length MUST be 64 bits (8 bytes). If less information 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 reassembly process.
For reliable Downlink fragment transmission, the ACK-Always mode SHOULD be used. The fragment receiver MUST send an Uplink transmission and request a Downlink every 24 hours when no SCHC session is started.
For Rules where the number of fragments in the last window is unknown, an RCS field MUST be used indicating the number of fragments in the last window including the All-1, so the receiver can detect missing fragments before the All-1.
For the Uplink ACK-on-Error fragmentation mode, a Downlink opportunity MUST be indicated by the last fragment of every window, signalled by FCN = All-0 or FCN = All-1. Intermediate SCHC Fragments with FCNs different from All-0 or All-1 MUST NOT use the Downlink request flag to request a SCHC ACK.
Single-byte SCHC Header No-ACK mode MUST be used for transmitting short, non-critical packets that require fragmentation and do not require full reliability. In No-ACK mode, the FCN field MUST be used to indicate the size of the data packet; consecutive fragments MUST be marked with decreasing FCN values and the last fragment marked with FCN = All-1.
The integrity of the fragmentation-reassembly process of a SCHC Packet MUST be checked at the receiver end. The use of a Reassembly Check Sequence (RCS) MUST be used to provide this integrity check over Sigfox.
The RuleID MUST be included in the SCHC header. It is RECOMMENDED to keep the number of Rules defined for a specific device to the minimum possible, since the total number of Rules directly affects the RuleID field size and hence the fragmentation header size.
When the ACK-on-Error mode is used for Uplink fragmentation, the SCHC Compound ACK defined in RFC 9441 MUST be used in the Downlink responses.
Sending device location information may be privacy-sensitive. The Device Geolocation parameter provided by the Sigfox Network is optional and can be omitted to protect device location privacy.
Downlink ACK-Always Single-Byte SCHC Header fragmentation parameters: RuleID 3 bits, DTag 0 bits, W 0 bits, FCN 5 bits (total header 8 bits), MAX_ACK_REQUESTS 5, WINDOW_SIZE 31, regular tile size 7 bytes, All-1 tile size 0–6 bytes, RCS size 5 bits.
Uplink ACK-on-Error Single-Byte SCHC Header fragmentation parameters: RuleID 3 bits, DTag 0 bits, W 2 bits, FCN 3 bits (total header 8 bits), MAX_ACK_REQUESTS 5, WINDOW_SIZE 7, regular tile size 11 bytes, RCS size 3 bits, maximum SCHC Packet size 300 bytes.
Uplink ACK-on-Error Two-Byte Header Option 2 parameters: RuleID 8 bits, DTag 0 bits, W 3 bits, FCN 5 bits, RCS 5 bits (total header 16 bits), MAX_ACK_REQUESTS 5, WINDOW_SIZE 31, regular tile size 10 bytes, maximum SCHC Packet size 2400 bytes.
Uplink No-ACK Single-Byte SCHC Header fragmentation parameters: RuleID 3 bits, DTag 0 bits, FCN 5 bits (total header 8 bits), regular tile size 11 bytes, All-1 tile size 0–10 bytes, RCS size 5 bits, maximum SCHC Packet size 340 bytes, default Inactivity Timer 12 hours.
Sigfox authenticates each message using the device's unique Device ID and an AES-128-based message authentication code, ensuring messages originate from the claimed device or network. Application data may optionally be encrypted using AES-128 in counter mode with per-device keys; confidentiality is not mandatory. The radio protocol includes replay-attack protections and the cloud network provides firewall protection.
The Sigfox radio-layer security mechanisms do not guarantee end-to-end security between the device SCHC C/D + F/R and the Network SCHC C/D + F/R; potential security threats described in RFC 8724 are applicable to this profile.
Downlink ACK-Always SCHC ACK with bitmap (C=0): RuleID (3 bits) | C=b'0 (1 bit) | Bitmap (31 bits) | b'0-pad (5 bits). Success ACK (C=1): RuleID (3 bits) | C=b'1 (1 bit) | b'0-pad (4 bits). Total 2 bytes.
SCHC Compound ACK for Uplink ACK-on-Error Single-Byte Header (C=0): RuleID (3 bits) | W=w1 (2 bits) | C=b'0 (1 bit) | Bitmap (7 bits) | ... | W=wi (2 bits) | Bitmap (7 bits) | b'00 (2 bits) | b'0-pad. Reports losses in windows w1 < w2 < ... < wi.
Uplink ACK-on-Error Single-Byte Receiver-Abort message format: RuleID (3 bits) | W=b'11 (2 bits) | C=b'1 (1 bit) | b'11 (2 bits) | 0xFF all-1s (8 bits) | b'0-pad (48 bits). Total 64 bits to fill Sigfox Downlink frame.
Uplink No-ACK All-1 SCHC Fragment format: RuleID (3 bits) | FCN=ALL-1 (5 bits) | RCS (5 bits) | padding b'000 (3 bits) | Payload (0–80 bits). Sender-Abort is 1 byte (RuleID + FCN=ALL-1 only) making All-1 distinguishable by minimum size of 2 bytes.
Uplink No-ACK Regular SCHC Fragment format: RuleID (3 bits) | FCN (5 bits) | Payload (88 bits). Total header 8 bits; padding MUST NOT be added since tiles are 11 bytes.