<?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.17 (Ruby 2.6.10) -->


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

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

<rfc ipr="trust200902" docName="draft-pelov-schc-fragmentation-fec-rule-format-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>SCHC Rule Format for Forward Error Correction (FEC) in Fragmentation</title>

    <author initials="A." surname="Pelov" fullname="Alexander Pelov">
      <organization abbrev="IMT Atlantique">IMT Atlantique</organization>
      <address>
        <postal>
          <street>2bis rue de la Chataigneraie</street>
          <city>Cesson-Sévigné</city>
          <code>35536</code>
          <country>France</country>
        </postal>
        <email>alexander.pelov@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="J. A." surname="Fernandez" fullname="Javier A. Fernandez">
      <organization abbrev="IMT Atlantique">IMT Atlantique</organization>
      <address>
        <postal>
          <street>2bis rue de la Chataigneraie</street>
          <city>Cesson-Sévigné</city>
          <code>35536</code>
          <country>France</country>
        </postal>
        <email>javier-alejandro.fernandez@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="Q." surname="Nguyen" fullname="Hoang Quy Nguyen">
      <organization abbrev="Actility">Actility</organization>
      <address>
        <postal>
          <street>65 Rue de la Victoire</street>
          <city>Paris</city>
          <code>35536</code>
          <country>75009</country>
        </postal>
        <email>hoang.quynguyen@actility.com</email>
      </address>
    </author>

    <date year="2024" month="September" day="09"/>

    
    
    

    <abstract>


<?line 62?>

<t>This document defines a new Rule Format for Forward Error Correction (FEC) of SCHC Fragments.
It is backwards compatible with RFC8724, as an implementation which does not have the necessary FEC code implementations can simply ignore the messages with this new RuleID format.</t>



    </abstract>



  </front>

  <middle>


<?line 67?>

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

<t>A SCHC fragmentation session, besides allowing for larger payload transfer, protects against the loss of fragments through its various Acknowledgment modes, except in No-Ack where lost fragments can never be recovered.
In Ack-Always or Ack-On-Error, downlink messages are necessary to identify lost fragments.</t>

<t>As some communication technologies are highly asymmetrical (e.g. LPWANs), it may be desirable to use FEC codes to limit trafic in one direction (e.g. increase the numebr of uplinks to avoid downlinks). Simply repeating messages may be sub-optimal, depending on the radio conditions.</t>

<t>This draft introduces a new SCHC Rule type - the FEC RuleID. A SCHC FEC Fragmentation Rule is bound to a SCHC Fragmentation Rule, complementing it with the FEC functionality. The SCHC data sent with the FEC RuleID do not have a meaning or sense on their own. Instead, they provide the necessary sequence to recover lost fragments.</t>

</section>
<section anchor="format"><name>Format</name>

<t>The format of a SCHC FEC Fragment is the following:</t>

<figure title="SCHC FEC Fragment Format" anchor="Fig-header"><artwork><![CDATA[
|- SCHC FEC Fragment Header -|
         |-- T --|-M-|-- N --|
+-- ... -+- ... -+---+- ... -+--------...-----------+~~~~~~~~~~~~~~~~~~~~
| RuleID | DTag  | W |  FCN  | FEC Fragment Payload | padding (as needed)
+-- ... -+- ... -+---+- ... -+--------...-----------+~~~~~~~~~~~~~~~~~~~~

]]></artwork></figure>

</section>
<section anchor="operation"><name>Operation</name>

<t>The FEC Fragmentation Rule is bound to a Fragmentation Rule.
There MUST be a RuleID allocated in the same space as the RuleID of the Fragmentation Rule to which it is bound.</t>

<t>The size of DTag, W and FCN MUST be the same as the bound Fragmentation Rule.)</t>

<t>The FEC Fragmentation operates over a FEC Window (FW), which are the Tiles over which the FEC Fragment is calculated.</t>

<t>The FEC Window consists of FW tiles. The size of the FW can be fixed (e.g. in the Profile) or variable (e.g. depending on the MTU).</t>

<t>The FEC Fragment allows to recover some (or all) of the Tiles in its FEC Window.</t>

<t>The DTag, W and FCN values indicate which is the LAST tile of the FEC Window to which a given FEC Fragment refers to.</t>

<t>A SCHC FEC Fragmentation Profile defines the algorithm to use for the calculation of the FEC and relevant parametrs.</t>

