RFC 9441: Static Context Header Compression (SCHC) Compound Acknowledgement (ACK)
- J. Zúñiga,
- C. Gomez,
- S. Aguilar,
- L. Toutain,
- S. Céspedes,
- D. Wistuba
Abstract
This document updates the Static Context Header Compression (SCHC) and fragmentation protocol (RFC 8724) and the corresponding YANG module (RFC 9363). It defines a SCHC Compound Acknowledgement (ACK) message format and procedure, which are intended to reduce the number of response transmissions (i.e., SCHC ACKs) in the ACK-on-Error Mode, by accumulating bitmaps of several windows in a single SCHC message (i.e., the SCHC Compound ACK).¶
Both the message format and procedure are generic, so they can be used, for instance, by any of the four Low-Power Wide Area Network (LPWAN) technologies defined in RFC 8376, which are Sigfox, Long Range Wide Area Network (LoRaWAN), Narrowband Internet of Things (NB-IoT), and IEEE 802.15.4w.¶
Status of This Memo
This is an Internet Standards Track document.¶
This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841.¶
Information about the current status of this document, any
errata, and how to provide feedback on it may be obtained at
https://
Copyright Notice
Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(https://
1. Introduction
The Generic Framework for Static Context Header Compression (SCHC) and Fragmentation specification [RFC8724] describes two mechanisms:
i) a protocol header compression scheme and ii) a frame fragmentation and loss recovery functionality. Either can be used on top of radio technologies, such as the four Low-Power Wide Area Networks (LPWANs) listed in [RFC8376], which are Sigfox, LoRaWAN, NB-IoT, and IEEE 802.15.4w. These LPWANs have similar characteristics
SCHC offers a great level of flexibility to accommodate all these LPWAN technologies. Even though there are a number of similarities between
them, some differences exist with respect to the transmission characteristics
In ACK-on-Error mode in [RFC8724], the SCHC Packet is fragmented into pieces called tiles, where all tiles are the same size except for the last one, which can be smaller. Successive tiles are grouped in windows of fixed size. A SCHC Fragment carries one or several contiguous tiles, which may span multiple windows. When sending all tiles from all windows, the last tile is sent in an All-1 SCHC Fragment. The SCHC receiver will send a SCHC ACK reporting on the reception of exactly one window of tiles after receiving the All-1 SCHC Fragment. In case of SCHC Fragment losses, a bitmap is added to the failure SCHC ACK, where each bit in the bitmap corresponds to a tile in the window. If SCHC Fragment losses span multiple windows, the SCHC receiver will send one failure SCHC ACK per window with losses.¶
This document updates the SCHC protocol for frame fragmentation and loss recovery. It defines a SCHC Compound ACK format and procedure, which are intended to reduce the number of response transmissions (i.e., SCHC ACKs) in the ACK-on-Error mode of SCHC. The SCHC Compound ACK extends the failure SCHC ACK message format so that it can contain several bitmaps, with each bitmap being identified by its corresponding window number. The SCHC Compound ACK is backwards compatible with the SCHC ACK as defined in [RFC8724], and introduces flexibility, as the receiver has the capability to respond to the All-0 SCHC Fragment, providing more Downlink opportunities and therefore adjusting to the delay requirements of the application.¶
2. Terminology
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
It is assumed that the reader is familiar with the terms and mechanisms defined in [RFC8376] and [RFC8724].¶
3. SCHC Compound ACK
The SCHC Compound ACK is a failure SCHC ACK message that can contain several bitmaps, with each bitmap being identified by its corresponding window number. In [RFC8724], the failure SCHC ACK message only contains one bitmap corresponding to one window. The SCHC Compound ACK extends this format, allowing more windows to be acknowledged in a single ACK and reducing the total number of failure SCHC ACK messages, especially when fragment losses are present in intermediate windows.¶
The SCHC Compound ACK MAY be used in fragmentation modes that use windows and that allow reporting the bitmaps of multiple windows at the same time; otherwise, the SCHC Compound ACK MUST NOT be used.¶
The SCHC Compound ACK:¶
3.1. SCHC Compound ACK Message Format
Figure 1 shows the success SCHC ACK format, i.e., when all fragments have been correctly received (C=1), as defined in [RFC8724].¶
In case SCHC Fragment losses are found in any of the windows of the SCHC Packet, the SCHC Compound ACK MAY be used. The SCHC Compound ACK message format is shown in Figures 2 and 3.¶
The SCHC Compound ACK groups the window number (W) with its corresponding bitmap.
Window numbers do not need to be contiguous. However, the window numbers and their corresponding bitmaps included in the SCHC Compound ACK message MUST be ordered from the lowest-numbered to the highest
If M or more padding bits would be needed after the last bitmap in the message to fill the last layer two (L2) Word, M bits at 0 MUST be appended after the last bitmap, and then padding is applied as needed (see Figure 2). Since window number 0 (if present in the message) is placed as w1, the M bits set to zero can't be confused with window number 0; therefore, they signal the end of the SCHC Compound ACK message.¶
Figure 3 shows the case when the required padding bits are strictly less than M bits. In this case, the L2 Maximum Transmission Unit (MTU) does not leave room for any extra window value, let alone any bitmap, thereby signaling the end of the SCHC Compound ACK message.¶
The SCHC Compound ACK MUST NOT use the Compressed Bitmap format for intermediate windows/bitmaps (i.e., bitmaps that are not the last one of the SCHC Compound ACK message); therefore, intermediate bitmap fields MUST be of size WINDOW_SIZE.
Hence, the SCHC Compound ACK MAY use a Compressed Bitmap format only for the last bitmap in the message.
The optional usage of this Compressed Bitmap for the last bitmap MUST be specified by the technology
The case where the last bitmap is effectively compressed corresponds to Figure 3, with the last bitmap ending (by construction) on an L2 Word boundary, therefore resulting in no padding at all.¶
Figure 4 illustrates a bitmap compression example of a SCHC Compound ACK, where the bitmap of the last window (wi) indicates that the first tile has not been correctly received. Because the compression algorithm resulted in effective compression, no padding is needed.¶
Figure 5 illustrates another bitmap compression example of a SCHC Compound ACK, where the bitmap of the last window (wi) indicates that the second and the fourth tiles have not been correctly received. In this example, the compression algorithm does not result in effective compression of the last bitmap. Besides, because more than M bits of padding would be needed to fill the last L2 Word, M bits at 0 are appended to the message before padding is applied.¶
If a SCHC sender gets a SCHC Compound ACK with invalid window numbers, such as duplicate W values or W values not sent yet, it MUST discard the whole SCHC Compound ACK message.¶
3.2. SCHC Compound ACK Behavior
The SCHC ACK-on-Error behavior is described in Section 8.4.3 of [RFC8724]. The present document slightly modifies this behavior. In the baseline SCHC specification, a SCHC ACK reports only one bitmap for the reception of exactly one window of tiles. The present SCHC Compound ACK specification extends the SCHC ACK message format so that it can contain several bitmaps, with each bitmap being identified by its corresponding window number.¶
As presented in [RFC8724], the SCHC ACK format can be considered a special SCHC Compound ACK case in which it reports only the tiles of one window. Therefore, the SCHC Compound ACK is backwards compatible with the SCHC ACK format presented in [RFC8724]. The receiver can assume that the sender does not support the SCHC Compound ACK if, although the SCHC Compound ACK sent by the receiver reports losses in more than one window, the sender does not resend any tiles from windows other than the first window reported in the SCHC Compound ACK. In that case, the receiver can send SCHC Compound ACKs with only one window of tiles.¶
Also, some flexibility is introduced with respect to [RFC8724] in that the receiver has the capability to respond (or not) to the All-0 with a SCHC Compound ACK, depending on certain parameters, like network conditions, sender buffer/cache size, and supported application delay. Note that even though the protocol allows for such flexibility, the actual decision criteria is not specified in this document. The application MUST set expiration timer values according to when the feedback is expected to be received, e.g., after the All-0 or after the All-1.¶
Section 3.2.1 (and its subsections) replaces the complete Section 8.4.3 (and its subsections) of [RFC8724].¶
3.2.1. ACK-on-Error Mode (Replaces Section 8.4.3, RFC 8724)
The ACK-on-Error mode supports L2 technologies that have variable MTU and out-of-order delivery.
It requires an L2 that provides a feedback path from the reassembler to the fragmenter.
See Appendix F for a discussion on using ACK-on-Error mode on quasi
In ACK-on-Error mode, windows are used.¶
All tiles except the last one and the penultimate one MUST be of equal size, hereafter called "regular". The size of the last tile MUST be smaller than or equal to the regular tile size. Regarding the penultimate tile, a Profile MUST pick one of the following two options:¶
A SCHC Fragment message carries one or several contiguous tiles, which may span multiple windows. A SCHC Compound ACK reports on the reception of one window of tiles or several windows of tiles, each one identified by its window number.¶
See Figure 6 (see Figure 23 of RFC 8724) for an example.¶
The W field is wide enough that it unambiguously represents an absolute window number. The fragment receiver sends SCHC Compound ACKs to the fragment sender about windows for which tiles are missing. No SCHC Compound ACK is sent by the fragment receiver for windows that it knows have been fully received.¶
The fragment sender retransmits SCHC Fragments for tiles that are reported missing. It can advance to next windows even before it has ascertained that all tiles belonging to previous windows have been correctly received, and it can still later retransmit SCHC Fragments with tiles belonging to previous windows. Therefore, the sender and the receiver may operate in a decoupled fashion. The fragmented SCHC Packet transmission concludes when:¶
Each Profile MUST specify which RuleID value(s) corresponds to SCHC F/R messages operating in this mode.¶
The W field MUST be present in the SCHC F/R messages.¶
Each Profile, for each RuleID value, MUST define:¶
For each active pair of RuleID and DTag values, the sender MUST maintain:¶
For each active pair of RuleID and DTag values, the receiver MUST maintain:¶
3.2.1.1. Sender Behavior (Replaces Section 8.4.3.1, RFC 8724)
At the beginning of the fragmentation of a new SCHC Packet:¶
A Regular SCHC Fragment message carries in its payload one or more tiles. If more than one tile is carried in one Regular SCHC Fragment:¶
Tiles that are not the last one MUST be sent in Regular SCHC Fragments as specified in Section 8.3.1.1. The FCN field MUST contain the tile index of the first tile sent in that SCHC Fragment.¶
In a Regular SCHC Fragment message, the sender MUST fill the W field with the window number of the first tile sent in that SCHC Fragment.¶
A Profile MUST define if the last tile of a SCHC Packet is sent:¶
In an All-1 SCHC Fragment message, the sender MUST fill the W field with the window number of the last tile of the SCHC Packet.¶
The fragment sender MUST send SCHC Fragments such that, all together, they contain all the tiles of the fragmented SCHC Packet.¶
The fragment sender MUST send at least one All-1 SCHC Fragment.¶
In doing the two items above, the sender MUST ascertain that the receiver will not receive the last tile through both a Regular SCHC Fragment and an All-1 SCHC Fragment.¶
The fragment sender MUST listen for SCHC Compound ACK messages after having sent:¶
A Profile MAY specify other times at which the fragment sender MUST listen for SCHC Compound ACK messages. For example, this could be after sending a complete window of tiles.¶
Each time a fragment sender sends an All-1 SCHC Fragment or a SCHC ACK REQ:¶
On Retransmission Timer expiration:¶
All message receptions being discussed in the rest of this section are to be understood as "matching the RuleID and DTag pair being processed", even if not spelled out, for brevity.¶
On receiving a SCHC Compound ACK:¶
See Figure 43 for one among several possible examples of a Finite State Machine implementing a sender behavior obeying this specification.¶
3.2.1.2. Receiver Behavior (Replaces Section 8.4.3.2, RFC 8724)
On receiving a SCHC Fragment with a RuleID and DTag pair not being processed at that time:¶
On reception of any SCHC F/R message for the RuleID and DTag pair being processed, the receiver MUST reset the Inactivity Timer pertaining to that RuleID and DTag pair.¶
All message receptions being discussed in the rest of this section are to be understood as "matching the RuleID and DTag pair being processed", even if not spelled out, for brevity.¶
On receiving a SCHC Fragment message, the receiver determines what tiles were received, based on the payload length and on the W and FCN fields of the SCHC Fragment.¶
On receiving a SCHC All-0 SCHC Fragment:¶
On receiving a SCHC ACK REQ or an All-1 SCHC Fragment:¶
A Profile MAY specify other times and circumstances at which a receiver sends a SCHC Compound ACK and which window the SCHC Compound ACK reports about in these circumstances.¶
Upon sending a SCHC Compound ACK, the receiver MUST increase the Attempts counter.¶
After receiving an All-1 SCHC Fragment, a receiver MUST check the integrity of the reassembled SCHC Packet at least every time it prepares to send a SCHC Compound ACK for the last window.¶
Upon receiving a SCHC Sender-Abort, the receiver MAY exit with an error condition.¶
Upon expiration of the Inactivity Timer, the receiver MUST send a SCHC Receiver-Abort, and it MAY exit with an error condition.¶
On the Attempts counter exceeding MAX
Reassembly of the SCHC Packet concludes when:¶
See Figure 44 for one among several possible examples of a Finite State Machine implementing a receiver behavior obeying this specification. The example provided is meant to match the sender Finite State Machine of Figure 43.¶
4. SCHC Compound ACK Example
Figure 7 shows an example transmission of a SCHC Packet in ACK-on-Error mode using the SCHC Compound ACK. In the example, the SCHC Packet is fragmented in 14 tiles, with N=3, WINDOW_SIZE=7, M=2, and two lost SCHC fragments. Only 1 SCHC Compound ACK is generated.¶
5. SCHC Compound ACK YANG Data Model
This document also extends the SCHC YANG data model defined in [RFC9363] by including a new leaf in the Ack-on-Error fragmentation mode to describe both the option to use the SCHC Compound ACK, as well as its bitmap format.¶
6. SCHC Compound ACK Parameters
This section lists the parameters related to the SCHC Compound ACK usage that need to be defined in the Profile. This list MUST be appended to the list of SCHC parameters under "Decision to use SCHC fragmentation mechanism or not. If yes, the document must describe:" as defined in Appendix D of [RFC8724].¶
7. Security Considerations
This document specifies a message format extension for SCHC. Hence, the same security considerations defined in [RFC8724] and [RFC9363] apply.¶
The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory
The Network Configuration Access Control Model (NACM) [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.¶
There are a number of data nodes defined in this YANG module that are
writable
- /schc
:schc /schc :rule /schc :nature /schc :fragmentation /schc :mode /schc :ack -on -error : - All the data nodes may be modified. The Rule contains sensitive information, such as the SCHC F/R mode configuration and usage and SCHC Compound ACK configuration. An attacker may try to modify other devices' Rules by changing the F/R mode or the usage of the SCHC Compound ACK and may block communication or create extra ACKs. Therefore, a device must be allowed to modify only its own Rules on the remote SCHC instance. The identity of the requester must be validated. This can be done through certificates or access lists.¶
Some of the readable data nodes in this YANG module may be considered
sensitive or vulnerable in some network environments. It is thus
important to control read access (e.g., via get, get-config, or
notification) to these data nodes. These are the subtrees and data
nodes and their sensitivity
- /schc
:schc /schc :rule /schc :nature /schc :fragmentation /schc :mode /schc :ack -on -error : - By reading this module, an attacker may learn the F/R mode used by the device, how the device manages the bitmap creation, the buffer sizes, and when the device will request an ACK.¶
8. IANA Considerations
This document registers one URI and one YANG data model.¶
8.1. URI Registration
IANA registered the following URI in the "IETF XML Registry" [RFC3688]:¶
9. References
9.1. Normative References
- [RFC2119]
-
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10
.17487 , , <https:///RFC2119 www >..rfc -editor .org /info /rfc2119 - [RFC3688]
-
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10
.17487 , , <https:///RFC3688 www >..rfc -editor .org /info /rfc3688 - [RFC6020]
-
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10
.17487 , , <https:///RFC6020 www >..rfc -editor .org /info /rfc6020 - [RFC6241]
-
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10
.17487 , , <https:///RFC6241 www >..rfc -editor .org /info /rfc6241 - [RFC6242]
-
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10
.17487 , , <https:///RFC6242 www >..rfc -editor .org /info /rfc6242 - [RFC8040]
-
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10
.17487 , , <https:///RFC8040 www >..rfc -editor .org /info /rfc8040 - [RFC8174]
-
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10
.17487 , , <https:///RFC8174 www >..rfc -editor .org /info /rfc8174 - [RFC8341]
-
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10
.17487 , , <https:///RFC8341 www >..rfc -editor .org /info /rfc8341 - [RFC8446]
-
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10
.17487 , , <https:///RFC8446 www >..rfc -editor .org /info /rfc8446 - [RFC8724]
-
Minaburo, A., Toutain, L., Gomez, C., Barthel, D., and JC. Zuniga, "SCHC: Generic Framework for Static Context Header Compression and Fragmentation", RFC 8724, DOI 10
.17487 , , <https:///RFC8724 www >..rfc -editor .org /info /rfc8724 - [RFC9363]
-
Minaburo, A. and L. Toutain, "A YANG Data Model for Static Context Header Compression (SCHC)", RFC 9363, DOI 10
.17487 , , <https:///RFC9363 www >..rfc -editor .org /info /rfc9363
9.2. Informative References
- [RFC8376]
-
Farrell, S., Ed., "Low-Power Wide Area Network (LPWAN) Overview", RFC 8376, DOI 10
.17487 , , <https:///RFC8376 www >..rfc -editor .org /info /rfc8376
Acknowledgements
Carles Gomez has been funded in part by the Spanish Government
through the TEC2016-79988-P grant and the PID2019
Sergio Aguilar has been funded by the ERDF and the Spanish Government through project TEC2016-79988-P and project PID2019
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 Rafael Vidal, Julien Boite, Renaud Marty, Antonis Platis, Dominique Barthel, and Pascal Thubert for their very useful comments, reviews, and implementation design considerations.¶