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


<!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-02" 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>
    <author initials="J. A." surname="Fernandez" fullname="Javier Alejandro Fernandez">
      <organization>IMT Atlantique</organization>
      <address>
        <postal>
          <city>Cesson-Sevigne</city>
          <country>France</country>
        </postal>
        <email>javier-alejandro.fernandez@imt-atlantique.fr</email>
      </address>
    </author>

    <date year="2026" month="March" day="31"/>

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

    <abstract>


<?line 48?>

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


<?line 52?>

<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. When losses are detected, the reassembler reports the missing tile indices to the fragmenter as part of the acknowledgement mechanism, according to the selected fragmentation mode.</t>

<t>With regard to detecting tiles with errors, the reassembler uses a Reassembly Check Sequence (RCS) computed over the entire SCHC packet. If the integrity check is unsuccessful, the reassembler discards the SCHC packet and the fragmentation process 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 reassembler may discard the SCHC packet and declare the fragmentation 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 on a Type II Hybrid ARQ/FEC mechanism and consists of two main 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 first encoded into a coded data structure and then fragmented. At the receiver, the process is reversed.
The reassembler first reconstructs the coded data structure from the received tiles and then decodes it to recover the SCHC packet.
The format of the coded data structure depends on the selected encoding geometry.
This specification defines two encoding geometries: a matrix-based encoding geometry ("C-matrix") and a streaming encoding geometry ("C-Stream").</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         |      |         |           |  |
|   |   Coded structure  |      |   Coded structure   |  |
|   |          |         |      |         ^           |  |
|   |          v         |      |         |           |  |
|   |   +-------------+  |      |  +---------------+  |  |
|   |   |Fragmentation|  |      |  |Defragmentation|  |  |
|   |   |   process   |  |      |  |    process    |  |  |
|   |   +-------------+  |      |  +---------------+  |  |
|   +--------------------+      +---------------------+  |
|   Sender     |                          ^  Receiver    |
|              |                          |              |
|              +--------------------------+              |
+--------------------------------------------------------+
ARQ-FEC fragmentation mode
]]></artwork></figure>

<section anchor="protocol-elements"><name>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: 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: A 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: A 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 source symbols. A source block has "k" symbols.</t>
  <t>Encoding Geometry: The method used to arrange data from the SCHC Packet and to organize both source and encoded symbols into either a matrix or a stream data structure.</t>
  <t>Coded Data Structure: The arrangement of symbols resulting from the FEC encoding process, as defined by the selected encoding geometry. It serves as the input to the fragmentation process and is represented either as a C-Matrix or a C-Stream.</t>
  <t>D-matrix (Data Matrix): The conceptual two-dimensional arrangement of the source symbols derived from the SCHC Packet prior to FEC encoding. Each row of the D-matrix is a Source Block.</t>
  <t>D-Stream: The conceptual sequential arrangement of the source symbols derived from the SCHC Packet prior to FEC encoding. A Source Block is a group of sequential source 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>C-matrix (Coded Matrix): The conceptual two-dimensional arrangement of encoded symbols produced by applying the selected FEC scheme to each row of the D-matrix. Each row of the C-matrix is an Encoded Block corresponding to the associated D-matrix row.</t>
  <t>C-Stream: The conceptual sequential arrangement of encoded symbols produced by applying the selected FEC scheme to the D-Stream. Encoded symbols are generated and organized as a stream corresponding to the source blocks.</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 the coded data structure from a SCHC packet, according to the selected encoding geometry. At the receiver, the decoding process works in reverse, i.e., it creates a SCHC packet from the coded data structure.</t>

<section anchor="encoding-geometries"><name>Encoding Geometries</name>

<t>The encoding and decoding processes support two distinct encoding geometries, which define how symbols are to be organized, and how repair information is generated and applied. The selected encoding geometry impacts both the performance of the FEC mechanism and the resource requirements of the system.</t>

<t>This specification defines the following encoding geometries:</t>

<t><list style="symbols">
  <t>Matrix-based geometry: Symbols are arranged in a two-dimensional structure, enabling flexible FEC strategies such as structured interleaving, configurable parity coverage, and repeated multi-pass decoding. This geometry supports more robust error correction capabilities.</t>
  <t>Stream geometry: Symbols are organized as a sequential stream, where repair symbols are generated over a sliding or sequential set of symbols (block). This geometry enables simpler encoding and decoding operations.</t>
