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

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc toc="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-lpwan-schc-yang-data-model-14" category="std">

  <front>
    <title abbrev="LPWAN SCHC YANG module">Data Model for Static Context Header Compression (SCHC)</title>

    <author initials="A." surname="Minaburo" fullname="Ana Minaburo">
      <organization>Acklio</organization>
      <address>
        <postal>
          <street>1137A avenue des Champs Blancs</street>
          <city>35510 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>ana@ackl.io</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>Institut MINES TELECOM; IMT Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street> <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>

    <date year="2022" month="July" day="11"/>

    
    <workgroup>lpwan Working Group</workgroup>
    

    <abstract>


<t>This document describes a YANG data model for the SCHC (Static Context Header Compression) 
compression and fragmentation rules.</t>



    </abstract>


  </front>

  <middle>


<section anchor="Introduction" title="Introduction">

<t>SCHC is a compression and fragmentation mechanism for constrained networks defined in <xref target="RFC8724"/>.
It is based on a static context shared by two entities at the boundary of the constrained network.
<xref target="RFC8724"/> provides a non formal representation of the rules used either for compression/decompression (or C/D)
or fragmentation/reassembly (or F/R). The goal of this document is to formalize the description of the rules to offer:</t>

<t><list style="symbols">
  <t>the same definition on both ends, even if the internal representation is different.</t>
  <t>an update of the other end to set up some specific values (e.g. IPv6 prefix, destination address,…)</t>
  <t>…</t>
</list></t>

<t><xref target="I-D.ietf-lpwan-architecture"/> illustrates the exchange of rules using the YANG data model.</t>

<t>This document defines a YANG module <xref target="RFC7950"/> to represent both compression and fragmentation rules, which leads to common representation for values for all the rules elements.</t>

</section>
<section anchor="requirements-language" title="Requirements Language">

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

</section>
<section anchor="schc-rules" title="SCHC rules">

<t>This document defines a YANG module to represent both compression and fragmentation rules, which leads to common representation for values for all the rules elements.</t>

<t>SCHC compression is generic, the main mechanism does not refer
to a specific protocol. Any header field is abstracted through an ID, a position, a direction, and a value that can be a numerical
value or a string. <xref target="RFC8724"/> and <xref target="RFC8824"/> specify fields for IPv6 <xref target="RFC8200"/>, UDP<xref target="RFC0768"/>, CoAP <xref target="RFC7252"/> including options definied for no serveur response  <xref target="RFC7967"/> and OSCORE <xref target="RFC8613"/>. For the latter <xref target="RFC8824"/> splits this field into sub-fields.</t>

<t>SCHC fragmentation requires a set of common parameters that are included in a rule. These parameters are defined in <xref target="RFC8724"/>.</t>

<t>The YANG data model allows to select the compression or the fragmentation using the feature command.</t>

<section anchor="comp_types" title="Compression Rules">

<t><xref target="RFC8724"/> proposes a non formal representation of the compression rule.
A compression context for a device is composed of a set of rules. Each rule contains information to
describe a specific field in the header to be compressed.</t>

<figure title="Compression Decompression Context" anchor="Fig-ctxt"><artwork><![CDATA[
  +-----------------------------------------------------------------+
  |                      Rule N                                     |
 +-----------------------------------------------------------------+|
 |                    Rule i                                       ||
+-----------------------------------------------------------------+||
|  (FID)            Rule 1                                        |||
|+-------+--+--+--+------------+-----------------+---------------+|||
||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+--+------------+-----------------+---------------+|||
||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+--+------------+-----------------+---------------+|||
||...    |..|..|..|   ...      | ...             | ...           ||||
|+-------+--+--+--+------------+-----------------+---------------+||/
||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||
|+-------+--+--+--+------------+-----------------+---------------+|/
|                                                                 |        
\-----------------------------------------------------------------/  

]]></artwork></figure>

</section>
<section anchor="identifier-generation" title="Identifier generation">

<t>Identifier used in the SCHC YANG data model are from the identityref statement to ensure to be globally unique and be easily augmented if needed.  The principle to define a new type based on a group of identityref is the following:</t>

<t><list style="symbols">
  <t>define a main identity ending with the keyword base-type.</t>
  <t>derive all the identities used in the Data Model from this base type.</t>
  <t>create a typedef from this base type.</t>
</list></t>

<t>The example (<xref target="Fig-identityref"/>) shows how an identityref is created for RCS (Reassembly Check Sequence) algorithms used during SCHC fragmentation.</t>

<figure title="Principle to define a type based on identityref." anchor="Fig-identityref"><artwork><![CDATA[
 // -- RCS algorithm types

  identity rcs-algorithm-base-type {
    description
      "Identify which algorithm is used to compute RCS.
       The algorithm also defines the size of the RCS field.";
  }

  identity rcs-RFC8724 {
    base rcs-algorithm-base-type;
    description
      "CRC 32 defined as default RCS in RFC8724. RCS is 4 byte-long";
  }

  typedef rcs-algorithm-type {
    type identityref {
      base rcs-algorithm-base-type;
    }
    description
      "type used in rules.";
  }
]]></artwork></figure>

</section>
<section anchor="convention-for-field-identifier" title="Convention for Field Identifier">

<t>In the process of compression, the headers of the original packet are first parsed to create a list of fields. This list of fields is matched against the rules to find the appropriate rule and apply compression.  <xref target="RFC8724"/>  does not state how the field ID value is constructed. 
In examples, identification is done through a string indexed by the protocol name (e.g. IPv6.version, CoAP.version,…).</t>

<t>The current YANG data model includes fields definitions found in <xref target="RFC8724"/>, <xref target="RFC8824"/>.</t>

<t>Using the YANG data model, each field MUST be identified through a global YANG identityref.<vspace />
A YANG field ID for the protocol is always derived from the fid-base-type. Then an identity 
for each protocol is specified using the naming convention fid-&lt;&lt;protocol name»-base-type. 
All possible fields for this protocol MUST derive from the protocol identity. The naming 
convention is “fid” followed by the protocol name and the field name. If a field has 
to be divided into sub-fields, the field identity serves as a base.</t>

<t>The full field-id definition is found in <xref target="annexA"/>. A type is defined for IPv6 protocol, and each 
field is based on it. Note that the DiffServ bits derives from the Traffic Class identity.</t>

</section>
<section anchor="convention-for-field-length" title="Convention for Field length">

<t>Field length is either an integer giving the size of a field in bits or a specific function. <xref target="RFC8724"/> defines the
“var” function which allows variable length fields (whose length is expressed in bytes) and <xref target="RFC8824"/> defines the “tkl” function for managing the CoAP
Token length field.</t>

<t>The naming convention is “fl” followed by the function name.</t>

<t>The field length function can be defined as an identityref as described in <xref target="annexA"/>. Therefore, the type for field length is a union between an integer giving in bits the size of the length and the identityref.</t>

</section>
<section anchor="convention-for-field-position" title="Convention for Field position">

<t>Field position is a positive integer which gives the position of a field, the default value is 1, and incremented at each repetition. 
value 0 indicates that the position is not important and is not considered during the rule selection process.</t>

<t>Field position is a positive integer. The type is an uint8.</t>

</section>
<section anchor="convention-for-direction-indicator" title="Convention for Direction Indicator">

<t>The Direction Indicator (di) is used to tell if a field appears in both direction (Bi) or only uplink (Up) or Downlink (Dw). The naming convention is “di” followed by the Direction Indicator name.</t>

<t>The type is “di-type”.</t>

</section>
<section anchor="target_value" title="Convention for Target Value">

<t>The Target Value is a list of binary sequences of any length, aligned to the left. In the rule, the structure will be used as a list, with index as a key. The highest index value is used to compute the size of the index sent in residue for the match-mapping CDA (Compression Decompression Action). The index allows to specify several values:</t>

<t><list style="symbols">
  <t>For Equal and LSB, Target Value contains a single element. Therefore, the index is set to 0.</t>
  <t>For match-mapping, Target Value can contain several elements. Index values MUST start from 0 and MUST be contiguous.</t>
</list></t>

<t>If the header field contains a text, the binary sequence uses the same enconding.</t>

</section>
<section anchor="convention-for-matching-operator" title="Convention for Matching Operator">

<t>Matching Operator (MO) is a function applied between a field value provided by the parsed header and the target value. <xref target="RFC8724"/> defines 4 MO.</t>

<t>The naming convention is “mo” followed by the MO name.</t>

