<?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-ietf-schc-schclet-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title>SCHClet - Modular Use of the SCHC Framework</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="Q." surname="Lampin" fullname="Quentin Lampin">
      <organization abbrev="Orange">Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>quentin.lampin@orange.com</email>
      </address>
    </author>
    <author initials="M." surname="Dumay" fullname="Marion Dumay">
      <organization abbrev="Orange">Orange</organization>
      <address>
        <postal>
          <country>France</country>
        </postal>
        <email>marion.dumay@orange.com</email>
      </address>
    </author>

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

    
    
    

    <abstract>


<?line 49?>

<t>This document introduces the concept of a SCHClet: a modular sub-function within the SCHC (Static Context Header Compression) framework. Inspired by chiplet architectures in hardware design, a SCHClet encapsulates a specific SCHC function—such as compression, fragmentation, or acknowledgments—as a self-contained unit. This modularization enables tailored implementations that avoid the overhead of deploying a full SCHC stack.</t>

<t>By decomposing SCHC functionality into SCHClets, the framework becomes more adaptable, extensible, and suitable for a wider range of network environments—including, but not limited to, constrained networks. A system using SCHClets remains compliant with the SCHC framework and can interoperate with a full SCHC implementation, provided compatible configuration parameters are used.</t>

<t>Each SCHClet is defined by the SCHC Profiles and configuration parameters necessary for interoperability. It operates within a single Stratum and a single SCHC Instance. For example, a device may implement only the NoAck fragmentation mode as a standalone SCHClet, potentially with fixed parameters. This modular approach simplifies development, reduces resource demands, and provides a framework for future extensibility of the SCHC architecture.</t>



    </abstract>



  </front>

  <middle>


<?line 58?>

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

<t>The SCHC framework, as defined in RFC8724 and related documents, was originally designed to address the needs of constrained networks by providing efficient header compression and fragmentation. Over time, the addition of new functionalities—such as Compound Acknowledgement and various fragmentation modes—has revealed both the strengths and limitations of a monolithic SCHC implementation.</t>

<t>A SCHClet is a self-contained function of SCHC, which may or may not include all aspects discussed in RFC8724, or other related SCHC RFCs. A SCHClet operates on a single Stratum and on a single SCHC Instance. Notions such as SCHC Stratum Header, SCHC Instance and Discriminator can therefore be omitted in the specification of a SCHClet.</t>

<t>One of the goals for definition of a SCHClet is the fact that parts of SCHC may be applicable to many use-cases, without the need to include the entire SCHC apparatus.  This is done to some extent in some of the SCHC RFC technology profiles (e.g. RFC9011), where there is no rule management for example. There is no rule discovery, etc.  In that sense, these RFCs use SCHC, built on a specific set of SCHClets.</t>

<t>A full SCHC implementation is supposed to implement all features of RFC8724, and possibly all related RFCs. However, there are more and more RFCs that add supplementary functionalities, such as CompoundAck.  In this sense, what is considered a full SCHC implementation today, may not be exhaustive tomorrow. In addition, the SCHC Architecture introduces the notions of SCHC Stratum Header, SCHC Instance and Discriminator, which while useful for a Full SCHC Implementation, could be seen as unnecessary for many of the applications of SCHClets.</t>

<t>A generic SCHC Framework implementation which has all SCHClets implemented MUST be able to interoperate with any SCHClet, provided it has the corresponding configuration. For example, if one IPsec end-point uses a minimal SCHClet implementation, the other end-point may use a full SCHC implementation with the corresponding configuration.</t>

<t>A SCHClet is defined by the SCHC Profiles or configuration parameters that enable interoperability with a Full SCHC Implementation. A SCHClet operates on a single Stratum, within a single SCHC Instance.</t>

<t>For example, the IPsec draft, includes only compression, and with specific compression rules.  It may be seen as a SCHClet, using only SCHC Compression from RFC8724, with only a subset of the MOs/CDAs.</t>

<t>This document describes the SCHClet modular approach to the SCHC Framework.  Each SCHClet represents an autonomous sub- function of the overall SCHC process.  This design enables developers to incorporate only the relevant SCHC functionality for a given application, thereby reducing complexity and resource requirements while retaining the benefits of the SCHC approach. The SCHClet concept provides a way to describe future additions to the SCHC Framework, such as new SCHC Fragmentations, aggregation functions, FEC rule formats.</t>

</section>
<section anchor="terminology"><name>Terminology</name>