</list></t>

<t>The choice of encoding geometry reflects a trade-off between reliability and resource consumption. The matrix-based geometry provides stronger recovery capabilities and are suited for use cases requiring high reliability under significant loss conditions. The stream geometry, on the other hand, is designed for environments with constrained processing or memory resources, providing lightweight protection against losses at a lower implementation cost.</t>

<t>The selection of the encoding geometry is configured within the SCHC fragmentation rule and determines the encoding and decoding procedures described in the following sections.</t>

</section>
<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>

<section anchor="matrix-based-encoding"><name>Matrix-Based Encoding</name>

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

<t><list style="numbers" type="1">
  <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" type="1">
  <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="stream-encoding"><name>Stream Encoding</name>

<t>In the stream encoding geometry, the encoding process is performed as a sequence of steps applied to the SCHC Packet.</t>

<t>First, the SCHC Packet is partitioned into source symbols of size "m" bits. Each symbol is treated as an indivisible unit by the encoding process.</t>

<t>The resulting sequence of source symbols is then grouped into source blocks, each containing "k" source symbols. The number of source blocks depends on the size of the SCHC Packet and is not fixed a priori.</t>

<t>Next, the FEC encoding is applied independently to each source block. For each source block, the encoding process generates the corresponding encoded symbols, forming an encoded block of "n" symbols.</t>

<t>Finally, the encoded blocks are arranged sequentially to form the C-Stream. The encoded symbols are ordered according to the sequence of their corresponding source blocks, producing a continuous stream of symbols that constitutes the coded data structure.</t>

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

<t>In the receiver, the decoding process <bcp14>MUST</bcp14> create a SCHC packet from the coded data structure 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 coded data structure to obtain a SCHC packet.</t>

<section anchor="matrix-based-decoding"><name>Matrix-Based Decoding</name>

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

<t><list style="numbers" type="1">
  <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" type="1">
  <t>Select the k symbols from the first row of the D-matrix. These 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. These symbols will be the next (k * m) bits of the SCHC packet.</t>
  <t>Continue selecting the k-symbols from each row until 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 anchor="stream-decoding"><name>Stream Decoding</name>

<t>In the stream encoding geometry, the decoding process operates on the received C-Stream and is performed on a per-block basis.</t>

<t>The receiver processes the C-Stream as a sequence of encoded blocks, each containing "n" symbols. For each encoded block, the decoding process interprets the received symbols according to the selected FEC scheme. Based on this interpretation, the decoding process determines which source symbols are available, which are missing, and how the available symbols can be used to recover missing information.</t>

<t>The decoding process then applies the FEC decoding algorithm to recover any missing source symbols within the block.</t>

<t>Once all source symbols of an encoded block have been recovered, any symbols that are not required for reconstructing the original data are discarded. The recovered source symbols are then placed in their original order within the stream.</t>

<t>After all encoded blocks have been processed, the sequence of recovered source symbols is reassembled to reconstruct the SCHC Packet.</t>

</section>
</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 FEC-encoded data from the sender to the receiver. Unlike the other fragmentation processes defined in <xref target="RFC8724"/>, the fragmentation and defragmentation processes of ARQ-FEC mode 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 the coded data structure 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 encoded 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 receives the tiles that are then passed to the assembler sub-process. The assembler subprocess constructs the coded data structure using the received tiles. Once the assembler sub-process has collected sufficient symbols to enable decoding, the transporter sub-process terminates the fragmentation session and forwards the coded data structure 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 coded data structure into an encoded SCHC packet. To do this, the assembler sub-process reads the encoded symbols from the coded data structure according to the selected encoding geometry and arranges them into a sequential buffer. This buffer forms the encoded SCHC packet that is passed to the transporter sub-process. The arrangement of symbols in the encoded SCHC packet is determined by the encoding geometry.</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>

<section anchor="c-matrix-assembly"><name>C-Matrix Assembly</name>

