<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.2.3) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC8724 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8724.xml">
<!ENTITY RFC9441 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9441.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
]>

<?rfc strict="yes"?>
<?rfc compact="yes"?>

<rfc ipr="trust200902" docName="draft-munoz-schc-over-dts-iot-01" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="SCHC ARQ/FEC mode">Static Context Header Compression and Fragmentation ARQ/FEC mode</title>

    <author initials="R." surname="Munoz-Lara" fullname="Rodrigo Munoz-Lara">
      <organization>Universidad de Chile</organization>
      <address>
        <postal>
          <city>Santiago</city>
          <country>Chile</country>
        </postal>
        <email>rmunozlara@ing.uchile.cl</email>
      </address>
    </author>
    <author initials="S." surname="Cespedes" fullname="Sandra Cespedes">
      <organization>Concordia University</organization>
      <address>
        <postal>
          <city>Montreal</city>
          <country>Canada</country>
        </postal>
        <email>sandra.cespedes@concordia.ca</email>
      </address>
    </author>

    <date year="2026" month="January" day="22"/>

    <area>Internet</area>
    <workgroup>SCHC Working Group</workgroup>
    <keyword>Internet-Draft</keyword> <keyword>SCHC</keyword> <keyword>FEC</keyword>

    <abstract>


<t>This document defines a new fragmentation mode for the SCHC standard defined in RFC8724. The new fragmentation mode is designed for communications that require additional reliability mechanisms. The reliability is based on a hybrid ARQ/FEC type II mechanism that combines forward error correction (FEC) with adaptive retransmissions to achieve high reliability.</t>



    </abstract>



  </front>

  <middle>


<section anchor="introduction"><name>Introduction</name>

<t>The fragmentation sublayer of the SCHC standard was designed to fragment a SCHC packet into tiles and transport each tile from the fragmenter to the reassembler using a fragmentation mode defined in <xref target="RFC8724"/>. The detection of missing tiles in the reassembler is based on the enumeration of each tile. If tiles are missing, the reassembler uses a parameter called "bitmap" to indicate to the fragmenter which tiles are missing.</t>

<t>With regard to detecting tiles with errors, the reassembler uses a cyclic redundancy check algorithm applied to the entire SCHC packet received. If the check is unsuccessful, the reassembler discards the SCHC packet and the fragmentation is declared a failure. If missing tiles are detected, the reassembler requests retransmission of the missing tiles. In the event of multiple failed retransmissions, the receiver may discard the SCHC packet and declare the fragmentation as failed.</t>

<t>The SCHC WG has expressed interest in providing additional reliability mechanisms, such as FEC for fragments recovery.. Thus, this document presents a new mode of fragmentation based on channel coding and selective retransmission of tiles. The new mode can be adapted to different scenarios or technologies, and each of these scenarios can be associated with a profile. The new fragmentation mode allows each profile to define its own reliability fragmentation parameters.</t>

<t>The new fragmentation mode defined in this document is not associated with any specific profile. Hereinafter, the new fragmentation mode will be referred to as ARQ-FEC mode.</t>

</section>
<section anchor="schc-arq-fec-fragmentation-mode"><name>SCHC ARQ-FEC fragmentation mode</name>

<t>The ARQ-FEC mode uses channel coding to protect fragments from errors and losses. ARQ-FEC mode performs data delivery without retransmitting the lost tiles if the number of lost tiles is not higher than a configurable threshold.</t>

<t>ARQ-FEC mode is based in a Type II Hybrid ARQ/FEC mechanism and consists of two processes: encoding and fragmentation. <xref target="fig_dtsiot-process"/> shows both processes in the sender and the receiver. The SCHC packet coming from the compression sublayer is encoded and fragmented. At the receiver, the process is reversed. The defragmenter first creates a C-matrix from the tiles and then decodes the C-matrix to generate a SCHC packet.</t>

<figure title="SCHC ARQ-FEC Fragmentation mode." anchor="fig_dtsiot-process"><artwork type="ascii-art"><![CDATA[
         SCHC packet                 SCHC packet
               |                          ^
               |                          |
+--------------|--------------------------|--------------+
|   +----------v---------+      +---------|-----------+  |
|   |    +----------+    |      |     +----------+    |  |
|   |    | Encoding |    |      |     | Decoding |    |  |
|   |    | process  |    |      |     | process  |    |  |
|   |    +----------+    |      |     +----------+    |  |
|   |          |         |      |         ^           |  |
|   |          v         |      |         |           |  |
|   |       C-matrix     |      |      C-matrix       |  |
|   |          |         |      |         ^           |  |
|   |          v         |      |         |           |  |
|   |   +-------------+  |      |  +---------------+  |  |
|   |   |Fragmentation|  |      |  |Defragmentation|  |  |
|   |   |   process   |  |      |  |    process    |  |  |
|   |   +-------------+  |      |  +---------------+  |  |
|   +--------------------+      +---------------------+  |
|   Sender     |                          ^  Receiver    |
|              |                          |              |
|              +--------------------------+              |
+--------------------------------------------------------+
ARQ-FEC fragmentation mode
]]></artwork></figure>

<section anchor="schc-arq-fec-protocol-elements"><name>SCHC ARQ-FEC protocol elements</name>

<t>This subsection outlines the various components used to support the ARQ-FEC mode functionality defined in this document.</t>

<t><list style="symbols">
  <t>SCHC Packet size: is the size in bits of the data packet received from the compression sublayer (see Figure 24 in <xref target="RFC8724"/>). In this document the SCHC Packet size is called "P". Each profile <bcp14>MUST</bcp14> define the maximum size of a SCHC packet that can be fragmented in ARQ-FEC mode. This maximum size is called "P_max".</t>
  <t>Symbol: data unit handled by the encoding process. Each symbol is treated as an indivisible unit, meaning it is either fully received or entirely lost. A symbol has "m" bits.</t>
  <t>Source Symbol: Unit of data used during the encoding process. A source symbol contains information from the original SCHC packet.</t>
  <t>Source Block: A subset of the source symbols. A source block has "k" symbols.</t>
  <t>Encoded Symbol: A symbol containing information generated by the Forward Error Correction (FEC) code which can be used to recover lost source symbols.</t>
  <t>Encoded Block: An encoded block consists of all the encoded symbols resulting from the FEC encoding of a single source block. An encoded block has "n" symbols.</t>
  <t>Residual coding bits: These are the left over bits resulting from dividing a SCHC packet into a D-matrix.</t>
  <t>Residual fragmentation bits: These are the bits left over from dividing a C-matrix into tiles of a given size.</t>
</list></t>

</section>
<section anchor="encoding-and-decoding-processes"><name>Encoding and Decoding processes</name>

<t>At the sender, the encoding process creates a C-matrix from a SCHC packet. At the receiver, the decoding process works in reverse, i.e., it creates a SCHC packet from a C-matrix.</t>

<section anchor="sender-behavior"><name>Sender Behavior</name>

<!--
To encode a SCHC packet, the encoding process implements the encoding process in the sender. The sender must ensure that the size of the SCHC packet is not greater than P_max. If the SCHC packet is greater than P_max, the sender must not fragment the SCHC packet.
-->