<t>The type is “mo-type”</t>

<section anchor="matching-operator-arguments" title="Matching Operator arguments">

<t>They are viewed as a list, built with a tv-struct (see chapter <xref target="target_value"/>).</t>

</section>
</section>
<section anchor="convention-for-compression-decompression-actions" title="Convention for Compression Decompression Actions">

<t>Compression Decompression Action (CDA) identifies the function to use for compression or decompression. 
<xref target="RFC8724"/> defines 6 CDA.</t>

<t>The naming convention is “cda” followed by the CDA name.</t>

<section anchor="compression-decompression-action-arguments" title="Compression Decompression Action arguments">

<t>Currently no CDA requires arguments, but in the future some CDA may require one or several arguments.
They are viewed as a list, of target-value type.</t>

</section>
</section>
<section anchor="frag_types" title="Fragmentation rule">

<t>Fragmentation is optional in the data model and depends on the presence of the “fragmentation” feature.</t>

<t>Most of the fragmentation parameters are listed in Annex D of <xref target="RFC8724"/>.</t>

<t>Since fragmentation rules work for a specific direction, they MUST contain a mandatory direction indicator.
The type is the same as the one used in compression entries, but bidirectional MUST NOT be used.</t>

<section anchor="fragmentation-mode" title="Fragmentation mode">

<t><xref target="RFC8724"/> defines 3 fragmentation modes:</t>

<t><list style="symbols">
  <t>No Ack: this mode is unidirectionnal, no acknowledgment is sent back.</t>
  <t>Ack Always: each fragmentation window must be explicitly acknowledged before going to the next.</t>
  <t>Ack on Error:  A window is acknowledged only when the receiver detects some missing fragments.</t>
</list></t>

<t>The type is “fragmentation-mode-type”. 
The naming convention is “fragmentation-mode” followed by the fragmentation mode name.</t>

</section>
<section anchor="fragmentation-header" title="Fragmentation Header">

<t>A data fragment header, starting with the rule ID can be sent on the fragmentation direction. 
<xref target="RFC8724"/> indicates that the SCHC header may be composed of (cf. <xref target="Fig-frag-header-8724"/>):</t>

<t><list style="symbols">
  <t>a Datagram Tag (Dtag) identifying the datagram being fragmented if the fragmentation applies concurrently on several datagrams. This field in optional and its length is defined by the rule.</t>
  <t>a Window (W) used in Ack-Always and Ack-on-Error modes. In Ack-Always, its size is 1. In Ack-on-Error, it depends on the rule. This field is not needed in No-Ack mode.</t>
  <t>a Fragment Compressed Number (FCN) indicating the fragment/tile position within the window. This field is mandatory on all modes defined in <xref target="RFC8724"/>, its size is defined by the rule.</t>
</list></t>

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

]]></artwork></figure>

</section>
<section anchor="last-fragment-format" title="Last fragment format">

<t>The last fragment of a datagram is sent with an RCS (Reassembly Check Sequence) field to detect residual 
transmission error and possible losses in the last window. <xref target="RFC8724"/> defines a single algorithm based on Ethernet 
CRC computation.</t>

<t>The naming convention is “rcs” followed by the algorithm name.</t>

<t>For Ack-on-Error mode, the All-1 fragment may just contain the RCS or can include a tile. The parameters defines the 
behavior:</t>

<t><list style="symbols">
  <t>all-1-data-no: the last fragment contains no data, just the RCS</t>
  <t>all-1-data-yes: the last fragment includes a single tile and the RCS</t>
  <t>all-1-data-sender-choice: the last fragment may or may not contain a single tile. The receiver can detect if a tile is present.</t>
</list></t>

<t>The naming convention is “all-1-data” followed by the behavior identifier.</t>

</section>
<section anchor="acknowledgment-behavior" title="Acknowledgment behavior">

<t>The acknowledgment fragment header goes in the opposite direction of data. <xref target="RFC8724"/> defines the header, composed of (see <xref target="Fig-frag-ack"/>):</t>

<t><list style="symbols">
  <t>a Dtag (if present).</t>
  <t>a mandatory window as in the data fragment.</t>
  <t>a C bit giving the status of RCS validation.  In case of failure, a bitmap follows, indicating the received tile.</t>
</list></t>

<figure title="Acknowledgment fragment header for RFC8724" anchor="Fig-frag-ack"><artwork><![CDATA[
|--- SCHC ACK Header ----|
         |-- T --|-M-| 1 |
+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~
| RuleID |  DTag | W |C=1| padding as needed                (success)
+-- ... -+- ... -+---+---+~~~~~~~~~~~~~~~~~~

+-- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~
| RuleID |  DTag | W |C=0|Compressed Bitmap| pad. as needed (failure)
+-- ... -+- ... -+---+---+------ ... ------+~~~~~~~~~~~~~~~

]]></artwork></figure>

<t>For Ack-on-Error, SCHC defines when an acknowledgment can be sent. This can be at any time defined by the layer 2, at the end of a window (FCN all-0) 
or as a response to receiving the last fragment (FCN all-1). The naming convention is “ack-behavior” followed by the algorithm name.</t>

</section>
<section anchor="timer-values" title="Timer values">

<t>The state machine requires some common values to handle correctly fragmentation.</t>

<t><list style="symbols">
  <t>retransmission-timer gives the duration before sending an ack request (cf. section 8.2.2.4. of <xref target="RFC8724"/>). If specified, value must be strictly positive.</t>
  <t>inactivity-timer gives  the duration before aborting a fragmentation session (cf. section 8.2.2.4. of <xref target="RFC8724"/>). The value 0 explicitly indicates that this timer is disabled.</t>
</list></t>

<t><xref target="RFC8724"/> do not specified any range for these timers. <xref target="RFC9011"/> recommends a duration of 12 hours. In fact, the value range sould be between milliseconds for real time systems to several days. To allow a large range of applications, two parameters must be specified:</t>

<t><list style="symbols">
  <t>the duration of a tick. It is computed by this formula 2^tick-duration/10^6. When tick-duration is set to 0, the unit is the microsecond. The default value of 20 leads to a unit of 1.048575 second. A value of 32 leads to a tick duration of about 1 hour 11 minutes.</t>
  <t>the number of ticks in the predefined unit. With the default tick-duration value of 20, the timers can cover a range between 1.0 sec and 19 hours covering <xref target="RFC9011"/> recommandation.</t>
</list></t>

</section>
<section anchor="fragmentation-parameter" title="Fragmentation Parameter">

<t>The SCHC fragmentation protocol specifies the  the number of attempts before aborting through the parameter:</t>

<t><list style="symbols">
  <t>max-ack-requests  (cf. section 8.2.2.4. of <xref target="RFC8724"/>).</t>
</list></t>

</section>
<section anchor="layer-2-parameters" title="Layer 2 parameters">

<t>The data model includes two parameters needed for fragmentation:</t>

<t><list style="symbols">
  <t>l2-word-size: <xref target="RFC8724"/> base fragmentation, in bits,  on a layer 2 word which can be of any length. The default value is 8 and correspond 
to the default value for byte aligned layer 2. A value of 1 will indicate that there is no alignment and no need for padding.</t>
  <t>maximum-packet-size: defines the maximum size of a uncompressed datagram. By default, the value is set to 1280 bytes.</t>
</list></t>

<t>They are defined as unsigned integer, see <xref target="annexA"/>.</t>

</section>
</section>
</section>
<section anchor="rule-definition" title="Rule definition">

<t>A rule is idenfied by a unique rule identifier (rule ID) comprising both a Rule ID value and a Rule ID length. 
The YANG grouping rule-id-type defines the structure used to represent a rule ID. A length of 0 is allowed to represent an implicit rule.</t>

<t>Three types of rules are defined in <xref target="RFC8724"/>:</t>

<t><list style="symbols">
  <t>Compression: a compression rule is associated with the rule ID.</t>
  <t>No compression: this identifies the default rule used to send a packet in extenso when no compression rule was found (see <xref target="RFC8724"/> section 6).</t>
  <t>Fragmentation: fragmentation parameters are associated with the rule ID. Fragmentation is optional and feature “fragmentation” should be set.</t>
</list></t>

<t>To access a specific rule, the rule ID length and value are used as a key. The rule is either
a compression or a fragmentation rule.</t>

<section anchor="compression-rule" title="Compression rule">

<t>A compression rule is composed of entries describing its processing. An entry  contains all the information defined in <xref target="Fig-ctxt"/> with the types defined above.</t>