<t>In the matrix-based encoding geometry, the assembler sub-process constructs the encoded SCHC packet column by column. It first selects the S symbols of the first column of the C-matrix, which form the beginning of the encoded SCHC packet. It then selects the S symbols of the second column, which are appended to the encoded SCHC packet, and continues this process for all columns. <xref target="fig_dtsiot-encoded_schc_packet"/> shows how the encoded SCHC packet is constructed from the C-matrix.</t>

<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="c-stream-assembly"><name>C-Stream Assembly</name>

<t>In the stream encoding geometry, the assembler sub-process constructs the encoded SCHC packet from the C-Stream.</t>

<t>The assembler sub-process reads the encoded symbols sequentially from the C-Stream and arranges them into a continuous buffer. This buffer is then partitioned into tiles according to the tile size defined by the fragmentation rule. The tiles are grouped into windows of a priori known size. The mapping of symbols to tiles and windows is determined by the order in which symbols are read from the C-Stream.</t>

<t>The assembler sub-process <bcp14>MAY</bcp14> apply an interleaving pattern to the encoded symbols, as specified by the fragmentation rule, resulting in a reordering of the window and tile numbering sequence. This reordering is used to distribute symbols originating from different encoded blocks across multiple windows, improving robustness to losses. When such reordering is applied, the relative position of symbols within each encoded block is preserved, while their placement within the encoded SCHC packet is modified according to a deterministic pattern known to both sender and receiver.</t>

<t>The resulting sequence of tiles forms the encoded SCHC packet, which is passed to the transporter sub-process for transmission.</t>

</section>
</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 coded data structure, verifying whether there are enough symbols to successfully decode the SCHC Packet, and indicating to the transporter sub-process which tiles need to be retransmitted.</t>

<section anchor="placing_tiles"><name>Placing Tiles in the Coded Data Structure</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 coded data structure.</t>

<section anchor="c-matrix-tile-placement"><name>C-Matrix Tile Placement</name>

<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" type="1">
  <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" type="1">
  <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. Each subsequent symbol of the tile is placed in the same column and the next row in increasing order. If the last row of the matrix is reached and unplaced symbols remain in the tile, placement shall continue at the first row of the next column. For example, assume a tile contains 4 symbols and the C-matrix has 7 rows (S = 7). If placement begins at row 5, column 1, the symbols are placed at positions (5,1), (6,1), (7,1), and (1,2), respectively.</t>
</list></t>

</section>
<section anchor="c-stream-tile-placement"><name>C-Stream Tile Placement</name>

<t>When operating on a C-Stream, the assembler sub-process places received tiles into the sequential block structure of the C-Stream.</t>

<t>For each received tile, the assembler sub-process determines its position in the C-Stream based on the Window (W) and Tile (T) fields carried in the SCHC fragment. The tile is then stored at the corresponding position in the structure.</t>

<t>The placement of tiles in the C-Stream is independent of the order in which they are received. In particular, when interleaving has been applied at the sender, tiles may be received in an order that does not correspond to their original sequence in the C-Stream. By placing each tile according to its W and T values, the assembler sub-process reconstructs the original ordering of the encoded symbols within the C-Stream.</t>

<t>Missing tiles remain uninitialized or marked absent in the C-Stream; if the C-Stream as a whole becomes decodable, it is passed to the decoding process even if some tiles were never received.</t>

</section>
</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 Encoded Block to recover the original k symbols. Therefore, the assembler process only needs to have k encoded symbols in each Encoded Block to pass the coded data structure to the decoding process. If the coded data structure 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 coded data structure, as explained in section <xref target="placing_tiles"/>. Once the tiles are in place, the task of checking whether there are enough symbols in each Encoded Block can begin.</t>

<t>The verification task must review all encoded blocks in the coded data structure and check its present symbol count; if a block contains at least k symbols it is marked as decodeable, otherwise, not decodeable. If a block is already marked as decodeable, the task skips it and continues until all encoded blocks have been reviewed.</t>

<t>If at any point the verification task detects that all encoded blocks of the coded data structure are decodable, then the assembler sub-process <bcp14>MUST</bcp14> indicate to the transporter sub-process that the coded data structure 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 coded data structure. When the assembler sub-process adds the residual fragmentation bits, two outcomes are possible:</t>