<t>It is RECOMMENDED that a FEC Fragment fits in a single MTU.</t>

<t>A change in the MTU during a fragmentation session may lead to a change in the FEC Window size.
Change in the radio conditions may as well influence the FEC Window size.
The SCHC FEC Fragmentation Profile MUST define the behavior in case of dynamic change of the MTU and/or the FEC Window size. 
A RECOMMENDED behavior is to restart the FEC calculation, starting with the first Tile after the FEC Window size was changed.
If the FEC Window size or the MTU change dynamically all participating SCHC End-points MUST have a way of knowing this.</t>

<t>For example, in LoRaWAN a MAC Command may indicate change of the DataRate, which in turn changes the MTU, which in turn may change the FEC Window Size. In this case, the L2 technology provides the protocol machinery for this update.</t>

<t>A sender MAY send a FEC Fragment at any moment. Typically, a FEC Fragment is sent after each N_FW number of fragments. However, this may depend on the radio conditions and the network operator.</t>

<t>Note that the SCHC FEC Fragmentation operates only with SCHC Fragments. Other types of messages (ACK, All-0, All-1, Abort, etc.) are not covered by this draft.</t>

<t>SCHC FEC Fragmentation fields (DTag, W, FCN) MAY be aligned with the corresponding SCHC Fragmentation fields. 
It is possible, however, to send FEC Fragments, which are not aligned with the bound SCHC Fragmentation.
For example, a FEC fragment can be sent before the end of a SCHC fragmentation session, covering the final tiles that are piggybacked in an All-1 message.</t>

<figure title="FEC Fragment concept and calculation example with sample values following RFC9011.If Fragment B is lost in the transmission, the receiver end may recover it by performing a bitwise XOR operation between Fragment A and FEC Fragment." anchor="Fig-xor-fec-calc"><artwork><![CDATA[
                                                                                                             
  Fragment A              Fragment B           FEC Fragment     
+------------------+  +------------------+  +-----------------+
| RuleID = 20/8    |  | RuleID = 20/8    |  | RuleID = 30/8   |
+------------------+  +------------------+  +-----------------+ 
| W | FCN | Frag. A|  | W | FCN | Frag. B|  | W | FCN | FEC   |  
| 0 | 62  | Tiles  |  | 0 | 50  | Tiles  |  | 0 | 39  | Tiles | 
+------------------+  +------------------+  +-----------------+ 
           \       \           /        /             /      /
            \       \         /        /             /      /
             \       \       /        /             /      /
              +-------+     +-------+              +------+
              |Frag. A| XOR |Frag. B|      =>      |FEC   |
              |Tiles  |     |Tiles  |              |Tiles |
              +-------+     +-------+              +------+
              ^12 tiles^    ^12 tiles^             ^12 tiles^
                 W=0          W=0                   W=0                                       
                 FCN=62       FCN=50             FCN=50-12+1=39                              
              ^------FEC Window------^           > Last tile of                      
                                              previous fragment.
                                                                                                             
]]></artwork></figure>

<figure title="Difference between SCHC Fragments and SCHC FEC Fragments" anchor="Fig-difference"><artwork><![CDATA[
+--------------------------+         +----------------------------+
|    SCHC Fragmentation    |         |    SCHC FEC Fragmentation  |
|--------------------------|         |----------------------------|
| - Splits data into Tiles |         | - Operates over FEC Window |
| - Uses DTag, W, FCN      |         | - Uses DTag, W, FCN        |
| - Data transmission      |         | - Calculates FEC over Tiles|
+--------------------------+         +----------------------------+
            |                                  |
            v                                  v
+--------------------------+         +----------------------------+
|     SCHC Fragments       |         |  SCHC FEC Fragments        |
|--------------------------|         |----------------------------|
| - Contains data          |         | - Contains FEC code        |
| - Indexed by DTag, W, FCN|         | - Helps recover lost Tiles |
+--------------------------+         +----------------------------+
            |                                  |
            v                                  v
+--------------------------+         +----------------------------+
|  Transmission to Receiver|         |  FEC Recovery Mechanism    |
|--------------------------|         |----------------------------|
| - Regular SCHC Fragments |         | - Uses FEC Fragments       |
| - As per fragmentation   |         | - Complements SCHC Frags   |
|   rules                  |         | - Enhances reliability     |
+--------------------------+         +----------------------------+
]]></artwork></figure>