<t><list style="symbols">
  <t>SCHClet: A self-contained unit within the SCHC framework that implements a specific SCHC function or a subset of SCHC operations. A SCHClet may implement aspects defined in RFC8724 or other related SCHC RFCs, and MAY be combined with other SCHClets or integrated into a full SCHC implementation.</t>
  <t>Full SCHC Implementation: An implementation that covers all mandatory aspects of SCHC as defined in RFC8724, potentially extended by additional functionalities introduced in subsequent/related RFCs.</t>
  <t>Full SCHC Implementation Configuration (Full Configuration): The set of SCHC Profiles/configurations/parameters supported by a Full SCHC Implementation.</t>
  <t>SCHClet Configuration: A subset of a Full Configuration, which are implemented and supported by a given SCHClet. This may be a single SCHC Profile, or a set of such.</t>
</list></t>

</section>
<section anchor="background-and-motivation"><name>Background and Motivation</name>

<t>SCHC was developed to provide a robust mechanism for header compression and fragmentation in networks with strict resource constraints. The original design focused on a comprehensive implementation that would cover all aspects of SCHC functionality. However, several trends have emerged:</t>

<t><list style="symbols">
  <t>Diverse Use Cases: Different applications may require only a subset of SCHC functionalities. For example, some may only need compression while others might focus solely on fragmentation.</t>
  <t>Evolving Standards: As new RFCs extend SCHC functionality (e.g., Compound Acknowledgement, advanced fragmentation techniques), a monolithic implementation risks becoming overly complex.</t>
  <t>Resource Optimization: In constrained environments, it is beneficial to deploy only the necessary SCHC functions to optimize memory, processing power, and energy usage.</t>
</list></t>

<t>The SCHClet concept addresses these challenges by providing a modular approach that decouples individual SCHC functions from a monolithic architecture.</t>

<section anchor="simplifications-enabled-by-schclets"><name>Simplifications Enabled by SCHClets</name>

<t>By breaking down a SCHC implementation into SCHClets, several simplifications can be realized:</t>

<t><list style="symbols">
  <t>Exclusion of Rule Management:<br />
SCHClets can omit complex rule discovery, installation, and update mechanisms. This results in a leaner protocol that focuses on the core function (e.g., compression) without the overhead of managing multiple rule sets.</t>
  <t>Simplification of Rule Management:<br />
SCHClets can support only a subset of the Rule Management, e.g. read-only access to existing rules.</t>
  <t>Simplification of the use of SCHC Framework:
The notions of SCHC Stratum Header, SCHC Instance, and Discriminator MAY be omitted.</t>
  <t>Targeted Functionality: 
Specific optional functions (such as compound acknowledgments or advanced fragmentation modes) can be encapsulated in separate SCHClets. This approach allows developers to include only the necessary functions for a given use case, simplifying the overall design.</t>
</list></t>

<t>A full SCHC implementation with the right configuration MUST interoperate with a specific SCHClet. The SCHClet in question may not necessarily handle these configurations itself (e.g. it may be a fixed implementation with no parametrization possible on its side), they can be reinterpreted as a full SCHC implementation would. For example, an implementer of a compression SCHClet may never formally use Rule Management, Discriminators, SCHC Header or other notions defined in the SCHC Architecture, these can be inferred by the knowledgeable SCHC practitioner. It is of course RECOMMENDED that a SCHClet provides a complete picture of its use in the context of a full SCHC implementation.</t>

</section>
</section>
<section anchor="formal-schclet-definition-and-validation"><name>Formal SCHClet definition and validation</name>

<t>Formally, a SCHClet is a set of SCHC functions, which when implemented interoperate with a Full SCHC implementation, within a predefined SCHClet Configuration. A SCHClet is therefore fully defined by its corresponding SCHClet Configuration.</t>

<t>Any document specifying a SCHClet MUST include the definition of the supported SCHClet Configuration.</t>

<t>A SCHClet is designed to be interoperable with both minimal and full SCHC implementations. For instance, an endpoint may implement a single SCHClet for a specific function (e.g., IPsec compression) while the corresponding peer uses a comprehensive SCHC implementation that supports multiple SCHClets. Proper configuration and negotiation mechanisms are essential to ensure that both ends correctly interpret the SCHC context.</t>

<t>If a SCHClet is used in a document/specification/implementation, it MAY be cited as: "Using a SCHClet of the SCHC Framework, with the following supported configuration/parameters/profiles: ...".</t>

<section anchor="schc-stratum-header-schc-instance-discriminator"><name>SCHC Stratum Header, SCHC Instance, Discriminator</name>

<t>A SCHClet operates on a single Stratum and on a single SCHC Instance. As such, there is no need to specify SCHC Stratum Header, which is always fully elided. In addition, there is no need for a Discriminator. Documents specifying the use of a SCHClet MAY omit the specification of SCHC Stratum Header, SCHC Instance and/or Discriminator considerations.</t>