<t>The compression rule described <xref target="Fig-ctxt"/> is defined by compression-content. It defines a list of
compression-rule-entry, indexed by their field id, position and direction. The compression-rule-entry 
element represent a line of the table <xref target="Fig-ctxt"/>. Their type reflects the identifier types defined in
<xref target="comp_types"/></t>

<t>Some checks are performed on the values:</t>

<t><list style="symbols">
  <t>target value must be present for MO different from ignore.</t>
  <t>when MSB MO is specified, the matching-operator-value must be present</t>
</list></t>

</section>
<section anchor="fragmentation-rule" title="Fragmentation rule">

<t>A Fragmentation rule is composed of entries describing the protocol behavior. Some on them are numerical entries,
others are identifiers defined in <xref target="frag_types"/>.</t>

</section>
<section anchor="yang-tree" title="YANG Tree">

<figure anchor="Fig-model-overview"><artwork><![CDATA[
module: ietf-schc
 +-rw schc
   +-rw rule* [rule-id-value rule-id-length]
      +-rw rule-id-value                   uint32
      +-rw rule-id-length                  uint8
      +-rw (nature)?
        +-:(fragmentation) {fragmentation}?
        | +-rw fragmentation-mode        schc:fragmentation-mode-type
        | +-rw l2-word-size?             uint8
        | +-rw direction                 schc:di-type
        | +-rw dtag-size?                uint8
        | +-rw w-size?                   uint8
        | +-rw fcn-size                  uint8
        | +-rw rcs-algorithm?            rcs-algorithm-type
        | +-rw maximum-packet-size?      uint16
        | +-rw window-size?              uint16
        | +-rw max-interleaved-frames?   uint8
        | +-rw inactivity-timer
        | | +-rw ticks-duration?   uint8
        | | +-rw ticks-numbers?    uint16
        | +-rw retransmission-timer
        | | +-rw ticks-duration?   uint8
        | | +-rw ticks-numbers?    uint16
        | +-rw max-ack-requests?         uint8
        | +-rw (mode)?
        |   +-:(no-ack)
        |   +-:(ack-always)
        |   +-:(ack-on-error)
        |      +--rw tile-size?          uint8
        |      +--rw tile-in-All1?       schc:all1-data-type
        |     +--rw ack-behavior?       schc:ack-behavior-type
        +-:(compression) {compression}?
        | +-rw entry* [field-id field-position direction-indicator]
        |   +-rw field-id                    schc:fid-type
        |   +-rw field-length                schc:fl-type
        |   +-rw field-position              uint8
        |   +-rw direction-indicator         schc:di-type
        |   +-rw target-value* [index]
        |   |  +-rw value?   binary
        |   |  +-rw index    uint16
        |   +-rw matching-operator           schc:mo-type
        |   +-rw matching-operator-value* [index]
        |   |  +-rw value?   binary
        |   |  +-rw index    uint16
        |   +-rw comp-decomp-action          schc:cda-type
        |   +-rw comp-decomp-action-value* [index]
        |      +-rw value?   binary
        |      +-rw index    uint16
        +-:(no-compression)
]]></artwork></figure>

</section>
</section>
<section anchor="annexA" title="YANG Module">