<t>Upon reception of a SCHC packet from the compression sublayer, the sender divides the SCHC packet into source blocks. Each source block has "k" source symbols, and each source symbol has "m" bits. The encoding process consists of applying an FEC algorithm to each source block. Thus, the FEC (n,k) algorithm encodes a source block of k source symbols into an encoded block of n symbols.</t>

<t>The steps for dividing the SCHC packet and creating a C-matrix is as follows:</t>

<t><list style="numbers">
  <t>Divide the SCHC packet into S source blocks of k symbols. Each symbol has m bits.
  <list style="symbols">
      <t>S is calculated as floor(P/(k * m))</t>
      <t>If (P mod (k * m)) equals zero, then there are no remaining bits.</t>
      <t>If (P mod (k * m)) is not equal to zero, then there should be (P mod (k * m)) remaining bits. The remaining bits are called residual coding bits.</t>
    </list></t>
  <t>Arrange the source blocks in a grid pattern or matrix, this will be the D-matrix.
  <list style="symbols">
      <t>Each element of the D-matrix is a source symbol.</t>
      <t>Each row of the D-matrix will be a source block.</t>
      <t>The D-matrix has S rows and k columns.</t>
      <t>The residual coding bits <bcp14>MUST NOT</bcp14> be placed in the D-matrix.</t>
      <t><xref target="fig_dtsiot-datawords_matrix"/> shows an example of the arrangement.</t>
    </list></t>
</list></t>

<figure title="Source blocks arranged in a D-matrix." anchor="fig_dtsiot-datawords_matrix"><artwork type="ascii-art"><![CDATA[
         <------- k columns ------->
       ^ SS(1,1)  SS(1,2)... SS(1,k)   Source block 1
       | SS(2,1)  SS(2,2)... SS(2,k)   Source block 2
S rows |    :       :        :    
       |    :       :        :    
       v SS(S,1)  SS(S,2)... SS(S,k)   Source block S

SS: Source Symbol
]]></artwork></figure>

<t><list style="numbers">
  <t>Apply the FEC algorithm to each source block. The FEC algorithm encodes k symbols from the source block and generates an encoded block with n symbols.</t>
  <t>Arrange the encoded blocks in a grid pattern or matrix, this will be the C-matrix.  <list style="symbols">
      <t>Each element of the C-matrix is an encoded symbol.</t>
      <t>Each row of the C-matrix will be an encoded block.</t>
      <t>The C-matrix has S rows and n columns.</t>
      <t><xref target="fig_dtsiot-codewords_matrix"/> shows an example of the arrangement.</t>
    </list></t>
</list></t>

<figure title="Encoded blocks arranged in a C-matrix." anchor="fig_dtsiot-codewords_matrix"><artwork type="ascii-art"><![CDATA[
         <------ n columns -------->
       ^ ES(1,1)  ES(1,2)... ES(1,n)  Encoded block 1
       | ES(2,1)  ES(2,2)... ES(2,n)  Encoded block 2
S rows |    :       :         :    
       |    :       :         :    
       v ES(S,1)  ES(S,2)... ES(S,n)  Encoded block S

ES: Encoded symbol
]]></artwork></figure>

</section>
<section anchor="receiver-behavior"><name>Receiver Behavior</name>

<t>In the receiver, the decoding process <bcp14>MUST</bcp14> create a SCHC packet from a C-matrix with enough encoded symbols. The number of encoded symbols required depends on the forward error correction code used.</t>

<t>The decoding process begins when the defragmentation process indicates that there are enough encoded symbols in the C-matrix to obtain a SCHC packet.</t>

<t>The steps for decoding a C-matrix and creating a SCHC packet is as follows:</t>

<t><list style="numbers">
  <t>Decode the encoded block in the first row of C-matrix. The generated source block contains the k symbols corresponding to the first row of matrix D.</t>
  <t>Decode the encoded block in the second row of C-matrix. The generated source block contains the k symbols corresponding to the second row of matrix D.</t>
  <t>Continue with the encoded block in the next row of the C-matrix. Decode all rows of the C-matrix.</t>
  <t>The result is the D-matrix with all symbols decoded.</t>
</list></t>

<t>Once the D-matrix has been generated, reconstruct the SCHC packet by following these steps:</t>

<t><list style="numbers">
  <t>Select the k-symbols from the first row of the D-matrix. This symbols will be the first (k*m) bits of the SCHC packet.</t>
  <t>Select the k-symbols from the second row of the D-matrix. This symbols will be the next (k*m) bits of the SCHC packet.</t>
  <t>Continue selecting the k-symbols from each row until you reach the last row of the D-matrix.</t>
  <t>Add the residual coding bits and padding bits to the end of the SCHC packet. The residual coding bits and padding bits are provided by the defragmentation process.</t>
</list></t>

</section>
</section>
<section anchor="fragmentation-and-defragmentation-processes"><name>Fragmentation and Defragmentation processes</name>

<t>The fragmentation and defragmentation processes are responsible for transporting the C-matrix from the sender to the receiver. Unlike the others fragmentation processes defined in <xref target="RFC8724"/>, the fragmentation and defragmentation processes are divided into two sub-processes: the assembler sub-process and the transporter sub-process. <xref target="fig_dtsiot-frag_defrag_process"/> shows the architecture of the fragmentation and defragmentation processes at the sender and receiver.</t>

<t>At the sender, the fragmentation process receives from the Encoding process a C-matrix and the residual coding bits separately. The C-matrix is processed by the assembler sub-process. The assembler sub-process converts the C-matrix in an encoded SCHC packet that is passed to the transporter sub-process. The transporter sub-process divides the encode SCHC packet in tiles. The tiles are sent to the receiver via Regular SCHC fragment messages.</t>

<t>At the receiver, the defragmentation process works in reverse. The transporter sub-process receive the tiles that are passed to the assembler sub-process. The assembler subprocess constructs a C-matrix using the tiles. When the assembler subprocess has enough symbols for the decoder process to decode C-matrix, the transporter subprocess ends the fragmentation session and the C-matrix is passed on to the decoding process.</t>

<figure title="Fragmentation and Defragmentation process and its subprocesses." anchor="fig_dtsiot-frag_defrag_process"><artwork type="ascii-art"><![CDATA[
  from Encoding process      towards Decoding process  
          |                          ^                 
          |                          |                 
+---------|-------------+  +---------|----------------+
|         v             |  |         |                |
|   +-------------+     |  |   +-------------+        |
|   | Assembler   |     |  |   | Assembler   |        |
|   | sub-process |     |  |   | sub-process |        |
|   +-------------+     |  |   +-------------+        |
|         |             |  |      ^       |           |
|         |             |  |      |    Are symbols    |
|    encoded SCHC       |  |    tiles  sufficient?    |
|       packet          |  |      |    Yes or not     |
|         |             |  |      |       |           |
|         v             |  |      |       v           |
|   +-------------+     |  |   +-------------+        |
|   | Transporter |     |  |   | Transporter |        |
|   | sub-process |     |  |   | sub-process |        |
|   +-------------+     |  |   +-------------+        |
|       ^  Fragmentation|  |         ^ Defragmentation|
|       |        process|  |         |         process|
+-------|---------------+  +---------|----------------+
        |                            |                 
        +----------------------------+                 
                  SCHC messages                                                                            
]]></artwork></figure>