<figure title="State Machine of FEC Fragment Sender. Note that the FEC Fragments can be sent at any time. Often, this could be after the emission of a SCHC Fragment (e.g. sending a new FEC Fragment every 2 SCHC Fragments), but that could be extended to a time-based FEC Fragment emission (e.g. every 4 hours), or some other parameter. Typically, the FEC Fragment sent will be relative to the last SCHC Fragment, but it could refer to any other tile. Receivers are not required to keep a trace of the SCHC FEC Fragments they receive." anchor="Fig-sender-fsm"><artwork><![CDATA[
+------------------+             +------------------+
| New SCHC         | --------->  | Init SCHC FEC    |
|  Fragmentation   |             | Fragmentation    |
|  Session         |             | Information      |
|  Start           |             | for that Session |
| (Init DTag, W,   |             | (Init FEC.DTag,  |
|  FCN)            |             | FEC.W, FEC.FCN)  |
+------------------+             +--------+---------+
                                          |
         +--------------------------------+
         |
         v
+-------------------+   No       +------------------+
|SCHC Fragment      | ---------> | Release SCHC FEC |
| Session Ongoing   |<----+--+   | Ressources for   |
+---+---------------+     |  |   | this session.End.|
    | Yes                 |  |   +------------------+
    v                     |  |
+-------------------+  No |  |   +------------------+
| Send FEC Fragment?|---->+  +<--| Chose FEC.DTag,  |
|                   |            | FEC.W, FEC.FCN,  |
| Use algorithm     |            | Calculate FEC,   |
| to decide to send |            |                  |
| FEC Fragment      |  Yes       | Send FEC Fragment|
| or not.           |----------> |                  |
+-------------------+            +------------------+
]]></artwork></figure>

<figure title="State Machine of FEC Fragment Receiver. FEC Fragments can be received at any time. 
The reception of a FEC Fragment may allow to recover missing SCHC Fragments. If the data of a SCHC Fragment
is recovered, depending on the implementation there are several options. One is to generate a SCHC Fragment
corresponding to the lost SCHC Fragment and send it to the SCHC Fragmentation process (e.g. through an API call 
or as if it was received through the lower-layer). Alternatively, the SCHC Fragmentation process may be
the one implementing the FEC mechanism, in which case the recovery of a piece of data may be processed internally." anchor="Fig-receiver-fsm"><artwork><![CDATA[
+------------------+             +------------------+
| Start            | --------->  | Init SCHC FEC    |
| New SCHC         |             | Fragmentation    |
| Fragmentation    |             | Information      |
| Session          |             | for that Session |
| (Init DTag, W,   |             | (Init FEC.DTag,  |
|  FCN)            |             | FEC.W, FEC.FCN)  |
+------------------+             +--------+---------+
                                          |
         +--------------------------------+
         |
         v
+-------------------+   No       +------------------+
| SCHC Fragment     | ---------> | Release SCHC FEC |
| Session Ongoing   |<----+--+   | Resources for    |
+---+---------------+     |  |   | this session. End|
    |                     |  |   +------------------+
    v                     |  |  
    v                     |  | 
+-------------------+  No |  |   +------------------+
| Receive FEC       |---->+  |   | Use DTag,W,FCN   |
| Fragment          |        |   | to determine FEC |
|                   |        |   | Window position. |
|                   |  Yes   |   | If possible,     |
|                   |----------> | recover missing  | 
|                   |        |   | fragment(s).     |
+-------------------+        |   +--------+---------+
                          +--+            |
                          ^               v
                          |      +------------------+
                          |      | FEC integrated in|
                          |      | Fragmentation ?  |
                          |      +------------------+
                          |               |
         +--------------------------------+
         |                |               |
     Yes v                |            No v   
+-------------------+     |      +------------------+
| Process           |     |      | Send recovered   |
| SCHC Fragment     |     |      | SCHC Fragment    |
| as per            |---->+<-----| to Fragmentation |
| Fragmentation FSM |            | process          |
+-------------------+            +------------------+
]]></artwork></figure>

</section>
<section anchor="schc-fec-fragment-profile-for-xor-over-rfc9011-uplink-fragmentation"><name>SCHC FEC Fragment Profile for XOR over RFC9011 Uplink Fragmentation</name>