<t><list style="symbols">
  <t>If all blocks are marked as decodeable, the assembler sub-process must notify the signaling sub-process that the coded data structure contains enough symbols and the fragmentation session may end.</t>
  <t>If one or more encoded blocks within the coded data structure were marked as undecodable, the assembler sub-process must follow the retransmission selection steps for the chosen encoding geometry.</t>
</list></t>

</section>
<section anchor="c-matrix-tile-retransmission-selection"><name>C-Matrix Tile Retransmission Selection</name>

<t><list style="numbers" type="1">
  <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>

</section>
<section anchor="c-stream-tile-retransmission-selection"><name>C-Stream Tile Retransmission Selection</name>

<t>When the assembler process determines that an encoded block cannot be successfully decoded due to missing data, the assembler sub-process identifies the corresponding missing tiles within the C-Stream.</t>

<t>The identification of missing tiles is based on the position of tiles within the C-Stream, as determined by their Window (W) and Tile (T) values. This identification is independent of whether interleaving has been applied at the sender, as each tile retains a unique position within the C-Stream.</t>

<t>The assembler sub-process indicates the set of missing tiles to the transporter sub-process using the bitmap format defined for SCHC Compound ACK messages.</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 reassembler 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 in ARQ-FEC mode is associated with successful decoding of the coded data structure. If some tiles are lost during fragmentation and reassembly, the coded data 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 received data, or at the end of the transmission if there are insufficient symbols. For this reason, the SCHC Compound ACK <bcp14>MUST NOT</bcp14> be sent after each window. The sender may advance to subsequent windows even before confirming that all tiles from 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 (matrix-based geometry),</t>
  <t>if the receiver receives a SCHC regular fragment message and the assembler sub-process verify that there are enough symbols to decode the coded data structure,</t>
  <t>if the receiver receives a SCHC All-1 message and the assembler sub-process verify that there are enough symbols to decode the coded data structure,</t>
  <t>if the receiver receives a SCHC All-1 message and the assembler subprocess verifies that there are not enough symbols to recover the SCHC packet.</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 coded data structure.</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 encoded geometry choice,
* the value of M (Symbol size in bits), <!-- what are these again? -->
* the value of N (Encoded block size),
* 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, 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>

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

<!-- Como se transporta el ultimo encoded tile -->
<t>The last tile 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 recover the SCHC packet. 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 anchor="matrix-specific-behavior"><name>Matrix-Specific Behavior</name>

<t>In the matrix-based encoding geometry, 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>

</section>
</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>The behavior of the transporter sub-process depends on the type of SCHC fragment received and the decoding status as indicated by the assembler sub-process.</t>

<t>When a Regular SCHC Fragment is received, the transporter sub-process extracts the tiles based on the a priori known tile size and delivers them to the assembler sub-process. The transporter sub-process then awaits a response from the assembler sub-process. If the assembler sub-process indicates that sufficient symbols have been collected to enable decoding, 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 fragment. Otherwise, the transporter sub-process <bcp14>SHOULD</bcp14> take no action.</t>

<t>When an All-1 SCHC fragment is received, the transporter sub-process delivers the remaining tile(s) to the assembler sub-process and awaits a response. If the assembler sub-process indicates that sufficient symbols have been collected to enable decoding, 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 terminate the fragmentation session. Otherwise, the transporter sub-process <bcp14>MUST</bcp14> send a SCHC Compound ACK with the C field set to 0, including bitmaps indicating the missing tiles.</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 anchor="matrix-specific-behavior-1"><name>Matrix-Specific Behavior</name>

<t>When the first SCHC fragment of a fragmentation session is received, the first tile carries the S parameter. This parameter is extracted by the transporter sub-process and provided to the assembler sub-process.</t>

</section>
</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>

<?line -18?>

</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-arq-fec-fragmentation-mode-with-matrix-based-encoding-geometry"><name>Appendix B. Example of ARQ-FEC Fragmentation Mode with Matrix-Based Encoding Geometry</name>