<section anchor="assembler-sub-process"><name>Assembler sub-process</name>

<section anchor="sender-behavior-1"><name>Sender Behavior</name>

<t>On the sender side, the assembler sub-process is responsible for transforming the C-matrix into an encoded SCHC packet. To do this, the assembler sub-process selects the S-bytes of the first column of the C-matrix. These S-bytes will be the first S-bytes of the encoded SCHC packet. Next, the sub-process selects the S-bytes of the second column of the C-matrix. These will follow in the encoded SCHC packet, and so on. <xref target="fig_dtsiot-encoded_schc_packet"/> shows how the encoded SCHC packet is constructed from the C-matrix.</t>

<ul empty="true"><li>
  <t>Important: Residual encoding bits <bcp14>MUST NOT</bcp14> be included in the encoded SCHC packet. Residual coding bits <bcp14>MUST</bcp14> be included in the last tile.</t>
</li></ul>

<figure title="Symbols of a encoded SCHC packet." anchor="fig_dtsiot-encoded_schc_packet"><artwork type="ascii-art"><![CDATA[
<---------------------- encoded SCHC packet ---------------------->
C(1,1) C(2,1)...C(S,1) C(1,2) C(2,2)...C(S,2)...C(1,cwl)...C(S,cwl)
]]></artwork></figure>

</section>
<section anchor="receiver_behavior"><name>Receiver Behavior</name>

<t>In the receiver, the assembler sub-process is responsible for three tasks: placing each tile in the C-matrix, verifying whether there are enough symbols in each row to decode, and indicating to the transporter sub-process which tiles need to be retransmitted.</t>

<section anchor="placing_tiles"><name>Placing tiles in C-matrix</name>

<t>When the transporter sub-process receives a regular SCHC fragment, the transporter sub-process delivers the tiles to the assembler sub-process to place them in the C-matrix.</t>

<ul empty="true"><li>
  <t>If the receiver has not received parameter S, then the following steps cannot be executed and the receiver must wait to receive parameter S before continuing with the verification process. Parameter S is transported in the first tile of the first fragment of the first window.</t>
</li></ul>

<t>The procedure for placing a tile in the C-matrix is as follows:</t>

<t><list style="numbers">
  <t>Convert the FCN and W of each tile in a correlative tile number (ctn). The correlative tile number starts at zero. For example, tile 62 of window 0 (FCN=62, W=0) corresponds to ctn=0. Tile 61 of window 0 (FCN=61, W=0) corresponds to ctn=1, and so on. To determine the correlative tile number (ctn), use the following equation:  <vspace blankLines='1'/>
    <figure><artwork><![CDATA[
 ctn = WINDOW_SIZE*(W+1) - FCN - 1
]]></artwork></figure>
  </t>
</list></t>

<t>where WINDOW_SIZE is defined by each profile. FCN is the Fragment Compressed Number of each tile. W is the field that indicates the window to which the tile belongs.</t>

<t><list style="numbers">
  <t>Convert the correlative tile number (ctn) into a position (row, column) within the matrix.
  <list style="symbols">
      <t>To determine the <strong>row</strong>, use the following equation:      <vspace blankLines='1'/>
        <figure><artwork><![CDATA[
  row = (ctn-1)*ts + 1 - floor((ctn-1)*ts/S)*S
]]></artwork></figure>
      </t>
      <t>To determine the <strong>column</strong>, use the following equation:      <vspace blankLines='1'/>
        <figure><artwork><![CDATA[
  column = floor((ctn-1)*ts/S) + 1
]]></artwork></figure>
      </t>
    </list>
where ts is the tile size in symbols. S is the number for row in the C-matrix.</t>
  <t>The tile must be placed vertically in the matrix. This means that the first symbol on the tile is placed in the position (row, column) determined in the previous point. The second symbol on the tile must be placed in the same column but in row (row+1). The third symbol must be placed in row (row+2) and so on. If the last row of the matrix is reached and there are still symbols on the tile to be placed in the C-matrix, continue in the first row of the next column. For example, let us consider that a tile is equivalent to 4 symbols, C-matrix has 7 rows (S=7) and the tile must start in row 5, column 1. Then, the first symbol will go in row 5, column 1. The second symbol will go in row 6, column 1. The third symbol will go in row 7, column 1, and the fourth symbol will go in row 1, column 2. Note that the last symbol cannot be placed in row 8 because there is no such row. Therefore, you must start in the first row of the next column.</t>
</list></t>

</section>
<section anchor="checking-if-there-are-enough-symbols"><name>Checking if there are enough symbols</name>

<t>In ARQ-FEC mode, the decoding process does not need to have the n encoded symbols in each row of the C-matrix to recover the original k symbols. Therefore, the assembler process only needs to have k encoded symbols in each row of the C-matrix to pass this matrix to the decoding process. If the C-matrix has enough symbols, the sender can stop transmitting tiles and the receiver can start the decoding process.</t>

<t>When the receiver receives a SCHC regular fragment, the transporter sub-process extracts the tiles from the message and sends them to the assembler sub-process. The assembler sub-process places the tiles in the C-matrix following the steps explained in the section <xref target="placing_tiles"/>. Once the tiles are in place, the task of checking whether there are enough symbols in each row can begin.</t>

<t>First, the verification task must check the number of symbols in the first row of C-matrix. If the number of symbols is greater than or equal to k, then that row is marked as decodeable; otherwise, it is marked as not decodeable. If the verification task checks a row already marked as decodeable, the task must skip that row and continue with the next one.</t>

<t>The verification task must review all rows of C-matrix to complete the verification task associated with the reception of a SCHC regular fragment.</t>

<t>If at any point the verification task detects that all rows of the C-matrix are decodable, then the assembler sub-process <bcp14>MUST</bcp14> indicate to the transporter sub-process that the C-matrix has sufficient symbols.</t>

</section>
<section anchor="selecting-the-tiles-to-retransmit"><name>Selecting the tiles to retransmit</name>

<t>If the receiver receives a SCHC All-1 fragment message, the transporter subprocess must indicate to the assembler subprocess that it has received a SCHC All-1 fragment along with the last tile. The assembler subprocess obtains the residual fragmentation bits from the last tile and adds them to C-matrix. When the assembler sub-process adds the residual fragmentation bits to the matrix, two events may occur:</t>

<t><list style="symbols">
  <t>If all rows are marked as decodeable, then the assembler sub-process must indicate to the signaling sub-process that there are enough symbols in the C-matrix and that it can end the fragmentation session, or</t>
  <t>If one or more rows of C-matrix were marked as undecodable, then the assembler sub-process must perform the following steps:
  <list style="numbers">
      <t>Select a row marked as undecodable. Consider that the row has m received symbols, select the (k-m) lost symbols, where k is the number of symbols in each row of D-matrix (see <xref target="fig_dtsiot-datawords_matrix"/>).</t>
      <t>Convert the position of the missing symbol into a correlative tile number (ctn). The position of a missing symbol is defined by the row and column to which it belongs. To obtain the correlative tile number (ctn), use the following equation:      <vspace blankLines='1'/>
        <figure><artwork><![CDATA[
 ctn = ceil((row + S*(col - 1))/ts)
]]></artwork></figure>
      <vspace blankLines='1'/>
