3.2.1. ACK-on-Error Mode (Replaces Section 8.4.3, RFC 8724)
3.2.1. ACK-on-Error Mode
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-bidirectional links.
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:
-
The penultimate tile size MUST be the regular tile size, or
-
the penultimate tile size MUST be either the regular tile size or the regular tile size minus one L2 Word.
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.
+---------------------------------------------...-----------+
| SCHC Packet |
+---------------------------------------------...-----------+
Tile# | 4 | 3 | 2 | 1 | 0 | 4 | 3 | 2 | 1 | 0 | 4 | | 0 | 4 |3|
Window# |-------- 0 --------|-------- 1 --------|- 2 ... 27 -|- 28-|
SCHC Fragment msg |-----------|
Figure 6: SCHC Packet Fragmented in Tiles, ACK-on-Error Mode (Figure 23 in RFC 8724)
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:
-
integrity checking shows that the fragmented SCHC Packet has been correctly reassembled at the receive end, and this information has been conveyed back to the sender,
-
too many retransmission attempts have been made, or
-
the receiver determines that the transmission of this fragmented SCHC Packet has been inactive for too long.
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:
-
the tile size (a tile does not need to be a duplicate of an L2 Word, but it MUST be at least the size of an L2 Word),
-
the value of M,
-
the value of N,
-
the value of WINDOW_SIZE, which MUST be strictly less than 2^N,
-
the size and algorithm for the RCS field,
-
the value of T,
-
the value of MAX_ACK_REQUESTS,
-
the expiration time of the Retransmission Timer,
-
the expiration time of the Inactivity Timer,
-
if the last tile is carried in a Regular SCHC Fragment or an All-1 SCHC Fragment (see Section 3.2.1.1),
-
if the penultimate tile MAY be one L2 Word smaller than the regular tile size (in this case, the regular tile size MUST be at least twice the L2 Word size),
-
usage or not of the SCHC Compound ACK message, and
-
usage or not of the Compressed Bitmap format in the last window of the SCHC Compound ACK message.
For each active pair of RuleID and DTag values, the sender MUST maintain:
-
one Attempts counter and
-
one Retransmission Timer.
For each active pair of RuleID and DTag values, the receiver MUST maintain:
-
one Attempts counter and
-
one Inactivity Timer.