<figure anchor="Fig-schc"><artwork><![CDATA[
<CODE BEGINS> file "ietf-schc@2022-07-11.yang"
module ietf-schc {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-schc";
  prefix schc;

  organization
    "IETF IPv6 over Low Power Wide-Area Networks (lpwan) working
     group";
  contact
    "WG Web:   <https://datatracker.ietf.org/wg/lpwan/about/>
     WG List:  <mailto:p-wan@ietf.org>
     Editor:   Laurent Toutain
       <mailto:laurent.toutain@imt-atlantique.fr>
     Editor:   Ana Minaburo
       <mailto:ana@ackl.io>";
  description
    "
     Copyright (c) 2021 IETF Trust and the persons identified as
     authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject to
     the license terms contained in, the Simplified BSD License set
     forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).

     This version of this YANG module is part of RFC XXXX
     (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
     for full legal notices.

     The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
     NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
     'MAY', and 'OPTIONAL' in this document are to be interpreted as
     described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
     they appear in all capitals, as shown here.

     ***************************************************************

     Generic Data model for Static Context Header Compression Rule
     for SCHC, based on RFC 8724 and RFC8824. Include compression,
     no compression and fragmentation rules.

     This module is a YANG model for SCHC rules (RFC 8724 and
     RFC8824). RFC 8724 describes compression rules in a abstract
     way through a table.

|-----------------------------------------------------------------|
|  (FID)            Rule 1                                        |
|+-------+--+--+--+------------+-----------------+---------------+|
||Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
|+-------+--+--+--+------------+-----------------+---------------+|
||Field 2|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
|+-------+--+--+--+------------+-----------------+---------------+|
||...    |..|..|..|   ...      | ...             | ...           ||
|+-------+--+--+--+------------+-----------------+---------------+|
||Field N|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||
|+-------+--+--+--+------------+-----------------+---------------+|
|-----------------------------------------------------------------|

     This module proposes a global data model that can be used for
     rule exchanges or modification. It proposes both the data model
     format and the global identifiers used to describe some
     operations in fields.
     This data model applies to both compression and fragmentation.";

  revision 2022-07-11 {
    description
      "Initial version from RFC XXXX ";
    reference
      "RFC XXX: Data Model for Static Context Header Compression
       (SCHC)";
  }

  feature compression {
    description
      "SCHC compression capabilities are taken into account";
  }

  feature fragmentation {
    description
      "SCHC fragmentation capabilities are taken into account";
  }

  // -------------------------
  //  Field ID type definition
  //--------------------------
  // generic value TV definition 

  identity fid-base-type {
    description
      "Field ID base type for all fields";
  }

  identity fid-ipv6-base-type {
    base fid-base-type;
    description
      "Field ID base type for IPv6 headers described in RFC 8200";
    reference
      "RFC 8200 Internet Protocol, Version 6 (IPv6) Specification";
  }

  identity fid-ipv6-version {
    base fid-ipv6-base-type;
    description
      "IPv6 version field from RFC8200";
  }

  identity fid-ipv6-trafficclass {
    base fid-ipv6-base-type;
    description
      "IPv6 Traffic Class field from RFC8200";
  }

  identity fid-ipv6-trafficclass-ds {
    base fid-ipv6-trafficclass;
    description
      "IPv6 Traffic Class field from RFC8200,
       DiffServ field from RFC3168";
  }

  identity fid-ipv6-trafficclass-ecn {
    base fid-ipv6-trafficclass;
    description
      "IPv6 Traffic Class field from RFC8200,
       ECN field from RFC3168";
  }

  identity fid-ipv6-flowlabel {
    base fid-ipv6-base-type;
    description
      "IPv6 Flow Label field from RFC8200";
  }

  identity fid-ipv6-payload-length {
    base fid-ipv6-base-type;
    description
      "IPv6 Payload Length field from RFC8200";
  }

  identity fid-ipv6-nextheader {
    base fid-ipv6-base-type;
    description
      "IPv6 Next Header field from RFC8200";
  }

  identity fid-ipv6-hoplimit {
    base fid-ipv6-base-type;
    description
      "IPv6 Next Header field from RFC8200";
  }

  identity fid-ipv6-devprefix {
    base fid-ipv6-base-type;
    description
      "corresponds to either the source address or the destination
       address prefix of RFC 8200. Depending if it is
       respectively an uplink or a downlink message.";
  }

  identity fid-ipv6-deviid {
    base fid-ipv6-base-type;
    description
      "corresponds to either the source address or the destination
       address prefix of RFC 8200. Depending if it is respectively
       an uplink or a downlink message.";
  }

  identity fid-ipv6-appprefix {
    base fid-ipv6-base-type;
    description
      "corresponds to either the source address or the destination
       address prefix of RFC 8200. Depending if it is respectively
       a downlink or an uplink message.";
  }

  identity fid-ipv6-appiid {
    base fid-ipv6-base-type;
    description
      "corresponds to either the source address or the destination
       address prefix of RFC 8200. Depending if it is respectively
       a downlink or an uplink message.";
  }

  identity fid-udp-base-type {
    base fid-base-type;
    description
      "Field ID base type for UDP headers described in RFC 768";
    reference
      "RFC768 User Datagram Protocol";
  }

  identity fid-udp-dev-port {
    base fid-udp-base-type;
    description
      "UDP source or destination port from RFC 768, if uplink or
       downlink communication, respectively.";
  }

  identity fid-udp-app-port {
    base fid-udp-base-type;
    description
      "UDP destination or source port from RFC 768, if uplink or
       downlink communication, respectively.";
  }

  identity fid-udp-length {
    base fid-udp-base-type;
    description
      "UDP length from RFC 768";
  }

  identity fid-udp-checksum {
    base fid-udp-base-type;
    description
      "UDP length from RFC 768";
  }

  identity fid-coap-base-type {
    base fid-base-type;
    description
      "Field ID base type for UDP headers described in RFC 7252";
    reference
      "RFC 7252 The Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-version {
    base fid-coap-base-type;
    description
      "CoAP version from RFC 7252";
  }

  identity fid-coap-type {
    base fid-coap-base-type;
    description
      "CoAP type from RFC 7252";
  }

  identity fid-coap-tkl {
    base fid-coap-base-type;
    description
      "CoAP token length from RFC 7252";
  }

  identity fid-coap-code {
    base fid-coap-base-type;
    description
      "CoAP code from RFC 7252";
  }

  identity fid-coap-code-class {
    base fid-coap-code;
    description
      "CoAP code class from RFC 7252";
  }

  identity fid-coap-code-detail {
    base fid-coap-code;
    description
      "CoAP code detail from RFC 7252";
  }

  identity fid-coap-mid {
    base fid-coap-base-type;
    description
      "CoAP message ID from RFC 7252";
  }

  identity fid-coap-token {
    base fid-coap-base-type;
    description
      "CoAP token from RFC 7252";
  }

  identity fid-coap-option-if-match {
    base fid-coap-base-type;
    description
      "CoAP option If-Match from RFC 7252";
  }

  identity fid-coap-option-uri-host {
    base fid-coap-base-type;
    description
      "CoAP option URI-Host from RFC 7252";
  }

  identity fid-coap-option-etag {
    base fid-coap-base-type;
    description
      "CoAP option Etag from RFC 7252";
  }

  identity fid-coap-option-if-none-match {
    base fid-coap-base-type;
    description
      "CoAP option if-none-match from RFC 7252";
  }

  identity fid-coap-option-observe {
    base fid-coap-base-type;
    description
      "CoAP option Observe from RFC 7641";
  }

  identity fid-coap-option-uri-port {
    base fid-coap-base-type;
    description
      "CoAP option Uri-Port from RFC 7252";
  }

  identity fid-coap-option-location-path {
    base fid-coap-base-type;
    description
      "CoAP option Location-Path from RFC 7252";
  }

  identity fid-coap-option-uri-path {
    base fid-coap-base-type;
    description
      "CoAP option Uri-Path from RFC 7252";
  }

  identity fid-coap-option-content-format {
    base fid-coap-base-type;
    description
      "CoAP option Content Format from RFC 7252";
  }

  identity fid-coap-option-max-age {
    base fid-coap-base-type;
    description
      "CoAP option Max-Age from RFC 7252";
  }

  identity fid-coap-option-uri-query {
    base fid-coap-base-type;
    description
      "CoAP option Uri-Query from RFC 7252";
  }

  identity fid-coap-option-accept {
    base fid-coap-base-type;
    description
      "CoAP option Accept from RFC 7252";
  }

  identity fid-coap-option-location-query {
    base fid-coap-base-type;
    description
      "CoAP option Location-Query from RFC 7252";
  }

  identity fid-coap-option-block2 {
    base fid-coap-base-type;
    description
      "CoAP option Block2 from RFC 7959";
  }

  identity fid-coap-option-block1 {
    base fid-coap-base-type;
    description
      "CoAP option Block1 from RFC 7959";
  }

  identity fid-coap-option-size2 {
    base fid-coap-base-type;
    description
      "CoAP option size2 from RFC 7959";
  }

  identity fid-coap-option-proxy-uri {
    base fid-coap-base-type;
    description
      "CoAP option Proxy-Uri from RFC 7252";
  }

  identity fid-coap-option-proxy-scheme {
    base fid-coap-base-type;
    description
      "CoAP option Proxy-scheme from RFC 7252";
  }

  identity fid-coap-option-size1 {
    base fid-coap-base-type;
    description
      "CoAP option Size1 from RFC 7252";
  }

  identity fid-coap-option-no-response {
    base fid-coap-base-type;
    description
      "CoAP option No response from RFC 7967";
    reference
      "RFC7967 Constrained Application Protocol (CoAP)
               Option for No Server Response";
  }

  identity fid-oscore-base-type {
    base fid-coap-type;
    description
      "OSCORE options (RFC8613) split by RFC 8824 in sub options";
    reference
      "RFC8824 Static Context Header Compression (SCHC) for the
                Constrained Application Protocol (CoAP)";
  }

  identity fid-coap-option-oscore-flags {
    base fid-oscore-base-type;
    description
      "CoAP option oscore flags (see RFC 8824, section 6.4)";
  }

  identity fid-coap-option-oscore-piv {
    base fid-oscore-base-type;
    description
      "CoAP option oscore flags (see RFC 8824, section 6.4)";
  }

  identity fid-coap-option-oscore-kid {
    base fid-oscore-base-type;
    description
      "CoAP option oscore flags (see RFC 8824, section 6.4)";
  }

  identity fid-coap-option-oscore-kidctx {
    base fid-oscore-base-type;
    description
      "CoAP option oscore flags (see RFC 8824, section 6.4)";
  }

  //----------------------------------
  // Field Length type definition
  //----------------------------------

  identity fl-base-type {
    description
      "Used to extend field length functions.";
  }

  identity fl-variable {
    base fl-base-type;
    description
      "Residue length in Byte is sent as defined
       for CoAP in RFC 8824 (cf. 5.3).";
  }

  identity fl-token-length {
    base fl-base-type;
    description
      "Residue length in Byte is sent as defined
       for CoAP in RFC 8824 (cf. 4.5).";
  }

  //---------------------------------
  // Direction Indicator type
  //---------------------------------

  identity di-base-type {
    description
      "Used to extend direction indicators.";
  }

  identity di-bidirectional {
    base di-base-type;
    description
      "Direction Indication of bidirectionality in
       RFC 8724 (cf. 7.1).";
  }

  identity di-up {
    base di-base-type;
    description
      "Direction Indication of uplink defined in
       RFC 8724 (cf. 7.1).";
  }

  identity di-down {
    base di-base-type;
    description
      "Direction Indication of downlink defined in
       RFC 8724 (cf. 7.1).";
  }

  //----------------------------------
  // Matching Operator type definition
  //----------------------------------

  identity mo-base-type {
    description
      "Used to extend Matching Operators with SID values";
  }

  identity mo-equal {
    base mo-base-type;
    description
      "Equal MO as defined in RFC 8724 (cf. 7.3)";
  }

  identity mo-ignore {
    base mo-base-type;
    description
      "Ignore MO as defined in RFC 8724 (cf. 7.3)";
  }

  identity mo-msb {
    base mo-base-type;
    description
      "MSB MO as defined in RFC 8724 (cf. 7.3)";
  }

  identity mo-match-mapping {
    base mo-base-type;
    description
      "match-mapping MO as defined in RFC 8724 (cf. 7.3)";
  }

  //------------------------------
  // CDA type definition
  //------------------------------

  identity cda-base-type {
    description
      "Compression Decompression Actions.";
  }

  identity cda-not-sent {
    base cda-base-type;
    description
      "not-sent CDA as defined in RFC 8724 (cf. 7.4).";
  }

  identity cda-value-sent {
    base cda-base-type;
    description
      "value-sent CDA as defined in RFC 8724 (cf. 7.4).";
  }

  identity cda-lsb {
    base cda-base-type;
    description
      "LSB CDA as defined in RFC 8724 (cf. 7.4).";
  }

  identity cda-mapping-sent {
    base cda-base-type;
    description
      "mapping-sent CDA as defined in RFC 8724 (cf. 7.4).";
  }

  identity cda-compute {
    base cda-base-type;
    description
      "compute-* CDA as defined in RFC 8724 (cf. 7.4)";
  }

  identity cda-deviid {
    base cda-base-type;
    description
      "deviid CDA as defined in RFC 8724 (cf. 7.4)";
  }

  identity cda-appiid {
    base cda-base-type;
    description
      "appiid CDA as defined in RFC 8724 (cf. 7.4)";
  }

  // -- type definition

  typedef fid-type {
    type identityref {
      base fid-base-type;
    }
    description
      "Field ID generic type.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef fl-type {
    type union {
      type int64; /* positive integer, expressing length in bits */
      type identityref { /* function */
        base fl-base-type;
      }
    }
    description
      "Field length either a positive integer expressing the size in
       bits or a function defined through an identityref.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef di-type {
    type identityref {
      base di-base-type;
    }
    description
      "Direction in LPWAN network, up when emitted by the device,
       down when received by the device, bi when emitted or
       received by the device.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef mo-type {
    type identityref {
      base mo-base-type;
    }
    description
      "Matching Operator (MO) to compare fields values with
       target values";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  typedef cda-type {
    type identityref {
      base cda-base-type;
    }
    description
      "Compression Decompression Action to compression or
       decompress a field.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // -- FRAGMENTATION TYPE
  // -- fragmentation modes

  identity fragmentation-mode-base-type {
    description
      "fragmentation mode.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity fragmentation-mode-no-ack {
    base fragmentation-mode-base-type;
    description
      "No-ACK of RFC8724.";
  }

  identity fragmentation-mode-ack-always {
    base fragmentation-mode-base-type;
    description
      "ACK-Always of RFC8724.";
  }

  identity fragmentation-mode-ack-on-error {
    base fragmentation-mode-base-type;
    description
      "ACK-on-Error of RFC8724.";
  }

  typedef fragmentation-mode-type {
    type identityref {
      base fragmentation-mode-base-type;
    }
    description
      "type used in rules";
  }

  // -- Ack behavior 

  identity ack-behavior-base-type {
    description
      "Define when to send an Acknowledgment .";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity ack-behavior-after-all-0 {
    base ack-behavior-base-type;
    description
      "Fragmentation expects Ack after sending All-0 fragment.";
  }

  identity ack-behavior-after-all-1 {
    base ack-behavior-base-type;
    description
      "Fragmentation expects Ack after sending All-1 fragment.";
  }

  identity ack-behavior-by-layer2 {
    base ack-behavior-base-type;
    description
      "Layer 2 defines when to send an Ack.";
  }

  typedef ack-behavior-type {
    type identityref {
      base ack-behavior-base-type;
    }
    description
      "Type used in rules.";
  }

  // -- All-1 with data types

  identity all-1-data-base-type {
    description
      "Type to define when to send an Acknowledgment message.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity all-1-data-no {
    base all-1-data-base-type;
    description
      "All-1 contains no tiles.";
  }

  identity all-1-data-yes {
    base all-1-data-base-type;
    description
      "All-1 MUST contain a tile.";
  }

  identity all-1-data-sender-choice {
    base all-1-data-base-type;
    description
      "Fragmentation process chooses to send tiles or not in All-1.";
  }

  typedef all-1-data-type {
    type identityref {
      base all-1-data-base-type;
    }
    description
      "Type used in rules.";
  }

  // -- RCS algorithm types

  identity rcs-algorithm-base-type {
    description
      "Identify which algorithm is used to compute RCS.
       The algorithm also defines the size of the RCS field.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  identity rcs-RFC8724 {
    base rcs-algorithm-base-type;
    description
      "CRC 32 defined as default RCS in RFC8724. RCS is 4 byte-long";
  }

  typedef rcs-algorithm-type {
    type identityref {
      base rcs-algorithm-base-type;
    }
    description
      "type used in rules.";
  }

  // --------- TIMER DURATION -------------------

  grouping timer-duration {
    leaf ticks-duration {
      type uint8;
      default "20";
      description
        "duration of one tick in micro-seconds:
            2^ticks-duration/10^6 = 1.048s";
    }
    leaf ticks-numbers {
      type uint16;
      description
        "timer duration = ticks-numbers * 2^ticks-duration / 10^6";
    }
    description
      "used by inactivity and retransmission timer. Allows a
       precision from micro-second to year by sending the
       tick-duration value.
       For instance:

       tick-duration /  smallest value          highest value
       v
       20: 00y 000d 00h 00m 01s.048575<->00y 000d 19h 05m 18s.428159
       21: 00y 000d 00h 00m 02s.097151<->00y 001d 14h 10m 36s.856319
       22: 00y 000d 00h 00m 04s.194303<->00y 003d 04h 21m 13s.712639
       23: 00y 000d 00h 00m 08s.388607<->00y 006d 08h 42m 27s.425279
       24: 00y 000d 00h 00m 16s.777215<->00y 012d 17h 24m 54s.850559
       25: 00y 000d 00h 00m 33s.554431<->00y 025d 10h 49m 49s.701119

       Note that the smallest value is also the incrementation step,
       so the timer precision.
      ";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // --------  RULE ENTRY DEFINITION ------------

  grouping tv-struct {
    description
      "Defines the target value element. If the header field 
      contains a text, the binary sequence uses the same enconding. 
      field-id allows the conversion to the appropriate type.";
    leaf value {
      type binary;
      description
        "Target Value";
    }
    leaf index {
      type uint16;
      description
        "Index gives the position in the matching-list. If only one
         element is present, index is 0. Otherwise, indicia is the
         the order in the matching list, starting at 0.";
    }
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  grouping compression-rule-entry {
    description
      "These entries defines a compression entry (i.e. a line)
       as defined in RFC 8724.

       +-------+--+--+--+------------+-----------------+---------------+
       |Field 1|FL|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|
       +-------+--+--+--+------------+-----------------+---------------+

       An entry in a compression rule is composed of 7 elements:
       - Field ID: The header field to be compressed. The content
         is a YANG identifer.
       - Field Length : either a positive integer of a function
         defined as a YANG id.
       - Field Position: a positive (and possibly equal to 0)
         integer.
       - Direction Indicator: a YANG identifier giving the direction.
       - Target value: a value against which the header Field is
         compared.
       - Matching Operator: a YANG id giving the operation,
         parameters may be associated to that operator.
       - Comp./Decomp. Action: A YANG id giving the compression or
         decompression action, parameters may be associated to that
         action.
      ";
    leaf field-id {
      type schc:fid-type;
      mandatory true;
      description
        "Field ID, identify a field in the header with a YANG
         referenceid.";
    }
    leaf field-length {
      type schc:fl-type;
      mandatory true;
      description
        "Field Length, expressed in number of bits or through a
         function defined as a YANG referenceid.";
    }
    leaf field-position {
      type uint8;
      mandatory true;
      description
        "Field position in the header is an integer. Position 1
         matches the first occurence of a field in the header,
         while incremented position values match subsequent
         occurences.
         Position 0 means that this entry matches a field
         irrespective of its position of occurence in the
         header.
         Be aware that the decompressed header may have
         position-0 fields ordered differently than they
         appeared in the original packet.";
    }
    leaf direction-indicator {
      type schc:di-type;
      mandatory true;
      description
        "Direction Indicator, a YANG referenceid to say if the packet
         is bidirectional, up or down";
    }
    list target-value {
      key "index";
      uses tv-struct;
      description
        "A list of value to compare with the header field value.
         If target value is a singleton, position must be 0.
         For use as a matching list for the mo-match-mapping matching
         operator, positions should take consecutive values starting
         from 1.";
    }
    leaf matching-operator {
      type schc:mo-type;
      must "../target-value or derived-from-or-self(., 'mo-ignore')" {
        error-message 
          "mo-equal, mo-msb and mo-match-mapping need target-value";
        description
          "target-value is not required for mo-ignore";
      }
      must "not (derived-from-or-self(., 'mo-msb')) or
            ../matching-operator-value" {
        error-message "mo-msb requires length value";
      }
      mandatory true;
      description
        "MO: Matching Operator";
    }
    list matching-operator-value {
      key "index";
      uses tv-struct;
      description
        "Matching Operator Arguments, based on TV structure to allow
         several arguments.
         In RFC 8724, only the MSB matching operator needs arguments
         (a single argument, which is the number of most significant
         bits to be matched)";
    }
    leaf comp-decomp-action {
      type schc:cda-type;
      mandatory true;
      description
        "CDA: Compression Decompression Action.";
    }
    list comp-decomp-action-value {
      key "index";
      uses tv-struct;
      description
        "CDA arguments, based on a TV structure, in order to allow
         for several arguments. The CDAs specified in RFC 8724
         require no argument.";
    }
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  grouping compression-content {
    list entry {
      key "field-id field-position direction-indicator";
      uses compression-rule-entry;
      description
        "A compression rule is a list of rule entries, each
         describing a header field. An entry is identifed
         through a field-id, its position in the packet and
         its direction.";
    }
    description
      "Define a compression rule composed of a list of entries.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  grouping fragmentation-content {
    description
      "This grouping defines the fragmentation parameters for
       all the modes (No-Ack, Ack-Always and Ack-on-Error) specified
       in RFC 8724.";
    leaf fragmentation-mode {
      type schc:fragmentation-mode-type;
      mandatory true;
      description
        "which fragmentation mode is used (noAck, Ack-Always,
         Ack-on-Error)";
    }
    leaf l2-word-size {
      type uint8;
      default "8";
      description
        "Size, in bits, of the layer 2 word";
    }
    leaf direction {
      type schc:di-type;
      must "derived-from-or-self(., 'di-up') or
            derived-from-or-self(., 'di-down')" {
        error-message 
          "direction for fragmentation rules are up or down.";
      }
      mandatory true;
      description
        "Should be up or down, bidirectionnal is forbiden.";
    }
    // SCHC Frag header format 
    leaf dtag-size {
      type uint8;
      default "0";
      description
        "Size, in bits, of the DTag field (T variable from
         RFC8724).";
    }
    leaf w-size {
      when "derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      type uint8;
      description
        "Size, in bits, of the window field (M variable from
         RFC8724).";
    }
    leaf fcn-size {
      type uint8;
      mandatory true;
      description
        "Size, in bits, of the FCN field (N variable from RFC8724).";
    }
    leaf rcs-algorithm {
      type rcs-algorithm-type;
      default "schc:rcs-RFC8724";
      description
        "Algorithm used for RCS. The algorithm specifies the RCS
         size";
    }
    // SCHC fragmentation protocol parameters
    leaf maximum-packet-size {
      type uint16;
      default "1280";
      description
        "When decompression is done, packet size must not
         strictly exceed this limit, expressed in bytes.";
    }
    leaf window-size {
      type uint16;
      description
        "By default, if not specified 2^w-size - 1. Should not exceed
         this value. Possible FCN values are between 0 and
         window-size - 1.";
    }
    leaf max-interleaved-frames {
      type uint8;
      default "1";
      description
        "Maximum of simultaneously fragmented frames. Maximum value
         is 2^dtag-size. All DTAG values can be used, but at most
         max-interleaved-frames must be active at any time.";
    }
    container inactivity-timer {
      uses timer-duration;
      description
        "Duration is seconds of the inactivity timer, 0 indicates
         that the timer is disabled.";
    }
    container retransmission-timer {
      uses timer-duration;
      when "derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      description
        "Duration in seconds of the retransmission timer.";
    }
    leaf max-ack-requests {
      when "derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-on-error')
            or
            derived-from(../fragmentation-mode,
                                'fragmentation-mode-ack-always') ";
      type uint8 {
        range "1..max";
      }
      description
        "The maximum number of retries for a specific SCHC ACK.";
    }
    choice mode {
      case no-ack;
      case ack-always;
      case ack-on-error {
        leaf tile-size {
          when "derived-from(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type uint8;
          description
            "Size, in bits, of tiles. If not specified or set to 0,
             tiles fill the fragment.";
        }
        leaf tile-in-all-1 {
          when "derived-from(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type schc:all-1-data-type;
          description
            "Defines whether the sender and receiver expect a tile in
             All-1 fragments or not, or if it is left to the sender's
             choice.";
        }
        leaf ack-behavior {
          when "derived-from(../fragmentation-mode,
                             'fragmentation-mode-ack-on-error')";
          type schc:ack-behavior-type;
          description
            "Sender behavior to acknowledge, after All-0, All-1 or
             when the LPWAN allows it.";
        }
      }
      description
        "RFC 8724 defines 3 fragmentation modes.";
    }
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // Define rule ID. Rule ID is composed of a RuleID value and a 
  // Rule ID Length

  grouping rule-id-type {
    leaf rule-id-value {
      type uint32;
      description
        "Rule ID value, this value must be unique, considering its
         length.";
    }
    leaf rule-id-length {
      type uint8 {
        range "0..32";
      }
      description
        "Rule ID length, in bits. The value 0 is for implicit
         rules.";
    }
    description
      "A rule ID is composed of a value and a length, expressed in
       bits.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }

  // SCHC table for a specific device.

  container schc {
    list rule {
      key "rule-id-value rule-id-length";
      uses rule-id-type;
      choice nature {
        case fragmentation {
          if-feature "fragmentation";
          uses fragmentation-content;
        }
        case compression {
          if-feature "compression";
          uses compression-content;
        }
        case no-compression {
          description
            "RFC8724 requires a rule for uncompressed headers.";
        }
        description
          "A rule is for compression, for no-compression or for
           fragmentation.";
      }
      description
        "Set of rules compression, no compression or fragmentation
         rules identified by their rule-id.";
    }
    description
      "a SCHC set of rules is composed of a list of rules which are
       used for compression, no-compression or fragmentation.";
    reference
      "RFC 8724 SCHC: Generic Framework for Static Context Header
                Compression and Fragmentation";
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
<section anchor="implementation-status" title="Implementation Status">

<!--NOTE TO RFC EDITOR:  remove the entire section before
   publication, as well as the reference to RFC 7942. -->

<t>This section records the status of known implementations of the
protocol defined by this specification at the time of posting of
this Internet-Draft, and is based on a proposal described in
<xref target="RFC7942"/>.  The description of implementations in this section is
intended to assist the IETF in its decision processes in
progressing drafts to RFCs.  Please note that the listing of any
individual implementation here does not imply endorsement by the
IETF.  Furthermore, no effort has been spent to verify the
information presented here that was supplied by IETF contributors.
This is not intended as, and must not be construed to be, a
catalog of available implementations or their features.  Readers
are advised to note that other implementations may exist.</t>

<t>According to <xref target="RFC7942"/>, “this will allow reviewers and working
groups to assign due consideration to documents that have the
benefit of running code, which may serve as evidence of valuable
experimentation and feedback that have made the implemented
protocols more mature.  It is up to the individual working groups
to use this information as they see fit”.</t>

<t><list style="symbols">
  <t>Openschc is implementing the conversion between the local rule 
representation and the representation conform to the data model 
in JSON and CBOR (following -08 draft).</t>
</list></t>

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

<t>This document registers one URIs and one YANG modules.</t>

<section anchor="uri-registration" title="  URI Registration">

<t>This document requests IANA to register the following four URIs in the “IETF XML Registry” <xref target="RFC3688"/>:</t>

<t><list style='empty'>
  <t>URI:  urn:ietf:params:xml:ns:yang:ietf-schc</t>
</list></t>

<t><list style='empty'>
  <t>Registrant Contact:  The IESG.</t>
</list></t>

<t><list style='empty'>
  <t>XML:  N/A; the requested URI is an XML namespace.</t>
</list></t>

</section>
<section anchor="yang-module-name-registration" title="  YANG Module Name Registration">

<t>This document registers the following four YANG modules in the “YANG Module Names” registry <xref target="RFC6020"/>.</t>

<t><list style='empty'>
  <t>name:           ietf-schc</t>
</list></t>

<t><list style='empty'>
  <t>namespace:      urn:ietf:params:xml:ns:yang:ietf-schc</t>
</list></t>

<t><list style='empty'>
  <t>prefix:         schc</t>
</list></t>

<t><list style='empty'>
  <t>reference:      RFC XXXX Data Model for Static Context Header Compression (SCHC)</t>
</list></t>

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

<t>The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS 
<xref target="RFC8446"/>.</t>

<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.</t>

<t>This data model formalizes the rules elements described in <xref target="RFC8724"/> for compression and fragmentation. As explained in the architecture document <xref target="I-D.ietf-lpwan-architecture"/>, a rule can be read, created, updated or deleted in response to a management request. These actions can be done between two instances of SCHC or between a SCHC instance and a rule repository.</t>

<figure><artwork><![CDATA[
                     create
          (-------)  read   +=======+ *
          ( rules )<------->|Rule   |<--|-------->
          (-------)  update |Manager|   NETCONF, RESTCONF or CORECONF
             . read  delete +=======+   request
             .
          +-------+
      <===| R & D |<===
      ===>| C & F |===>
          +-------+
]]></artwork></figure>

<t>The rule contains some sensible informations such as the application IPv6 address. An attacker by changing a rule content may block the communication or intercept the traffic. Therefore, the identity of the requester must be validated. This can be done through certificates or access lists.</t>

<t>The full tree is sensitive, since it represents all the elements that can be managed.  This module aims to be encapsulated into a YANG module including access right and identities.</t>

</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>The authors would like to thank Dominique Barthel, Carsten Bormann, Ivan Martinez, Alexander Pelov for their careful reading and valuable inputs. A special thanks for 
Carl Moberg, Tom Petch
and Eric Vyncke for their explanations and wise advices when building the model.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor="RFC0768" target='https://www.rfc-editor.org/info/rfc768'>
<front>
<title>User Datagram Protocol</title>
<author initials='J.' surname='Postel' fullname='J. Postel'><organization /></author>
<date year='1980' month='August' />
</front>
<seriesInfo name='STD' value='6'/>
<seriesInfo name='RFC' value='768'/>
<seriesInfo name='DOI' value='10.17487/RFC0768'/>
</reference>



<reference  anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></author>
<date year='1997' month='March' />
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference  anchor="RFC3688" target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author initials='M.' surname='Mealling' fullname='M. Mealling'><organization /></author>
<date year='2004' month='January' />
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>



<reference  anchor="RFC6020" target='https://www.rfc-editor.org/info/rfc6020'>
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2010' month='October' />
<abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6020'/>
<seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>



<reference  anchor="RFC7252" target='https://www.rfc-editor.org/info/rfc7252'>
<front>
<title>The Constrained Application Protocol (CoAP)</title>
<author initials='Z.' surname='Shelby' fullname='Z. Shelby'><organization /></author>
<author initials='K.' surname='Hartke' fullname='K. Hartke'><organization /></author>
<author initials='C.' surname='Bormann' fullname='C. Bormann'><organization /></author>
<date year='2014' month='June' />
<abstract><t>The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained (e.g., low-power, lossy) networks.  The nodes often have 8-bit microcontrollers with small amounts of ROM and RAM, while constrained networks such as IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) often have high packet error rates and a typical throughput of 10s of kbit/s.  The protocol is designed for machine- to-machine (M2M) applications such as smart energy and building automation.</t><t>CoAP provides a request/response interaction model between application endpoints, supports built-in discovery of services and resources, and includes key concepts of the Web such as URIs and Internet media types.  CoAP is designed to easily interface with HTTP for integration with the Web while meeting specialized requirements such as multicast support, very low overhead, and simplicity for constrained environments.</t></abstract>
</front>
<seriesInfo name='RFC' value='7252'/>
<seriesInfo name='DOI' value='10.17487/RFC7252'/>
</reference>



<reference  anchor="RFC7967" target='https://www.rfc-editor.org/info/rfc7967'>
<front>
<title>Constrained Application Protocol (CoAP) Option for No Server Response</title>
<author initials='A.' surname='Bhattacharyya' fullname='A. Bhattacharyya'><organization /></author>
<author initials='S.' surname='Bandyopadhyay' fullname='S. Bandyopadhyay'><organization /></author>
<author initials='A.' surname='Pal' fullname='A. Pal'><organization /></author>
<author initials='T.' surname='Bose' fullname='T. Bose'><organization /></author>
<date year='2016' month='August' />
<abstract><t>There can be machine-to-machine (M2M) scenarios where server responses to client requests are redundant.  This kind of open-loop exchange (with no response path from the server to the client) may be desired to minimize resource consumption in constrained systems while updating many resources simultaneously or performing high-frequency updates. CoAP already provides Non-confirmable (NON) messages that are not acknowledged by the recipient.  However, the request/response semantics still require the server to respond with a status code indicating &quot;the result of the attempt to       understand and satisfy the request&quot;, per RFC 7252.</t><t>This specification introduces a CoAP option called 'No-Response'. Using this option, the client can explicitly express to the server its disinterest in all responses against the particular request. This option also provides granular control to enable expression of disinterest to a particular response class or a combination of response classes.  The server MAY decide to suppress the response by not transmitting it back to the client according to the value of the No-Response option in the request.  This option may be effective for both unicast and multicast requests.  This document also discusses a few examples of applications that benefit from this option.</t></abstract>
</front>
<seriesInfo name='RFC' value='7967'/>
<seriesInfo name='DOI' value='10.17487/RFC7967'/>
</reference>



<reference  anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>
<date year='2017' month='May' />
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference  anchor="RFC8200" target='https://www.rfc-editor.org/info/rfc8200'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></author>
<author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></author>
<date year='2017' month='July' />
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6). It obsoletes RFC 2460.</t></abstract>
</front>
<seriesInfo name='STD' value='86'/>
<seriesInfo name='RFC' value='8200'/>
<seriesInfo name='DOI' value='10.17487/RFC8200'/>
</reference>



<reference  anchor="RFC8613" target='https://www.rfc-editor.org/info/rfc8613'>
<front>
<title>Object Security for Constrained RESTful Environments (OSCORE)</title>
<author initials='G.' surname='Selander' fullname='G. Selander'><organization /></author>
<author initials='J.' surname='Mattsson' fullname='J. Mattsson'><organization /></author>
<author initials='F.' surname='Palombini' fullname='F. Palombini'><organization /></author>
<author initials='L.' surname='Seitz' fullname='L. Seitz'><organization /></author>
<date year='2019' month='July' />
<abstract><t>This document defines Object Security for Constrained RESTful Environments (OSCORE), a method for application-layer protection of the Constrained Application Protocol (CoAP), using CBOR Object Signing and Encryption (COSE).  OSCORE provides end-to-end protection between endpoints communicating using CoAP or CoAP-mappable HTTP. OSCORE is designed for constrained nodes and networks supporting a range of proxy operations, including translation between different transport protocols.</t><t>Although an optional functionality of CoAP, OSCORE alters CoAP options processing and IANA registration.  Therefore, this document updates RFC 7252.</t></abstract>
</front>
<seriesInfo name='RFC' value='8613'/>
<seriesInfo name='DOI' value='10.17487/RFC8613'/>
</reference>



<reference  anchor="RFC8724" target='https://www.rfc-editor.org/info/rfc8724'>
<front>
<title>SCHC: Generic Framework for Static Context Header Compression and Fragmentation</title>
<author initials='A.' surname='Minaburo' fullname='A. Minaburo'><organization /></author>
<author initials='L.' surname='Toutain' fullname='L. Toutain'><organization /></author>
<author initials='C.' surname='Gomez' fullname='C. Gomez'><organization /></author>
<author initials='D.' surname='Barthel' fullname='D. Barthel'><organization /></author>
<author initials='JC.' surname='Zuniga' fullname='JC. Zuniga'><organization /></author>
<date year='2020' month='April' />
<abstract><t>This document defines the Static Context Header Compression and fragmentation (SCHC) framework, which provides both a header compression mechanism and an optional fragmentation mechanism. SCHC has been designed with Low-Power Wide Area Networks (LPWANs) in mind.</t><t>SCHC compression is based on a common static context stored both in the LPWAN device and in the network infrastructure side. This document defines a generic header compression mechanism and its application to compress IPv6/UDP headers.</t><t>This document also specifies an optional fragmentation and reassembly mechanism. It can be used to support the IPv6 MTU requirement over the LPWAN technologies. Fragmentation is needed for IPv6 datagrams that, after SCHC compression or when such compression was not possible, still exceed the Layer 2 maximum payload size.</t><t>The SCHC header compression and fragmentation mechanisms are independent of the specific LPWAN technology over which they are used. This document defines generic functionalities and offers flexibility with regard to parameter settings and mechanism choices. This document standardizes the exchange over the LPWAN between two SCHC entities. Settings and choices specific to a technology or a product are expected to be grouped into profiles, which are specified in other documents. Data models for the context and profiles are out of scope.</t></abstract>
</front>
<seriesInfo name='RFC' value='8724'/>
<seriesInfo name='DOI' value='10.17487/RFC8724'/>
</reference>



<reference  anchor="RFC8824" target='https://www.rfc-editor.org/info/rfc8824'>
<front>
<title>Static Context Header Compression (SCHC) for the Constrained Application Protocol (CoAP)</title>
<author initials='A.' surname='Minaburo' fullname='A. Minaburo'><organization /></author>
<author initials='L.' surname='Toutain' fullname='L. Toutain'><organization /></author>
<author initials='R.' surname='Andreasen' fullname='R. Andreasen'><organization /></author>
<date year='2021' month='June' />
<abstract><t>This document defines how to compress Constrained Application Protocol (CoAP) headers using the Static Context Header Compression and fragmentation (SCHC) framework. SCHC defines a header compression mechanism adapted for Constrained Devices. SCHC uses a static description of the header to reduce the header's redundancy and size. While RFC 8724 describes the SCHC compression and fragmentation framework, and its application for IPv6/UDP headers, this document applies SCHC to CoAP headers. The CoAP header structure differs from IPv6 and UDP, since CoAP uses a flexible header with a variable number of options, themselves of variable length. The CoAP message format is asymmetric: the request messages have a header format different from the format in the response messages. This specification gives guidance on applying SCHC to flexible headers and how to leverage the asymmetry for more efficient compression Rules.</t></abstract>
</front>
<seriesInfo name='RFC' value='8824'/>
<seriesInfo name='DOI' value='10.17487/RFC8824'/>
</reference>



<reference  anchor="RFC6241" target='https://www.rfc-editor.org/info/rfc6241'>
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author initials='R.' surname='Enns' fullname='R. Enns' role='editor'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<author initials='J.' surname='Schoenwaelder' fullname='J. Schoenwaelder' role='editor'><organization /></author>
<author initials='A.' surname='Bierman' fullname='A. Bierman' role='editor'><organization /></author>
<date year='2011' month='June' />
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6241'/>
<seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>



<reference  anchor="RFC8040" target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<author initials='K.' surname='Watsen' fullname='K. Watsen'><organization /></author>
<date year='2017' month='January' />
<abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='8040'/>
<seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>



<reference  anchor="RFC6242" target='https://www.rfc-editor.org/info/rfc6242'>
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author initials='M.' surname='Wasserman' fullname='M. Wasserman'><organization /></author>
<date year='2011' month='June' />
<abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6242'/>
<seriesInfo name='DOI' value='10.17487/RFC6242'/>
</reference>



<reference  anchor="RFC8446" target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author initials='E.' surname='Rescorla' fullname='E. Rescorla'><organization /></author>
<date year='2018' month='August' />
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>



<reference  anchor="RFC8341" target='https://www.rfc-editor.org/info/rfc8341'>
<front>
<title>Network Configuration Access Control Model</title>
<author initials='A.' surname='Bierman' fullname='A. Bierman'><organization /></author>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund'><organization /></author>
<date year='2018' month='March' />
<abstract><t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t><t>This document obsoletes RFC 6536.</t></abstract>
</front>
<seriesInfo name='STD' value='91'/>
<seriesInfo name='RFC' value='8341'/>
<seriesInfo name='DOI' value='10.17487/RFC8341'/>
</reference>




    </references>

    <references title='Informative References'>





<reference  anchor="RFC7942" target='https://www.rfc-editor.org/info/rfc7942'>
<front>
<title>Improving Awareness of Running Code: The Implementation Status Section</title>
<author initials='Y.' surname='Sheffer' fullname='Y. Sheffer'><organization /></author>
<author initials='A.' surname='Farrel' fullname='A. Farrel'><organization /></author>
<date year='2016' month='July' />
<abstract><t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section.  This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t><t>This process is not mandatory.  Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications.  This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t></abstract>
</front>
<seriesInfo name='BCP' value='205'/>
<seriesInfo name='RFC' value='7942'/>
<seriesInfo name='DOI' value='10.17487/RFC7942'/>
</reference>



<reference  anchor="RFC7950" target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author initials='M.' surname='Bjorklund' fullname='M. Bjorklund' role='editor'><organization /></author>
<date year='2016' month='August' />
<abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols.  This document describes the syntax and semantics of version 1.1 of the YANG language.  YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification.  There are a small number of backward incompatibilities from YANG version 1.  This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='7950'/>
<seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>



<reference  anchor="RFC9011" target='https://www.rfc-editor.org/info/rfc9011'>
<front>
<title>Static Context Header Compression and Fragmentation (SCHC) over LoRaWAN</title>
<author initials='O.' surname='Gimenez' fullname='O. Gimenez' role='editor'><organization /></author>
<author initials='I.' surname='Petrov' fullname='I. Petrov' role='editor'><organization /></author>
<date year='2021' month='April' />
<abstract><t>The Static Context Header Compression and fragmentation (SCHC) specification (RFC 8724) describes generic header compression and fragmentation techniques for Low-Power Wide Area Network (LPWAN) technologies. SCHC is a generic mechanism designed for great flexibility so that it can be adapted for any of the LPWAN technologies.</t><t>This document defines a profile of SCHC (RFC 8724) for use in LoRaWAN networks and provides elements such as efficient parameterization and modes of operation.</t></abstract>
</front>
<seriesInfo name='RFC' value='9011'/>
<seriesInfo name='DOI' value='10.17487/RFC9011'/>
</reference>


<reference anchor="I-D.ietf-lpwan-architecture">
   <front>
      <title>LPWAN Static Context Header Compression (SCHC) Architecture</title>
      <author fullname="Alexander Pelov">
	 <organization>Acklio</organization>
      </author>
      <author fullname="Pascal Thubert">
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname="Ana Minaburo">
	 <organization>Acklio</organization>
      </author>
      <date month="June" day="30" year="2022" />
      <abstract>
	 <t>   This document defines the LPWAN SCHC architecture.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-lpwan-architecture-02" />
   <format type="TXT" target="https://www.ietf.org/archive/id/draft-ietf-lpwan-architecture-02.txt" />
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
LEAAlBa5DFf59Sjxe3HcVi2IfWCXlycHJeIzbW1vmtvW+sFtjpOwNlCQLNa3
qlyhrRUEpg4v5w96e9YiwNehHv9ZQhoypWpd88fySSr2i5rWC1NuGi9tqSF1
/qrr4Qo0Mxt3sKpIky3t0CFAF2k2LiLu5Jv0Ci4WB+/VvsPRiKKG/oXigNJe
X8aKjHlboeVvBjPSmc/RZ35Q2jYI5sGwhtQXNF0GtVgBavEA1FI+2Jyi9Azl
9ucEZegywmAy5fw/U99BWWJHvnak4EEzKy4nMnvLK2l0SyXG+2n/7OBQfDj8
5fj08j0QMLyzptWZ33c2Ox1/c9dvt1uYJm1NajxG4aE7bpRBTd5IEu1W+0eZ
qCuHbQq6m2VJFxt0yVrLu18ncTfJu9iqqzuiW22cBYeW5kePs3oFSfT3QN+I
Wzs+vDriayPkY/uY3opzMKkz8Rm0Ob+XhYE4VVmV1ilDToMCy4D8GNFk3NNg
ZNsMCu738y/ic9jvwsefrotimnc3NhCLmPHjS5hRwp0WQLNxO96gXjfIz7jx
njuF1h/B8IDmP2G+ryLtTn146feqmXztcBgVFDRVk8CM/lTrWKYLKxalC6t0
WMrc5vRm5VR7TzMv3zNc4xb76XSeReNrPFVoCFj6tiB0X2EuPX3KDDyc49Ux
66JXkHMHnGFO3/obUCgMHsEL6jbHkx28UITOempwEQ4jPH7oz7ThhSGkGNqc
zrKBvJ/MEcdo3+QypDyVWz5+QXcvUKW+adekw+gwm0QF+gGmsyyfBXQVmi9H
5LP+f1EWD4knOleKBiEdOEGzXBm9ZA2wnXNJDhqa64fLA1hrfj0PmXoQNgp0
F5dSOd1uDRQWDApf5+JjOAZj5BwjlnMKupVoiOXBbMqvH8jUO/L3dUWSlNUw
DA05SsB9NMsbCqt0NqfYUeXPslP3IIIwKhwPk4/2xX/AX2mg29vbVjYa+CER
GA2FQ2zAM3y78SN58CjoADqIijyMRxoVfDsspqkmKWhY5BiUoNkpmV5jROXr
Jv+LkZX4WaVkws+UiUl/4C7ka5yNyXwyzXUSJvxaysv0usmdvD7p/ek108Nr
lZzp9erJmbiTugxN64gPzNDU4I+YoKlRm59JU99crJqkiVq8ed6f7OUXTpLE
N+Qnj8hBiW5Ts9K43TRNlA/NGCOhcKryyhmel3FQjX1LmLsoeQYXZ+YzdG1I
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
95reAAA=

-->

</rfc>