where ts is the tile size in symbols. S is the number for row in the C-matrix.</t>
      <t>To obtain the Fragment Compressed Number (FCN) of the correlative tile number (ctn), use the following equation:      <vspace blankLines='1'/>
        <figure><artwork><![CDATA[
 fcn = WINDOW_SIZE * (floor(ctn/WINDOW_SIZE) + 1) - ctn - 1
]]></artwork></figure>
      <vspace blankLines='1'/>
where WINDOW_SIZE is defined by each profile. ctn is the correlative tile number.</t>
      <t>To obtain the window to which a tile (w) belongs from the correlative tile number (ctn), use the following equation:      <vspace blankLines='1'/>
        <figure><artwork><![CDATA[
 w = floor(ctn/WINDOW_SIZE)
]]></artwork></figure>
      </t>
      <t>Pass the list of missing tiles to the transporter subprocess. A tile is defined by its Fragment Compressed Number (FCN) and the window to which it belongs.</t>
    </list></t>
</list></t>

</section>
</section>
</section>
<section anchor="transporter-sub-process"><name>Transporter sub-process</name>

<!-- Caracteristicas del modo ARQ-FEC -->
<t>ARQ-FEC mode supports the following features:</t>

<t><list style="symbols">
  <t>the mode works with L2 technologies that have a variable MTU and may deliver packets out of order.</t>
  <t>the mode requires the L2 layer to provide a feedback channel from the defragmenter back to the fragmenter.</t>
  <t>the mode uses window.</t>
  <t>all tiles except the last one <bcp14>MUST</bcp14> be of the same size. These tiles are called regular tiles.</t>
  <t>A SCHC Fragment message carries one or several contiguous regular tiles, which may span multiple windows.</t>
</list></t>

<!-- Como funciona el mecanismo de confirmacion en ARQ-FEC -->
<t>Unlike ACK-on-Error and ACK-Always modes, the success of the transfer of tiles is associated with success in decoding the C-matrix. Thus, if the fragmentation/defragmentation process loses some tiles, the C-matrix can still be decoded, the SCHC packet obtained, and the fragmentation declared successful. Therefore, the receiver responds with a SCHC Compound ACK when there are enough symbols to decode the C-matrix or when, at the end of the transmission of all tiles, there are not enough symbols to decode the C-matrix. For this reason, the SCHC Compound ACK <bcp14>MUST NOT</bcp14> be sent after the reception of each window. The sender can advance to next windows even before it has ascertained that all tiles belonging to previous windows have been correctly received. The SCHC Compound ACK message is defined in <xref target="RFC9441"/>.</t>

<!-- Cuando enviar los mensajes de confirmacion -->
<t>The ARQ-FEC mode in the receiver <bcp14>MUST</bcp14> send a SCHC Compound ACK only in these four situations:</t>

<t><list style="symbols">
  <t>If the receiver receives a SCHC regular fragment message with the S parameter,</t>
  <t>if the receiver receives a SCHC regular fragment message and the assembler sub-process verify that there are enought symbols to decode the C-matrix,</t>
  <t>if the receiver receives a SCHC All-1 message and the assembler sub-process verify that there are enought symbols to decode the C-matrix,</t>
  <t>if the receiver receives a SCHC All-1 message and the assembler subprocess verifies that there are not enough symbols to decode the C-matrix.</t>
</list></t>

<!-- Cuando finaliza una sesion SCHC -->
<t>The fragmented encoded SCHC Packet transmission concludes when:</t>

<t><list style="symbols">
  <t>the receiver verify that there are enough symbols to decode the C-matrix.</t>
  <t>too many retransmission attempts were made, or</t>
  <t>the receiver determines that the transmission of this fragmented SCHC Packet has been inactive for too long.</t>
</list></t>

<!-- Que debe definir cada profile -->
<t>Each Profile <bcp14>MUST</bcp14> specify which RuleID value(s) corresponds to SCHC F/R messages operating in this mode.</t>

<t>The W field <bcp14>MUST</bcp14> be present in the SCHC F/R messages.</t>

<t>Each Profile, for each RuleID value, <bcp14>MUST</bcp14> define:
* the tile size (a tile must be a multiple of a symbol and <bcp14>MUST</bcp14> be at least the size of an L2 word.),
* the value of M,
* the value of N,
* the value of WINDOW_SIZE, which <bcp14>MUST</bcp14> 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,
* the expiration time of the S Timer,</t>

<!-- Que contadores y timers se deben mantener en cada lado de la comunicacion  -->
<t>For each active pair of RuleID and DTag values, the sender <bcp14>MUST</bcp14> maintain:
* one Attempts counter,
* one Retransmission Timer,
* one S Attempts counter, and
* one S Timer</t>

<t>For each active pair of RuleID and DTag values, the receiver <bcp14>MUST</bcp14> maintain:
* one Inactivity Timer, and
* one Attempts counter.</t>

<section anchor="sender-behavior-2"><name>Sender Behavior</name>

<!-- seleccion de RuleID e inicializacion de contadores -->
<t>At the beginning of the fragmentation of a encoded SCHC packet</t>

<t><list style="symbols">
  <t>The sender <bcp14>MUST</bcp14> select the values for RuleID and DTag for this encoded SCHC packet. In addition, the sender <bcp14>MUST</bcp14> initialise the Attempts counter and the S Attempts counter to 0 for these RuleID and DTag values.</t>
</list></t>

<!-- Como se transportan los encoded tiles -->
<t>To fragment an encoded SCHC packet, the sender <bcp14>MUST</bcp14> split the encoded SCHC packet into tiles of the same size. These tiles are called "regular tiles". The remaining part of the division will be the residual fragmentation bits. A Regular SCHC Fragment message carries in its payload one or several contiguous tiles. If more than one tile is carried in one Regular SCHC Fragment:</t>

<t><list style="symbols">
  <t>The selected tiles <bcp14>MUST</bcp14> be contiguous in the original encoded SCHC Packet, and</t>
  <t>the selected tiles <bcp14>MUST</bcp14> be placed in the SCHC fragment payload next to each other, in the same order as they appear in the encoded SCHC packet, and</t>
  <t>the FCN field <bcp14>MUST</bcp14> contain the tile index of the first tile sent in that SCHC Fragment, and</t>
  <t>the sender <bcp14>MUST</bcp14> fill the W field with the window number of the first tile sent in that SCHC Fragment.</t>
</list></t>

<t>In ARQ-FEC mode, the receiver needs to obtain the S parameter to know how many rows the C-matrix should have. With the C-matrix constructed, the receiver can know when there are enough symbols to decode an encoded SCHC packet. The sender sends the S parameter in the first tile of the first window. This means that the encoded SCHC packet will go from the second tile of the first window onwards. In summary:
* the first tile (FCN=WINDOW_SIZE-1) of the first window (W=0) contains the parameter S. The parameter S indicates the number of rows in the C-matrix, and
* the first tile of the encoded SCHC packet <bcp14>MUST</bcp14> be transported in the fragment with FCN = WINDOW_SIZE-2 of the first window (W=0).</t>

<t>The sender must wait for the reception of a SCHC Compound ACK to the tile carrying parameter S. The SCHC Compound ACK must contain the field W=00, C=1, and without bitmap.</t>