<t>It is RECOMMENDED if there are more than one SCHC Instances to use a Full SCHC Implementation within the Full SCHC Architecture. While not recommended, a SCHC Stratum Instance MAY be defined as a SCHClet, and combined with other SCHClets to achieve the functionality of a complete SCHC Stratum implementation.</t>

</section>
</section>
<section anchor="use-cases-and-examples"><name>Use Cases and Examples</name>

<section anchor="ipsec-compression-schclet"><name>IPsec Compression SCHClet</name>

<t>An illustrative example is an IPsec draft that leverages SCHC compression:</t>

<t><list style="symbols">
  <t>Functionality: This SCHClet implements only the compression rules defined in RFC8724 and a limited set of Context-Dependent Attributes (CoDAs).</t>
  <t>Deployment: The implementation is tailored for IPsec environments, focusing solely on compression without engaging in rule management or SCHC Stratum functions.</t>
  <t>Interoperability: Although minimal, this SCHClet must be configured to operate alongside endpoints that might use full SCHC implementations.</t>
</list></t>

<t>As an example, Diet-ESP, as defined in <eref target="https://datatracker.ietf.org/doc/html/draft-ietf-IPsecme-diet-esp-05">draft-ietf-IPsecme-diet-esp-05</eref>, represents a minimal, streamlined version of the ESP protocol designed for constrained environments. By integrating SCHClets, Diet-ESP can leverage SCHC’s compression or fragmentation capabilities in a modular manner, without needing to implement a full SCHC implementation.</t>

</section>
<section anchor="fragmentation-schclets"><name>Fragmentation SCHClets</name>

<t>Fragmentation is a core aspect of SCHC, with multiple modes available:</t>

<t><list style="symbols">
  <t>NoAck Fragmentation SCHClet: Implements a fragmentation scheme without acknowledgement, suitable for low-overhead scenarios.</t>
  <t>Ack-On-Err Fragmentation SCHClet: Incorporates error recovery mechanisms by acknowledging only when errors occur.</t>
  <t>Ack-Always Fragmentation SCHClet: Provides continuous acknowledgement for reliable communication, albeit with increased overhead.</t>
</list></t>

<t>Developers may choose to implement one or more of these SCHClets based on application requirements and network conditions.</t>

</section>
<section anchor="example-minimal-fixed-field-compression-schclet"><name>Example: Minimal Fixed-Field Compression SCHClet</name>

<t>The goal of this example is to show how a SCHClet may be a single, constant-time function, of extreme simplicity - but still interoperable with a Full SCHC Implementation.</t>

<t>The example is one that compresses only constant fields in an IPv6 header, under the assumption that specific values are fixed and known a priori at both endpoints. This SCHClet is fully stateless, does not require (nor support) rule management, and can be applied directly at the byte level.</t>

<t>This example is deliberately minimal, to demonstrate how a fully standards-compliant SCHClet can be implemented with only a few lines of code when the deployment assumptions are strongly constrained.</t>

<section anchor="functionality"><name>Functionality</name>

<t>This SCHClet targets the first four bytes of the IPv6 header, which correspond to:</t>

<t><list style="symbols">
  <t>Version (4 bits): 6</t>
  <t>Traffic Class (8 bits): 0</t>
  <t>Flow Label (20 bits): 0</t>
</list></t>

<t>When these fields are known to be constant, they may be fully elided. The SCHClet performs a prefix match against the fixed 4-byte sequence 0x60 00 00 00, and if matched, removes it during compression and restores it during decompression.</t>

<t>This fixed-function approach is applicable in many constrained deployments, particularly when all traffic is known to conform to a common baseline IPv6 configuration.</t>

<t>To simplify the example, we use a RuleID of length 8 bits, with two rules:</t>

<t><list style="symbols">
  <t>RuleID 01100000 (0x60) - "pass-through", which elides the first byte (which is 0x60), but then adds the ruleID (which is 0x60), effectively making the compression operation a no-operation.</t>
  <t>RuleID 11111111 (0xFF) - "compression", which elides the first 4 bytes</t>
</list></t>

<t>Note that the choice of RuleIDs is wasteful, in the sense that only one bit would be sufficient. This is done to illustrate the simplicity of the implementation, e.g. the code below doesn't require bit-shifting operations. Also note, that in the code we "change" the buffer with the packet to be compressed, which is done also for the sake of simplicity, but is not a recommended design pattern.</t>

<t>Also note, that this artificial example doesn't handle the case where a protocol version 1111 with following bits as 1111 is provided to the compressor/decompressor. That may, or may not be a problem, e.g. if it is known that there is only IPv6 traffic processed through this SCHClet, this is not an issue.</t>

<t>Here is the SCHC Context, which enables interoperability between this SCHClet and a Full SCHC Implementation:</t>