<t>This example represents the transmission of a SCHC packet generated by the compression sublayer, for the matrix-based encoding geometry. 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 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>
<section anchor="appendix-c-example-of-arq-fec-fragmentation-mode-with-stream-encoding-geometry"><name>Appendix C. Example of ARQ-FEC Fragmentation Mode with Stream Encoding Geometry</name>

<t>This appendix gives a worked example of ARQ‑FEC fragmentation using the C‑Stream encoding geometry with XOR parity encoding.</t>

<section anchor="parameters"><name>Parameters</name>

<t><list style="symbols">
  <t>Encoding geometry: C-Stream.</t>
  <t>Tile size: one symbol per tile.</t>
  <t>Window size: 7 tiles.</t>
  <t>FEC: simple XOR parity with source block size 2, encoded block size of 3 (2 data symbols + 1 parity).</t>
  <t>Interleaving: depth 3 (encoded block size).</t>
  <t>Disable All-1 payload: yes.</t>
</list></t>

</section>
<section anchor="sender"><name>Sender</name>

<section anchor="encoding"><name>Encoding</name>

<t><list style="numbers" type="1">
  <t>Divide the SCHC Packet into symbols (each symbol is represented by a single letter):</t>
</list></t>

<figure title="SCHC Packet data partitioned in symbols." anchor="Fig-xor-ex-enc1"><artwork type="ascii-art"><![CDATA[
abcdefghijklmnopqrstuvwxyzABCDEFGHIJ
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Apply XOR sequentially every two source symbols (source blocks) to produce a third parity symbol. This will produce the C-Stream with encoded blocks of 3 symbols each.</t>
</list></t>

<figure title="C-Stream after XOR encoding of each block." anchor="Fig-xor-ex-enc2"><artwork type="ascii-art"><![CDATA[
ab+cd+ef+gh+ij+kl+mn+op+qr+st+uv+wx+yz+AB+CD+EF+GH+IJ+
]]></artwork></figure>

</section>
<section anchor="fragmentation"><name>Fragmentation</name>

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

<t><list style="numbers" type="1">
  <t>Divide the C-Stream into tiles and group them into windows. Tile size is set to match the symbol size.</t>
</list></t>

<figure title="Tiles are numbered per normal tile numeration." anchor="Fig-xor-ex-frag1"><artwork type="ascii-art"><![CDATA[
C-Stream: ab+cd+e f+gh+ij +kl+mn+ op+qr+s t+uv+wx +yz+AB+ CD+EF+G H+IJ+
Tiles:    6543210 6543210 6543210 6543210 6543210 6543210 6543210 65432
Windows:  0000000 1111111 2222222 3333333 4444444 5555555 6666666 77777
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Apply interleaving (depth 3). Because the interleaving depth equals the encoded block size, this produces a simple, fixed permutation: take the 1st symbol from each block in order, then 2nd symbols, then 3rd symbols, producing the reordered C‑Stream for fragmentation (i.e., the encoded SCHC Packet).</t>
</list></t>

<figure title="Encoded SCHC Packet after interleaving." anchor="Fig-xor-ex-frag2"><artwork type="ascii-art"><![CDATA[
Window: 000 112 233 344 556 667 001 112 233 444 556 677 001 122 233 445 556 677
Tile:   630 415 263 041 526 304 526 304 152 630 415 263 415 263 041 526 304 152
Data:   ace gik moq suw yAC EGI bdf hjl npr tvx zBD FHJ +++ +++ +++ +++ +++ +++
]]></artwork></figure>

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

<t><list style="numbers" type="1">
  <t>Partition the encoded SCHC Packet into fragments that each fit within the L2 MTU; for example, assume each fragment carries 9 tiles.</t>
</list></t>

<figure title="Fragmented encoded SCHC Packet, ready to transmit." anchor="Fig-xor-ex-frag3"><artwork type="ascii-art"><![CDATA[
Window:   000112233 344556667 001112233 444556677 001122233 445556677
Tile:     630415263 041526304 526304152 630415263 415263041 526304152
Data:     acegikmoq suwyACEGI bdfhjlnpr tvxzBDFHJ +++++++++ +++++++++
Fragment: |0:6____| |3:0____| |0:5____| |4:6____| |0:4____| |4:5____|
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Transmit each fragment in sequence, along with an All-1 fragment carrying the RCS data.</t>
</list></t>

</section>
</section>
</section>
<section anchor="receiver"><name>Receiver</name>

<section anchor="defragmentation"><name>Defragmentation</name>

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

<t><list style="numbers" type="1">
  <t>Process the received fragments according to the SCHC header (identify Rule ID, begin the fragmentation session).</t>
  <t>Extract payload and pass the received tiles to the Assembler sub-process. For this example, assume the second fragment was lost during transmission.</t>
</list></t>

<figure title="Received SCHC fragments." anchor="Fig-xor-ex-defrag1"><artwork type="ascii-art"><![CDATA[
Window:   000112233 001112233 444556677 001122233 445556677 7~~~~~
Tile:     630415263 526304152 630415263 415263041 526304152 7~~~~~
Data:     acegikmoq bdfhjlnpr tvxzBDFHJ +++++++++ +++++++++ RCS~~~
Fragment: |0:6____| |0:5____| |4:6____| |0:4____| |4:5____| |7:7~~
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Await the signal form the Assembler sub-process before transmitting the SCHC Compound Ack back to the sender.</t>
</list></t>

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

<t><list style="numbers" type="1">
  <t>Place any received tiles into an empty C-Stream while the fragmentation session is active. Tiles are placed in their corresponding order according to the interleaving parameter.</t>
</list></t>

<figure title="Received tiles placed in the C-Stream." anchor="Fig-xor-ex-defrag2"><artwork type="ascii-art"><![CDATA[
C-Stream wth Window:Tile numbered slots (observe as grid):
W: 000000011111112222222333333344444445555555666666677777...
T: 654321065432106543210654321065432106543210654321065432...
=: ======================================================
W: 0  0  0  1  1  2  2  3  3    <- 1st fragment received
T: 6  3  0  4  1  5  2  6  3    <- W:T numbering
D: a  c  e  g  i  k  m  o  q    <- Data

    0  0  1  1  1  2  2  3  3    <- 2nd fragment received
    5  2  6  3  0  4  1  5  2    <
    b  d  f  h  j  l  n  p  r    <

   3rd fragment received ->    4  4  4  5  5  6  6  7  7
                          >    6  3  0  4  1  5  2  6  3
                          >    t  v  x  z  B  D  F  H  J

     0  0  1  1  2  2  2  3  3    <- 4th fragment received
     4  1  5  2  6  3  0  4  1    <
     +  +  +  +  +  +  +  +  +    <

    5th fragment received ->    4  4  5  5  5  6  6  7  7
                           >    5  2  6  3  0  4  1  5  7
                           >    +  +  +  +  +  +  +  +  +
=: ======================================================
C-Stream (underscores mark missing data):
=: ab+cd+ef+gh+ij+kl+mn+op+qr+_t+_v+_x+_z+_B+_D+_F+_H+_J+
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>Check if there are enough symbols to decode missing data within every encoded block. In this example, the XOR-encoded blocks require 2 out of 3 symbols.</t>
</list></t>

<figure title="Encoded blocks are marked as decodeable or non-decodeable." anchor="Fig-xor-ex-defrag3"><artwork type="ascii-art"><![CDATA[
C-Stream: ab+ cd+ ef+ gh+ ij+ kl+ mn+ op+ qr+ _t+ _v+ _x+ _z+ _B+ _D+ _F+ _H+ _J+
Bitmap:   111 111 111 111 111 111 111 111 111 011 011 011 011 011 011 011 011 011
2 of 3:    OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK  OK
]]></artwork></figure>

<t><list style="numbers" type="1">
  <t>In this case, all blocks are marked as decodeable, even if there was missing data. The Assembler sub-process signals the Transporter sub-process that the encoded SCHC packet is fully decodeable, triggering the SCHC Compound Ack with no tiles to retransmit.</t>
</list></t>

</section>
</section>
<section anchor="decoding"><name>Decoding</name>

<t>The XOR FEC scheme may be applied on each encoded block of the C-Stream to recover any missing data. When no data is missing, parity symbols are ignored. If a symbol is missing, the available symbols are combined using XOR to recover the missing data.</t>

<figure title="Recovering the SCHC Packet using available symbols." anchor="Fig-xor-ex-defrag4"><artwork type="ascii-art"><![CDATA[
C-Stream:    ab+ cd+ ef+ gh+ ij+ kl+ mn+ op+ qr+ _t+   _v+   _x+   _z+   _B+   _D+   _F+   _H+   _J+
Action:        i   i   i   i   i   i   i   i   i =xx   =xx   =xx   =xx   =xx   =xx   =xx   =xx   =xx
Operation:                                       t^+=s v^+=u x^+=w z^+=y B^+=A D^+=C F^+=E H^+=G J^+=I
SCHC Packet: ab  cd  ef  gh  ij  kl  mk  op  qr  st    uv    wx    yz    AB    CD    EF    GH    IJ

*Legend: 'i'=ignore; '='=calculate; 'x'=combine
]]></artwork></figure>

</section>
</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>
  <t>Version 02
  <list style="symbols">
      <t>Introduces encoding geometries and coded data structure abstraction.</t>
      <t>Adds C-Stream alternative for simpler FEC schemes (e.g. XOR).</t>
      <t>Minor wording and phrase improvements.</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' anchor="sec-normative-references">

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


    </references>





  </back>

<!-- ##markdown-source:
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
7rxYZxx6OPrXBgZepw2jwjcwcKyNm6CNVY/bhqM+dW0bDQhtaOPBupYfbBur
t0WDNiz7mzYahNej5rJCIKt1cOsw5XZ8e7gTkXQhblc9zfKDt3bWaiMy1EeP
I/LuxvwI28Cx1SffvDb0G/z4dXqJrXPu7/U26vQSb4PcgKq2GUFPHQmrxlF/
6khYBY91nga/hzk4+DmeD3Ohc+j7cKIoXw7UEd9kiCHQuj0/mvwtZcbGkGwJ
rn5JR5KO9BHi7+UIscRwys2IeIaZsy+WNtzZyT6ZeKdFLzEDnnvOaix58CkS
e3lOKbJ7ZuLtZ5md4026Q0qD7YIsiPWWHhSdaP8x/5ic7r+z+b/vdzudeEXK
emvzouDp3RObGLIqN3fVcMsI+KfqJaX7wjhuzta4MYMSX1OOpa/4FRQ6poON
TgZGtXENxXacdvxbp46pzBzKvHDKuPDlVj5Aiec7O8+oPyjxNrnLZssZR8zS
vWMwpZ/QV7Xx9uSnTcpp/dM3w2f9b0ZfG6hcFHxj370610de1eHHZ2pjNBoB
9qq05JT4hx+31cZw+Ey/wwh9QzRfHQYXl3Hy9+MqXajhrjqgiFZzrwlOxoQn
fPhq41o9VbPNTXg12hrSeWUoYS5Bobnu4d2aT9X1JhaFv57vbI/0tD/GsmBB
hQ+ITuW0Ptzmb87gRmZwB3ZwB7Gu57rr4XD07Lnu23ANUtpVClam1MEqG3jR
hhnyztejHa9acMJaKoadO90hxD1eBrD79Kuh/1S9Wk6nfhJ2A/Gmzr8CArew
2tniai6AI/c07anG9jYZ/tIolLRgcw6LaOt8r7WbbhzLXag+oT+p9S6iuKu2
8RZWQx6nu8r8/g4Yxry3R9R3gdr/9m4ThgSUtc3HvNUBHpcC4j2VQ+DTXE5z
uNcFDNSxPSqnx22O20eu8zviW08jt7ub0ye+KJVDzsM+8h1/QTrT5699IIIg
Bq5ldG8AF29iKp3h0L7Z3hz4FwrRl7Php090dqJ0TsREBzlQoYcdjVBvWLhM
PthF9KH/tg9l1DuFr2EtVYPBQPXJ8+b8Tg/8pdfZzoM+Hg/mLi7d5JV7sIdw
P8iUH9em2t5iVWAL23w+ot8NyMyYG9bvV22A0fRyG6MXTS61VV3Dn0/3xM6M
uoeShKrVhj1uyMe7J4Yn4ggeeQiOdaMzSMt6P4jhuW9w/drimvH9oIa0Mvj4
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

-->

</rfc>