<!-- Como se transporta el ultimo encoded tile -->
<t>The last tail consists of the residual coding bits and the residual fragmentation bits. The last tile <bcp14>MUST</bcp14> be sent in an All-1 SCHC message. In an All-1 SCHC Fragment message, the sender <bcp14>MUST</bcp14> fill the W field with the window number of the last tile of the encoded SCHC Packet. The sender must wait for the reception of a SCHC ACK after sending an All-1 SCHC. In this case, two situations may occur:</t>

<t><list style="symbols">
  <t>If the sender receives a SCHC ACK containing the field W=11 and C=1, then the All-1 SCHC was successfully received, the receiver has enough symbols, and the sender can terminate the fragmentation session.</t>
  <t>If the sender receives a SCHC ACK containing the C=0 field, then the All-1 was successfully received, the receiver does not have enough symbols, and the bitmap contains the tiles that must be retransmitted. At this point, the sender must retransmit all lost tiles and wait for a SCHC ACK confirming the end of the session.</t>
</list></t>

<!-- Cuando y que hacer si se recibe un ACK con W=01 y C=1 -->
<t>At any time, after receiving confirmation of successful receipt of parameter S, if the sender receives a SCHC ACK with parameters W=01 and C=1, this means that the receiver has enough symbols to decode matrix C. The sender must respond with an All-1 SCHC and wait for confirmation.</t>

<t>In brief, the fragment sender <bcp14>MUST</bcp14> listen for SCHC Compound ACK messages after having sent:</t>

<t><list style="symbols">
  <t>a SCHC Regular Fragment, or</t>
  <t>an All-1 SCHC Fragment, or</t>
  <t>a SCHC ACK REQ.</t>
</list></t>

<t>Each time a fragment sender sends an All-1 SCHC Fragment or a SCHC ACK REQ:</t>

<t><list style="symbols">
  <t>it <bcp14>MUST</bcp14> increment the Attempts counter, and</t>
  <t>it <bcp14>MUST</bcp14> reset the Retransmission Timer.</t>
</list></t>

<t>On Retransmission Timer expiration:</t>

<t><list style="symbols">
  <t>if the Attempts counter is strictly less than MAX_ACK_REQUESTS, the fragment sender <bcp14>MUST</bcp14> send either the All-1 SCHC Fragment or a SCHC ACK REQ with the W field equal to zero.</t>
  <t>otherwise, the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort, and it <bcp14>MAY</bcp14> exit with an error condition.</t>
</list></t>

<t>Each time a fragment sender sends a Regular SCHC Fragment with the S parameter:</t>

<t><list style="symbols">
  <t>it <bcp14>MUST</bcp14> increment the S Attempts counter, and</t>
  <t>it <bcp14>MUST</bcp14> reset the S Timer.</t>
</list></t>

<t>On S Timer expiration:</t>

<t><list style="symbols">
  <t>if the S Attempts counter is strictly less than MAX_ACK_REQUESTS, the fragment sender <bcp14>MUST</bcp14> send a Regular SCHC Fragment with the S parameter in the first tile.</t>
  <t>otherwise, the fragment sender <bcp14>MUST</bcp14> send a SCHC Sender-Abort, and it <bcp14>MAY</bcp14> exit with an error condition.</t>
</list></t>

<t>On receiving a SCHC Compound ACK:</t>

<t><list style="symbols">
  <t>if the W field is set to 00 and the C bit is set to 1, the sender <bcp14>MUST</bcp14> assume that the receiver already knows the S parameter.</t>
  <t>If field W is set to 01 and bit C is set to 1, the sender <bcp14>MUST</bcp14> assume that the receiver has enough symbols to decode the C-matrix. The sender <bcp14>MUST</bcp14> send an All-1 SCHC and wait for a SCHC ACK confirming receipt of the All-1 SCHC.</t>
  <t>If the W field is set to 11 and the C bit is set to 1, the sender <bcp14>MUST</bcp14> terminate the fragmentation session.</t>
  <t>if the C bit is set to 0, the fragment sender <bcp14>MUST</bcp14> send SCHC Fragment messages containing all the tiles that are reported missing in the SCHC Compound ACK.</t>
</list></t>

</section>
<section anchor="receiver-behavior-1"><name>Receiver Behavior</name>

<t>When the reassembler receives a SCHC fragment with a RuleID that is not currently being processed, then:</t>

<t><list style="symbols">
  <t>The receiver <bcp14>MUST</bcp14> start a process to assemble a new encoded SCHC Packet with that RuleID,</t>
  <t>the receiver <bcp14>MUST</bcp14> start an Inactivity Timer and an Attempts counter to 0 for that RuleID, and</t>
  <t>if the receiver is under-resourced to do this, it <bcp14>MUST</bcp14> respond to the sender with a SCHC Receiver-Abort.</t>
</list></t>

<t>Whenever a SCHC F/R message arrives for the current RuleID, the receiver <bcp14>MUST</bcp14> reset the corresponding Inactivity Timer.</t>

<!-- Recepcion de un SCHC Fragment message -->
<t>On receiving a SCHC Fragment message, the receiver determines what tiles were received, based on the payload length and on the FCN field of the SCHC Fragment. When the receiver receives a SCHC Fragment message, the following situations may occur:</t>

<t><list style="symbols">
  <t>If the FCN field is set to WINDOW_SIZE - 1 and the W field is set to 0, then the first tile of the SCHC fragment has the S parameter. In this case, the receiver <bcp14>MUST</bcp14> respond with a SCHC ACK with the W field set to 0 and the C field set to 1.</t>
  <t>Otherwise:
  <list style="symbols">
      <t>If the N bits of the FCN field are not all set to one, then the tiles <bcp14>MUST</bcp14> be assembled based on the a priori known tile size. In this case, the transporter sub-process must deliver the tiles to the assembler sub-process and wait a response from assembler sub-process:
      <list style="symbols">
          <t>if there are enough symbols, then the transporter sub-process <bcp14>MUST</bcp14> send a SCHC Compound ACK with the W field set to 1 and the C field set to 1 and wait for an All-1 SCHC message.</t>
          <t>if there are not enough symbols, then the transporter sub-process <bcp14>SHOULD</bcp14> do nothing.</t>
        </list></t>
      <t>Otherwise:
      <list style="symbols">
          <t>If the N bits of the FCN field are all set to one, then the transporter sub-process must deliver the last tile to the assembler sub-process and wait a response from assembler sub-process:
          <list style="symbols">
              <t>if there are enough symbols, then the transporter sub-process <bcp14>MUST</bcp14> send a SCHC Compound ACK with the W field set to 3 and the C field set to 1, and end the fragmentation session.</t>
              <t>If there are not enough symbols, then the transporter sub-process <bcp14>MUST</bcp14> send a SCHC Compound ACK with the C field set to 0 and with the bitmaps indicating which tiles are missing.</t>
            </list></t>
        </list></t>
    </list></t>
</list></t>

<!-- Que hacer cuando se envia un SCHC Compound ACK  -->
<t>Upon sending a SCHC Compound ACK, the receiver <bcp14>MUST</bcp14> increase the Attempts counter.</t>

<t>Upon receiving a SCHC Sender-Abort, the receiver <bcp14>MAY</bcp14> exit with an error condition.</t>