<figure><sourcecode type="JSON"><![CDATA[
{
  "schc": {
    "rule": [
      {
        "rule-id-value": 0x60,
        "rule-id-length": 8,
        "nature-compression": {
          "field": [
            {
              "field-id": "fid-ipv6-version",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 6
              },
              "matching-operator": "mo-equal",
              "comp-decomp-action": "cda-not-sent"
            },
            {
              "field-id": "fid-ipv6-trafficclass",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 0
              },
              "matching-operator": "mo-msb",
              "matching-operator-value":
              {
                  "index": 0, 
                  "value": 4
              },
              "comp-decomp-action": "cda-lsb",
              "comp-decomp-action-value":
              {
                  "index": 0, 
                  "value": 4
              }
            },
            {
              "field-id": "fid-ipv6-flowlabel",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 0
              },
              "matching-operator": "mo-equal",
              "comp-decomp-action": "cda-value-sent"
            }
          ]
        }
      },
      {
        "rule-id-value": 0xFF,
        "rule-id-length": 8,
        "nature-compression": {
          "field": [
            {
              "field-id": "fid-ipv6-version",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 6
              },
              "matching-operator": "mo-equal",
              "comp-decomp-action": "cda-not-sent"
            },
            {
              "field-id": "fid-ipv6-trafficclass",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 0
              },
              "matching-operator": "mo-equal",
              "comp-decomp-action": "cda-not-sent"
            },
            {
              "field-id": "fid-ipv6-flowlabel",
              "field-position": 1,
              "direction": "bi",
              "target-value": {
                  "index": 0, 
                  "value": 0
              },
              "matching-operator": "mo-equal",
              "comp-decomp-action": "cda-not-sent"
            }
          ]
        }
      }
    ]
  }
}
]]></sourcecode></figure>

</section>
<section anchor="implementation"><name>Implementation</name>
<t>The following C implementation demonstrates this SCHClet in practice:</t>

<figure><sourcecode type="C"><![CDATA[
#include <stdint.h>
#include <stdio.h>
#include <string.h>

#define RULE_ID_PASSTHROUGH 0x60  // 01100000
#define RULE_ID_COMPRESSED  0xFF  // 11111111

// Compress packet in-place or pass through, based on content.
// Returns pointer to compressed packet and sets output length.
const uint8_t* compress_ipv6(uint8_t *packet, size_t in_len, size_t *out_len) {
    // Match compressible pattern (Version, TC, FL = 0)
    if (in_len >= 4 && packet[0] == 0x60 && packet[1] == 0x00 &&
        packet[2] == 0x00 && packet[3] == 0x00) {
        
        // We "compress" by replacing the 4th byte with RuleID
        packet[3] = RULE_ID_COMPRESSED;
        *out_len = in_len - 3;
        return &packet[3];
    }

    // Pass-through: return original packet, unchanged
    *out_len = in_len;
    return packet;
}

size_t decompress_ipv6(const uint8_t *compressed, size_t comp_len, uint8_t *out_buf, size_t out_max) {
    if (comp_len == 0 || out_max < comp_len + 3) return 0;

    if (compressed[0] == RULE_ID_COMPRESSED) {
        // Insert fixed prefix before compressed payload
        out_buf[0] = 0x60;
        out_buf[1] = 0x00;
        out_buf[2] = 0x00;
        out_buf[3] = 0x00;
        memcpy(out_buf + 4, compressed + 1, comp_len - 1);
        return comp_len - 1 + 4;
    }

    // Rule ID is not compressed — assume passthrough
    memcpy(out_buf, compressed, comp_len);
    return comp_len;
}

int main() {
    uint8_t packet[40] = {
        0x60, 0x00, 0x00, 0x00,  // Compressible prefix
        0x3A, 0x40               // Next header, hop limit...
    };
    size_t in_len = 40;
    size_t comp_len;

    const uint8_t *compressed = compress_ipv6(packet, in_len, &comp_len);
    if (!compressed) {
        printf("Compression failed.\n");
        return 1;
    }

    printf("Compressed length: %zu\n", comp_len);
    printf("Compressed first byte: 0x%02X\n", compressed[0]);

    uint8_t restored[64];
    size_t restored_len = decompress_ipv6(compressed, comp_len, restored, sizeof(restored));

    printf("Decompressed first 4 bytes: %02X %02X %02X %02X\n",
           restored[0], restored[1], restored[2], restored[3]);

    return 0;
}
]]></sourcecode></figure>

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

<t>TBD.</t>

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

<t>This document does not require any immediate IANA actions.</t>

</section>


  </middle>

  <back>


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

&RFC8724;


    </references>




  </back>

<!-- ##markdown-source:
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
Q04AAA==

-->

</rfc>