<t>One simple method for constructing a FEC fragment between SCHC fragments of the same size is to apply an Exclusive OR (XOR) operation on every two SCHC fragments and send the resulting value as the FEC fragment as an additional message.
A receiver needs any 2 of the three fragments to recover the initial two fragments.</t>

<t>This example provides a SCHC FEC Fragment Profile bound to RFC9011 Uplink Fragmentation.
SCHC FEC Fragment Rule ID = 30, bound to SCHC Fragment RuleID = 20.</t>

<t><list style="symbols">
  <t>SCHC fragmentation reliability mode: ACK-on-Error.</t>
  <t>SCHC header size: 2 bytes (the FPort byte + 1 additional byte).</t>
  <t>RuleID: 8 bits stored in the LoRaWAN FPort (cf. Section 5.2).</t>
  <t>DTag: Size T = 0 bits, not used (cf. Section 5.6.1).</t>
  <t>Window index: 4 windows are used, encoded on M = 2 bits.</t>
  <t>FCN is 6 bits.</t>
  <t>Tile size: 10B</t>
  <t>The tiles per SCHC Fragment are denoted with Tiles per Fragment: TF = MTU size / Tile size (10).</t>
  <t>FEC Window (FW) is TF*2 tiles.</t>
  <t>The FEC Fragment contains TF tiles.</t>
</list></t>

<t>The default alrogithm to determine when to send a SCHC FEC Fragment is:
* One SCHC FEC Fragment for every two SCHC Fragments. The FEC Window covers the tiles of the two latest SCHC Fragments.</t>

<t>The FEC is calculated as follows:
* The FEC Window is divided in two halves, Left and Right, or Fragment A Tiles and Fragment B Tiles.
* The FEC is a bitwise XOR operation between the two halves.
* FEC = Left XOR Right.</t>

<t>SCHC Packet: 250 Bytes
MTU: 50 Bytes
TF = MTU / Tile size = 50 / 10 = 5 tiles per fragment</t>

<figure title="Example of SCHC Packet of 250B fragmented in 5 fragments of 50B, one window and 5 tiles per fragment." anchor="Fig-schc-packet-example1"><artwork><![CDATA[
          +--------------------------------------------+
          |                  SCHC Packet               |
          +--------------------------------------------+
Fragment# | 1      | 2      | 3      | 4      | 5      |
Byte#     | 0-49   | 50-99  | 100-149| 150-199| 200-249|
Tile#     | 24..20 | 19..15 | 14..10 | 9..5   | 4..0   |
Window#   |--------------------- 0 --------------------|
]]></artwork></figure>

<t>In this example, there will be two SCHC FEC Fragments generated after SCHC Fragment 2 and SCHC Fragment 4.</t>

<t>SCHC FEC Fragment 1 will have the following format:</t>

<figure title="The first SCHC FEC Fragment" anchor="Fig-ex1-fragment-1"><artwork><![CDATA[
SCHC FEC Fragment 1

| Rule ID| W |  FCN  |
+--------+---+-------+-------------------------------+
| 30/8   | 0 |  15   | Tiles 24..20 XOR Tiles 19..15 |
+--------+---+-------+-------------------------------+
]]></artwork></figure>

<figure title="The second SCHC FEC Fragment" anchor="Fig-ex1-fragment-2"><artwork><![CDATA[
SCHC FEC Fragment 2

| Rule ID| W |  FCN  |
+--------+---+-------+-------------------------------+
| 30/8   | 0 |  5    | Tiles 14..10 XOR Tiles 9..5   |
+--------+---+-------+-------------------------------+
]]></artwork></figure>

<t>If we illustrate the example based on the SCHC Fragments, we have the following:</t>

<figure title="The contents of the SCHC Packet sent with Fragmentation and FEC Fragments" anchor="Fig-schc-packet-frag_and_fec"><artwork><![CDATA[
          +--------------------------------------------------------------+
          |                         SCHC Packet                          |
          +--------------------------------------------------------------+

SCHC Fragments
Fragment# | 1      | 2      | -      | 3      | 4      | -      | 5      |
Byte#     | 0-49   | 50-99  | -      | 100-149| 150-199| -      | 200-249|
Tile#     | 24..20 | 19..15 | -      | 14..10 | 9..5   | -      | 4..0   |
Window#   |--------------------------- 0 --------------------------------|

SCHC FEC Fragments (SCHC Fragments)
FEC FCN   | -      | -      | 15     | -      | -      | 5      | -      |
FEC Data  | -      | -      | 1 XOR 2| -      | -      | 3 XOR 4| -      |
Window#   |--------------------------- 0 --------------------------------|

]]></artwork></figure>