<t>Upon expiration of the Inactivity Timer, the receiver <bcp14>MUST</bcp14> send a SCHC Receiver-Abort, and it <bcp14>MAY</bcp14> exit with an error condition.</t>

<t>On the Attempts counter exceeding MAX_ACK_REQUESTS, the receiver <bcp14>MUST</bcp14> send a SCHC Receiver-Abort, and it <bcp14>MAY</bcp14> exit with an error condition.</t>

<!-- comportamiento al final de la sesion -->
<t>Fragmentation session concludes when:</t>

<t><list style="symbols">
  <t>a Sender-Abort has been received, or</t>
  <t>the Inactivity Timer has expired, or</t>
  <t>the Attempts counter has exceeded MAX_ACK_REQUESTS, or</t>
  <t>an All-1 SCHC message is sent with the W field set to 3 and the C field set to 1.</t>
</list></t>

</section>
</section>
</section>
</section>
<section anchor="conventions-and-definitions"><name>Conventions and Definitions</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>This document does not add any security considerations and follows the <xref target="RFC8724"/>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document has no IANA actions.</t>

</section>
<section anchor="appendix-a-state-machines-for-the-transport-sub-process"><name>Appendix A. State Machines for the transport sub-process</name>

<figure title="Sender State Machine for the ARQ-FEC Mode." anchor="fig_dtsiot-sender_state_machine"><artwork type="ascii-art"><![CDATA[
+--------+                                                  
|  Init  |                                                  
+--------+                                                  
     |   C-matrix is created                                
     |   --------------------------                         
     |   i = 1;                                             
     |   cur_W = 0;                                         
     |   cur_FCN = WS-1                                     
     |   Send frag(cur_W, cur_FCN)                          
     |   set s_timer                                        
     |   s_attempts = 0                                     
     |   last_tile_flag = false                             
     |                                                      
     |     +-----+                                          
     |     |     |  More tiles                              
     v     v     |  -------------------------               
+------------+   |  i++;                                    
|            |---+  cur_W = floor(i/(WS+1)                  
|            |      cur_FCN = WS*(cur_W+1)-i                
|            |      Send frag(cur_W, cur_FCN)               
|            |                                              
|            |<--+  s_timer expires                         
|  Wait x S  |   |  ------------------------                
|     ACK    |   |  Send frag(W=0, FCN=WS-1)                
|            |   |  s_attempts++                            
|            |---+                                          
|            |                                              
|            |<--+  only the last tile remains              
+------------+   |  --------------------------              
 |   |   | |     |  Send frag(W=0, FCN=WS-1)                
 |   |   | +-----+  s_attempts++                            
 |   |   |          last_tile_flag = true                   
 |   |   |                                                  
 |   |   | ACK recv (W=0; C=1)                              
 |   |   | &&                                               
 |   |   | last_tile_flag == false                          
 |   |   | -------------------------                        
 |   |   | stop s_timer                                     
 |   |   | i++                                              
 |   |   | cur_W = floor(i/(WS+1))                          
 |   |   | cur_FCN = WS*(cur_W+1)-i                         
 |   |   | Send frag(cur_W, cur_FCN)                        
 |   |   v                                                  
 |   |  +--------+    More tiles                            
 |   |  |        |<-+ -------------------------             
 |   |  |  Send  |  | i++                                   
 |   |  |        |  | cur_W = floor(i/(WS+1))               
 |   |  +--------+  | cur_FCN = WS*(cur_W+1)-i              
 |   |     |   |    | Send frag(cur_W, cur_FCN)             
 |   |     |   +----+                                       
 |   |     |                 (A)  ACK recv (W=0; C=1)       
 |   |     |                      &&                        
 |   |     |                      last_tile_flag == true    
 |   |(A)  |(B)                   ----------------------    
 |   |     |                      Send All-1                
 |   |     |                      Attempts = 0;             
 |   |     |                      set rtx_timer             
 |   |     |                                                
 |   |     |                 (B)  ACK recv (W=1; C=1)       
 |   v     v                      ||                        
 |  +-------------+               only the last tile remains
 |  |             |               --------------------------
 |  |   Wait x    |               Send All-1                
 |  | session ACK |               Attempts = 0;             
 |  |             |<-+            set rtx_timer             
 |  +-------------+  |                                      
 |   |   |   |  |    | rtx_timer expired                    
 |   |   |   |  +----+ -----------------                    
 |   |   |   |         Send All-1                           
 |   |   |   |         Attempts++;                          
 |   |   |   |         set rtx_timer                        
 |   |   |   |                                              
 |   |   |   |             ACK recv (C=0, bitmap)           
 |   |   |   |             ------------------------         
 |   |   |   |             Send missing tiles;  +---------+ 
 |   |   |   +--------------------------------->| Resend  | 
 |   |   |                                      | Missing | 
 |   |   | ACK recv (W=3, C=1)      +-----------| Tiles   | 
 |   |   | --------------------     |           +---------+ 
 |   |   | stop rtx_timer           | ACK recv (W=3, C=1)   
 |   |   v                          | -------------------   
 |   | +-------+                    | stop rtx_timer        
 |   | |       |                    |                       
 |   | |  End  |<-------------------+                       
 |   | |       |                                            
 |   | +-------+                                            
 |   |                   (D)  s_timer expired               
 |   +--+                     &&                            
 |      |                     s_attempts > MAX_ACK_REQUEST  
 |      |                     ----------------------------  
 |(D)   |(E)                  send Abort;                   
 |      |                                                   
 |      |                                                   
 v      v                (E)  rtx_timer expired             
+---------+                   &&                            
|         |                   Attempts > MAX_ACK_REQUEST    
|  Error  |                   --------------------------    
|         |                   send Abort;                   
+---------+                                                 
]]></artwork></figure>

<figure title="Receiver State Machine for the ARQ-FEC Mode." anchor="fig_dtsiot-receiver_state_machine"><artwork type="ascii-art"><![CDATA[
                +------+                                           
                | Init |                                           
                +------+         rcv_W != 0                        
                 |   |           ||                                
                 |   |           rcv_FCN != WS-1                   
                 |   |           -----------------                 
                 |   |           cur_W   = rcv_W                   
                 |   +-------+   cur_FCN = rcv_FCN                 
                 |           |                                     
                 |           v                                     
                 |      +-----------+     rcv_W != 0               
                 |      | Wait x S  |     ||                       
                 |      | Parameter |<-+  rcv_FCN != WS-1          
                 |      +-----------+  |  -----------------        
                 |           |     |   |  cur_W   = rcv_W          
                 |           |     +---+  cur_FCN = rcv_FCN        
                 |(A)    (A) |                                     
                 |   +-------+                                     
                 |   |         (A) rcv_W == 0                      
                 |   |             &&                              
                 |   |             rcv_FCN == WS-1                 
                 |   |             -------------------------       
                 |   |             S = frag_payload                
                 |   |             build empty C-matrix(S,n)       
                 |   |             Send ACK(W=0; C=1)              
                 |   |                                             
                 |   |                                             
                 |   |             rcv_FCN != All-1                
                 |   |  +-------+  &&                              
                 |   |  |       |  !(enough symbols)               
                 v   v  v       |  -----------------               
                +--------+      |  Place tiles in C-matrix         
                |  Rcv   |------+  Checking enough symbols         
                | Window |-----+                                   
                +--------+     |  rcv_FCN == All-1                 
rcv_FCN != All-1   |    |      |  &&                               
&&                 |    |      |  !(enough symbols)                
enough symbols     |    |      |  ---------------------            
------------------ |    |      |  Send ACK(C=0; bitmap)            
send ACK(W=1; C=1) |    |      v                                   
                   |    |   +--------+                             
                   |    |   |Wait x  |      recv frag              
                   |    |   |Missing |      &&                     
                   |    |   |Frags   |<---+ !(enough symbols)      
                   |    |   +--------+    | ----------------       
                   |    |      |   |      | Place tiles in C-matrix
                   |    |      |   +------+ Checking enough symbols
                   v    |      |                                   
           +----------+ |      | recv frag                         
           |  Wait x  | |      | &&                                
           |  All-1   | |      | enough symbols                    
           +----------+ |      | ----------------                  
                   |    |      | send ACK(W=3; C=1)                
rcv_FCN == All-1   |    |      |                                   
------------------ |    |(B)   |                                   
send ACK(W=3; C=1) |    |      |                                   
                   v    v      |             (B) rcv_FCN == All-1  
                +-----------+  |                 &&                
                |           |  |                 enough symbols    
                |    End    |<-+                 ------------------
                |           |                    send ACK(W=3; C=1)
                +-----------+                                      
]]></artwork></figure>

</section>
<section anchor="appendix-b-example-of-an-arq-fec-fragmentation-mode"><name>Appendix B. Example of an ARQ-FEC fragmentation mode</name>

<t>This example represents the transmission of a SCHC packet generated by the compression sublayer. The transmission uses the ARQ-FEC fragmentation sublayer over LoRaWAN technology:</t>

<t>ARQ-FEC fragmentation mode parameters:
* Tile size (ts): 10 symbols
* Bits per symbol (m): 8 bits/symbol
* Source block size (k): 4 symbols
* Encoded Block Size (n): 7 symbols
* SCHC packet size (P): 6445 bits
* Maximum Transmittion Unit (MTU) in AU915-928 LoRaWAN frequency band with DR5 (222 bytes) and DR3 (115 bytes)</t>

<section anchor="encodingdecoding-process"><name>Encoding/Decoding process</name>

<section anchor="step-1-create-d-matrix"><name>Step 1: Create D-matrix</name>
<t><list style="symbols">
  <t>S = floor(P/(k * m)) = 201 rows</t>
  <t>D-matrix size = (S * k) * m = 6432 bits</t>
  <t>Residual coding bits = (P mod (k * m)) = 13 bits</t>
</list></t>

</section>
<section anchor="step-2-create-c-matrix"><name>Step 2: Create C-matrix</name>
<t><list style="symbols">
  <t>C-matrix size = (S * n) * m = 11256 bits</t>
  <t>Encoding overhead size = S * (n - k) * m = 4824 bits</t>
  <t>Encoded SCHC packet size = C-matrix size = 11256 bits</t>
</list></t>

</section>
</section>
<section anchor="fragmentationdefragmentation-process"><name>Fragmentation/Defragmentation process</name>
<t><list style="symbols">
  <t>Full regular tiles = floor(Encoded SCHC packet size/(ts * m) = 140 tiles</t>
  <t>Residual fragmentation bits = (Encoded SCHC packet size) mod (ts * m) = 56 bits</t>
  <t>All-1 SCHC payload = Residual fragmentation bits + Residual coding bits + padding = 56 + 13 + 3 = 72 bits</t>
  <t>W: 2 bits</t>
  <t>N: 6 bits</t>
  <t>WINDOW_SIZE: (2^N)-1 = 63</t>
</list></t>

<section anchor="case-1-without-loss-and-variable-mtu-sufficient-fragments-in-the-decoding-process"><name>Case 1: Without loss and variable MTU. Sufficient fragments in the decoding process.</name>

<t>Each regular SCHC fragment carries a SCHC packet with a 1-byte SCHC header and a SCHC payload of 22 tiles (DR5) or 11 tiles (DR3). <xref target="fig_dtsiot-tiles_1"/> shows the first regular SCHC fragment.</t>

<figure title="First regular SCHC fragment. Case 1: without loss and varible MTU." anchor="fig_dtsiot-tiles_1"><artwork type="ascii-art"><![CDATA[
|--- SCHC header ----|
         |-M-|-- N --|
+-- ... -+---+- ... -+--------...-------+
| RuleID | W |  FCN  | Fragment Payload |
+-- ... -+---+- ... -+--------...-------+
|  30    | 0 |  62   | 22 tiles         |
]]></artwork></figure>

<t>The All-1 SCHC fragment carries the 72 bits (including the padding bits). <xref target="fig_dtsiot-tiles_2"/> shows the All-1 SCHC fragment of this example.</t>

<figure title="All-1 SCHC fragment. Case 1: without loss and varible MTU." anchor="fig_dtsiot-tiles_2"><artwork type="ascii-art"><![CDATA[
|------- SCHC Header --------|
| 1 byte |-M-|-- N --|-- U --|
+-- ... -+---+- ... -+- ... -+-----...-----+
| RuleID | W |  FCN  |  RCS  | FragPayload |
+-- ... -+---+- ... -+- ... -+-----...-----+
| 30     | 2 |  63   |       | 70 bits     |
]]></artwork></figure>

<t><xref target="fig_dtsiot-message_flow_1"/> illustrates the transmission of a SCHC Packet using the ARQ-FEC fragmentation proccess. During the transmission of the encoded SCHC packet, the MTU is modified according to the LoRaWAN data rate.</t>

<t>If there are no losses, the number of tiles needed to decode a C-matrix is given by:</t>

<figure><artwork><![CDATA[
enough number of tiles = ceil((S * k)/ ts) = 81 tiles
]]></artwork></figure>

<figure title="Message flow for ARQ-FEC mode (Case 1)." anchor="fig_dtsiot-message_flow_1"><artwork type="ascii-art"><![CDATA[
             Sender                Receiver
MTU 220 B |---- W=0, FCN=62 ---->| (S param + 21 tiles)
          |<--- Compound ACK ----| W=0, C=1
MTU 220 B |---- W=0, FCN=40 ---->| (22 tiles)
MTU 220 B |---- W=0, FCN=18 ---->| (22 tiles)
MTU 115 B |---- W=1, FCN=59 ---->| (11 tiles)
MTU 115 B |---- W=1, FCN=48 ---->| (11 tiles) enough symbols
          |<--- Compound ACK ----| W=1, C=1
          |--W=2, FCN=63 + RCS-->|
          |<--- Compound ACK ----| W=3, C=1
]]></artwork></figure>

</section>
</section>
<section anchor="case-2-with-loss-of-fragments-sufficient-fragments-in-the-decoding-process"><name>Case 2: With loss of fragments. Sufficient fragments in the decoding process.</name>

<t>In this case, there is a loss of fragments, but the decoding process indicate to defragmentation process that there are enougth tiles to decode the encode SCHC packet. <xref target="fig_dtsiot-message_flow_2"/> illustrates the transmission of a encode SCHC Packet using the ARQ-FEC fragmentation mode. During transmission of the encoded SCHC packet, fragments 2 and 4 are lost.</t>

<t>To determine the number of tiles sufficient to decode a matrix, it is necessary to construct C-matrix. The process for determining the location of each tile in C-matrix and how to determine if there are enough symbols is explained in section {receiver_behavior}. In this case, if fragments 2 and 4 are lost, the receiver needs to receive up to the tile with FCN=8 and W=1.</t>

<figure title="Message flow for ARQ-FEC mode (Case 2)." anchor="fig_dtsiot-message_flow_2"><artwork type="ascii-art"><![CDATA[
             Sender                Receiver
MTU 220 B |---- W=0, FCN=62 ---->| (S param + 21 tiles)
          |<--- Compound ACK ----| W=0, C=1
MTU 220 B |---- W=0, FCN=40 --X  | (22 tiles)
MTU 220 B |---- W=0, FCN=18 ---->| (22 tiles)
MTU 115 B |---- W=1, FCN=59 --X  | (11 tiles)
MTU 115 B |---- W=1, FCN=48 ---->| (11 tiles)
MTU 220 B |---- W=1, FCN=37 ---->| (22 tiles)
MTU 220 B |---- W=1, FCN=15 ---->| (22 tiles) enough symbols
          |<--- Compound ACK ----| W=1, C=1
          |--W=2, FCN=63 + RCS-->|
          |<--- Compound ACK ----| W=3, C=1
]]></artwork></figure>

</section>
<section anchor="case-3-with-loss-of-fragments-insufficient-fragments-in-the-decoding-process"><name>Case 3: With loss of fragments. Insufficient fragments in the decoding process.</name>

<t>In this case, fragment loss occurs and the decoding process signals to defragmentation process that there are not enough tiles to decode the encoded SCHC packet. <xref target="fig_dtsiot-message_flow_3"/> illustrates the transmission of an encoded SCHC packet using the ARQ-FEC fragmentation mode. During the transmission of the encoded SCHC packet, fragments 2, 4, and 6 are lost.</t>

<t>To determine the number of tiles sufficient to decode a matrix, it is necessary to construct C-matrix. The process for determining the location of each tile in C-matrix and how to determine if there are enough symbols is explained in section {receiver_behavior}. In this case, if fragments 2, 4, and 6 are lost, the receiver only needs to receive the 9 tiles from fragment 6.</t>

<figure title="Message flow for ARQ-FEC mode (Case 3)." anchor="fig_dtsiot-message_flow_3"><artwork type="ascii-art"><![CDATA[
             Sender                Receiver
MTU 220 B |-- W=0, FCN=62 ---->| (S param + 21 tiles)
          |<- Compound ACK ----| W=0, C=1
MTU 220 B |-- W=0, FCN=40 --X  | (22 tiles)
MTU 220 B |-- W=0, FCN=18 ---->| (22 tiles)
MTU 115 B |-- W=1, FCN=59 --X  | (11 tiles)
MTU 115 B |-- W=1, FCN=48 ---->| (11 tiles)
MTU 220 B |-- W=1, FCN=37 --X  | (22 tiles)
MTU 220 B |-- W=1, FCN=15 ---->| (22 tiles)
MTU 220 B |-- W=2, FCN=56 ---->| (9 tiles)
          |-- W=2, FCN=63+RCS->| not enough symbols
          |<- Compound ACK ----| W=2, C=0, bitmap
MTU 115 B |-- W=2, FCN=56 ---->| (9 tiles) enough symbols
          |<- Compound ACK ----| W=3,C=1
]]></artwork></figure>

</section>
</section>
<section anchor="changelog"><name>Changelog</name>

<t><list style="symbols">
  <t>Version 00
  <list style="symbols">
      <t>Initial version</t>
    </list></t>
  <t>Version 01
  <list style="symbols">
      <t>This version removes references to DtS-IoT.</t>
      <t>This version adds state machines for the transporter sub-process.</t>
      <t>This version features a new design for the ARQ-FEC mode.</t>
    </list></t>
</list></t>

</section>
<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>TODO acknowledge.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>

&RFC8724;
&RFC9441;
&RFC2119;
&RFC8174;


    </references>




  </back>

<!-- ##markdown-source:
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
NHDQvQG3stzlnYDsfFxllPukHu0QDH3V2m6Xyihn60sKjXs82PWljk+FgT+y
Mqq0dED+8nqW3ODpJZBWWcfKn/HYlfcfS6Z2Zf3/VxQMxKlQt1e+t/6/3kCp
fmUnx+U+V8739zuRmXtl65obUJTKp8XypzsfJpiUaVtl/sem1D0mOKg8yDtV
7kqpwcpdH6/yDzRmReKs5cTnCyt/QAPqo5joO4G7ihTZM6nnurIZ84fnB31B
kSqTQRvf7TGvbQbb30iswXnu+vz+2CbNxDVbObbPQ3yQtruK8J6+snltWLIz
tq3KWhh0xrZVWT8tcdZUy5A0C1bu+tiVkcxAub+nsJ8/4x71BoHvV/6Xf/mC
nv2hbhXdduVHL9B2ZcpW85jlyq6cb57VzZXDQnPjEutW7iI0g5Ufvbybyvex
Ih3AdpW5bkudrmxSWP8A9btNuV2Zxsy/u81aoOfusxYcc9dZM9i2uLrrrPmV
9zXCHzNmYQ1bPzsnu2KDjNhcmZ64jOhQuS0jlDyUlQm+9c5PITKOU0uHngnz
7IN4PNgnlj7ralgdKqMuXTUfA+KpQ+X4s2Wef/LmeRSYZ1v3bD3rKEQ9hykG
IeKML/U9hx2D0MeXel1ZKmOBylvmea2dZYgcv/KWefbA/sEd9pZ5biGs44y7
moGCYm11JX10nSpLUdJpmW1Vlk8cxR0qn2hdaoOpEqscR3GHyp2eTZUNO52i
Fsne/N2OlbcudpsqE8adVBx/tglq36u88f4Den5cY951uZw+Wvdci1cSFrey
LW8O+5a8sQFaU17iWvg9R5FjAxUbM2mAIcqIAdVJGwoCZVXe17AEK4eBUpXX
ulywcvixKp/T5IXS3sc0hU49x55OY95Wuf3snO36ZrgvyHqKpsNdbrZZeqrX
8GAtV9WP/t7F1sqbGIwq0+Dgn/OANkPMR5syITm4pefNzxdWlgzR4gsaxuZV
p2fzZ/vZMlUG3BDgJxsmiitzjpZg5U0TtbXnLVO1ecybn9h1ERxS5fj7tbtf
nT57hUfeW/dGcDTWZY1VL+dcla5+UU/kvmT57D9+JK021rxZ8Bjq2w5Hld6D
zfbVBody+xofX+jEVdrubSAcaP59FXXKb28jSISPbINtWAGaKmOmKxy2/Dam
rBpVtzZCv+PP5ja6OSOibdiaBRNLlFCibaw93+4GQtnQhrnDgg2DKKF0Hct6
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
aLPp8yd0tPUJ+rfenL0RiS4JNf8X0Td07hLHAAA=

-->

</rfc>