<figure title="Sequence Diagram of the above example, with no losses on the radio." anchor="Fig-sequence_diag_frag_noloss"><artwork><![CDATA[
  Sender                                   Receiver
     |-----Frag (RuleID 20), W=0, FCN=24----->| Fragment 1
     |-----Frag (RuleID 20), W=0, FCN=19----->| Fragment 2
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 1 tiles XOR Fragment 2 tiles
     |-----Frag (RuleID 20), W=0, FCN=14----->| Fragment 3
     |-----Frag (RuleID 20), W=0, FCN=9------>| Fragment 4
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 3 tiles XOR Fragment 4 tiles
     |-----Frag (RuleID 20), W=0, FCN=4------>| Fragment 5
     |-----Frag (RuleID 20), W=0, FCN=63+RCS->| Integrity check: success
     |<----Frag (RuleID 20), ACK, W=0, C=1 ---| C=1
   (End)
]]></artwork></figure>

<figure title="Sequence Diagram of the above example, with sparce losses." anchor="Fig-sequence_diag_frag_sparce_loss"><artwork><![CDATA[
  Sender                                   Receiver
     |-----Frag (RuleID 20), W=0, FCN=24----->| Fragment 1
     |-----Frag (RuleID 20), W=0, FCN=19--xx  | Fragment 2 lost
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 1 tiles XOR Fragment 2 tiles
     |                                        | Recover Fragment 2 from FEC (Fragment 1 XOR FEC)
     |-----Frag (RuleID 20), W=0, FCN=14--xx  | Fragment 3 lost
     |-----Frag (RuleID 20), W=0, FCN=9------>| Fragment 4
     |                                        | Recover Fragment 3 from FEC (Fragment 4 XOR FEC)
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 3 tiles XOR Fragment 4 tiles
     |-----Frag (RuleID 20), W=0, FCN=4------>| Fragment 5
     |-----Frag (RuleID 20), W=0, FCN=63+RCS->| Integrity check: success
     |<----Frag (RuleID 20), ACK, W=0, C=1 ---| C=1
   (End)
]]></artwork></figure>

<figure title="Sequence Diagram of the above example, with frequent losses." anchor="Fig-sequence_diag_frag_dense_loss"><artwork><![CDATA[
  Sender                                   Receiver
     |-----Frag (RuleID 20), W=0, FCN=24--xx  | Fragment 1 lost
     |-----Frag (RuleID 20), W=0, FCN=19--xx  | Fragment 2 lost
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 1 tiles XOR Fragment 2 tiles
     |                                        | Cannot recover. Discard.
     |-----Frag (RuleID 20), W=0, FCN=14--xx  | Fragment 3 lost
     |-----Frag (RuleID 20), W=0, FCN=9------>| Fragment 4
     |                                        | Recover Fragment 3 from FEC (Fragment 4 XOR FEC)
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 3 tiles XOR Fragment 4 tiles
     |-----Frag (RuleID 20), W=0, FCN=4------>| Fragment 5
     |-----Frag (RuleID 20), W=0, FCN=63+RCS->| Integrity check: failed
     |<----Frag (RuleID 20), ACK, W=0, C=1 ---| C=0, Bitmap: 0000000000111111111111111
     |-----Frag (RuleID 20), W=0, FCN=24--xx  | Fragment 6
     |-----FEC  (RuleID 30), W=0, FCN=15----->| FEC = Fragment 5 tiles XOR Fragment 6 tiles
     |                                        | Recover Fragment 6 from FEC (Fragment 5 XOR FEC)
     |-----Frag (RuleID 20), W=0, FCN=19----->| Fragment 7
     |<----Frag (RuleID 20), ACK, W=0, C=1 ---| C=1
   (End)
]]></artwork></figure>

</section>
<section anchor="refstyle"><name>References</name>

<t>The IETF documents referred to here are <xref target="RFC8724"/>.</t>

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

<t>No security considerations.</t>

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

</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

&RFC8724;


    </references>



<?line 439?>



  </back>

<!-- ##markdown-source:
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
79RflbkYXg0bg9RfjcLPcSnB+x8U1MOiPFAAAA==

-->

</rfc>

